Index: modules/uoa-validator-admin/trunk/src/main/java/eu/dnetlib/validator/admin/actions/rulesets/CreateRuleSet.java
===================================================================
--- modules/uoa-validator-admin/trunk/src/main/java/eu/dnetlib/validator/admin/actions/rulesets/CreateRuleSet.java	(nonexistent)
+++ modules/uoa-validator-admin/trunk/src/main/java/eu/dnetlib/validator/admin/actions/rulesets/CreateRuleSet.java	(revision 47450)
@@ -0,0 +1,87 @@
+package eu.dnetlib.validator.admin.actions.rulesets;
+
+import java.util.Set;
+
+import org.apache.log4j.Logger;
+
+import com.opensymphony.xwork2.Action;
+
+import eu.dnetlib.domain.functionality.validator.RuleSet;
+import eu.dnetlib.validator.admin.actions.BaseValidatorAction;
+
+public class CreateRuleSet extends BaseValidatorAction {
+
+	private static final long serialVersionUID = 5623461974078831740L;
+	
+	private Set<Integer> chosenContentRules = null;
+	private Set<Integer> chosenUsageRules = null;	
+	private String funct = null;
+	private RuleSet ruleSet;
+	private static final Logger logger = Logger.getLogger(CreateRuleSet.class);
+	
+	public String execute() {
+		this.clearErrorsAndMessages();
+		try {
+			logger.debug("creating a new rule set "+ruleSet.getName());
+			ruleSet.setUsageRulesIds(chosenUsageRules);
+			ruleSet.setContentRulesIds(chosenContentRules);
+			if(funct.equals("create")) {
+				this.getValidatorAdminAPI().storeRuleSet(ruleSet, false);
+				this.addActionMessage(this.getText("createRuleSet.success"));
+			}
+			else if(funct.equals("edit")) {
+				logger.debug("chosen content: " + chosenContentRules);
+				this.getValidatorAdminAPI().storeRuleSet(ruleSet, true);
+				this.addActionMessage(this.getText("createRuleSet.success"));
+			}
+			return Action.SUCCESS;
+		}
+		catch(Exception e) {
+			logger.error("Error creating/editing ruleset", e);
+			this.addActionError(this.getText("generic.error"));
+			reportException(e);
+			return "exception";
+		}
+	}
+	
+	public void validate() {
+		this.clearErrors();
+		if((chosenContentRules == null || chosenContentRules.isEmpty())||(chosenUsageRules == null || chosenUsageRules.isEmpty()))
+			this.addActionError(this.getText("createRuleSets.atLeastOneRule"));
+		if(funct == null)
+			this.addActionError(this.getText("uknownError"));
+	}
+	
+	public String getFunct() {
+		return funct;
+	}
+	public void setFunct(String funct) {
+		this.funct = funct;
+	}	
+
+	public Set<Integer> getChosenContentRules() {
+		return chosenContentRules;
+	}
+
+	public void setChosenContentRules(Set<Integer> chosenContentRules) {
+		this.chosenContentRules = chosenContentRules;
+	}
+
+	public Set<Integer> getChosenUsageRules() {
+		return chosenUsageRules;
+	}
+
+	public void setChosenUsageRules(Set<Integer> chosenUsageRules) {
+		this.chosenUsageRules = chosenUsageRules;
+	}
+
+	public RuleSet getRuleSet() {
+		return ruleSet;
+	}
+
+	public void setRuleSet(RuleSet ruleSet) {
+		this.ruleSet = ruleSet;
+	}
+	
+	
+}	
Index: modules/uoa-validator-admin/trunk/src/main/java/eu/dnetlib/validator/admin/actions/rules/PrepareAddRule.java
===================================================================
--- modules/uoa-validator-admin/trunk/src/main/java/eu/dnetlib/validator/admin/actions/rules/PrepareAddRule.java	(nonexistent)
+++ modules/uoa-validator-admin/trunk/src/main/java/eu/dnetlib/validator/admin/actions/rules/PrepareAddRule.java	(revision 47450)
@@ -0,0 +1,101 @@
+package eu.dnetlib.validator.admin.actions.rules;
+
+import java.util.List;
+import java.util.Set;
+
+import org.apache.log4j.Logger;
+
+import com.opensymphony.xwork2.Action;
+
+import eu.dnetlib.domain.functionality.validator.Rule;
+import eu.dnetlib.validator.admin.actions.BaseValidatorAction;
+import eu.dnetlib.validator.admin.api.ValidatorAdminException;
+import eu.dnetlib.validator.admin.constants.TypesAndTableNames;
+
+public class PrepareAddRule extends BaseValidatorAction {
+
+	private static final long serialVersionUID = -8414397033694574297L;
+	private Logger logger = Logger.getLogger(PrepareAddRule.class);
+
+	private String type;
+	private Boolean forCris, forUsage = false;
+	private List<String> labels;
+	private String jobType;
+	private Set<String> entityTypes;
+	private List<Rule> rules;
+
+
+	public String execute() {
+		this.clearErrorsAndMessages();
+		logger.debug("preparing to add rule of type " + type );
+		logger.debug("cris:  " + forCris);
+		entityTypes = TypesAndTableNames.getCrisEntities().keySet();
+		
+		if (jobType.equals("usage"))
+			forUsage = true; 
+		try {
+			labels = getValidatorAdminAPI().getRuleLabels(type, forUsage, forCris);
+		} catch (ValidatorAdminException e) {
+			return Action.ERROR;
+		}
+		if (type.equals("ChainRule")) {
+			try {
+				rules = this.getValidatorAdminAPI().getAllRules();
+			} catch (ValidatorAdminException e) {
+				return Action.ERROR;
+			}
+		}
+
+		return Action.SUCCESS;
+	}
+	
+
+	public List<String> getLabels() {
+		return labels;
+	}
+
+	public void setLabels(List<String> labels) {
+		this.labels = labels;
+	}
+
+	public String getType() {
+		return type;
+	}
+
+	public String getJobType() {
+		return jobType;
+	}
+
+	public void setJobType(String jobType) {
+		this.jobType = jobType;
+	}
+
+
+	public void setType(String type) {
+		this.type = type;
+	}
+
+	public List<Rule> getRules() {
+		return rules;
+	}
+
+	public void setRules(List<Rule> rules) {
+		this.rules = rules;
+	}
+
+	public Set<String> getEntityTypes() {
+		return entityTypes;
+	}
+
+	public void setEntityTypes(Set<String> entityTypes) {
+		this.entityTypes = entityTypes;
+	}
+
+	public Boolean getForCris() {
+		return forCris;
+	}
+
+	public void setForCris(Boolean forCris) {
+		this.forCris = forCris;
+	}
+}
Index: modules/uoa-validator-admin/trunk/src/main/java/eu/dnetlib/validator/admin/actions/rules/DeleteRule.java
===================================================================
--- modules/uoa-validator-admin/trunk/src/main/java/eu/dnetlib/validator/admin/actions/rules/DeleteRule.java	(nonexistent)
+++ modules/uoa-validator-admin/trunk/src/main/java/eu/dnetlib/validator/admin/actions/rules/DeleteRule.java	(revision 47450)
@@ -0,0 +1,48 @@
+package eu.dnetlib.validator.admin.actions.rules;
+
+
+import org.apache.log4j.Logger;
+
+import com.opensymphony.xwork2.Action;
+
+import eu.dnetlib.validator.admin.actions.BaseValidatorAction;
+import eu.dnetlib.validator.admin.api.ValidatorAdminException;
+
+public class DeleteRule extends BaseValidatorAction {
+
+	private static final long serialVersionUID = -2888943921398211370L;
+	private static final Logger logger = Logger.getLogger(DeleteRule.class);
+	private int ruleId;
+	
+	public String execute() {
+		this.clearErrorsAndMessages();
+		logger.debug("deleting rule");
+		String ret = null;
+		try {
+			logger.debug("deleting rule with id "+ruleId);
+			ret = this.getValidatorAdminAPI().deleteRule(ruleId);
+		}
+		catch (ValidatorAdminException e) {
+			logger.error("Error deleting rule with id "+ruleId, e);
+			this.addActionError(this.getText("generic.error"));
+			reportException(e);
+			return "exception";
+		}
+		
+		if (ret != null) {
+			this.addActionError(this.getText(ret));
+			return "input-problem";
+		}
+		this.addActionMessage(this.getText("deleteRule.success"));
+		return Action.SUCCESS;
+	}
+
+	public int getRuleId() {
+		return ruleId;
+	}
+
+	public void setRuleId(int ruleId) {
+		this.ruleId = ruleId;
+	}
+	
+}
Index: modules/uoa-validator-admin/trunk/src/main/java/eu/dnetlib/validator/admin/actions/rules/EditRule.java
===================================================================
--- modules/uoa-validator-admin/trunk/src/main/java/eu/dnetlib/validator/admin/actions/rules/EditRule.java	(nonexistent)
+++ modules/uoa-validator-admin/trunk/src/main/java/eu/dnetlib/validator/admin/actions/rules/EditRule.java	(revision 47450)
@@ -0,0 +1,75 @@
+package eu.dnetlib.validator.admin.actions.rules;
+
+import org.apache.log4j.Logger;
+
+import com.opensymphony.xwork2.Action;
+
+import eu.dnetlib.domain.functionality.validator.Rule;
+import eu.dnetlib.validator.admin.actions.BaseValidatorAction;
+import eu.dnetlib.validator.admin.api.ValidatorAdminException;
+
+public class EditRule extends BaseValidatorAction {
+
+	private static final long serialVersionUID = -8296545383286127915L;
+	private Rule rule;
+	private String[] inputs;
+	private String funct = null;
+	private static final Logger logger = Logger.getLogger(EditRule.class);
+
+	public String execute() {
+		this.clearErrorsAndMessages();
+		String ret = null;
+		logger.debug("editing rule " + rule.getId());
+		try {
+			logger.debug("ruleType: " + rule.getType());
+			if (funct.equals("clone")) {
+				if (rule.getJob_type().toLowerCase().contains("usage"))
+					rule.setJob_type("usage");
+				else if (rule.getJob_type().toLowerCase().contains("content"))
+					rule.setJob_type("content");
+				ret = this.getValidatorAdminAPI().storeRule(rule, inputs, false);
+			} else {
+				ret = this.getValidatorAdminAPI().storeRule(rule, inputs, true);
+			}
+			
+		} catch (ValidatorAdminException e) {
+			logger.error("Error editing rule", e);
+			this.addActionError(this.getText("generic.error"));
+			reportException(e);
+			return "exception";
+		}
+
+		if (ret != null) {
+			this.addActionError(this.getText(ret));
+			return "input-problem";
+		}
+
+		this.addActionMessage(this.getText("editRule.success"));
+		return Action.SUCCESS;
+	}
+
+	public Rule getRule() {
+		return rule;
+	}
+
+	public void setRule(Rule rule) {
+		this.rule = rule;
+	}
+
+	public String[] getInputs() {
+		return inputs;
+	}
+
+	public void setInputs(String[] inputs) {
+		this.inputs = inputs;
+	}
+
+	public String getFunct() {
+		return funct;
+	}
+
+	public void setFunct(String funct) {
+		this.funct = funct;
+	}
+	
+}
Index: modules/uoa-validator-admin/trunk/src/main/java/eu/dnetlib/validator/admin/actions/rules/FieldPair.java
===================================================================
--- modules/uoa-validator-admin/trunk/src/main/java/eu/dnetlib/validator/admin/actions/rules/FieldPair.java	(nonexistent)
+++ modules/uoa-validator-admin/trunk/src/main/java/eu/dnetlib/validator/admin/actions/rules/FieldPair.java	(revision 47450)
@@ -0,0 +1,24 @@
+package eu.dnetlib.validator.admin.actions.rules;
+
+public class FieldPair {
+
+	private String fieldName, fieldValue;
+
+	public String getFieldName() {
+		return fieldName;
+	}
+
+	public void setFieldName(String fieldName) {
+		this.fieldName = fieldName;
+	}
+
+	public String getFieldValue() {
+		return fieldValue;
+	}
+
+	public void setFieldValue(String fieldValue) {
+		this.fieldValue = fieldValue;
+	}
+	
+	
+}
Index: modules/uoa-validator-admin/trunk/src/main/java/eu/dnetlib/validator/admin/actions/rules/PopulateRuleCategories.java
===================================================================
--- modules/uoa-validator-admin/trunk/src/main/java/eu/dnetlib/validator/admin/actions/rules/PopulateRuleCategories.java	(nonexistent)
+++ modules/uoa-validator-admin/trunk/src/main/java/eu/dnetlib/validator/admin/actions/rules/PopulateRuleCategories.java	(revision 47450)
@@ -0,0 +1,55 @@
+package eu.dnetlib.validator.admin.actions.rules;
+
+import java.util.Set;
+
+import org.apache.log4j.Logger;
+
+import com.opensymphony.xwork2.Action;
+
+import eu.dnetlib.validator.admin.actions.BaseValidatorAction;
+import eu.dnetlib.validator.admin.constants.TypesAndTableNames;
+
+public class PopulateRuleCategories extends BaseValidatorAction {
+
+	private static final long serialVersionUID = 3845749201114926778L;
+	private Logger logger = Logger.getLogger(PopulateRuleCategories.class);
+	
+	private Set<String> ruleTypes;
+//	private Set<String> jobTypes;
+	private String defaultJobType;
+	
+	public String execute() {
+		this.clearErrorsAndMessages();
+		logger.debug("populating rule categories");
+			defaultJobType="content";
+//			jobTypes = TypesAndTableNames.getJobTypes();
+			ruleTypes = TypesAndTableNames.getRuleTypes();
+
+		return Action.SUCCESS;
+	}
+
+	public Set<String> getRuleTypes() {
+		return ruleTypes;
+	}
+
+	public void setRuleTypes(Set<String> ruleTypes) {
+		this.ruleTypes = ruleTypes;
+	}
+
+//	public Set<String> getJobTypes() {
+//		return jobTypes;
+//	}
+//
+//	public void setJobTypes(Set<String> jobTypes) {
+//		this.jobTypes = jobTypes;
+//	}
+
+	public String getDefaultJobType() {
+		return defaultJobType;
+	}
+
+	public void setDefaultJobType(String defaultJobType) {
+		this.defaultJobType = defaultJobType;
+	}
+	
+}
Index: modules/uoa-validator-admin/trunk/src/main/java/eu/dnetlib/validator/admin/config/ValidatorAdminContextLoaderListener.java
===================================================================
--- modules/uoa-validator-admin/trunk/src/main/java/eu/dnetlib/validator/admin/config/ValidatorAdminContextLoaderListener.java	(nonexistent)
+++ modules/uoa-validator-admin/trunk/src/main/java/eu/dnetlib/validator/admin/config/ValidatorAdminContextLoaderListener.java	(revision 47450)
@@ -0,0 +1,86 @@
+package eu.dnetlib.validator.admin.config;
+
+import java.util.Properties;
+
+import javax.servlet.ServletContext;
+
+import org.apache.commons.lang.ArrayUtils;
+import org.apache.log4j.Logger;
+import org.springframework.beans.BeansException;
+import org.springframework.context.support.ClassPathXmlApplicationContext;
+import org.springframework.web.context.ContextLoaderListener;
+import org.springframework.web.context.WebApplicationContext;
+import org.springframework.web.context.support.XmlWebApplicationContext;
+
+public class ValidatorAdminContextLoaderListener extends ContextLoaderListener {
+	private static Logger logger = Logger.getLogger(ValidatorAdminContextLoaderListener.class);
+
+
+	public ValidatorAdminContextLoaderListener() {
+		super();
+	}
+
+	public ValidatorAdminContextLoaderListener(WebApplicationContext context) {
+		super(context);
+	}
+
+	@Override
+	protected WebApplicationContext createWebApplicationContext(
+			ServletContext servletContext)
+			throws BeansException {
+		logger.debug("Creating web application context");
+		Properties props = this.loadProperties();
+		String repoMode = props.getProperty("services.validator.mode.repo");
+		String userMode = props.getProperty("services.validator.mode.user");
+		Boolean standaloneMode = Boolean.parseBoolean(props.getProperty("services.validator.mode.standalone"));
+		
+		logger.debug("User mode: " + userMode);
+		logger.debug("Repo mode: " + repoMode);
+		logger.debug("Standalone mode: " + standaloneMode);
+//		logger.debug("Dnet workflow enabled: " + repoMode);
+		XmlWebApplicationContext ctx = new XmlWebApplicationContext();
+
+		ctx.setServletContext(servletContext);
+		
+		
+		String[] springContextCore = new String[] {
+				"classpath*:/eu/dnetlib/validator/admin/actions/springContext-validator-struts.xml",
+				"classpath*:/eu/dnetlib/validator/admin/api/springContext-validator-user-" + userMode + ".xml",
+				"classpath*:/eu/dnetlib/validator/admin/api/springContext-validator.xml",
+				"classpath*:/eu/dnetlib/validator/admin/config/springContext-validator-config.xml",
+				"classpath*:/eu/dnetlib/validator/commons/dao/springContext-*.xml",
+				"classpath*:/eu/dnetlib/validator/commons/email/springContext-*.xml"
+		};
+		
+		String[] springContextForIS = new String[] {
+		};
+		
+		if (standaloneMode) {
+			logger.debug("Loading contexts for standalone mode");
+			ctx.setConfigLocations(springContextCore);
+		} else {
+			logger.debug("Loading contexts for dnet");
+			ctx.setConfigLocations((String[])ArrayUtils.addAll(springContextCore,springContextForIS));
+		}
+		
+		ctx.refresh();
+		
+		logger.debug("done");
+		
+		return ctx;
+	}	
+	
+	private Properties loadProperties() {
+		ClassPathXmlApplicationContext ctx = new ClassPathXmlApplicationContext(new String[] {
+				"classpath*:/eu/dnetlib/validator/admin/config/springContext-validator-config.xml"
+		});
+		
+		CascadingPropertyLoader pLoader = (CascadingPropertyLoader) ctx.getBean("propertyLoader");
+		Properties props = pLoader.getProperties();
+		
+		ctx.destroy();
+		ctx.close();
+		return props;
+	}
+
+}
Index: modules/uoa-validator-admin/trunk/src/main/java/eu/dnetlib/validator/admin/constants/FieldNames.java
===================================================================
--- modules/uoa-validator-admin/trunk/src/main/java/eu/dnetlib/validator/admin/constants/FieldNames.java	(nonexistent)
+++ modules/uoa-validator-admin/trunk/src/main/java/eu/dnetlib/validator/admin/constants/FieldNames.java	(revision 47450)
@@ -0,0 +1,37 @@
+package eu.dnetlib.validator.admin.constants;
+
+public class FieldNames {
+	
+	static public String RULE_ID="id";
+	static public String RULE_NAME="name";
+	static public String RULE_DESCRIPTION="description";
+	static public String RULE_TYPE="type";
+	static public String RULE_MANDATORY="mandatory";
+	static public String RULE_SUCCESS="success";
+	static public String RULE_WEIGHT="weight";
+	static public String RULE_PROVIDER_INFORMATION="provider_information";
+	static public String RULE_VISIBLE="visible";
+	static public String RULE_JOBTYPE="job_type";
+	
+	static public String RULE_RULESFK="Rules_id";
+	
+	static public String RULE_VOCABULARY_WORDS="terms";
+	static public String RULE_VOCABULARY_WORDS_TYPE="terms_type";
+	
+	static public String RULE_CRIS_ENTITY="cris_entity";
+	
+	static public String RULE_CRIS_CLASS_VOCABULARY_SCHEME_ID="scheme_id";
+	
+	static public String RULE_CRIS_REFERENTIAL_INTEGRITY_ENTITY_ACRONYM = "entity_acronym";
+	static public String RULE_CRIS_REFERENTIAL_INTEGRITY_RELATED_ENTITY_ACRONYM = "related_entity_acronym";
+	static public String RULE_CRIS_REFERENTIAL_INTEGRITY_RELATED_ENTITY_XPATH = "related_entity_xpath";
+	
+	static public String RULE_CARDINALITY_LESSTHAN="less_than";
+	static public String RULE_CARDINALITY_GREATERTHAN="greater_than";
+	
+	static public String RULE_REGULAREXPRESSION_REGEXPR ="regular_expression";
+	
+	static public String RULE_NOTCONNFUSEDFIELDS ="fields";
+	
+//	static public String JOB_CONTENT="OAI Content Validation";
+}
Index: modules/uoa-validator-admin/trunk/src/main/java/eu/dnetlib/validator/admin/constants/FieldsAndDetails.java
===================================================================
--- modules/uoa-validator-admin/trunk/src/main/java/eu/dnetlib/validator/admin/constants/FieldsAndDetails.java	(nonexistent)
+++ modules/uoa-validator-admin/trunk/src/main/java/eu/dnetlib/validator/admin/constants/FieldsAndDetails.java	(revision 47450)
@@ -0,0 +1,61 @@
+package eu.dnetlib.validator.admin.constants;
+
+import java.io.BufferedReader;
+import java.io.InputStreamReader;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+import org.apache.log4j.Logger;
+
+import eu.dnetlib.validator.admin.constants.fielddetails.FieldDetails;
+
+public class FieldsAndDetails {
+
+	static private Map<String, List<FieldDetails>> map;
+	private static Logger logger = Logger.getLogger(FieldsAndDetails.class);
+
+	static {
+		logger.debug("initializing map of FieldsAndDetails");
+		map = new HashMap<String, List<FieldDetails>>();
+		BufferedReader br = new BufferedReader(
+				new InputStreamReader(
+						FieldsAndDetails.class
+								.getResourceAsStream("/eu/dnetlib/validator/admin/constants/fieldDetails.txt")));
+		String line;
+		try {
+			while ((line = br.readLine()) != null) {
+				List<FieldDetails> lfd = new ArrayList<FieldDetails>();
+				String tableName = line.trim();
+				while ((line = br.readLine()) != null) {
+					if (line.trim().equals(""))
+						break;
+					String[] args = line.split(" ");
+					FieldDetails details = new FieldDetails();
+					details.setTableName(tableName);
+					details.setFieldName(args[0].trim());
+					details.setForDet(Boolean.parseBoolean(args[1].trim()
+							.toLowerCase()));
+					lfd.add(details);
+				}
+				map.put(tableName.toLowerCase(), lfd);
+			}
+		} catch (Exception e) {
+			logger.error("Error initialiazing map of FieldsAndDetails", e);
+		}
+	}
+	
+	static public List<FieldDetails> getFieldsAndDetails(String tablename) {
+		logger.debug("getting fielddetails of table "+tablename);
+		if(tablename != null) {
+			tablename = tablename.toLowerCase();
+			List<FieldDetails> ret = map.get(tablename);
+			if(ret == null) {
+				ret = map.get(TypesAndTableNames.getTableNameOfType(tablename));
+			}
+			return ret;
+		}
+		return null;
+	}
+}
Index: modules/uoa-validator-admin/trunk/src/main/resources/eu/dnetlib/validator/admin/api/springContext-validator-user-ldap.xml
===================================================================
--- modules/uoa-validator-admin/trunk/src/main/resources/eu/dnetlib/validator/admin/api/springContext-validator-user-ldap.xml	(nonexistent)
+++ modules/uoa-validator-admin/trunk/src/main/resources/eu/dnetlib/validator/admin/api/springContext-validator-user-ldap.xml	(revision 47450)
@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<beans xmlns="http://www.springframework.org/schema/beans"
+	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+	xmlns:context="http://www.springframework.org/schema/context"
+	xmlns:cxf="http://cxf.apache.org/core"
+	xmlns:jaxws="http://cxf.apache.org/jaxws"
+	xmlns:p="http://http://www.springframework.org/schema/p"
+	xmlns:template="http://dnetlib.eu/springbeans/template"
+	xmlns:t="http://dnetlib.eu/springbeans/t"
+	xmlns:tx="http://www.springframework.org/schema/tx"
+	
+	xsi:schemaLocation="
+		http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.0.xsd
+        http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.0.xsd
+        http://cxf.apache.org/core http://cxf.apache.org/schemas/core.xsd
+        http://cxf.apache.org/jaxws http://cxf.apache.org/schemas/jaxws.xsd
+        http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-4.0.xsd
+        http://dnetlib.eu/springbeans/template http://dnetlib.eu/springbeans/template.xsd"
+	default-autowire="no">
+
+	<bean id="userAPI" class="eu.dnetlib.validator.admin.api.impls.UserApiLDAP" lazy-init="true">
+		<property name="ldapAddress" value="${services.validator.ldap.address}" />
+		<property name="ldapPort" value="${services.validator.ldap.port}" />
+		<property name="ldapUsername" value="${services.validator.ldap.username}" />
+		<property name="ldapPassword" value="${services.validator.ldap.password}" />
+		<property name="ldapUsersDN" value="${services.validator.ldap.usersDN}" />
+	</bean>
+
+</beans>
\ No newline at end of file
Index: modules/uoa-validator-admin/trunk/pom.xml
===================================================================
--- modules/uoa-validator-admin/trunk/pom.xml	(nonexistent)
+++ modules/uoa-validator-admin/trunk/pom.xml	(revision 47450)
@@ -0,0 +1,77 @@
+<?xml version="1.0" ?>
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+	<parent>
+		<groupId>eu.dnetlib</groupId>
+		<artifactId>dnet-container-parent</artifactId>
+		<version>1.0.0</version>
+	</parent>
+	<modelVersion>4.0.0</modelVersion>
+	<groupId>eu.dnetlib</groupId>
+	<artifactId>uoa-validator-admin</artifactId>
+	<packaging>war</packaging>
+	<version>2.1.1-SNAPSHOT</version>
+	<scm>
+		<developerConnection>scm:svn:https://svn.driver.research-infrastructures.eu/driver/dnet40/modules/uoa-validator-admin/trunk</developerConnection>
+	</scm>
+	<properties>
+		<struts2.version>2.3.32</struts2.version>
+	</properties>
+
+	<dependencies>
+		<dependency>
+			<groupId>org.apache.struts</groupId>
+			<artifactId>struts2-core</artifactId>
+			<version>${struts2.version}</version>
+<!-- 			<exclusions> -->
+<!-- 				<exclusion>  declare the exclusion here -->
+<!-- 					<groupId>javax.servlet.jsp</groupId> -->
+<!-- 					<artifactId>jsp-api</artifactId> -->
+<!-- 				</exclusion> -->
+<!-- 			</exclusions> -->
+		</dependency>
+		<dependency>
+			<groupId>org.apache.struts</groupId>
+			<artifactId>struts2-spring-plugin</artifactId>
+			<version>${struts2.version}</version>
+			<exclusions>
+				<exclusion>
+					<groupId>org.springframework</groupId>
+					<artifactId>spring-beans</artifactId>
+				</exclusion>
+				<exclusion>
+					<groupId>org.springframework</groupId>
+					<artifactId>spring-core</artifactId>
+				</exclusion>
+				<exclusion>
+					<groupId>org.springframework</groupId>
+					<artifactId>spring-context</artifactId>
+				</exclusion>
+				<exclusion>
+					<groupId>org.springframework</groupId>
+					<artifactId>spring-web</artifactId>
+				</exclusion>
+			</exclusions>
+		</dependency>
+		<dependency>
+			<groupId>org.apache.struts</groupId>
+			<artifactId>struts2-dojo-plugin</artifactId>
+			<version>${struts2.version}</version>
+		</dependency>
+		<dependency>
+			<groupId>com.jgeppert.struts2.jquery</groupId>
+			<artifactId>struts2-jquery-plugin</artifactId>
+			<version>3.7.1</version>
+		</dependency>
+		
+		<dependency>
+			<groupId>com.unboundid</groupId>
+			<artifactId>unboundid-ldapsdk</artifactId>
+			<version>1.1.3</version>
+		</dependency>
+        <dependency>
+            <groupId>eu.dnetlib</groupId>
+            <artifactId>uoa-validator-commons</artifactId>
+            <version>[2.0.0, 3.0.0-SNAPSHOT)</version>
+        </dependency>
+	</dependencies>
+</project>
Index: modules/uoa-validator-admin/trunk/src/main/java/eu/dnetlib/validator/admin/api/impls/ValidatorAdminApiImpl.java
===================================================================
--- modules/uoa-validator-admin/trunk/src/main/java/eu/dnetlib/validator/admin/api/impls/ValidatorAdminApiImpl.java	(nonexistent)
+++ modules/uoa-validator-admin/trunk/src/main/java/eu/dnetlib/validator/admin/api/impls/ValidatorAdminApiImpl.java	(revision 47450)
@@ -0,0 +1,502 @@
+package eu.dnetlib.validator.admin.api.impls;
+
+import java.io.BufferedReader;
+import java.io.StringReader;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.Properties;
+
+import eu.dnetlib.domain.functionality.validator.CustomProperties;
+import org.apache.log4j.Logger;
+import org.springframework.transaction.annotation.Propagation;
+import org.springframework.transaction.annotation.Transactional;
+
+import eu.dnetlib.domain.functionality.validator.Rule;
+import eu.dnetlib.domain.functionality.validator.RuleSet;
+import eu.dnetlib.domain.functionality.validator.StoredJob;
+import eu.dnetlib.validator.admin.actions.rules.FieldPair;
+import eu.dnetlib.validator.admin.api.ValidatorAdminAPI;
+import eu.dnetlib.validator.admin.api.ValidatorAdminException;
+import eu.dnetlib.validator.admin.constants.FieldNames;
+import eu.dnetlib.validator.admin.constants.FieldsAndDetails;
+import eu.dnetlib.validator.admin.constants.TypesAndTableNames;
+import eu.dnetlib.validator.admin.constants.fielddetails.FieldDetails;
+import eu.dnetlib.validator.commons.dao.jobs.JobsDAO;
+import eu.dnetlib.validator.commons.dao.rules.RulesDAO;
+import eu.dnetlib.validator.commons.dao.rules.RulesetsDAO;
+import eu.dnetlib.validator.commons.dao.users.UsersDAO;
+import eu.dnetlib.validator.commons.email.Emailer;
+
+
+/**
+ * 
+ * @author Nikon Gasparis
+ *
+ */
+
+@Transactional(propagation = Propagation.REQUIRED)
+public class ValidatorAdminApiImpl implements ValidatorAdminAPI {
+	
+	private JobsDAO jobsDao;
+	private RulesetsDAO rulesetsDao;
+	private RulesDAO rulesDao;
+	private UsersDAO usersDao;
+
+	private EmailBuilder emailBuilder;
+	
+	private Emailer emailer = null;
+	private List<String> masterAdmins = new ArrayList<String>();
+	private List<String> secondaryAdmins = new ArrayList<String>();
+	private String registrationsReportEmail;
+	private static Logger logger = Logger.getLogger(ValidatorAdminApiImpl.class);
+
+	public void start(){
+	}
+
+	@Override
+	public Rule getRule(int ruleId) throws ValidatorAdminException {
+		try {
+			logger.debug("getting rule with id: "+ruleId);
+			return rulesDao.get(ruleId);
+		} catch (Exception e) {
+			logger.error("Error getting rule ", e);
+			throw new ValidatorAdminException(e);
+		}
+		
+	}
+		
+	@Override
+	public List<FieldPair> getRuleValuePairs(Rule rule) throws ValidatorAdminException {
+		try {
+			logger.debug("getting rule value pairs");
+			boolean forUsage = false;
+			if( rule.getJob_type().equals("usage"))
+				forUsage = true;
+			List<String> labels = this.getRuleLabels(rule.getType(), forUsage, rule.isFor_cris());
+
+			List<FieldPair> ruleValues = new ArrayList<FieldPair>();
+			for (String fieldName : labels) {
+				FieldPair pair = new FieldPair();
+//				String fieldValue=null;
+				pair.setFieldName(fieldName);
+				if (fieldName.split("\\.")[1].equals(FieldNames.RULE_NAME)) {
+					pair.setFieldValue(rule.getName());
+				}
+				else if (fieldName.split("\\.")[1].equals(FieldNames.RULE_DESCRIPTION)) {
+					pair.setFieldValue(rule.getDescription());
+				}
+				else if (fieldName.split("\\.")[1].equals(FieldNames.RULE_MANDATORY)) {
+					pair.setFieldValue(Boolean.toString(rule.isMandatory()));
+				}				
+				else if (fieldName.split("\\.")[1].equals(FieldNames.RULE_WEIGHT)) {
+					pair.setFieldValue(Integer.toString(rule.getWeight()));
+				}
+				else if (fieldName.split("\\.")[1].equals(FieldNames.RULE_PROVIDER_INFORMATION)) {
+					pair.setFieldValue(rule.getProvider_information());
+				}
+				else{
+					pair.setFieldValue(rule.getConfiguration().getProperty(fieldName.split("\\.")[1]));
+				}				
+				logger.debug("getting rule value pairs-addpair: "+fieldName+"-"+rule.getConfiguration().getProperty(fieldName.split("\\.")[1]));
+				ruleValues.add(pair);
+			}
+			return ruleValues;
+		} catch (Exception e) {
+			logger.error("Error getting ruleValue pairs", e);
+			throw new ValidatorAdminException(e);
+		}
+
+	}	
+
+	
+	@Override
+	public List<Rule> getAllRules() throws ValidatorAdminException {
+		try {
+			logger.debug("getting all rules ");
+			return rulesDao.getAllRules();
+		} catch (Exception e) {
+			logger.error("Error getting all rules  to rule pair", e);
+			throw new ValidatorAdminException(e);
+		}	
+	}	
+	
+	@Override
+	@Transactional(propagation = Propagation.REQUIRED)
+	public String storeRule(Rule rule, String[] inputs, Boolean updateExisting) throws ValidatorAdminException {
+		try {
+			logger.debug("edit rule using the inputs of the user");
+			List<String> fields = new ArrayList<String>();
+			List<FieldDetails> generalFields = FieldsAndDetails.getFieldsAndDetails("Rules");
+			List<FieldDetails> usageFields = FieldsAndDetails.getFieldsAndDetails("usage_rules");
+			List<FieldDetails> crisFields = FieldsAndDetails.getFieldsAndDetails("cris_rules");
+			List<FieldDetails> subFields = FieldsAndDetails.getFieldsAndDetails(TypesAndTableNames.getTableNameOfType(rule.getType()));
+			for (FieldDetails field : generalFields) {
+				if (field.isForDet() && !field.getFieldName().equals(FieldNames.RULE_TYPE) && !field.getFieldName().equals(FieldNames.RULE_JOBTYPE))
+					fields.add(field.getFieldName());
+			}
+			if (subFields != null) {
+				for (FieldDetails field : subFields) {
+					if (field.isForDet())
+						fields.add(field.getFieldName());
+				}
+			}
+			if (rule.getJob_type().toLowerCase().contains("usage")) {
+				for (FieldDetails field : usageFields) {
+					if (field.isForDet())
+						fields.add(field.getFieldName());
+				}
+			}
+			if (rule.isFor_cris()) {
+				for (FieldDetails field : crisFields) {
+					if (field.isForDet())
+						fields.add(field.getFieldName());
+				}
+			}
+//			Properties pros = new Properties();
+			CustomProperties pros = new CustomProperties();
+
+			logger.debug("Fields: " + fields);
+			for (int i = 0; i < inputs.length; i++) {
+				logger.debug("input-" + i + " : "+ inputs[i]);
+			}
+			for (int i = 0; i < inputs.length; i++) {
+				logger.debug("Field: " + fields.get(i) + " - input: " + inputs[i]);
+				if (fields.get(i).equals(FieldNames.RULE_NAME)) {
+					rule.setName(inputs[i]);
+				}
+				else if (fields.get(i).equals(FieldNames.RULE_DESCRIPTION)) {
+					rule.setDescription(inputs[i]);
+				}
+				else if (fields.get(i).equals(FieldNames.RULE_MANDATORY)) {
+					rule.setMandatory(Boolean.parseBoolean(inputs[i]));
+				}				
+				else if (fields.get(i).equals(FieldNames.RULE_WEIGHT)) {
+					rule.setWeight(Integer.parseInt(inputs[i]));
+				}
+				else if (fields.get(i).equals(FieldNames.RULE_PROVIDER_INFORMATION)) {
+					rule.setProvider_information(inputs[i]);
+				}
+				else if (fields.get(i).equals(FieldNames.RULE_CRIS_ENTITY)) {
+					rule.setEntity_type(inputs[i]);
+				}
+				else{
+					if (fields.get(i).equals(FieldNames.RULE_VOCABULARY_WORDS)) {
+						String words = "";
+						BufferedReader bf = new BufferedReader(new StringReader(inputs[i]));
+						String line;
+						while ((line = bf.readLine()) != null) {
+							words += ",";
+							words += line;
+						}
+						words = words.substring(1);
+						pros.setProperty(fields.get(i), words);
+					} else if (fields.get(i).equals(FieldNames.RULE_NOTCONNFUSEDFIELDS)) {
+						String ncfields = "";
+						BufferedReader bf = new BufferedReader(new StringReader(inputs[i]));
+						String line;
+						while ((line = bf.readLine()) != null)
+							ncfields += line + "\n";
+						ncfields = ncfields.substring(0, ncfields.lastIndexOf('\n'));
+						pros.setProperty(fields.get(i), ncfields);
+					
+					}else  
+						pros.setProperty(fields.get(i), inputs[i]);
+				}
+			}
+			rule.setConfiguration(pros);
+			
+			if (!updateExisting)
+				rule.setId(-1);
+			rulesDao.save(rule);
+			return null;
+
+		} catch (Exception e) {
+			logger.error("Error storing rule", e);
+			throw new ValidatorAdminException(e);
+		}
+	}
+		
+	@Override
+	public List<String> getRuleLabels(String ruleType, Boolean forUsage, Boolean forCris) throws ValidatorAdminException {
+		try {
+			logger.debug("getting rule labels for type " + ruleType);
+			List<String> labels = new ArrayList<String>();
+			List<FieldDetails> generalFields = FieldsAndDetails.getFieldsAndDetails("Rules");
+			List<FieldDetails> usageFields = FieldsAndDetails.getFieldsAndDetails("usage_rules");
+			List<FieldDetails> crisFields = FieldsAndDetails.getFieldsAndDetails("cris_rules");
+			List<FieldDetails> subFields = FieldsAndDetails.getFieldsAndDetails(TypesAndTableNames.getTableNameOfType(ruleType));
+			for (FieldDetails field : generalFields) {
+				if (field.isForDet() && !field.getFieldName().equals(FieldNames.RULE_TYPE) && !field.getFieldName().equals(FieldNames.RULE_JOBTYPE))
+					labels.add(field.getTableName() + "." + field.getFieldName());
+			}
+			if (subFields != null) {
+				for (FieldDetails field : subFields) {
+					if (field.isForDet())
+						labels.add(field.getTableName() + "." + field.getFieldName());
+				}
+			}
+			if (forUsage) {
+				for (FieldDetails field : usageFields) {
+					if (field.isForDet())
+						labels.add(field.getTableName().split("_")[1] + "." + field.getFieldName());
+				}
+			}
+			if (forCris) {
+				for (FieldDetails field :crisFields) {
+					if (field.isForDet())
+						labels.add(field.getTableName().split("_")[1] + "." + field.getFieldName());
+				}
+			}
+			return labels;
+		}catch (Exception e) {
+			logger.error("getting rule labels for type " + ruleType, e);
+			throw new ValidatorAdminException(e);
+		}			
+	}
+	
+	@Override
+	public List<RuleSet> getRuleSets() throws ValidatorAdminException {
+		try {
+			logger.debug("Getting all rule sets");
+			return rulesetsDao.getRuleSets();
+		} catch (Exception e) {
+			logger.error("Error getting all rule sets", e);
+			throw new ValidatorAdminException(e);
+		}
+	}
+	
+	@Override
+	public String deleteRule(int ruleId) throws ValidatorAdminException {
+		try {
+			logger.debug("deleting rule with id "+ruleId);
+			return rulesDao.delete(ruleId);
+		}
+		catch (Exception e) {
+			logger.error("Error deleting rule with id "+ruleId, e);
+			throw new ValidatorAdminException(e);
+		}
+	}
+	
+	@Override
+	public RuleSet getRuleSet(int setId) throws ValidatorAdminException {
+		try {
+			logger.debug("getting ruleSet with id: " + setId);
+			return rulesetsDao.get(setId);
+		} catch (Exception e) {
+			logger.error("Error getting ruleSet with id: " + setId, e);
+			throw new ValidatorAdminException(e);
+		}
+	}
+	
+	@Override
+	public void storeRuleSet(RuleSet ruleSet, boolean updateExisting) throws ValidatorAdminException {
+		try {
+			if (updateExisting)
+				logger.debug("editing rule set " + ruleSet.getId());
+			else
+				logger.debug("creating rule set " + ruleSet.getName());
+			
+			rulesetsDao.save(ruleSet);
+			
+			} catch (Exception e) {
+				logger.error("Error storing ruleSet " + ruleSet.getName(), e);
+			throw new ValidatorAdminException(e);
+		}
+		
+	}
+	
+	@Override
+	public void deleteRuleSet(int setId) throws ValidatorAdminException {
+		try {
+			logger.debug("deleting rule set " + setId);
+			rulesetsDao.delete(setId);
+		} catch (Exception e) {
+			logger.error("Error deleting rule set " + setId, e);
+			throw new ValidatorAdminException(e);
+		}
+	}	
+	
+	@Override
+	@Transactional(propagation = Propagation.REQUIRED)
+	public int deleteOldJobs(String date, String period, String mode) throws ValidatorAdminException {
+		int jobsDeleted = 0;
+		try {
+			logger.debug("Deleting jobs " + period + " than "+date);
+			if (mode.equalsIgnoreCase("uncompleted_only")) {
+				jobsDeleted = jobsDao.deleteUncompletedJobs();
+			}
+			else if (mode.equalsIgnoreCase("compTest_only"))
+				jobsDeleted = jobsDao.deleteOld(date, period, "Compatibility Test");
+			else if (mode.equalsIgnoreCase("all"))
+				jobsDeleted = jobsDao.deleteOld(date, period, null);
+			else if (mode.equalsIgnoreCase("import"))
+				jobsDao.importOldJobs();;
+		} catch (Exception e) {
+			logger.error("Error deleting old jobs", e);
+			throw new ValidatorAdminException(e);
+		}
+		return jobsDeleted;
+	}
+
+	public Emailer getEmailer() {
+		return emailer;
+	}
+	public JobsDAO getJobsDao() {
+		return jobsDao;
+	}
+
+	public void setJobsDao(JobsDAO jobsDao) {
+		this.jobsDao = jobsDao;
+	}
+
+	public RulesetsDAO getRulesetsDao() {
+		return rulesetsDao;
+	}
+
+	public void setRulesetsDao(RulesetsDAO rulesetsDao) {
+		this.rulesetsDao = rulesetsDao;
+	}
+
+	public RulesDAO getRulesDao() {
+		return rulesDao;
+	}
+
+	public void setRulesDao(RulesDAO rulesDao) {
+		this.rulesDao = rulesDao;
+	}
+
+	public UsersDAO getUsersDao() {
+		return usersDao;
+	}
+
+	public void setUsersDao(UsersDAO usersDao) {
+		this.usersDao = usersDao;
+	}
+
+	public void setEmailer(Emailer emailer) {
+		this.emailer = emailer;
+	}
+
+	
+	public String getRegistrationsReportEmail() {
+		return registrationsReportEmail;
+	}
+
+	public void setRegistrationsReportEmail(String registrationsReportEmail) {
+		this.registrationsReportEmail = registrationsReportEmail;
+	}
+
+	public EmailBuilder getEmailBuilder() {
+		return emailBuilder;
+	}
+
+	public void setEmailBuilder(EmailBuilder emailBuilder) {
+		this.emailBuilder = emailBuilder;
+	}
+
+	@Override
+	public boolean userIsMasterAdmin(String user)
+			throws ValidatorAdminException {
+		logger.debug("checking if user " + user + " is master admin");
+		if (this.masterAdmins.contains(user)) {
+			logger.debug("is master admin");
+			return true;
+		} else {
+			logger.debug("isn't master admin");
+			return false;
+		}
+	}
+	
+	@Override
+	public boolean userIsSecondaryAdmin(String user)
+			throws ValidatorAdminException {
+		logger.debug("checking if user " + user + " is secondary admin");
+		if (this.secondaryAdmins.contains(user)) {
+			logger.debug("is secondary admin");
+			return true;
+		} else {
+			logger.debug("isn't secondary admin");
+			return false;
+		}
+	}
+	
+
+	public void setMasterAdmins(String masterAdmins) {
+		String[] recps = masterAdmins.split(",");
+
+		for (String recp : recps) {
+			recp = recp.trim();
+			this.masterAdmins.add(recp);
+		}
+	}
+
+	public void setSecondaryAdmins(String secondaryAdmins) {
+		String[] recps = secondaryAdmins.split(",");
+
+		for (String recp : recps) {
+			recp = recp.trim();
+			this.secondaryAdmins.add(recp);
+		}
+	}
+
+	@Override
+	public String sendRegistrationsReport(String dateFrom, String dateTo, String month, String year) throws ValidatorAdminException {
+		try {
+			List <StoredJob> jobs = null;
+			Map<String, String> jobInfo = null;
+			List<Map<String, String>> passedJobsList = new ArrayList<Map<String, String>>();
+			List<Map<String, String>> failedJobsList = new ArrayList<Map<String, String>>();
+			
+			Map<String, StoredJob> passedJobsMap = new HashMap<String, StoredJob>();
+			Map<String, StoredJob> failedJobsMap = new HashMap<String, StoredJob>();
+			
+			logger.debug("Sending registrations Report for period: " + dateFrom + " to: " + dateTo);
+			jobs = jobsDao.getJobs(null, "Registration Request", null, null, dateFrom, dateTo);
+			for (StoredJob job : jobs) {
+				String key = job.getBaseUrl()+"|"+job.getDesiredCompatibilityLevel();
+				if (job.getContentJobScore() >= 50 && job.getContentJobScore() >= 50) {
+					failedJobsMap.remove(key);
+					passedJobsMap.put (key, job);
+				} else {
+					if (!passedJobsMap.containsKey(key)) {
+						failedJobsMap.put (key, job);
+					}
+				}
+			}
+			boolean oldFormat = false;
+			for (StoredJob job : passedJobsMap.values()) {
+				jobInfo = new HashMap<String, String>();
+				jobInfo.put("name", job.getOfficialName());
+				jobInfo.put("baseUrl", job.getBaseUrl());
+				jobInfo.put("email", job.getUserEmail());
+				jobInfo.put("compliance", job.getDesiredCompatibilityLevel());
+				if (job.getOfficialName() == null)
+					oldFormat = true;
+				passedJobsList.add(jobInfo);
+			}
+			for (StoredJob job : failedJobsMap.values()) {
+				jobInfo = new HashMap<String, String>();
+				jobInfo.put("name", job.getOfficialName());
+				jobInfo.put("baseUrl", job.getBaseUrl());
+				jobInfo.put("email", job.getUserEmail());
+				jobInfo.put("compliance", job.getDesiredCompatibilityLevel());
+				if (job.getOfficialName() == null)
+					oldFormat = true;
+				failedJobsList.add(jobInfo);
+			}
+			String report = emailBuilder.buildXml(passedJobsList, failedJobsList, month, oldFormat);
+			ArrayList<String> recps = new ArrayList<String>();
+			recps.add(registrationsReportEmail);
+			emailer.sendMail(recps,"Datasource Registrations -- " + month + " " + year, report, true, null);
+			logger.debug("email : " + report);
+			return report;
+		} catch (Exception e) {
+			logger.error("Error deleting old jobs", e);
+			throw new ValidatorAdminException(e);
+		}
+	}
+
+}
+
Index: modules/uoa-validator-admin/trunk/src/main/java/eu/dnetlib/validator/admin/api/impls/EmailBuilder.java
===================================================================
--- modules/uoa-validator-admin/trunk/src/main/java/eu/dnetlib/validator/admin/api/impls/EmailBuilder.java	(nonexistent)
+++ modules/uoa-validator-admin/trunk/src/main/java/eu/dnetlib/validator/admin/api/impls/EmailBuilder.java	(revision 47450)
@@ -0,0 +1,82 @@
+package eu.dnetlib.validator.admin.api.impls;
+
+import java.io.StringWriter;
+import java.util.List;
+import java.util.Map;
+
+import javax.xml.transform.TransformerConfigurationException;
+import javax.xml.transform.TransformerException;
+import javax.xml.transform.TransformerFactoryConfigurationError;
+
+import org.apache.log4j.Logger;
+import org.apache.velocity.Template;
+import org.apache.velocity.VelocityContext;
+import org.apache.velocity.app.VelocityEngine;
+import org.apache.velocity.exception.ParseErrorException;
+import org.apache.velocity.exception.ResourceNotFoundException;
+import org.apache.velocity.runtime.RuntimeConstants;
+import org.apache.velocity.runtime.resource.loader.ClasspathResourceLoader;
+
+public class EmailBuilder {
+
+	private static Logger logger = Logger.getLogger(EmailBuilder.class);
+	
+	private VelocityEngine ve = null;
+	
+	public void init() throws Exception {
+		this.ve = new VelocityEngine();
+		this.ve.setProperty(RuntimeConstants.RESOURCE_LOADER, "classpath");
+		this.ve.setProperty("classpath.resource.loader.class", ClasspathResourceLoader.class.getName());
+		this.ve.setProperty("runtime.log.logsystem.class", "org.apache.velocity.runtime.log.NullLogSystem");
+		this.ve.init();	
+	}
+	
+	public String buildXml(List<Map<String, String>> passedJobsList, List<Map<String, String>> failedJobsList, String month, boolean oldFormat) {
+		logger.debug("Building the registrations report Email");
+		String finalEmail = null;
+		
+		try {
+        
+			VelocityContext context = new VelocityContext();
+
+			context.put("passedJobs", passedJobsList);
+			context.put("failedJobs", failedJobsList);
+			context.put("month", month);
+			if (passedJobsList.isEmpty())
+				context.put("nonePassed", "There are no successful registration attempts.");
+			else
+				context.put("nonePassed", " ");
+			if (failedJobsList.isEmpty())
+				context.put("noneFailed", "There are no failed registration attempts.");
+			else
+				context.put("noneFailed", " ");
+			
+			Template t;
+			
+			if (oldFormat)
+				t = this.ve.getTemplate("/eu/dnetlib/validator/admin/api/emailTeplateOld.vm");
+			else
+				t = this.ve.getTemplate("/eu/dnetlib/validator/admin/api/emailTeplate.vm");
+			
+			StringWriter writer = new StringWriter();
+			
+			t.merge(context, writer);
+			finalEmail = writer.toString();
+			
+		} catch (TransformerConfigurationException e) {
+			logger.error("Error while building XML file", e);
+		} catch (TransformerFactoryConfigurationError e) {
+			logger.error("Error while building XML file", e);
+		} catch (TransformerException e) {
+			logger.error("Error while building XML file", e);
+		} catch (ResourceNotFoundException e) {
+			logger.error("Error while building XML file", e);
+		} catch (ParseErrorException e) {
+			logger.error("Error while building XML file", e);
+		} catch (Exception e) {
+			logger.error("Error while building XML file", e);
+		}
+		
+        return finalEmail;
+	}
+}
Index: modules/uoa-validator-admin/trunk/src/main/resources/eu/dnetlib/validator/admin/api/springContext-validator-user-local.xml
===================================================================
--- modules/uoa-validator-admin/trunk/src/main/resources/eu/dnetlib/validator/admin/api/springContext-validator-user-local.xml	(nonexistent)
+++ modules/uoa-validator-admin/trunk/src/main/resources/eu/dnetlib/validator/admin/api/springContext-validator-user-local.xml	(revision 47450)
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<beans xmlns="http://www.springframework.org/schema/beans"
+	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+	xmlns:context="http://www.springframework.org/schema/context"
+	xmlns:cxf="http://cxf.apache.org/core"
+	xmlns:jaxws="http://cxf.apache.org/jaxws"
+	xmlns:p="http://http://www.springframework.org/schema/p"
+	xmlns:template="http://dnetlib.eu/springbeans/template"
+	xmlns:t="http://dnetlib.eu/springbeans/t"
+	xmlns:tx="http://www.springframework.org/schema/tx"
+	
+	xsi:schemaLocation="
+		http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.0.xsd
+        http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.0.xsd
+        http://cxf.apache.org/core http://cxf.apache.org/schemas/core.xsd
+        http://cxf.apache.org/jaxws http://cxf.apache.org/schemas/jaxws.xsd
+        http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-4.0.xsd
+        http://dnetlib.eu/springbeans/template http://dnetlib.eu/springbeans/template.xsd"
+	default-autowire="no">
+
+	<bean id="userAPI" class="eu.dnetlib.validator.admin.api.impls.UserApiLocal" lazy-init="true">
+		<property name="usersDao" ref="usersDao" />
+	</bean>
+	
+	<tx:annotation-driven transaction-manager="txManager" />
+	
+</beans>
\ No newline at end of file
Index: modules/uoa-validator-admin/trunk/src/main/resources/eu/dnetlib/validator/admin/config/springContext-validator-config.xml
===================================================================
--- modules/uoa-validator-admin/trunk/src/main/resources/eu/dnetlib/validator/admin/config/springContext-validator-config.xml	(nonexistent)
+++ modules/uoa-validator-admin/trunk/src/main/resources/eu/dnetlib/validator/admin/config/springContext-validator-config.xml	(revision 47450)
@@ -0,0 +1,48 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<beans xmlns="http://www.springframework.org/schema/beans"
+	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+	xmlns:context="http://www.springframework.org/schema/context"
+	xmlns:cxf="http://cxf.apache.org/core"
+	xmlns:jaxws="http://cxf.apache.org/jaxws"
+	xmlns:p="http://http://www.springframework.org/schema/p"
+	xmlns:template="http://dnetlib.eu/springbeans/template"
+	xmlns:t="http://dnetlib.eu/springbeans/t"
+	xmlns:tx="http://www.springframework.org/schema/tx"
+	
+	xsi:schemaLocation="
+		http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.0.xsd
+        http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.0.xsd
+        http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-4.0.xsd
+		http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-4.0.xsd
+        http://cxf.apache.org/core http://cxf.apache.org/schemas/core.xsd
+        http://cxf.apache.org/jaxws http://cxf.apache.org/schemas/jaxws.xsd
+        http://dnetlib.eu/springbeans/template http://dnetlib.eu/springbeans/template.xsd"
+	default-autowire="no">
+
+	<bean class="eu.dnetlib.validator.admin.config.CascadingPropertyLoader" id="propertyLoader">
+		<property name="order" value="2" />
+		<property name="properties">
+			<bean class="eu.dnetlib.conf.WebappContextProperyFactory">
+				<property name="propertyFetcher">
+					<bean class="eu.dnetlib.conf.PropertyFetcher" />
+				</property>
+			</bean>
+		</property>
+		<property name="ignoreUnresolvablePlaceholders" value="true" />
+		<property name="locations">
+			<list>
+				<value>classpath*:/gr/**/springContext-*.properties</value>
+				<value>classpath*:/eu/**/springContext-*.properties</value>
+				
+				<value>classpath*:dnet-site-wizard.properties</value>
+				<value>classpath*:dnet-site-override.properties</value>
+				<value>classpath*:dnet-wizard.properties</value>
+				<value>classpath*:dnet-override.properties</value>
+				<value>classpath*:dnet-validator-wizard.properties</value>
+				<value>classpath*:dnet-validator-override.properties</value>
+				<value>classpath*:dnet-site-force-override.properties</value>
+				<value>classpath*:dnet-force-override.properties</value>
+			</list>
+		</property>
+	</bean>
+</beans>
\ No newline at end of file
Index: modules/uoa-validator-admin/trunk/src/main/java/eu/dnetlib/validator/admin/api/impls/UserApiLocal.java
===================================================================
--- modules/uoa-validator-admin/trunk/src/main/java/eu/dnetlib/validator/admin/api/impls/UserApiLocal.java	(nonexistent)
+++ modules/uoa-validator-admin/trunk/src/main/java/eu/dnetlib/validator/admin/api/impls/UserApiLocal.java	(revision 47450)
@@ -0,0 +1,135 @@
+package eu.dnetlib.validator.admin.api.impls;
+
+import java.math.BigInteger;
+import java.security.MessageDigest;
+import java.util.UUID;
+
+import org.apache.log4j.Logger;
+import org.springframework.transaction.annotation.Propagation;
+import org.springframework.transaction.annotation.Transactional;
+
+import eu.dnetlib.domain.functionality.UserProfile;
+import eu.dnetlib.validator.admin.api.UserApi;
+import eu.dnetlib.validator.commons.dao.users.UsersDAO;
+
+@Transactional(propagation = Propagation.REQUIRED)
+public class UserApiLocal implements UserApi {
+
+	private static Logger logger = Logger.getLogger(UserApiLocal.class);
+	private UsersDAO usersDao;
+
+	@Override
+	@Transactional()
+	public boolean activateUser(String activationId) throws Exception {
+		usersDao.activateUser(activationId);
+		return true;
+	}
+
+	@Override
+	@Transactional(propagation = Propagation.REQUIRED)
+	public String addUser(String username, String email, String password, String firstName, String lastName,  String institution) throws Exception {
+		String hashword;
+		MessageDigest md5 = MessageDigest.getInstance("MD5");
+		md5.update(password.getBytes());
+		BigInteger hash = new BigInteger(1, md5.digest());
+		hashword = hash.toString(16);
+		String activationId = UUID.randomUUID().toString();
+		UserProfile newUser = new UserProfile();
+		newUser.setEmail(email);
+		newUser.setPassword(hashword);
+		newUser.setFirstname(firstName);
+		newUser.setLastname(lastName);
+		newUser.setUsername(username);
+		newUser.setInstitution(institution);
+		newUser.setActivationId(activationId);
+		usersDao.save(newUser);
+		return activationId;
+	}
+
+	@Override
+	public boolean correctCreds(String email, String password) throws Exception {
+		String hashword;
+		MessageDigest md5 = MessageDigest.getInstance("MD5");
+		md5.update(password.getBytes());
+		BigInteger hash = new BigInteger(1, md5.digest());
+		hashword = hash.toString(16);
+		
+		if (usersDao.checkCorrectCreds(email, hashword)) {
+			logger.debug("Password verified");
+			return true;
+		} else {
+			logger.debug("no user found with email: " + email + " and pass: " + password + " (" + hashword + ")");
+
+			return false;
+		}
+	}
+
+	@Override
+	public boolean isAdmin(String email) throws Exception {
+		return usersDao.isAdmin(email);
+	}
+
+	@Override
+	public boolean isUserActivated(String email) throws Exception {
+		return usersDao.isActivated(email);
+	}
+
+	@Override
+	@Transactional(propagation = Propagation.REQUIRED)
+	public String prepareResetPassword(String email) throws Exception {
+		String uuid = UUID.randomUUID().toString();
+		usersDao.prepareResetPassword(uuid,email);
+		return uuid;
+	}
+
+	@Override
+	@Transactional(propagation = Propagation.REQUIRED)
+	public void resetPassword(String uuid, String password) throws Exception {
+		String hashword;
+		MessageDigest md5 = MessageDigest.getInstance("MD5");
+		md5.update(password.getBytes());
+		BigInteger hash = new BigInteger(1, md5.digest());
+		hashword = hash.toString(16);
+		usersDao.ResetPassword(uuid, hashword);
+	}
+
+	@Override
+	public boolean userExists(String email) throws Exception {
+		return usersDao.userExists(email);
+	}
+
+	@Override
+	public void editUser(UserProfile user) throws Exception {
+		this.usersDao.save(user);
+
+	}
+
+	@Override
+	public boolean usernameExists(String username) throws Exception {
+		return usersDao.usernameExists(username);
+	}
+
+	@Override
+	public String getEmailFromUsername(String username) throws Exception {
+		UserProfile user = usersDao.get(username);
+		if (user == null)
+			return null;
+		else
+			return usersDao.get(username).getEmail();
+	}
+
+	@Override
+	public UserProfile getUser(String userIdentifier) throws Exception {
+		return usersDao.get(userIdentifier);
+	}
+
+	public UsersDAO getUsersDao() {
+		return usersDao;
+	}
+
+	public void setUsersDao(UsersDAO usersDao) {
+		this.usersDao = usersDao;
+	}
+
+	
+}
Index: modules/uoa-validator-admin/trunk/src/main/resources/struts.xml
===================================================================
--- modules/uoa-validator-admin/trunk/src/main/resources/struts.xml	(nonexistent)
+++ modules/uoa-validator-admin/trunk/src/main/resources/struts.xml	(revision 47450)
@@ -0,0 +1,219 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE struts PUBLIC
+	"-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
+	"http://struts.apache.org/dtds/struts-2.3.dtd">
+
+<struts>
+	<constant name="struts.action.excludePattern" value=".*services.*"/>
+	<package name="noAuthorization" namespace="/" extends="struts-default">
+		<default-action-ref name="welcome" />
+		
+		<global-results>
+			<result name="input">/jsps/info.jsp</result>
+			<result name="exception">/jsps/info.jsp</result>
+		</global-results>
+		
+		<action name="bugreporter" class="springManagedBugReporter">
+			<result>/jsps/info.jsp</result>
+		</action>
+		
+		<action name="welcome" class="springManagedDummy">
+			<result>/jsps/homepage.jsp</result>
+		</action>
+		
+		<action name="go2login" class="springManagedLoginPage">
+			<result>/jsps/login.jsp</result>
+			<result name="input" type="redirect">welcome</result>
+		</action>
+		
+		<action name="go2registration" class="springManagedDummy">
+			<result>/jsps/login.jsp</result>
+		</action>
+
+		<action name="Register" class="springManagedRegister">
+			<result>/jsps/info.jsp</result>
+			<result name="input">/jsps/login.jsp</result>
+		</action>
+
+		<action name="activateAccount" class="springManagedActivateAccount">
+			<result>/jsps/info.jsp</result>
+			<result name="input">/jsps/info.jsp</result>
+		</action>
+
+		<action name="Login" class="springManagedLogin">
+			<result type="redirect">${url}?${params}</result>
+			<result name="input">/jsps/login.jsp</result>
+			<result name="login" type="redirect">go2login</result>
+			<result name="welcome" type="redirect">welcome</result>
+		</action>
+		
+		<action name="portalLogin" class="springManagedPortalLogin">
+			<result>/jsps/homepage.jsp</result>
+			<result name="input">/jsps/login.jsp</result>
+		</action>
+
+		<action name="sendPassword" class="springManagedSendPassword">
+			<result>/jsps/info.jsp</result>
+			<result name="input">/jsps/forgotPassword.jsp</result>
+		</action>
+
+		<action name="resetPassword" class="springManagedResetPassword">
+			<result>/jsps/info.jsp</result>
+			<result name="input">/jsps/resetPassword.jsp</result>
+		</action>
+
+		<action name="logout" class="springManagedLogout">
+			<result>/jsps/homepage.jsp</result>
+		</action>
+		
+		<action name="score" class="springManagedScore">
+			<result>/jsps/score.jsp</result>
+		</action>
+		
+		<action name="help" class="springManagedHelp">
+			<result>/jsps/help.jsp</result>
+		</action>
+				
+		<action name="forgotPassword" class="springManagedForgotPassword">
+			<result>/jsps/forgotPassword.jsp</result>
+		</action>
+
+	</package>
+
+	<package name="needsAuthorization" namespace="/" extends="struts-default">
+
+		<interceptors>
+			<interceptor name="authenticationInterceptor" class="eu.dnetlib.validator.admin.actions.login.AuthenticationInterceptor" />
+			<interceptor-stack name="secureStack">
+				<interceptor-ref name="authenticationInterceptor" />
+				<interceptor-ref name="defaultStack" />
+			</interceptor-stack>
+		</interceptors>
+
+		<default-interceptor-ref name="secureStack" />
+
+		<global-results>
+			<result name="login">/jsps/login.jsp</result>
+			<result name="input-problem">/jsps/corneeded.jsp</result>
+			<result name="input">/jsps/info.jsp</result>
+			<result name="exception">/jsps/info.jsp</result>
+		</global-results>
+
+		<action name="curateDB" class="springManagedDatabaseCurator">
+			<result>/jsps/info.jsp</result>
+		</action>
+		
+		<action name="deleteJobs" class="springManagedDummy">
+			<result>/jsps/deleteJobs.jsp</result>
+		</action>
+		
+		<action name="sendRegistrationsReport" class="springManagedRegistrationsReport">
+			<result>/jsps/info.jsp</result>
+		</action>
+		
+		<action name="registrationsReport" class="springManagedDummy">
+			<result>/jsps/registrationsReport.jsp</result>
+		</action>
+		
+		<action name="getRulesForSet" class="springManagedGetRulesForSet">
+			<result>/jsps/createRuleSet.jsp</result>
+			<result name="deleted">/jsps/info.jsp</result>
+		</action>
+
+		<action name="getRuleSets" class="springManagedGetRuleSets">
+			<result>/jsps/chooseRuleSet.jsp</result>
+		</action>
+
+		<action name="populateRuleListForEdit" class="springManagedPopulateRuleList">
+			<result>/jsps/chooseRuleForEdit.jsp</result>
+		</action>
+
+		<action name="populateRuleListForClone" class="springManagedPopulateRuleList">
+			<result>/jsps/chooseRuleForClone.jsp</result>
+		</action>
+		
+		<action name="prepareEditRule" class="springManagedPrepareEditRule">
+			<result>/jsps/editRule.jsp</result>
+		</action>
+
+		<action name="editUser" class="springManagedEditUser" method="edit">
+			<result>/jsps/info.jsp</result>
+		</action>
+		
+		<action name="userDetails" class="springManagedEditUser">
+			<result>/jsps/editUser.jsp</result>
+		</action>
+		
+		<action name="populateList" class="springManagedPopulateList" method="populate">
+			<result>/jsps/rules.jsp</result>
+		</action>
+		
+		<action name="sendFeedback" class="springManagedSendFeedback">
+			<result>/jsps/info.jsp</result>
+		</action>
+		
+		<action name="feedback" class="springManagedFeedback">
+			<result>/jsps/feedback.jsp</result>
+		</action>
+		
+	</package>
+
+	<package name="needsAdminAuthorization" namespace="/"
+		extends="struts-default">
+
+		<interceptors>
+			<interceptor name="adminInterceptor" class="springManagedAdminInterceptor" />
+			<interceptor-stack name="secureStackA">
+				<interceptor-ref name="adminInterceptor" />
+				<interceptor-ref name="defaultStack" />
+			</interceptor-stack>
+		</interceptors>
+
+		<default-interceptor-ref name="secureStackA" />
+
+		<global-results>
+			<result name="login">/jsps/login.jsp</result>
+			<result name="input-problem">/jsps/corneeded.jsp</result>
+			<result name="input">/jsps/info.jsp</result>
+			<result name="exception">/jsps/info.jsp</result>
+		</global-results>
+
+		<action name="populateRuleCategories" class="springManagedPopulateRuleCategories">
+			<result>/jsps/chooseRuleCategory.jsp</result>
+		</action>
+
+		<action name="prepareAddRule" class="springManagedPrepareAddRule">
+			<result>/jsps/addRule.jsp</result>
+		</action>
+
+		<action name="addRule" class="springManagedAddRule">
+			<result>/jsps/info.jsp</result>
+		</action>
+
+		<action name="populateRuleList" class="springManagedPopulateRuleList">
+			<result>/jsps/deleteRule.jsp</result>
+		</action>
+
+		<action name="deleteRule" class="springManagedDeleteRule">
+			<result>/jsps/info.jsp</result>
+		</action>
+
+		<action name="editRule" class="springManagedEditRule">
+			<result>/jsps/info.jsp</result>
+		</action>
+
+		<action name="createRuleSet" class="springManagedCreateRuleSet">
+			<result>/jsps/info.jsp</result>
+			<result name="input">/jsps/corneeded.jsp</result>
+		</action>
+
+		<action name="getRuleSetsForDeletion" class="springManagedGetRuleSetsForDeletion">
+			<result>/jsps/chooseRuleSetForDeletion.jsp</result>
+		</action>
+
+		<action name="deleteRuleSet" class="springManagedDeleteRuleSet">
+			<result>/jsps/info.jsp</result>
+		</action>
+	
+	</package>
+</struts>
Index: modules/uoa-validator-admin/trunk/src/main/resources/web-error-texts.properties
===================================================================
--- modules/uoa-validator-admin/trunk/src/main/resources/web-error-texts.properties	(nonexistent)
+++ modules/uoa-validator-admin/trunk/src/main/resources/web-error-texts.properties	(revision 47450)
@@ -0,0 +1,21 @@
+compulsoryField = This field must have a value
+identicalPasswords = Passwords must be identical
+notValidEmail = Invalid email adress
+userAlreadyExists = This user already exists
+noActivationId = The activation id was not specified
+numericalValue = This field must have a numerical value
+recordsLessThan1 = At least 1 record must be used
+invalidBaseUrl = Invalid base Url
+alreadyRepo = Repository already exists. You may need to activate it.
+noAdminEmail = This repository does not provide an administrator email. Registration cannot continue.
+notBelongsToYou = This job doesn't belong to you or doesn't exist
+uknownError = Unknown Error
+requiredFieldNoValue = A required field(*) has no value
+wrongFieldValue = This field has an invalid value
+jobError = Your repository failed to validate. An automatic error report has been sent to the system administrator. You will soon be contacted with the reason for the error and any further actions that might be needed.
+generic.error = An unexpected error has occurred and the administrator was automatically notified. Please try again later.
+login.manual = Please login manually using your account from the OpenAIRE portal
+registration.notOpenDoar = The registration of repositories not in OpenDoar is disabled
+job.noTasks = It appears that this test is empty. Likely causes are the following: <br><br>1. The test is still running <br>2. The chosen set didn't contain any records (e.g., the ec_fundedresources set is empty) <br>3. The test contained no rules <br>4. An unexpected error occurred and might be resolved if you try again later <br><br>If you think that none of the above reasons applies, please report this issue using <a href="http://www.openaire.eu/en/support/helpdesk?view=detail&cid[0]=-1">this form</a>.
+registration.modeNotSelected = It appears that you haven\'t chosen the correct type of repository. Please choose 'JOIN OPENAIRE' from main menu and choose the right one.
+registration.noAggregated = It appears that you repository is part of an aggregator. Your repository will be automatically registered when the aggregator registers in OpenAIRE. Aggregator Name
\ No newline at end of file
Index: modules/uoa-validator-admin/trunk/src/main/java/eu/dnetlib/validator/admin/actions/DummyAction.java
===================================================================
--- modules/uoa-validator-admin/trunk/src/main/java/eu/dnetlib/validator/admin/actions/DummyAction.java	(nonexistent)
+++ modules/uoa-validator-admin/trunk/src/main/java/eu/dnetlib/validator/admin/actions/DummyAction.java	(revision 47450)
@@ -0,0 +1,13 @@
+package eu.dnetlib.validator.admin.actions;
+
+import com.opensymphony.xwork2.Action;
+
+public class DummyAction extends BaseValidatorAction {
+
+	private static final long serialVersionUID = 4105253794510714980L;
+
+	public String execute() {
+		return Action.SUCCESS;
+		
+	}
+}
Index: modules/uoa-validator-admin/trunk/src/main/java/eu/dnetlib/validator/admin/config/Constants.java
===================================================================
--- modules/uoa-validator-admin/trunk/src/main/java/eu/dnetlib/validator/admin/config/Constants.java	(nonexistent)
+++ modules/uoa-validator-admin/trunk/src/main/java/eu/dnetlib/validator/admin/config/Constants.java	(revision 47450)
@@ -0,0 +1,12 @@
+package eu.dnetlib.validator.admin.config;
+
+
+public class Constants {
+	
+	public static String loggedInField = "LOGGED_IN_FIELD";
+
+	public static final String MODE_LOCAL = "local";
+	public static final String MODE_DNET = "dnet";
+	public static final String MODE_LDAP = "ldap";
+
+}
Index: modules/uoa-validator-admin/trunk/src/main/java/eu/dnetlib/validator/admin/constants/fielddetails/FieldDetails.java
===================================================================
--- modules/uoa-validator-admin/trunk/src/main/java/eu/dnetlib/validator/admin/constants/fielddetails/FieldDetails.java	(nonexistent)
+++ modules/uoa-validator-admin/trunk/src/main/java/eu/dnetlib/validator/admin/constants/fielddetails/FieldDetails.java	(revision 47450)
@@ -0,0 +1,32 @@
+package eu.dnetlib.validator.admin.constants.fielddetails;
+
+public class FieldDetails {
+
+	private String tableName;
+	private String fieldName;
+	// true if the user must provide a value for this field when adding a new record in the table
+	private boolean forDet;
+	
+	public String getTableName() {
+		return tableName;
+	}
+	public void setTableName(String tableName) {
+		this.tableName = tableName;
+	}
+	public String getFieldName() {
+		return fieldName;
+	}
+	public void setFieldName(String fieldName) {
+		this.fieldName = fieldName;
+	}
+	public boolean isForDet() {
+		return forDet;
+	}
+	public void setForDet(boolean forDet) {
+		this.forDet = forDet;
+	}
+	
+	public String getBundleName() {
+		return this.tableName+"."+this.fieldName;
+	}
+}
Index: modules/uoa-validator-admin/trunk/src/main/resources/eu/dnetlib/validator/admin/api/emailTeplateOld.vm
===================================================================
--- modules/uoa-validator-admin/trunk/src/main/resources/eu/dnetlib/validator/admin/api/emailTeplateOld.vm	(nonexistent)
+++ modules/uoa-validator-admin/trunk/src/main/resources/eu/dnetlib/validator/admin/api/emailTeplateOld.vm	(revision 47450)
@@ -0,0 +1,20 @@
+Greetings,
+
+The unsuccessful registration attempts during $month
+were the following (base URL, contact mail, compliance level):
+
+#foreach( $datasource in $failedJobs )
+$datasource.baseUrl, $datasource.email, $datasource.compliance
+#end
+$noneFailed
+
+The successful ones were the following:
+
+#foreach( $datasource in $passedJobs )
+$datasource.baseUrl, $datasource.email, $datasource.compliance
+#end
+$nonePassed
+
+Regards,
+Validator's administrator
+
Index: modules/uoa-validator-admin/trunk/src/main/webapp/jsps/deleteJobs.jsp
===================================================================
--- modules/uoa-validator-admin/trunk/src/main/webapp/jsps/deleteJobs.jsp	(nonexistent)
+++ modules/uoa-validator-admin/trunk/src/main/webapp/jsps/deleteJobs.jsp	(revision 47450)
@@ -0,0 +1,66 @@
+<%@ page contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<%@ taglib prefix="s" uri="/struts-tags"%>
+<%@ taglib prefix="sj" uri="/struts-jquery-tags"%>
+<html>
+<head>
+<link href="jsps/style.css" rel="stylesheet" type="text/css" media="screen" />
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<!--<meta http-equiv="refresh" content="13" >-->
+<title><s:text name="manageJobs.deleteJobs.title"/></title>
+<link href="jsps/favicon.ico" rel="shortcut icon" type="image/x-icon" />
+<sj:head />
+</head>
+<body class="left">
+
+<div id="wrapper">
+	<jsp:include page="menu.jsp"/>
+	<div id="page">
+		<div id="page-bgtop">
+			<div id="middle">
+                <div class="middle-b">
+                    <div class="background">
+                    	<div id="left">
+                        	<div id="left_container">
+	                             <h2 class="helpHdr">Info</h2>
+                                 <s:text name="help.browsevalidations"/>
+                            </div>
+                        </div>
+                        <div id="main">
+                            <div id="main_container" class="clearfix">
+                                <div id="mainmiddle" class="floatbox">
+                                    <h1 class="title"><s:text name="manageJobs.deleteJobs.title"/></h1>
+<%--                                     <s:if test="%{enableCuration}"> --%>
+	                                    <s:form action="curateDB">
+	                                   		 <s:select name="period" 
+	                                    		key="manageJobs.deleteJobs.deleteOld"
+ 	                          					list="#{'older':'older than', 'newer':'newer than', 'exact':'of'}"
+                                            	required="true"
+	  					                    />
+     										<sj:datepicker name="inDate" changeMonth="true" changeYear="true" displayFormat="yy-mm-dd"/>
+<%-- 	                                    	<s:textfield name="inDate" value="YYYY-MM-DD"/> --%>
+	                                    	<s:select name="mode" 
+	                                    		key="manageJobs.deleteJobs.whatToDelete"
+ 	                          					list="#{'all':'All jobs', 'compTest_only':'Compatibility Tests only', 'uncompleted_only':'Uncompleted jobs'}"
+                                            	required="true"
+	  					                    />
+<%--  	                          					list="#{'all':'All jobs', 'compTest_only':'Compatibility Tests only', 'uncompleted_only':'Uncompleted jobs','import':'Import jobs'}" --%>
+	                                    	<s:submit cssClass="button-default"/>
+	                                    </s:form>
+<%-- 	                               </s:if> --%>
+                                    
+								</div>
+                            </div>
+                        </div>
+                    </div>
+                </div>
+            </div>
+		</div>
+		<!-- NMI This needs to be the same in all pages and the text is some properties file -->
+        <div id="footer"> 
+           <jsp:include page="footer.jsp"/>
+        </div>
+	</div>
+</div>
+</body>
+</html>
Index: modules/uoa-validator-admin/trunk/src/main/webapp/jsps/style.css
===================================================================
--- modules/uoa-validator-admin/trunk/src/main/webapp/jsps/style.css	(nonexistent)
+++ modules/uoa-validator-admin/trunk/src/main/webapp/jsps/style.css	(revision 47450)
@@ -0,0 +1,1233 @@
+
+/*
+Design by Free CSS Templates
+http://www.freecsstemplates.org
+Released for free under a Creative Commons Attribution 2.5 License
+*/
+@import url(fonts/kreon.css);
+@import url(fonts/yanonekaffeesatz.css);
+@import url(fonts/opensans.css);
+
+body, html {
+	height:100%;
+}
+body {
+	margin: 0;
+	padding: 0;
+	font: normal 12px/20px verdana, OpenSansLight, sans-serif;
+	/*font: 12px/20px "OpenSansLight", "Trebuchet MS", Georgia, "Times New Roman", Times, serif;*/
+	color: #717171;
+	background: #f5f5f5;
+ 	background-image: url(images/BG_Header_f5.png), url(images/BG_Footer_f5.png);
+ 	background-position: left top, right bottom;
+ 	background-repeat: no-repeat, no-repeat; 
+ 	background-attachment:fixed;
+}
+
+h1, h2, h3, h4, h5 {
+	margin: 0;
+	padding-bottom:5px;
+	font-family: "OpenSansLight", "Trebuchet MS", Georgia, "Times New Roman", Times, serif;
+	font-weight: normal;
+	color: #0F2B5B;
+}
+
+h1 { 	padding-top: 25px;
+	padding-bottom:15px;
+	font-size: 24px; 
+	color:#829333; 
+}
+
+h2 { 	padding-top: 25px;
+	padding-bottom:10px;
+	font-size: 18px; 
+	color:#829333; 
+}
+
+h3 {  
+	color:#343CB1;
+	font-size: 16px; 
+}
+h4 {  
+	font-size: 16px; 
+}
+h5 {  
+	font-size: 14px; 
+}
+
+p, ul, ol {
+	margin-top: 0;
+	text-align: justify;
+}
+
+ul, ol { }
+
+blockquote { }
+
+a { color: #2D72D6; }
+
+a:hover { text-decoration: none; color:#E76E12; cursor: pointer;}
+
+a img {
+	border: none;
+}
+
+img.left {
+	float: left;
+	margin: 7px 30px 0 0;
+}
+
+img.right {
+	float: right;
+	margin: 7px 0 0 30px;
+}
+
+hr {
+	border-top: 0px;
+	border-bottom: 1px solid #ddd;
+}
+.frontvisible {
+	font-size:16px;
+	font-family: "OpenSansLight", "Trebuchet MS", Georgia, "Times New Roman", Times, serif;
+}
+.optional {
+	font-size:72%!important;
+}
+.frontvisible p {
+	font-size:12px;
+}
+ul.frontvisible,
+.frontvisible ul {
+	list-style:none;
+	margin-left:60px;
+	padding-left:60px;
+	font-size:12px;
+}
+ul.frontvisible>li,
+.frontvisible li {
+	background: url('images/list_check.png') 0 0 no-repeat;
+	padding: 4px 0 0 30px;
+	font-size:14px;
+	line-height:24px;
+}
+
+.list1 {
+}
+
+.list1 li {
+	float: left;
+	line-height: normal;
+}
+
+.list1 li img {
+	margin: 0 30px 30px 0;
+}
+
+.list1 li.alt img {
+	margin-right: 0;
+}
+
+div.wrapper {
+	margin: auto; 
+}
+.errorMessage {
+	color: #E24912;
+	list-style: none;
+	font-style:italic;
+	margin:10px 0px;
+	font-size:110%;
+}
+
+.highlight {
+	background: url(images/menu_level2_parent.png) 0 40%  no-repeat;
+	padding-left:30px;
+	font-weight:bold;
+}
+
+.register {
+	background: url(images/register.png) right 40%  no-repeat;
+	padding-right:18px;
+}
+.notes {
+	color:#818181;
+	font-style:italic;
+    background-color: transparent;
+    background-image: url("images/info.jpg");
+    background-repeat: no-repeat;
+	background-position:0 left;
+    padding-left: 20px;
+	line-height:140%;
+}
+.notes_important {
+	color:#666;
+	font-style:italic;
+    background-color: transparent;
+    background-image: url("images/exclamation-icon.png");
+    background-repeat: no-repeat;
+	background-position:0 left;
+    padding-left: 20px;
+	line-height:140%;
+}
+.comments {
+	color:#666;
+	font-style:italic;
+ }
+ 
+.selectedHdr {
+	margin: 15px 0px 40px 0px;
+	color:#E24912;
+	font-family: "YanoneKaffeesatzLight"; 
+	font-size: 28px;
+}
+.helpHdr {
+    background-attachment: scroll;
+    background-color: transparent;
+    background-image: url("images/info-left.png");
+    background-position: 0 80%;  
+    background-repeat: no-repeat;
+    padding-left: 35px;
+}
+.next {
+	line-height:32px;
+	background-image: url("images/arrow_right.png");
+	background-position: 50% 40%;  
+	background-repeat: no-repeat;
+	padding-right:65px;
+	margin-bottom:20px;
+	text-align:center;
+}
+.next a {
+	text-decoration:none;
+}
+.prev {
+	line-height:32px;
+	background-image: url("images/arrow_left.png");
+	background-position: 45% 40%;  
+	background-repeat: no-repeat;
+	padding-left:25px;
+	text-align:center;
+	margin-bottom:20px;
+}
+.prev a {
+	text-decoration:none;
+}
+
+.smallInp {
+	width:10%!important;
+}
+.smallInp input[type="text"] {
+	width:10%!important;
+}
+
+.bigInp {
+	width:40%!important;
+}
+.bigInp input[type="text"] {
+	width:40%!important;
+}
+
+.validatedOk { 
+	line-height:32px;
+	background-image: url("images/tick.png");
+    background-position: 50% 100%;
+    background-repeat: no-repeat;
+}
+
+.addNewRow { 
+	line-height:32px;
+	background-image: url("images/tick.png");
+    background-position: 50% 50%;
+    background-repeat: no-repeat;
+}
+
+.validatedWrong {
+	line-height:32px;
+	background-image: url("images/error.png");
+    background-position: 50% 40%;  
+    background-repeat: no-repeat;
+}
+
+.validatedWarnings {
+	line-height:32px;
+	background-image: url("images/warning.png");
+    background-position: 50% 40%;  
+    background-repeat: no-repeat;
+}
+/*
+ * horizontal rule
+ */
+ 
+hr.dotted {
+	margin: 15px 0px 15px 0px;
+	display: block;
+	background: url(images/line_dotted.png) 0 0 repeat-x;
+	height: 1px;
+	border: none;
+}
+
+/*
+ * highlighted div and span tags
+ */
+
+span.note,
+span.info,
+span.alert,
+span.download,
+span.tip {
+	display: block;
+}
+
+.box-content {
+	background: #fafafa;
+	border: 1px solid #ddd;
+}
+
+
+div.note, span.note,
+div.info, span.info,
+div.alert, span.alert,
+div.download, span.download,
+div.tip, span.tip {
+	margin: 10px 0px 10px 0px;
+	padding: 8px 10px 8px 35px;
+	background: #fafafa;
+	border-top: 1px solid #ddd;
+	border-bottom: 1px solid #ddd;
+}
+
+div.info, span.info {
+	background: #ebf5fa url(images/box_info.png) 0 0 no-repeat;
+	border-color: #d2dce1;
+}
+
+div.alert, span.alert {
+	background: #fff0eb url(images/box_warning.png) 0 0 no-repeat;
+	border-color: #ffd7cd;
+}
+
+div.download, span.download {
+	background: #faffe6 url(images/box_download.png) 0 0 no-repeat;
+	border-color: #dce6be;
+}
+
+div.tip, span.tip {
+	background: #fffae6 url(images/box_tip.png) 0 0 no-repeat;
+	border-color: #fae6be;
+}
+.errorlink,
+.warninglink,
+.smallfont {
+	font-size:90%!important;
+}
+a.smallfont {
+	font-size:90%!important;
+}
+.firstpar {
+	padding:0px 5px 20px 45px;
+	margin:15px 0px;
+	background: no-repeat url(images/number-1.png) top left;
+}
+.secondpar {
+	padding:0px 5px 20px 45px;
+	margin:15px 0px;
+	background: no-repeat url(images/number-2.png) top left;
+}
+.thirdpar {
+	padding:0px 5px 20px 45px;
+	margin:15px 0px;
+	background: no-repeat url(images/number-3.png) top left;
+}
+.fourthpar {
+ 	padding:0px 5px 20px 45px;
+ 	margin:15px 0px;
+}
+.section {
+	padding-left:5px;
+	font-weight: normal;
+	text-transform: none;
+	line-height: 30px;
+	padding-top:3px;
+	padding-bottom: 10px;
+	font-family: "YanoneKaffeesatzLight"; 
+	font-size: 30px;
+	color:#343CB1;
+}
+.section1 {
+	padding-left:5px;
+	font-weight: normal;
+	text-transform: none;
+	line-height: 30px;
+	padding-top:3px;
+	padding-bottom: 10px;
+	font-family: "YanoneKaffeesatzLight"; 
+	font-size: 30px;
+	color:#343CB1;
+	background:#c2c2c2;
+}
+.box {
+	background: #fafafa;
+	border: 1px solid #ddd;
+}
+.field {
+	margin: 10px 0px;
+	line-height:28px;
+	font-size:100%;
+	clear:both;
+	overflow: hidden;
+}
+#left .field  {
+	padding:0
+	font-size:100%;
+	clear:both;
+	color:#351695;
+}
+.field label, label {
+	padding-left:1px;
+}
+	
+label input[type="text"] {
+	border:#839EB7 1px solid!important;
+	width:70%;
+}
+
+.field input[type="text"] {
+	width:80%;
+}
+.field input[type="password"] {
+	width:80%;
+}
+.fieldName {
+	margin-right: 10px;
+	font-family: "YanoneKaffeesatzLight"; 
+	font-size:18px;
+}
+
+
+/* Header */
+
+#header-wrapper {
+	color: #717171;
+}
+
+#header {
+	width: 970px;
+	height: 160px;
+	margin: 0 auto;
+	position:relative;
+}
+
+/* Menu */
+
+#topmenu {
+	height:30px;
+	padding-right:20px;
+}
+#topmenu ul {
+	list-style: none;
+}
+#topmenu li {
+	padding-left:10px;
+	font-family: "YanoneKaffeesatzLight"; 
+	font-size:16px;
+}
+#topmenu li a {
+	text-decoration:none;
+}
+
+
+
+	
+/* Search */
+/* oldname searchbox*/ 
+.class srchbx {
+	font-size:12px;
+	font-weight:bold;
+}
+#search {
+	float: right;
+	width: 305px;
+	height: 45px;
+}
+
+#search form {
+	float: right;
+	margin: 0;
+	padding: 12px 30px 0 0;
+}
+
+#search fieldset {
+	margin: 0;
+	padding: 0;
+	border: none;
+}
+
+#search input {
+	float: left;
+	font: 12px Georgia, "Times New Roman", Times, serif;
+	border: none;
+}
+
+#search-text {
+	width: 135px;
+	height: 18px;
+	padding: 3px 0 0 5px;
+	border: 1px solid #333333;
+	background: #ECF9E4;
+	color: #000000;
+}
+
+#search-submit {
+	height: 21px;
+	margin-left: 10px;
+	padding: 0px 5px;
+	background: #000000;
+	color: #FFFFFF;
+}
+
+/* Page */
+
+#page {
+	width: 970px;
+	margin: 0 auto;
+	/*background: #fafafa url(images/middle_bg_t.png) 0 0 repeat-x;*/
+	background:#ffffff;
+	box-shadow: 0 1px 0 rgba(0,0,0,0.1);
+}
+
+#page-bgtop {
+	
+}
+
+	/** LOGO */
+
+#logoLareferencia {
+	width: 308px;
+	height: 130px;
+	top:10px;
+	margin: 0 auto;
+	float:left;
+	position:absolute;
+	background: url(images/logo-referencia-openaire.png) no-repeat left bottom;
+	background-size: 300px;
+}	
+
+#logo {
+	width: 300px;
+	height: 130px;
+	top:10px;
+	margin: 0 auto;
+	float:left;
+	position:absolute;
+/* 	background: url(images/OpenAIREplus_logo.png) no-repeat left center; */
+}
+
+#logo h1, #logo p {
+	margin: 0px;
+	line-height: normal;
+	text-transform: none;
+	font-weight: normal;
+	color: #FFFFFF;
+}
+
+#logo p {
+	text-transform: lowercase;
+	font-size: 10px;
+}
+
+#logo h1 {
+	padding-top: 54px;
+	font-size: 34px;
+}
+
+#logo a {
+	text-decoration: none;
+	color: #FFFFFF;
+}
+
+/* Content */
+
+div#content {
+	width: auto;
+	min-height:300px;
+}
+div#content {
+	margin: 0px 0px 0px 0px;
+	float: left;
+	width: 658px;
+	padding-top: 10px;
+	padding-right: 30px;
+}
+
+.showright div#content {
+	margin: 0px 210px 0px 0px;  
+}
+
+
+/* Main */
+
+div#main {
+	/*background: url(images/img07.jpg) repeat-x left bottom;*/
+	width: auto!important;	 
+	min-height:300px;
+}
+ 
+div#main {
+	margin: 0px 0px 0px 0px;
+	padding: 0px 0px 0px 0px;
+}
+#main_container {
+	padding:0px 10px 0px 10px;
+}
+
+.left div#main {
+	margin: 0px 0px 0px 220px;  
+}
+.right div#main {
+	margin: 0px 240px 0px 0px;  
+}
+div#mainmiddle {
+	margin: 0px 0px 15px 0px;
+}
+div#middle {
+	margin: 0px 0px 0px 0px;
+	/*background: #fafafa url(images/middle_bg_t.png) 0 0 repeat-x;*/
+}
+
+div.middle-b {
+	padding: 15px 15px 15px 15px;
+	/*background: url(images/middle_bg_b.png) 0 100% repeat-x;	*/
+
+}
+
+div#middle .background {
+	min-height: 200px; 
+}
+.left div#middle .background {
+	background: url(images/left_bg_l.png) 220px 0 repeat-y;
+}
+/* Left */
+div#left {
+	width: 220px;
+}
+.left div#middle div#left {
+	float: left;
+}
+#left_container {
+	padding:0px 10px 0px 10px;
+}
+#left_container p, #left_container li, #left p, #left li{
+	text-align:left;
+	font-size:12px;
+}
+
+/* Post */
+
+.post {
+	/*background: url(images/img07.jpg) repeat-x left bottom;*/
+	padding-bottom: 25px;
+	padding-top: 5px;
+	margin: 15px 10px 0px 0px;
+	/*height: 180px;*/
+	position: relative;
+}
+
+.postvertical {
+	background: url(images/img07.jpg) repeat-x left bottom;
+	margin-bottom: 25px;
+	margin-top: 20px;
+	margin-right: 120px;
+	margin-left: 30px;
+	float: left;
+	width: 277px;
+}
+
+
+
+.post .title {
+	height: 30px;
+	color: #0F2B5B;
+}
+
+.post .title a {
+	text-decoration: none;
+	color: #585D60;
+}
+
+.post .date {
+}
+
+.post .meta {
+	margin-top: -10px;
+	padding: 2px 30px 2px 16px;
+	background: url(images/help.png) no-repeat left 8px;
+	font-weight: normal;
+	font-size: 10px;
+	color: #66665E;
+}
+
+.post .meta span {
+	display: block;
+	margin-top: -10px;
+}
+
+.post .meta a { 
+	padding-left: 3px;
+	text-decoration: none;
+	color: MediumBlue;
+}
+
+.post .entry {
+	padding: 10px 0;
+}
+
+.post .links {
+	margin: 0 250px 0 0;
+	padding: 0 0 0 0px;
+}
+
+.post .links .comments {
+}
+
+.post .links .permalink {
+	padding-left: 17px;
+}
+
+/* Sid */
+
+#sid {
+	float: left;
+	width: 177px;
+	padding-right: 22px;
+	font-size: 11px;
+	color: #585D60;
+}
+
+#sid ul {
+	margin: 0;
+	padding: 0;
+	list-style: none;
+	line-height: normal;
+}
+
+#sid li {
+	margin-bottom: 30px;
+	padding: 0 0 10px 0px;
+}
+
+#sid li ul {
+}
+
+#sid li li {
+	margin: 0;
+	padding: 7px 10px 10px 7px;
+	background: url(images/img07.jpg) repeat-x left bottom;
+}
+
+#sid p {
+	margin: 0;
+	padding: 0px 10px;
+}
+
+#sid h2 {
+	height: 26px;
+	margin: 0 0 10px 0px;
+	padding: 12px 0 2px 7px;
+	font-size: 18px;
+	font-weight: normal;
+	color: #464F54;
+}
+
+
+#sid p {
+	line-height: 200%;
+}
+#sid a {
+	text-align: left;
+	text-decoration: none;
+	font-weight: normal;
+	color: #585D60;
+}
+
+/* Calendar */
+
+#calendar {
+}
+
+#calendar caption {
+	padding-bottom: 5px;
+	font-weight: bold;
+}
+
+#calendar table {
+	width: 100%;
+	border-collapse: collapse;
+	border-bottom: 1px solid #24130F;
+	border-left: 1px solid #24130F;
+	border-right: 1px solid #24130F;
+}
+
+#calendar thead th {
+	padding: 5px 0;
+	text-align: center;
+	border-top: 1px solid #24130F;
+	border-left: 1px solid #24130F;
+	background: #24130F;
+}
+
+#calendar tbody td {
+	padding: 5px 0;
+	text-align: center;
+	border-top: 1px solid #24130F;
+	border-left: 1px solid #24130F;
+	border-bottom: 1px solid #24130F;
+}
+
+#calendar tfoot td {
+	padding: 5px;
+	border-left: 1px solid #24130F;
+	border-bottom: 1px solid #24130F;
+}
+
+#calendar tfoot #next {
+	border-top: 1px solid #24130F;
+	text-align: right;
+}
+
+#calendar tfoot #prev {
+	border-top: 1px solid #24130F;
+}
+
+#calendar .pad {
+	border-bottom: 1px solid #24130F;
+}
+
+#calendar #today {
+	background: #24130F;
+}
+
+/* Footer */
+
+#footer {
+	padding-top:10px;
+	clear: both;  
+	height: 62px;
+	background:#3440B5;
+	color:#ffffff;
+	border-top:1px solid #DADADA;
+
+	overflow: hidden;
+}
+
+#footer-bgcontent {
+	height: 62px;
+	padding: 10px;
+	background-attachment: scroll;
+    background-image: url("images/EC_logo_blue_multi_horizontal.png");
+    background-position: 95% 10%;
+    background-repeat: no-repeat;
+}
+
+#footer p {
+	font-size: 12px; font-family: "OpenSansLight"; 
+	margin: 0;
+	text-align: center;
+}
+
+#footer a {
+	color: #E5FFC4;
+}
+
+/* Table */
+
+#gradient-style
+{
+	font-size:100%;
+	text-align: left;
+	border-collapse: collapse;
+}
+#gradient-style th
+{
+	font-size: 110%;
+	font-weight: normal;
+	padding: 3px;
+	background: #F0F0F0;
+	border-top: 2px #CCCCCC solid;
+	border-bottom: 2px #CCCCCC solid;
+	color: #0F2B5B;
+}
+#gradient-style td
+{
+	padding:0px 3px;
+	border-bottom: 1px solid #fff;
+	color: #669;
+	border-top: 1px solid #fff;
+	background: #F0F0F0;
+}
+
+#gradient-style tfoot tr td
+{
+	background: #e8edff;
+	font-size: normal;
+	color: #99c;
+}
+#gradient-style tbody tr:hover td
+{
+	background: #0F2B5B;
+	color: #FFFFFF!important;
+}
+
+#gradient-style tbody tr:hover td a
+{
+	color: #fff!important;
+	text-decoration:underline;
+}
+
+.errordiv {
+	background-color:#FFFAE6;
+	padding: 5px 10px 5px 10px;
+	border-top: 1px dotted #AAB4BE;
+	border-bottom: 1px dotted #AAB4BE;
+}
+.errordiv:hover {
+}
+/* expand - colapse fields */
+
+.optiontable_container {
+	position:relative;
+	z-index:100;
+	min-width: 400px;
+}
+
+.optiontable_ttl {
+	line-height: 1em;
+	display:block;
+	margin-top: 0;
+	margin-bottom: 0;
+	padding-top: 0;
+	padding-bottom: 0;
+	padding-left: 10px;
+	padding-right: 10px;
+	border-color: #aeadad;
+	border-style: solid;
+	border-width:0 1px 1px;
+}
+
+.optiontable_content {
+	display:block;
+	padding-top: 5px;
+	padding-bottom: 5px;
+	padding-left: 2px;
+	padding-right: 2px;
+	border-color: #aeadad;
+	border-style: solid;
+	border-width:0 1px;
+}
+.contentR {
+	border-left: #aeadad solid 1px;
+	border-right: #aeadad solid 1px;
+}
+.usage {
+	border-left: #aeadad solid 1px;
+	border-right: #aeadad solid 1px;
+}
+
+.optiontable_content2 {
+	overflow:auto;
+	height: auto;/*30em;*/
+}
+
+.floatleft {
+	float: left;
+	padding-right: 10px;
+}
+
+
+a.help {
+    -moz-background-clip: border;
+    -moz-background-origin: padding;
+    -moz-background-size: auto auto;
+    background-attachment: scroll;
+    background-color: transparent;
+    background-image: url("images/help2.png");
+    background-position: 0 0;
+    background-repeat: no-repeat;
+    padding-left: 20px;
+}
+a.external {
+    -moz-background-clip: border;
+    -moz-background-origin: padding;
+    -moz-background-size: auto auto;
+    background-attachment: scroll;
+    background-color: transparent;
+    background-image: url("images/icon_external.png");
+    background-position: 0 40%;
+    background-repeat: no-repeat;
+    padding-left: 17px;
+}
+
+a.toplink {
+    background-attachment: scroll;
+    background-color: transparent;
+    background-image: url("images/footer_anchor.png");
+    background-position: bottom right;
+    background-repeat: no-repeat;
+    font-size: 12px;
+	width: 30px;
+	height: 5px;
+	display: block;
+	text-decoration: none;
+}
+
+a.download {
+    padding-left: 17px;
+    background: url(images/icon_download.png) 0 40% no-repeat;
+}
+
+.cmenu {
+	font-size: 12px;
+	margin : 10px 0px;
+	padding : 0px 10px 0px 0px;
+}
+
+a.cmenulink {
+	color: #0F2B5B;
+	text-transform: uppercase;
+	text-decoration: none;
+}
+
+a.selectlink {
+	text-decoration: none;
+}
+
+.nest {
+	padding-left:20px;
+	display: block;
+}
+
+/*
+ * Clearing & Floating
+ */
+ 
+.clearfix:after {
+	content: "."; 
+	display: block; 
+	height: 0;  
+	clear: both; 
+	visibility: hidden;
+}	
+ 
+.clearfix { display: block; }
+
+.floatbox { overflow:hidden; }
+
+.float-left { float: left; overflow: hidden; }
+.float-right { float: right; overflow: hidden; }
+
+.width15 { width: 14.999%; }
+.width18 { width: 18.333%; }
+.width20 { width: 19.999%; }
+.width23 { width: 22.999%; }
+.width25 { width: 24.999%; }
+.width33 { width: 33.333%; }
+.width35 { width: 34.999%; }
+.width40 { width: 39.999%; }
+.width45 { width: 44.999%; }
+.width50 { width: 49.999%; }
+.width54 { width: 53.999%; }
+.width65 { width: 64.999%; }
+.width75 { width: 74.999%; }
+.width100 { width: 100%; }
+
+.separator {
+	/*padding-right: 25px;*/
+	background: url(images/module_separator_m.png) 100% 0 repeat-y;
+}
+
+/* ajax request */
+#log_res {
+	overflow: auto;
+}
+ 
+#log_res.ajax-loading {
+	padding: 20px 0;
+	background: url(images/spinner.gif) no-repeat;
+}
+
+.button-default,
+.button-primary,
+form.style button,
+form.style input[type='button'],
+form.style input[type='submit'] { 
+	padding: 8px 14px;
+	margin-top: 5px;
+	margin-bottom: 5px;
+	border-radius: 2px; 
+	border: none;
+	box-shadow: inset 0 -1px 0 rgba(0,0,0,0.15);
+}
+
+/* Default */
+.button-default,
+form.style button,
+form.style input[type='button'],
+form.style input[type='submit'] {
+	background-color: #f5f5f5;
+	background-image: -o-linear-gradient(rgba(240,240,240,0), #dbdbdb);
+	background-image: -webkit-linear-gradient(rgba(240,240,240,0), #dbdbdb);
+	background-image: -moz-linear-gradient(rgba(240,240,240,0), #dbdbdb);
+	background-image: linear-gradient(rgba(240,240,240,0), #dbdbdb);
+	text-shadow: 0 1px 0 #fff;
+	text-decoration: none;
+	display: inherit;
+	text-align: center;
+	text-shadow: 0 1px 0 rgba(255,255,255,0.5);
+	color: #878787;
+}
+
+.button-default:hover,
+form.style button:hover,
+form.style input[type='button']:hover,
+form.style input[type='submit']:hover {
+	background-color: #dbdbdb;
+	box-shadow: inset 0 1px 5px rgba(0,0,0,0.1),
+				inset 0 0 1px rgba(0,0,0,0.1);
+}
+
+.button-default:active,
+form.style button:active,
+form.style input[type='button']:active,
+form.style input[type='submit']:active {
+	color: #737373;
+	box-shadow: inset 0 1px 5px rgba(0,0,0,0.1),
+				inset 0 0 1px rgba(0,0,0,0.1);
+}
+
+/* Primary */
+.button-primary {
+	color: #fff;
+	text-shadow: 0 -1px 0 rgba(0,0,0,0.3);
+}
+
+.button-primary:hover {
+	box-shadow: inset 0 1px 5px rgba(0,0,0,0.3),
+				inset 0 0 1px rgba(0,0,0,0.3);
+	color: #fff;
+}
+
+.button-primary:active {
+	box-shadow: inset 0 1px 8px rgba(0,0,0,0.4),
+				inset 0 0 1px rgba(0,0,0,0.3);
+	text-shadow: 0 0 5px #fff;
+}
+.wrapword{
+white-space: -moz-pre-wrap !important;  /* Mozilla, since 1999 */
+white-space: -pre-wrap;      /* Opera 4-6 */
+white-space: -o-pre-wrap;    /* Opera 7 */
+white-space: pre-wrap;       /* css-3 */
+word-wrap: break-word;       /* Internet Explorer 5.5+ */
+word-break: break-all;
+white-space: normal;
+}
+
+/* Zebra List and Table */
+table.zebra th, table.zebra td { padding: 5px; }
+table.zebra th { color:#3440B5 ;font-size: 14px; font-weight: normal; text-align: left; }
+table { border-collapse: collapse; border-spacing: 0; }
+table.zebra tbody, table.zebra tfoot { font-size: 12px; font-family: "OpenSansLight"; }
+
+table.zebra tbody td { border-bottom: 1px solid #ddd; word-wrap:break-word; }
+table.zebra tbody tr:first-child td { border-top: 1px solid #ddd; }
+
+table.zebra tbody tr.odd { background: url(images/zebra_list.png) 0 0 repeat; }
+table.zebra tbody tr:nth-of-type(odd) { background: url(images/zebra_list.png) 0 0 repeat;}
+
+table.zebra caption { color: #999; }
+table.zebra tbody tr:hover td { background: #E7E7E7; }
+
+/* Zebra List and Table */
+table.zebra1 th, table.zebra td { padding: 5px; }
+table.zebra1 th { font-size: 14px; font-weight: normal; text-align: left; }
+table { border-collapse: collapse; border-spacing: 0; }
+table.zebra1 tbody, table.zebra tfoot { font-size: 12px; font-family: "OpenSansLight"; }
+
+table.zebra1 tbody td { border-bottom: 0px solid #ddd; word-wrap:break-word; }
+table.zebra1 tbody tr:first-child td { border-top: 1px solid #ddd; }
+
+table.zebra1 tbody tr th{ color:black; }
+table.zebra1 tbody tr:first-child td { border-top: 0px solid #ddd; }
+
+table.zebra1 tbody th.numb {  background: #2D72D6; border: none; color: white;}
+table.zebra1 tbody td.numb {  background: #00B5F0; border: none; padding-left: 10px; color: white;}
+table.zebra1 tbody td.cb {  background: #dddddd; border: none; padding-left: 7px; color: white;}
+
+table.zebra1 caption { color: #999; }
+/* table.zebra1 tbody tr:hover  { background: #E7E7E7; } */
+
+
+/*----- Tabs -----*/
+.tabs {
+    width:100%;
+    display:inline-block;
+}
+ 
+    /*----- Tab Links -----*/
+    /* Clearfix */
+    .tab-links:after {
+        display:block;
+        clear:both;
+        content:'';
+    }
+ 
+    .tab-links li {
+        margin:0px 5px;
+        float:left;
+        list-style:none;
+        margin-bottom: -12px;
+    }
+    
+        .tab-links a {
+            padding:9px 15px;
+            display:inline-block;
+            border-radius:3px 3px 0px 0px;
+/*             background:#7FB5DA; */
+            background:#2D72D6;
+            text-decoration:none;
+			font-size: 15px;
+            font-weight:normal;;
+/*             color:#4c4c4c; */
+			color: #3440B5;
+            color:white;
+            transition:all linear 0.15s;
+/*             font-family: "YanoneKaffeesatzLight"; */
+/*             padding: 0 12px; */
+/* outline: 0; */
+/* position: relative; */
+/* white-space: nowrap; */
+
+        }
+ 
+        .tab-links a:hover {
+            background:#a7cce5;
+            text-decoration:none;
+        }
+
+    li.active a, li.active a:hover {
+        background:#F3F3F3;
+        color:#2D72D6;
+    }
+ 
+    /*----- Content of Tabs -----*/
+    .tab-content {
+        padding:10px;
+        border-radius:3px;
+        box-shadow:-1px 1px 1px rgba(0,0,0,0.15);
+        background:#F3F3F3;
+    }
+ 
+        .tab {
+            display:none;
+        }
+ 
+        .tab.active {
+            display:block;
+        }
\ No newline at end of file
Index: modules/uoa-validator-admin/trunk/src/main/java/eu/dnetlib/validator/admin/api/impls/UserApiLDAP.java
===================================================================
--- modules/uoa-validator-admin/trunk/src/main/java/eu/dnetlib/validator/admin/api/impls/UserApiLDAP.java	(nonexistent)
+++ modules/uoa-validator-admin/trunk/src/main/java/eu/dnetlib/validator/admin/api/impls/UserApiLDAP.java	(revision 47450)
@@ -0,0 +1,438 @@
+package eu.dnetlib.validator.admin.api.impls;
+
+import java.security.GeneralSecurityException;
+import java.security.MessageDigest;
+import java.util.Random;
+import java.util.UUID;
+
+import org.apache.log4j.Logger;
+
+import com.unboundid.ldap.sdk.Attribute;
+import com.unboundid.ldap.sdk.DN;
+import com.unboundid.ldap.sdk.Entry;
+import com.unboundid.ldap.sdk.Filter;
+import com.unboundid.ldap.sdk.LDAPConnection;
+import com.unboundid.ldap.sdk.Modification;
+import com.unboundid.ldap.sdk.ModificationType;
+import com.unboundid.ldap.sdk.SearchRequest;
+import com.unboundid.ldap.sdk.SearchResult;
+import com.unboundid.ldap.sdk.SearchResultEntry;
+import com.unboundid.ldap.sdk.SearchScope;
+import com.unboundid.util.Base64;
+
+import eu.dnetlib.domain.functionality.UserProfile;
+import eu.dnetlib.validator.admin.api.UserApi;
+
+public class UserApiLDAP implements UserApi {
+
+	transient Logger logger = Logger.getLogger(UserApiLDAP.class);
+
+	private int ldapPort = 0;
+	private String ldapAddress;
+	private String ldapUsername;
+	private String ldapPassword;
+	private String ldapUsersDN;
+
+	@Override
+	public boolean activateUser(String activationId) throws Exception {
+		LDAPConnection connection = null;
+		try {
+			logger.debug("activating user with activationId " + activationId);
+			connection = new LDAPConnection(ldapAddress, ldapPort, ldapUsername, ldapPassword);
+			Filter filter = Filter.createEqualityFilter("employeeNumber", activationId);
+			SearchRequest searchRequest = new SearchRequest(ldapUsersDN, SearchScope.SUB, filter, "uid");
+			SearchResult searchResult = connection.search(searchRequest);
+			String dn = null;
+
+			if ( searchResult.getSearchEntries().size() > 0	) {
+			
+				for (SearchResultEntry entry : searchResult.getSearchEntries()) {
+					dn = "uid=" + entry.getAttributeValue("uid") + "," + ldapUsersDN;
+				}
+
+				Modification mod1 = new Modification(ModificationType.REPLACE, "JoomlaBlockUser", "0");
+				Modification mod2 = new Modification(ModificationType.REPLACE, "employeeNumber");
+				connection.modify(dn, mod1, mod2);
+				return true;
+			} else {
+				return false;
+			}
+		} catch (Exception e) {
+			logger.error("", e);
+			throw e;
+		} finally {
+			if (connection != null)
+				connection.close();
+		}
+	}
+
+	@Override
+	public String addUser(String username, String email, String password, String firstName, String lastName, String institution) throws Exception {
+		logger.debug("adding user " + username + " " + email + " to ldap");
+		Attribute cn = new Attribute("cn", username);
+		Attribute displayName = new Attribute("displayName", firstName + " " + lastName);
+		Attribute mail = new Attribute("mail", email);
+		Attribute givenName = new Attribute("givenName", firstName);
+		Attribute joomlaBlockUser = new Attribute("JoomlaBlockUser", "1");
+		Attribute joomlaGroup = new Attribute("JoomlaGroup", "Registered");
+		Attribute objectClass = new Attribute("objectClass", "top", "inetOrgPerson", "JoomlaUser");
+		Attribute userPassword = new Attribute("userPassword", Joomla15PasswordHash.create(password));
+		Attribute sn = new Attribute("sn", lastName);
+		Attribute uid = new Attribute("uid", username);
+		
+			
+		// Attribute joomlaUserParams = new Attribute("JoomlaUserParams", "");
+		String activationId = UUID.randomUUID().toString();
+		Attribute x500UniqueIdentifier = new Attribute("employeeNumber", activationId);
+		LDAPConnection connection = null;
+		try {
+			DN dn = new DN("uid=" + username + "," + ldapUsersDN);
+			Entry entry;
+			if (institution != null) {
+				Attribute o = new Attribute("o", institution);
+				entry = new Entry(dn.toNormalizedString(), cn, displayName, mail, givenName, joomlaBlockUser, joomlaGroup, objectClass, userPassword, sn, uid, x500UniqueIdentifier, o);
+						
+			} else {
+				entry = new Entry(dn.toNormalizedString(), cn, displayName, mail, givenName, joomlaBlockUser, joomlaGroup, objectClass, userPassword, sn, uid/*
+																																								 * ,
+																																								 * joomlaUserParams
+																																								 */, x500UniqueIdentifier);
+			}
+			connection = new LDAPConnection(ldapAddress, ldapPort, ldapUsername, ldapPassword);
+			connection.add(entry);
+
+			return activationId;
+		} catch (Exception e) {
+			logger.error("", e);
+			throw e;
+		} finally {
+			if (connection != null)
+				connection.close();
+		}
+	}
+
+	@Override
+	public boolean correctCreds(String email, String password) throws Exception {
+		LDAPConnection connection = null;
+		try {
+			logger.debug("checking if user " + email + " entered a correct password when logging in");
+			connection = new LDAPConnection(ldapAddress, ldapPort, ldapUsername, ldapPassword);
+			Filter filter = Filter.createEqualityFilter("mail", email);
+			SearchRequest searchRequest = new SearchRequest(ldapUsersDN, SearchScope.SUB, filter, "userPassword");
+			SearchResult searchResult = connection.search(searchRequest);
+			for (SearchResultEntry entry : searchResult.getSearchEntries()) {
+				if (Joomla15PasswordHash.check(password, entry.getAttributeValue("userPassword")))
+					return true;
+			}
+			return false;
+		} catch (Exception e) {
+			logger.error("", e);
+			throw e;
+		} finally {
+			if (connection != null)
+				connection.close();
+		}
+	}
+
+	@Override
+	public void editUser(UserProfile user) throws Exception {
+		LDAPConnection connection = null;
+		try {
+			logger.debug("editing user " + user.getEmail());
+			connection = new LDAPConnection(ldapAddress, ldapPort, ldapUsername, ldapPassword);
+			Filter filter = Filter.createEqualityFilter("mail", user.getEmail());
+			SearchRequest searchRequest = new SearchRequest(ldapUsersDN, SearchScope.SUB, filter, "uid");
+			SearchResult searchResult = connection.search(searchRequest);
+			String dn = null;
+			for (SearchResultEntry entry : searchResult.getSearchEntries()) {
+				dn = "uid=" + entry.getAttributeValue("uid") + "," + ldapUsersDN;
+			}
+			Modification mod1 = new Modification(ModificationType.REPLACE, "displayName", user.getFirstname() + " " + user.getLastname());
+			Modification mod2 = new Modification(ModificationType.REPLACE, "givenName", user.getFirstname());
+			Modification mod3 = new Modification(ModificationType.REPLACE, "sn", user.getLastname());
+			Modification mod4 = new Modification(ModificationType.REPLACE, "o", user.getInstitution());
+			connection.modify(dn, mod1, mod2, mod3, mod4);
+		} catch (Exception e) {
+			logger.error("", e);
+			throw e;
+		} finally {
+			if (connection != null)
+				connection.close();
+		}
+	}
+
+	@Override
+	public UserProfile getUser(String userIdentifier) throws Exception {
+		LDAPConnection connection = null;
+		try {
+			logger.debug("getting user " + userIdentifier + " from ldap");
+			connection = new LDAPConnection(ldapAddress, ldapPort, ldapUsername, ldapPassword);
+			Filter filter = Filter.createEqualityFilter("mail", userIdentifier);
+			SearchRequest searchRequest = new SearchRequest(ldapUsersDN, SearchScope.SUB, filter, "mail", "givenName", "sn", "o", "uid");
+			SearchResult searchResult = connection.search(searchRequest);
+			UserProfile profile = new UserProfile();
+			for (SearchResultEntry entry : searchResult.getSearchEntries()) {
+				profile.setEmail(entry.getAttributeValue("mail"));
+				profile.setFirstname(entry.getAttributeValue("givenName"));
+				profile.setLastname(entry.getAttributeValue("sn"));
+				profile.setInstitution(entry.getAttributeValue("o"));
+				profile.setUsername(entry.getAttributeValue("uid"));
+			}
+			return profile;
+		} catch (Exception e) {
+			logger.error("", e);
+			throw e;
+		} finally {
+			if (connection != null)
+				connection.close();
+		}
+	}
+
+	@Override
+	public boolean isAdmin(String email) throws Exception {
+		LDAPConnection connection = null;
+		try {
+			logger.debug("checking if user " + email + " is an administrator");
+			connection = new LDAPConnection(ldapAddress, ldapPort, ldapUsername, ldapPassword);
+			Filter filter = Filter.createEqualityFilter("mail", email);
+			SearchRequest searchRequest = new SearchRequest(ldapUsersDN, SearchScope.SUB, filter, "JoomlaGroup");
+			SearchResult searchResult = connection.search(searchRequest);
+
+			for (SearchResultEntry entry : searchResult.getSearchEntries()) {
+				for (String role : entry.getAttributeValues("JoomlaGroup"))
+					if (role.equals("validatorAdmin"))
+						return true;
+			}
+			logger.debug(email + " is not administrator");
+			return false;
+		} catch (Exception e) {
+			logger.error("", e);
+			throw e;
+		} finally {
+			if (connection != null)
+				connection.close();
+		}
+	}
+
+	@Override
+	public boolean isUserActivated(String email) throws Exception {
+		LDAPConnection connection = null;
+		try {
+			logger.debug("checking if user " + email + " is activated");
+			connection = new LDAPConnection(ldapAddress, ldapPort, ldapUsername, ldapPassword);
+			Filter filter = Filter.createEqualityFilter("mail", email);
+			SearchRequest searchRequest = new SearchRequest(ldapUsersDN, SearchScope.SUB, filter, "JoomlaBlockUser");
+			SearchResult searchResult = connection.search(searchRequest);
+			for (SearchResultEntry entry : searchResult.getSearchEntries()) {
+				int val = entry.getAttributeValueAsInteger("JoomlaBlockUser");
+				if (val == 0)
+					return true;
+				else
+					return false;
+			}
+		} catch (Exception e) {
+			logger.error("", e);
+			throw e;
+		} finally {
+			if (connection != null)
+				connection.close();
+		}
+		return false;
+	}
+
+	@Override
+	public String prepareResetPassword(String email) throws Exception {
+		LDAPConnection connection = null;
+		try {
+			logger.debug("preparing reset password for user " + email);
+			connection = new LDAPConnection(ldapAddress, ldapPort, ldapUsername, ldapPassword);
+			Filter filter = Filter.createEqualityFilter("mail", email);
+			SearchRequest searchRequest = new SearchRequest(ldapUsersDN, SearchScope.SUB, filter, "uid");
+			SearchResult searchResult = connection.search(searchRequest);
+			String dn = null;
+			for (SearchResultEntry entry : searchResult.getSearchEntries()) {
+				dn = "uid=" + entry.getAttributeValue("uid") + "," + ldapUsersDN;
+			}
+			String uuid = UUID.randomUUID().toString();
+			Modification mod = new Modification(ModificationType.REPLACE, "employeeNumber", uuid);
+			connection.modify(dn, mod);
+			return uuid;
+		} catch (Exception e) {
+			logger.error("", e);
+			throw e;
+		} finally {
+			if (connection != null)
+				connection.close();
+		}
+	}
+
+	@Override
+	public void resetPassword(String uuid, String password) throws Exception {
+		LDAPConnection connection = null;
+		try {
+			connection = new LDAPConnection(ldapAddress, ldapPort, ldapUsername, ldapPassword);
+			Filter filter = Filter.createEqualityFilter("employeeNumber", uuid);
+			SearchRequest searchRequest = new SearchRequest(ldapUsersDN, SearchScope.SUB, filter, "uid");
+			SearchResult searchResult = connection.search(searchRequest);
+			String dn = null;
+			for (SearchResultEntry entry : searchResult.getSearchEntries()) {
+				dn = "uid=" + entry.getAttributeValue("uid") + "," + ldapUsersDN;
+			}
+			Modification mod1 = new Modification(ModificationType.REPLACE, "userPassword", Joomla15PasswordHash.create(password));
+			Modification mod2 = new Modification(ModificationType.REPLACE, "employeeNumber");
+			connection.modify(dn, mod1, mod2);
+		} catch (Exception e) {
+			logger.error("", e);
+			throw e;
+		} finally {
+			if (connection != null)
+				connection.close();
+		}
+	}
+
+	@Override
+	public boolean userExists(String email) throws Exception {
+		LDAPConnection connection = null;
+		try {
+			logger.debug("checking if user " + email + " exists in ldap");
+			connection = new LDAPConnection(ldapAddress, ldapPort, ldapUsername, ldapPassword);
+			Filter filter = Filter.createEqualityFilter("mail", email);
+			SearchRequest searchRequest = new SearchRequest(ldapUsersDN, SearchScope.SUB, filter, "mail");
+
+			SearchResult searchResult = connection.search(searchRequest);
+			if (!searchResult.getSearchEntries().isEmpty())
+				return true;
+
+			return false;
+		} catch (Exception e) {
+			logger.error("", e);
+			throw e;
+		} finally {
+			if (connection != null)
+				connection.close();
+		}
+	}
+
+	@Override
+	public boolean usernameExists(String username) throws Exception {
+		LDAPConnection connection = null;
+		try {
+			logger.debug("checking if user " + username + " exists in ldap");
+			connection = new LDAPConnection(ldapAddress, ldapPort, ldapUsername, ldapPassword);
+			Filter filter = Filter.createEqualityFilter("uid", username);
+			SearchRequest searchRequest = new SearchRequest(ldapUsersDN, SearchScope.SUB, filter, "uid");
+			SearchResult searchResult = connection.search(searchRequest);
+
+			if (!searchResult.getSearchEntries().isEmpty()) {
+				return true;
+			}
+
+			return false;
+		} catch (Exception e) {
+			logger.error("", e);
+			throw e;
+		} finally {
+			if (connection != null)
+				connection.close();
+		}
+	}
+
+	@Override
+	public String getEmailFromUsername(String username) throws Exception {
+		LDAPConnection connection = null;
+		try {
+			logger.debug("getting email for user " + username);
+			connection = new LDAPConnection(ldapAddress, ldapPort, ldapUsername, ldapPassword);
+			Filter filter = Filter.createEqualityFilter("uid", username);
+			SearchRequest searchRequest = new SearchRequest(ldapUsersDN, SearchScope.SUB, filter, "mail");
+			SearchResult searchResult = connection.search(searchRequest);
+			for (SearchResultEntry entry : searchResult.getSearchEntries()) {
+				return entry.getAttributeValue("mail");
+			}
+			return null;
+		} catch (Exception e) {
+			logger.error("", e);
+			throw e;
+		} finally {
+			if (connection != null)
+				connection.close();
+		}
+	}
+
+	public void setLdapPort(int ldapPort) {
+		this.ldapPort = ldapPort;
+	}
+
+	public void setLdapAddress(String ldapAddress) {
+		this.ldapAddress = ldapAddress;
+	}
+
+	public void setLdapUsername(String ldapUsername) {
+		this.ldapUsername = ldapUsername;
+	}
+
+	public void setLdapPassword(String ldapPassword) {
+		this.ldapPassword = ldapPassword;
+	}
+
+	public void setLdapUsersDN(String ldapUsersDN) {
+		this.ldapUsersDN = ldapUsersDN;
+	}
+}
+
+class Joomla15PasswordHash 
+{
+   public static boolean check(String passwd,String dbEntry) {
+      String hashed = "{MD5}"+Base64.encode(pack(Joomla15PasswordHash.md5(passwd)));
+      if(dbEntry.equals(hashed))
+    	  return true;
+      else
+    	  return false;
+   }
+
+   static Random _rnd;
+
+   public static String create(String passwd) {
+	   return "{MD5}"+Base64.encode(pack(Joomla15PasswordHash.md5(passwd)));
+   }
+
+   /** Takes the MD5 hash of a sequence of ASCII or LATIN1 characters,
+    *  and returns it as a 32-character lowercase hex string.
+    *
+    *  Equivalent to MySQL's MD5() function 
+    *  and to perl's Digest::MD5::md5_hex(),
+    *  and to PHP's md5().
+    *
+    *  Does no error-checking of the input,  but only uses the low 8 bits
+    *  from each input character.
+    */
+   public static String md5(String data) {
+      byte[] bdata = new byte[data.length()]; int i; byte[] hash;
+
+      for (i=0;i<data.length();i++) bdata[i]=(byte)(data.charAt(i)&0xff );
+
+      try {
+         MessageDigest md5er = MessageDigest.getInstance("MD5");
+         hash = md5er.digest(bdata);
+      } catch (GeneralSecurityException e) { throw new RuntimeException(e); }
+
+      StringBuffer r = new StringBuffer(32);
+      for (i=0;i<hash.length;i++) {
+         String x = Integer.toHexString(hash[i]&0xff);
+         if (x.length()<2) r.append("0");
+         r.append(x);
+      }
+      return r.toString();      
+   }
+   
+   public static byte[] pack(String md5) {
+	    byte[] bytes = new byte[16];
+	    int j = 0;
+	    for(int i=0; i < 31; i+=2) {
+	    	bytes[j] = (byte) Integer.parseInt(md5.charAt(i)+""+md5.charAt(i+1),16);
+	    	j++;
+	    }
+	    return bytes;
+	}
+}
+
Index: modules/uoa-validator-admin/trunk/src/main/java/eu/dnetlib/validator/admin/api/ValidatorAdminAPI.java
===================================================================
--- modules/uoa-validator-admin/trunk/src/main/java/eu/dnetlib/validator/admin/api/ValidatorAdminAPI.java	(nonexistent)
+++ modules/uoa-validator-admin/trunk/src/main/java/eu/dnetlib/validator/admin/api/ValidatorAdminAPI.java	(revision 47450)
@@ -0,0 +1,136 @@
+package eu.dnetlib.validator.admin.api;
+
+import java.util.List;
+
+import eu.dnetlib.domain.functionality.validator.Rule;
+import eu.dnetlib.domain.functionality.validator.RuleSet;
+import eu.dnetlib.validator.admin.actions.rules.FieldPair;
+
+/**
+ * 
+ * @author Nikon Gasparis
+ * 
+ */
+public interface ValidatorAdminAPI {
+
+	public List<Rule> getAllRules() throws  ValidatorAdminException;
+
+	public List<FieldPair> getRuleValuePairs(Rule rule) throws  ValidatorAdminException;
+	
+	public Rule getRule(int ruleId) throws ValidatorAdminException;
+	
+	public List<String> getRuleLabels(String ruleType, Boolean forUsage, Boolean forCris) throws ValidatorAdminException;
+	
+	public String storeRule(Rule rule, String[] inputs, Boolean updateExisting) throws ValidatorAdminException;
+	
+	public void storeRuleSet(RuleSet ruleSet, boolean updateExisting) throws ValidatorAdminException;	
+	
+	public void deleteRuleSet(int setId) throws  ValidatorAdminException;
+	
+	public String deleteRule(int ruleId) throws  ValidatorAdminException;
+
+	public List<RuleSet> getRuleSets() throws  ValidatorAdminException;
+
+	public RuleSet getRuleSet(int setId) throws  ValidatorAdminException;
+
+	public boolean userIsSecondaryAdmin(String user)
+			throws ValidatorAdminException;
+	
+	public boolean userIsMasterAdmin(String user)
+			throws ValidatorAdminException;
+			
+	public int deleteOldJobs(String date, String period, String target) throws ValidatorAdminException;
+
+	public String sendRegistrationsReport(String dateFrom, String dateTo, String month, String year) throws ValidatorAdminException;
+	
+
+//	public List<String> getConstantRuleTypes() throws  AdminAPIException;
+	
+//	public String[] getJobTypesAsArray() throws  AdminAPIException;
+
+
+	/*
+	public String getRuleSetName(int setId) throws  AdminAPIException;
+	
+
+	
+
+	public List<String> getRuleSetRuleIdsByJobType(int setId, String jobType)
+			throws  AdminAPIException;
+
+	public List<RuleS> getAllRulesForPresentationByJobType(String jobType)
+			throws  AdminAPIException;
+
+	public List<RuleS> getAllRulesForPresentationByJobTypeByRuleSet(
+			List<String> ruleSetRuleIds, String jobType)
+			throws  AdminAPIException;
+
+	public List<RuleD> getRulesForJobValidationByJobType(String jobType)
+			throws  AdminAPIException;
+
+	public List<RuleD> getRulesForJobValidationByJobTypeByRuleSet(int setId,
+			String jobType) throws  AdminAPIException;
+
+	public List<RuleStored> getAllRulesByJobType(String jobType)
+			throws  AdminAPIException;
+
+	public List<RulePair> getAllRulesToRulePair() throws  AdminAPIException;
+
+	public Map<String, List<JobSubmitted>> getJobsOfUser(String userName)
+			throws  AdminAPIException;
+
+
+
+	public Properties getRuleProperties(String ruleId)
+			throws  AdminAPIException;
+
+
+
+	public Serializable getRuleClassInstanceByType(String type, Properties pros,int id) throws  AdminAPIException;
+
+	public List<String> getAllRuleIdsByJobType(String jobType)
+			throws  AdminAPIException;
+
+	public List<RuleD> convertRuleIdsListToRuleDList(List<String> ruleIds);
+
+	public List<String> getValidationErrors(int jobId, int ruleId)
+			throws  AdminAPIException;
+
+	public JobSubmitted getJobSubmitted(String jobId) throws  AdminAPIException;
+
+	public List<TaskStored> getJobTasks(String jobId, JobSubmitted job)
+			throws  AdminAPIException;
+
+	public List<Entry> getJobSummary(String jobId, String groupBy) throws AdminAPIException;
+
+
+	public Map<String, String> getRuleSetsMap() throws AdminAPIException;
+
+
+	public void restore();
+
+	public List<String> getDistinctGroupByValues(String jobId) throws  AdminAPIException;
+
+	public String getFilteredScore(String jobId, String groupBy) throws  AdminAPIException;
+
+	public void preRegistrationValidations(JobForRegistration job) throws AdminAPIException;
+
+	public void storeJobForRegistration(JobForRegistration job) throws AdminAPIException;
+
+	public JobForRegistration getJobForRegistration(String activationId) throws AdminAPIException;
+
+	public void deleteJobForRegistration(String activationId) throws AdminAPIException;
+
+	public void cleanUncompletedJobs() throws AdminAPIException;
+
+	public Map<String, Set<Integer>> prepareCrisJobs(Set<Integer> chosenContentRules, Boolean referential, String selectedEntities) throws AdminAPIException;
+
+	public Map<String, String> getRuleSetsMap(String deployEnvironment)
+			throws AdminAPIException;
+
+	public Boolean isRepoAdmin(String user) throws AdminAPIException;
+	
+	*
+	*/
+
+}
\ No newline at end of file
Index: modules/uoa-validator-admin/trunk/src/main/java/eu/dnetlib/validator/admin/api/UserApi.java
===================================================================
--- modules/uoa-validator-admin/trunk/src/main/java/eu/dnetlib/validator/admin/api/UserApi.java	(nonexistent)
+++ modules/uoa-validator-admin/trunk/src/main/java/eu/dnetlib/validator/admin/api/UserApi.java	(revision 47450)
@@ -0,0 +1,32 @@
+package eu.dnetlib.validator.admin.api;
+
+import eu.dnetlib.domain.functionality.UserProfile;
+
+public interface UserApi {
+
+	public boolean activateUser(String activationId) throws Exception;
+
+	public boolean isUserActivated(String email) throws Exception;
+
+	public boolean userExists(String email) throws Exception;
+
+	public boolean usernameExists(String username) throws Exception;
+
+	public boolean correctCreds(String email, String password) throws Exception;
+
+	public String prepareResetPassword(String email) throws Exception;
+
+	public void resetPassword(String uuid, String password) throws Exception;
+
+	public boolean isAdmin(String email) throws Exception;
+
+	public void editUser(UserProfile user)
+			throws Exception;
+
+	public String addUser(String username, String email, String password,
+			String firstName, String lastName, String institution) throws Exception;
+
+	public String getEmailFromUsername(String username) throws Exception;
+
+	public UserProfile getUser(String userIdentifier) throws Exception;
+}
\ No newline at end of file
Index: modules/uoa-validator-admin/trunk/src/main/webapp/jsps/addRule.jsp
===================================================================
--- modules/uoa-validator-admin/trunk/src/main/webapp/jsps/addRule.jsp	(nonexistent)
+++ modules/uoa-validator-admin/trunk/src/main/webapp/jsps/addRule.jsp	(revision 47450)
@@ -0,0 +1,96 @@
+<%@ page contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<%@ taglib prefix="s" uri="/struts-tags"%>
+<html>
+<head>
+<link href="jsps/favicon.ico" rel="shortcut icon" type="image/x-icon" />
+<link href="jsps/style.css" rel="stylesheet" type="text/css" media="screen" />
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title><s:text name="addRule.title"/></title>
+</head>
+<body class="left">
+<div id="wrapper">
+	<jsp:include page="menu.jsp"/>
+	<div id="page">
+	<div id="page-bgtop">
+	<div id="middle">
+            <div class="middle-b">
+                <div class="background">
+
+			 <div id="left">
+                              <div id="left_container" >
+                                                <h2 class="helpHdr">Info</h2>
+                                                <s:text name="help.admin"/>
+                              </div>
+                         </div>
+                                <div id="main">
+                        <div id="main_container" class="clearfix">
+		<div id="content">
+				<h2 class="title"><s:text name="addRule.title"/></h2>
+				<p class="meta"><a href='<s:url value="/jsps/help.jsp#addRule"/>' target="_blank"><s:text name="help"/></a></p>
+				<div class="entry">
+					<s:form action="addRule">
+<%-- 						<s:hidden name="type"/> --%>
+						<s:hidden name="jobType"/>
+						<s:hidden name="forCris"/>
+						<s:iterator value="labels" var="label">
+							<s:set name="dscr" value="%{#label+\".description\"}"/>
+							<s:set name="tltp" value="%{#label+\".name\"}"/>
+							<s:if test="%{#label.equals(\"xmlvocabulary_rule.terms\") || #label.equals(\"rules.description\")}">
+								<s:textarea name="inputs" title="%{getText(#dscr)}" label="%{getText(#tltp)}" cols="50" rows="5"/>
+							</s:if>
+							<s:elseif test="%{#label.equals(\"xmlcrisclassvocabulary_rule.terms\") || #label.equals(\"xmlcrisreferentialintegrity_rule.terms\")}">
+								<s:textarea name="inputs" title="%{getText(#dscr)}" label="%{getText(#tltp)}" cols="50" rows="5"/>
+							</s:elseif>
+                            <s:elseif test="%{#label.equals(\"xmlvocabulary_rule.terms_type\")}">
+                                <s:select label="%{getText(#tltp)}" name="inputs" list="#{'whitelist':'whitelist', 'blacklist':'blacklist'}" title="%{getText(#dscr)}"/>
+							</s:elseif>
+							<s:elseif test="%{#label.equals(\"rules.mandatory\")}">
+								<s:select label="%{getText(#tltp)}" name="inputs" list="#{'true':'true', 'false':'false'}" title="%{getText(#dscr)}"/>
+							</s:elseif>
+							<s:elseif test="%{#label.equals(\"rules.cris_entity\")}">
+                                <s:select label="%{getText(#tltp)}" name="inputs" list="entityTypes" value="%{rule.entity_type}" title="%{getText(#dscr)}"/>
+                            </s:elseif>
+<%-- 							<s:elseif test="%{#label.equals(\"rules.provider_information\")}"> --%>
+<%-- 								<s:if test="%{jobType.equals(\"usage\")}"> --%>
+<%-- 									<s:textfield name="inputs" title="%{getText(#dscr)}" label="%{getText(#tltp)}"/> --%>
+<%-- 								</s:if> --%>
+<%-- 							</s:elseif> --%>
+							<s:elseif test="%{#label.matches('.*success')}">
+								<s:select label="%{getText(#tltp)}" name="inputs" list="#{'>0':'>0', 'all':'all', '0':'0', '1':'1'}"  title="%{getText(#dscr)}"/>
+							</s:elseif>
+							<s:elseif test="%{#label.equals(\"chain_rule.type\")}">
+								<s:select label="%{getText(#tltp)}" name="inputs" list="#{'or':'or', 'and':'and', 'horn':'horn'}" title="%{getText(#dscr)}"/>
+							</s:elseif>							
+							<s:elseif test="%{#label.equals(\"chain_rule.rule_1\")}">
+								<s:select name="inputs" list="rules" listValue="ruleName" listKey="ruleId" label="%{getText(#tltp)}" title="%{getText(#dscr)}"/>
+							</s:elseif>							
+							<s:elseif test="%{#label.equals(\"chain_rule.rule_2\")}">
+								<s:select name="inputs" list="rules" listValue="ruleName" listKey="ruleId" label="%{getText(#tltp)}" title="%{getText(#dscr)}"/>
+							</s:elseif>		
+							<s:else>
+								<s:textfield name="inputs" title="%{getText(#dscr)}" label="%{getText(#tltp)}"/>
+							</s:else>
+						</s:iterator>
+<%-- 						<s:if test="%{forCris == true}"> --%>
+<%-- 							<s:select name="entityType" list="entityTypes" label="%{getText(\"jobs.entity_type.name\")}" title="%{getText(\"jobs.entity_type.description\")}" /> --%>
+<%-- 						</s:if> --%>
+<%-- 						<s:textfield name="jobType" value="%{#jobType}" label="%{getText(\"jobs.job_type.name\")}" title="%{getText(\"jobs.job_type.description\")}" readonly='true'/> --%>
+						<s:textfield name="type" label="%{getText(\"rules.type.name\")}" title="%{getText(\"rules.type.description\")}" readonly='true'/>
+						<s:submit value="Insert" cssClass="button-default"/>
+					</s:form>
+				</div>
+			</div>
+		</div>
+	</div>
+	</div>
+	</div>
+	</div>
+	</div>
+    <div id="footer">
+                <jsp:include page="footer.jsp"/>
+        </div>
+        </div>
+        </div>
+</body>
+</html>
Index: modules/uoa-validator-admin/trunk/src/main/webapp/jsps/chooseRuleForClone.jsp
===================================================================
--- modules/uoa-validator-admin/trunk/src/main/webapp/jsps/chooseRuleForClone.jsp	(nonexistent)
+++ modules/uoa-validator-admin/trunk/src/main/webapp/jsps/chooseRuleForClone.jsp	(revision 47450)
@@ -0,0 +1,50 @@
+<%@ page contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<%@ taglib prefix="s" uri="/struts-tags"%>
+<html>
+<head>
+<link href="jsps/favicon.ico" rel="shortcut icon" type="image/x-icon" />
+<link href="jsps/style.css" rel="stylesheet" type="text/css" media="screen" />
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title><s:text name="chooseRuleForEdit.title"/></title>
+</head>
+<body class="left">
+<div id="wrapper">
+	<jsp:include page="menu.jsp"/>
+	<div id="page">
+	<div id="page-bgtop">
+	<div id="middle">
+            <div class="middle-b">
+                <div class="background">
+			 <div id="left">
+                              <div id="left_container" >
+                                   <h2 class="helpHdr">Info</h2>
+                                   <s:text name="help.admin"/>
+                              </div>
+                         </div>
+                        <div id="main">
+                        <div id="main_container" class="clearfix">
+			<div id="content">
+				<h2 class="title"><s:text name="chooseRuleForEdit.title"/></h2>
+                               <div class="entry">
+					<s:form action="prepareEditRule">
+                           <s:select name="ruleId" list="rules" listValue="name" listKey="id"  key="chooseRuleForClone.label"/>
+                           <s:hidden name="funct" value="clone"/>
+                           <s:submit cssClass="button-default"/>
+                    </s:form>
+                                </div>
+			</div>
+			</div>
+			</div>
+		</div>
+	</div>
+	</div>
+	</div>
+
+    <div id="footer">
+                <jsp:include page="footer.jsp"/>
+        </div>
+        </div>
+</div>
+</body>
+</html>
Index: modules/uoa-validator-admin/trunk/src/main/resources/eu/dnetlib/validator/admin/api/springContext-validator.xml
===================================================================
--- modules/uoa-validator-admin/trunk/src/main/resources/eu/dnetlib/validator/admin/api/springContext-validator.xml	(nonexistent)
+++ modules/uoa-validator-admin/trunk/src/main/resources/eu/dnetlib/validator/admin/api/springContext-validator.xml	(revision 47450)
@@ -0,0 +1,35 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<beans xmlns="http://www.springframework.org/schema/beans"
+	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+	xmlns:context="http://www.springframework.org/schema/context"
+	xmlns:cxf="http://cxf.apache.org/core"
+	xmlns:jaxws="http://cxf.apache.org/jaxws"
+	xmlns:p="http://http://www.springframework.org/schema/p"
+	xmlns:template="http://dnetlib.eu/springbeans/template"
+	xmlns:t="http://dnetlib.eu/springbeans/t"
+	xmlns:tx="http://www.springframework.org/schema/tx"
+	
+	xsi:schemaLocation="
+		http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.0.xsd
+        http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.0.xsd
+        http://cxf.apache.org/core http://cxf.apache.org/schemas/core.xsd
+        http://cxf.apache.org/jaxws http://cxf.apache.org/schemas/jaxws.xsd
+        http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-4.0.xsd
+        http://dnetlib.eu/springbeans/template http://dnetlib.eu/springbeans/template.xsd"
+	default-autowire="no">
+	
+	<bean id="validatorAdminAPI" class="eu.dnetlib.validator.admin.api.impls.ValidatorAdminApiImpl" scope="singleton" init-method="start">
+		<property name="jobsDao" ref="jobsDao" />
+		<property name="rulesetsDao" ref="rulesetsDao" />
+		<property name="rulesDao" ref="rulesDao" />
+		<property name="usersDao" ref="usersDao" />	
+		<property name="masterAdmins" value="${services.validator.admins.master}" />
+		<property name="secondaryAdmins" value="${services.validator.admins.secondary}" />
+		<property name="emailer" ref="emailer" />
+		<property name="emailBuilder" ref="emailBuilder" />
+		<property name="registrationsReportEmail" value="${services.validator.registrationsReport.email}" />
+	</bean>
+	
+	<bean id ="emailBuilder" class="eu.dnetlib.validator.admin.api.impls.EmailBuilder" init-method="init" scope="prototype" />
+	
+</beans>
\ No newline at end of file
Index: modules/uoa-validator-admin/trunk/src/main/resources/eu/dnetlib/validator/admin/api/error_messages.txt
===================================================================
--- modules/uoa-validator-admin/trunk/src/main/resources/eu/dnetlib/validator/admin/api/error_messages.txt	(nonexistent)
+++ modules/uoa-validator-admin/trunk/src/main/resources/eu/dnetlib/validator/admin/api/error_messages.txt	(revision 47450)
@@ -0,0 +1,28 @@
+error.parametersMissing.ruleId=Rule id must be specified in the parameters given
+error.parametersMissing.jobId=Job id must be specified in the parameters given
+error.badParameter.idNotNumerical=The id was not numerical
+error.badParameter.unknownType=The type specified is incorrect
+rules.name.error.message1=A value must be defined for the field name
+rules.description.error.message1=A value must be defined for the field description
+rules.type.error.message1=A value must be defined for the field type
+rules.mandatory.error.message1=A value must be defined for the field mandatory
+rules.success.error.message1=A value must be defined for the field success
+rules.success.error.message2=First character for success must be one of =, > or <
+rules.success.error.message3=Field success must contain only numerical characters after the first character
+rules.weight.error.message1=Value of field weight must be numerical
+rules.provider_information.error.message1=A value must be specified for the provider information field
+rules.job_type.error.message1=Job type must be one of the available types
+rules.job_type.error.message2=A job type must be specified for this rule
+cardinality_rule.greater_than.error.message1=Value of field 'greater than' must be numerical
+cardinality_rule.less_than.error.message2=Less and Greater cannot be both without value
+cardinality_rule.less_than.error.message1=Value of field 'less than' must be numerical
+NotConfusedFields_Rule.field1.error.message1=Fields 'field1' and 'field2' must both have a value
+NotConfusedFields_Rule.field1.error.message2=Fields 'field1' and 'field2' must have a different value
+RegularExpression_Rule.regular_expression.error.message1=Field 'regular expression' must have a value
+RetrievableResource_Rule.max_depth.error.message1=Field 'max_depth' must have a numerical value
+Vocabulary_Rule.words.error.message1=A value must be defined for the 'words' field
+OAI_Content_Job.records.error.message1=Field 'records' cannot be empty
+OAI_Content_Job.records.error.message2=At least one record must be used for the validation
+OAI_Content_Job.records.error.message3=Value of field 'records' must be numerical
+OAI_Content_Job.random.error.message1=Value of field 'random' must be boolean (true or false)
+OAI_Content_Job.base_url.error.message1=Value of field 'base url' doesn't seem to be a valid url adress
\ No newline at end of file
Index: modules/uoa-validator-admin/trunk/src/main/resources/web-texts.properties
===================================================================
--- modules/uoa-validator-admin/trunk/src/main/resources/web-texts.properties	(nonexistent)
+++ modules/uoa-validator-admin/trunk/src/main/resources/web-texts.properties	(revision 47450)
@@ -0,0 +1,227 @@
+site.title = Validator Admin Panel
+site.slogan = Tools for validator administration
+
+general.unblock = Please make sure that you can accept mails from
+
+menu.home = Home
+menu.register = Join OpenAIRE
+menu.validate = Test Compatibility
+menu.account = My Account
+menu.about = Help
+menu.account.login = Sign In
+menu.account.registration.title = New User?
+menu.account.registration = Register Now!
+menu.account.logout = Logout
+menu.account.edit = My Account | 
+menu.about.feedback = Send Feedback
+menu.about.faq = FAQ
+menu.about.help = Help Guides
+menu.admin = Admin Panel
+
+homepage.welcome = Welcome to Validator Administration Panel!
+instructions.welcome = How to Join OpenAIRE
+instructions.message = <div class="entry"> <ol> <li> <b>Do you wish your repository or journal to be a part of OpenAIRE?</b> <ul> <li>If you are a new user, start by <a href="go2login.action">creating an account</a>.<br> If you have previously registered in the <a href="http://www.openaire.eu" target="_blank">main OpenAIRE portal</a>, you can use the same account. </li> </ul> <br> </li> <li> <b>Register your repository in <a class="external" href="http://www.opendoar.org/" target="_blank">OpenDOAR</a></b> <i>(this step does not apply for journals)</i> <ul> <li>OpenDOAR is an authoritative worldwide directory of academic open access repositories.</li> </ul> </li> <br> <li> <b>Make your repository/journal OpenAIRE compliant by implementing the <a href="http://guidelines.openaire.eu" class="external" target="_blank" >OpenAIRE Guidelines</a> </b> <ul> <li>If your repository/journal currently has no OpenAIRE records, you will need to create a test record as proof of correct implementation of the guidelines.</li> <li>Create an openaire set and insert your OpenAIRE records in it.</li> <li>If you used a test record, you will need to keep it until your repository/journal is successfully added as OpenAIRE compliant (step 5). Then you can safely delete it.</li> <li>You can find an example of an OpenAIRE compliant record <a href="jsps/manuals/example_record.txt" target="_blank">here</a>.</li> </ul> </li> <br> <li> <b>Test Compatibility</b> <ul> <li>After you have made some progress in implementing the guidelines you should <a href="populateRules.action">run a Compatibility test</a>.</li> <li>Enter the OAI-PMH base URL of your repository/journal and choose to test your repository against the OpenAIRE rule set. Aim for a score of 100, which will be sufficient to allow your repository to join OpenAIRE.</li> <li>After running the test you can <a href="prepareJobBrowsing.action">browse the results</a>. Please note that the results are updated periodically, and the whole test might take some time to finish.</li> </ul> </li> <br> <li> <b>Join OpenAIRE</b> <ul> <li>Now your repository/journal is ready to Join OpenAIRE!</li> <li><i>If you want to add a <b>literature repository</b></i>, click <a href="populateDoarList.action?mode=opendoar" target="_blank">here</a> and locate your repository. Add and correct any details in the form and click submit.<br> <i>If you want to add a <b>data repository</b></i>, click <a href="populateDoarList.action?mode=re3data" target="_blank">here</a> and locate your repository. Add and correct any details in the form and click submit.<br><i>If you want to add a <b>journal</b></i>, click <a href="prepareRepoRegistration.action?mode=journal" target="_blank">here</a>, fill in the form, and click submit.<br> <i>If you want to add an <b>aggregator</b></i>, click <a href="prepareRepoRegistration.action?mode=aggregator" target="_blank">here</a>, fill in the form, and click submit.</li> <li>After a short compatibility test against the OpenAIRE rule set, your repository will be ready to join OpenAIRE.</li> <li>An email will be sent to the repository administrator to confirm this request. Please make sure you have contacted them before registering.</li> <li>If the compatibility test does not succeed, you will be unable to join OpenAIRE until you correct all the errors that are found. Then you must re-submit your request (step 5).</li> </ul> </li> </ol> <p> For more information check the <a href="https://www.openaire.eu/support/faq#moofaqCat-19" target="_blank">FAQ</a> and our detailed <a href="jsps/manuals/user-manual.pdf" target="_blank">help guide</a>.<br> If you need further assistance please contact us through the <a href="https://www.openaire.eu/support/helpdesk" target="blank" class="help"> OpenAIRE Helpdesk</a>. </p><p><i>The validator is a customizable tool that may be installed and operated in various aggregating environments. <br/><a href="mailto:natalia@di.uoa.gr" class="icon-mail">Click here</a> to contact us and receive more information.</i></p> </div>
+homepage.admin.message = You have logged-in using an administrator email. For information on how to create new rules, new rule-sets, and for the various other functionalities, please refer to the <a href="jsps/manuals/administrator-manual.pdf">Administrator Manual</a>.
+homepage.message = You can view rules, rule-sets, job statistics and request changes to rules/rulesets.
+
+
+registration.title = User Registration
+registration.email = E-mail
+registration.password = Password
+registration.repassword = Re-enter password
+registration.successful = <span>An activation e-mail has been sent to the e-mail address you specified. Please follow the link included in that e-mail to activate your account.</span>
+registration.mail.subject = OpenAIRE Account Activation
+registration.mail.message = Please follow this link to activate your account
+registration.okAccountActivation = Account activation was successful! You can now log-in using your account details.
+registration.okAccountAlreadyActivation = Your account is already activated! You can log-in using your account details.
+registration.description = Register to use the OpenAIRE repository manager services
+registration.rememberme = Remember me
+registration.ldap.message = Your email address will be used for signing in the validator service.<br/>For the rest of the OpenAIRE services available through the openAIRE portal you will have to sign in using your username.
+registration.username = Username
+registration.username_email = Username/Email
+registration.firstName = First Name
+registration.lastName = Last Name
+registration.institution = Institution
+
+
+info.title = Information
+
+login.title = User Login
+login.forgotpassword = Forgot your password?
+login.notActivated = Your account has not been activated. Please check your mailbox again and follow the instructions found in the activation email.
+login.incorrectCreds = The credentials you entered are incorrect
+login.userNotExists = The username you specified doesn't have an associated account. You should consider registering it first.
+login.description = If you have an account
+login.overview = This service uses the same sign-in mechanism as the OpenAIRE portal so you can use the same credentials.
+
+forgotPassword.title = Reset Password
+forgotPassword.message = An e-mail will be sent to this address. Please follow the instructions found inside to reset your password.
+forgotPassword.mail.Subject = OpenAIRE Reset Password Request
+forgotPassword.mail.Body1 = To complete your password reset please follow this link
+forgotPassword.mail.Body2 = Security Code
+
+resetPassword.securityCode = Security Code
+resetPassword.securityCode.message = Enter the security code sent to you through mail.
+resetPassword.wrongSecurityCode = Security Code is incorrect
+resetPassword.success = You have successfully changed your password
+
+corneeded.title = Errors Found
+corneeded.back = Please use the "back" button of your browser to correct these errors
+
+manageJobs.deleteJobs.title = Delete Jobs
+manageJobs.deleteJobs.success = jobs deleted successfully
+manageJobs.deleteJobs.deleteOld = Delete jobs 
+manageJobs.deleteJobs.whatToDelete = What to delete
+
+manageJobs.sendReports.title = Send Registrations Report
+manageJobs.sendReports.selectDateFrom = Date from
+manageJobs.sendReports.selectDateTo = Date to
+manageJobs.sendReports.selectMonth = Select Month
+manageJobs.sendReports.selectYear = Select Year
+manageJobs.sendReports.success = Registrations Report sent successfully
+
+chooseRuleCategory.title = Choose Rule Category
+
+chooseRuleForEdit.title = Choose Rule
+chooseRuleForEdit.label = Choose Rule to Edit
+chooseRuleForEdit.label2 = Choose Rule to View
+chooseRuleForClone.label = Choose Rule to Clone
+
+addRule.title = Add Rule
+addRule.success = New rule has been added successfully
+addRule.uploadFile = Upload a File
+
+deleteRule.title = Delete Rule
+deleteRule.label = Choose Rule to Delete
+deleteRule.success = Rule has been deleted
+
+home.title = Homepage
+home.login = Sign In
+home.register = Register
+home.browseJobs = Browse Compatibility Test Results
+
+home.manageRules = Rules
+home.manageRules.addRule = Add New Rule
+home.manageRules.editRule = Edit Rule
+home.manageRules.cloneRule = Clone Rule
+home.manageRules.deleteRule = Delete Rule
+home.manageRules.viewRule = View Rule
+
+home.manageRulesets = RuleSets
+home.manageRulesets.createRuleSet = Create RuleSet
+home.manageRulesets.editRuleSet = Edit RuleSet
+home.manageRulesets.deleteRuleSet = Delete RuleSet
+home.manageRulesets.viewRuleSet = View RuleSet
+
+home.manageJobs = Jobs
+home.manageJobs.deleteJobs = Delete Jobs
+home.manageJobs.sendReport = Send Report
+home.manageJobs.viewStats = View Statistics
+
+home.manageUsers = Users
+home.manageUsers.addUser = Add User
+home.manageUsers.editUser = Edit User
+home.manageUsers.makeAdmin = Make Admin
+
+home.logout = Logout
+
+
+editRule.title = Edit Rule
+editRule.title2 = View Rule
+editRule.label = Choose Rule to Edit
+editRule.success = The rule was edited successfully
+
+editUser.title = Edit your account details
+editUser.fname = First Name
+editUser.lname = Last Name
+editUser.inst = Institution
+editUser.success = Your profile has been successfully updated
+
+createRuleSet.title = Create/Edit Rule Set
+createRuleSet.title2 = View Rule Set
+createRuleSet.name = Name
+createRuleSet.shortName = Short Name
+createRuleSet.visibility = Visibility
+createRuleSet.guidelinesAcronym = Guidelines Acronym
+createRuleSet.description = Description
+createRuleSet.rulesContent = Choose Content Rules
+createRuleSet.rulesUsage = Choose Usage Rules
+
+createRuleSet.success = The Set has been created successfully!
+createRuleSets.atLeastOneRule = You must select at least one rule to be added in this set
+
+chooseRuleSet.title = Choose Rule Set
+chooseRuleSet.label = Choose Rule Set
+
+deleteRuleSet.title = Delete Rule Set
+deleteRuleSet.success = Rule Set has been deleted successfully
+
+jobSummary.title = Test Summary
+jobSummary.successes = # Records
+jobSummary.errors = Success
+
+sidebar.toolbar = Toolbar
+sidebar.homepage = Homepage
+
+ruleSetInfo.name = Name
+ruleSetInfo.description = Description
+ruleSetInfo.jobType = Available in tests of type: 
+ruleSetInfo.message = Here you can find information on the rules contained in the chosen rule set. <div class="note"><h3 style="margin-left: -11px;">Definitions</h3><ul style="margin-left: -50px;"><li> Mandatory (M) = the field must always be present in the metadata record. An empty element is not allowed.</li> <li>Mandatory when applicable (MA) = when the value of the field can be obtained it must be present in the metadata record.</li> <li> Recommended (R) = the use of the field is recommended.</li> <li>Optional (O) = it is not important whether the element is used or not.</li></ul></div>
+ruleSetInfo.title = Rule Set Information
+ruleSetInfo.DRIVER = The DRIVER rule set checks the compatibility of your repository with the <a href="http://www.driver-support.eu/documents/DRIVER_Guidelines_v2_Final_2008-11-13.pdf">DRIVER guidelines</a>
+ruleSetInfo.openAIRE = The openAIRE rule set checks the compatibility of your repository with the <a href="http://www.openaire.eu/en/about-openaire/news-a-events/184-openaire-releases-version-10-of-the-openaire-guidelines.html">openAIRE guidelines</a>
+
+feedback.title = Send us your feedback
+feedback.message = Message
+feedback.reason = Reason
+feedback.loggedin = Please note that you must be logged-in to send a message using this form.
+feedback.success = Thank you for your message!
+
+help = Help
+help.addOaiContent.title = Adding an OAI-Content Validation
+help.addOaiContent.message = To add a new validation: <br>1. Select the base URL of the repository you want to validate. Please note that you need to have registered the repository first, and the administrator must have activated its registration.<br>2. Insert the number of records you want to validate.<br>3. Choose if you want the records to be selected randomly from those found in the repository, or in the order that the repository lists them.<br>4. If you want to validate only the records belonging to a particular set, insert the name of the set.<br>5. Either choose a predefined rule-set or manually choose the rules you want to apply.<br><br>You can view a rule set or an individual rule by using the toolbar on the left. For more information please refer to the <a href="jsps/manuals/user-manual.pdf">User Manual</a>, in the section <i>OAI Content Validation</i>.
+help.addOaiUsage.title = Adding an OAI-Usage Validation
+help.addOaiUsage.message = To add a new validation: <br>1. Select the base URL of the repository you want to validate. Please note that you need to have registered the repository first, and the administrator must have activated its registration.<br>2. Either choose a predefined rule-set or manually choose the rules you want to apply.<br><br>You can view a rule set or an individual rule by using the toolbar on the left. For more information please refer to the <a href="jsps/manuals/user-manual.pdf">User Manual</a>, in the section <i>OAI Usage Validation</i>.
+help.addRule.title = Adding a New Rule
+help.addRule.message =
+help.browseJobs.title = Browsing Validations
+help.browseJobs.message = Here you can browse all the past and current validations you have submitted. Please note that the results of an ongoing validation are not update in real-time, but only after the validation has finished its execution completely. To see a summary of the validation click on <i>Show Summary</i>. If you want more details about each task that was executed, you may click on <i>Show Details</i> though this is generally not neccessary. For more information please refer to the <a href="jsps/manuals/user-manual.pdf">User Manual</a>, in the section <i>Browsing Validations</i>.
+help.chooseJobCategory.title = Choosing a Validation Category
+help.chooseJobCategory.message = 
+help.chooseRuleCategory.title = Choosing a Rule Category
+help.chooseRuleCategory.message =
+help.chooseRuleCategory.type.title = Rule Type
+help.chooseRuleCategory.type.message =
+help.chooseRuleForEdit.title = Choosing a Rule
+help.chooseRuleForEdit.message =
+help.chooseRuleSet.title = Choosing a Rule Set
+help.chooseRuleSet.message =
+help.chooseRuleSetForDeletion.title = Choosing a Rule Set
+help.chooseRuleSetForDeletion.message =
+help.createRuleSet.title = Viewing a Rule Set
+help.createRuleSet.message = You can view the <i>name</i> of the Rule Set, as well as the rules that it contains (the ones with a blue background).
+help.deleteRule.title = Deleting a Rule
+help.deleteRule.message =
+help.editRule.title = Viewing a Rule
+help.editRule.message = When you view a rule you will be presented with many fields describing its functionality. For general purposes, the fields you must focus on are <i>name</i> and <i>description</i>. If you would like to find out what the rest of the fields mean, you must refer to the <a href="jsps/manuals/administrator-manual.pdf">administrator manual</a>.
+help.jobDetails.title = Viewing the Details of a Validation
+help.jobDetails.message = Here you can review details about each task of a validation. Each row refers to a certain task and you can see on which rule was used, which record it was applied on and if it was successful or not. Please note that retrieving the details of a validation can be a time-consuming process for large validations, and viewing a validation summary is generally sufficient. For more information please refer to the <a href="jsps/manuals/user-manual.pdf">User Manual</a>, in the section <i>Viewing Validation Details</i>.
+help.jobSummary.title = Viewing the Summary of a Validation
+help.jobSummary.message = Here you can review a summary of the validation results. Each row refers to a certain validation rule and you can see how many of the records were successfully validated. For the records that did not validate successfully, links are provided to their oai-dc metadata representation. For more information please refer to the <a href="jsps/manuals/user-manual.pdf">User Manual</a>, in the section <i>Viewing a Validation Summary</i>. 
+help.login.title = Logging in
+help.login.message =
+help.registration.title = Registering
+help.registration.message =
+help.repoRegistration.title = Registering a Repository
+help.repoRegistration.message = Before you can start a validation, you have to register the repository you want to validate (unless it is already registered by someone else). To do this, you must fill in it\''s base URL. Automatically an e-mail will be send to the repository\''s administrator containing an activation link. As soon as the administrator activates the registration, you will be able to start validations for this repository.
+help.resetPassword.title = Reseting your Password
+help.resetPassword.message =
+help.generic = <p>For help adding your repository/journal in OpenAIRE, please follow <a href="help.action">these instructions</a></p><p>For more advanced uses, you can find detailed information and step-by-step guides in the <a class="download" href="jsps/manuals/user-manual.pdf">User Manual</a></p><p>&nbsp;</p><p><i>The validator is a customizable tool that may be installed and operated in various aggregating environments. <br/><a href="mailto:natalia@di.uoa.gr" class="icon-mail">Click here</a> to contact us and receive more information.</i></p>
+help.newvalidation =<p><h3>Select repository/journal</h3> Select from the list, or enter the base OAI URL of the repository/journal. The repository''s/journal''s published sets are exposed in a later stage and you may select one for the compatibility tests.  </p> <p><h3>Select guidelines</h3> You may apply two types of compatibility tests on your repository: <ul style="text-aling:left"> <li>Content: specific to the content/format of the dc fields</li> <li>Usage: specific to the implementation of OAI-PMH</li> </ul> You may select from a predifined set of rules (OpenAIRE for Literature Repositories, OpenAIRE for Data Archives) or customize them according to your needs.  </p> <p><h3>Select parameters</h3> You may define an upper limit on the # of records tested. This is highly recommended for first time users, or when re-checking after the implementation of automated changes.  </p> <p> Select one of the repository''s/journal''s exposed sets.  </p><p> You may also group your results by a specific field. This is quite useful when validating an aggregator and you know in advance which is the field that distinguished among data sources. </p><p>For further assistance please contact the <a href="https://www.openaire.eu/support/helpdesk" target="_blank" class="external">OpenAIRE helpdesk</a>.</p>
+help.browsevalidations = <div class="download"><a href="jsps/manuals/user-manual.pdf" target="blank">Instructions manual</a></div> <p> <strong>TYPE:</strong> Content or Usage<br/> <strong>STATUS: </strong>Working / Stopped / Finished<br/> <strong>SCORE: </strong> <a href="score.action">click here</a> to find more<br/> <strong>SUBMITTED: </strong>time of submission<br/> <strong>DURATION: </strong>time test took to finish<br/> <strong>REPOSITORY: </strong>tested repository/journal<br/> <strong>GUIDELINES: </strong>guidelines used for testing<br/> <strong>REPORTS: </strong>comprehensive summary of the compatibility test results<br/> </p> <p>For further assistance please contact the <a href="https://www.openaire.eu/support/helpdesk" target="_blank" class="external">OpenAIRE helpdesk</a>.</p>
+help.jobsummary= <div class="download"><a href="jsps/manuals/user-manual.pdf" target="_blank">Instructions manual</a></div> <p>For further assistance please contact the <a href="https://www.openaire.eu/support/helpdesk" target="_blank" class="external">OpenAIRE helpdesk</a>.</p>
+help.registerRepo =  <p>Use the form on the right to add your repository or journal in OpenAIRE. If you want to find more information about this process <a href="jsps/manuals/user-manual.pdf" target="_blank">click here</a>.</p> <div class="alert">The official repository/journal administrator (his/her email address being retrieved from the OAI-PMH verb <b>Identify</b>) will be contacted and informed about registration request. So please make sure that you are either this person or have access to the email address, or that you have notified them.</div> For any problems or questions please contact the <a href="https://www.openaire.eu/support/helpdesk" target="_blank" class="external">OpenAIRE helpdesk</a>.
+help.chooseRepoForEdit = <p>You have access to edit one of the following repositories/journals listed on the right.</p> <p>For any problems or questions please contact the <a href="https://www.openaire.eu/support/helpdesk" target="_blank" class="external">OpenAIRE helpdesk</a>.</p>
+help.editRepoDnet = <p>Use the form on the right to update the repository/journal information.</p> <p>For any problems or questions please contact the <a href="https://www.openaire.eu/support/helpdesk" target="_blank" class="external">OpenAIRE helpdesk</a>.</p>
+help.admin=<div class="download"> For more information read our detailed <a href="jsps/manuals/administrator-manual.pdf" target="_blank">help guide</a>.</div>
+footer.text = &copy; 2010&nbsp;-&nbsp;2015 OpenAIRE
\ No newline at end of file
Index: modules/uoa-validator-admin/trunk/src/main/resources/struts.properties
===================================================================
--- modules/uoa-validator-admin/trunk/src/main/resources/struts.properties	(nonexistent)
+++ modules/uoa-validator-admin/trunk/src/main/resources/struts.properties	(revision 47450)
@@ -0,0 +1,6 @@
+struts.custom.i18n.resources=web-texts,web-error-texts,backend-errors,field-infos
+struts.ognl.allowStaticMethodAccess = true
+
+struts.xwork.chaining.copyErrors = true
+struts.xwork.chaining.copyFieldErrors = true
+struts.xwork.chaining.copyMessages = true
\ No newline at end of file
Index: modules/uoa-validator-admin/trunk/src/main/java/eu/dnetlib/validator/admin/api/ValidatorAdminException.java
===================================================================
--- modules/uoa-validator-admin/trunk/src/main/java/eu/dnetlib/validator/admin/api/ValidatorAdminException.java	(nonexistent)
+++ modules/uoa-validator-admin/trunk/src/main/java/eu/dnetlib/validator/admin/api/ValidatorAdminException.java	(revision 47450)
@@ -0,0 +1,29 @@
+package eu.dnetlib.validator.admin.api;
+
+public class ValidatorAdminException extends Exception {
+
+	/**
+	 * 
+	 * @author Nikon Gasparis
+	 *
+	 */
+	
+	private static final long serialVersionUID = -80175916822821147L;
+
+	public ValidatorAdminException() {
+		super();
+	}
+	
+	public  ValidatorAdminException(String message) {
+		super(message);
+	}
+
+	public  ValidatorAdminException(String message, Throwable cause) {
+		super(message, cause);
+	}
+
+	public  ValidatorAdminException(Throwable cause) {
+		super(cause);
+	}
+}
+
Index: modules/uoa-validator-admin/trunk/src/main/webapp/jsps/images/logo-referencia-openaire.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/trunk/src/main/webapp/jsps/images/logo-referencia-openaire.png
===================================================================
--- modules/uoa-validator-admin/trunk/src/main/webapp/jsps/images/logo-referencia-openaire.png	(nonexistent)
+++ modules/uoa-validator-admin/trunk/src/main/webapp/jsps/images/logo-referencia-openaire.png	(revision 47450)

Property changes on: modules/uoa-validator-admin/trunk/src/main/webapp/jsps/images/logo-referencia-openaire.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/trunk/src/main/webapp/jsps/images/button_arrow_right.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/trunk/src/main/webapp/jsps/images/button_arrow_right.png
===================================================================
--- modules/uoa-validator-admin/trunk/src/main/webapp/jsps/images/button_arrow_right.png	(nonexistent)
+++ modules/uoa-validator-admin/trunk/src/main/webapp/jsps/images/button_arrow_right.png	(revision 47450)

Property changes on: modules/uoa-validator-admin/trunk/src/main/webapp/jsps/images/button_arrow_right.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/trunk/src/main/java/eu/dnetlib/validator/admin/actions/login/AdminInterceptor.java
===================================================================
--- modules/uoa-validator-admin/trunk/src/main/java/eu/dnetlib/validator/admin/actions/login/AdminInterceptor.java	(nonexistent)
+++ modules/uoa-validator-admin/trunk/src/main/java/eu/dnetlib/validator/admin/actions/login/AdminInterceptor.java	(revision 47450)
@@ -0,0 +1,58 @@
+package eu.dnetlib.validator.admin.actions.login;
+
+import java.util.Map;
+
+import com.opensymphony.xwork2.Action;
+import com.opensymphony.xwork2.ActionInvocation;
+import com.opensymphony.xwork2.interceptor.Interceptor;
+
+import eu.dnetlib.validator.admin.api.UserApi;
+import eu.dnetlib.validator.admin.api.ValidatorAdminAPI;
+import eu.dnetlib.validator.admin.config.Constants;
+
+public class AdminInterceptor implements Interceptor {
+
+	private static final long serialVersionUID = -172948943490485824L;
+	private UserApi userAPI = null;
+	private ValidatorAdminAPI validatorAdminAPI = null;
+
+//	private Logger logger = Logger.getLogger(AdminInterceptor.class);
+	
+	@Override
+	public void destroy() {
+
+	}
+
+	@Override
+	public void init() {
+
+	}
+
+	@Override
+	public String intercept(ActionInvocation actionInvocation) throws Exception {
+		Map<String, Object> session = actionInvocation.getInvocationContext().getSession();
+		String auth = (String) session.get(Constants.loggedInField);
+
+		if (this.getUserAPI().isAdmin(auth) || this.getValidatorAdminAPI().userIsMasterAdmin(auth) || this.getValidatorAdminAPI().userIsSecondaryAdmin(auth))
+			return actionInvocation.invoke();
+		else
+			return Action.LOGIN;
+	}
+
+	public UserApi getUserAPI() {
+		return userAPI;
+	}
+
+	public void setUserAPI(UserApi userAPI) {
+		this.userAPI = userAPI;
+	}
+
+	public ValidatorAdminAPI getValidatorAdminAPI() {
+		return validatorAdminAPI;
+	}
+
+	public void setValidatorAdminAPI(ValidatorAdminAPI validatorAdminAPI) {
+		this.validatorAdminAPI = validatorAdminAPI;
+	}
+	
+}
Index: modules/uoa-validator-admin/trunk/src/main/java/eu/dnetlib/validator/admin/actions/login/SendPassword.java
===================================================================
--- modules/uoa-validator-admin/trunk/src/main/java/eu/dnetlib/validator/admin/actions/login/SendPassword.java	(nonexistent)
+++ modules/uoa-validator-admin/trunk/src/main/java/eu/dnetlib/validator/admin/actions/login/SendPassword.java	(revision 47450)
@@ -0,0 +1,59 @@
+package eu.dnetlib.validator.admin.actions.login;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.apache.log4j.Logger;
+
+import com.opensymphony.xwork2.Action;
+
+import eu.dnetlib.validator.admin.actions.BaseValidatorAction;
+
+public class SendPassword extends BaseValidatorAction {
+
+	private static final long serialVersionUID = 7540821478579531671L;
+	private Logger logger = Logger.getLogger(SendPassword.class);
+	
+	private String email;
+
+	public String execute() {
+		this.clearErrorsAndMessages();
+		try {
+			logger.debug("sending password to user " + email);
+			List<String> to = new ArrayList<String>();
+			to.add(this.getEmail());
+			String securityCode = this.getUserAPI().prepareResetPassword(this.getEmail());
+			this.getEmailer().sendMail(to, this.getText("forgotPassword.mail.Subject"), this.getText("forgotPassword.mail.Body1") + ": " + this.getValBaseUrl() + "/resetPassword.action?securityCode=" + securityCode + "\n\n" + this.getText("forgotPassword.mail.Body2") + ": " + securityCode, false, null);
+			this.addActionMessage(this.getText("forgotPassword.message"));
+			return Action.SUCCESS;
+		} catch (Exception e) {
+			logger.error("error sending password to user " + email, e);
+			this.addActionError(this.getText("generic.error"));
+			return "exception";
+		}
+	}
+
+	public void validate() {
+		this.clearErrors();
+		try {
+			if (!this.getUserAPI().userExists(this.getEmail())) {
+				this.addActionError(this.getText("login.userNotExists"));
+				return;
+			}
+//			if (!this.getUserAPI().isUserActivated(this.getEmail())) {
+//				this.addActionError(this.getText("login.notActivated"));
+//				return;
+//			}
+		} catch (Exception e) {
+			this.addActionError(e.toString());
+		}
+	}
+
+	public String getEmail() {
+		return email;
+	}
+
+	public void setEmail(String email) {
+		this.email = email;
+	}
+}
Index: modules/uoa-validator-admin/trunk/src/main/java/eu/dnetlib/validator/admin/actions/login/Login.java
===================================================================
--- modules/uoa-validator-admin/trunk/src/main/java/eu/dnetlib/validator/admin/actions/login/Login.java	(nonexistent)
+++ modules/uoa-validator-admin/trunk/src/main/java/eu/dnetlib/validator/admin/actions/login/Login.java	(revision 47450)
@@ -0,0 +1,156 @@
+package eu.dnetlib.validator.admin.actions.login;
+
+import java.util.Map;
+import java.util.regex.Pattern;
+
+import javax.servlet.http.HttpServletResponse;
+
+import org.apache.log4j.Logger;
+import org.apache.struts2.interceptor.ServletResponseAware;
+import org.apache.struts2.interceptor.SessionAware;
+
+import com.opensymphony.xwork2.Action;
+
+import eu.dnetlib.validator.admin.actions.BaseValidatorAction;
+import eu.dnetlib.validator.admin.config.Constants;
+
+public class Login extends BaseValidatorAction implements SessionAware, ServletResponseAware {
+
+	private static final long serialVersionUID = -6021271413570776229L;
+	private String email_username, password_login;
+	private boolean rememberme;
+	private Map<String, Object> session;
+	private HttpServletResponse response;
+
+	private String url;
+	private String params;
+
+	private transient Logger logger = Logger.getLogger(Login.class);
+
+	public String execute() {
+		this.clearErrorsAndMessages();
+		try {
+			if(this.email_username == null || this.email_username.trim().equals(""))
+				return "login";	
+			logger.debug("logging-in user " + this.getEmail());
+			session.put(Constants.loggedInField, this.getEmail());
+			session.put("email", this.getEmail());
+			if (this.getUserAPI().isAdmin(email_username) || this.getValidatorAdminAPI().userIsMasterAdmin(email_username))
+				session.put("isAdmin", "true");
+			if (this.getValidatorAdminAPI().userIsMasterAdmin(email_username))
+				session.put("isAdmin", "true");
+			if (this.getValidatorAdminAPI().userIsSecondaryAdmin(email_username))
+				session.put("isAdmin", "true");
+			this.addActionMessage("Logged-in successfully");
+
+			if (url != null && (url.equals("/go2login") || url.equals("/Login") || url.equals("/portalLogin"))) {
+				url = "";
+				return "welcome";
+			}
+
+			return Action.SUCCESS;
+		} catch (Exception e) {
+			logger.error("error logging-in user " + this.getEmail(), e);
+			this.addActionError(this.getText("generic.error"));
+			reportException(e);
+			return "exception";
+		}
+	}
+
+	public void validate() {
+		this.clearErrors();
+		try {
+			if(this.email_username == null || this.email_username.trim().equals(""))
+				return;
+			
+			
+			String username = this.email_username;
+
+			Pattern rfc2822 = Pattern.compile("^[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?$");
+			if (!rfc2822.matcher(this.getEmail().trim().toLowerCase()).matches()) {
+				logger.debug("user logged in using username");
+				this.email_username = this.getUserAPI().getEmailFromUsername(this.getEmail());
+			}
+
+			if (this.email_username == null) {
+				this.email_username = username;
+				this.addActionError(this.getText("login.userNotExists"));
+				return;
+			}
+
+			if (!this.getUserAPI().userExists(this.getEmail())) {
+				this.email_username = username;
+				this.addActionError(this.getText("login.userNotExists"));
+				return;
+			}
+			if (!this.getUserAPI().isUserActivated(this.getEmail())) {
+				this.email_username = username;
+				this.addActionError(this.getText("login.notActivated"));
+				return;
+			}
+			if (!this.getUserAPI().correctCreds(this.getEmail(), this.getPassword_login())) {
+				this.email_username = username;
+				this.addActionError(this.getText("login.incorrectCreds"));
+				return;
+			}
+		} catch (Exception e) {
+			logger.error("", e);
+			this.addActionError(e.toString());
+			reportException(e);
+		}
+	}
+
+
+	public String getEmail() {
+		return email_username;
+	}
+
+	public void setEmail_username(String email_username) {
+		this.email_username = email_username;
+	}
+
+	public String getPassword_login() {
+		return password_login;
+	}
+
+	public void setPassword_login(String password_login) {
+		this.password_login = password_login;
+	}
+
+	@Override
+	public void setSession(Map<String, Object> session) {
+		this.session = session;
+	}
+
+	public void setRememberme(boolean rememberme) {
+		this.rememberme = rememberme;
+	}
+
+	public boolean isRememberme() {
+		return rememberme;
+	}
+
+	public void setServletResponse(HttpServletResponse response) {
+		this.response = response;
+	}
+
+	public HttpServletResponse getServletResponse() {
+		return response;
+	}
+
+	public String getUrl() {
+		return url;
+	}
+
+	public void setUrl(String url) {
+		this.url = url;
+	}
+
+	public String getParams() {
+		return params;
+	}
+
+	public void setParams(String params) {
+		this.params = params;
+	}
+}
Index: modules/uoa-validator-admin/trunk/src/main/webapp/jsps/images/re3data.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/trunk/src/main/webapp/jsps/images/re3data.png
===================================================================
--- modules/uoa-validator-admin/trunk/src/main/webapp/jsps/images/re3data.png	(nonexistent)
+++ modules/uoa-validator-admin/trunk/src/main/webapp/jsps/images/re3data.png	(revision 47450)

Property changes on: modules/uoa-validator-admin/trunk/src/main/webapp/jsps/images/re3data.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/trunk/src/main/webapp/jsps/images/list_check.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/trunk/src/main/webapp/jsps/images/list_check.png
===================================================================
--- modules/uoa-validator-admin/trunk/src/main/webapp/jsps/images/list_check.png	(nonexistent)
+++ modules/uoa-validator-admin/trunk/src/main/webapp/jsps/images/list_check.png	(revision 47450)

Property changes on: modules/uoa-validator-admin/trunk/src/main/webapp/jsps/images/list_check.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/trunk/src/main/java/eu/dnetlib/validator/admin/actions/login/Logout.java
===================================================================
--- modules/uoa-validator-admin/trunk/src/main/java/eu/dnetlib/validator/admin/actions/login/Logout.java	(nonexistent)
+++ modules/uoa-validator-admin/trunk/src/main/java/eu/dnetlib/validator/admin/actions/login/Logout.java	(revision 47450)
@@ -0,0 +1,32 @@
+package eu.dnetlib.validator.admin.actions.login;
+
+import java.util.Map;
+
+import org.apache.struts2.interceptor.SessionAware;
+
+import com.opensymphony.xwork2.Action;
+
+import eu.dnetlib.validator.admin.actions.BaseValidatorAction;
+import eu.dnetlib.validator.admin.config.Constants;
+
+public class Logout extends BaseValidatorAction implements SessionAware {
+
+	private static final long serialVersionUID = -5304052800228900726L;
+	private Map<String, Object> session;
+
+	
+	public String execute() {
+		this.clearErrorsAndMessages();
+		session.remove(Constants.loggedInField);
+		session.remove("email");
+		session.remove("isAdmin");
+		this.addActionMessage("Logged-out successfully");
+		
+		return Action.SUCCESS;
+	}
+	
+	@Override
+	public void setSession(Map<String, Object> session) {
+		this.session = session;
+	}
+}
\ No newline at end of file
Index: modules/uoa-validator-admin/trunk/src/main/java/eu/dnetlib/validator/admin/actions/login/PortalLogin.java
===================================================================
--- modules/uoa-validator-admin/trunk/src/main/java/eu/dnetlib/validator/admin/actions/login/PortalLogin.java	(nonexistent)
+++ modules/uoa-validator-admin/trunk/src/main/java/eu/dnetlib/validator/admin/actions/login/PortalLogin.java	(revision 47450)
@@ -0,0 +1,207 @@
+package eu.dnetlib.validator.admin.actions.login;
+
+import java.util.Calendar;
+import java.util.Map;
+
+import javax.crypto.Mac;
+import javax.crypto.spec.SecretKeySpec;
+import javax.servlet.http.HttpServletRequest;
+
+import org.apache.commons.codec.binary.Base64;
+import org.apache.commons.codec.binary.Hex;
+import org.apache.log4j.Logger;
+import org.apache.struts2.interceptor.ServletRequestAware;
+import org.apache.struts2.interceptor.SessionAware;
+
+import com.opensymphony.xwork2.Action;
+
+import eu.dnetlib.validator.admin.actions.BaseValidatorAction;
+import eu.dnetlib.validator.admin.config.Constants;
+
+public class PortalLogin extends BaseValidatorAction implements ServletRequestAware, SessionAware {
+
+	private static final long serialVersionUID = -6312800103845446815L;
+	private transient Logger logger = Logger.getLogger(PortalLogin.class);
+
+	private HttpServletRequest request;
+	private Map<String, Object> session;
+
+	private String user, ip, valid, signature;
+	private String key;
+	private String email;
+
+	public void validate() {
+		this.clearErrors();
+		logger.debug("validating log-in from portal link " + user + ", " + ip + ", " + valid + ", " + signature);
+		if (user == null || ip == null || valid == null) {
+			this.addActionError(this.getText("login.manual"));
+			return;
+		}
+		if (user.trim().equals("") || ip.trim().equals("") || valid.trim().equals("")) {
+			this.addActionError(this.getText("login.manual"));
+			return;
+		}
+		long millisUntil = 0;
+		try {
+			millisUntil = Long.parseLong(valid);
+		} catch (Exception e) {
+			logger.error("", e);
+			this.addActionError(this.getText("login.manual"));
+			return;
+		}
+
+		try {
+			if (!signatureIsValid((user + ip + valid).trim(), signature.trim())) {
+				logger.debug("signature was not valid");
+				this.addActionError(this.getText("login.manual"));
+				return;
+			}
+		} catch (Exception e) {
+			logger.error("", e);
+			this.addActionError(this.getText("login.manual"));
+			return;
+		}
+
+		Calendar cal = Calendar.getInstance();
+		if (cal.getTime().getTime() > millisUntil) {
+			logger.debug("link has expired current-time: "+cal.getTime().getTime()+" link-time: "+millisUntil);
+			this.addActionError(this.getText("login.manual"));
+			return;
+		}
+
+		if (!ip.trim().equals(request.getRemoteAddr().trim())) {
+			logger.debug("ips are different "+ip+" "+request.getRemoteAddr());
+			this.addActionError(this.getText("login.manual"));
+			return;
+		}
+
+		try {
+//			if (isModeLdap())
+				this.email = this.getUserAPI().getEmailFromUsername(user);
+
+			if (this.email == null) {
+				this.email = "";
+				this.addActionError(this.getText("login.userNotExists"));
+				return;
+			}
+
+			if (!this.getUserAPI().userExists(this.getEmail())) {
+				this.email = "";
+				this.addActionError(this.getText("login.userNotExists"));
+				return;
+			}
+
+			if (!this.getUserAPI().isUserActivated(this.getEmail())) {
+				this.email = "";
+				this.addActionError(this.getText("login.notActivated"));
+				return;
+			}
+		} catch (Exception e) {
+			logger.error("", e);
+			this.addActionError(e.toString());
+		}
+	}
+
+	public String execute() {
+		this.clearErrorsAndMessages();
+		try {
+			logger.debug("logging-in from portal link " + user + ", " + ip + ", " + valid + ", " + signature);
+			session.put(Constants.loggedInField, this.getEmail());
+			session.put("email", this.getEmail());
+			if (this.getUserAPI().isAdmin(email))
+				session.put("isAdmin", "true");
+
+			this.addActionMessage("Logged-in successfully");
+
+			return Action.SUCCESS;
+		} catch (Exception e) {
+			logger.error("error logging-in from portal link " + user + ", " + ip + ", " + valid + ", " + signature, e);
+			this.addActionError(this.getText("generic.error"));
+			reportException(e);
+			return "exception";
+		}
+	}
+
+	public boolean signatureIsValid(String message, String signature) throws Exception {
+		byte[] encode = Hex.decodeHex(new String(Base64.decodeBase64(signature.getBytes())).toCharArray());
+
+		SecretKeySpec key = new SecretKeySpec(this.key.getBytes(), "HmacSHA1");
+		Mac mac = Mac.getInstance(key.getAlgorithm());
+
+		mac.init(key);
+
+		byte[] myEncode = mac.doFinal(message.getBytes());
+		
+		logger.debug("given encode: "+new String(encode)+" my-encode: "+new String(myEncode));
+
+		if (encode.length != myEncode.length)
+			return false;
+
+		for (int i = 0; i < encode.length; i++)
+			if (encode[i] != myEncode[i])
+				return false;
+		return true;
+	}
+
+	public void setServletRequest(HttpServletRequest request) {
+		this.request = request;
+	}
+
+	public HttpServletRequest getServletRequest() {
+		return request;
+	}
+
+	@Override
+	public void setSession(Map<String, Object> session) {
+		this.session = session;
+	}
+
+	public String getUser() {
+		return user;
+	}
+
+	public void setUser(String user) {
+		this.user = user;
+	}
+
+	public String getIp() {
+		return ip;
+	}
+
+	public void setIp(String ip) {
+		this.ip = ip;
+	}
+
+	public String getValid() {
+		return valid;
+	}
+
+	public void setValid(String valid) {
+		this.valid = valid;
+	}
+
+	public String getSignature() {
+		return signature;
+	}
+
+	public void setSignature(String signature) {
+		this.signature = signature;
+	}
+
+	public String getKey() {
+		return key;
+	}
+
+	public void setKey(String key) {
+		this.key = key;
+	}
+
+	public String getEmail() {
+		return email;
+	}
+
+	public void setEmail(String email) {
+		this.email = email;
+	}
+
+}
Index: modules/uoa-validator-admin/trunk/src/main/java/eu/dnetlib/validator/admin/actions/login/AuthenticationInterceptor.java
===================================================================
--- modules/uoa-validator-admin/trunk/src/main/java/eu/dnetlib/validator/admin/actions/login/AuthenticationInterceptor.java	(nonexistent)
+++ modules/uoa-validator-admin/trunk/src/main/java/eu/dnetlib/validator/admin/actions/login/AuthenticationInterceptor.java	(revision 47450)
@@ -0,0 +1,35 @@
+package eu.dnetlib.validator.admin.actions.login;
+
+import java.util.Map;
+
+import com.opensymphony.xwork2.Action;
+import com.opensymphony.xwork2.ActionInvocation;
+import com.opensymphony.xwork2.interceptor.Interceptor;
+
+import eu.dnetlib.validator.admin.config.Constants;
+
+public class AuthenticationInterceptor implements Interceptor {
+
+	private static final long serialVersionUID = 977098762082596481L;
+
+	@Override
+	public void destroy() {
+
+	}
+
+	@Override
+	public void init() {
+
+	}
+
+	@Override
+	public String intercept(ActionInvocation actionInvocation) throws Exception {
+		Map<String, Object> session = actionInvocation.getInvocationContext().getSession();
+		String auth = (String) session.get(Constants.loggedInField);
+
+		if (auth == null) {
+			return Action.LOGIN;
+		}
+		return actionInvocation.invoke();
+	}
+}
\ No newline at end of file
Index: modules/uoa-validator-admin/trunk/src/main/java/eu/dnetlib/validator/admin/actions/login/ForgotPasswordPage.java
===================================================================
--- modules/uoa-validator-admin/trunk/src/main/java/eu/dnetlib/validator/admin/actions/login/ForgotPasswordPage.java	(nonexistent)
+++ modules/uoa-validator-admin/trunk/src/main/java/eu/dnetlib/validator/admin/actions/login/ForgotPasswordPage.java	(revision 47450)
@@ -0,0 +1,8 @@
+package eu.dnetlib.validator.admin.actions.login;
+
+import eu.dnetlib.validator.admin.actions.BaseValidatorAction;
+
+@SuppressWarnings("serial")
+public class ForgotPasswordPage extends BaseValidatorAction{
+
+}
Index: modules/uoa-validator-admin/trunk/src/main/java/eu/dnetlib/validator/admin/actions/login/LoginPage.java
===================================================================
--- modules/uoa-validator-admin/trunk/src/main/java/eu/dnetlib/validator/admin/actions/login/LoginPage.java	(nonexistent)
+++ modules/uoa-validator-admin/trunk/src/main/java/eu/dnetlib/validator/admin/actions/login/LoginPage.java	(revision 47450)
@@ -0,0 +1,29 @@
+package eu.dnetlib.validator.admin.actions.login;
+
+import java.util.Map;
+
+import org.apache.struts2.interceptor.SessionAware;
+
+import eu.dnetlib.validator.admin.actions.BaseValidatorAction;
+
+@SuppressWarnings("serial")
+public class LoginPage extends BaseValidatorAction implements SessionAware{
+
+	@Override
+	public String execute() throws Exception {
+		this.clearErrorsAndMessages();
+		String email = (String) session.get("email");
+		
+		if ( email!=null && !email.trim().isEmpty() )
+			return INPUT;
+		
+		return SUCCESS;
+	}
+	
+	private Map<String, Object> session;
+	@Override
+	public void setSession(Map<String, Object> session) {
+		this.session = session;		
+	}
+
+}
Index: modules/uoa-validator-admin/trunk/src/main/resources/backend-errors.properties
===================================================================
--- modules/uoa-validator-admin/trunk/src/main/resources/backend-errors.properties	(nonexistent)
+++ modules/uoa-validator-admin/trunk/src/main/resources/backend-errors.properties	(revision 47450)
@@ -0,0 +1,29 @@
+error.parametersMissing.ruleId=Rule id must be specified in the parameters given
+error.parametersMissing.jobId=Job id must be specified in the parameters given
+error.badParameter.idNotNumerical=The id was not numerical
+error.badParameter.unknownType=The type specified is incorrect
+rules.name.error.message1=A value must be defined for the field name
+rules.description.error.message1=A value must be defined for the field description
+rules.type.error.message1=A value must be defined for the field type
+rules.mandatory.error.message1=A value must be defined for the field mandatory
+rules.success.error.message1=A value must be defined for the field success
+rules.success.error.message2=First character for success must be one of =, > or <
+rules.success.error.message3=Field success must contain only numerical characters after the first character
+rules.weight.error.message1=Value of field weight must be numerical
+rules.provider_information.error.message1=A value must be specified for the provider information field
+rules.job_type.error.message1=Job type must be one of the available types
+rules.job_type.error.message2=A job type must be specified for this rule
+cardinality_rule.greater_than.error.message1=Value of field 'greater than' must be numerical
+cardinality_rule.less_than.error.message2=Less and Greater cannot be both without value
+cardinality_rule.less_than.error.message1=Value of field 'less than' must be numerical
+NotConfusedFields_Rule.field1.error.message1=Fields 'field1' and 'field2' must both have a value
+NotConfusedFields_Rule.field1.error.message2=Fields 'field1' and 'field2' must have a different value
+RegularExpression_Rule.regular_expression.error.message1=Field 'regular expression' must have a value
+RetrievableResource_Rule.max_depth.error.message1=Field 'max_depth' must have a numerical value
+Vocabulary_Rule.words.error.message1=A value must be defined for the 'words' field
+OAI_Content_Job.records.error.message1=Field 'records' cannot be empty
+OAI_Content_Job.records.error.message2=At least one record must be used for the validation
+OAI_Content_Job.records.error.message3=Value of field 'records' must be numerical
+OAI_Content_Job.random.error.message1=Value of field 'random' must be boolean (true or false)
+OAI_Content_Job.base_url.error.message1=Value of field 'base url' doesn't seem to be a valid url adress
+RetrievableResource_Rule.mime_types.error.message1=Invalid mime type(s)
\ No newline at end of file
Index: modules/uoa-validator-admin/trunk/src/main/webapp/jsps/images/OpenAIREplus_logo.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/trunk/src/main/webapp/jsps/images/OpenAIREplus_logo.png
===================================================================
--- modules/uoa-validator-admin/trunk/src/main/webapp/jsps/images/OpenAIREplus_logo.png	(nonexistent)
+++ modules/uoa-validator-admin/trunk/src/main/webapp/jsps/images/OpenAIREplus_logo.png	(revision 47450)

Property changes on: modules/uoa-validator-admin/trunk/src/main/webapp/jsps/images/OpenAIREplus_logo.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/trunk/src/main/webapp/jsps/images/checkmark_24.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/trunk/src/main/webapp/jsps/images/checkmark_24.png
===================================================================
--- modules/uoa-validator-admin/trunk/src/main/webapp/jsps/images/checkmark_24.png	(nonexistent)
+++ modules/uoa-validator-admin/trunk/src/main/webapp/jsps/images/checkmark_24.png	(revision 47450)

Property changes on: modules/uoa-validator-admin/trunk/src/main/webapp/jsps/images/checkmark_24.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/trunk/src/main/webapp/jsps/chooseRuleForEdit.jsp
===================================================================
--- modules/uoa-validator-admin/trunk/src/main/webapp/jsps/chooseRuleForEdit.jsp	(nonexistent)
+++ modules/uoa-validator-admin/trunk/src/main/webapp/jsps/chooseRuleForEdit.jsp	(revision 47450)
@@ -0,0 +1,55 @@
+<%@ page contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<%@ taglib prefix="s" uri="/struts-tags"%>
+<html>
+<head>
+<link href="jsps/favicon.ico" rel="shortcut icon" type="image/x-icon" />
+<link href="jsps/style.css" rel="stylesheet" type="text/css" media="screen" />
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title><s:text name="chooseRuleForEdit.title"/></title>
+</head>
+<body class="left">
+<div id="wrapper">
+	<jsp:include page="menu.jsp"/>
+	<div id="page">
+	<div id="page-bgtop">
+	<div id="middle">
+            <div class="middle-b">
+                <div class="background">
+			 <div id="left">
+                              <div id="left_container" >
+                                   <h2 class="helpHdr">Info</h2>
+                                   <s:text name="help.admin"/>
+                              </div>
+                         </div>
+                        <div id="main">
+                        <div id="main_container" class="clearfix">
+			<div id="content">
+				<h2 class="title"><s:text name="chooseRuleForEdit.title"/></h2>
+                               <div class="entry">
+					<s:form action="prepareEditRule">
+                                                <s:if test="%{#session.isAdmin != null && #session.isAdmin.equals(\"true\")}">
+                                                        <s:select name="ruleId" list="rules" listValue="name" listKey="id"  key="chooseRuleForEdit.label"/>
+                                                		<s:hidden name="funct" value="edit"/>
+                                                </s:if>
+                                                <s:else>
+                                                        <s:select name="ruleId" list="rules" listValue="name" listKey="id"  key="chooseRuleForEdit.label2"/>
+                                                </s:else>
+                                                <s:submit cssClass="button-default"/>
+                                        </s:form>
+                                </div>
+			</div>
+			</div>
+			</div>
+		</div>
+	</div>
+	</div>
+	</div>
+
+    <div id="footer">
+                <jsp:include page="footer.jsp"/>
+        </div>
+</div>
+</div>
+</body>
+</html>
Index: modules/uoa-validator-admin/trunk/src/main/webapp/jsps/editRule.jsp
===================================================================
--- modules/uoa-validator-admin/trunk/src/main/webapp/jsps/editRule.jsp	(nonexistent)
+++ modules/uoa-validator-admin/trunk/src/main/webapp/jsps/editRule.jsp	(revision 47450)
@@ -0,0 +1,121 @@
+<%@ page contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<%@ taglib prefix="s" uri="/struts-tags"%>
+<html>
+<head>
+<link href="jsps/favicon.ico" rel="shortcut icon" type="image/x-icon" />
+<link href="jsps/style.css" rel="stylesheet" type="text/css" media="screen" />
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<s:if test="%{#session.isAdmin != null && #session.isAdmin.equals(\"true\")}">
+        <s:set name="isAdmin" value="true"/>
+</s:if>
+<s:else>
+        <s:set name="isAdmin" value="false"/>
+</s:else>
+<title>
+        <s:if test="%{#isAdmin}">
+                <s:text name="editRule.title"/>
+        </s:if>
+        <s:else>
+                <s:text name="editRule.title2"/>
+        </s:else>
+</title>
+
+</head>
+<body class="left">
+<div id="wrapper">
+	<jsp:include page="menu.jsp"/>
+	<div id="page">
+	<div id="page-bgtop">
+	<div id="middle">
+            <div class="middle-b">
+                <div class="background">
+			 <div id="left">
+                              <div id="left_container" >
+                                   <h2 class="helpHdr">Info</h2>
+                                   <s:text name="help.admin"/>
+                              </div>
+                         </div>
+                        <div id="main">
+                        <div id="main_container" class="clearfix">
+			<div id="content">
+				<s:if test="%{#isAdmin}">
+                                        <h2 class="title"><s:text name="editRule.title"/></h2>
+                                </s:if>
+                                <s:else>
+                                        <h2 class="title"><s:text name="editRule.title2"/></h2>
+                                </s:else>
+                                <div class="entry">
+                                        <s:form action="editRule">
+                                        		<s:hidden name="funct"/>
+                                                <s:hidden name="rule.id" value="%{rule.id}"/>
+                                                <s:hidden name="rule.for_cris"/>
+                                                <s:iterator value="ruleValues" var="ruleValue">
+                                                        <s:set name="label" value="%{#ruleValue.fieldName}"/>
+                                                        <s:set name="dscr" value="%{#ruleValue.fieldName+\".description\"}"/>
+                                                        <s:set name="tltp" value="%{#ruleValue.fieldName+\".name\"}"/>
+                                                        <s:if test="%{#label.equals(\"xmlvocabulary_rule.terms\") || #label.equals(\"rules.description\")}">
+                                                                <s:textarea name="inputs" value="%{#ruleValue.fieldValue}" title="%{getText(#dscr)}" label="%{getText(#tltp)}" cols="50" rows="10" disabled='%{!#isAdmin}'/>
+                                                        </s:if>
+                                                        <s:elseif test="%{#label.equals(\"xmlcrisclassvocabulary_rule.terms\") || #label.equals(\"xmlcrisreferentialintegrity_rule.terms\")}">
+                                                                <s:textarea name="inputs" value="%{#ruleValue.fieldValue}" title="%{getText(#dscr)}" label="%{getText(#tltp)}" cols="50" rows="10" disabled='%{!#isAdmin}'/>
+                                                        </s:elseif>
+                                                        <s:elseif test="%{#label.equals(\"xmlvocabulary_rule.terms_type\")}">
+                                                                <s:select label="%{getText(#tltp)}" name="inputs" value="%{#ruleValue.fieldValue}" list="#{'whitelist':'whitelist', 'blacklist':'blacklist'}" title="%{getText(#dscr)}"/>
+                                                        </s:elseif>
+                                                        <s:elseif test="%{#label.equals(\"rules.mandatory\")}">
+                                                                <s:select label="%{getText(#tltp)}" name="inputs" value="%{rule.mandatory}" list="#{'true':'true', 'false':'false'}" title="%{getText(#dscr)}"/>
+                                                        </s:elseif>
+                                                        <s:elseif test="%{#label.equals(\"rules.cris_entity\")}">
+                                                                <s:select label="%{getText(#tltp)}" name="inputs" list="entityTypes" value="%{rule.entity_type}" title="%{getText(#dscr)}"/>
+                                                        </s:elseif>
+														<s:elseif test="%{#label.matches('.*success')}">
+															<s:select label="%{getText(#tltp)}" name="inputs" value="%{#ruleValue.fieldValue}" list="#{'>0':'>0', 'all':'all', '0':'0', '1':'1'}" title="%{getText(#dscr)}"/>
+														</s:elseif>
+                                                        <s:elseif test="%{#label.equals(\"chain_rule.type\")}">
+                                                                <s:select label="%{getText(#tltp)}" name="inputs" value="%{#ruleValue.fieldValue}" list="#{'or':'or', 'and':'and', 'horn':'horn'}" title="%{getText(#dscr)}"/>
+                                                        </s:elseif>
+                                                        <s:elseif test="%{#label.equals(\"chain_rule.rule_1\")}">
+                                                                <s:select name="inputs" list="rules" listValue="name" listKey="id"  value="%{#ruleValue.fieldValue}" label="%{getText(#tltp)}" title="%{getText(#dscr)}"/>
+                                                        </s:elseif>
+                                                        <s:elseif test="%{#label.equals(\"chain_rule.rule_2\")}">
+                                                                <s:select name="inputs" list="rules" listValue="name" listKey="id"  value="%{#ruleValue.fieldValue}" label="%{getText(#tltp)}" title="%{getText(#dscr)}"/>
+                                                        </s:elseif>
+                                                        <s:elseif test="%{#label.equals(\"rules.provider_information\")}">
+<%-- 															<s:if test="%{rule.job_type.equals(\"OAI Usage\")}"> --%>
+															<s:textfield name="inputs" value="%{#ruleValue.fieldValue}" title="%{getText(#dscr)}" label="%{getText(#tltp)}" disabled='%{!#isAdmin}'/>
+<%--                                                         	</s:if> --%>
+														</s:elseif>
+                                                        <s:else>
+                                                                <s:textfield name="inputs" value="%{#ruleValue.fieldValue}" title="%{getText(#dscr)}" label="%{getText(#tltp)}" disabled='%{!#isAdmin}'/>
+                                                        </s:else>
+                                                </s:iterator>
+<%--                                                 <s:textfield name="rule.entity_type" label="%{getText(\"jobs.entity_type.name\")}" title="%{getText(\"jobs.entity_type.description\")}" /> --%>
+                                                <s:textfield name="rule.job_type" label="%{getText(\"jobs.job_type.name\")}" title="%{getText(\"jobs.job_type.description\")}" readonly='true'/>
+                                                <s:textfield name="rule.type" label="%{getText(\"rules.type.name\")}" title="%{getText(\"rules.type.description\")}" readonly='true'/>
+                                                <s:if test="%{#isAdmin}">
+                                                 	<s:if test="%{funct.equals(\"edit\")}">
+                                                        <s:submit value="Update" cssClass="button-default"/>
+                                                    </s:if>
+                                                    <s:elseif test="%{funct.equals(\"clone\")}">
+                                                    	<s:submit value="Clone" cssClass="button-default"/>
+                                                    </s:elseif>
+                                                </s:if>
+                                        </s:form>
+                                </div>
+
+			</div>
+			</div>
+			</div>
+		</div>
+	</div>
+	</div>
+	</div>
+
+    <div id="footer">
+                <jsp:include page="footer.jsp"/>
+        </div>
+</div>
+</div>
+</body>
+</html>
Index: modules/uoa-validator-admin/trunk/src/main/webapp/jsps/deleteRule.jsp
===================================================================
--- modules/uoa-validator-admin/trunk/src/main/webapp/jsps/deleteRule.jsp	(nonexistent)
+++ modules/uoa-validator-admin/trunk/src/main/webapp/jsps/deleteRule.jsp	(revision 47450)
@@ -0,0 +1,49 @@
+<%@ page contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<%@ taglib prefix="s" uri="/struts-tags"%>
+<html>
+<head>
+<link href="jsps/favicon.ico" rel="shortcut icon" type="image/x-icon" />
+<link href="jsps/style.css" rel="stylesheet" type="text/css" media="screen" />
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title><s:text name="deleteRule.title"/></title>
+</head>
+<body class="left">
+<div id="wrapper">
+	<jsp:include page="menu.jsp"/>
+	<div id="page">
+	<div id="page-bgtop">
+	<div id="middle">
+            <div class="middle-b">
+                <div class="background">
+			 <div id="left">
+                              <div id="left_container" >
+                                                <h2 class="helpHdr">Info</h2>
+                                                <s:text name="help.admin"/>
+                              </div>
+                         </div>
+                          <div id="main">
+                        <div id="main_container" class="clearfix">
+			<div id="content">
+			<h2 class="title"><s:text name="deleteRule.title"/></h2>
+                                <div class="entry">
+                                        <s:form action="deleteRule">
+                                                <s:select name="ruleId" list="rules" listValue="name" listKey="id"  key="deleteRule.label"/>
+						<s:submit cssClass="button-default"/>
+                                        </s:form>
+                                </div>
+			</div>
+		</div>
+	</div>
+	</div>
+	</div>
+	</div>
+	</div>
+
+    <div id="footer">
+                <jsp:include page="footer.jsp"/>
+        </div>
+</div>
+</div>
+</body>
+</html>
Index: modules/uoa-validator-admin/trunk/src/main/webapp/jsps/images/checkmark_28.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/trunk/src/main/webapp/jsps/images/checkmark_28.png
===================================================================
--- modules/uoa-validator-admin/trunk/src/main/webapp/jsps/images/checkmark_28.png	(nonexistent)
+++ modules/uoa-validator-admin/trunk/src/main/webapp/jsps/images/checkmark_28.png	(revision 47450)

Property changes on: modules/uoa-validator-admin/trunk/src/main/webapp/jsps/images/checkmark_28.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/trunk/src/main/webapp/jsps/images/BG_Header_f5.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/trunk/src/main/webapp/jsps/images/BG_Header_f5.png
===================================================================
--- modules/uoa-validator-admin/trunk/src/main/webapp/jsps/images/BG_Header_f5.png	(nonexistent)
+++ modules/uoa-validator-admin/trunk/src/main/webapp/jsps/images/BG_Header_f5.png	(revision 47450)

Property changes on: modules/uoa-validator-admin/trunk/src/main/webapp/jsps/images/BG_Header_f5.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/trunk/src/main/java/eu/dnetlib/validator/admin/actions/login/ResetPassword.java
===================================================================
--- modules/uoa-validator-admin/trunk/src/main/java/eu/dnetlib/validator/admin/actions/login/ResetPassword.java	(nonexistent)
+++ modules/uoa-validator-admin/trunk/src/main/java/eu/dnetlib/validator/admin/actions/login/ResetPassword.java	(revision 47450)
@@ -0,0 +1,70 @@
+package eu.dnetlib.validator.admin.actions.login;
+
+import org.apache.log4j.Logger;
+
+import com.opensymphony.xwork2.Action;
+
+import eu.dnetlib.validator.admin.actions.BaseValidatorAction;
+
+public class ResetPassword extends BaseValidatorAction {
+
+	private static final long serialVersionUID = -4565098546731325693L;
+	private Logger logger = Logger.getLogger(ResetPassword.class);
+	
+	private String password, repassword, securityCode;
+
+	public String execute() {
+		this.clearErrorsAndMessages();
+		try {
+			logger.debug("reseting password with security code " + securityCode);
+			this.getUserAPI().resetPassword(this.getSecurityCode(), this.getPassword());
+			this.addActionMessage(this.getText("resetPassword.success"));
+			return Action.SUCCESS;
+		} catch (Exception e) {
+			logger.error("error reseting password with security code " + securityCode, e);
+			this.addActionError(this.getText("generic.error"));
+			return "exception";
+		}
+	}
+
+	public void validate() {
+		this.clearErrors();
+		try {
+			if (this.getSecurityCode() == null || this.getSecurityCode().length() == 0) {
+				this.addFieldError("securityCode", this.getText("resetPassword.wrongSecurityCode"));
+				return;
+			}
+			if (!this.getPassword().equals(this.getRepassword())) {
+				this.addFieldError("password", this.getText("identicalPasswords"));
+				return;
+			}
+		} catch (Exception e) {
+			this.addActionError("");
+		}
+	}
+
+	public String getPassword() {
+		return password;
+	}
+
+	public void setPassword(String password) {
+		this.password = password;
+	}
+
+	public String getRepassword() {
+		return repassword;
+	}
+
+	public void setRepassword(String repassword) {
+		this.repassword = repassword;
+	}
+
+	public String getSecurityCode() {
+		return securityCode;
+	}
+
+	public void setSecurityCode(String securityCode) {
+		this.securityCode = securityCode;
+	}
+
+}
Index: modules/uoa-validator-admin/trunk/src/main/java/eu/dnetlib/validator/admin/actions/users/EditUser.java
===================================================================
--- modules/uoa-validator-admin/trunk/src/main/java/eu/dnetlib/validator/admin/actions/users/EditUser.java	(nonexistent)
+++ modules/uoa-validator-admin/trunk/src/main/java/eu/dnetlib/validator/admin/actions/users/EditUser.java	(revision 47450)
@@ -0,0 +1,66 @@
+package eu.dnetlib.validator.admin.actions.users;
+
+import java.util.Map;
+
+import org.apache.log4j.Logger;
+import org.apache.struts2.interceptor.SessionAware;
+
+import com.opensymphony.xwork2.Action;
+
+import eu.dnetlib.domain.functionality.UserProfile;
+import eu.dnetlib.validator.admin.actions.BaseValidatorAction;
+import eu.dnetlib.validator.admin.config.Constants;
+
+public class EditUser extends BaseValidatorAction implements SessionAware {
+
+	private static final long serialVersionUID = -362061491263257713L;
+	private Logger logger = Logger.getLogger(EditUser.class);
+
+	private UserProfile user;
+
+	private Map<String, Object> session;
+
+	public String execute() {
+		this.clearErrorsAndMessages();
+		try {
+			logger.debug("getting for edit user " + (String) session.get(Constants.loggedInField));
+				user = this.getUserAPI().getUser((String) session.get(Constants.loggedInField));
+			return Action.SUCCESS;
+		} catch (Exception e) {
+			logger.error("error getting for edit user " + (String) session.get(Constants.loggedInField), e);
+			this.addActionError(this.getText("generic.error"));
+			reportException(e);
+			return "exception";
+		}
+	}
+
+	public String edit() {
+		this.clearErrorsAndMessages();
+		try {
+			logger.debug("editing user " + (String) session.get(Constants.loggedInField));
+			this.getUserAPI().editUser(user);
+			this.addActionMessage(this.getText("editUser.success"));
+			return Action.SUCCESS;
+		} catch (Exception e) {
+			logger.error("error editing user " + (String) session.get(Constants.loggedInField), e);
+			this.addActionError(this.getText("generic.error"));
+			reportException(e);
+			return "exception";
+		}
+
+	}
+
+
+	public UserProfile getUser() {
+		return user;
+	}
+
+	public void setUser(UserProfile user) {
+		this.user = user;
+	}
+
+	@Override
+	public void setSession(Map<String, Object> session) {
+		this.session = session;
+	}
+}
Index: modules/uoa-validator-admin/trunk/src/main/java/eu/dnetlib/validator/admin/actions/users/Register.java
===================================================================
--- modules/uoa-validator-admin/trunk/src/main/java/eu/dnetlib/validator/admin/actions/users/Register.java	(nonexistent)
+++ modules/uoa-validator-admin/trunk/src/main/java/eu/dnetlib/validator/admin/actions/users/Register.java	(revision 47450)
@@ -0,0 +1,135 @@
+package eu.dnetlib.validator.admin.actions.users;
+
+import java.util.ArrayList;
+import java.util.regex.Pattern;
+
+import org.apache.log4j.Logger;
+
+import com.opensymphony.xwork2.Action;
+
+import eu.dnetlib.validator.admin.actions.BaseValidatorAction;
+
+public class Register extends BaseValidatorAction {
+
+	private static final long serialVersionUID = 4906485913149844710L;
+	private Logger logger = Logger.getLogger(Register.class);
+	
+	private String email, password, repassword;
+	private String username, firstName, lastName, institution;
+
+	public String execute() {
+		this.clearErrorsAndMessages();
+		try {
+			logger.debug("registering user " + email);
+			String activationId = null;
+
+			activationId = this.getUserAPI().addUser(username, email, password, firstName, lastName, institution);
+
+			this.addActionMessage((this.getText("registration.successful")));
+			this.addActionMessage((this.getText("general.unblock") + " " + this.getEmailer().getFrom()));
+
+			ArrayList<String> to = new ArrayList<String>();
+			to.add(this.getEmail());
+
+			this.getEmailer().sendMail(to, this.getText("registration.mail.subject"), this.getText("registration.mail.message") + ": " + this.getValBaseUrl() + "/activateAccount.action?activationId=" + activationId, false, null);
+
+			return Action.SUCCESS;
+		} catch (Exception e) {
+			logger.error("error registering user " + email, e);
+			this.addActionError(this.getText("generic.error"));
+			reportException(e);
+			return "exception";
+		}
+	}
+
+	public void validate() {
+		this.clearErrors();
+		if (this.getEmail() == null || this.getEmail().length() == 0)
+			this.addFieldError("email", this.getText("compulsoryField"));
+		if (this.getPassword() == null || this.getPassword().length() == 0)
+			this.addFieldError("password", this.getText("compulsoryField"));
+		if (this.getRepassword() == null || this.getRepassword().length() == 0)
+			this.addFieldError("repassword", this.getText("compulsoryField"));
+		if (this.getUsername() == null || this.getUsername().length() == 0)
+			this.addFieldError("username", this.getText("compulsoryField"));
+		if (this.getFirstName() == null || this.getFirstName().length() == 0)
+			this.addFieldError("firstName", this.getText("compulsoryField"));
+		if (this.getLastName() == null || this.getLastName().length() == 0)
+			this.addFieldError("lastName", this.getText("compulsoryField"));
+
+		if (!this.getPassword().equals(this.getRepassword()))
+			this.addFieldError("password", this.getText("identicalPasswords"));
+
+		Pattern rfc2822 = Pattern.compile("^[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?$");
+		if (!rfc2822.matcher(this.getEmail().trim().toLowerCase()).matches()) {
+			this.addFieldError("email", this.getText("notValidEmail"));
+		}
+
+		try {
+			if (this.getUserAPI().userExists(this.getEmail()))
+				this.addFieldError("email", this.getText("userAlreadyExists"));
+			if (this.getUserAPI().usernameExists(this.getUsername()))
+				this.addFieldError("username", this.getText("userAlreadyExists"));
+
+		} catch (Exception e) {
+			this.addFieldError("email", this.getText("userAlreadyExists"));
+		}
+	}
+
+	public String getEmail() {
+		return email;
+	}
+
+	public void setEmail(String email) {
+		this.email = email;
+	}
+
+	public String getPassword() {
+		return password;
+	}
+
+	public void setPassword(String password) {
+		this.password = password;
+	}
+
+	public String getRepassword() {
+		return repassword;
+	}
+
+	public void setRepassword(String repassword) {
+		this.repassword = repassword;
+	}
+
+	public String getUsername() {
+		return username;
+	}
+
+	public void setUsername(String username) {
+		this.username = username;
+	}
+
+	public String getFirstName() {
+		return firstName;
+	}
+
+	public void setFirstName(String firstName) {
+		this.firstName = firstName;
+	}
+
+	public String getLastName() {
+		return lastName;
+	}
+
+	public void setLastName(String lastName) {
+		this.lastName = lastName;
+	}
+
+	public String getInstitution() {
+		return institution;
+	}
+
+	public void setInstitution(String institution) {
+		this.institution = institution;
+	}
+	
+}
Index: modules/uoa-validator-admin/trunk/src/main/java/eu/dnetlib/validator/admin/actions/users/ActivateAccount.java
===================================================================
--- modules/uoa-validator-admin/trunk/src/main/java/eu/dnetlib/validator/admin/actions/users/ActivateAccount.java	(nonexistent)
+++ modules/uoa-validator-admin/trunk/src/main/java/eu/dnetlib/validator/admin/actions/users/ActivateAccount.java	(revision 47450)
@@ -0,0 +1,48 @@
+package eu.dnetlib.validator.admin.actions.users;
+
+import org.apache.log4j.Logger;
+
+import com.opensymphony.xwork2.Action;
+
+import eu.dnetlib.validator.admin.actions.BaseValidatorAction;
+
+public class ActivateAccount extends BaseValidatorAction {
+
+	private static final long serialVersionUID = 4680016183168923054L;
+	private Logger logger = Logger.getLogger(ActivateAccount.class);
+	
+	private String activationId;
+
+	public String execute() {
+		this.clearErrorsAndMessages();
+		try {
+			logger.debug("activating user account with activation id " + activationId);
+			if (this.getUserAPI().activateUser(this.getActivationId()))
+				this.addActionMessage(this.getText("registration.okAccountActivation"));
+			else
+				this.addActionMessage(this.getText("registration.okAccountAlreadyActivation"));
+			return Action.SUCCESS;
+		} catch (Exception e) {
+			logger.error("error activating user account with activation id " + activationId, e);
+			this.addActionError(this.getText("generic.error"));
+			reportException(e);
+			return "exception";
+		}
+	}
+
+	public void validate() {
+		this.clearErrors();
+		if (this.getActivationId() == null || this.getActivationId().length() == 0) {
+			this.addActionError(this.getText("noActivationId"));
+			return;
+		}
+	}
+
+	public String getActivationId() {
+		return activationId;
+	}
+
+	public void setActivationId(String activationId) {
+		this.activationId = activationId;
+	}
+}
\ No newline at end of file
Index: modules/uoa-validator-admin/trunk/src/main/webapp/jsps/images/box_info.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/trunk/src/main/webapp/jsps/images/box_info.png
===================================================================
--- modules/uoa-validator-admin/trunk/src/main/webapp/jsps/images/box_info.png	(nonexistent)
+++ modules/uoa-validator-admin/trunk/src/main/webapp/jsps/images/box_info.png	(revision 47450)

Property changes on: modules/uoa-validator-admin/trunk/src/main/webapp/jsps/images/box_info.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/trunk/src/main/webapp/jsps/images/info.jpg
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/trunk/src/main/webapp/jsps/images/info.jpg
===================================================================
--- modules/uoa-validator-admin/trunk/src/main/webapp/jsps/images/info.jpg	(nonexistent)
+++ modules/uoa-validator-admin/trunk/src/main/webapp/jsps/images/info.jpg	(revision 47450)

Property changes on: modules/uoa-validator-admin/trunk/src/main/webapp/jsps/images/info.jpg
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/trunk/src/main/webapp/jsps/chooseRuleSetForDeletion.jsp
===================================================================
--- modules/uoa-validator-admin/trunk/src/main/webapp/jsps/chooseRuleSetForDeletion.jsp	(nonexistent)
+++ modules/uoa-validator-admin/trunk/src/main/webapp/jsps/chooseRuleSetForDeletion.jsp	(revision 47450)
@@ -0,0 +1,49 @@
+<%@ page contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<%@ taglib prefix="s" uri="/struts-tags"%>
+<html>
+<head>
+<link href="jsps/favicon.ico" rel="shortcut icon" type="image/x-icon" />
+<link href="jsps/style.css" rel="stylesheet" type="text/css" media="screen" />
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title><s:text name="deleteRuleSet.title"/></title>
+</head>
+<body class="left">
+<div id="wrapper">
+	<jsp:include page="menu.jsp"/>
+	<div id="page">
+	<div id="page-bgtop">
+	<div id="middle">
+            <div class="middle-b">
+                <div class="background">
+			 <div id="left">
+                              <div id="left_container" >
+                                   <h2 class="helpHdr">Info</h2>
+                                   <s:text name="help.admin"/>
+                              </div>
+                         </div>
+                        <div id="main">
+                        <div id="main_container" class="clearfix">
+			<div id="content">
+				<h2 class="title"><s:text name="deleteRuleSet.title"/></h2>
+                                <div class="entry">
+                                        <s:form action="deleteRuleSet">
+                                                <s:select name="setId" list="sets" listValue="name" listKey="id" key="chooseRuleSet.label"/>
+                                                <s:submit cssClass="button-default"/>
+                                        </s:form>
+                                </div>
+			</div>
+			</div>
+			</div>
+		</div>
+	</div>
+	</div>
+	</div>
+
+    <div id="footer">
+                <jsp:include page="footer.jsp"/>
+        </div>
+</div>
+</div>
+</body>
+</html>
Index: modules/uoa-validator-admin/trunk/src/main/webapp/jsps/images/ajax_loader_blue_32.gif
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/trunk/src/main/webapp/jsps/images/ajax_loader_blue_32.gif
===================================================================
--- modules/uoa-validator-admin/trunk/src/main/webapp/jsps/images/ajax_loader_blue_32.gif	(nonexistent)
+++ modules/uoa-validator-admin/trunk/src/main/webapp/jsps/images/ajax_loader_blue_32.gif	(revision 47450)

Property changes on: modules/uoa-validator-admin/trunk/src/main/webapp/jsps/images/ajax_loader_blue_32.gif
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/trunk/src/main/webapp/jsps/images/opendoar.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/trunk/src/main/webapp/jsps/images/opendoar.png
===================================================================
--- modules/uoa-validator-admin/trunk/src/main/webapp/jsps/images/opendoar.png	(nonexistent)
+++ modules/uoa-validator-admin/trunk/src/main/webapp/jsps/images/opendoar.png	(revision 47450)

Property changes on: modules/uoa-validator-admin/trunk/src/main/webapp/jsps/images/opendoar.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/trunk/src/main/webapp/jsps/images/error_icon_24.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/trunk/src/main/webapp/jsps/images/error_icon_24.png
===================================================================
--- modules/uoa-validator-admin/trunk/src/main/webapp/jsps/images/error_icon_24.png	(nonexistent)
+++ modules/uoa-validator-admin/trunk/src/main/webapp/jsps/images/error_icon_24.png	(revision 47450)

Property changes on: modules/uoa-validator-admin/trunk/src/main/webapp/jsps/images/error_icon_24.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/trunk/src/main/webapp/jsps/images/readmore.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/trunk/src/main/webapp/jsps/images/readmore.png
===================================================================
--- modules/uoa-validator-admin/trunk/src/main/webapp/jsps/images/readmore.png	(nonexistent)
+++ modules/uoa-validator-admin/trunk/src/main/webapp/jsps/images/readmore.png	(revision 47450)

Property changes on: modules/uoa-validator-admin/trunk/src/main/webapp/jsps/images/readmore.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/trunk/src/main/webapp/jsps/images/list_arrow.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/trunk/src/main/webapp/jsps/images/list_arrow.png
===================================================================
--- modules/uoa-validator-admin/trunk/src/main/webapp/jsps/images/list_arrow.png	(nonexistent)
+++ modules/uoa-validator-admin/trunk/src/main/webapp/jsps/images/list_arrow.png	(revision 47450)

Property changes on: modules/uoa-validator-admin/trunk/src/main/webapp/jsps/images/list_arrow.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/trunk/src/main/java/eu/dnetlib/validator/admin/actions/jobs/RegistrationsReport.java
===================================================================
--- modules/uoa-validator-admin/trunk/src/main/java/eu/dnetlib/validator/admin/actions/jobs/RegistrationsReport.java	(nonexistent)
+++ modules/uoa-validator-admin/trunk/src/main/java/eu/dnetlib/validator/admin/actions/jobs/RegistrationsReport.java	(revision 47450)
@@ -0,0 +1,87 @@
+package eu.dnetlib.validator.admin.actions.jobs;
+
+import org.apache.log4j.Logger;
+
+import com.opensymphony.xwork2.Action;
+
+import eu.dnetlib.validator.admin.actions.BaseValidatorAction;
+import eu.dnetlib.validator.admin.api.ValidatorAdminException;
+
+public class RegistrationsReport extends BaseValidatorAction {
+
+	private static final long serialVersionUID = -1868055729316139461L;
+	private static final Logger logger = Logger.getLogger(RegistrationsReport.class);
+	private String dateFrom = null;
+	private String dateTo = null;
+	private String mode, month;
+	private int year;
+
+	public String execute() {
+		this.clearErrorsAndMessages();
+		try {
+			
+			int monthInt = Integer.parseInt(month.split("-")[1]);
+			String monthStr = month.split("-")[0];
+			dateFrom = new String("YYYY-MM-01").replaceFirst("MM", Integer.toString(monthInt)).replaceFirst("YYYY", Integer.toString(year));
+			if (monthInt != 12)
+				dateTo = new String("YYYY-MM-01").replaceFirst("MM", Integer.toString(monthInt+1)).replaceFirst("YYYY", Integer.toString(year));
+			else
+				dateTo = new String("YYYY-MM-01").replaceFirst("MM", "1").replaceFirst("YYYY", Integer.toString(year+1));
+			this.getValidatorAdminAPI().sendRegistrationsReport(dateFrom, dateTo, monthStr, Integer.toString(year));
+		} catch (ValidatorAdminException e) {
+			logger.error("Error deleting old jobs", e);
+			this.addActionError(this.getText("generic.error"));
+			reportException(e);
+			return "input-problem";
+		}
+		this.addActionMessage(this.getText("manageJobs.sendReports.success"));
+		
+		return Action.SUCCESS;
+	}
+	
+
+	public void validate() {
+		this.clearErrors();
+	}
+
+	public String getDateFrom() {
+		return dateFrom;
+	}
+
+	public void setDateFrom(String dateFrom) {
+		this.dateFrom = dateFrom;
+	}
+
+	public String getDateTo() {
+		return dateTo;
+	}
+
+	public void setDateTo(String dateTo) {
+		this.dateTo = dateTo;
+	}
+
+	public String getMode() {
+		return mode;
+	}
+
+	public void setMode(String mode) {
+		this.mode = mode;
+	}
+
+	public String getMonth() {
+		return month;
+	}
+
+	public void setMonth(String month) {
+		this.month = month;
+	}
+
+	public int getYear() {
+		return year;
+	}
+
+	public void setYear(int year) {
+		this.year = year;
+	}
+	
+}
Index: modules/uoa-validator-admin/trunk/src/main/java/eu/dnetlib/validator/admin/actions/jobs/DatabaseCurator.java
===================================================================
--- modules/uoa-validator-admin/trunk/src/main/java/eu/dnetlib/validator/admin/actions/jobs/DatabaseCurator.java	(nonexistent)
+++ modules/uoa-validator-admin/trunk/src/main/java/eu/dnetlib/validator/admin/actions/jobs/DatabaseCurator.java	(revision 47450)
@@ -0,0 +1,83 @@
+package eu.dnetlib.validator.admin.actions.jobs;
+
+import java.text.ParseException;
+import java.text.SimpleDateFormat;
+
+import org.apache.log4j.Logger;
+
+import com.opensymphony.xwork2.Action;
+
+import eu.dnetlib.validator.admin.actions.BaseValidatorAction;
+import eu.dnetlib.validator.admin.api.ValidatorAdminException;
+
+public class DatabaseCurator extends BaseValidatorAction {
+
+	private static final long serialVersionUID = -1868055729316139461L;
+	private static final Logger logger = Logger.getLogger(DatabaseCurator.class);
+	private String inDate = null;
+	private String mode, period;
+
+	public String execute() {
+		this.clearErrorsAndMessages();
+		int jobsDeleted = 0;
+		try {
+			jobsDeleted = this.getValidatorAdminAPI().deleteOldJobs(inDate, period, mode);
+		} catch (ValidatorAdminException e) {
+			logger.error("Error deleting old jobs", e);
+			this.addActionError(this.getText("generic.error"));
+			reportException(e);
+			return "input-problem";
+		}
+		
+		this.addActionMessage(jobsDeleted + " " + this.getText("manageJobs.deleteJobs.success"));
+		return Action.SUCCESS;
+	}
+	
+
+	public void validate() {
+		this.clearErrors();
+		if (!mode.equalsIgnoreCase("uncompleted_only")){
+			if (inDate == null) {
+				this.addActionError(this.getText("wrongFieldValue"));
+				return;
+			}
+			SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
+			if (inDate.trim().length() != dateFormat.toPattern().length()) {
+				this.addActionError(this.getText("wrongFieldValue"));
+				return;
+			}
+			dateFormat.setLenient(false);
+			try {
+				dateFormat.parse(inDate.trim());
+			} catch (ParseException pe) {
+				this.addActionError(this.getText("wrongFieldValue"));
+				return;
+			}
+		}
+	}
+
+	public String getInDate() {
+		return inDate;
+	}
+
+	public void setInDate(String inDate) {
+		this.inDate = inDate;
+	}
+
+	public String getMode() {
+		return mode;
+	}
+
+	public void setMode(String mode) {
+		this.mode = mode;
+	}
+
+	public String getPeriod() {
+		return period;
+	}
+
+	public void setPeriod(String period) {
+		this.period = period;
+	}
+
+}
Index: modules/uoa-validator-admin/trunk/src/main/java/eu/dnetlib/validator/admin/actions/BaseValidatorAction.java
===================================================================
--- modules/uoa-validator-admin/trunk/src/main/java/eu/dnetlib/validator/admin/actions/BaseValidatorAction.java	(nonexistent)
+++ modules/uoa-validator-admin/trunk/src/main/java/eu/dnetlib/validator/admin/actions/BaseValidatorAction.java	(revision 47450)
@@ -0,0 +1,126 @@
+package eu.dnetlib.validator.admin.actions;
+
+import java.io.PrintWriter;
+import java.io.StringWriter;
+import java.io.Writer;
+import java.util.ArrayList;
+import java.util.List;
+
+import org.apache.log4j.Logger;
+
+import com.opensymphony.xwork2.ActionSupport;
+
+import eu.dnetlib.validator.admin.api.UserApi;
+import eu.dnetlib.validator.admin.api.ValidatorAdminAPI;
+import eu.dnetlib.validator.admin.config.Constants;
+import eu.dnetlib.validator.commons.email.Emailer;
+
+public class BaseValidatorAction extends ActionSupport {
+
+	/**
+	 * 
+	 */
+	private static final long serialVersionUID = -622158192564945303L;
+	private UserApi userAPI = null;
+	private ValidatorAdminAPI validatorAdminAPI = null;
+	private Emailer emailer = null;
+
+	public static String loggedInField = "LOGGED_IN_FIELD";
+	
+	private String valBaseUrl = null;
+	private String valAdminEmail = null;
+	private String userMode = null;
+	private String repoMode = null;
+	private String deployEnvironment = null;
+
+	public void reportException(Exception exception) {
+		Writer writer = new StringWriter();
+		PrintWriter printWriter = new PrintWriter(writer);
+		exception.printStackTrace(printWriter);
+		
+		List<String> recipients = new ArrayList<String>();
+		
+		try {
+			recipients.add(this.getValAdminEmail());
+			String message = "An exception has occurred:\n"+writer.toString();
+			String subject = "Automatic Bug Report";
+			this.getEmailer().sendMail(recipients, subject, message, false, null);
+		} catch (Exception e) {
+			Logger logger = Logger.getLogger(BaseValidatorAction.class);
+			logger.error("error sending error report", e);
+		}
+	}
+	
+	public boolean isModeLdap() {
+		return userMode.trim().toLowerCase().equals(Constants.MODE_LDAP);
+	}
+
+	public boolean isModeOpenAIRE() {
+		return repoMode.trim().toLowerCase().equals(Constants.MODE_DNET);
+	}
+
+	public UserApi getUserAPI() {
+		return userAPI;
+	}
+
+	public void setUserAPI(UserApi userAPI) {
+		this.userAPI = userAPI;
+	}
+
+	public ValidatorAdminAPI getValidatorAdminAPI() {
+		return validatorAdminAPI;
+	}
+
+	public void setValidatorAdminAPI(ValidatorAdminAPI validatorAdminAPI) {
+		this.validatorAdminAPI = validatorAdminAPI;
+	}
+
+	public Emailer getEmailer() {
+		return emailer;
+	}
+
+	public void setEmailer(Emailer emailer) {
+		this.emailer = emailer;
+	}
+
+	public String getUserMode() {
+		return userMode;
+	}
+
+	public void setUserMode(String userMode) {
+		this.userMode = userMode;
+	}
+
+	public String getRepoMode() {
+		return repoMode;
+	}
+
+	public void setRepoMode(String repoMode) {
+		this.repoMode = repoMode;
+	}
+
+	public void setValBaseUrl(String valBaseUrl) {
+		this.valBaseUrl = valBaseUrl;
+	}
+
+	public String getValBaseUrl() {
+		return valBaseUrl;
+	}
+
+	public void setValAdminEmail(String valAdminEmail) {
+		this.valAdminEmail = valAdminEmail;
+	}
+
+	public String getValAdminEmail() {
+		return valAdminEmail;
+	}
+
+	public String getDeployEnvironment() {
+		return deployEnvironment;
+	}
+
+	public void setDeployEnvironment(String deployEnvironment) {
+		this.deployEnvironment = deployEnvironment;
+	}
+
+}
\ No newline at end of file
Index: modules/uoa-validator-admin/trunk/src/main/java/eu/dnetlib/validator/admin/actions/rulesets/DeleteRuleSet.java
===================================================================
--- modules/uoa-validator-admin/trunk/src/main/java/eu/dnetlib/validator/admin/actions/rulesets/DeleteRuleSet.java	(nonexistent)
+++ modules/uoa-validator-admin/trunk/src/main/java/eu/dnetlib/validator/admin/actions/rulesets/DeleteRuleSet.java	(revision 47450)
@@ -0,0 +1,39 @@
+package eu.dnetlib.validator.admin.actions.rulesets;
+
+
+import org.apache.log4j.Logger;
+
+import com.opensymphony.xwork2.Action;
+
+import eu.dnetlib.validator.admin.actions.BaseValidatorAction;
+
+public class DeleteRuleSet extends BaseValidatorAction {
+
+	private static final long serialVersionUID = 4858147485197818532L;
+	private int setId;
+	private static final Logger logger = Logger.getLogger(DeleteRuleSet.class);
+		
+	public int getSetId() {
+		return setId;
+	}
+
+	public void setSetId(int setId) {
+		this.setId = setId;
+	}
+
+	public String execute() {
+		this.clearErrorsAndMessages();
+		try {
+			logger.debug("deleting rule set "+setId);
+			this.getValidatorAdminAPI().deleteRuleSet(setId);
+			this.addActionMessage(this.getText("deleteRuleSet.success"));
+			return Action.SUCCESS;
+		}
+		catch(Exception e) {
+			logger.error("Error deleting ruleset", e);
+			this.addActionError(this.getText("generic.error"));
+			reportException(e);
+			return "exception";
+		}
+	}
+}
\ No newline at end of file
Index: modules/uoa-validator-admin/trunk/src/main/java/eu/dnetlib/validator/admin/actions/rulesets/GetRuleSets.java
===================================================================
--- modules/uoa-validator-admin/trunk/src/main/java/eu/dnetlib/validator/admin/actions/rulesets/GetRuleSets.java	(nonexistent)
+++ modules/uoa-validator-admin/trunk/src/main/java/eu/dnetlib/validator/admin/actions/rulesets/GetRuleSets.java	(revision 47450)
@@ -0,0 +1,39 @@
+package eu.dnetlib.validator.admin.actions.rulesets;
+
+import java.util.List;
+
+import org.apache.log4j.Logger;
+
+import com.opensymphony.xwork2.Action;
+
+import eu.dnetlib.domain.functionality.validator.RuleSet;
+import eu.dnetlib.validator.admin.actions.BaseValidatorAction;
+
+public class GetRuleSets extends BaseValidatorAction {
+
+	private static final long serialVersionUID = -5220242100308666597L;
+	private List<RuleSet> sets;
+	private static final Logger logger = Logger.getLogger(GetRuleSets.class);
+
+	public List<RuleSet> getSets() {
+		return sets;
+	}
+
+	public void setSets(List<RuleSet> sets) {
+		this.sets = sets;
+	}
+
+	public String execute() throws Exception {
+		this.clearErrorsAndMessages();
+		try {
+			logger.debug("getting all rule sets");
+			sets = this.getValidatorAdminAPI().getRuleSets();
+			return Action.SUCCESS;
+		} catch (Exception e) {
+			logger.error("Error getting rule sets", e);
+			this.addActionError(this.getText("generic.error"));
+			reportException(e);
+			return "exception";
+		}
+	}
+}
\ No newline at end of file
Index: modules/uoa-validator-admin/trunk/src/main/webapp/jsps/images/line_dotted.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/trunk/src/main/webapp/jsps/images/line_dotted.png
===================================================================
--- modules/uoa-validator-admin/trunk/src/main/webapp/jsps/images/line_dotted.png	(nonexistent)
+++ modules/uoa-validator-admin/trunk/src/main/webapp/jsps/images/line_dotted.png	(revision 47450)

Property changes on: modules/uoa-validator-admin/trunk/src/main/webapp/jsps/images/line_dotted.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/trunk/src/main/webapp/jsps/images/list_disc.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/trunk/src/main/webapp/jsps/images/list_disc.png
===================================================================
--- modules/uoa-validator-admin/trunk/src/main/webapp/jsps/images/list_disc.png	(nonexistent)
+++ modules/uoa-validator-admin/trunk/src/main/webapp/jsps/images/list_disc.png	(revision 47450)

Property changes on: modules/uoa-validator-admin/trunk/src/main/webapp/jsps/images/list_disc.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/trunk/src/main/webapp/jsps/images/box_warning.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/trunk/src/main/webapp/jsps/images/box_warning.png
===================================================================
--- modules/uoa-validator-admin/trunk/src/main/webapp/jsps/images/box_warning.png	(nonexistent)
+++ modules/uoa-validator-admin/trunk/src/main/webapp/jsps/images/box_warning.png	(revision 47450)

Property changes on: modules/uoa-validator-admin/trunk/src/main/webapp/jsps/images/box_warning.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/trunk/src/main/webapp/jsps/images/tick.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/trunk/src/main/webapp/jsps/images/tick.png
===================================================================
--- modules/uoa-validator-admin/trunk/src/main/webapp/jsps/images/tick.png	(nonexistent)
+++ modules/uoa-validator-admin/trunk/src/main/webapp/jsps/images/tick.png	(revision 47450)

Property changes on: modules/uoa-validator-admin/trunk/src/main/webapp/jsps/images/tick.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/trunk/src/main/webapp/jsps/images/BG_Footer_f5.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/trunk/src/main/webapp/jsps/images/BG_Footer_f5.png
===================================================================
--- modules/uoa-validator-admin/trunk/src/main/webapp/jsps/images/BG_Footer_f5.png	(nonexistent)
+++ modules/uoa-validator-admin/trunk/src/main/webapp/jsps/images/BG_Footer_f5.png	(revision 47450)

Property changes on: modules/uoa-validator-admin/trunk/src/main/webapp/jsps/images/BG_Footer_f5.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/trunk/src/main/webapp/jsps/images/tick1.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/trunk/src/main/webapp/jsps/images/tick1.png
===================================================================
--- modules/uoa-validator-admin/trunk/src/main/webapp/jsps/images/tick1.png	(nonexistent)
+++ modules/uoa-validator-admin/trunk/src/main/webapp/jsps/images/tick1.png	(revision 47450)

Property changes on: modules/uoa-validator-admin/trunk/src/main/webapp/jsps/images/tick1.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/trunk/src/main/webapp/jsps/images/register.jpg
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/trunk/src/main/webapp/jsps/images/register.jpg
===================================================================
--- modules/uoa-validator-admin/trunk/src/main/webapp/jsps/images/register.jpg	(nonexistent)
+++ modules/uoa-validator-admin/trunk/src/main/webapp/jsps/images/register.jpg	(revision 47450)

Property changes on: modules/uoa-validator-admin/trunk/src/main/webapp/jsps/images/register.jpg
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/trunk/src/main/webapp/jsps/images/register.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/trunk/src/main/webapp/jsps/images/register.png
===================================================================
--- modules/uoa-validator-admin/trunk/src/main/webapp/jsps/images/register.png	(nonexistent)
+++ modules/uoa-validator-admin/trunk/src/main/webapp/jsps/images/register.png	(revision 47450)

Property changes on: modules/uoa-validator-admin/trunk/src/main/webapp/jsps/images/register.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/trunk/src/main/webapp/jsps/images/Line_Header.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/trunk/src/main/webapp/jsps/images/Line_Header.png
===================================================================
--- modules/uoa-validator-admin/trunk/src/main/webapp/jsps/images/Line_Header.png	(nonexistent)
+++ modules/uoa-validator-admin/trunk/src/main/webapp/jsps/images/Line_Header.png	(revision 47450)

Property changes on: modules/uoa-validator-admin/trunk/src/main/webapp/jsps/images/Line_Header.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/trunk/src/main/webapp/jsps/images/box_download.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/trunk/src/main/webapp/jsps/images/box_download.png
===================================================================
--- modules/uoa-validator-admin/trunk/src/main/webapp/jsps/images/box_download.png	(nonexistent)
+++ modules/uoa-validator-admin/trunk/src/main/webapp/jsps/images/box_download.png	(revision 47450)

Property changes on: modules/uoa-validator-admin/trunk/src/main/webapp/jsps/images/box_download.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/trunk/src/main/webapp/jsps/images/compliant.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/trunk/src/main/webapp/jsps/images/compliant.png
===================================================================
--- modules/uoa-validator-admin/trunk/src/main/webapp/jsps/images/compliant.png	(nonexistent)
+++ modules/uoa-validator-admin/trunk/src/main/webapp/jsps/images/compliant.png	(revision 47450)

Property changes on: modules/uoa-validator-admin/trunk/src/main/webapp/jsps/images/compliant.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/trunk/src/main/webapp/jsps/images/info-left.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/trunk/src/main/webapp/jsps/images/info-left.png
===================================================================
--- modules/uoa-validator-admin/trunk/src/main/webapp/jsps/images/info-left.png	(nonexistent)
+++ modules/uoa-validator-admin/trunk/src/main/webapp/jsps/images/info-left.png	(revision 47450)

Property changes on: modules/uoa-validator-admin/trunk/src/main/webapp/jsps/images/info-left.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/trunk/src/main/webapp/jsps/images/footer_anchor.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/trunk/src/main/webapp/jsps/images/footer_anchor.png
===================================================================
--- modules/uoa-validator-admin/trunk/src/main/webapp/jsps/images/footer_anchor.png	(nonexistent)
+++ modules/uoa-validator-admin/trunk/src/main/webapp/jsps/images/footer_anchor.png	(revision 47450)

Property changes on: modules/uoa-validator-admin/trunk/src/main/webapp/jsps/images/footer_anchor.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/trunk/src/main/webapp/jsps/images/icon_external.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/trunk/src/main/webapp/jsps/images/icon_external.png
===================================================================
--- modules/uoa-validator-admin/trunk/src/main/webapp/jsps/images/icon_external.png	(nonexistent)
+++ modules/uoa-validator-admin/trunk/src/main/webapp/jsps/images/icon_external.png	(revision 47450)

Property changes on: modules/uoa-validator-admin/trunk/src/main/webapp/jsps/images/icon_external.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/trunk/src/main/java/eu/dnetlib/validator/admin/actions/rulesets/GetRules.java
===================================================================
--- modules/uoa-validator-admin/trunk/src/main/java/eu/dnetlib/validator/admin/actions/rulesets/GetRules.java	(nonexistent)
+++ modules/uoa-validator-admin/trunk/src/main/java/eu/dnetlib/validator/admin/actions/rulesets/GetRules.java	(revision 47450)
@@ -0,0 +1,146 @@
+package eu.dnetlib.validator.admin.actions.rulesets;
+
+import java.util.ArrayList;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Set;
+
+import org.apache.log4j.Logger;
+
+import com.opensymphony.xwork2.Action;
+
+import eu.dnetlib.domain.functionality.validator.Rule;
+import eu.dnetlib.domain.functionality.validator.RuleSet;
+import eu.dnetlib.validator.admin.actions.BaseValidatorAction;
+import eu.dnetlib.validator.admin.constants.TypesAndTableNames;
+
+public class GetRules extends BaseValidatorAction {
+
+	private static final long serialVersionUID = 3336444896590055688L;
+	private int setId = -1;
+	private List<Rule> rulesContent;
+	private List<Rule> rulesUsage;
+	private Set<Integer> ruleIdsContent;
+	private Set<Integer> ruleIdsUsage;
+	private List<String> deployEnvironments;
+	private String funct = null;
+	private RuleSet ruleSet;
+	
+	private static final Logger logger = Logger.getLogger(GetRules.class);
+
+	public String execute() {
+		this.clearErrorsAndMessages();
+		try {
+			logger.debug("getting rules in rule set "+setId);
+			ruleIdsContent = new HashSet<Integer>();
+			ruleIdsUsage = new HashSet<Integer>();
+			rulesContent = new ArrayList<Rule>();
+			rulesUsage = new ArrayList<Rule>();
+			this.splitRules(this.getValidatorAdminAPI().getAllRules(),rulesContent, rulesUsage);
+			this.deployEnvironments = TypesAndTableNames.deployEnvironments;
+			if (setId == -1) {
+				ruleSet = new RuleSet();
+				ruleSet.setId(-1);
+				funct = "create";
+			} else {
+				funct = "edit";
+				ruleSet = this.getValidatorAdminAPI().getRuleSet(setId);
+				ruleIdsContent=ruleSet.getContentRulesIds();
+				ruleIdsUsage=ruleSet.getUsageRulesIds();
+//				visibility = Utilities.convertListToString(set.getVisibility());
+			}
+			return Action.SUCCESS;
+		}
+		catch(Exception e) {
+			logger.error("Error getting rules", e);
+			this.addActionError(this.getText("generic.error"));
+			reportException(e);
+			return "exception";
+		}
+	}
+
+	private void splitRules(List<Rule> totalRules, List<Rule> contentRules, List<Rule> usageRules) {
+		logger.debug("splitting rules..");
+		for (Rule rule : totalRules) {
+			if (rule.getJob_type().equals("content")) {
+				contentRules.add(rule);
+			} else if (rule.getJob_type().equals("usage")) {
+				usageRules.add(rule);
+			}
+		}
+	}
+
+	public String getFunct() {
+		return funct;
+	}
+
+	public void setFunct(String funct) {
+		this.funct = funct;
+	}
+		
+
+	public RuleSet getRuleSet() {
+		return ruleSet;
+	}
+
+	public void setRuleSet(RuleSet ruleSet) {
+		this.ruleSet = ruleSet;
+	}
+
+	public int getSetId() {
+		return setId;
+	}
+
+	public void setSetId(int setId) {
+		this.setId = setId;
+	}
+
+
+	public List<Rule> getRulesContent() {
+		return rulesContent;
+	}
+
+
+	public void setRulesContent(List<Rule> rulesContent) {
+		this.rulesContent = rulesContent;
+	}
+
+
+	public List<Rule> getRulesUsage() {
+		return rulesUsage;
+	}
+
+
+	public void setRulesUsage(List<Rule> rulesUsage) {
+		this.rulesUsage = rulesUsage;
+	}
+
+	public Set<Integer> getRuleIdsContent() {
+		return ruleIdsContent;
+	}
+
+	public void setRuleIdsContent(Set<Integer> ruleIdsContent) {
+		this.ruleIdsContent = ruleIdsContent;
+	}
+
+	public Set<Integer> getRuleIdsUsage() {
+		return ruleIdsUsage;
+	}
+
+	public void setRuleIdsUsage(Set<Integer> ruleIdsUsage) {
+		this.ruleIdsUsage = ruleIdsUsage;
+	}
+
+	public List<String> getDeployEnvironments() {
+		return deployEnvironments;
+	}
+
+	public void setDeployEnvironments(List<String> deployEnvironments) {
+		this.deployEnvironments = deployEnvironments;
+	}
+
+
+}
+
+	
+
Index: modules/uoa-validator-admin/trunk/src/main/webapp/jsps/images/middle_bg_b.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/trunk/src/main/webapp/jsps/images/middle_bg_b.png
===================================================================
--- modules/uoa-validator-admin/trunk/src/main/webapp/jsps/images/middle_bg_b.png	(nonexistent)
+++ modules/uoa-validator-admin/trunk/src/main/webapp/jsps/images/middle_bg_b.png	(revision 47450)

Property changes on: modules/uoa-validator-admin/trunk/src/main/webapp/jsps/images/middle_bg_b.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/trunk/src/main/java/eu/dnetlib/validator/admin/actions/rules/AddRule.java
===================================================================
--- modules/uoa-validator-admin/trunk/src/main/java/eu/dnetlib/validator/admin/actions/rules/AddRule.java	(nonexistent)
+++ modules/uoa-validator-admin/trunk/src/main/java/eu/dnetlib/validator/admin/actions/rules/AddRule.java	(revision 47450)
@@ -0,0 +1,87 @@
+package eu.dnetlib.validator.admin.actions.rules;
+
+
+import org.apache.log4j.Logger;
+
+import com.opensymphony.xwork2.Action;
+
+import eu.dnetlib.domain.functionality.validator.Rule;
+import eu.dnetlib.validator.admin.actions.BaseValidatorAction;
+
+public class AddRule extends BaseValidatorAction {
+
+	private static final long serialVersionUID = -4636737264204104816L;
+	private String[] inputs;
+	private String type, jobType;
+	private boolean forCris;
+	private static final Logger logger = Logger.getLogger(AddRule.class);
+
+	public String execute() {
+		this.clearErrorsAndMessages();
+		try {
+			logger.debug("adding rule of type "+type+" using user inputs");
+			logger.debug("for cris: "+forCris);
+			logger.debug("jobType: "+ jobType);
+			Rule rule = new Rule();
+			rule.setType(type);
+			rule.setJob_type(jobType);
+			rule.setFor_cris(forCris);
+//			rule.setEntity_type(entityType);
+			String ret = this.getValidatorAdminAPI().storeRule(rule, inputs, true);
+			if (ret != null) {
+				this.addActionError(this.getText(ret));
+				return "input-problem";
+			}
+			
+			this.addActionMessage(this.getText("addRule.success"));
+			
+			return Action.SUCCESS;
+		} catch(Exception e) {
+			logger.error("Error adding rule", e);
+			this.addActionError(this.getText("generic.error"));
+			reportException(e);
+			return "exception";
+		}
+	}
+	
+	public String getJobType() {
+		return jobType;
+	}
+
+	public void setJobType(String jobType) {
+		this.jobType = jobType;
+	}
+
+	public boolean isForCris() {
+		return forCris;
+	}
+
+	public void setForCris(boolean forCris) {
+		this.forCris = forCris;
+	}
+
+//	public String getEntityType() {
+//		return entityType;
+//	}
+//
+//	public void setEntityType(String entityType) {
+//		this.entityType = entityType;
+//	}
+
+	public String getType() {
+		return type;
+	}
+
+	public void setType(String type) {
+		this.type = type;
+	}
+
+	public String[] getInputs() {
+		return inputs;
+	}
+
+	public void setInputs(String[] inputs) {
+		this.inputs = inputs;
+	}
+
+}
\ No newline at end of file
Index: modules/uoa-validator-admin/trunk/src/main/java/eu/dnetlib/validator/admin/actions/rules/PrepareEditRule.java
===================================================================
--- modules/uoa-validator-admin/trunk/src/main/java/eu/dnetlib/validator/admin/actions/rules/PrepareEditRule.java	(nonexistent)
+++ modules/uoa-validator-admin/trunk/src/main/java/eu/dnetlib/validator/admin/actions/rules/PrepareEditRule.java	(revision 47450)
@@ -0,0 +1,109 @@
+package eu.dnetlib.validator.admin.actions.rules;
+
+import java.util.List;
+import java.util.Set;
+
+import org.apache.log4j.Logger;
+
+import com.opensymphony.xwork2.Action;
+
+import eu.dnetlib.domain.functionality.validator.Rule;
+import eu.dnetlib.validator.admin.actions.BaseValidatorAction;
+import eu.dnetlib.validator.admin.api.ValidatorAdminException;
+import eu.dnetlib.validator.admin.constants.TypesAndTableNames;
+
+public class PrepareEditRule extends BaseValidatorAction {
+
+	private static final long serialVersionUID = 8825889540939707747L;
+	private int ruleId;
+
+	private Rule rule;
+	private List<Rule> rules;
+	private List<FieldPair> ruleValues;
+	private Set<String> entityTypes;
+	
+	private String funct = null;
+	private static final Logger logger = Logger.getLogger(PrepareEditRule.class);
+
+
+	public String execute() {
+		this.clearErrorsAndMessages();
+		try {
+//			logger.debug("preparing edit of rule");
+			entityTypes = TypesAndTableNames.getCrisEntities().keySet();
+			logger.debug("preparing edit of rule " + ruleId);
+			rule = this.getValidatorAdminAPI().getRule(ruleId);
+			this.ruleValues = this.getValidatorAdminAPI().getRuleValuePairs(rule);
+			if (rule.getType().equals("ChainRule")) {
+				try {
+					rules = this.getValidatorAdminAPI().getAllRules();
+				} catch (ValidatorAdminException e) {
+					return Action.ERROR;
+				}
+			}			
+			logger.debug("ruleType: " + rule.getType());
+			rule.setJob_type(TypesAndTableNames.jobTypes.get(rule.getJob_type()));
+			return Action.SUCCESS;
+		} catch (Exception e) {
+			logger.error("preparing edit of rule " + ruleId, e);
+			this.addActionError(this.getText("generic.error"));
+			reportException(e);
+			return "exception";
+		}
+	}
+
+	
+	public Rule getRule() {
+		return rule;
+	}
+
+	public void setRule(Rule rule) {
+		this.rule = rule;
+	}
+
+	public List<Rule> getRules() {
+		return rules;
+	}
+
+	public void setRules(List<Rule> rules) {
+		this.rules = rules;
+	}
+
+	public List<FieldPair> getRuleValues() {
+		return ruleValues;
+	}
+
+	public void setRuleValues(List<FieldPair> ruleValues) {
+		this.ruleValues = ruleValues;
+	}
+
+	public int getRuleId() {
+		return ruleId;
+	}
+
+	public void setRuleId(int ruleId) {
+		this.ruleId = ruleId;
+	}
+
+
+	public String getFunct() {
+		return funct;
+	}
+
+
+	public void setFunct(String funct) {
+		this.funct = funct;
+	}
+
+
+	public Set<String> getEntityTypes() {
+		return entityTypes;
+	}
+
+
+	public void setEntityTypes(Set<String> entityTypes) {
+		this.entityTypes = entityTypes;
+	}
+	
+	
+}
\ No newline at end of file
Index: modules/uoa-validator-admin/trunk/src/main/webapp/jsps/images/left_bg_l.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/trunk/src/main/webapp/jsps/images/left_bg_l.png
===================================================================
--- modules/uoa-validator-admin/trunk/src/main/webapp/jsps/images/left_bg_l.png	(nonexistent)
+++ modules/uoa-validator-admin/trunk/src/main/webapp/jsps/images/left_bg_l.png	(revision 47450)

Property changes on: modules/uoa-validator-admin/trunk/src/main/webapp/jsps/images/left_bg_l.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/trunk/src/main/webapp/jsps/images/list_star.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/trunk/src/main/webapp/jsps/images/list_star.png
===================================================================
--- modules/uoa-validator-admin/trunk/src/main/webapp/jsps/images/list_star.png	(nonexistent)
+++ modules/uoa-validator-admin/trunk/src/main/webapp/jsps/images/list_star.png	(revision 47450)

Property changes on: modules/uoa-validator-admin/trunk/src/main/webapp/jsps/images/list_star.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/trunk/src/main/webapp/jsps/images/footer_bg_m.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/trunk/src/main/webapp/jsps/images/footer_bg_m.png
===================================================================
--- modules/uoa-validator-admin/trunk/src/main/webapp/jsps/images/footer_bg_m.png	(nonexistent)
+++ modules/uoa-validator-admin/trunk/src/main/webapp/jsps/images/footer_bg_m.png	(revision 47450)

Property changes on: modules/uoa-validator-admin/trunk/src/main/webapp/jsps/images/footer_bg_m.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/trunk/src/main/webapp/jsps/images/box_alert.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/trunk/src/main/webapp/jsps/images/box_alert.png
===================================================================
--- modules/uoa-validator-admin/trunk/src/main/webapp/jsps/images/box_alert.png	(nonexistent)
+++ modules/uoa-validator-admin/trunk/src/main/webapp/jsps/images/box_alert.png	(revision 47450)

Property changes on: modules/uoa-validator-admin/trunk/src/main/webapp/jsps/images/box_alert.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/trunk/src/main/webapp/jsps/images/number-2.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/trunk/src/main/webapp/jsps/images/number-2.png
===================================================================
--- modules/uoa-validator-admin/trunk/src/main/webapp/jsps/images/number-2.png	(nonexistent)
+++ modules/uoa-validator-admin/trunk/src/main/webapp/jsps/images/number-2.png	(revision 47450)

Property changes on: modules/uoa-validator-admin/trunk/src/main/webapp/jsps/images/number-2.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/trunk/src/main/webapp/jsps/images/icon_folder.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/trunk/src/main/webapp/jsps/images/icon_folder.png
===================================================================
--- modules/uoa-validator-admin/trunk/src/main/webapp/jsps/images/icon_folder.png	(nonexistent)
+++ modules/uoa-validator-admin/trunk/src/main/webapp/jsps/images/icon_folder.png	(revision 47450)

Property changes on: modules/uoa-validator-admin/trunk/src/main/webapp/jsps/images/icon_folder.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/trunk/src/main/webapp/jsps/images/icon_file.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/trunk/src/main/webapp/jsps/images/icon_file.png
===================================================================
--- modules/uoa-validator-admin/trunk/src/main/webapp/jsps/images/icon_file.png	(nonexistent)
+++ modules/uoa-validator-admin/trunk/src/main/webapp/jsps/images/icon_file.png	(revision 47450)

Property changes on: modules/uoa-validator-admin/trunk/src/main/webapp/jsps/images/icon_file.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/trunk/src/main/webapp/jsps/images/info.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/trunk/src/main/webapp/jsps/images/info.png
===================================================================
--- modules/uoa-validator-admin/trunk/src/main/webapp/jsps/images/info.png	(nonexistent)
+++ modules/uoa-validator-admin/trunk/src/main/webapp/jsps/images/info.png	(revision 47450)

Property changes on: modules/uoa-validator-admin/trunk/src/main/webapp/jsps/images/info.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/trunk/src/main/java/eu/dnetlib/validator/admin/actions/rules/PopulateRuleList.java
===================================================================
--- modules/uoa-validator-admin/trunk/src/main/java/eu/dnetlib/validator/admin/actions/rules/PopulateRuleList.java	(nonexistent)
+++ modules/uoa-validator-admin/trunk/src/main/java/eu/dnetlib/validator/admin/actions/rules/PopulateRuleList.java	(revision 47450)
@@ -0,0 +1,42 @@
+package eu.dnetlib.validator.admin.actions.rules;
+
+import java.util.List;
+
+import org.apache.log4j.Logger;
+
+import com.opensymphony.xwork2.Action;
+
+import eu.dnetlib.domain.functionality.validator.Rule;
+import eu.dnetlib.validator.admin.actions.BaseValidatorAction;
+
+public class PopulateRuleList extends BaseValidatorAction {
+
+	private static final long serialVersionUID = -4035025449768015129L;
+	private List<Rule> rules;
+	private static final Logger logger = Logger.getLogger(PopulateRuleList.class);
+
+	public String execute() {
+		this.clearErrorsAndMessages();
+		try {
+			logger.debug("populating rule list");
+			rules = this.getValidatorAdminAPI().getAllRules();
+			return Action.SUCCESS;
+		}
+		catch(Exception e) {
+			logger.error("Error redirecting to job", e);
+			this.addActionError(this.getText("generic.error"));
+			reportException(e);
+			return "exception";
+		}
+	}
+
+	public List<Rule> getRules() {
+		return rules;
+	}
+
+	public void setRules(List<Rule> rules) {
+		this.rules = rules;
+	}
+	
+	
+}
Index: modules/uoa-validator-admin/trunk/src/main/webapp/jsps/images/top_icon.gif
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/trunk/src/main/webapp/jsps/images/top_icon.gif
===================================================================
--- modules/uoa-validator-admin/trunk/src/main/webapp/jsps/images/top_icon.gif	(nonexistent)
+++ modules/uoa-validator-admin/trunk/src/main/webapp/jsps/images/top_icon.gif	(revision 47450)

Property changes on: modules/uoa-validator-admin/trunk/src/main/webapp/jsps/images/top_icon.gif
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/trunk/src/main/java/eu/dnetlib/validator/admin/actions/help/HelpPage.java
===================================================================
--- modules/uoa-validator-admin/trunk/src/main/java/eu/dnetlib/validator/admin/actions/help/HelpPage.java	(nonexistent)
+++ modules/uoa-validator-admin/trunk/src/main/java/eu/dnetlib/validator/admin/actions/help/HelpPage.java	(revision 47450)
@@ -0,0 +1,8 @@
+package eu.dnetlib.validator.admin.actions.help;
+
+import eu.dnetlib.validator.admin.actions.BaseValidatorAction;
+
+@SuppressWarnings("serial")
+public class HelpPage extends BaseValidatorAction{
+
+}
Index: modules/uoa-validator-admin/trunk/src/main/java/eu/dnetlib/validator/admin/config/CascadingPropertyLoader.java
===================================================================
--- modules/uoa-validator-admin/trunk/src/main/java/eu/dnetlib/validator/admin/config/CascadingPropertyLoader.java	(nonexistent)
+++ modules/uoa-validator-admin/trunk/src/main/java/eu/dnetlib/validator/admin/config/CascadingPropertyLoader.java	(revision 47450)
@@ -0,0 +1,55 @@
+package eu.dnetlib.validator.admin.config;
+
+import java.util.Properties;
+
+import org.springframework.beans.BeansException;
+import org.springframework.beans.factory.InitializingBean;
+import org.springframework.beans.factory.config.ConfigurableListableBeanFactory;
+import org.springframework.beans.factory.config.PropertyPlaceholderConfigurer;
+
+/**
+ * CascadingPropertyLoader loads a number of property files and mergers them together, so that the last properties
+ * override the previous. It also supports property expansion like:
+ * 
+ * <code>
+ *   something = 1
+ *   somethingelse = 2
+ *   test = ${something}/${somethingelse}
+ *  </code>
+ * 
+ * <p>
+ * And if you override something to XX, then test will become XX/2
+ * </p>
+ * 
+ * 
+ * @author marko
+ * 
+ */
+public class CascadingPropertyLoader extends PropertyPlaceholderConfigurer implements InitializingBean {
+
+	private Properties properties;
+
+	public void afterPropertiesSet() throws Exception {
+		this.properties = mergeProperties();
+
+		// Convert the merged properties, if necessary.
+		convertProperties(this.properties);
+		
+		logger.debug("Properties: " + properties);
+	}
+
+	@Override
+	protected void processProperties(final ConfigurableListableBeanFactory beanFactoryToProcess, final Properties props) throws BeansException {
+		super.processProperties(beanFactoryToProcess, props);
+	}
+
+	public Properties getProperties() {
+		return properties;
+	}
+
+	public void setProperties(final Properties properties) {
+		super.setProperties(properties);
+		
+		this.properties = properties;
+	}
+}
\ No newline at end of file
Index: modules/uoa-validator-admin/trunk/src/main/java/eu/dnetlib/validator/admin/constants/TypesAndTableNames.java
===================================================================
--- modules/uoa-validator-admin/trunk/src/main/java/eu/dnetlib/validator/admin/constants/TypesAndTableNames.java	(nonexistent)
+++ modules/uoa-validator-admin/trunk/src/main/java/eu/dnetlib/validator/admin/constants/TypesAndTableNames.java	(revision 47450)
@@ -0,0 +1,102 @@
+package eu.dnetlib.validator.admin.constants;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.Set;
+
+import org.apache.log4j.Logger;
+
+public class TypesAndTableNames {
+
+	static private Logger logger = Logger.getLogger(TypesAndTableNames.class);
+	
+	static HashMap<String, String> ruleTypeToTableNames;
+	static HashMap<String, String> crisEntities;
+	static public List<String> deployEnvironments;
+	static public HashMap<String, String> jobTypes;
+	
+	static {
+		logger.debug("initializing the TableNames map");
+		ruleTypeToTableNames = new HashMap<String, String>();
+		
+		ruleTypeToTableNames.put("ChainRule", "chain_rule");
+		
+		//rules OAIPMH
+		ruleTypeToTableNames.put("OAIPMH Date Granularity", "oaipmhdategranularity_rule");
+		ruleTypeToTableNames.put("OAIPMH Embargo Date Check", "oaipmhembargodate_rule");
+		ruleTypeToTableNames.put("OAIPMH Incremental Record Delivery", "oaipmhincrementalrecorddelivery_rule");
+		ruleTypeToTableNames.put("OAIPMH Resumption Token Duration Check", "oaipmhresumptiontokenduration_rule");
+
+		//rules TEXT
+//		ruleTypeToTableNames.put("TEXT Regular Expression", "textreguralexpresion_rule");
+//		ruleTypeToTableNames.put("TEXT", "text_rule");
+//		ruleTypeToTableNames.put("TEXT Vocabulary","textvocabulary_rule");		
+
+		//rules XML
+//		names.put(XMLRule.class.getName(),"xml_rule");
+		ruleTypeToTableNames.put("XML Cardinality", "xmlcardinality_rule");
+		ruleTypeToTableNames.put("XML Field Exists", "xmlfieldexist_rule");
+		ruleTypeToTableNames.put("XML Not Confused Fields", "xmlnotconfusedfields_rule");
+		ruleTypeToTableNames.put("XML Regular Expression", "xmlregularexpression_rule");
+		ruleTypeToTableNames.put("XML Valid Url", "xmlvalidurl_rule");
+		ruleTypeToTableNames.put("XML Vocabulary", "xmlvocabulary_rule");
+		ruleTypeToTableNames.put("XML Cris Class Vocabulary", "xmlcrisclassvocabulary_rule");
+		ruleTypeToTableNames.put("XML CRIS Referential Integrity Rule", "xmlcrisreferentialintegrity_rule");
+		
+		crisEntities = new HashMap<String, String>();
+		crisEntities.put("Publication", "openaire_cris_publications");
+		crisEntities.put("Person", "openaire_cris_persons");
+		crisEntities.put("Organisation", "openaire_cris_orgunits");
+		crisEntities.put("Project", "openaire_cris_projects" );
+		crisEntities.put("Funding", "openaire_cris_funding" );
+		crisEntities.put("Service", "openaire_cris_services");
+		crisEntities.put("Product", "openaire_cris_datasets");		
+		
+		jobTypes = new HashMap<String, String>();
+		jobTypes.put("usage", "OAI Usage");
+		jobTypes.put("content", "OAI Content");
+		
+		deployEnvironments = new ArrayList<String>();
+		deployEnvironments.add("openaire-production");
+		deployEnvironments.add("openaire-beta");
+		deployEnvironments.add("development");
+		deployEnvironments.add("lareferencia");
+		deployEnvironments.add("mincyt");
+		
+//		names.put(JobInfo.class.getName(), "jobs");
+//		names.put(OAIContentJob.class.getName(), "oai_content_job");
+//		names.put(OAIUsageJob.class.getName(), "oai_usage_job");
+
+	}
+	
+	static public String getSetOfEntity(String entity) {
+		return crisEntities.get(entity);
+	}
+	
+	public static HashMap<String, String> getCrisEntities() {
+		return crisEntities;
+	}
+	
+	
+
+	public static Set<String> getJobTypes() {
+		logger.debug("getting all types of jobs");
+		return new HashSet<String>(jobTypes.values());
+	}
+
+	public static void setJobTypes(HashMap<String, String> jobTypes) {
+		TypesAndTableNames.jobTypes = jobTypes;
+	}
+
+	static public Set<String> getRuleTypes() {
+		logger.debug("getting all types of rules");
+		return ruleTypeToTableNames.keySet();
+	}
+	
+	static public String getTableNameOfType(String type) {
+		logger.debug("getting tableName of rule type "+type);
+		return ruleTypeToTableNames.get(type);
+	}
+}
Index: modules/uoa-validator-admin/trunk/src/main/webapp/jsps/images/e-Infrastructure_capacities_tr.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/trunk/src/main/webapp/jsps/images/e-Infrastructure_capacities_tr.png
===================================================================
--- modules/uoa-validator-admin/trunk/src/main/webapp/jsps/images/e-Infrastructure_capacities_tr.png	(nonexistent)
+++ modules/uoa-validator-admin/trunk/src/main/webapp/jsps/images/e-Infrastructure_capacities_tr.png	(revision 47450)

Property changes on: modules/uoa-validator-admin/trunk/src/main/webapp/jsps/images/e-Infrastructure_capacities_tr.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/trunk/src/main/webapp/jsps/images/logo_openaire.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/trunk/src/main/webapp/jsps/images/logo_openaire.png
===================================================================
--- modules/uoa-validator-admin/trunk/src/main/webapp/jsps/images/logo_openaire.png	(nonexistent)
+++ modules/uoa-validator-admin/trunk/src/main/webapp/jsps/images/logo_openaire.png	(revision 47450)

Property changes on: modules/uoa-validator-admin/trunk/src/main/webapp/jsps/images/logo_openaire.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/trunk/src/main/webapp/jsps/images/img03.gif
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/trunk/src/main/webapp/jsps/images/img03.gif
===================================================================
--- modules/uoa-validator-admin/trunk/src/main/webapp/jsps/images/img03.gif	(nonexistent)
+++ modules/uoa-validator-admin/trunk/src/main/webapp/jsps/images/img03.gif	(revision 47450)

Property changes on: modules/uoa-validator-admin/trunk/src/main/webapp/jsps/images/img03.gif
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/trunk/src/main/resources/eu/dnetlib/validator/admin/actions/springContext-validator-struts.xml
===================================================================
--- modules/uoa-validator-admin/trunk/src/main/resources/eu/dnetlib/validator/admin/actions/springContext-validator-struts.xml	(nonexistent)
+++ modules/uoa-validator-admin/trunk/src/main/resources/eu/dnetlib/validator/admin/actions/springContext-validator-struts.xml	(revision 47450)
@@ -0,0 +1,75 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<beans xmlns="http://www.springframework.org/schema/beans"
+	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+	xmlns:context="http://www.springframework.org/schema/context"
+	xmlns:cxf="http://cxf.apache.org/core"
+	xmlns:jaxws="http://cxf.apache.org/jaxws"
+	xmlns:p="http://http://www.springframework.org/schema/p"
+	xmlns:template="http://dnetlib.eu/springbeans/template"
+	xmlns:t="http://dnetlib.eu/springbeans/t"
+	xsi:schemaLocation="
+		http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.0.xsd
+        http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.0.xsd
+        http://cxf.apache.org/core http://cxf.apache.org/schemas/core.xsd
+        http://cxf.apache.org/jaxws http://cxf.apache.org/schemas/jaxws.xsd
+        http://dnetlib.eu/springbeans/template http://dnetlib.eu/springbeans/template.xsd"
+	default-autowire="no">
+		
+	<!-- BASE -->	
+	<bean id="baseAction" class="eu.dnetlib.validator.admin.actions.BaseValidatorAction" abstract="true" scope="prototype">
+		<property name="emailer" ref="emailer" />
+		<property name="userAPI" ref="userAPI" />
+		<property name="validatorAdminAPI" ref="validatorAdminAPI" />
+		<property name="userMode" value="${services.validator.mode.user}" />
+		<property name="valBaseUrl" value="${services.validator.baseUrl}" />
+		<property name="deployEnvironment" value="${services.validator.deploy.environment}" />
+		<property name="valAdminEmail" value="${services.validator.adminEmail}" />
+	</bean>		
+	<bean id="springManagedDummy" class="eu.dnetlib.validator.admin.actions.DummyAction" parent="baseAction" scope="prototype"/>
+	<bean id="go2registration" class="eu.dnetlib.validator.admin.actions.DummyAction" parent="baseAction" scope="prototype"/>
+	
+	<!-- LOGIN -->
+	<bean id="springManagedLoginPage" class="eu.dnetlib.validator.admin.actions.login.LoginPage" parent="baseAction" scope="prototype"/>
+	<bean id="springManagedLogin" class="eu.dnetlib.validator.admin.actions.login.Login" parent="baseAction"  scope="prototype"/>
+	<bean id="springManagedSendPassword" class="eu.dnetlib.validator.admin.actions.login.SendPassword" parent="baseAction"  scope="prototype"/>
+	<bean id="springManagedResetPassword" class="eu.dnetlib.validator.admin.actions.login.ResetPassword" parent="baseAction"  scope="prototype"/>
+	<bean id="springManagedLogout" class="eu.dnetlib.validator.admin.actions.login.Logout" parent="baseAction"  scope="prototype"/>
+	<bean id="springManagedPortalLogin" class="eu.dnetlib.validator.admin.actions.login.PortalLogin" parent="baseAction" scope="prototype">
+		<property name="key" value="${services.validator.portallogin.key}" />
+	</bean>
+	<bean id="springManagedForgotPassword" class="eu.dnetlib.validator.admin.actions.login.ForgotPasswordPage" parent="baseAction" scope="prototype"/>
+	<bean id="springManagedAdminInterceptor" class="eu.dnetlib.validator.admin.actions.login.AdminInterceptor">
+		<property name="userAPI" ref="userAPI"/>
+		<property name="validatorAdminAPI" ref="validatorAdminAPI" />
+	</bean>
+
+	<!-- BROWSE JOBS -->
+	
+	<bean id="springManagedDatabaseCurator" class="eu.dnetlib.validator.admin.actions.jobs.DatabaseCurator" parent="baseAction" scope="prototype"/>
+	<bean id="springManagedRegistrationsReport" class="eu.dnetlib.validator.admin.actions.jobs.RegistrationsReport" parent="baseAction" scope="prototype"/>
+
+	<!-- USERS -->
+	<bean id="springManagedRegister" class="eu.dnetlib.validator.admin.actions.users.Register" parent="baseAction" scope="prototype"/>
+	<bean id="springManagedActivateAccount" class="eu.dnetlib.validator.admin.actions.users.ActivateAccount" parent="baseAction" scope="prototype"/>
+	<bean id="springManagedEditUser" class="eu.dnetlib.validator.admin.actions.users.EditUser" parent="baseAction" scope="prototype"/>
+	
+	<!-- ADMIN RULES -->
+	<bean id="springManagedPopulateRuleCategories" class="eu.dnetlib.validator.admin.actions.rules.PopulateRuleCategories" parent="baseAction" scope="prototype"/>
+	<bean id="springManagedDeleteRule" class="eu.dnetlib.validator.admin.actions.rules.DeleteRule" parent="baseAction" scope="prototype"/>
+	<bean id="springManagedPrepareAddRule" class="eu.dnetlib.validator.admin.actions.rules.PrepareAddRule" parent="baseAction" scope="prototype"/>
+	<bean id="springManagedEditRule" class="eu.dnetlib.validator.admin.actions.rules.EditRule" parent="baseAction" scope="prototype"/>
+	<bean id="springManagedAddRule" class="eu.dnetlib.validator.admin.actions.rules.AddRule" parent="baseAction" scope="prototype"/>
+	<bean id="springManagedPopulateRuleList" class="eu.dnetlib.validator.admin.actions.rules.PopulateRuleList" parent="baseAction" scope="prototype"/>
+	<bean id="springManagedPrepareEditRule" class="eu.dnetlib.validator.admin.actions.rules.PrepareEditRule" parent="baseAction" scope="prototype"/>
+	
+	<!-- ADMIN RULESETS -->
+	<bean id="springManagedDeleteRuleSet" class="eu.dnetlib.validator.admin.actions.rulesets.DeleteRuleSet" parent="baseAction" scope="prototype"/>
+	<bean id="springManagedCreateRuleSet" class="eu.dnetlib.validator.admin.actions.rulesets.CreateRuleSet" parent="baseAction" scope="prototype"/>
+	<bean id="springManagedGetRuleSetsForDeletion" class="eu.dnetlib.validator.admin.actions.rulesets.GetRuleSets" parent="baseAction" scope="prototype"/>
+	<bean id="springManagedGetRulesForSet" class="eu.dnetlib.validator.admin.actions.rulesets.GetRules" parent="baseAction" scope="prototype"/>
+	<bean id="springManagedGetRuleSets" class="eu.dnetlib.validator.admin.actions.rulesets.GetRuleSets" parent="baseAction" scope="prototype"/>
+
+	<!-- FEEDBACK/HELP -->
+	<bean id="springManagedHelp" class="eu.dnetlib.validator.admin.actions.help.HelpPage" parent="baseAction" scope="prototype" />
+	
+</beans>
Index: modules/uoa-validator-admin/trunk/src/main/resources/eu/dnetlib/validator/admin/api/emailTeplate.vm
===================================================================
--- modules/uoa-validator-admin/trunk/src/main/resources/eu/dnetlib/validator/admin/api/emailTeplate.vm	(nonexistent)
+++ modules/uoa-validator-admin/trunk/src/main/resources/eu/dnetlib/validator/admin/api/emailTeplate.vm	(revision 47450)
@@ -0,0 +1,20 @@
+Greetings,
+
+The unsuccessful registration attempts during $month
+were the following (datasource Name, base URL, contact mail, compliance level):
+
+#foreach( $datasource in $failedJobs )
+$datasource.name, $datasource.baseUrl, $datasource.email, $datasource.compliance
+#end
+$noneFailed
+
+The successful ones were the following:
+
+#foreach( $datasource in $passedJobs )
+$datasource.name, $datasource.baseUrl, $datasource.email, $datasource.compliance
+#end
+$nonePassed
+
+Regards,
+Validator's administrator
+
Index: modules/uoa-validator-admin/trunk/src/main/webapp/jsps/images/help2.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/trunk/src/main/webapp/jsps/images/help2.png
===================================================================
--- modules/uoa-validator-admin/trunk/src/main/webapp/jsps/images/help2.png	(nonexistent)
+++ modules/uoa-validator-admin/trunk/src/main/webapp/jsps/images/help2.png	(revision 47450)

Property changes on: modules/uoa-validator-admin/trunk/src/main/webapp/jsps/images/help2.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/trunk/src/main/webapp/jsps/images/img02.jpg
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/trunk/src/main/webapp/jsps/images/img02.jpg
===================================================================
--- modules/uoa-validator-admin/trunk/src/main/webapp/jsps/images/img02.jpg	(nonexistent)
+++ modules/uoa-validator-admin/trunk/src/main/webapp/jsps/images/img02.jpg	(revision 47450)

Property changes on: modules/uoa-validator-admin/trunk/src/main/webapp/jsps/images/img02.jpg
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/trunk/src/main/webapp/jsps/images/module_separator_m.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/trunk/src/main/webapp/jsps/images/module_separator_m.png
===================================================================
--- modules/uoa-validator-admin/trunk/src/main/webapp/jsps/images/module_separator_m.png	(nonexistent)
+++ modules/uoa-validator-admin/trunk/src/main/webapp/jsps/images/module_separator_m.png	(revision 47450)

Property changes on: modules/uoa-validator-admin/trunk/src/main/webapp/jsps/images/module_separator_m.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/trunk/src/main/webapp/jsps/images/menu_level2_parent.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/trunk/src/main/webapp/jsps/images/menu_level2_parent.png
===================================================================
--- modules/uoa-validator-admin/trunk/src/main/webapp/jsps/images/menu_level2_parent.png	(nonexistent)
+++ modules/uoa-validator-admin/trunk/src/main/webapp/jsps/images/menu_level2_parent.png	(revision 47450)

Property changes on: modules/uoa-validator-admin/trunk/src/main/webapp/jsps/images/menu_level2_parent.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/trunk/src/main/webapp/jsps/login.jsp
===================================================================
--- modules/uoa-validator-admin/trunk/src/main/webapp/jsps/login.jsp	(nonexistent)
+++ modules/uoa-validator-admin/trunk/src/main/webapp/jsps/login.jsp	(revision 47450)
@@ -0,0 +1,86 @@
+<%@ page contentType="text/html; charset=UTF-8"
+    pageEncoding="UTF-8"%>
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<%@ taglib prefix="s" uri="/struts-tags"%>
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title><s:text name="login.title"/></title>
+<link href="jsps/favicon.ico" rel="shortcut icon" type="image/x-icon" />
+<link href="jsps/style.css" rel="stylesheet" type="text/css" media="screen" />
+</head>
+<body>
+<div id="wrapper">
+	<jsp:include page="menu.jsp"/>
+	<div id="page">
+        <div id="page-bgtop">
+             <div id="middle">
+                <div class="middle-b">
+                    <div class="background">
+                        <div id="main">
+                            <div id="main_container" class="clearfix">
+                                <div id="mainmiddle" class="floatbox">
+                                <h1>Sign In </h1>
+	                                <div class="notes">
+    		                            <s:text name="login.overview"/>
+   		                            </div>
+                                    <s:actionerror/>
+                                    <div class="post width45 separator float-left">
+                                        <h2><s:text name="login.title"/></h2>
+                                        <s:text name="login.description"/>
+                                        <%--<p class="meta"><a href='<s:url value="/jsps/help.jsp#login"/>' target="_blank"><s:text name="help"/></a></p>--%>
+                                        <div class="entry">
+                                            <s:form action="Login">
+                                            	
+                                            	<s:hidden name="url" value="%{#request['javax.servlet.forward.servlet_path']}"/>
+            									<s:hidden name="params" value="%{#request['javax.servlet.forward.query_string']}"/>  
+    
+                                                <s:textfield name="email_username" key="registration.username_email"/>
+                                                <s:password name="password_login" key="registration.password"/>
+
+                                                <%-- <s:checkbox name="rememberme" key="registration.rememberme"/> --%>
+                                                <s:submit  cssClass="button-default" value="Sign In"/>
+                                            </s:form>
+                                            <a class="smallfont" href='<s:url action="forgotPassword"/>'><s:text name="login.forgotpassword"/></a>
+                                        </div>
+                                    </div>
+                                    
+                                    <div class="post width45 float-left">
+                                        <h2><s:text name="menu.account.registration.title"/></h2>
+                                        <div class="entry">
+                                            <!-- NMI take the following out if everything works fine
+                                            <a href='<s:url action="go2registration" />'><s:text name="menu.account.registration" /></a>
+                                            -->
+                                        <s:text name="registration.description"/>
+                                        <%--<p class="meta"><a href='<s:url value="/jsps/help.jsp#registration"/>' target="_blank"><s:text name="help"/></a></p>--%>
+                                        
+                                            <%-- <s:if test="%{@gr.uoa.di.validatorweb.configs.Constants@isModeLdap()}">
+                                                <s:text name="registration.ldap.message"/>
+                                            </s:if> --%>
+                                            <s:form action="Register">
+                                                <s:textfield name="username" key="registration.username" requiredLabel="true"/>
+                                                <s:textfield name="firstName" key="registration.firstName" requiredLabel="true"/>
+                                                <s:textfield name="lastName" key="registration.lastName" requiredLabel="true"/>
+                                                <s:textfield name="email" key="registration.email" requiredLabel="true"/>
+                                                <s:textfield name="institution" key="registration.institution" />
+                                                <s:password name="password" key="registration.password" requiredLabel="true"/>
+                                                <s:password name="repassword" key="registration.repassword" requiredLabel="true"/>
+                                                <s:submit cssClass="button-default" value="Register"/>
+                                            </s:form>
+                                        </div>
+                                </div>
+                                 </div>
+                             </div>
+                         </div>
+                    </div>
+                </div>
+            </div>        
+        </div>
+        <!-- NMI This needs to be the same in all pages and the text is some properties file -->
+        <div id="footer"> 
+		<jsp:include page="footer.jsp"/>
+	</div>
+	</div>
+</div>
+</body>
+</html>
Index: modules/uoa-validator-admin/trunk/src/main/webapp/jsps/images/middle_bg_t.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/trunk/src/main/webapp/jsps/images/middle_bg_t.png
===================================================================
--- modules/uoa-validator-admin/trunk/src/main/webapp/jsps/images/middle_bg_t.png	(nonexistent)
+++ modules/uoa-validator-admin/trunk/src/main/webapp/jsps/images/middle_bg_t.png	(revision 47450)

Property changes on: modules/uoa-validator-admin/trunk/src/main/webapp/jsps/images/middle_bg_t.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/trunk/src/main/webapp/jsps/images/external_link.gif
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/trunk/src/main/webapp/jsps/images/external_link.gif
===================================================================
--- modules/uoa-validator-admin/trunk/src/main/webapp/jsps/images/external_link.gif	(nonexistent)
+++ modules/uoa-validator-admin/trunk/src/main/webapp/jsps/images/external_link.gif	(revision 47450)

Property changes on: modules/uoa-validator-admin/trunk/src/main/webapp/jsps/images/external_link.gif
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/trunk/src/main/webapp/jsps/images/page_bg.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/trunk/src/main/webapp/jsps/images/page_bg.png
===================================================================
--- modules/uoa-validator-admin/trunk/src/main/webapp/jsps/images/page_bg.png	(nonexistent)
+++ modules/uoa-validator-admin/trunk/src/main/webapp/jsps/images/page_bg.png	(revision 47450)

Property changes on: modules/uoa-validator-admin/trunk/src/main/webapp/jsps/images/page_bg.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/trunk/src/main/webapp/jsps/images/img07.jpg
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/trunk/src/main/webapp/jsps/images/img07.jpg
===================================================================
--- modules/uoa-validator-admin/trunk/src/main/webapp/jsps/images/img07.jpg	(nonexistent)
+++ modules/uoa-validator-admin/trunk/src/main/webapp/jsps/images/img07.jpg	(revision 47450)

Property changes on: modules/uoa-validator-admin/trunk/src/main/webapp/jsps/images/img07.jpg
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/trunk/src/main/webapp/jsps/images/img01.jpg
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/trunk/src/main/webapp/jsps/images/img01.jpg
===================================================================
--- modules/uoa-validator-admin/trunk/src/main/webapp/jsps/images/img01.jpg	(nonexistent)
+++ modules/uoa-validator-admin/trunk/src/main/webapp/jsps/images/img01.jpg	(revision 47450)

Property changes on: modules/uoa-validator-admin/trunk/src/main/webapp/jsps/images/img01.jpg
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/trunk/src/main/webapp/jsps/menu.jsp
===================================================================
--- modules/uoa-validator-admin/trunk/src/main/webapp/jsps/menu.jsp	(nonexistent)
+++ modules/uoa-validator-admin/trunk/src/main/webapp/jsps/menu.jsp	(revision 47450)
@@ -0,0 +1,160 @@
+<%@ page contentType="text/html;charset=UTF-8" pageEncoding="UTF-8"%>
+<%@ taglib prefix="s" uri="/struts-tags"%>
+
+<link href="jsps/ddmenu.css" rel="stylesheet" type="text/css" media="screen" />
+<script src="jsps/js/ddmenu.js" type="text/javascript"></script>
+
+
+	<div id="header">
+	<div id="topmenu">
+		<ul>
+				<s:if test="%{#session.email == null}">
+					<li   style="float: right;">
+						<a href='<s:url action="go2login" />'><s:text name="menu.account.login" /></a>
+					</li>
+				</s:if>
+				
+				<s:else>
+					<li  style="float: right;">
+						<a href='<s:url action="logout" />'><s:text name="menu.account.logout" />(<s:property value="#session.email" />)</a>
+					</li>
+					<li  style="float: right;">
+						<a href='<s:url action="userDetails" />'><s:text name="menu.account.edit" /></a>
+					</li>
+				</s:else>
+		</ul>
+	</div>
+			<s:if test="%{deployEnvironment.trim().toLowerCase().equals(\"lareferencia\")}">
+				<div id="logoLareferencia"></div>
+			</s:if>
+			<s:else>
+				<div id="logo">
+					<a id="logo" href="https://www.openaire.eu">
+					<img src="jsps/images/openairepluslogo.png" alt="openairepluslogo" width="171" height="120">
+					</a>
+				</div>
+			</s:else>
+		<nav id="ddmenu">
+			<ul>
+				<li><a href='<s:url action="welcome" />'><s:text name="menu.home" /></a></li>
+				
+<%-- 						<s:if test="%{repoMode.trim().toLowerCase().equals(\"dnet\")}"> --%>
+				<li>
+					<s:text name="home.manageRules" />
+					<div>
+					<div class="column">
+						<s:if test="%{#session.isAdmin != null && #session.isAdmin.equals(\"true\")}">
+						
+							<a href='<s:url action="populateRuleCategories" />'>
+								<s:text name="home.manageRules.addRule" />
+							</a>
+							<a href='<s:url action="populateRuleListForEdit" />'>
+								<s:text name="home.manageRules.editRule" />
+							</a>
+							<a href='<s:url action="populateRuleListForClone" />'>
+								<s:text name="home.manageRules.cloneRule" />
+							</a>
+							<a href='<s:url action="populateRuleList" />'>
+								<s:text name="home.manageRules.deleteRule" />
+							</a>
+						</s:if>
+						<s:else>
+							<a href='<s:url action="populateRuleListForEdit" />'>
+								<s:text name="home.manageRules.viewRule" />
+							</a>
+						</s:else>
+					</div>
+					</div>					
+				</li>
+				
+				<li>
+					<s:text name="home.manageRulesets" />
+					<div>
+					<div class="column">
+						<s:if test="%{#session.isAdmin != null && #session.isAdmin.equals(\"true\")}">
+							<a href='<s:url action="getRulesForSet" />'>
+								<s:text name="home.manageRulesets.createRuleSet" />
+							</a>
+							<a href='<s:url action="getRuleSets" />'>
+								<s:text name="home.manageRulesets.editRuleSet" />
+							</a>
+							<a href='<s:url action="getRuleSetsForDeletion" />'>
+								<s:text name="home.manageRulesets.deleteRuleSet" />
+							</a>
+						</s:if>
+						<s:else>
+							<a href='<s:url action="getRuleSets" />'>
+								<s:text name="home.manageRulesets.viewRuleSet" />
+							</a>
+						</s:else>
+					</div>
+					</div>					
+				</li>
+				
+				
+				<li>
+					<s:text name="home.manageJobs" />
+					<div>
+					<div class="column">
+					  <s:if test="%{#session.isAdmin != null && #session.isAdmin.equals(\"true\")}">
+						<a href='<s:url action="deleteJobs" />'>
+							<s:text name="home.manageJobs.deleteJobs" />
+						</a>
+						
+							<s:if test="%{!deployEnvironment.trim().toLowerCase().equals(\"lareferencia\")}">
+							<a href='<s:url action="registrationsReport" />'>
+								<s:text name="home.manageJobs.sendReport" />
+							</a>
+							</s:if>
+					  </s:if>
+<%-- 					  		<s:if test="%{!deployEnvironment.trim().toLowerCase().equals(\"lareferencia\")}"> --%>
+<%-- 								<a href='<s:url action="getRuleSetsForDeletion" />'> --%>
+<%-- 									<s:text name="home.manageJobs.viewStats" /> --%>
+<!-- 								</a> -->
+<%-- 							</s:if> --%>
+					</div>
+					</div>					
+				</li>
+				
+				<s:if test="%{!deployEnvironment.trim().toLowerCase().equals(\"lareferencia\")}">
+					<s:if test="%{#session.isAdmin != null && #session.isAdmin.equals(\"true\")}">
+<!-- 						<li> -->
+<%-- 							<s:text name="home.manageUsers" /> --%>
+<!-- 							<div> -->
+<!-- 							<div class="column"> -->
+<%-- 								<a href='<s:url action="getRulesForSet" />'> --%>
+<%-- 									<s:text name="home.manageUsers.addUser" /> --%>
+<!-- 								</a> -->
+<%-- 								<a href='<s:url action="getRuleSets" />'> --%>
+<%-- 									<s:text name="home.manageUsers.editUser" /> --%>
+<!-- 								</a> -->
+<%-- 								<a href='<s:url action="getRuleSetsForDeletion" />'> --%>
+<%-- 									<s:text name="home.manageUsers.makeAdmin" /> --%>
+<!-- 								</a> -->
+<!-- 							</div> -->
+<!-- 							</div>					 -->
+<!-- 						</li> -->
+					</s:if>
+				</s:if>
+				<li>
+					<s:text name="menu.about" />
+					<div>
+					<div class="column">
+						<a href="http://www.openaire.eu//support/faq/repman" target="_blank">
+							<s:text name="menu.about.faq" />
+						</a>
+						<a href='<s:url action="help" />'>
+							<s:text name="menu.about.help" />
+						</a>
+						<a href='<s:url action="feedback" />'>
+							<s:text name="menu.about.feedback" />
+						</a>
+					</div>
+					</div>
+				</li>
+
+			</ul>
+			</nav>
+			
+			<div style="clear:both"></div>
+		</div>
Index: modules/uoa-validator-admin/trunk/src/main/webapp/jsps/signin.jsp
===================================================================
--- modules/uoa-validator-admin/trunk/src/main/webapp/jsps/signin.jsp	(nonexistent)
+++ modules/uoa-validator-admin/trunk/src/main/webapp/jsps/signin.jsp	(revision 47450)
@@ -0,0 +1,76 @@
+<%@ page contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<%@ taglib prefix="s" uri="/struts-tags"%>
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title><s:text name="login.title"/></title>
+<link href="jsps/favicon.ico" rel="shortcut icon" type="image/x-icon" />
+<link href="jsps/style.css" rel="stylesheet" type="text/css" media="screen" />
+</head>
+<body>
+<div id="wrapper">
+	<jsp:include page="menu.jsp"/>
+	<div id="page">
+		<div id="page-bgtop">
+			<div id="middle">
+                <div class="middle-b">
+                    <div class="background">
+                        <div class="main">
+                        <div id="main_container" class="clearfix">
+                                <div id="mainmiddle" class="floatbox">
+                                    <s:actionerror/>
+                                    <div class="post">
+                                        <h2 class="title"><s:text name="login.title"/></h2>
+                                        <s:text name="login.description"/>
+                                        <%--<p class="meta"><a href='<s:url value="/jsps/help.jsp#login"/>' target="_blank"><s:text name="help"/></a></p>--%>
+                                        <div class="entry">
+                                            <s:form action="Login">
+                                                <s:if test="%{repoMode.trim().toLowerCase().equals(\"dnet\")}">
+                                                    <s:textfield name="email" key="registration.username"/>
+                                                </s:if>
+                                                <s:else>
+                                                    <s:textfield name="email" key="registration.email"/>
+                                                </s:else>
+                                                <s:password name="password" key="registration.password"/>
+                                                <%-- <s:checkbox name="rememberme" key="registration.rememberme"/> --%>
+                                                <s:submit/>
+                                            </s:form>
+                                            <a href='<s:url value="forgotPassword" />'><s:text name="login.forgotpassword"/></a>
+                                        </div>
+                                    </div>
+                                    <div class="post">
+                                        <h2 class="title"><s:text name="registration.title"/></h2>
+                                        <s:text name="registration.description"/>
+                                        <%--<p class="meta"><a href='<s:url value="/jsps/help.jsp#registration"/>' target="_blank"><s:text name="help"/></a></p>--%>
+                                        <div class="entry">
+                                            <%-- <s:if test="%{@gr.uoa.di.validatorweb.configs.Constants@isModeLdap()}">
+                                                <s:text name="registration.ldap.message"/>
+                                            </s:if> --%>
+                                            <s:form action="Register">
+                                                <s:if test="%{repoMode.trim().toLowerCase().equals(\"dnet\")}">
+                                                    <s:textfield name="username" key="registration.username"/>
+                                                    <s:textfield name="firstName" key="registration.firstName"/>
+                                                    <s:textfield name="lastName" key="registration.lastName"/>
+                                                </s:if>
+                                                <s:textfield name="email" key="registration.email"/>
+                                                <s:password name="password" key="registration.password"/>
+                                                <s:password name="repassword" key="registration.repassword"/>
+                                                <s:submit/>
+                                            </s:form>
+                                        </div>
+                                    </div>
+								</div>
+                            </div>
+                        </div>
+                    </div>
+                </div>
+            </div>
+		</div>
+		  <div id="footer"> 
+           <jsp:include page="footer.jsp"/>
+        </div>
+	</div>
+</div>
+</body>
+</html>
\ No newline at end of file
Index: modules/uoa-validator-admin/trunk/src/main/resources/eu/dnetlib/validator/admin/api/springContext-validator.properties
===================================================================
--- modules/uoa-validator-admin/trunk/src/main/resources/eu/dnetlib/validator/admin/api/springContext-validator.properties	(nonexistent)
+++ modules/uoa-validator-admin/trunk/src/main/resources/eu/dnetlib/validator/admin/api/springContext-validator.properties	(revision 47450)
@@ -0,0 +1,49 @@
+# the address where validator is running and is accessible from the rest of the web
+services.validator.baseUrl = http://${container.hostname}:${container.port}/${container.context}
+
+# the email of the administrator
+# he will receive all the automatic bug reports and feedback created
+services.validator.adminEmail = nikonas@di.uoa.gr
+
+# the private key used for signing the direct login links from the OpenAIRE portal
+services.validator.portallogin.key = 568345
+
+
+# If set to true then, when the server is stopped and restarted, all jobs that haven't finished for any reason will restart
+# If set to false then only jobs that stopped gracefully due to a previous server restart will be restarted
+# Unless the server has stopped unexpectedly and you are now restarting it, this setting must be left to false
+services.validator.jobs.totalRestart = false
+
+# the mailhost for the mail service
+services.validator.mail.host = smtp.gmail.com
+# the port where the mail service is running
+services.validator.mail.port = 465
+# the address that appears in the from field in the mails send by the validator
+services.validator.mail.fromAddress = no-reply@openaire.eu
+# the reply-to field value in the mails send by the validator
+services.validator.mail.replyToAddress = no-reply@openaire.eu
+# the username of the account used to login in the mail server
+services.validator.mail.username = test.openaire@gmail.com
+# the password of the account used to login in the mail server
+services.validator.mail.password = ^($*@$)*!$
+# if authentication should take place
+# if set to false username and password is not needed
+services.validator.mail.authenticate = true
+# is set to yes then all mails will not be sent to their targets but to the address specified in services.validator.mail.overrideEmail
+services.validator.mail.override = false
+# if set to true then no mails are send, they are only logged as a debug message
+services.validator.mail.logonly = false
+# the mode used for the mails send by the validator
+services.validator.mail.mode = ssl
+# used by eu.dnetlib.utils.MailLibrary to control debuggin messages
+services.validator.mail.debug = false
+# if services.validator.mail.override is true then all mails will be send only to this address
+services.validator.mail.overrideEmail = nikonas@di.uoa.gr
+# a comma-seperated list of address that will receive all mails about validations and repo registrations
+services.validator.mail.specialRecipients = nikonas@di.uoa.gr
+
+# a comma-seperated list of addresses that have the ability to register repos without the need for validation and registration
+services.validator.repoRegistration.override = nikonas@di.uoa.gr
+
+# do not change
+services.validator.registration.validationSet = OpenAIRE For Literature Repositories
Index: modules/uoa-validator-admin/trunk/src/main/webapp/jsps/fonts/kreon-regular-webfont.woff
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/trunk/src/main/webapp/jsps/fonts/kreon-regular-webfont.woff
===================================================================
--- modules/uoa-validator-admin/trunk/src/main/webapp/jsps/fonts/kreon-regular-webfont.woff	(nonexistent)
+++ modules/uoa-validator-admin/trunk/src/main/webapp/jsps/fonts/kreon-regular-webfont.woff	(revision 47450)

Property changes on: modules/uoa-validator-admin/trunk/src/main/webapp/jsps/fonts/kreon-regular-webfont.woff
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/trunk/src/main/resources/eu/dnetlib/validator/admin/constants/fieldDetails.txt
===================================================================
--- modules/uoa-validator-admin/trunk/src/main/resources/eu/dnetlib/validator/admin/constants/fieldDetails.txt	(nonexistent)
+++ modules/uoa-validator-admin/trunk/src/main/resources/eu/dnetlib/validator/admin/constants/fieldDetails.txt	(revision 47450)
@@ -0,0 +1,102 @@
+rules
+id false
+name true
+description true
+type true
+mandatory true
+weight true
+visible false
+job_type true
+
+usage_rules
+provider_information true
+
+cris_rules
+cris_entity true
+
+cardinality_rule
+less_than true
+greater_than true
+	
+chain_rule
+type true 
+rule_1 true
+rule_2 true
+
+regularexpression_rule
+regexp true
+
+validurl_rule
+
+vocabulary_rule
+terms true
+terms_type true
+
+oaipmhdategranularity_rule
+base_url true
+
+oaipmhembargodate_rule
+
+oaipmhincrementalrecorddelivery_rule
+from true
+until true
+
+oaipmhresumptiontokenduration_rule
+duration true
+
+text_rule
+
+textvocabulary_rule
+terms true
+
+textreguralexpresion_rule
+regexp true
+
+xml_rule
+xpath true
+success true
+
+xmlcardinality_rule
+xpath true
+success true
+lt true
+gt true
+
+xmlfieldexist_rule
+xpath true
+success true
+
+xmlnotconfusedfields_rule
+xpath true
+success true
+fields true
+
+xmlregularexpression_rule
+xpath true
+success true
+regexp true
+
+xmlvalidurl_rule
+xpath true
+success true
+
+xmlvocabulary_rule
+xpath true
+success true
+terms true
+terms_type true
+
+xmlcrisclassvocabulary_rule
+xpath true
+scheme_id true
+success true
+terms true
+
+xmlcrisreferentialintegrity_rule
+xpath true
+entity_acronym true
+scheme_id true
+related_entity_xpath true
+related_entity_acronym true
+success true
+terms true
\ No newline at end of file
Index: modules/uoa-validator-admin/trunk/src/main/webapp/jsps/fonts/yanonekaffeesatz.css
===================================================================
--- modules/uoa-validator-admin/trunk/src/main/webapp/jsps/fonts/yanonekaffeesatz.css	(nonexistent)
+++ modules/uoa-validator-admin/trunk/src/main/webapp/jsps/fonts/yanonekaffeesatz.css	(revision 47450)
@@ -0,0 +1,13 @@
+/* Copyright (C) YOOtheme GmbH, YOOtheme Proprietary Use License (http://www.yootheme.com/license) */
+
+@font-face {
+	font-family: 'YanoneKaffeesatzLight';
+	src: url('YanoneKaffeesatz-Light-webfont.eot');
+	src: url('YanoneKaffeesatz-Light-webfont.eot?#iefix') format('embedded-opentype'),
+		url('YanoneKaffeesatz-Light-webfont.woff') format('woff'),
+		url('YanoneKaffeesatz-Light-webfont.ttf') format('truetype'),
+		url('YanoneKaffeesatz-Light-webfont.svg#YanoneKaffeesatzLight') format('svg');
+	font-weight: normal;
+	font-style: normal;
+}
+
Index: modules/uoa-validator-admin/trunk/src/main/resources/field-infos.properties
===================================================================
--- modules/uoa-validator-admin/trunk/src/main/resources/field-infos.properties	(nonexistent)
+++ modules/uoa-validator-admin/trunk/src/main/resources/field-infos.properties	(revision 47450)
@@ -0,0 +1,98 @@
+rules.name.description = The name of the rule. Must be short and descriptive.
+rules.name.name = Name
+rules.description.description = A longer text describing the rule in more detail.
+rules.description.name = Description
+rules.mandatory.description = Must be true or false. If true, then if this rule doesn't validate the score will suffer. If false, then if the rule validates successfully then the score will be increased (even above 100%)
+rules.mandatory.name = Mandatory
+rules.success.description = The correct syntax as regular expression is ([=<>][0-9]+)|a). For a thorough explanation of this field please refer to the Administrator Manual. 
+rules.success.name = Success
+rules.weight.description = An integer indicating how important this rule is. The base weight is 1. Weights greater than 1 mean that this rule impacts more on the score.
+rules.weight.name = Weight
+rules.provider_information.description = This information is used by the Provider Module to harvest the correct items for validation. For example, for OAI Content Validation jobs a possible value could be dc:identifier. For a thorough explanation of this field please refer to the Administrator Manual. 
+rules.provider_information.name = Provider Information
+rules.visible.description = Not shown to the end-user
+rules.visible.name = Visible
+rules.type.name = Rule Type
+rules.type.description = The type of the rule
+rules.cris_entity.name = Cris Entity
+rules.cris_entity.description = The type of cris entity that this rule will be applicable on
+jobs.job_type.name = Job Type
+jobs.job_type.description = The type of job that this rule will be applicable on
+jobs.entity_type.name = Entity Type
+jobs.entity_type.description = The type of entity that this rule will be applicable on
+xmlvocabulary_rule.terms.name = Words
+xmlvocabulary_rule.terms.description = The list of words that will be used for matching. Each line must include only one word.
+xmlvocabulary_rule.terms_type.name = Words List Type
+xmlvocabulary_rule.terms_type.description = The kind of the list of words that will be used for matching. Blacklist or whitelist.
+xmlvocabulary_rule.success.name = Success
+xmlvocabulary_rule.success.description = The correct syntax is :all, >0, 0 . For a thorough explanation of this field please refer to the Administrator Manual. 
+xmlvocabulary_rule.xpath.name = XPath
+xmlvocabulary_rule.xpath.description = XPath for specific rule.
+xmlcrisclassvocabulary_rule.terms.name = Words
+xmlcrisclassvocabulary_rule.terms.description = The list of words that will be used for matching. Each line must include only one word.
+xmlcrisclassvocabulary_rule.success.name = Success
+xmlcrisclassvocabulary_rule.success.description = The correct syntax is :all, >0, 0, 1 . For a thorough explanation of this field please refer to the Administrator Manual. 
+xmlcrisclassvocabulary_rule.xpath.name = XPath
+xmlcrisclassvocabulary_rule.xpath.description = XPath for specific rule.
+xmlcrisclassvocabulary_rule.scheme_id.name = Scheme ID
+xmlcrisclassvocabulary_rule.scheme_id.description = XPath for specific rule.
+xmlcrisreferentialintegrity_rule.terms.name = Words
+xmlcrisreferentialintegrity_rule.terms.description = The list of words that will be used for matching. Each line must include only one word.
+xmlcrisreferentialintegrity_rule.success.name = Success
+xmlcrisreferentialintegrity_rule.success.description = The correct syntax is :all, >0, 0, 1 . For a thorough explanation of this field please refer to the Administrator Manual. 
+xmlcrisreferentialintegrity_rule.xpath.name = XPath
+xmlcrisreferentialintegrity_rule.xpath.description = XPath for specific rule.
+xmlcrisreferentialintegrity_rule.scheme_id.name = Scheme ID
+xmlcrisreferentialintegrity_rule.scheme_id.description = XPath for specific rule.
+xmlcrisreferentialintegrity_rule.entity_acronym.name = Entity Acronym
+xmlcrisreferentialintegrity_rule.entity_acronym.description = Entity Acronym (eg.cfPers).
+xmlcrisreferentialintegrity_rule.related_entity_acronym.name = Related Entity Acronym
+xmlcrisreferentialintegrity_rule.related_entity_acronym.description = Related Entity Acronym (eg.cfPers).
+xmlcrisreferentialintegrity_rule.related_entity_xpath.name = Related Entity XPATH
+xmlcrisreferentialintegrity_rule.related_entity_xpath.description = Related Entity XPATH.
+xmlfieldexist_rule.success.name = Success
+xmlfieldexist_rule.success.description = The correct syntax is :all, >0, 0 . For a thorough explanation of this field please refer to the Administrator Manual. 
+xmlfieldexist_rule.xpath.name = XPath
+xmlfieldexist_rule.xpath.description = XPath for specific rule.
+xmlregularexpression_rule.success.name = Success
+xmlregularexpression_rule.success.description = The correct syntax is :all, >0, 0 . For a thorough explanation of this field please refer to the Administrator Manual. 
+xmlregularexpression_rule.xpath.name = XPath
+xmlregularexpression_rule.xpath.description = XPath for specific rule.
+xmlregularexpression_rule.regexp.name = Regular Expression
+xmlregularexpression_rule.regexp.description = The regular expression used for validation.
+xmlcardinality_rule.lt.name = Less Than
+xmlcardinality_rule.lt.description = Less than this number
+xmlcardinality_rule.gt.name = Greater Than
+xmlcardinality_rule.gt.description = Greater than this number
+xmlcardinality_rule.success.name = Success
+xmlcardinality_rule.success.description = The correct syntax is :all, >0, 0 . For a thorough explanation of this field please refer to the Administrator Manual. 
+xmlcardinality_rule.xpath.name = XPath
+xmlcardinality_rule.xpath.description = XPath for specific rule.
+xmlcardinality_rule.regexp.name = Regular Expression
+xmlcardinality_rule.regexp.description = The regular expression used for validation.
+xmlnotconfusedfields_rule.fields.name = Fields
+xmlnotconfusedfields_rule.fields.description = Fields that must not be confused each other
+xmlnotconfusedfields_rule.success.name = Success
+xmlnotconfusedfields_rule.success.description = The correct syntax is :all, >0, 0 . For a thorough explanation of this field please refer to the Administrator Manual. 
+xmlnotconfusedfields_rule.xpath.name = XPath
+xmlnotconfusedfields_rule.xpath.description = XPath for specific rule.
+xmlnotconfusedfields_rule.regexp.name = Regular Expression
+xmlnotconfusedfields_rule.regexp.description = The regular expression used for validation.
+xmlvalidurl_rule.success.name = Success
+xmlvalidurl_rule.success.description = The correct syntax is :all, >0, 0 . For a thorough explanation of this field please refer to the Administrator Manual. 
+xmlvalidurl_rule.xpath.name = XPath
+xmlvalidurl_rule.xpath.description = XPath for specific rule.
+xmlvalidurl_rule.regexp.name = Regular Expression
+xmlvalidurl_rule.regexp.description = The regular expression used for validation.
+chain_rule.type.description = Permitted values: 'or' -> true if any of the rules is successful, 'and' -> true if all the rules are successful, 'horn' -> rule[0] => rule[1] /\ rule[2] /\ ... /\ rule[n-1]
+chain_rule.type.name = Chain Type
+chain_rule.rule_1.description = The first rule that chain rule consists of.
+chain_rule.rule_1.name = 1st Rule of Chain
+chain_rule.rule_2.description = The second rule that chain rule consists of.
+chain_rule.rule_2.name = 2nd Rule of Chain
+oaipmhresumptiontokenduration_rule.duration.description = Duration of resumption token.
+oaipmhresumptiontokenduration_rule.duration..name = Duration
+oaipmhincrementalrecorddelivery_rule.from.name = From
+oaipmhincrementalrecorddelivery_rule.from.description = From field.
+oaipmhincrementalrecorddelivery_rule.until.name = Until
+oaipmhincrementalrecorddelivery_rule.until.description = Until field.
\ No newline at end of file
Index: modules/uoa-validator-admin/trunk/src/main/resources/validation.properties
===================================================================
--- modules/uoa-validator-admin/trunk/src/main/resources/validation.properties	(nonexistent)
+++ modules/uoa-validator-admin/trunk/src/main/resources/validation.properties	(revision 47450)
@@ -0,0 +1,29 @@
+# The ESAPI validator does many security checks on input, such as canonicalization
+# and whitelist validation. Note that all of these validation rules are applied *after*
+# canonicalization. Double-encoded characters (even with different encodings involved,
+# are never allowed.
+#
+# To use:
+#
+# First set up a pattern below. You can choose any name you want, prefixed by the word
+# "Validation." For example:
+#   Validation.Email=^[A-Za-z0-9._%-]+@[A-Za-z0-9.-]+\\.[a-zA-Z]{2,4}$
+# 
+# Then you can validate in your code against the pattern like this:
+#     ESAPI.validator().isValidInput("User Email", input, "Email", maxLength, allowNull);
+# Where maxLength and allowNull are set for you needs, respectively.
+#
+# But note, when you use boolean variants of validation functions, you lose critical 
+# canonicalization. It is preferable to use the "get" methods (which throw exceptions) and 
+# and use the returned user input which is in canonical form. Consider the following:
+#  
+# try {
+#    someObject.setEmail(ESAPI.validator().getValidInput("User Email", input, "Email", maxLength, allowNull));
+#
+Validator.SafeString=^[.\\p{Alnum}\\p{Space}]{0,1024}$
+Validator.Email=^[A-Za-z0-9._%-]+@[A-Za-z0-9.-]+\\.[a-zA-Z]{2,4}$
+Validator.IPAddress=^(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$
+Validator.URL=^(ht|f)tp(s?)\\:\\/\\/[0-9a-zA-Z]([-.\\w]*[0-9a-zA-Z])*(:(0-9)*)*(\\/?)([a-zA-Z0-9\\-\\.\\?\\,\\:\\'\\/\\\\\\+=&amp;%\\$#_]*)?$
+Validator.CreditCard=^(\\d{4}[- ]?){3}\\d{4}$
+Validator.SSN=^(?!000)([0-6]\\d{2}|7([0-6]\\d|7[012]))([ -]?)(?!00)\\d\\d\\3(?!0000)\\d{4}$
+
Index: modules/uoa-validator-admin/trunk/src/main/webapp/jsps/fonts/OpenSans-Light-webfont.ttf
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/trunk/src/main/webapp/jsps/fonts/OpenSans-Light-webfont.ttf
===================================================================
--- modules/uoa-validator-admin/trunk/src/main/webapp/jsps/fonts/OpenSans-Light-webfont.ttf	(nonexistent)
+++ modules/uoa-validator-admin/trunk/src/main/webapp/jsps/fonts/OpenSans-Light-webfont.ttf	(revision 47450)

Property changes on: modules/uoa-validator-admin/trunk/src/main/webapp/jsps/fonts/OpenSans-Light-webfont.ttf
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/trunk/src/main/webapp/jsps/fonts/OpenSans-Light-webfont.woff
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/trunk/src/main/webapp/jsps/fonts/OpenSans-Light-webfont.woff
===================================================================
--- modules/uoa-validator-admin/trunk/src/main/webapp/jsps/fonts/OpenSans-Light-webfont.woff	(nonexistent)
+++ modules/uoa-validator-admin/trunk/src/main/webapp/jsps/fonts/OpenSans-Light-webfont.woff	(revision 47450)

Property changes on: modules/uoa-validator-admin/trunk/src/main/webapp/jsps/fonts/OpenSans-Light-webfont.woff
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/trunk/src/main/webapp/jsps/help.jsp
===================================================================
--- modules/uoa-validator-admin/trunk/src/main/webapp/jsps/help.jsp	(nonexistent)
+++ modules/uoa-validator-admin/trunk/src/main/webapp/jsps/help.jsp	(revision 47450)
@@ -0,0 +1,43 @@
+<%@ page contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<%@ taglib prefix="s" uri="/struts-tags"%>
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title><s:text name="home.title"/></title>
+<link href="jsps/style.css" rel="stylesheet" type="text/css" media="screen" />
+
+ <link href="jsps/favicon.ico" rel="shortcut icon" type="image/x-icon" />
+</head>
+<body>
+<div id="wrapper">
+        <jsp:include page="menu.jsp"/>
+        <div id="page">
+        <div id="page-bgtop">
+                <div id="middle">
+            <div class="middle-b">
+                <div class="background">
+                                <div id="main">
+                        <div id="main_container" class="clearfix">
+                            <div id="mainmiddle" class="floatbox">
+                                    <h1><s:text name="instructions.welcome"/></h1>
+                                    <div class="entry">
+                                    	<s:text name="instructions.message"/>
+                                    </div>
+                             </div>
+                        </div>
+                    </div>
+                 </div>
+                        </div>
+                </div>
+                <div style="clear: both;">&nbsp;</div>
+        </div>
+    <!-- NMI This needs to be the same in all pages and the text is some properties file -->
+    <div id="footer">
+                <jsp:include page="footer.jsp"/>
+        </div>
+</div>
+</div>
+</body>
+</html>
+
Index: modules/uoa-validator-admin/trunk/src/main/webapp/jsps/fonts/OpenSans-Light-webfont.eot
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/trunk/src/main/webapp/jsps/fonts/OpenSans-Light-webfont.eot
===================================================================
--- modules/uoa-validator-admin/trunk/src/main/webapp/jsps/fonts/OpenSans-Light-webfont.eot	(nonexistent)
+++ modules/uoa-validator-admin/trunk/src/main/webapp/jsps/fonts/OpenSans-Light-webfont.eot	(revision 47450)

Property changes on: modules/uoa-validator-admin/trunk/src/main/webapp/jsps/fonts/OpenSans-Light-webfont.eot
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/trunk/src/main/webapp/jsps/chooseRuleSet.jsp
===================================================================
--- modules/uoa-validator-admin/trunk/src/main/webapp/jsps/chooseRuleSet.jsp	(nonexistent)
+++ modules/uoa-validator-admin/trunk/src/main/webapp/jsps/chooseRuleSet.jsp	(revision 47450)
@@ -0,0 +1,49 @@
+<%@ page contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<%@ taglib prefix="s" uri="/struts-tags"%>
+<html>
+<head>
+<link href="jsps/favicon.ico" rel="shortcut icon" type="image/x-icon" />
+<link href="jsps/style.css" rel="stylesheet" type="text/css" media="screen" />
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title><s:text name="chooseRuleSet.title"/></title>
+</head>
+<body class="left">
+<div id="wrapper">
+	<jsp:include page="menu.jsp"/>
+	<div id="page">
+	<div id="page-bgtop">
+	<div id="middle">
+            <div class="middle-b">
+                <div class="background">
+			 <div id="left">
+                              <div id="left_container" >
+                                   <h2 class="helpHdr">Info</h2>
+                                   <s:text name="help.admin"/>
+                              </div>
+                         </div>
+                        <div id="main">
+                        <div id="main_container" class="clearfix">
+			<div id="content">
+				<h2 class="title"><s:text name="chooseRuleSet.title"/></h2>
+                                <div class="entry">
+                                        <s:form action="getRulesForSet">
+                                                <s:select name="setId" list="sets" listValue="name" listKey="id" key="chooseRuleSet.label"/>
+                                                <s:submit cssClass="button-default"/>
+                                        </s:form>
+                                </div>
+			</div>
+			</div>
+			</div>
+		</div>
+	</div>
+	</div>
+	</div>
+
+    <div id="footer">
+                <jsp:include page="footer.jsp"/>
+        </div>
+</div>
+</div>
+</body>
+</html>
Index: modules/uoa-validator-admin/trunk/src/main/webapp/jsps/chooseRuleCategory.jsp
===================================================================
--- modules/uoa-validator-admin/trunk/src/main/webapp/jsps/chooseRuleCategory.jsp	(nonexistent)
+++ modules/uoa-validator-admin/trunk/src/main/webapp/jsps/chooseRuleCategory.jsp	(revision 47450)
@@ -0,0 +1,51 @@
+<%@ page contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<%@ taglib prefix="s" uri="/struts-tags"%>
+<html>
+<head>
+<link href="jsps/favicon.ico" rel="shortcut icon" type="image/x-icon" />
+<link href="jsps/style.css" rel="stylesheet" type="text/css" media="screen" />
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title><s:text name="chooseRuleCategory.title"/></title>
+</head>
+<body class="left">
+<div id="wrapper">
+	<jsp:include page="menu.jsp"/>
+	<div id="page">
+	<div id="page-bgtop">
+	<div id="middle">
+            <div class="middle-b">
+                <div class="background">
+			 <div id="left">
+                              <div id="left_container" >
+                                   <h2 class="helpHdr">Info</h2>
+                                   <s:text name="help.admin"/>
+                              </div>
+                         </div>
+                        <div id="main">
+                        <div id="main_container" class="clearfix">
+			<div id="content">
+				<h2 class="title"><s:text name="chooseRuleCategory.title"/></h2>
+                                <div class="entry">
+                                        <s:form action="prepareAddRule">
+                                                <s:select key="help.chooseRuleCategory.type.title" name="type" list="ruleTypes"/>
+                                                <s:radio name="jobType" list="#{'content':'OAI Content', 'usage':'OAI Usage'}" value="defaultJobType" label="%{getText(\"jobs.job_type.name\")}" title="%{getText(\"jobs.job_type.description\")}" />
+                                                <s:checkbox name="forCris" label="Is the rule for Cris Guidelines?"/>
+                                                <s:submit cssClass="button-default"/>
+                                        </s:form>
+                                </div>
+			</div>
+			</div>
+			</div>
+		</div>
+	</div>
+	</div>
+	</div>
+
+    <div id="footer">
+                <jsp:include page="footer.jsp"/>
+        </div>
+</div>
+</div>
+</body>
+</html>
Index: modules/uoa-validator-admin/trunk/src/main/webapp/jsps/editUser.jsp
===================================================================
--- modules/uoa-validator-admin/trunk/src/main/webapp/jsps/editUser.jsp	(nonexistent)
+++ modules/uoa-validator-admin/trunk/src/main/webapp/jsps/editUser.jsp	(revision 47450)
@@ -0,0 +1,50 @@
+<%@ page contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<%@ taglib prefix="s" uri="/struts-tags"%>
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title><s:text name="editUser.title"/></title>
+<link href="jsps/favicon.ico" rel="shortcut icon" type="image/x-icon" />
+<link href="jsps/style.css" rel="stylesheet" type="text/css" media="screen" />
+</head>
+<body>
+<div id="wrapper">
+	<jsp:include page="menu.jsp"/>
+	<div id="page">
+        <div id="page-bgtop">
+            <div id="middle">
+                    <div class="middle-b">
+                        <div class="background">
+                            <div id="main">
+                                <div id="main_container" class="clearfix">
+                                    <div id="mainmiddle" class="floatbox">
+                                        <h1><s:text name="editUser.title"/></h1>
+                                        
+                                        <%--<p class="meta"><a href='<s:url value="/jsps/help.jsp#addRule"/>' target="_blank"><s:text name="help"/></a></p>--%>
+                                        <div class="entry">
+                                            <s:form action="editUser">
+                                                <div class="field"><s:textfield name="user.username" key="registration.username" readonly="true" requiredLabel="true"/></div>
+                                                <div class="field"><s:textfield name="user.email" key="registration.email" readonly="true" requiredLabel="true"/></div>
+                                            	<div class="field"><s:textfield name="user.firstname" key="registration.firstName" requiredLabel="true"/></div>
+                                                <div class="field"><s:textfield name="user.lastname" key="registration.lastName" requiredLabel="true"/></div>
+                                                <div class="field"><s:textfield name="user.institution" key="registration.institution"/></div>
+                                                <div class="field"><tr><td colspan="2"><hr class="dotted"/></td></tr></div>
+                                                <div class=" field float-left"><s:submit value="Update"/></div>
+                                            </s:form>
+                                        </div>
+                                    </div>
+                                </div>
+                            </div>
+                        </div>
+                    </div>
+                </div>
+        </div>
+        <!-- NMI This needs to be the same in all pages and the text is some properties file -->
+        <div id="footer"> 
+			<jsp:include page="footer.jsp"/>
+		</div>
+	</div>
+	</div>
+</body>
+</html>
\ No newline at end of file
Index: modules/uoa-validator-admin/trunk/src/main/webapp/jsps/createRuleSet.jsp
===================================================================
--- modules/uoa-validator-admin/trunk/src/main/webapp/jsps/createRuleSet.jsp	(nonexistent)
+++ modules/uoa-validator-admin/trunk/src/main/webapp/jsps/createRuleSet.jsp	(revision 47450)
@@ -0,0 +1,106 @@
+<%@ page contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<%@ taglib prefix="s" uri="/struts-tags"%>
+<html>
+<head>
+<link href="jsps/favicon.ico" rel="shortcut icon" type="image/x-icon" />
+<link href="jsps/style.css" rel="stylesheet" type="text/css" media="screen" />
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<s:if test="%{#session.isAdmin != null && #session.isAdmin.equals(\"true\")}">
+        <s:set name="isAdmin" value="true"/>
+</s:if>
+<s:else>
+        <s:set name="isAdmin" value="false"/>
+</s:else>
+<title>
+        <s:if test="%{#isAdmin}">
+                <s:text name="createRuleSet.title"/>
+        </s:if>
+        <s:else>
+                <s:text name="createRuleSet.title2"/>
+        </s:else>
+</title>
+</head>
+<body class="left">
+<div id="wrapper">
+	<jsp:include page="menu.jsp"/>
+	<div id="page">
+	<div id="page-bgtop">
+	<div id="middle">
+            <div class="middle-b">
+                <div class="background">
+			 <div id="left">
+                              <div id="left_container" >
+                                   <h2 class="helpHdr">Info</h2>
+                                   <s:text name="help.admin"/>
+                              </div>
+                         </div>
+                        <div id="main">
+                        <div id="main_container" class="clearfix">
+			<div id="content">
+				<s:if test="%{#isAdmin}">
+                                        <h2 class="title"><s:text name="createRuleSet.title"/></h2>
+                                </s:if>
+                                <s:else>
+                                        <h2 class="title"><s:text name="createRuleSet.title2"/></h2>
+                                </s:else>
+                                <div class="entry">
+                                        <s:form action="createRuleSet">
+                                                <s:hidden name="funct"/>
+                                                <s:hidden name="ruleSet.id"/>
+                                                <s:textfield name="ruleSet.name" key="createRuleSet.name"/>
+                                                <s:textfield name="ruleSet.shortName" key="createRuleSet.shortName"/>
+                                                <s:textfield name="ruleSet.description" key="createRuleSet.description"/>
+                                                <s:textfield name="ruleSet.guidelinesAcronym" key="createRuleSet.guidelinesAcronym"/>
+<%--                                                 <s:textfield name="ruleSet.visibility" key="createRuleSet.visibility"/> --%>
+                                                 
+                                                <s:select key="createRuleSet.visibility"
+                                                       name="ruleSet.visibility"
+                                                       list="deployEnvironments"
+                                                       multiple="true"
+                                                       size="%{#ruleSet.visibility.size()}"
+                                                       value="%{ruleSet.visibility}"
+                                                       disabled='%{!#isAdmin}'
+                                                /> 
+                                                 
+                                                <s:select key="createRuleSet.rulesContent"
+                                                       name="chosenContentRules"
+                                                       list="rulesContent"
+                                                       listKey="id"
+                                                       listValue="name"
+                                                       multiple="true"
+                                                       size="%{#rulesContent.size()}"
+                                                       value="%{ruleIdsContent}"
+                                                       disabled='%{!#isAdmin}'
+                                                />
+                                                <s:select key="createRuleSet.rulesUsage"
+                                                       name="chosenUsageRules"
+                                                       list="rulesUsage"
+                                                       listKey="id"
+                                                       listValue="name"
+                                                       multiple="true"
+                                                       size="%{#rulesUsage.size()}"
+                                                       value="%{ruleIdsUsage}"
+                                                       disabled='%{!#isAdmin}'
+                                                />
+
+                                                <s:if test="%{#isAdmin}">
+                                                	<s:submit cssClass="button-default"/>
+                                                </s:if>
+                                        </s:form>
+                                </div>
+
+			</div>
+			</div>
+			</div>
+		</div>
+	</div>
+	</div>
+	</div>
+    <div id="footer">
+                <jsp:include page="footer.jsp"/>
+        </div>
+	</div>
+</div>
+</body>
+</html>
Index: modules/uoa-validator-admin/trunk/src/main/webapp/jsps/fonts/DroidSans-webfont.svg
===================================================================
--- modules/uoa-validator-admin/trunk/src/main/webapp/jsps/fonts/DroidSans-webfont.svg	(nonexistent)
+++ modules/uoa-validator-admin/trunk/src/main/webapp/jsps/fonts/DroidSans-webfont.svg	(revision 47450)
@@ -0,0 +1,251 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" >
+<svg xmlns="http://www.w3.org/2000/svg">
+<metadata>
+This is a custom SVG webfont generated by Font Squirrel.
+Copyright   : Digitized data copyright  2007 Google Corporation
+Foundry     : Ascender Corporation
+Foundry URL : httpwwwascendercorpcom
+</metadata>
+<defs>
+<font id="DroidSansRegular" horiz-adv-x="1128" >
+<font-face units-per-em="2048" ascent="1638" descent="-410" />
+<missing-glyph horiz-adv-x="532" />
+<glyph unicode=" "  horiz-adv-x="532" />
+<glyph unicode="&#x09;" horiz-adv-x="532" />
+<glyph unicode="&#xa0;" horiz-adv-x="532" />
+<glyph unicode="!" horiz-adv-x="551" d="M147 111q0 38 10 64.5t27 43t40 24t50 7.5q26 0 49.5 -7.5t40.5 -24t27 -43t10 -64.5q0 -37 -10 -63.5t-27 -43.5t-40.5 -25t-49.5 -8q-27 0 -50 8t-40 25t-27 43.5t-10 63.5zM164 1462h223l-51 -1048h-121z" />
+<glyph unicode="&#x22;" horiz-adv-x="823" d="M133 1462h197l-41 -528h-115zM494 1462h196l-41 -528h-114z" />
+<glyph unicode="#" horiz-adv-x="1323" d="M51 428v137h285l65 328h-274v137h299l82 432h147l-82 -432h293l84 432h144l-84 -432h262v-137h-289l-63 -328h280v-137h-307l-82 -428h-147l84 428h-291l-82 -428h-144l78 428h-258zM483 565h291l64 328h-291z" />
+<glyph unicode="$" d="M123 172v172q33 -16 76.5 -32.5t91.5 -29.5t98.5 -21.5t97.5 -8.5v434q-89 30 -154.5 63t-108.5 75.5t-64 97.5t-21 129q0 67 24.5 122.5t70 97t110 68t143.5 35.5v180h138v-176q100 -5 184.5 -26t151.5 -52l-66 -145q-56 25 -126 45.5t-144 26.5v-422q88 -31 155.5 -64 t113 -74.5t68.5 -95t23 -125.5q0 -70 -25 -127t-71.5 -99t-113 -69.5t-150.5 -39.5v-230h-138v221q-50 0 -101 4.5t-99 13.5t-90 22t-74 30zM315 1049q0 -36 8.5 -64.5t28.5 -52t53 -42.5t82 -36v369q-89 -16 -130.5 -60.5t-41.5 -113.5zM625 262q93 14 138.5 63t45.5 121 q0 33 -10 60.5t-31.5 50t-56.5 41.5t-86 37v-373z" />
+<glyph unicode="%" horiz-adv-x="1690" d="M102 1026q0 108 17.5 193t54 143.5t93 89.5t134.5 31q75 0 131.5 -31t95 -89.5t58 -143.5t19.5 -193t-18 -194t-55 -145t-94.5 -90.5t-136.5 -31.5q-73 0 -129 31.5t-94 90.5t-57 145t-19 194zM250 1026q0 -165 35.5 -247.5t115.5 -82.5q156 0 156 330q0 328 -156 328 q-80 0 -115.5 -81.5t-35.5 -246.5zM362 0l812 1462h157l-811 -1462h-158zM985 440q0 108 17.5 193t54 143.5t93 89.5t134.5 31q75 0 131.5 -31t94.5 -89.5t57.5 -143.5t19.5 -193t-17.5 -193.5t-54.5 -144.5t-94.5 -90.5t-136.5 -31.5q-74 0 -130 31.5t-93.5 90.5 t-56.5 144.5t-19 193.5zM1133 440q0 -165 35.5 -247t115.5 -82q156 0 156 329q0 328 -156 328q-80 0 -115.5 -81.5t-35.5 -246.5z" />
+<glyph unicode="&#x26;" horiz-adv-x="1438" d="M109 381q0 78 20 139t58.5 111t94 93t126.5 85q-31 36 -61 74.5t-52.5 82t-36.5 93t-14 106.5q0 75 25 134.5t72 101t116 63t157 21.5q83 0 148.5 -21.5t111 -63t69.5 -101t24 -134.5q0 -64 -25 -118.5t-67 -101t-96.5 -86t-114.5 -75.5l352 -372q27 29 48.5 59t38.5 64 t30.5 73t23.5 86h184q-15 -66 -35.5 -121.5t-47 -104.5t-59 -91.5t-71.5 -83.5l277 -293h-225l-168 172q-49 -45 -97 -80.5t-102 -60t-116 -38t-140 -13.5q-105 0 -188.5 26.5t-141 78t-88 126t-30.5 170.5zM299 387q0 -54 17.5 -99.5t50.5 -78t81 -50.5t109 -18 q58 0 107 11.5t91 31.5t78 47t68 58l-387 407q-52 -33 -92 -64.5t-67.5 -67.5t-41.5 -78.5t-14 -98.5zM422 1165q0 -34 8 -66.5t24.5 -65t42.5 -66t62 -70.5q59 35 102 66t71 63t42 67t14 76q0 36 -12.5 66.5t-36 52.5t-56.5 34.5t-75 12.5q-86 0 -136 -44.5t-50 -125.5z " />
+<glyph unicode="'" horiz-adv-x="463" d="M133 1462h197l-41 -528h-115z" />
+<glyph unicode="(" horiz-adv-x="616" d="M82 561q0 125 18 246.5t55 236t93.5 220t134.5 198.5h172q-140 -193 -212.5 -424t-72.5 -475q0 -119 18.5 -237t54 -231t88.5 -219t122 -200h-170q-78 90 -134.5 193t-93.5 215.5t-55 232.5t-18 244z" />
+<glyph unicode=")" horiz-adv-x="616" d="M61 1462h172q78 -93 134.5 -198.5t94 -220t55.5 -236t18 -246.5q0 -124 -18 -244t-55.5 -232.5t-94 -215.5t-134.5 -193h-170q69 94 122 200t89 219t54 231t18 237q0 244 -72 475t-213 424z" />
+<glyph unicode="*" d="M82 1081l29 193l391 -111l-43 393h205l-43 -393l397 111l26 -193l-378 -28l245 -326l-178 -96l-176 358l-158 -358l-184 96l242 326z" />
+<glyph unicode="+" d="M102 647v150h387v389h150v-389h387v-150h-387v-385h-150v385h-387z" />
+<glyph unicode="," horiz-adv-x="512" d="M63 -264q15 61 29.5 127t28 131.5t24.5 128t19 115.5h198l15 -23q-14 -54 -33.5 -115t-43 -123t-49 -123.5t-50.5 -117.5h-138z" />
+<glyph unicode="-" horiz-adv-x="659" d="M82 465v168h496v-168h-496z" />
+<glyph unicode="." horiz-adv-x="549" d="M147 111q0 38 10 64.5t27 43t40 24t50 7.5q26 0 49.5 -7.5t40.5 -24t27 -43t10 -64.5q0 -37 -10 -63.5t-27 -43.5t-40.5 -25t-49.5 -8q-27 0 -50 8t-40 25t-27 43.5t-10 63.5z" />
+<glyph unicode="/" horiz-adv-x="764" d="M20 0l545 1462h178l-544 -1462h-179z" />
+<glyph unicode="0" d="M98 733q0 177 25.5 317t81 236.5t144 147.5t214.5 51q119 0 207 -50.5t146 -147t87 -236.5t29 -318q0 -177 -25.5 -317t-82 -237t-145.5 -148t-216 -51q-118 0 -205.5 51t-145 148t-86 237t-28.5 317zM283 733q0 -150 15 -262t48 -186.5t86.5 -112t130.5 -37.5t131 37 t88.5 111t50 186.5t15.5 263.5q0 150 -15.5 262t-50 186t-88.5 111t-131 37t-130.5 -37t-86.5 -111t-48 -186t-15 -262z" />
+<glyph unicode="1" d="M178 1163l383 299h150v-1462h-176v913q0 43 0.5 92t2 97.5t3 93t2.5 78.5q-17 -18 -30 -31t-26.5 -25t-28.5 -25.5t-36 -31.5l-148 -121z" />
+<glyph unicode="2" d="M96 0v156l350 381q75 81 134 148t100.5 131t63.5 128.5t22 140.5q0 59 -17 104t-48.5 76.5t-74.5 47.5t-96 16q-95 0 -171.5 -38.5t-145.5 -98.5l-102 119q40 36 86 67.5t99 54.5t112 36.5t124 13.5q96 0 173.5 -27t131.5 -77.5t83.5 -123t29.5 -163.5q0 -85 -26.5 -162 t-73 -151.5t-111 -149.5t-139.5 -156l-281 -299v-8h689v-166h-912z" />
+<glyph unicode="3" d="M82 59v170q87 -46 188.5 -71t194.5 -25q92 0 159 20t110.5 57t64 91t20.5 121q0 68 -26.5 116.5t-75.5 80t-119.5 46.5t-159.5 15h-133v151h133q81 0 144 20t105.5 57t64.5 88t22 112q0 52 -18 93t-51 69.5t-79 43.5t-102 15q-107 0 -188.5 -33.5t-155.5 -87.5l-92 125 q38 31 84.5 58t101.5 47.5t117.5 32.5t132.5 12q108 0 189.5 -27t136.5 -75.5t83 -115t28 -145.5q0 -73 -23 -133t-64.5 -104t-99.5 -72.5t-129 -40.5v-6q177 -22 269 -112.5t92 -235.5q0 -96 -32.5 -176t-98.5 -138t-167 -90t-239 -32q-109 0 -205.5 17t-181.5 62z" />
+<glyph unicode="4" d="M23 328v159l663 983h188v-976h213v-166h-213v-328h-176v328h-675zM201 494h497v356q0 56 1.5 117.5t3.5 120t4.5 109.5t3.5 85h-9q-7 -20 -17.5 -44.5t-23 -49t-25.5 -47.5t-24 -39z" />
+<glyph unicode="5" d="M131 59v172q33 -23 77.5 -41t93.5 -30t98.5 -18.5t91.5 -6.5q79 0 141 18.5t105 57.5t66 98t23 140q0 143 -88 218.5t-256 75.5q-27 0 -58.5 -2.5t-63 -6.5t-60 -8.5t-49.5 -8.5l-90 57l55 688h690v-166h-532l-39 -419q32 6 84.5 13t124.5 7q99 0 184.5 -27.5t149 -81.5 t99.5 -134t36 -185q0 -114 -34 -205t-101 -154t-165.5 -96.5t-226.5 -33.5q-51 0 -100.5 5t-95 14.5t-86.5 24.5t-74 35z" />
+<glyph unicode="6" d="M113 625q0 105 10.5 209t37 199.5t72.5 177.5t117 142.5t170 95t232 34.5q19 0 42 -1t46.5 -3.5t45 -6t38.5 -8.5v-155q-35 12 -79 18t-87 6q-90 0 -158.5 -21.5t-118.5 -60.5t-83.5 -93t-54.5 -119.5t-31 -139.5t-13 -154h12q20 36 48.5 67.5t66.5 54t85.5 35.5 t106.5 13q95 0 172 -29.5t131 -86.5t83.5 -139.5t29.5 -188.5q0 -114 -31 -205t-89 -154.5t-140 -97.5t-184 -34q-100 0 -187.5 39t-151.5 119t-101 201t-37 286zM295 506q0 -67 18.5 -133.5t55 -119.5t91.5 -86.5t128 -33.5q60 0 109.5 20.5t85.5 62t55.5 105t19.5 150.5 q0 70 -16.5 125.5t-49.5 94.5t-82.5 60t-115.5 21q-67 0 -122.5 -23.5t-94.5 -61t-60.5 -85.5t-21.5 -96z" />
+<glyph unicode="7" d="M90 1296v166h940v-145l-555 -1317h-194l563 1296h-754z" />
+<glyph unicode="8" d="M106 373q0 75 22.5 135t60.5 108t90 85t110 65q-49 31 -92 67.5t-74.5 81.5t-50 99.5t-18.5 120.5q0 87 33.5 152.5t90.5 109.5t131.5 66t155.5 22q84 0 158.5 -22t131 -66t89.5 -110t33 -154q0 -67 -20 -121t-55 -97.5t-83 -78t-104 -62.5q58 -31 113.5 -69t99 -85.5 t70 -106.5t26.5 -132q0 -92 -33.5 -166.5t-94 -126.5t-145 -80t-186.5 -28q-110 0 -195.5 27t-144 77.5t-89 123.5t-30.5 165zM285 371q0 -53 16 -97.5t50 -76t86 -49t124 -17.5q70 0 123.5 17.5t89.5 50t54 78.5t18 102q0 52 -19.5 94t-56 78t-87.5 68t-114 63l-30 14 q-126 -60 -190 -137.5t-64 -187.5zM332 1126q0 -57 17.5 -98t48.5 -73t74.5 -57.5t94.5 -49.5q48 22 90.5 48t74 59t49.5 75t18 96q0 101 -63 154t-173 53q-106 0 -168.5 -53t-62.5 -154z" />
+<glyph unicode="9" d="M106 991q0 114 31.5 205.5t89 155t140 97.5t184.5 34q101 0 188 -39t151 -119t101 -201.5t37 -285.5q0 -105 -10.5 -209.5t-37 -199.5t-72.5 -177.5t-117 -142.5t-170 -94.5t-232 -34.5q-19 0 -42 1t-46 3.5t-45 5.5t-39 8v156q35 -13 79 -19t87 -6q135 0 222 47 t138 127.5t72.5 187.5t26.5 226h-13q-20 -36 -48 -67t-66 -54t-86 -36t-107 -13q-95 0 -172 29.5t-131 86.5t-83.5 139.5t-29.5 188.5zM283 991q0 -70 16.5 -125.5t49.5 -94.5t82.5 -60t115.5 -21q68 0 123 23.5t94 61t60.5 85.5t21.5 96q0 67 -18.5 133.5t-55 120 t-91.5 86.5t-128 33q-60 0 -109.5 -20t-85.5 -62t-55.5 -105.5t-19.5 -150.5z" />
+<glyph unicode=":" horiz-adv-x="549" d="M147 111q0 38 10 64.5t27 43t40 24t50 7.5q26 0 49.5 -7.5t40.5 -24t27 -43t10 -64.5q0 -37 -10 -63.5t-27 -43.5t-40.5 -25t-49.5 -8q-27 0 -50 8t-40 25t-27 43.5t-10 63.5zM147 987q0 39 10 65.5t27 43t40 23.5t50 7q26 0 49.5 -7t40.5 -23.5t27 -43t10 -65.5 q0 -37 -10 -63t-27 -43t-40.5 -25t-49.5 -8q-27 0 -50 8t-40 25t-27 43t-10 63z" />
+<glyph unicode=";" horiz-adv-x="549" d="M63 -264q15 61 29.5 127t28 131.5t24.5 128t19 115.5h198l15 -23q-14 -54 -33.5 -115t-43 -123t-49 -123.5t-50.5 -117.5h-138zM147 987q0 39 10 65.5t27 43t40 23.5t50 7q26 0 49.5 -7t40.5 -23.5t27 -43t10 -65.5q0 -37 -10 -63t-27 -43t-40.5 -25t-49.5 -8 q-27 0 -50 8t-40 25t-27 43t-10 63z" />
+<glyph unicode="&#x3c;" d="M102 662v102l924 481v-160l-735 -364l735 -322v-161z" />
+<glyph unicode="=" d="M102 442v150h924v-150h-924zM102 852v149h924v-149h-924z" />
+<glyph unicode="&#x3e;" d="M102 238v161l736 322l-736 364v160l924 -481v-102z" />
+<glyph unicode="?" horiz-adv-x="872" d="M37 1382q81 42 175 71.5t191 29.5q93 0 167.5 -25.5t126.5 -73.5t80 -117.5t28 -156.5q0 -67 -13.5 -119.5t-40.5 -97.5t-67 -87t-94 -89q-52 -45 -85 -78.5t-52 -65t-26 -64.5t-7 -77v-18h-139v37q0 57 7.5 103t27 86t52.5 78.5t83 80.5q48 41 82 74.5t55.5 68t32 74 t10.5 92.5q0 48 -15 87.5t-43.5 68t-71 44t-98.5 15.5q-83 0 -158 -26t-145 -60zM233 111q0 38 10 64.5t27 43t40 24t50 7.5q26 0 49.5 -7.5t40.5 -24t27 -43t10 -64.5q0 -37 -10 -63.5t-27 -43.5t-40.5 -25t-49.5 -8q-27 0 -50 8t-40 25t-27 43.5t-10 63.5z" />
+<glyph unicode="@" horiz-adv-x="1774" d="M109 575q0 188 59 350.5t168.5 281.5t265 187t348.5 68q156 0 287 -50.5t226.5 -145t148.5 -230t53 -305.5q0 -62 -9.5 -124.5t-28 -119t-47 -105t-66.5 -84.5t-86.5 -56.5t-106.5 -20.5q-45 0 -81.5 15t-62.5 40t-42.5 57.5t-22.5 67.5h-4q-18 -37 -45 -70t-62.5 -57.5 t-80 -38.5t-97.5 -14q-77 0 -136.5 28t-100.5 78.5t-62.5 121.5t-21.5 157q0 101 29.5 185t85 145t134.5 95t177 34q45 0 90 -4t86 -11t75.5 -15.5t57.5 -16.5l-23 -416q-1 -22 -1.5 -35.5t-0.5 -21.5v-12v-7q0 -53 10.5 -87t27.5 -54t38.5 -27.5t44.5 -7.5q46 0 81 30.5 t58.5 82.5t35.5 122t12 148q0 142 -43 252.5t-119 186.5t-180.5 115.5t-227.5 39.5q-169 0 -298 -55.5t-216.5 -155t-132.5 -236t-45 -298.5q0 -151 39.5 -268t116 -197t190 -121t260.5 -41q61 0 120.5 7t115 19t105.5 27.5t93 32.5v-141q-86 -38 -194 -60t-238 -22 q-179 0 -319.5 51t-238 148.5t-148.5 238t-51 319.5zM662 602q0 -133 50.5 -192.5t135.5 -59.5q55 0 94 22.5t64 64t38 99t17 126.5l14 253q-28 8 -66.5 14.5t-80.5 6.5q-74 0 -124.5 -29t-82 -76t-45.5 -107t-14 -122z" />
+<glyph unicode="A" horiz-adv-x="1245" d="M0 0l537 1468h170l538 -1468h-190l-160 453h-545l-162 -453h-188zM410 618h426l-148 424q-6 18 -14.5 44t-17.5 56t-18 62.5t-17 63.5q-7 -31 -16 -64t-18 -63.5t-17.5 -56t-14.5 -42.5z" />
+<glyph unicode="B" horiz-adv-x="1272" d="M199 0v1462h399q128 0 225.5 -19.5t163 -63t98.5 -114t33 -173.5q0 -62 -19.5 -116t-56.5 -95t-91.5 -68.5t-123.5 -36.5v-10q69 -12 129.5 -34.5t105.5 -62t71 -99.5t26 -146q0 -100 -32.5 -178.5t-94 -133t-149.5 -83.5t-199 -29h-485zM385 158h266q88 0 147.5 20 t96 56t52.5 86.5t16 111.5q0 56 -16.5 103t-54 80.5t-99.5 52t-154 18.5h-254v-528zM385 842h244q84 0 141 15t92 44.5t50.5 74t15.5 103.5q0 120 -77 172t-243 52h-223v-461z" />
+<glyph unicode="C" horiz-adv-x="1235" d="M125 733q0 166 43.5 304t128 237t209.5 154t287 55q108 0 206 -22t177 -64l-78 -156q-63 32 -137 55t-168 23q-107 0 -194 -40.5t-148.5 -116.5t-95 -185t-33.5 -246q0 -141 29.5 -250.5t88.5 -184.5t147 -114t206 -39q89 0 169 17.5t158 40.5v-162q-39 -15 -78 -26.5 t-81.5 -18.5t-91 -10.5t-107.5 -3.5q-164 0 -284 54t-198.5 153t-116.5 238t-38 308z" />
+<glyph unicode="D" horiz-adv-x="1401" d="M199 0v1462h407q153 0 277 -46t211 -136.5t134.5 -224.5t47.5 -310q0 -185 -48 -324.5t-139 -233t-223.5 -140.5t-300.5 -47h-366zM385 160h162q264 0 398 146t134 433q0 146 -33 252.5t-96 175.5t-155 102.5t-209 33.5h-201v-1143z" />
+<glyph unicode="E" horiz-adv-x="1081" d="M199 0v1462h759v-164h-573v-452h535v-162h-535v-520h573v-164h-759z" />
+<glyph unicode="F" horiz-adv-x="1006" d="M199 0v1462h759v-164h-573v-516h535v-164h-535v-618h-186z" />
+<glyph unicode="G" horiz-adv-x="1413" d="M125 733q0 172 47.5 311t138.5 236.5t224.5 150t304.5 52.5q111 0 213 -22t190 -64l-72 -162q-36 17 -77.5 32t-85.5 26.5t-90.5 18.5t-92.5 7q-122 0 -216 -40.5t-157.5 -116.5t-96.5 -185t-33 -246q0 -130 27.5 -238t87.5 -186t155 -121t229 -43q44 0 80.5 2.5 t67.5 6.5t58.5 9.5t53.5 10.5v436h-299v164h484v-717q-55 -18 -111 -32t-115 -23.5t-124 -14.5t-140 -5q-157 0 -278 52.5t-204 150t-126 237t-43 313.5z" />
+<glyph unicode="H" horiz-adv-x="1436" d="M199 0v1462h186v-616h666v616h186v-1462h-186v682h-666v-682h-186z" />
+<glyph unicode="I" horiz-adv-x="694" d="M82 0v102l172 41v1176l-172 41v102h530v-102l-172 -41v-1176l172 -41v-102h-530z" />
+<glyph unicode="J" horiz-adv-x="555" d="M-184 -205q34 -9 73 -14.5t84 -5.5q37 0 74.5 9.5t68 34.5t49.5 69t19 112v1462h187v-1442q0 -105 -29.5 -182t-82 -127.5t-126 -75t-162.5 -24.5q-51 0 -89 6.5t-66 17.5v160z" />
+<glyph unicode="K" horiz-adv-x="1186" d="M199 0v1462h186v-731l121 168l452 563h209l-520 -637l539 -825h-211l-451 698l-139 -114v-584h-186z" />
+<glyph unicode="L" horiz-adv-x="1006" d="M199 0v1462h186v-1296h573v-166h-759z" />
+<glyph unicode="M" horiz-adv-x="1782" d="M199 0v1462h276l412 -1192h6l414 1192h276v-1462h-186v887q0 52 2 119t5 128q4 71 7 144h-8l-447 -1278h-153l-443 1280h-8q6 -74 10 -147q4 -63 6.5 -132.5t2.5 -126.5v-874h-172z" />
+<glyph unicode="N" horiz-adv-x="1493" d="M199 0v1462h213l716 -1204h7q-3 76 -7 150q0 32 -2 66l-4 66q-2 34 -2 65v57v800h174v-1462h-215l-719 1210h-8q6 -77 10 -153q4 -65 6.5 -136t2.5 -128v-793h-172z" />
+<glyph unicode="O" horiz-adv-x="1520" d="M125 735q0 170 38 308.5t117 236.5t199 151.5t283 53.5q155 0 272.5 -53.5t197.5 -152t120.5 -237t40.5 -309.5q0 -169 -40.5 -308t-120.5 -238t-198.5 -153t-273.5 -54q-163 0 -282.5 54t-198 153t-116.5 238.5t-38 309.5zM322 733q0 -137 26 -246.5t79.5 -186t136 -117 t196.5 -40.5t196.5 40.5t136 117t78.5 186t25 246.5q0 138 -25 247t-78 184.5t-135 116t-196 40.5t-197 -40.5t-137 -116t-80 -184.5t-26 -247z" />
+<glyph unicode="P" horiz-adv-x="1180" d="M199 0v1462h362q134 0 231 -28.5t160 -83t93 -134.5t30 -182q0 -91 -27.5 -175t-90.5 -148.5t-166.5 -103t-255.5 -38.5h-150v-569h-186zM385 727h129q93 0 162.5 16t115 51.5t68.5 92t23 137.5q0 142 -82 210.5t-256 68.5h-160v-576z" />
+<glyph unicode="Q" horiz-adv-x="1518" d="M125 735q0 170 38 308.5t117 236.5t199 151.5t283 53.5q155 0 272.5 -53.5t197.5 -152t120.5 -237t40.5 -309.5q0 -131 -24.5 -244t-72 -203.5t-118.5 -156.5t-164 -104q43 -94 111.5 -165.5t158.5 -131.5l-121 -142q-103 73 -189.5 172t-137.5 226q-17 -2 -37.5 -3 t-38.5 -1q-163 0 -282.5 54t-198 153t-116.5 238.5t-38 309.5zM322 733q0 -137 26 -246.5t79.5 -186t136 -117t196.5 -40.5t196.5 40.5t136 117t78.5 186t25 246.5q0 138 -25 247t-78 184.5t-135 116t-196 40.5t-197 -40.5t-137 -116t-80 -184.5t-26 -247z" />
+<glyph unicode="R" horiz-adv-x="1208" d="M199 0v1462h356q266 0 393 -103t127 -312q0 -87 -24.5 -152t-65 -111.5t-92.5 -77.5t-107 -51l398 -655h-219l-351 604h-229v-604h-186zM385 762h164q90 0 153 17.5t103.5 52t59 86t18.5 120.5q0 72 -20.5 122t-62 82t-105 46.5t-150.5 14.5h-160v-541z" />
+<glyph unicode="S" horiz-adv-x="1063" d="M104 49v178q34 -16 77.5 -31.5t91.5 -27.5t99 -19.5t101 -7.5q160 0 236.5 60t76.5 172q0 54 -14.5 94t-51 73.5t-97.5 65t-154 68.5q-89 35 -154.5 76.5t-108 93.5t-63 118t-20.5 150q0 88 32 157t90 116.5t138.5 72.5t177.5 25q119 0 214 -22.5t169 -57.5l-67 -156 q-65 29 -147.5 50.5t-170.5 21.5q-122 0 -189 -56.5t-67 -152.5q0 -57 15 -98.5t50 -75t92.5 -63t141.5 -62.5q91 -36 159.5 -74t114.5 -86t69.5 -111t23.5 -149q0 -97 -34.5 -173.5t-98.5 -129.5t-156 -80.5t-207 -27.5q-111 0 -207.5 17.5t-161.5 51.5z" />
+<glyph unicode="T" horiz-adv-x="1063" d="M20 1298v164h1022v-164h-417v-1298h-187v1298h-418z" />
+<glyph unicode="U" horiz-adv-x="1430" d="M184 520v942h187v-952q0 -175 86.5 -271t261.5 -96q89 0 153 27t105 76t61 117t21 149v952h186v-948q0 -114 -33 -212t-99.5 -170t-167 -113t-236.5 -41q-128 0 -226 38.5t-164.5 109.5t-100.5 170.5t-34 221.5z" />
+<glyph unicode="V" horiz-adv-x="1163" d="M0 1462h197l295 -927q29 -91 50 -175.5t38 -158.5q15 74 38 158.5t54 181.5l293 921h198l-489 -1462h-187z" />
+<glyph unicode="W" horiz-adv-x="1810" d="M20 1462h197l223 -889q12 -46 22 -95.5t18.5 -98.5t15.5 -94.5t12 -83.5q5 37 12.5 86t17.5 103t21.5 109.5t24.5 104.5l225 858h197l229 -856q15 -56 29.5 -112t27 -108.5t22 -99.5t15.5 -85q4 38 10 83t14 94.5t17.5 101t20.5 100.5l200 882h199l-367 -1462h-188 l-254 938q-14 51 -27 105t-24 101q-12 55 -23 107q-11 -51 -22 -106q-10 -47 -22.5 -103t-26.5 -110l-242 -932h-188z" />
+<glyph unicode="X" horiz-adv-x="1120" d="M0 0l453 764l-422 698h198l332 -559l334 559h190l-421 -692l456 -770h-211l-354 635l-367 -635h-188z" />
+<glyph unicode="Y" horiz-adv-x="1079" d="M0 1462h203l336 -739l340 739h200l-446 -893v-569h-187v559z" />
+<glyph unicode="Z" horiz-adv-x="1104" d="M82 0v145l711 1151h-691v166h899v-145l-710 -1151h731v-166h-940z" />
+<glyph unicode="[" horiz-adv-x="621" d="M164 -324v1786h405v-149h-223v-1487h223v-150h-405z" />
+<glyph unicode="\" horiz-adv-x="764" d="M23 1462h178l544 -1462h-178z" />
+<glyph unicode="]" horiz-adv-x="621" d="M51 -174h223v1487h-223v149h406v-1786h-406v150z" />
+<glyph unicode="^" horiz-adv-x="1090" d="M41 549l459 924h102l447 -924h-161l-337 735l-349 -735h-161z" />
+<glyph unicode="_" horiz-adv-x="842" d="M-4 -184h850v-140h-850v140z" />
+<glyph unicode="`" horiz-adv-x="1182" d="M393 1548v21h219q16 -34 37.5 -74.5t44.5 -81t47 -78.5t45 -67v-27h-120q-35 28 -76 69.5t-79.5 85.5t-70 84.5t-47.5 67.5z" />
+<glyph unicode="a" horiz-adv-x="1087" d="M94 307q0 164 115.5 252t351.5 96l184 7v69q0 67 -14.5 112t-42 72.5t-68 39.5t-92.5 12q-83 0 -154.5 -24t-137.5 -58l-64 137q74 40 165 68t191 28q102 0 176.5 -20.5t123 -65t72.5 -113.5t24 -167v-752h-131l-37 152h-8q-33 -45 -66 -77.5t-72 -53.5t-87 -31t-111 -10 q-69 0 -127 19.5t-100.5 60t-66.5 102t-24 145.5zM283 305q0 -92 48.5 -135t127.5 -43q61 0 113 19t90 57.5t59.5 97t21.5 137.5v99l-143 -7q-90 -4 -151 -20t-97.5 -44.5t-52.5 -69t-16 -91.5z" />
+<glyph unicode="b" horiz-adv-x="1200" d="M174 0v1556h182v-376q0 -35 -1 -74.5t-3 -73.5q-2 -40 -4 -78h8q23 35 52 65t67.5 52t86.5 34.5t108 12.5q94 0 171 -36t131.5 -107.5t84.5 -177.5t30 -246q0 -141 -30 -247.5t-84.5 -178.5t-131.5 -108.5t-171 -36.5q-59 0 -107 13t-86.5 34.5t-68 50.5t-52.5 61h-12 l-37 -139h-133zM356 551q0 -101 13.5 -179.5t46 -132t86.5 -81t135 -27.5q135 0 198.5 109t63.5 313q0 208 -63.5 311t-200.5 103q-80 0 -133.5 -25.5t-86 -77.5t-46 -130t-13.5 -183z" />
+<glyph unicode="c" horiz-adv-x="948" d="M113 543q0 157 38 266.5t104.5 178t155.5 99.5t191 31q78 0 152.5 -17t124.5 -42l-54 -154q-23 10 -51 19.5t-58 17t-59 12t-55 4.5q-157 0 -229 -100.5t-72 -312.5q0 -211 72.5 -308.5t220.5 -97.5q81 0 146.5 18.5t119.5 43.5v-162q-54 -29 -115.5 -44t-150.5 -15 q-101 0 -189 31.5t-153 100t-102 175t-37 256.5z" />
+<glyph unicode="d" horiz-adv-x="1200" d="M113 547q0 141 30 247.5t85 178.5t132 108.5t170 36.5q59 0 107 -13t86.5 -35t68.5 -51t52 -61h12q-3 34 -6 65q-2 26 -4 53.5t-2 43.5v436h182v-1556h-147l-27 147h-8q-22 -34 -51.5 -64.5t-68 -53.5t-86.5 -36t-108 -13q-93 0 -170 36t-132 107.5t-85 177.5t-30 246z M301 545q0 -209 63.5 -311.5t200.5 -102.5q76 0 128.5 23t85 70t48 117.5t17.5 164.5v41q0 101 -13.5 179.5t-46 132t-86.5 81t-135 27.5q-135 0 -198.5 -109t-63.5 -313z" />
+<glyph unicode="e" horiz-adv-x="1096" d="M113 541q0 136 33 243t93 181.5t143.5 113.5t184.5 39q99 0 178 -35.5t134 -100t84.5 -155t29.5 -200.5v-113h-692q5 -193 81.5 -284t227.5 -91q51 0 94.5 5t84 14.5t78.5 24t77 32.5v-162q-40 -19 -78.5 -33t-79 -23t-84 -13t-94.5 -4q-110 0 -201 37t-156.5 108 t-101.5 176t-36 240zM305 662h492q0 68 -13.5 124.5t-42 96.5t-72.5 62t-106 22q-114 0 -180.5 -78t-77.5 -227z" />
+<glyph unicode="f" horiz-adv-x="674" d="M29 961v75l194 68v96q0 107 22.5 177.5t65 112.5t104.5 59.5t140 17.5q59 0 108.5 -11.5t88.5 -25.5l-47 -141q-31 11 -67.5 19.5t-76.5 8.5t-69 -9.5t-48 -33.5t-28.5 -65.5t-9.5 -106.5v-104h245v-137h-245v-961h-183v961h-194z" />
+<glyph unicode="g" horiz-adv-x="1061" d="M37 -186q0 60 19.5 105.5t52.5 78.5t76.5 54t90.5 32q-42 19 -69 60t-27 94q0 61 32 105.5t101 86.5q-43 18 -78.5 49.5t-60 72t-38 88.5t-13.5 99q0 89 25 159t74 119t122 75t170 26q37 0 76.5 -5.5t66.5 -14.5h363v-113l-197 -27q28 -35 47 -89.5t19 -123.5 q0 -76 -23.5 -140.5t-71 -111.5t-117.5 -73.5t-163 -26.5q-22 0 -44 0.5t-36 3.5q-17 -10 -33.5 -22.5t-30 -28.5t-22 -36t-8.5 -44q0 -27 12 -43.5t32.5 -25.5t48.5 -12t59 -3h176q93 0 157 -23.5t104.5 -63.5t58.5 -94.5t18 -115.5q0 -88 -32.5 -158t-99.5 -118.5 t-169.5 -74.5t-241.5 -26q-107 0 -187 21t-133 61t-79.5 96.5t-26.5 127.5zM209 -180q0 -37 13 -69t42.5 -55t78 -36.5t120.5 -13.5q186 0 278.5 57.5t92.5 165.5q0 46 -12 75t-39.5 45.5t-72.5 22.5t-110 6h-176q-35 0 -73 -8t-69.5 -30t-52 -60.5t-20.5 -99.5zM301 745 q0 -115 54 -171t153 -56q100 0 151.5 55.5t51.5 174.5q0 123 -52.5 181t-152.5 58q-99 0 -152 -60t-53 -182z" />
+<glyph unicode="h" horiz-adv-x="1206" d="M174 0v1556h182v-462l-8 -144h10q25 43 59.5 74.5t75.5 52.5t87 31t94 10q183 0 275.5 -95.5t92.5 -305.5v-717h-182v707q0 130 -52.5 195t-164.5 65q-81 0 -136 -26t-88.5 -77t-48 -125t-14.5 -170v-569h-182z" />
+<glyph unicode="i" horiz-adv-x="530" d="M160 1395q0 60 30.5 87t75.5 27q22 0 41.5 -6.5t34 -20.5t23 -35.5t8.5 -51.5q0 -58 -31.5 -86.5t-75.5 -28.5q-45 0 -75.5 28t-30.5 87zM174 0v1098h182v-1098h-182z" />
+<glyph unicode="j" horiz-adv-x="530" d="M-68 -319q26 -10 53 -15.5t62 -5.5q27 0 50 7.5t40.5 27t27 52t9.5 83.5v1268h182v-1256q0 -77 -17 -138.5t-53 -105t-90.5 -67t-129.5 -23.5q-48 0 -79.5 7t-54.5 18v148zM160 1395q0 60 30.5 87t75.5 27q22 0 41.5 -6.5t34 -20.5t23 -35.5t8.5 -51.5q0 -58 -31.5 -86.5 t-75.5 -28.5q-45 0 -75.5 28t-30.5 87z" />
+<glyph unicode="k" horiz-adv-x="1016" d="M174 0v1556h180v-714l-16 -275h4l135 170l293 361h211l-401 -475l428 -623h-209l-336 504l-109 -82v-422h-180z" />
+<glyph unicode="l" horiz-adv-x="530" d="M174 0v1556h182v-1556h-182z" />
+<glyph unicode="m" horiz-adv-x="1835" d="M174 0v1098h148l26 -148h10q24 43 57 74.5t72.5 52.5t84 31t90.5 10q120 0 199.5 -44t117.5 -138h8q26 47 62.5 81t80 56.5t91.5 33.5t98 11q175 0 263.5 -95.5t88.5 -305.5v-717h-182v707q0 130 -50 195t-155 65q-73 0 -124 -23.5t-83.5 -69t-47.5 -113t-15 -155.5v-606 h-183v707q0 130 -49.5 195t-154.5 65q-77 0 -129 -26t-83.5 -77t-45 -125t-13.5 -170v-569h-182z" />
+<glyph unicode="n" horiz-adv-x="1206" d="M174 0v1098h148l26 -148h10q25 43 59.5 74.5t75.5 52.5t87 31t94 10q183 0 275.5 -95.5t92.5 -305.5v-717h-182v707q0 130 -52.5 195t-164.5 65q-81 0 -136 -26t-88.5 -77t-48 -125t-14.5 -170v-569h-182z" />
+<glyph unicode="o" horiz-adv-x="1182" d="M113 551q0 136 33.5 241.5t95.5 178t151.5 110t200.5 37.5q103 0 190 -37.5t150.5 -110t99 -178t35.5 -241.5q0 -137 -33.5 -243.5t-96 -179t-151.5 -110.5t-200 -38q-103 0 -190 38t-150.5 110.5t-99 179t-35.5 243.5zM301 551q0 -209 68.5 -314.5t222.5 -105.5 t221.5 105.5t67.5 314.5t-68.5 312.5t-222.5 103.5t-221.5 -103.5t-67.5 -312.5z" />
+<glyph unicode="p" horiz-adv-x="1200" d="M174 -492v1590h148l26 -148h8q23 35 52 65.5t67.5 53t86.5 36t108 13.5q94 0 171 -36t131.5 -107.5t84.5 -177.5t30 -246q0 -141 -30 -247.5t-84.5 -178.5t-131.5 -108.5t-171 -36.5q-59 0 -107 13t-86.5 34.5t-68 50.5t-52.5 61h-12q3 -34 6 -65q2 -26 4 -53.5t2 -43.5 v-469h-182zM356 551q0 -101 13.5 -179.5t46 -132t86.5 -81t135 -27.5q135 0 198.5 109t63.5 313q0 208 -63.5 311t-200.5 103q-76 0 -128.5 -23t-85 -70t-48 -117t-17.5 -165v-41z" />
+<glyph unicode="q" horiz-adv-x="1200" d="M113 547q0 141 30 247.5t85 178.5t132 108.5t170 36.5q59 0 107 -13.5t86 -36t68 -53t53 -65.5h8l27 148h147v-1590h-182v469q0 19 2 48t4 56q3 32 6 66h-12q-22 -34 -51.5 -64.5t-68 -53.5t-86.5 -36t-108 -13q-93 0 -170 36t-132 107.5t-85 177.5t-30 246zM301 545 q0 -209 63.5 -311.5t200.5 -102.5q76 0 128.5 23t85 70t48 117.5t17.5 164.5v41q0 101 -13.5 179.5t-46 132t-86.5 81t-135 27.5q-135 0 -198.5 -109t-63.5 -313z" />
+<glyph unicode="r" horiz-adv-x="817" d="M174 0v1098h148l22 -201h8q25 43 53.5 83t64 70.5t79.5 49t100 18.5q29 0 65 -2.5t62 -7.5l-24 -168q-28 5 -57.5 8.5t-55.5 3.5q-63 0 -115 -25.5t-89.5 -73t-58 -114t-20.5 -147.5v-592h-182z" />
+<glyph unicode="s" horiz-adv-x="924" d="M90 49v166q31 -16 69 -31.5t80 -27.5t86.5 -19.5t88.5 -7.5q65 0 110.5 11t74 31.5t41.5 50t13 65.5q0 31 -10 56t-36.5 49.5t-72.5 49.5t-118 56t-129.5 61t-97.5 67t-61.5 85.5t-21.5 115.5q0 70 27.5 124.5t77.5 91.5t120 56t156 19q97 0 177.5 -21t152.5 -55 l-63 -147q-65 29 -133.5 50.5t-139.5 21.5q-102 0 -151 -33.5t-49 -95.5q0 -35 11.5 -61t39.5 -49t75 -46.5t117 -52.5q72 -30 128.5 -60t96.5 -67.5t61 -85.5t21 -115q0 -80 -29 -140t-83.5 -100.5t-131.5 -60.5t-173 -20q-109 0 -187 17.5t-137 51.5z" />
+<glyph unicode="t" horiz-adv-x="694" d="M33 961v81l155 78l78 230h105v-252h276v-137h-276v-637q0 -97 31.5 -146t103.5 -49q18 0 40.5 2t43.5 5t38.5 7t26.5 7v-138q-13 -6 -33 -12t-44 -10.5t-50 -7t-51 -2.5q-62 0 -115 16t-91.5 55t-60.5 105.5t-22 167.5v637h-155z" />
+<glyph unicode="u" horiz-adv-x="1206" d="M164 381v717h182v-707q0 -130 53 -195t164 -65q81 0 136 26t88.5 76.5t48 124.5t14.5 170v570h182v-1098h-147l-27 147h-10q-25 -43 -59.5 -74.5t-75.5 -52t-87 -30.5t-94 -10q-91 0 -160 23t-115 72t-69.5 125t-23.5 181z" />
+<glyph unicode="v" horiz-adv-x="981" d="M0 1098h188l199 -611q11 -33 26 -85t30 -106t27.5 -102t16.5 -73h7q5 25 17 73t27 102t30 106t26 85l199 611h188l-375 -1098h-231z" />
+<glyph unicode="w" horiz-adv-x="1528" d="M20 1098h191l131 -584q10 -45 20 -97.5t19 -104t16 -97t11 -74.5h6q5 26 13.5 69.5t19 92t21.5 96t21 80.5l179 619h196l172 -619q9 -34 20.5 -80t22.5 -93.5t20 -91.5t13 -73h6q3 26 9.5 69.5t15.5 95.5t19.5 106.5t21.5 101.5l137 584h186l-284 -1098h-215l-168 616 q-4 18 -10 40.5t-12 47.5t-12.5 51t-12.5 51q-14 58 -29 120h-6q-14 -63 -27 -121q-11 -50 -23.5 -103t-23.5 -90l-172 -612h-211z" />
+<glyph unicode="x" horiz-adv-x="1024" d="M35 0l373 563l-353 535h207l250 -410l250 410h207l-355 -535l373 -563h-207l-268 436l-270 -436h-207z" />
+<glyph unicode="y" horiz-adv-x="1001" d="M10 1098h189l215 -613q14 -40 28.5 -84t27 -88t21.5 -85t13 -76h6q5 25 16 68t24.5 91.5t28 95.5t25.5 80l199 611h188l-434 -1241q-28 -81 -60.5 -145.5t-75.5 -109.5t-101 -69.5t-138 -24.5q-52 0 -90 5.5t-65 11.5v145q21 -5 53 -8.5t67 -3.5q48 0 83 11.5t61 33.5 t44.5 54t33.5 73l57 160z" />
+<glyph unicode="z" horiz-adv-x="903" d="M82 0v125l536 836h-503v137h688v-146l-524 -815h542v-137h-739z" />
+<glyph unicode="{" horiz-adv-x="725" d="M61 492v155q125 0 190.5 43t65.5 146v333q0 78 27 133t74.5 90.5t113 52t142.5 17.5v-149q-40 -1 -72.5 -7.5t-55 -24t-34.5 -48t-12 -78.5v-332q0 -105 -59.5 -166.5t-174.5 -81.5v-12q115 -20 174.5 -81t59.5 -167v-331q0 -48 12 -78.5t34.5 -48t55 -24t72.5 -7.5v-150 q-77 1 -142.5 17.5t-113 52t-74.5 90.5t-27 133v334q0 103 -65.5 146t-190.5 43z" />
+<glyph unicode="|" d="M489 -492v2048h150v-2048h-150z" />
+<glyph unicode="}" horiz-adv-x="725" d="M51 -174q40 1 72.5 7.5t55 24t34.5 48t12 78.5v331q0 106 59.5 167t174.5 81v12q-115 20 -174.5 81.5t-59.5 166.5v332q0 48 -12 78.5t-34.5 48t-55 24t-72.5 7.5v149q77 -1 142.5 -17.5t113 -52t74.5 -90.5t27 -133v-333q0 -52 16.5 -88t49 -58.5t80.5 -32.5t110 -10 v-155q-125 0 -190.5 -43t-65.5 -146v-334q0 -78 -27 -133t-74.5 -90.5t-113 -52t-142.5 -17.5v150z" />
+<glyph unicode="~" d="M102 586v162q100 108 248 108q29 0 54 -2.5t52.5 -9t61 -19t80.5 -32.5q37 -16 64.5 -27t51 -17.5t43.5 -9t42 -2.5q28 0 58 9.5t59.5 26t57.5 38.5t52 47v-162q-99 -108 -248 -108q-29 0 -54 2.5t-52.5 9t-61 19t-80.5 32.5q-37 16 -64.5 27t-50 17.5t-43 9t-42.5 2.5 q-28 0 -58 -9.5t-59.5 -26t-57.5 -38.5t-53 -47z" />
+<glyph unicode="&#xa1;" horiz-adv-x="551" d="M147 979q0 37 10 63t27.5 43t40.5 25t49 8q27 0 50 -8t40.5 -25t27 -43t9.5 -63q0 -38 -9.5 -64.5t-27 -43t-40.5 -24t-50 -7.5q-26 0 -49 7.5t-40.5 24t-27.5 43t-10 64.5zM162 -373l51 1049h121l51 -1049h-223z" />
+<glyph unicode="&#xa2;" d="M188 743q0 141 26.5 242.5t75 169.5t118 105.5t155.5 50.5v172h137v-164q72 -3 140 -19.5t114 -39.5l-53 -154q-23 10 -51 19.5t-58 17t-59.5 12t-54.5 4.5q-157 0 -229 -101t-72 -313q0 -210 72.5 -307.5t220.5 -97.5q81 0 146.5 18.5t119.5 42.5v-161q-50 -28 -105 -43 t-131 -17v-200h-137v206q-87 13 -156 50.5t-118 104t-75 166t-26 236.5z" />
+<glyph unicode="&#xa3;" d="M68 0v154q44 11 80.5 31.5t63 54.5t41.5 82.5t15 115.5v213h-198v137h198v324q0 87 29.5 155.5t82 116t125.5 72.5t161 25q106 0 193 -22.5t153 -57.5l-66 -144q-56 29 -126.5 50.5t-145.5 21.5q-48 0 -89 -13.5t-71 -43t-46.5 -76.5t-16.5 -113v-295h376v-137h-376v-211 q0 -62 -11.5 -106.5t-31 -76.5t-45 -53.5t-52.5 -37.5h748v-166h-991z" />
+<glyph unicode="&#xa4;" d="M123 1065l98 98l127 -129q47 32 101 50t114 18t113.5 -18t99.5 -50l129 129l99 -96l-130 -129q31 -46 49.5 -100.5t18.5 -114.5t-17.5 -115t-50.5 -100l127 -127l-96 -96l-129 127q-46 -31 -99.5 -48.5t-113.5 -17.5t-115 18t-100 50l-127 -127l-96 96l127 127 q-31 45 -48.5 99t-17.5 114q0 59 17.5 112.5t48.5 100.5zM324 723q0 -50 18.5 -93.5t51 -76t76 -51.5t93.5 -19q51 0 95.5 19t77.5 51.5t52 76t19 93.5q0 51 -19 95.5t-52 77.5t-77.5 52t-95.5 19q-50 0 -93.5 -19t-76 -52t-51 -77.5t-18.5 -95.5z" />
+<glyph unicode="&#xa5;" d="M29 1462h192l342 -739l346 739h191l-385 -768h239v-137h-301v-158h301v-137h-301v-262h-178v262h-301v137h301v158h-301v137h234z" />
+<glyph unicode="&#xa6;" d="M489 289h150v-781h-150v781zM489 776v780h150v-780h-150z" />
+<glyph unicode="&#xa7;" horiz-adv-x="995" d="M121 55v158q31 -15 69 -30t80 -26.5t86.5 -18.5t87.5 -7q69 0 115.5 12t74 31.5t39 45t11.5 52.5q0 29 -8.5 51.5t-34 45t-72.5 47t-123 55.5q-73 31 -130.5 62t-97.5 70t-60.5 89t-20.5 117q0 51 13 92.5t35.5 73.5t51.5 54.5t60 37.5q-75 38 -117.5 95t-42.5 141 q0 61 27.5 110t77.5 83t120 52.5t156 18.5q97 0 175.5 -20t150.5 -52l-56 -139q-65 28 -135 47.5t-141 19.5q-99 0 -150 -29.5t-51 -86.5q0 -27 12 -50t40.5 -45t76 -45.5t117.5 -52.5q72 -28 128.5 -60.5t95.5 -71.5t60 -87.5t21 -110.5q0 -52 -12 -94.5t-32.5 -76.5 t-46.5 -58.5t-54 -40.5q69 -38 107 -92.5t38 -132.5q0 -71 -29.5 -126.5t-83.5 -94t-131.5 -58.5t-173.5 -20q-108 0 -186 16.5t-137 48.5zM291 831q0 -37 14 -68.5t45.5 -60.5t82 -56.5t122.5 -57.5l35 -15q20 13 40.5 31t37 41t27 51t10.5 62q0 38 -13 70t-45.5 61.5 t-86.5 58t-136 58.5q-25 -8 -48.5 -23.5t-42.5 -38t-30.5 -51.5t-11.5 -62z" />
+<glyph unicode="&#xa8;" horiz-adv-x="1182" d="M307 1395q0 54 28 78t68 24q39 0 68 -24.5t29 -77.5t-29 -78t-68 -25q-40 0 -68 25t-28 78zM682 1395q0 54 28 78t68 24q19 0 36.5 -6t30.5 -18.5t21 -31.5t8 -46q0 -53 -29 -78t-67 -25q-40 0 -68 25t-28 78z" />
+<glyph unicode="&#xa9;" horiz-adv-x="1704" d="M100 731q0 104 27 200t75.5 179.5t117.5 152.5t152.5 117.5t179.5 75.5t200 27t200 -27t179.5 -75.5t152.5 -117.5t117.5 -152.5t75.5 -179.5t27 -200t-27 -200t-75.5 -179.5t-117.5 -152t-152.5 -117.5t-179.5 -75.5t-200 -26.5t-200 26.5t-179.5 75.5t-152.5 117.5 t-117.5 152t-75.5 179.5t-27 200zM209 731q0 -133 50.5 -250t138 -204.5t204.5 -138t250 -50.5t250 50.5t204.5 138t138 204.5t50.5 250t-50.5 250t-138 204.5t-204.5 138t-250 50.5t-250 -50.5t-204.5 -138t-138 -204.5t-50.5 -250zM479 733q0 101 27 184.5t79.5 143.5 t129 93.5t176.5 33.5q63 0 129 -16.5t125 -45.5l-62 -127q-52 26 -100.5 40t-91.5 14q-61 0 -108 -22t-79 -63.5t-48.5 -101.5t-16.5 -135q0 -78 14.5 -138t45 -101t78 -62.5t114.5 -21.5q23 0 50 3.5t55.5 9.5t56.5 14.5t53 17.5v-131q-24 -11 -48.5 -20t-51 -16 t-56.5 -10.5t-65 -3.5q-102 0 -178 33t-126.5 94t-76 146t-25.5 188z" />
+<glyph unicode="&#xaa;" horiz-adv-x="678" d="M68 989q0 102 70.5 156t213.5 59l99 4v31q0 72 -30.5 100.5t-86.5 28.5q-48 0 -93 -14.5t-87 -36.5l-48 100q51 26 109.5 44t118.5 18q125 0 184.5 -53t59.5 -175v-454h-91l-28 82q-18 -22 -37.5 -39.5t-43 -30t-51.5 -19t-63 -6.5q-43 0 -79 13t-62 38.5t-40.5 64 t-14.5 89.5zM199 987q0 -51 25 -73.5t67 -22.5q34 0 63 10.5t50.5 32.5t34 54.5t12.5 76.5v49l-74 -4q-51 -3 -85 -12t-54.5 -24t-29.5 -36.5t-9 -50.5z" />
+<glyph unicode="&#xab;" horiz-adv-x="997" d="M82 526v27l309 414l117 -78l-238 -348l238 -348l-117 -78zM489 526v27l310 414l116 -78l-237 -348l237 -348l-116 -78z" />
+<glyph unicode="&#xac;" d="M102 647v150h924v-535h-149v385h-775z" />
+<glyph unicode="&#xad;" horiz-adv-x="659" d="M82 465v168h496v-168h-496z" />
+<glyph unicode="&#xae;" horiz-adv-x="1704" d="M100 731q0 104 27 200t75.5 179.5t117.5 152.5t152.5 117.5t179.5 75.5t200 27t200 -27t179.5 -75.5t152.5 -117.5t117.5 -152.5t75.5 -179.5t27 -200t-27 -200t-75.5 -179.5t-117.5 -152t-152.5 -117.5t-179.5 -75.5t-200 -26.5t-200 26.5t-179.5 75.5t-152.5 117.5 t-117.5 152t-75.5 179.5t-27 200zM209 731q0 -133 50.5 -250t138 -204.5t204.5 -138t250 -50.5t250 50.5t204.5 138t138 204.5t50.5 250t-50.5 250t-138 204.5t-204.5 138t-250 50.5t-250 -50.5t-204.5 -138t-138 -204.5t-50.5 -250zM586 285v893h233q168 0 247 -65t79 -200 q0 -48 -13.5 -85.5t-36 -66t-51 -48.5t-59.5 -33q67 -110 120 -197q23 -37 44 -72.5t37.5 -63.5t26.5 -45l10 -17h-179l-206 352h-95v-352h-157zM743 768h72q91 0 130.5 36t39.5 105q0 74 -41.5 103.5t-130.5 29.5h-70v-274z" />
+<glyph unicode="&#xaf;" horiz-adv-x="1024" d="M-6 1556v140h1036v-140h-1036z" />
+<glyph unicode="&#xb0;" horiz-adv-x="877" d="M123 1167q0 65 25 122.5t67.5 100.5t100 68t122.5 25t122.5 -25t100.5 -68t68 -100.5t25 -122.5t-25 -122t-68 -99.5t-100.5 -67t-122.5 -24.5t-122.5 24.5t-100 67t-67.5 99.5t-25 122zM246 1167q0 -39 15 -73.5t41 -60.5t61 -41t75 -15t75 15t61.5 41t41.5 60.5 t15 73.5q0 40 -15 75.5t-41.5 62t-61.5 42t-75 15.5t-75 -15.5t-61 -42t-41 -62t-15 -75.5z" />
+<glyph unicode="&#xb1;" d="M102 0v150h924v-150h-924zM102 647v150h387v389h150v-389h387v-150h-387v-385h-150v385h-387z" />
+<glyph unicode="&#xb2;" horiz-adv-x="678" d="M49 586v112l209 228q57 62 93 104.5t56 76t27.5 63t7.5 63.5q0 65 -33 97t-87 32q-51 0 -97.5 -25t-91.5 -63l-78 94q54 48 120.5 80.5t148.5 32.5q60 0 108.5 -16.5t82.5 -48t52.5 -77t18.5 -102.5q0 -50 -14.5 -93t-41.5 -85.5t-66.5 -88t-90.5 -100.5l-148 -157h396 v-127h-572z" />
+<glyph unicode="&#xb3;" horiz-adv-x="678" d="M31 625v133q63 -34 129 -53t119 -19q98 0 142 41.5t44 114.5q0 74 -53.5 107.5t-149.5 33.5h-98v113h98q92 0 134 39.5t42 103.5q0 32 -10 55.5t-27.5 38.5t-41 22t-50.5 7q-59 0 -107.5 -20.5t-99.5 -57.5l-69 96q29 23 59.5 41.5t64.5 31.5t72 20.5t82 7.5 q69 0 121.5 -17t87.5 -47t52.5 -71.5t17.5 -90.5q0 -78 -40.5 -131t-109.5 -77q88 -23 132 -76t44 -131q0 -60 -20 -110t-61.5 -85.5t-104.5 -55.5t-149 -20q-70 0 -131.5 12.5t-118.5 43.5z" />
+<glyph unicode="&#xb4;" horiz-adv-x="1182" d="M393 1241v27q22 29 45.5 67t47 78.5t44.5 81t37 74.5h219v-21q-16 -27 -47.5 -67.5t-70 -84.5t-79 -85.5t-75.5 -69.5h-121z" />
+<glyph unicode="&#xb5;" horiz-adv-x="1217" d="M174 -492v1590h182v-707q0 -130 53 -195t164 -65q82 0 137 26t88.5 76.5t47.5 124.5t14 170v570h182v-1098h-147l-27 147h-10q-48 -83 -120 -125t-175 -42q-72 0 -125 23t-88 65q1 -38 3 -78q2 -35 2.5 -77.5t0.5 -84.5v-320h-182z" />
+<glyph unicode="&#xb6;" horiz-adv-x="1341" d="M113 1042q0 147 32.5 245.5t92 158.5t142.5 85t183 25h563v-1816h-120v1657h-207v-1657h-121v819q-61 -18 -146 -18q-95 0 -172.5 25.5t-132 84.5t-84.5 155t-30 236z" />
+<glyph unicode="&#xb7;" horiz-adv-x="549" d="M147 723q0 38 10 64.5t27 43t40 24t50 7.5q26 0 49.5 -7.5t40.5 -24t27 -43t10 -64.5q0 -37 -10 -63t-27 -43t-40.5 -25t-49.5 -8q-27 0 -50 8t-40 25t-27 43t-10 63z" />
+<glyph unicode="&#xb8;" horiz-adv-x="420" d="M35 -375q15 -3 39.5 -4.5t40.5 -1.5q71 0 111 21.5t40 70.5q0 24 -13 41.5t-36 30.5t-54.5 22.5t-68.5 18.5l90 176h121l-57 -115q34 -8 63 -21t50.5 -33.5t34 -49.5t12.5 -68q0 -97 -70.5 -151t-220.5 -54q-22 0 -44.5 3t-37.5 6v108z" />
+<glyph unicode="&#xb9;" horiz-adv-x="678" d="M63 1274l244 188h135v-876h-145v516q0 25 0.5 55t2 60t3 58t2.5 50q-14 -17 -33 -37t-41 -37l-94 -73z" />
+<glyph unicode="&#xba;" horiz-adv-x="717" d="M66 1133q0 83 20.5 147.5t58.5 108.5t92.5 67t122.5 23q62 0 115.5 -23t92.5 -67t61 -108.5t22 -147.5t-20.5 -148t-59 -109.5t-93 -68t-122.5 -23.5q-63 0 -116 23.5t-92 68t-60.5 109.5t-21.5 148zM197 1133q0 -119 37.5 -179.5t123.5 -60.5q85 0 122.5 60.5 t37.5 179.5q0 120 -37.5 177.5t-122.5 57.5q-86 0 -123.5 -57.5t-37.5 -177.5z" />
+<glyph unicode="&#xbb;" horiz-adv-x="997" d="M84 193l238 348l-238 348l117 78l309 -414v-27l-309 -411zM492 193l237 348l-237 348l116 78l310 -414v-27l-310 -411z" />
+<glyph unicode="&#xbc;" horiz-adv-x="1509" d="M63 1274l244 188h135v-876h-145v516q0 25 0.5 55t2 60t3 58t2.5 50q-14 -17 -33 -37t-41 -37l-94 -73zM234 0l811 1462h157l-811 -1462h-157zM776 193v111l377 579h141v-563h125v-127h-125v-192h-143v192h-375zM922 320h229v195q0 42 1.5 91.5t4.5 98.5q-5 -11 -15 -29.5 t-21 -39.5t-23 -41l-21 -35z" />
+<glyph unicode="&#xbd;" horiz-adv-x="1509" d="M44 1274l244 188h135v-876h-145v516q0 25 0.5 55t2 60t3 58t2.5 50q-14 -17 -33 -37t-41 -37l-94 -73zM213 0l811 1462h157l-811 -1462h-157zM868 1v112l209 228q57 62 93 104.5t56 76t27.5 63t7.5 63.5q0 65 -33 97t-87 32q-51 0 -97.5 -25t-91.5 -63l-78 94 q54 48 120.5 80.5t148.5 32.5q60 0 108.5 -16.5t82.5 -48t52.5 -77t18.5 -102.5q0 -50 -14.5 -93t-41.5 -85.5t-66.5 -88t-90.5 -100.5l-148 -157h396v-127h-572z" />
+<glyph unicode="&#xbe;" horiz-adv-x="1509" d="M31 625v133q63 -34 129 -53t119 -19q98 0 142 41.5t44 114.5q0 74 -53.5 107.5t-149.5 33.5h-98v113h98q92 0 134 39.5t42 103.5q0 32 -10 55.5t-27.5 38.5t-41 22t-50.5 7q-59 0 -107.5 -20.5t-99.5 -57.5l-69 96q29 23 59.5 41.5t64.5 31.5t72 20.5t82 7.5 q69 0 121.5 -17t87.5 -47t52.5 -71.5t17.5 -90.5q0 -78 -40.5 -131t-109.5 -77q88 -23 132 -76t44 -131q0 -60 -20 -110t-61.5 -85.5t-104.5 -55.5t-149 -20q-70 0 -131.5 12.5t-118.5 43.5zM328 0l811 1462h157l-811 -1462h-157zM843 193v111l377 579h141v-563h125v-127 h-125v-192h-143v192h-375zM989 320h229v195q0 42 1.5 91.5t4.5 98.5q-5 -11 -15 -29.5t-21 -39.5t-23 -41l-21 -35z" />
+<glyph unicode="&#xbf;" horiz-adv-x="872" d="M68 -20q0 68 13.5 120t40 97t67 87t94.5 89q52 45 85 78.5t52 64.5t26 64.5t7 76.5v19h139v-37q0 -58 -8 -103.5t-27.5 -86t-52 -78.5t-82.5 -80q-48 -41 -82 -74.5t-55.5 -68t-32 -74t-10.5 -92.5q0 -48 15 -87.5t43.5 -68t71 -44t97.5 -15.5q84 0 159 25.5t144 60.5 l64 -146q-82 -42 -176 -71t-191 -29q-93 0 -167.5 25.5t-126 73.5t-79.5 117t-28 157zM385 979q0 37 10 63t27.5 43t40.5 25t49 8q27 0 50 -8t40.5 -25t27 -43t9.5 -63q0 -38 -9.5 -64.5t-27 -43t-40.5 -24t-50 -7.5q-26 0 -49 7.5t-40.5 24t-27.5 43t-10 64.5z" />
+<glyph unicode="&#xc0;" horiz-adv-x="1245" d="M0 0l537 1468h170l538 -1468h-190l-160 453h-545l-162 -453h-188zM410 618h426l-148 424q-6 18 -14.5 44t-17.5 56t-18 62.5t-17 63.5q-7 -31 -16 -64t-18 -63.5t-17.5 -56t-14.5 -42.5zM326 1886v21h219q16 -34 37.5 -74.5t44.5 -81t47 -78.5t45 -67v-27h-120 q-35 28 -76 69.5t-79.5 85.5t-70 84.5t-47.5 67.5z" />
+<glyph unicode="&#xc1;" horiz-adv-x="1245" d="M0 0l537 1468h170l538 -1468h-190l-160 453h-545l-162 -453h-188zM410 618h426l-148 424q-6 18 -14.5 44t-17.5 56t-18 62.5t-17 63.5q-7 -31 -16 -64t-18 -63.5t-17.5 -56t-14.5 -42.5zM534 1579v27q22 29 45.5 67t47 78.5t44.5 81t37 74.5h219v-21q-16 -27 -47.5 -67.5 t-70 -84.5t-79 -85.5t-75.5 -69.5h-121z" />
+<glyph unicode="&#xc2;" horiz-adv-x="1245" d="M0 0l537 1468h170l538 -1468h-190l-160 453h-545l-162 -453h-188zM410 618h426l-148 424q-6 18 -14.5 44t-17.5 56t-18 62.5t-17 63.5q-7 -31 -16 -64t-18 -63.5t-17.5 -56t-14.5 -42.5zM289 1579v27q26 29 60 67t67.5 78.5t63 81t45.5 74.5h192q16 -34 45.5 -74.5 t63 -81t68 -78.5t59.5 -67v-27h-121q-51 34 -105 82.5t-106 103.5q-54 -55 -107 -103.5t-104 -82.5h-121z" />
+<glyph unicode="&#xc3;" horiz-adv-x="1245" d="M0 0l537 1468h170l538 -1468h-190l-160 453h-545l-162 -453h-188zM410 618h426l-148 424q-6 18 -14.5 44t-17.5 56t-18 62.5t-17 63.5q-7 -31 -16 -64t-18 -63.5t-17.5 -56t-14.5 -42.5zM264 1579q5 60 21.5 109t43 83.5t63.5 53t83 18.5q42 0 82.5 -17.5t78.5 -38.5 t72.5 -38.5t63.5 -17.5q45 0 68 26t38 88h105q-5 -60 -21.5 -108.5t-43 -83t-63.5 -53.5t-83 -19q-40 0 -79.5 17.5t-77.5 39t-73 39t-67 17.5q-45 0 -69 -26.5t-38 -88.5h-104z" />
+<glyph unicode="&#xc4;" horiz-adv-x="1245" d="M0 0l537 1468h170l538 -1468h-190l-160 453h-545l-162 -453h-188zM410 618h426l-148 424q-6 18 -14.5 44t-17.5 56t-18 62.5t-17 63.5q-7 -31 -16 -64t-18 -63.5t-17.5 -56t-14.5 -42.5zM340 1733q0 54 28 78t68 24q39 0 68 -24.5t29 -77.5t-29 -78t-68 -25q-40 0 -68 25 t-28 78zM715 1733q0 54 28 78t68 24q19 0 36.5 -6t30.5 -18.5t21 -31.5t8 -46q0 -53 -29 -78t-67 -25q-40 0 -68 25t-28 78z" />
+<glyph unicode="&#xc5;" horiz-adv-x="1245" d="M0 0l537 1468h170l538 -1468h-190l-160 453h-545l-162 -453h-188zM410 618h426l-148 424q-6 18 -14.5 44t-17.5 56t-18 62.5t-17 63.5q-7 -31 -16 -64t-18 -63.5t-17.5 -56t-14.5 -42.5zM396 1581q0 51 16 90.5t45.5 67.5t70.5 42.5t91 14.5q48 0 90 -14.5t73 -42 t48.5 -67t17.5 -89.5q0 -51 -17.5 -91.5t-48 -68.5t-72.5 -42.5t-91 -14.5q-50 0 -91 14.5t-70.5 42.5t-45.5 67.5t-16 90.5zM506 1581q0 -53 28.5 -83t84.5 -30q49 0 80.5 30t31.5 83t-31.5 83t-80.5 30q-50 0 -81.5 -30t-31.5 -83z" />
+<glyph unicode="&#xc6;" horiz-adv-x="1745" d="M-2 0l655 1462h969v-164h-573v-452h534v-162h-534v-520h573v-164h-760v453h-475l-203 -453h-186zM459 618h403v680h-108z" />
+<glyph unicode="&#xc7;" horiz-adv-x="1235" d="M125 733q0 166 43.5 304t128 237t209.5 154t287 55q108 0 206 -22t177 -64l-78 -156q-63 32 -137 55t-168 23q-107 0 -194 -40.5t-148.5 -116.5t-95 -185t-33.5 -246q0 -141 29.5 -250.5t88.5 -184.5t147 -114t206 -39q89 0 169 17.5t158 40.5v-162q-39 -15 -78 -26.5 t-81.5 -18.5t-91 -10.5t-107.5 -3.5q-164 0 -284 54t-198.5 153t-116.5 238t-38 308zM543 -375q15 -3 39.5 -4.5t40.5 -1.5q71 0 111 21.5t40 70.5q0 24 -13 41.5t-36 30.5t-54.5 22.5t-68.5 18.5l90 176h121l-57 -115q34 -8 63 -21t50.5 -33.5t34 -49.5t12.5 -68 q0 -97 -70.5 -151t-220.5 -54q-22 0 -44.5 3t-37.5 6v108z" />
+<glyph unicode="&#xc8;" horiz-adv-x="1081" d="M199 0v1462h759v-164h-573v-452h535v-162h-535v-520h573v-164h-759zM320 1886v21h219q16 -34 37.5 -74.5t44.5 -81t47 -78.5t45 -67v-27h-120q-35 28 -76 69.5t-79.5 85.5t-70 84.5t-47.5 67.5z" />
+<glyph unicode="&#xc9;" horiz-adv-x="1081" d="M199 0v1462h759v-164h-573v-452h535v-162h-535v-520h573v-164h-759zM456 1579v27q22 29 45.5 67t47 78.5t44.5 81t37 74.5h219v-21q-16 -27 -47.5 -67.5t-70 -84.5t-79 -85.5t-75.5 -69.5h-121z" />
+<glyph unicode="&#xca;" horiz-adv-x="1081" d="M199 0v1462h759v-164h-573v-452h535v-162h-535v-520h573v-164h-759zM243 1579v27q26 29 60 67t67.5 78.5t63 81t45.5 74.5h192q16 -34 45.5 -74.5t63 -81t68 -78.5t59.5 -67v-27h-121q-51 34 -105 82.5t-106 103.5q-54 -55 -107 -103.5t-104 -82.5h-121z" />
+<glyph unicode="&#xcb;" horiz-adv-x="1081" d="M199 0v1462h759v-164h-573v-452h535v-162h-535v-520h573v-164h-759zM296 1733q0 54 28 78t68 24q39 0 68 -24.5t29 -77.5t-29 -78t-68 -25q-40 0 -68 25t-28 78zM671 1733q0 54 28 78t68 24q19 0 36.5 -6t30.5 -18.5t21 -31.5t8 -46q0 -53 -29 -78t-67 -25q-40 0 -68 25 t-28 78z" />
+<glyph unicode="&#xcc;" horiz-adv-x="694" d="M82 0v102l172 41v1176l-172 41v102h530v-102l-172 -41v-1176l172 -41v-102h-530zM62 1886v21h219q16 -34 37.5 -74.5t44.5 -81t47 -78.5t45 -67v-27h-120q-35 28 -76 69.5t-79.5 85.5t-70 84.5t-47.5 67.5z" />
+<glyph unicode="&#xcd;" horiz-adv-x="694" d="M82 0v102l172 41v1176l-172 41v102h530v-102l-172 -41v-1176l172 -41v-102h-530zM257 1579v27q22 29 45.5 67t47 78.5t44.5 81t37 74.5h219v-21q-16 -27 -47.5 -67.5t-70 -84.5t-79 -85.5t-75.5 -69.5h-121z" />
+<glyph unicode="&#xce;" horiz-adv-x="694" d="M82 0v102l172 41v1176l-172 41v102h530v-102l-172 -41v-1176l172 -41v-102h-530zM17 1579v27q26 29 60 67t67.5 78.5t63 81t45.5 74.5h192q16 -34 45.5 -74.5t63 -81t68 -78.5t59.5 -67v-27h-121q-51 34 -105 82.5t-106 103.5q-54 -55 -107 -103.5t-104 -82.5h-121z" />
+<glyph unicode="&#xcf;" horiz-adv-x="694" d="M82 0v102l172 41v1176l-172 41v102h530v-102l-172 -41v-1176l172 -41v-102h-530zM64 1733q0 54 28 78t68 24q39 0 68 -24.5t29 -77.5t-29 -78t-68 -25q-40 0 -68 25t-28 78zM439 1733q0 54 28 78t68 24q19 0 36.5 -6t30.5 -18.5t21 -31.5t8 -46q0 -53 -29 -78t-67 -25 q-40 0 -68 25t-28 78z" />
+<glyph unicode="&#xd0;" horiz-adv-x="1401" d="M47 643v162h152v657h407q153 0 277 -46t211 -136.5t134.5 -224.5t47.5 -310q0 -185 -48 -324.5t-139 -233t-223.5 -140.5t-300.5 -47h-366v643h-152zM385 160h162q264 0 398 146t134 433q0 146 -33 252.5t-96 175.5t-155 102.5t-209 33.5h-201v-498h336v-162h-336v-483z " />
+<glyph unicode="&#xd1;" horiz-adv-x="1493" d="M199 0v1462h213l716 -1204h7q-3 76 -7 150q0 32 -2 66l-4 66q-2 34 -2 65v57v800h174v-1462h-215l-719 1210h-8q6 -77 10 -153q4 -65 6.5 -136t2.5 -128v-793h-172zM397 1579q5 60 21.5 109t43 83.5t63.5 53t83 18.5q42 0 82.5 -17.5t78.5 -38.5t72.5 -38.5t63.5 -17.5 q45 0 68 26t38 88h105q-5 -60 -21.5 -108.5t-43 -83t-63.5 -53.5t-83 -19q-40 0 -79.5 17.5t-77.5 39t-73 39t-67 17.5q-45 0 -69 -26.5t-38 -88.5h-104z" />
+<glyph unicode="&#xd2;" horiz-adv-x="1520" d="M125 735q0 170 38 308.5t117 236.5t199 151.5t283 53.5q155 0 272.5 -53.5t197.5 -152t120.5 -237t40.5 -309.5q0 -169 -40.5 -308t-120.5 -238t-198.5 -153t-273.5 -54q-163 0 -282.5 54t-198 153t-116.5 238.5t-38 309.5zM322 733q0 -137 26 -246.5t79.5 -186t136 -117 t196.5 -40.5t196.5 40.5t136 117t78.5 186t25 246.5q0 138 -25 247t-78 184.5t-135 116t-196 40.5t-197 -40.5t-137 -116t-80 -184.5t-26 -247zM477 1886v21h219q16 -34 37.5 -74.5t44.5 -81t47 -78.5t45 -67v-27h-120q-35 28 -76 69.5t-79.5 85.5t-70 84.5t-47.5 67.5z" />
+<glyph unicode="&#xd3;" horiz-adv-x="1520" d="M125 735q0 170 38 308.5t117 236.5t199 151.5t283 53.5q155 0 272.5 -53.5t197.5 -152t120.5 -237t40.5 -309.5q0 -169 -40.5 -308t-120.5 -238t-198.5 -153t-273.5 -54q-163 0 -282.5 54t-198 153t-116.5 238.5t-38 309.5zM322 733q0 -137 26 -246.5t79.5 -186t136 -117 t196.5 -40.5t196.5 40.5t136 117t78.5 186t25 246.5q0 138 -25 247t-78 184.5t-135 116t-196 40.5t-197 -40.5t-137 -116t-80 -184.5t-26 -247zM651 1579v27q22 29 45.5 67t47 78.5t44.5 81t37 74.5h219v-21q-16 -27 -47.5 -67.5t-70 -84.5t-79 -85.5t-75.5 -69.5h-121z" />
+<glyph unicode="&#xd4;" horiz-adv-x="1520" d="M125 735q0 170 38 308.5t117 236.5t199 151.5t283 53.5q155 0 272.5 -53.5t197.5 -152t120.5 -237t40.5 -309.5q0 -169 -40.5 -308t-120.5 -238t-198.5 -153t-273.5 -54q-163 0 -282.5 54t-198 153t-116.5 238.5t-38 309.5zM322 733q0 -137 26 -246.5t79.5 -186t136 -117 t196.5 -40.5t196.5 40.5t136 117t78.5 186t25 246.5q0 138 -25 247t-78 184.5t-135 116t-196 40.5t-197 -40.5t-137 -116t-80 -184.5t-26 -247zM432 1579v27q26 29 60 67t67.5 78.5t63 81t45.5 74.5h192q16 -34 45.5 -74.5t63 -81t68 -78.5t59.5 -67v-27h-121 q-51 34 -105 82.5t-106 103.5q-54 -55 -107 -103.5t-104 -82.5h-121z" />
+<glyph unicode="&#xd5;" horiz-adv-x="1520" d="M125 735q0 170 38 308.5t117 236.5t199 151.5t283 53.5q155 0 272.5 -53.5t197.5 -152t120.5 -237t40.5 -309.5q0 -169 -40.5 -308t-120.5 -238t-198.5 -153t-273.5 -54q-163 0 -282.5 54t-198 153t-116.5 238.5t-38 309.5zM322 733q0 -137 26 -246.5t79.5 -186t136 -117 t196.5 -40.5t196.5 40.5t136 117t78.5 186t25 246.5q0 138 -25 247t-78 184.5t-135 116t-196 40.5t-197 -40.5t-137 -116t-80 -184.5t-26 -247zM383 1579q5 60 21.5 109t43 83.5t63.5 53t83 18.5q42 0 82.5 -17.5t78.5 -38.5t72.5 -38.5t63.5 -17.5q45 0 68 26t38 88h105 q-5 -60 -21.5 -108.5t-43 -83t-63.5 -53.5t-83 -19q-40 0 -79.5 17.5t-77.5 39t-73 39t-67 17.5q-45 0 -69 -26.5t-38 -88.5h-104z" />
+<glyph unicode="&#xd6;" horiz-adv-x="1520" d="M125 735q0 170 38 308.5t117 236.5t199 151.5t283 53.5q155 0 272.5 -53.5t197.5 -152t120.5 -237t40.5 -309.5q0 -169 -40.5 -308t-120.5 -238t-198.5 -153t-273.5 -54q-163 0 -282.5 54t-198 153t-116.5 238.5t-38 309.5zM322 733q0 -137 26 -246.5t79.5 -186t136 -117 t196.5 -40.5t196.5 40.5t136 117t78.5 186t25 246.5q0 138 -25 247t-78 184.5t-135 116t-196 40.5t-197 -40.5t-137 -116t-80 -184.5t-26 -247zM477 1733q0 54 28 78t68 24q39 0 68 -24.5t29 -77.5t-29 -78t-68 -25q-40 0 -68 25t-28 78zM852 1733q0 54 28 78t68 24 q19 0 36.5 -6t30.5 -18.5t21 -31.5t8 -46q0 -53 -29 -78t-67 -25q-40 0 -68 25t-28 78z" />
+<glyph unicode="&#xd7;" d="M141 1042l105 105l317 -318l322 318l104 -103l-321 -321l319 -320l-102 -102l-322 317l-317 -315l-103 103l316 317z" />
+<glyph unicode="&#xd8;" horiz-adv-x="1520" d="M125 735q0 170 38 308.5t117 236.5t199 151.5t283 53.5q94 0 174.5 -21t146.5 -59l80 127l137 -78l-92 -149q91 -99 138 -244t47 -328q0 -169 -40.5 -308t-120.5 -238t-198.5 -153t-273.5 -54q-189 0 -322 71l-78 -127l-137 78l90 145q-97 100 -142.5 249t-45.5 339z M322 733q0 -131 23 -235.5t71 -182.5l579 945q-48 29 -105 45t-128 16q-114 0 -197 -40.5t-137 -116t-80 -184.5t-26 -247zM530 201q47 -28 104 -43t126 -15q114 0 196.5 40.5t136 117t78.5 186t25 246.5q0 257 -88 408z" />
+<glyph unicode="&#xd9;" horiz-adv-x="1430" d="M184 520v942h187v-952q0 -175 86.5 -271t261.5 -96q89 0 153 27t105 76t61 117t21 149v952h186v-948q0 -114 -33 -212t-99.5 -170t-167 -113t-236.5 -41q-128 0 -226 38.5t-164.5 109.5t-100.5 170.5t-34 221.5zM454 1886v21h219q16 -34 37.5 -74.5t44.5 -81t47 -78.5 t45 -67v-27h-120q-35 28 -76 69.5t-79.5 85.5t-70 84.5t-47.5 67.5z" />
+<glyph unicode="&#xda;" horiz-adv-x="1430" d="M184 520v942h187v-952q0 -175 86.5 -271t261.5 -96q89 0 153 27t105 76t61 117t21 149v952h186v-948q0 -114 -33 -212t-99.5 -170t-167 -113t-236.5 -41q-128 0 -226 38.5t-164.5 109.5t-100.5 170.5t-34 221.5zM590 1579v27q22 29 45.5 67t47 78.5t44.5 81t37 74.5h219 v-21q-16 -27 -47.5 -67.5t-70 -84.5t-79 -85.5t-75.5 -69.5h-121z" />
+<glyph unicode="&#xdb;" horiz-adv-x="1430" d="M184 520v942h187v-952q0 -175 86.5 -271t261.5 -96q89 0 153 27t105 76t61 117t21 149v952h186v-948q0 -114 -33 -212t-99.5 -170t-167 -113t-236.5 -41q-128 0 -226 38.5t-164.5 109.5t-100.5 170.5t-34 221.5zM379 1579v27q26 29 60 67t67.5 78.5t63 81t45.5 74.5h192 q16 -34 45.5 -74.5t63 -81t68 -78.5t59.5 -67v-27h-121q-51 34 -105 82.5t-106 103.5q-54 -55 -107 -103.5t-104 -82.5h-121z" />
+<glyph unicode="&#xdc;" horiz-adv-x="1430" d="M184 520v942h187v-952q0 -175 86.5 -271t261.5 -96q89 0 153 27t105 76t61 117t21 149v952h186v-948q0 -114 -33 -212t-99.5 -170t-167 -113t-236.5 -41q-128 0 -226 38.5t-164.5 109.5t-100.5 170.5t-34 221.5zM432 1733q0 54 28 78t68 24q39 0 68 -24.5t29 -77.5 t-29 -78t-68 -25q-40 0 -68 25t-28 78zM807 1733q0 54 28 78t68 24q19 0 36.5 -6t30.5 -18.5t21 -31.5t8 -46q0 -53 -29 -78t-67 -25q-40 0 -68 25t-28 78z" />
+<glyph unicode="&#xdd;" horiz-adv-x="1079" d="M0 1462h203l336 -739l340 739h200l-446 -893v-569h-187v559zM442 1579v27q22 29 45.5 67t47 78.5t44.5 81t37 74.5h219v-21q-16 -27 -47.5 -67.5t-70 -84.5t-79 -85.5t-75.5 -69.5h-121z" />
+<glyph unicode="&#xde;" horiz-adv-x="1180" d="M199 0v1462h186v-252h176q134 0 231 -28.5t160 -83t93 -134.5t30 -182q0 -91 -27.5 -175t-90.5 -148.5t-166.5 -103t-255.5 -38.5h-150v-317h-186zM385 475h129q93 0 162.5 16t115 51.5t68.5 92t23 137.5q0 143 -82 211t-256 68h-160v-576z" />
+<glyph unicode="&#xdf;" horiz-adv-x="1233" d="M174 0v1200q0 104 31.5 174.5t88 113t134.5 61t170 18.5t168 -19t130 -57t84 -96t30 -135q0 -57 -21.5 -101.5t-53 -81t-69 -66.5t-69 -57.5t-53 -54.5t-21.5 -57q0 -21 7 -37.5t26.5 -36t54.5 -44t92 -62.5q56 -37 100 -73t74.5 -77t47 -89t16.5 -110q0 -87 -28 -150 t-78.5 -103.5t-121 -60t-155.5 -19.5q-97 0 -166.5 17.5t-122.5 51.5v166q26 -16 58.5 -31.5t68.5 -27.5t74 -19.5t75 -7.5q56 0 96.5 12.5t66.5 35t38 54.5t12 72q0 36 -8.5 65.5t-30 57.5t-57.5 57t-92 64q-63 40 -105.5 74t-69 67.5t-37.5 68.5t-11 77q0 54 20.5 93.5 t51.5 71t67 58.5t67 56t51.5 62.5t20.5 77.5q0 42 -16.5 73t-46.5 51.5t-71.5 30t-92.5 9.5q-49 0 -93 -9.5t-77 -33.5t-52.5 -65.5t-19.5 -106.5v-1202h-182z" />
+<glyph unicode="&#xe0;" horiz-adv-x="1087" d="M94 307q0 164 115.5 252t351.5 96l184 7v69q0 67 -14.5 112t-42 72.5t-68 39.5t-92.5 12q-83 0 -154.5 -24t-137.5 -58l-64 137q74 40 165 68t191 28q102 0 176.5 -20.5t123 -65t72.5 -113.5t24 -167v-752h-131l-37 152h-8q-33 -45 -66 -77.5t-72 -53.5t-87 -31t-111 -10 q-69 0 -127 19.5t-100.5 60t-66.5 102t-24 145.5zM283 305q0 -92 48.5 -135t127.5 -43q61 0 113 19t90 57.5t59.5 97t21.5 137.5v99l-143 -7q-90 -4 -151 -20t-97.5 -44.5t-52.5 -69t-16 -91.5zM285 1548v21h219q16 -34 37.5 -74.5t44.5 -81t47 -78.5t45 -67v-27h-120 q-35 28 -76 69.5t-79.5 85.5t-70 84.5t-47.5 67.5z" />
+<glyph unicode="&#xe1;" horiz-adv-x="1087" d="M94 307q0 164 115.5 252t351.5 96l184 7v69q0 67 -14.5 112t-42 72.5t-68 39.5t-92.5 12q-83 0 -154.5 -24t-137.5 -58l-64 137q74 40 165 68t191 28q102 0 176.5 -20.5t123 -65t72.5 -113.5t24 -167v-752h-131l-37 152h-8q-33 -45 -66 -77.5t-72 -53.5t-87 -31t-111 -10 q-69 0 -127 19.5t-100.5 60t-66.5 102t-24 145.5zM283 305q0 -92 48.5 -135t127.5 -43q61 0 113 19t90 57.5t59.5 97t21.5 137.5v99l-143 -7q-90 -4 -151 -20t-97.5 -44.5t-52.5 -69t-16 -91.5zM446 1241v27q22 29 45.5 67t47 78.5t44.5 81t37 74.5h219v-21 q-16 -27 -47.5 -67.5t-70 -84.5t-79 -85.5t-75.5 -69.5h-121z" />
+<glyph unicode="&#xe2;" horiz-adv-x="1087" d="M94 307q0 164 115.5 252t351.5 96l184 7v69q0 67 -14.5 112t-42 72.5t-68 39.5t-92.5 12q-83 0 -154.5 -24t-137.5 -58l-64 137q74 40 165 68t191 28q102 0 176.5 -20.5t123 -65t72.5 -113.5t24 -167v-752h-131l-37 152h-8q-33 -45 -66 -77.5t-72 -53.5t-87 -31t-111 -10 q-69 0 -127 19.5t-100.5 60t-66.5 102t-24 145.5zM283 305q0 -92 48.5 -135t127.5 -43q61 0 113 19t90 57.5t59.5 97t21.5 137.5v99l-143 -7q-90 -4 -151 -20t-97.5 -44.5t-52.5 -69t-16 -91.5zM228 1241v27q26 29 60 67t67.5 78.5t63 81t45.5 74.5h192q16 -34 45.5 -74.5 t63 -81t68 -78.5t59.5 -67v-27h-121q-51 34 -105 82.5t-106 103.5q-54 -55 -107 -103.5t-104 -82.5h-121z" />
+<glyph unicode="&#xe3;" horiz-adv-x="1087" d="M94 307q0 164 115.5 252t351.5 96l184 7v69q0 67 -14.5 112t-42 72.5t-68 39.5t-92.5 12q-83 0 -154.5 -24t-137.5 -58l-64 137q74 40 165 68t191 28q102 0 176.5 -20.5t123 -65t72.5 -113.5t24 -167v-752h-131l-37 152h-8q-33 -45 -66 -77.5t-72 -53.5t-87 -31t-111 -10 q-69 0 -127 19.5t-100.5 60t-66.5 102t-24 145.5zM283 305q0 -92 48.5 -135t127.5 -43q61 0 113 19t90 57.5t59.5 97t21.5 137.5v99l-143 -7q-90 -4 -151 -20t-97.5 -44.5t-52.5 -69t-16 -91.5zM191 1241q5 60 21.5 109t43 83.5t63.5 53t83 18.5q42 0 82.5 -17.5t78.5 -38.5 t72.5 -38.5t63.5 -17.5q45 0 68 26t38 88h105q-5 -60 -21.5 -108.5t-43 -83t-63.5 -53.5t-83 -19q-40 0 -79.5 17.5t-77.5 39t-73 39t-67 17.5q-45 0 -69 -26.5t-38 -88.5h-104z" />
+<glyph unicode="&#xe4;" horiz-adv-x="1087" d="M94 307q0 164 115.5 252t351.5 96l184 7v69q0 67 -14.5 112t-42 72.5t-68 39.5t-92.5 12q-83 0 -154.5 -24t-137.5 -58l-64 137q74 40 165 68t191 28q102 0 176.5 -20.5t123 -65t72.5 -113.5t24 -167v-752h-131l-37 152h-8q-33 -45 -66 -77.5t-72 -53.5t-87 -31t-111 -10 q-69 0 -127 19.5t-100.5 60t-66.5 102t-24 145.5zM283 305q0 -92 48.5 -135t127.5 -43q61 0 113 19t90 57.5t59.5 97t21.5 137.5v99l-143 -7q-90 -4 -151 -20t-97.5 -44.5t-52.5 -69t-16 -91.5zM273 1395q0 54 28 78t68 24q39 0 68 -24.5t29 -77.5t-29 -78t-68 -25 q-40 0 -68 25t-28 78zM648 1395q0 54 28 78t68 24q19 0 36.5 -6t30.5 -18.5t21 -31.5t8 -46q0 -53 -29 -78t-67 -25q-40 0 -68 25t-28 78z" />
+<glyph unicode="&#xe5;" horiz-adv-x="1087" d="M94 307q0 164 115.5 252t351.5 96l184 7v69q0 67 -14.5 112t-42 72.5t-68 39.5t-92.5 12q-83 0 -154.5 -24t-137.5 -58l-64 137q74 40 165 68t191 28q102 0 176.5 -20.5t123 -65t72.5 -113.5t24 -167v-752h-131l-37 152h-8q-33 -45 -66 -77.5t-72 -53.5t-87 -31t-111 -10 q-69 0 -127 19.5t-100.5 60t-66.5 102t-24 145.5zM283 305q0 -92 48.5 -135t127.5 -43q61 0 113 19t90 57.5t59.5 97t21.5 137.5v99l-143 -7q-90 -4 -151 -20t-97.5 -44.5t-52.5 -69t-16 -91.5zM331 1456q0 51 16 90.5t45.5 67.5t70.5 42.5t91 14.5q48 0 90 -14.5t73 -42 t48.5 -67t17.5 -89.5q0 -51 -17.5 -91.5t-48 -68.5t-72.5 -42.5t-91 -14.5q-50 0 -91 14.5t-70.5 42.5t-45.5 67.5t-16 90.5zM441 1456q0 -53 28.5 -83t84.5 -30q49 0 80.5 30t31.5 83t-31.5 83t-80.5 30q-50 0 -81.5 -30t-31.5 -83z" />
+<glyph unicode="&#xe6;" horiz-adv-x="1706" d="M94 307q0 164 115.5 252t351.5 96l184 7v69q0 67 -14.5 112t-42 72.5t-68 39.5t-92.5 12q-83 0 -154.5 -24t-137.5 -58l-64 137q74 40 165 68t191 28q131 0 214 -42.5t126 -135.5q51 85 134 131.5t186 46.5q97 0 174 -35.5t131 -100t82.5 -155t28.5 -200.5v-113h-672 q5 -193 78.5 -284t220.5 -91q49 0 91.5 5t81.5 14.5t76 24t74 32.5v-162q-39 -19 -76.5 -33t-77 -23t-82 -13t-91.5 -4q-138 0 -239 57t-163 172q-34 -54 -72 -96.5t-85.5 -72t-105.5 -45t-132 -15.5q-71 0 -132.5 19.5t-106.5 60t-71 102t-26 145.5zM283 305 q0 -92 48.5 -135t127.5 -43q61 0 113 19t90 57.5t59.5 97t21.5 137.5v99l-143 -7q-90 -4 -151 -20t-97.5 -44.5t-52.5 -69t-16 -91.5zM936 662h471q0 68 -13 124.5t-40.5 96.5t-69.5 62t-100 22q-110 0 -173.5 -78t-74.5 -227z" />
+<glyph unicode="&#xe7;" horiz-adv-x="948" d="M113 543q0 157 38 266.5t104.5 178t155.5 99.5t191 31q78 0 152.5 -17t124.5 -42l-54 -154q-23 10 -51 19.5t-58 17t-59 12t-55 4.5q-157 0 -229 -100.5t-72 -312.5q0 -211 72.5 -308.5t220.5 -97.5q81 0 146.5 18.5t119.5 43.5v-162q-54 -29 -115.5 -44t-150.5 -15 q-101 0 -189 31.5t-153 100t-102 175t-37 256.5zM357 -375q15 -3 39.5 -4.5t40.5 -1.5q71 0 111 21.5t40 70.5q0 24 -13 41.5t-36 30.5t-54.5 22.5t-68.5 18.5l90 176h121l-57 -115q34 -8 63 -21t50.5 -33.5t34 -49.5t12.5 -68q0 -97 -70.5 -151t-220.5 -54q-22 0 -44.5 3 t-37.5 6v108z" />
+<glyph unicode="&#xe8;" horiz-adv-x="1096" d="M113 541q0 136 33 243t93 181.5t143.5 113.5t184.5 39q99 0 178 -35.5t134 -100t84.5 -155t29.5 -200.5v-113h-692q5 -193 81.5 -284t227.5 -91q51 0 94.5 5t84 14.5t78.5 24t77 32.5v-162q-40 -19 -78.5 -33t-79 -23t-84 -13t-94.5 -4q-110 0 -201 37t-156.5 108 t-101.5 176t-36 240zM305 662h492q0 68 -13.5 124.5t-42 96.5t-72.5 62t-106 22q-114 0 -180.5 -78t-77.5 -227zM285 1548v21h219q16 -34 37.5 -74.5t44.5 -81t47 -78.5t45 -67v-27h-120q-35 28 -76 69.5t-79.5 85.5t-70 84.5t-47.5 67.5z" />
+<glyph unicode="&#xe9;" horiz-adv-x="1096" d="M113 541q0 136 33 243t93 181.5t143.5 113.5t184.5 39q99 0 178 -35.5t134 -100t84.5 -155t29.5 -200.5v-113h-692q5 -193 81.5 -284t227.5 -91q51 0 94.5 5t84 14.5t78.5 24t77 32.5v-162q-40 -19 -78.5 -33t-79 -23t-84 -13t-94.5 -4q-110 0 -201 37t-156.5 108 t-101.5 176t-36 240zM305 662h492q0 68 -13.5 124.5t-42 96.5t-72.5 62t-106 22q-114 0 -180.5 -78t-77.5 -227zM475 1241v27q22 29 45.5 67t47 78.5t44.5 81t37 74.5h219v-21q-16 -27 -47.5 -67.5t-70 -84.5t-79 -85.5t-75.5 -69.5h-121z" />
+<glyph unicode="&#xea;" horiz-adv-x="1096" d="M113 541q0 136 33 243t93 181.5t143.5 113.5t184.5 39q99 0 178 -35.5t134 -100t84.5 -155t29.5 -200.5v-113h-692q5 -193 81.5 -284t227.5 -91q51 0 94.5 5t84 14.5t78.5 24t77 32.5v-162q-40 -19 -78.5 -33t-79 -23t-84 -13t-94.5 -4q-110 0 -201 37t-156.5 108 t-101.5 176t-36 240zM305 662h492q0 68 -13.5 124.5t-42 96.5t-72.5 62t-106 22q-114 0 -180.5 -78t-77.5 -227zM224 1241v27q26 29 60 67t67.5 78.5t63 81t45.5 74.5h192q16 -34 45.5 -74.5t63 -81t68 -78.5t59.5 -67v-27h-121q-51 34 -105 82.5t-106 103.5 q-54 -55 -107 -103.5t-104 -82.5h-121z" />
+<glyph unicode="&#xeb;" horiz-adv-x="1096" d="M113 541q0 136 33 243t93 181.5t143.5 113.5t184.5 39q99 0 178 -35.5t134 -100t84.5 -155t29.5 -200.5v-113h-692q5 -193 81.5 -284t227.5 -91q51 0 94.5 5t84 14.5t78.5 24t77 32.5v-162q-40 -19 -78.5 -33t-79 -23t-84 -13t-94.5 -4q-110 0 -201 37t-156.5 108 t-101.5 176t-36 240zM305 662h492q0 68 -13.5 124.5t-42 96.5t-72.5 62t-106 22q-114 0 -180.5 -78t-77.5 -227zM269 1395q0 54 28 78t68 24q39 0 68 -24.5t29 -77.5t-29 -78t-68 -25q-40 0 -68 25t-28 78zM644 1395q0 54 28 78t68 24q19 0 36.5 -6t30.5 -18.5t21 -31.5 t8 -46q0 -53 -29 -78t-67 -25q-40 0 -68 25t-28 78z" />
+<glyph unicode="&#xec;" horiz-adv-x="530" d="M174 0v1098h182v-1098h-182zM-34 1548v21h219q16 -34 37.5 -74.5t44.5 -81t47 -78.5t45 -67v-27h-120q-35 28 -76 69.5t-79.5 85.5t-70 84.5t-47.5 67.5z" />
+<glyph unicode="&#xed;" horiz-adv-x="530" d="M174 0v1098h182v-1098h-182zM185 1241v27q22 29 45.5 67t47 78.5t44.5 81t37 74.5h219v-21q-16 -27 -47.5 -67.5t-70 -84.5t-79 -85.5t-75.5 -69.5h-121z" />
+<glyph unicode="&#xee;" horiz-adv-x="530" d="M174 0v1098h182v-1098h-182zM-67 1241v27q26 29 60 67t67.5 78.5t63 81t45.5 74.5h192q16 -34 45.5 -74.5t63 -81t68 -78.5t59.5 -67v-27h-121q-51 34 -105 82.5t-106 103.5q-54 -55 -107 -103.5t-104 -82.5h-121z" />
+<glyph unicode="&#xef;" horiz-adv-x="530" d="M174 0v1098h182v-1098h-182zM-18 1395q0 54 28 78t68 24q39 0 68 -24.5t29 -77.5t-29 -78t-68 -25q-40 0 -68 25t-28 78zM357 1395q0 54 28 78t68 24q19 0 36.5 -6t30.5 -18.5t21 -31.5t8 -46q0 -53 -29 -78t-67 -25q-40 0 -68 25t-28 78z" />
+<glyph unicode="&#xf0;" horiz-adv-x="1182" d="M111 477q0 119 31.5 211t90.5 155t143 95.5t189 32.5q102 0 179 -29.5t120 -89.5l8 4q-31 118 -91 214t-150 177l-256 -153l-74 114l217 131q-40 28 -82.5 55.5t-89.5 53.5l70 123q65 -32 126 -68t120 -80l227 138l74 -113l-195 -117q67 -65 122.5 -143t95 -171.5 t61.5 -204t22 -239.5q0 -142 -33.5 -252t-96 -186t-151.5 -115.5t-200 -39.5q-104 0 -191.5 33t-151 96.5t-99 156t-35.5 211.5zM303 471q0 -76 16.5 -138.5t52 -107.5t90 -69.5t130.5 -24.5q154 0 221.5 99.5t67.5 295.5q0 56 -17 109.5t-52 94.5t-90 66t-130 25 q-77 0 -131.5 -23t-89.5 -67t-51.5 -109.5t-16.5 -150.5z" />
+<glyph unicode="&#xf1;" horiz-adv-x="1206" d="M174 0v1098h148l26 -148h10q25 43 59.5 74.5t75.5 52.5t87 31t94 10q183 0 275.5 -95.5t92.5 -305.5v-717h-182v707q0 130 -52.5 195t-164.5 65q-81 0 -136 -26t-88.5 -77t-48 -125t-14.5 -170v-569h-182zM251 1241q5 60 21.5 109t43 83.5t63.5 53t83 18.5 q42 0 82.5 -17.5t78.5 -38.5t72.5 -38.5t63.5 -17.5q45 0 68 26t38 88h105q-5 -60 -21.5 -108.5t-43 -83t-63.5 -53.5t-83 -19q-40 0 -79.5 17.5t-77.5 39t-73 39t-67 17.5q-45 0 -69 -26.5t-38 -88.5h-104z" />
+<glyph unicode="&#xf2;" horiz-adv-x="1182" d="M113 551q0 136 33.5 241.5t95.5 178t151.5 110t200.5 37.5q103 0 190 -37.5t150.5 -110t99 -178t35.5 -241.5q0 -137 -33.5 -243.5t-96 -179t-151.5 -110.5t-200 -38q-103 0 -190 38t-150.5 110.5t-99 179t-35.5 243.5zM301 551q0 -209 68.5 -314.5t222.5 -105.5 t221.5 105.5t67.5 314.5t-68.5 312.5t-222.5 103.5t-221.5 -103.5t-67.5 -312.5zM353 1548v21h219q16 -34 37.5 -74.5t44.5 -81t47 -78.5t45 -67v-27h-120q-35 28 -76 69.5t-79.5 85.5t-70 84.5t-47.5 67.5z" />
+<glyph unicode="&#xf3;" horiz-adv-x="1182" d="M113 551q0 136 33.5 241.5t95.5 178t151.5 110t200.5 37.5q103 0 190 -37.5t150.5 -110t99 -178t35.5 -241.5q0 -137 -33.5 -243.5t-96 -179t-151.5 -110.5t-200 -38q-103 0 -190 38t-150.5 110.5t-99 179t-35.5 243.5zM301 551q0 -209 68.5 -314.5t222.5 -105.5 t221.5 105.5t67.5 314.5t-68.5 312.5t-222.5 103.5t-221.5 -103.5t-67.5 -312.5zM473 1241v27q22 29 45.5 67t47 78.5t44.5 81t37 74.5h219v-21q-16 -27 -47.5 -67.5t-70 -84.5t-79 -85.5t-75.5 -69.5h-121z" />
+<glyph unicode="&#xf4;" horiz-adv-x="1182" d="M113 551q0 136 33.5 241.5t95.5 178t151.5 110t200.5 37.5q103 0 190 -37.5t150.5 -110t99 -178t35.5 -241.5q0 -137 -33.5 -243.5t-96 -179t-151.5 -110.5t-200 -38q-103 0 -190 38t-150.5 110.5t-99 179t-35.5 243.5zM301 551q0 -209 68.5 -314.5t222.5 -105.5 t221.5 105.5t67.5 314.5t-68.5 312.5t-222.5 103.5t-221.5 -103.5t-67.5 -312.5zM253 1241v27q26 29 60 67t67.5 78.5t63 81t45.5 74.5h192q16 -34 45.5 -74.5t63 -81t68 -78.5t59.5 -67v-27h-121q-51 34 -105 82.5t-106 103.5q-54 -55 -107 -103.5t-104 -82.5h-121z" />
+<glyph unicode="&#xf5;" horiz-adv-x="1182" d="M113 551q0 136 33.5 241.5t95.5 178t151.5 110t200.5 37.5q103 0 190 -37.5t150.5 -110t99 -178t35.5 -241.5q0 -137 -33.5 -243.5t-96 -179t-151.5 -110.5t-200 -38q-103 0 -190 38t-150.5 110.5t-99 179t-35.5 243.5zM301 551q0 -209 68.5 -314.5t222.5 -105.5 t221.5 105.5t67.5 314.5t-68.5 312.5t-222.5 103.5t-221.5 -103.5t-67.5 -312.5zM228 1241q5 60 21.5 109t43 83.5t63.5 53t83 18.5q42 0 82.5 -17.5t78.5 -38.5t72.5 -38.5t63.5 -17.5q45 0 68 26t38 88h105q-5 -60 -21.5 -108.5t-43 -83t-63.5 -53.5t-83 -19 q-40 0 -79.5 17.5t-77.5 39t-73 39t-67 17.5q-45 0 -69 -26.5t-38 -88.5h-104z" />
+<glyph unicode="&#xf6;" horiz-adv-x="1182" d="M113 551q0 136 33.5 241.5t95.5 178t151.5 110t200.5 37.5q103 0 190 -37.5t150.5 -110t99 -178t35.5 -241.5q0 -137 -33.5 -243.5t-96 -179t-151.5 -110.5t-200 -38q-103 0 -190 38t-150.5 110.5t-99 179t-35.5 243.5zM301 551q0 -209 68.5 -314.5t222.5 -105.5 t221.5 105.5t67.5 314.5t-68.5 312.5t-222.5 103.5t-221.5 -103.5t-67.5 -312.5zM300 1395q0 54 28 78t68 24q39 0 68 -24.5t29 -77.5t-29 -78t-68 -25q-40 0 -68 25t-28 78zM675 1395q0 54 28 78t68 24q19 0 36.5 -6t30.5 -18.5t21 -31.5t8 -46q0 -53 -29 -78t-67 -25 q-40 0 -68 25t-28 78z" />
+<glyph unicode="&#xf7;" d="M102 647v150h924v-150h-924zM449 373q0 35 9 58.5t24.5 38.5t36 21.5t44.5 6.5q23 0 44 -6.5t37 -21.5t25 -38.5t9 -58.5q0 -33 -9 -56.5t-25 -39t-37 -22.5t-44 -7q-24 0 -44.5 7t-36 22.5t-24.5 39t-9 56.5zM449 1071q0 35 9 58.5t24.5 38.5t36 21.5t44.5 6.5 q23 0 44 -6.5t37 -21.5t25 -38.5t9 -58.5q0 -33 -9 -56.5t-25 -39t-37 -22.5t-44 -7q-24 0 -44.5 7t-36 22.5t-24.5 39t-9 56.5z" />
+<glyph unicode="&#xf8;" horiz-adv-x="1182" d="M115 551q0 136 33.5 241.5t95.5 178t151.5 110t200.5 37.5q63 0 119.5 -14.5t105.5 -42.5l68 108l131 -73l-80 -129q62 -73 96.5 -177.5t34.5 -238.5q0 -137 -33.5 -243.5t-96 -179t-151.5 -110.5t-200 -38q-125 0 -223 53l-68 -109l-131 74l80 131q-63 72 -98 178.5 t-35 243.5zM303 551q0 -84 9.5 -149.5t31.5 -116.5l397 647q-29 17 -66.5 26t-82.5 9q-154 0 -221.5 -103.5t-67.5 -312.5zM446 164q31 -17 67 -25t81 -8q154 0 221.5 105.5t67.5 314.5q0 159 -39 258z" />
+<glyph unicode="&#xf9;" horiz-adv-x="1206" d="M164 381v717h182v-707q0 -130 53 -195t164 -65q81 0 136 26t88.5 76.5t48 124.5t14.5 170v570h182v-1098h-147l-27 147h-10q-25 -43 -59.5 -74.5t-75.5 -52t-87 -30.5t-94 -10q-91 0 -160 23t-115 72t-69.5 125t-23.5 181zM300 1548v21h219q16 -34 37.5 -74.5t44.5 -81 t47 -78.5t45 -67v-27h-120q-35 28 -76 69.5t-79.5 85.5t-70 84.5t-47.5 67.5z" />
+<glyph unicode="&#xfa;" horiz-adv-x="1206" d="M164 381v717h182v-707q0 -130 53 -195t164 -65q81 0 136 26t88.5 76.5t48 124.5t14.5 170v570h182v-1098h-147l-27 147h-10q-25 -43 -59.5 -74.5t-75.5 -52t-87 -30.5t-94 -10q-91 0 -160 23t-115 72t-69.5 125t-23.5 181zM489 1241v27q22 29 45.5 67t47 78.5t44.5 81 t37 74.5h219v-21q-16 -27 -47.5 -67.5t-70 -84.5t-79 -85.5t-75.5 -69.5h-121z" />
+<glyph unicode="&#xfb;" horiz-adv-x="1206" d="M164 381v717h182v-707q0 -130 53 -195t164 -65q81 0 136 26t88.5 76.5t48 124.5t14.5 170v570h182v-1098h-147l-27 147h-10q-25 -43 -59.5 -74.5t-75.5 -52t-87 -30.5t-94 -10q-91 0 -160 23t-115 72t-69.5 125t-23.5 181zM266 1241v27q26 29 60 67t67.5 78.5t63 81 t45.5 74.5h192q16 -34 45.5 -74.5t63 -81t68 -78.5t59.5 -67v-27h-121q-51 34 -105 82.5t-106 103.5q-54 -55 -107 -103.5t-104 -82.5h-121z" />
+<glyph unicode="&#xfc;" horiz-adv-x="1206" d="M164 381v717h182v-707q0 -130 53 -195t164 -65q81 0 136 26t88.5 76.5t48 124.5t14.5 170v570h182v-1098h-147l-27 147h-10q-25 -43 -59.5 -74.5t-75.5 -52t-87 -30.5t-94 -10q-91 0 -160 23t-115 72t-69.5 125t-23.5 181zM309 1395q0 54 28 78t68 24q39 0 68 -24.5 t29 -77.5t-29 -78t-68 -25q-40 0 -68 25t-28 78zM684 1395q0 54 28 78t68 24q19 0 36.5 -6t30.5 -18.5t21 -31.5t8 -46q0 -53 -29 -78t-67 -25q-40 0 -68 25t-28 78z" />
+<glyph unicode="&#xfd;" horiz-adv-x="1001" d="M10 1098h189l215 -613q14 -40 28.5 -84t27 -88t21.5 -85t13 -76h6q5 25 16 68t24.5 91.5t28 95.5t25.5 80l199 611h188l-434 -1241q-28 -81 -60.5 -145.5t-75.5 -109.5t-101 -69.5t-138 -24.5q-52 0 -90 5.5t-65 11.5v145q21 -5 53 -8.5t67 -3.5q48 0 83 11.5t61 33.5 t44.5 54t33.5 73l57 160zM407 1241v27q22 29 45.5 67t47 78.5t44.5 81t37 74.5h219v-21q-16 -27 -47.5 -67.5t-70 -84.5t-79 -85.5t-75.5 -69.5h-121z" />
+<glyph unicode="&#xfe;" horiz-adv-x="1200" d="M174 -492v2048h182v-458l-8 -148h8q23 35 52 65.5t67.5 53t86.5 36t108 13.5q94 0 171 -36t131.5 -107.5t84.5 -177.5t30 -246q0 -141 -30 -247.5t-84.5 -178.5t-131.5 -108.5t-171 -36.5q-59 0 -107 13t-86.5 34.5t-68 50.5t-52.5 61h-12q3 -34 6 -65q2 -26 4 -53.5 t2 -43.5v-469h-182zM356 551q0 -101 13.5 -179.5t46 -132t86.5 -81t135 -27.5q135 0 198.5 109t63.5 313q0 208 -63.5 311t-200.5 103q-76 0 -128.5 -23t-85 -70t-48 -117t-17.5 -165v-41z" />
+<glyph unicode="&#xff;" horiz-adv-x="1001" d="M10 1098h189l215 -613q14 -40 28.5 -84t27 -88t21.5 -85t13 -76h6q5 25 16 68t24.5 91.5t28 95.5t25.5 80l199 611h188l-434 -1241q-28 -81 -60.5 -145.5t-75.5 -109.5t-101 -69.5t-138 -24.5q-52 0 -90 5.5t-65 11.5v145q21 -5 53 -8.5t67 -3.5q48 0 83 11.5t61 33.5 t44.5 54t33.5 73l57 160zM228 1395q0 54 28 78t68 24q39 0 68 -24.5t29 -77.5t-29 -78t-68 -25q-40 0 -68 25t-28 78zM603 1395q0 54 28 78t68 24q19 0 36.5 -6t30.5 -18.5t21 -31.5t8 -46q0 -53 -29 -78t-67 -25q-40 0 -68 25t-28 78z" />
+<glyph unicode="&#x131;" horiz-adv-x="530" d="M174 0v1098h182v-1098h-182z" />
+<glyph unicode="&#x152;" horiz-adv-x="1823" d="M125 735q0 170 38 308.5t117 236.5t199 151.5t283 53.5q98 0 182 -23h756v-164h-574v-452h535v-162h-535v-520h574v-164h-758q-43 -9 -88.5 -14.5t-93.5 -5.5q-163 0 -282.5 54t-198 153t-116.5 238.5t-38 309.5zM322 733q0 -137 26 -246.5t79.5 -186t136 -117 t196.5 -40.5q52 0 97 9t83 24v1112q-38 16 -82.5 24.5t-95.5 8.5q-114 0 -197 -40.5t-137 -116t-80 -184.5t-26 -247z" />
+<glyph unicode="&#x153;" horiz-adv-x="1864" d="M113 551q0 136 33.5 241.5t95.5 178t151.5 110t200.5 37.5q121 0 218.5 -55.5t160.5 -161.5q60 105 152.5 161t209.5 56q99 0 178 -35.5t134 -100t84.5 -155t29.5 -200.5v-113h-692q5 -193 81.5 -284t227.5 -91q51 0 94.5 5t84 14.5t78.5 24t77 32.5v-162 q-40 -19 -78.5 -33t-79 -23t-84 -13t-94.5 -4q-130 0 -232 56t-167 165q-63 -109 -162 -165t-227 -56q-103 0 -190 38t-150.5 110.5t-99 179t-35.5 243.5zM301 551q0 -209 68.5 -314.5t222.5 -105.5q150 0 219.5 100.5t69.5 309.5q0 220 -70 323t-221 103 q-154 0 -221.5 -103.5t-67.5 -312.5zM1073 662h492q0 68 -13.5 124.5t-42 96.5t-72.5 62t-106 22q-114 0 -180.5 -78t-77.5 -227z" />
+<glyph unicode="&#x178;" horiz-adv-x="1079" d="M0 1462h203l336 -739l340 739h200l-446 -893v-569h-187v559zM257 1733q0 54 28 78t68 24q39 0 68 -24.5t29 -77.5t-29 -78t-68 -25q-40 0 -68 25t-28 78zM632 1733q0 54 28 78t68 24q19 0 36.5 -6t30.5 -18.5t21 -31.5t8 -46q0 -53 -29 -78t-67 -25q-40 0 -68 25t-28 78z " />
+<glyph unicode="&#x2c6;" horiz-adv-x="1182" d="M258 1241v27q26 29 60 67t67.5 78.5t63 81t45.5 74.5h192q16 -34 45.5 -74.5t63 -81t68 -78.5t59.5 -67v-27h-121q-51 34 -105 82.5t-106 103.5q-54 -55 -107 -103.5t-104 -82.5h-121z" />
+<glyph unicode="&#x2da;" horiz-adv-x="1182" d="M365 1456q0 51 16 90.5t45.5 67.5t70.5 42.5t91 14.5q48 0 90 -14.5t73 -42t48.5 -67t17.5 -89.5q0 -51 -17.5 -91.5t-48 -68.5t-72.5 -42.5t-91 -14.5q-50 0 -91 14.5t-70.5 42.5t-45.5 67.5t-16 90.5zM475 1456q0 -53 28.5 -83t84.5 -30q49 0 80.5 30t31.5 83t-31.5 83 t-80.5 30q-50 0 -81.5 -30t-31.5 -83z" />
+<glyph unicode="&#x2dc;" horiz-adv-x="1182" d="M258 1241q5 60 21.5 109t43 83.5t63.5 53t83 18.5q42 0 82.5 -17.5t78.5 -38.5t72.5 -38.5t63.5 -17.5q45 0 68 26t38 88h105q-5 -60 -21.5 -108.5t-43 -83t-63.5 -53.5t-83 -19q-40 0 -79.5 17.5t-77.5 39t-73 39t-67 17.5q-45 0 -69 -26.5t-38 -88.5h-104z" />
+<glyph unicode="&#x2000;" horiz-adv-x="953" />
+<glyph unicode="&#x2001;" horiz-adv-x="1907" />
+<glyph unicode="&#x2002;" horiz-adv-x="953" />
+<glyph unicode="&#x2003;" horiz-adv-x="1907" />
+<glyph unicode="&#x2004;" horiz-adv-x="635" />
+<glyph unicode="&#x2005;" horiz-adv-x="476" />
+<glyph unicode="&#x2006;" horiz-adv-x="317" />
+<glyph unicode="&#x2007;" horiz-adv-x="317" />
+<glyph unicode="&#x2008;" horiz-adv-x="238" />
+<glyph unicode="&#x2009;" horiz-adv-x="381" />
+<glyph unicode="&#x200a;" horiz-adv-x="105" />
+<glyph unicode="&#x2010;" horiz-adv-x="659" d="M82 465v168h496v-168h-496z" />
+<glyph unicode="&#x2011;" horiz-adv-x="659" d="M82 465v168h496v-168h-496z" />
+<glyph unicode="&#x2012;" horiz-adv-x="659" d="M82 465v168h496v-168h-496z" />
+<glyph unicode="&#x2013;" horiz-adv-x="1024" d="M82 465v168h860v-168h-860z" />
+<glyph unicode="&#x2014;" horiz-adv-x="2048" d="M82 465v168h1884v-168h-1884z" />
+<glyph unicode="&#x2018;" horiz-adv-x="358" d="M23 983q14 54 33.5 115t42.5 123t49 123.5t51 117.5h137q-15 -61 -29.5 -127t-27.5 -131.5t-24 -127.5t-19 -115h-199z" />
+<glyph unicode="&#x2019;" horiz-adv-x="358" d="M23 961q14 60 28.5 126t28 132t24.5 128t19 115h199l14 -22q-14 -55 -33.5 -115.5t-43 -123t-49 -123.5t-50.5 -117h-137z" />
+<glyph unicode="&#x201a;" horiz-adv-x="512" d="M63 -264q15 61 29.5 127t28 131.5t24.5 128t19 115.5h198l15 -23q-14 -54 -33.5 -115t-43 -123t-49 -123.5t-50.5 -117.5h-138z" />
+<glyph unicode="&#x201c;" horiz-adv-x="743" d="M23 983q14 54 33.5 115t42.5 123t49 123.5t51 117.5h137q-15 -61 -29.5 -127t-27.5 -131.5t-24 -127.5t-19 -115h-199zM408 983q14 54 33.5 115t42.5 123t49 123.5t51 117.5h137q-15 -61 -29.5 -127t-27.5 -131.5t-24 -127.5t-19 -115h-199z" />
+<glyph unicode="&#x201d;" horiz-adv-x="743" d="M23 961q14 60 28.5 126t28 132t24.5 128t19 115h199l14 -22q-14 -55 -33.5 -115.5t-43 -123t-49 -123.5t-50.5 -117h-137zM408 961q14 60 28.5 126t28 132t24.5 128t19 115h199l14 -22q-14 -55 -33.5 -115.5t-43 -123t-49 -123.5t-50.5 -117h-137z" />
+<glyph unicode="&#x201e;" horiz-adv-x="897" d="M63 -264q15 61 29.5 127t28 131.5t24.5 128t19 115.5h198l15 -23q-14 -54 -33.5 -115t-43 -123t-49 -123.5t-50.5 -117.5h-138zM449 -264q14 61 28.5 127t28 131.5t24.5 128t19 115.5h199l14 -23q-14 -54 -33.5 -115t-43 -123t-49 -123.5t-50.5 -117.5h-137z" />
+<glyph unicode="&#x2022;" horiz-adv-x="770" d="M150 748q0 71 18 121t49.5 81.5t74.5 45.5t93 14q49 0 92 -14t75 -45.5t50.5 -81.5t18.5 -121q0 -70 -18.5 -120t-50.5 -81.5t-75 -46.5t-92 -15q-50 0 -93 15t-74.5 46.5t-49.5 81.5t-18 120z" />
+<glyph unicode="&#x2026;" horiz-adv-x="1647" d="M147 111q0 38 10 64.5t27 43t40 24t50 7.5q26 0 49.5 -7.5t40.5 -24t27 -43t10 -64.5q0 -37 -10 -63.5t-27 -43.5t-40.5 -25t-49.5 -8q-27 0 -50 8t-40 25t-27 43.5t-10 63.5zM696 111q0 38 10 64.5t27 43t40 24t50 7.5q26 0 49.5 -7.5t40.5 -24t27 -43t10 -64.5 q0 -37 -10 -63.5t-27 -43.5t-40.5 -25t-49.5 -8q-27 0 -50 8t-40 25t-27 43.5t-10 63.5zM1245 111q0 38 9.5 64.5t27 43t40.5 24t50 7.5q26 0 49.5 -7.5t40.5 -24t27 -43t10 -64.5q0 -37 -10 -63.5t-27 -43.5t-40.5 -25t-49.5 -8q-54 0 -90.5 33t-36.5 107z" />
+<glyph unicode="&#x202f;" horiz-adv-x="381" />
+<glyph unicode="&#x2039;" horiz-adv-x="590" d="M82 526v27l309 414l117 -78l-238 -348l238 -348l-117 -78z" />
+<glyph unicode="&#x203a;" horiz-adv-x="590" d="M82 193l237 348l-237 348l117 78l309 -414v-27l-309 -411z" />
+<glyph unicode="&#x2044;" horiz-adv-x="266" d="M-352 0l811 1462h157l-811 -1462h-157z" />
+<glyph unicode="&#x205f;" horiz-adv-x="476" />
+<glyph unicode="&#x20ac;" d="M63 502v137h148q-2 23 -2 38v44q0 22 1 45t1 31h-148v137h160q18 125 62 226t111.5 173t159.5 111t206 39q97 0 177 -21.5t159 -70.5l-80 -146q-51 31 -110.5 52.5t-131.5 21.5q-69 0 -128 -26t-106 -75.5t-80.5 -121t-51.5 -162.5h432v-137h-447q0 -15 -1 -29 q-1 -12 -1 -25v-22v-39q0 -21 2 -43h385v-137h-366q34 -175 126.5 -267t241.5 -92q75 0 142.5 16t126.5 42v-162q-59 -28 -125.5 -43.5t-157.5 -15.5q-115 0 -206 36.5t-158.5 104t-111.5 164t-65 217.5h-164z" />
+<glyph unicode="&#x2122;" horiz-adv-x="1534" d="M37 1354v108h522v-108h-199v-613h-127v613h-196zM625 741v721h186l180 -551l191 551h178v-721h-127v428q0 9 0.5 24t0.5 33l2 34q0 18 1 30h-6l-195 -549h-100l-186 549h-7q1 -16 2 -33t1.5 -32t1 -27t0.5 -18v-439h-123z" />
+<glyph unicode="&#xe000;" horiz-adv-x="1100" d="M0 1100h1100v-1100h-1100v1100z" />
+<glyph unicode="&#xfb01;" horiz-adv-x="1204" d="M29 961v75l194 68v96q0 107 22.5 177.5t65 112.5t104.5 59.5t140 17.5q59 0 108.5 -11.5t88.5 -25.5l-47 -141q-31 11 -67.5 19.5t-76.5 8.5t-69 -9.5t-48 -33.5t-28.5 -65.5t-9.5 -106.5v-104h245v-137h-245v-961h-183v961h-194zM834 1395q0 60 30.5 87t75.5 27 q22 0 41.5 -6.5t34 -20.5t23 -35.5t8.5 -51.5q0 -58 -31.5 -86.5t-75.5 -28.5q-45 0 -75.5 28t-30.5 87zM848 0v1098h182v-1098h-182z" />
+<glyph unicode="&#xfb02;" horiz-adv-x="1204" d="M29 961v75l194 68v96q0 107 22.5 177.5t65 112.5t104.5 59.5t140 17.5q59 0 108.5 -11.5t88.5 -25.5l-47 -141q-31 11 -67.5 19.5t-76.5 8.5t-69 -9.5t-48 -33.5t-28.5 -65.5t-9.5 -106.5v-104h245v-137h-245v-961h-183v961h-194zM848 0v1556h182v-1556h-182z" />
+<glyph unicode="&#xfb03;" horiz-adv-x="1878" d="M29 961v75l194 68v96q0 107 22.5 177.5t65 112.5t104.5 59.5t140 17.5q59 0 108.5 -11.5t88.5 -25.5l-47 -141q-31 11 -67.5 19.5t-76.5 8.5t-69 -9.5t-48 -33.5t-28.5 -65.5t-9.5 -106.5v-104h245v-137h-245v-961h-183v961h-194zM703 961v75l194 68v96q0 107 22.5 177.5 t65 112.5t104.5 59.5t140 17.5q59 0 108.5 -11.5t88.5 -25.5l-47 -141q-31 11 -67.5 19.5t-76.5 8.5t-69 -9.5t-48 -33.5t-28.5 -65.5t-9.5 -106.5v-104h245v-137h-245v-961h-183v961h-194zM1508 1395q0 60 30.5 87t75.5 27q22 0 41.5 -6.5t34 -20.5t23 -35.5t8.5 -51.5 q0 -58 -31.5 -86.5t-75.5 -28.5q-45 0 -75.5 28t-30.5 87zM1522 0v1098h182v-1098h-182z" />
+<glyph unicode="&#xfb04;" horiz-adv-x="1878" d="M29 961v75l194 68v96q0 107 22.5 177.5t65 112.5t104.5 59.5t140 17.5q59 0 108.5 -11.5t88.5 -25.5l-47 -141q-31 11 -67.5 19.5t-76.5 8.5t-69 -9.5t-48 -33.5t-28.5 -65.5t-9.5 -106.5v-104h245v-137h-245v-961h-183v961h-194zM703 961v75l194 68v96q0 107 22.5 177.5 t65 112.5t104.5 59.5t140 17.5q59 0 108.5 -11.5t88.5 -25.5l-47 -141q-31 11 -67.5 19.5t-76.5 8.5t-69 -9.5t-48 -33.5t-28.5 -65.5t-9.5 -106.5v-104h245v-137h-245v-961h-183v961h-194zM1522 0v1556h182v-1556h-182z" />
+<glyph horiz-adv-x="678" d="M12 778v111l377 579h141v-563h125v-127h-125v-192h-143v192h-375zM158 905h229v195q0 42 1.5 91.5t4.5 98.5q-5 -11 -15 -29.5t-21 -39.5t-23 -41l-21 -35z" />
+</font>
+</defs></svg> 
\ No newline at end of file
Index: modules/uoa-validator-admin/trunk/src/main/webapp/jsps/fonts/maven_pro_regular-webfont.svg
===================================================================
--- modules/uoa-validator-admin/trunk/src/main/webapp/jsps/fonts/maven_pro_regular-webfont.svg	(nonexistent)
+++ modules/uoa-validator-admin/trunk/src/main/webapp/jsps/fonts/maven_pro_regular-webfont.svg	(revision 47450)
@@ -0,0 +1,245 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" >
+<svg xmlns="http://www.w3.org/2000/svg">
+<metadata>
+This is a custom SVG webfont generated by Font Squirrel.
+Copyright   : Copyright c 2011 by Vissol Ltd All rights reserved
+Designer    : Joe Prince
+Foundry     : Joe Prince
+</metadata>
+<defs>
+<font id="webfontOM8fITNz" horiz-adv-x="1529" >
+<font-face units-per-em="2048" ascent="1638" descent="-410" />
+<missing-glyph horiz-adv-x="692" />
+<glyph unicode=" "  horiz-adv-x="692" />
+<glyph unicode="&#x09;" horiz-adv-x="692" />
+<glyph unicode="&#xa0;" horiz-adv-x="692" />
+<glyph unicode="!" horiz-adv-x="761" d="M303 0v164h164v-164h-164zM311 1366h148l-15 -1022h-118z" />
+<glyph unicode="&#x22;" horiz-adv-x="780" d="M440 1384h170l-37 -411h-98zM203 973l-37 411h170l-35 -411h-98z" />
+<glyph unicode="#" horiz-adv-x="1210" d="M850 1071h125l-43 -242h147v-122h-168l-57 -326h166v-123h-186l-37 -219h-125l37 219h-271l-39 -219h-125l39 219h-168v123h189l55 326h-186v122h209l41 242h125l-41 -242h270zM729 381l57 326h-272l-55 -326h270z" />
+<glyph unicode="$" horiz-adv-x="1181" d="M1055 348q0 -156 -105.5 -250t-296.5 -110v-209h-110v205q-207 6 -377 96v160q158 -104 377 -109v520q-76 23 -117 37t-101.5 44t-92 63.5t-55 87t-23.5 121.5q0 143 95 249.5t294 126.5v209h110v-205q166 -8 314 -81v-152q-150 84 -314 86v-469q88 -29 147.5 -55.5 t124 -73.5t97.5 -120t33 -171zM301 1004q0 -78 61.5 -121t180.5 -80v428q-242 -34 -242 -227zM653 135q254 33 254 213q0 106 -65.5 165.5t-188.5 102.5v-481z" />
+<glyph unicode="%" horiz-adv-x="1777" d="M442 1360q123 0 209 -83t86 -294q0 -113 -26.5 -190.5t-71.5 -116.5t-93 -55.5t-104 -16.5q-57 0 -104 16.5t-93 55.5t-73 116.5t-27 190.5q0 111 27 189.5t73 116.5t93 54.5t104 16.5zM442 711q84 0 133.5 55t49.5 217t-49.5 216t-133.5 54q-86 0 -135 -54t-49 -216 t50 -217t134 -55zM1384 1366l-858 -1366h-131l858 1366h131zM1339 6q-57 0 -104 16.5t-93 55.5t-73 116.5t-27 190.5t27 190.5t73 116.5t93 55.5t104 16.5q55 0 103.5 -16.5t93.5 -55.5t71.5 -116.5t26.5 -190.5t-26.5 -190.5t-71.5 -116.5t-93.5 -55.5t-103.5 -16.5z M1339 657q-84 0 -134 -55t-50 -217t50 -217t134 -55t133.5 55t49.5 217t-49.5 217t-133.5 55z" />
+<glyph unicode="&#x26;" horiz-adv-x="1310" d="M1014 272l227 -272h-192l-125 152q-162 -168 -385 -168q-111 0 -198 38.5t-134 101t-71.5 127t-24.5 126.5q0 119 56 220t220 191q-135 168 -135 283q0 127 91 218t218 91q131 0 221 -87t90 -214q0 -109 -59 -183.5t-192 -152.5l297 -354q57 100 83 205h134 q-33 -177 -121 -322zM565 1233q-70 0 -120 -48t-50 -116q0 -72 129 -213q131 70 171 116t40 105q0 68 -49 112t-121 44zM545 127q172 0 291 129l-357 428q-78 -41 -128 -85t-68.5 -87t-22.5 -67.5t-4 -63.5q0 -33 12.5 -71t42 -82t90 -72.5t144.5 -28.5z" />
+<glyph unicode="'" horiz-adv-x="509" d="M203 973l-37 411h170l-35 -411h-98z" />
+<glyph unicode="(" horiz-adv-x="706" d="M418 1483h155q-29 -47 -59.5 -112.5t-74.5 -180.5t-72.5 -264.5t-28.5 -300.5q0 -150 28.5 -300.5t72.5 -264t76 -180t58 -111.5h-155q-227 408 -228 856q1 450 228 858z" />
+<glyph unicode=")" horiz-adv-x="706" d="M291 1483q227 -408 227 -856q0 -451 -227 -858h-158q29 47 59.5 111.5t75.5 180t74 265t29 301.5q0 195 -53.5 396.5t-98.5 296.5t-86 163h158z" />
+<glyph unicode="*" horiz-adv-x="841" d="M666 1270l-177 -80l177 -78l-56 -98l-153 112l16 -184h-111l21 184l-156 -112l-55 98l178 78l-178 80l55 94l156 -111l-21 187h111l-16 -187l153 111z" />
+<glyph unicode="+" horiz-adv-x="1128" d="M926 674v-123h-301v-301h-123v301h-303v123h303v303h123v-303h301z" />
+<glyph unicode="," horiz-adv-x="641" d="M303 172h168l-172 -401h-147z" />
+<glyph unicode="-" horiz-adv-x="950" d="M786 682v-143h-624v143h624z" />
+<glyph unicode="." horiz-adv-x="671" d="M260 0v164h164v-164h-164z" />
+<glyph unicode="/" horiz-adv-x="827" d="M723 1548h135l-754 -1749h-133z" />
+<glyph unicode="0" horiz-adv-x="1345" d="M671.5 1378q538.5 0 538.5 -700.5t-538.5 -700.5t-538.5 700.5t538.5 700.5zM671.5 113q61.5 0 110.5 10t104.5 45t92.5 94.5t60.5 164.5t23.5 251q0 178 -34 298t-95.5 174t-121.5 73.5t-140 19.5t-140.5 -19.5t-122 -73.5t-95 -174t-33.5 -298q0 -145 23.5 -250.5 t60 -165t92 -94.5t104.5 -45t110.5 -10z" />
+<glyph unicode="1" horiz-adv-x="923" d="M463 1366h168v-1366h-148v1212l-272 -180v174z" />
+<glyph unicode="2" horiz-adv-x="1189" d="M401 147h619v-147h-862v129q102 76 208.5 169t223.5 215t189.5 252t72.5 234q0 238 -322 238q-190 0 -358 -119v162q172 104 371 104q233 0 344.5 -112.5t111.5 -272.5q0 -111 -56 -232.5t-151.5 -236t-190 -206t-200.5 -177.5z" />
+<glyph unicode="3" horiz-adv-x="1193" d="M788 739q10 -4 26.5 -12t58.5 -39t75 -67.5t59.5 -99t26.5 -132.5q0 -78 -27.5 -147.5t-84 -129t-157.5 -94t-235 -34.5q-197 0 -364 86v151q160 -90 346 -90q182 0 278.5 67.5t96.5 194.5t-98.5 194.5t-284.5 67.5h-150v142h156q150 0 228.5 56t78.5 162.5t-83 164 t-240 57.5q-152 0 -295 -72v150q147 70 311 69q233 0 344 -108.5t111 -259.5q0 -172 -148 -260z" />
+<glyph unicode="4" horiz-adv-x="1210" d="M889 547h194v-137h-194v-410h-148v410h-663v157l645 799h166v-819zM242 547h499v608z" />
+<glyph unicode="5" horiz-adv-x="1202" d="M248 1366h702v-145h-575l-39 -406q121 37 266 37q84 0 153.5 -18.5t136 -63.5t105.5 -135t39 -217t-39 -217t-105.5 -135.5t-136 -63.5t-153.5 -18q-236 0 -391 84v153q150 -94 381 -94q80 0 138 19.5t89 46t47.5 69.5t20.5 77t4 79q0 92 -24.5 152.5t-71.5 88t-93.5 37 t-109.5 9.5q-96 0 -177 -16.5t-112 -33.5l-33 -14l-92 94z" />
+<glyph unicode="6" horiz-adv-x="1193" d="M598 874q215 0 340 -115.5t125 -314.5q0 -84 -25.5 -162.5t-78 -147t-145.5 -109.5t-216 -41q-465 0 -465 641q0 141 25.5 257.5t65.5 193.5t96.5 135.5t111.5 90t118.5 51t111 25.5t94.5 6q109 0 198 -26v-137q-102 25 -182 24q-47 0 -92 -6t-113.5 -32.5t-122 -73 t-97.5 -136.5t-58 -213q133 90 309 90zM598 123q102 0 172 38t98.5 98t37.5 103.5t9 83.5q0 139 -81.5 215t-235.5 76q-201 0 -317 -116q2 -141 27.5 -241.5t57 -149t83 -75t79 -29.5t70.5 -3z" />
+<glyph unicode="7" horiz-adv-x="1175" d="M143 1366h932v-137l-592 -1229h-164l596 1219h-772v147z" />
+<glyph unicode="8" horiz-adv-x="1191" d="M842 739q10 -4 25.5 -11t54.5 -34.5t69.5 -62.5t55 -95.5t24.5 -129.5q0 -78 -25.5 -149t-79 -134.5t-148.5 -101t-220 -37.5q-240 0 -356.5 127t-116.5 295q0 203 184 307l51 24l-20 11q-12 6 -44 30.5t-56.5 55t-44 84t-19.5 112.5q0 145 103.5 249.5t318.5 104.5 t318.5 -103t103.5 -251q0 -184 -148 -274zM324 1030q0 -111 72.5 -173t201.5 -62t201.5 62.5t72.5 172.5q0 209 -274 209t-274 -209zM598 123q86 0 149.5 23.5t96.5 56.5t52 76t23.5 71.5t4.5 55.5q0 123 -84 188t-242 65t-242 -65.5t-84 -187.5q0 -27 4.5 -55.5t23.5 -71.5 t52 -76t96.5 -56.5t149.5 -23.5z" />
+<glyph unicode="9" horiz-adv-x="1202" d="M584 494q-215 0 -340 115.5t-125 314.5q0 84 25.5 162.5t77.5 147.5t145.5 109.5t216.5 40.5q465 0 465 -643q0 -195 -48.5 -340t-116 -223t-160.5 -124t-160.5 -58t-137.5 -12q-104 0 -199 24v139q84 -25 183 -24q47 0 92 6t113.5 32.5t120.5 73t97.5 136.5t57.5 213 q-121 -90 -307 -90zM584 1245q-102 0 -172 -38t-98.5 -98t-38 -103t-9.5 -84q0 -139 82 -215t236 -76q207 0 317 117q-2 141 -27.5 241.5t-57.5 148.5t-83 74.5t-78.5 29.5t-70.5 3z" />
+<glyph unicode=":" horiz-adv-x="800" d="M324 98v164h163v-164h-163zM324 754v164h163v-164h-163z" />
+<glyph unicode=";" horiz-adv-x="854" d="M352 754v164h164v-164h-164zM350 172h168l-172 -401h-147z" />
+<glyph unicode="&#x3c;" horiz-adv-x="1351" d="M246 621l844 383v-164l-672 -289l672 -291v-162l-844 383v140z" />
+<glyph unicode="=" horiz-adv-x="1306" d="M1049 524v-143h-789v143h789zM1049 840v-142h-789v142h789z" />
+<glyph unicode="&#x3e;" horiz-adv-x="1329" d="M1112 621v-140l-842 -383v162l670 291l-670 289v164z" />
+<glyph unicode="?" horiz-adv-x="993" d="M391 0v164h164v-164h-164zM449 1382q61 0 120.5 -14t129 -50t112.5 -117t43 -197q0 -82 -31.5 -142.5t-77.5 -98.5l-90 -76q-45 -38 -76.5 -101.5t-31.5 -151.5v-90h-148v100q0 104 32 181t77 120t90 78t77 79t32 102q0 231 -269 231q-156 0 -274 -90v160q113 77 285 77z " />
+<glyph unicode="@" horiz-adv-x="1869" d="M1040 596q74 0 152 -10q2 14 2 43q0 35 -6 59.5t-23.5 50t-60.5 39t-109 13.5q-143 0 -256 -43l17 118q123 41 239 41q156 0 237 -70.5t81 -207.5q0 -59 -11.5 -142.5t-17.5 -137.5t-4 -107.5t30.5 -79t86.5 -25.5q90 0 169 114t79 312q0 145 -55.5 262t-144.5 186.5 t-191.5 106.5t-206.5 37q-311 0 -554 -230.5t-243 -553.5q0 -154 51 -270.5t123 -177t163 -98.5t153.5 -47t113.5 -9q254 0 430 100l-18 -92q-172 -82 -428 -82q-86 0 -174.5 22.5t-178.5 74.5t-158.5 127t-112.5 192.5t-44 259.5q0 244 133 445.5t334 309t410 107.5 q82 0 171 -21.5t180 -73t162.5 -126t116.5 -189t45 -254.5q0 -221 -91 -362t-242 -141q-137 0 -191 100q-96 -100 -295 -100q-143 0 -225 62t-82 171q0 49 16.5 94t59.5 94.5t138 79t230 29.5zM903 184q49 0 88 8.5t65.5 17.5t47 31.5t31 37t18.5 46t11 46t6.5 51.5t5.5 47 q-55 8 -136 8q-326 0 -325 -178q0 -115 188 -115z" />
+<glyph unicode="A" horiz-adv-x="1325" d="M735 1366l543 -1366h-158l-164 426h-589l-164 -426h-160l545 1366h147zM422 567h479l-239 625z" />
+<glyph unicode="B" horiz-adv-x="1271" d="M940 727q10 -2 24.5 -8t54.5 -33t69.5 -61.5t54 -98t24.5 -139.5q0 -387 -495 -387h-494v1366h453q455 0 454 -367q0 -55 -15 -104t-36.5 -78t-42 -50.5t-37.5 -29.5zM684 137q156 0 246 54.5t90 203.5q0 63 -21.5 108.5t-52.5 71t-80 39t-91 17.5t-97 4h-352v-498h358z M938 989q0 133 -72.5 184.5t-220.5 51.5h-319v-451h338q125 0 199.5 43t74.5 172z" />
+<glyph unicode="C" horiz-adv-x="1286" d="M272 684q0 -291 121 -426t381 -135q209 0 400 80v-142q-199 -78 -416 -77q-633 0 -633 700t633 700q219 0 416 -79v-142q-195 82 -400 82q-260 0 -381 -135t-121 -426z" />
+<glyph unicode="D" horiz-adv-x="1372" d="M178 1366h428q641 0 641 -682q0 -684 -641 -684h-428v1366zM596 139q262 0 383 131t121 414t-121 414t-383 131h-270v-1090h270z" />
+<glyph unicode="E" horiz-adv-x="1159" d="M326 1227v-471h628v-144h-628v-473h714v-139h-862v1366h862v-139h-714z" />
+<glyph unicode="F" horiz-adv-x="1097" d="M178 1366h838v-139h-690v-471h606v-144h-606v-612h-148v1366z" />
+<glyph unicode="G" horiz-adv-x="1386" d="M758 600v143h477v-653q-221 -106 -477 -106q-633 0 -633 700t633 700q227 0 430 -86v-143q-199 88 -414 88q-260 0 -381 -135t-121 -424q0 -291 121 -425t381 -134q164 0 313 49v426h-329z" />
+<glyph unicode="H" horiz-adv-x="1380" d="M1053 1366h147v-1366h-147v612h-727v-612h-148v1366h148v-612h727v612z" />
+<glyph unicode="I" horiz-adv-x="501" d="M178 1366h148v-1366h-148v1366z" />
+<glyph unicode="J" horiz-adv-x="915" d="M573 1366h148v-958q0 -125 -35 -213.5t-95.5 -131.5t-124 -61t-136.5 -18q-147 0 -271 71v154q117 -82 252 -82q139 0 200.5 68.5t61.5 224.5v946z" />
+<glyph unicode="K" horiz-adv-x="1294" d="M571 727l633 -727h-194l-535 623l-149 -164v-459h-148v1366h148v-704l632 704h199z" />
+<glyph unicode="L" horiz-adv-x="1067" d="M326 143h698v-143h-846v1366h148v-1223z" />
+<glyph unicode="M" horiz-adv-x="1619" d="M1278 1366h160v-1366h-148v1124l-483 -696l-481 696v-1124h-148v1366h160l469 -694z" />
+<glyph unicode="N" horiz-adv-x="1490" d="M1161 1366h148v-1366h-166l-817 1151v-1151h-148v1366h168l815 -1151v1151z" />
+<glyph unicode="O" d="M758 1384q635 0 635 -700t-635 -700q-633 0 -633 700t633 700zM758 123q254 0 370.5 135t116.5 426t-116.5 426t-370.5 135q-252 0 -369 -135t-117 -426t117 -426t369 -135z" />
+<glyph unicode="P" horiz-adv-x="1220" d="M662 1366q229 0 351 -108.5t122 -313.5t-122 -313.5t-351 -108.5h-338v-522h-148v1366h486zM643 664q109 0 181.5 23.5t105.5 68.5t45 88t12 100t-12 100t-45 88.5t-105.5 69t-181.5 23.5h-319v-561h319z" />
+<glyph unicode="Q" d="M1393 684q0 -651 -553 -698q41 -170 268 -176v-134q-113 0 -196 30t-127 81t-65.5 98t-29.5 101q-565 37 -565 698q0 700 633 700q635 0 635 -700zM758 123q254 0 370.5 135t116.5 426t-116.5 426t-370.5 135q-252 0 -369 -135t-117 -426t117 -426t369 -135z" />
+<glyph unicode="R" horiz-adv-x="1271" d="M829 573l375 -573h-174l-356 551h-348v-551h-148v1366h502q223 0 343 -101.5t120 -295.5q0 -88 -28 -160t-63.5 -112t-84.5 -69.5t-80 -39t-58 -15.5zM672 690q102 0 170.5 23.5t99.5 65.5t42 83t11 96.5t-11 96.5t-42 83t-99.5 65.5t-170.5 23.5h-346v-537h346z" />
+<glyph unicode="S" horiz-adv-x="1150" d="M272 1004q0 -70 56.5 -117t139.5 -69.5t181.5 -57.5t181 -76t139 -127t56.5 -209q0 -170 -128 -267t-357 -97q-223 0 -404 96v160q162 -109 393 -109q348 0 349 217q0 92 -56.5 154.5t-139.5 91.5l-181 60q-98 32 -181 65t-139.5 105.5t-56.5 179.5q0 158 114.5 269 t356.5 111q174 0 342 -81v-152q-152 86 -328 86q-164 0 -251 -60t-87 -173z" />
+<glyph unicode="T" horiz-adv-x="1163" d="M25 1366h1112v-143h-482v-1223h-147v1223h-483v143z" />
+<glyph unicode="U" horiz-adv-x="1476" d="M1141 1366h147v-805q0 -281 -143.5 -429t-411.5 -148t-411.5 148.5t-143.5 428.5v805h148v-813q0 -434 407.5 -434t407.5 434v813z" />
+<glyph unicode="V" horiz-adv-x="1251" d="M1061 1366h158l-525 -1366h-145l-524 1366h157l441 -1155z" />
+<glyph unicode="W" horiz-adv-x="1947" d="M1765 1366h156l-440 -1366h-150l-358 1114l-359 -1114h-151l-438 1366h155l359 -1143l360 1143h148l358 -1143z" />
+<glyph unicode="X" horiz-adv-x="1206" d="M690 690l484 -690h-177l-397 563l-395 -563h-180l485 692l-473 674h176l387 -549l385 549h180z" />
+<glyph unicode="Y" horiz-adv-x="1224" d="M1012 1366h178l-508 -739v-627h-147v627l-510 739h178l405 -596z" />
+<glyph unicode="Z" horiz-adv-x="1247" d="M1104 1366v-125l-785 -1094h785v-147h-973v129l780 1090h-759v147h952z" />
+<glyph unicode="[" horiz-adv-x="784" d="M391 1286v-1384h223v-140h-370v1663h370v-139h-223z" />
+<glyph unicode="\" horiz-adv-x="753" d="M59 1548l752 -1749h-133l-754 1749h135z" />
+<glyph unicode="]" horiz-adv-x="780" d="M393 1286h-221v139h369v-1663h-369v140h221v1384z" />
+<glyph unicode="^" horiz-adv-x="1146" d="M600 1413l213 -444h-123l-145 325l-148 -325h-123l213 444h113z" />
+<glyph unicode="_" horiz-adv-x="1118" d="M0 -49h1118v-90h-1118v90z" />
+<glyph unicode="`" horiz-adv-x="448" d="M244 1391l116 -236h-96l-170 236h150z" />
+<glyph unicode="a" horiz-adv-x="1093" d="M522 1040q215 0 328 -108.5t113 -317.5v-307q0 -98 -45.5 -167.5t-117 -100.5t-134 -43t-123.5 -12q-47 0 -96.5 6t-112 27.5t-108.5 55t-78.5 96t-32.5 144.5q0 70 25.5 125.5t62.5 90t94 59t101 36t104.5 17.5t86 7t60.5 1l164 -10q0 137 -75.5 195.5t-223.5 58.5 q-166 0 -299 -49v143q151 53 307 53zM815 307v197q-68 12 -182 12q-371 0 -371 -203q0 -193 281 -192q272 0 272 186z" />
+<glyph unicode="b" horiz-adv-x="1167" d="M569 1040q70 0 131.5 -12t125 -47t109.5 -90t74.5 -149.5t28.5 -217.5q0 -135 -31.5 -236.5t-77.5 -157.5t-110.5 -91t-119 -45t-111.5 -10q-111 0 -193 27.5t-123 63.5t-66.5 86t-30.5 82.5t-5 63.5v1106h147v-414q123 41 252 41zM588 119q57 0 103 13t95.5 51t77 125 t27.5 216q0 199 -76 289t-246 90q-127 0 -252 -51v-553q1 -180 271 -180z" />
+<glyph unicode="c" horiz-adv-x="966" d="M266 512q0 -205 83 -296t265 -91q154 0 287 57v-143q-143 -55 -303 -55q-72 0 -134.5 12t-128 48t-111.5 92.5t-75.5 152.5t-29.5 223q0 156 43 265.5t116.5 163.5t150.5 76.5t169 22.5q154 0 303 -57v-141q-139 57 -287 57q-182 0 -265 -92t-83 -295z" />
+<glyph unicode="d" horiz-adv-x="1150" d="M129 524q0 152 41 258.5t113.5 159.5t147.5 74.5t165 21.5q135 0 254 -39v412h147v-1106q0 -41 -12 -84t-50 -102.5t-130 -97t-227 -37.5q-57 0 -111.5 10t-118 45t-109.5 91t-78 157.5t-32 236.5zM276 524q0 -129 28 -216t77 -125t94 -51t103 -13q272 0 272 180v553 q-125 51 -254 51q-168 0 -244 -90t-76 -289z" />
+<glyph unicode="e" horiz-adv-x="1136" d="M578 1040q94 0 170.5 -29.5t121.5 -69.5t79 -104.5t48.5 -109.5t22.5 -108.5t8 -78.5v-44l-4 -72h-745q14 -154 94 -223.5t237 -69.5q223 0 351 76v-152q-150 -72 -365 -71q-90 0 -165 21.5t-147.5 74.5t-113.5 159.5t-41 258.5v7.5v7.5q0 527 449 527zM279 555h598 q0 35 -8.5 78t-34 110.5t-92 112.5t-164.5 45q-152 0 -220.5 -79t-78.5 -267z" />
+<glyph unicode="f" horiz-adv-x="675" d="M612 1317q-49 0 -74.5 -4t-61.5 -24.5t-53 -73t-17 -136.5v-57h280v-135h-280v-887h-148v887h-176v135h176v55q0 106 27.5 182t62.5 112t89.5 56.5t83 22.5t67.5 2q55 0 98 -12v-131q-41 8 -74 8z" />
+<glyph unicode="g" horiz-adv-x="1101" d="M557 1040q131 0 220 -36.5t125 -94t48.5 -99.5t12.5 -83v-770q0 -68 -19.5 -125t-64.5 -111.5t-137.5 -85t-223.5 -30.5q-143 0 -291 37v139q131 -37 275 -37q98 0 164.5 17.5t96.5 50t41 64.5t11 77v102q-115 -37 -240 -37q-68 0 -127 11.5t-120.5 45.5t-105.5 88 t-71.5 144t-27.5 209q0 160 43 271.5t115.5 162.5t138 70.5t137.5 19.5zM815 203v530q0 172 -258 172q-55 0 -98 -13t-90 -50t-73 -120t-26 -206q0 -115 24.5 -189.5t72 -110.5t95.5 -48t113 -12q123 0 240 47z" />
+<glyph unicode="h" horiz-adv-x="1181" d="M649 1040q188 0 290.5 -113.5t102.5 -320.5v-606h-147v606q0 287 -262 287q-143 0 -293 -62v-831h-147v1411h147v-436q155 65 309 65z" />
+<glyph unicode="i" horiz-adv-x="540" d="M348 0v1022h-147v-1022h147zM356 1366v-162h-163v162h163z" />
+<glyph unicode="j" horiz-adv-x="514" d="M207 1366h164v-162h-164v162zM215 1022h147v-1081q0 -336 -356 -336v137q127 2 168 50t41 157v1073z" />
+<glyph unicode="k" horiz-adv-x="1124" d="M559 553l492 -553h-197l-391 449l-127 -138v-311h-148v1411h148v-891l459 502h200z" />
+<glyph unicode="l" horiz-adv-x="552" d="M354 0h-147v1411h147v-1411z" />
+<glyph unicode="m" horiz-adv-x="1824" d="M1251 1040q186 0 288.5 -98t102.5 -276v-666h-147v666q0 43 -8 76.5t-32.5 71.5t-79 58.5t-134.5 20.5q-129 0 -283 -51q33 -74 33 -176v-666h-147v666q0 45 -8.5 78.5t-33 70.5t-80.5 57.5t-138 20.5q-125 0 -244 -37v-856h-147v942q197 98 409 98q168 0 270 -84 q197 84 379 84z" />
+<glyph unicode="n" horiz-adv-x="1189" d="M600 1040q193 0 299.5 -98t106.5 -276v-666h-148v666q0 43 -9 76.5t-35 71.5t-84 58.5t-146 20.5q-129 0 -269 -41v-852h-147v940q201 100 432 100z" />
+<glyph unicode="o" horiz-adv-x="1155" d="M579.5 1040q92.5 0 170 -22.5t151.5 -76.5t117 -163.5t43 -265.5t-43 -265.5t-117 -163.5t-151.5 -76.5t-170 -22.5t-169 22.5t-150.5 76.5t-117 163.5t-43 265.5t43 265.5t117 163.5t150.5 76.5t169 22.5zM580 119q174 0 253.5 93t79.5 300t-79.5 300t-253.5 93 t-253 -94t-79 -299t79 -299t253 -94z" />
+<glyph unicode="p" horiz-adv-x="1159" d="M588 1040q57 0 111.5 -10t118 -45t109.5 -92t77.5 -158.5t31.5 -236.5q0 -152 -41 -258.5t-113.5 -159.5t-147.5 -74.5t-165 -21.5q-125 0 -254 39v-402h-147v1096q0 41 12.5 84t50 103.5t130 98t227.5 37.5zM569 121q168 0 244 89t76 290q0 129 -27.5 215t-77 125 t-94.5 52t-102 13q-272 0 -273 -182v-551q117 -51 254 -51z" />
+<glyph unicode="q" horiz-adv-x="1150" d="M115 498q0 135 31.5 236.5t77.5 158.5t109.5 92t118 45t111.5 10q111 0 193 -27.5t123 -63.5t66.5 -86t30.5 -82.5t5 -63.5v-1096h-147v402q-117 -39 -252 -39q-90 0 -165 21.5t-147.5 74.5t-113.5 159.5t-41 258.5zM262 500q0 -201 76 -290t244 -89q135 0 252 51v551 q0 182 -271 182q-57 0 -102 -13t-94.5 -52t-77 -125t-27.5 -215z" />
+<glyph unicode="r" horiz-adv-x="702" d="M662 897q-168 -4 -349 -53v-844h-147v940q231 98 496 98v-141z" />
+<glyph unicode="s" horiz-adv-x="872" d="M248 743q0 -53 56 -85.5t137 -54t162 -51.5t137.5 -101.5t56.5 -182.5q0 -133 -99.5 -208.5t-275.5 -75.5q-170 0 -309 77v156q147 -90 303 -90q233 0 233 141q0 76 -56 119t-137 64.5t-162 47t-137.5 86t-56.5 158.5q0 123 89.5 210t273.5 87q131 0 262 -63v-148 q-117 70 -246 70q-231 0 -231 -156z" />
+<glyph unicode="t" horiz-adv-x="706" d="M375 887v-623q0 -78 32.5 -109.5t114.5 -31.5q63 0 117 24v-139q-68 -25 -135 -24q-41 0 -80 9t-88 35.5t-79 89t-30 154.5v615h-178v135h178v289h148v-289h264v-135h-264z" />
+<glyph unicode="u" horiz-adv-x="1202" d="M877 1022h147v-592q0 -213 -111.5 -329.5t-316.5 -116.5t-316.5 116.5t-111.5 329.5v592h147v-600q0 -156 68 -228.5t213 -72.5q143 0 212 72.5t69 228.5v600z" />
+<glyph unicode="v" horiz-adv-x="1062" d="M842 1022h157l-393 -1022h-149l-391 1022h157l309 -838z" />
+<glyph unicode="w" horiz-adv-x="1603" d="M1368 1022h156l-340 -1022h-150l-233 764l-234 -764h-149l-340 1022h155l261 -791l235 791h141l238 -791z" />
+<glyph unicode="x" horiz-adv-x="1032" d="M600 514l363 -514h-177l-274 389l-274 -389h-181l365 518l-354 504h174l268 -379l268 379h180l-356 -504z" />
+<glyph unicode="y" horiz-adv-x="1028" d="M807 1022h158l-418 -1122q-109 -295 -322 -295q-49 0 -96 18v135q41 -18 88 -18q39 0 77 28.5t62.5 68.5t45 81t28.5 70l10 28l-377 1006h158l291 -809z" />
+<glyph unicode="z" horiz-adv-x="950" d="M840 1022v-129l-561 -752h561v-141h-748v133l557 748h-543v141h734z" />
+<glyph unicode="{" horiz-adv-x="763" d="M463 72q0 -88 39 -122t121 -38v-137q-150 0 -229 78.5t-79 228.5v319q0 111 -129 150v100q129 33 129 148v319q0 150 79 229.5t229 79.5v-139q-82 -4 -121 -36.5t-39 -123.5v-329q0 -119 -119 -199q119 -80 119 -199v-329z" />
+<glyph unicode="|" horiz-adv-x="907" d="M526 -203h-147v1565h147v-1565z" />
+<glyph unicode="}" horiz-adv-x="753" d="M315 72v329q0 117 121 199q-121 82 -121 199v329q0 90 -37.5 123t-121.5 37v139q150 0 228.5 -79.5t78.5 -229.5v-319q0 -115 129 -148v-100q-129 -39 -129 -150v-319q0 -150 -79 -228.5t-228 -78.5v137q82 4 120.5 38t38.5 122z" />
+<glyph unicode="~" horiz-adv-x="1024" d="M823 639v-123q-57 -72 -122.5 -79t-127.5 26l-122 64q-61 32 -127 25t-123 -79v125q57 72 122.5 79t127.5 -26l122 -65q61 -33 127 -26t123 79z" />
+<glyph unicode="&#xa1;" horiz-adv-x="741" d="M467 1022v-162h-164v162h164zM459 -344h-148l15 1022h118z" />
+<glyph unicode="&#xa2;" horiz-adv-x="976" d="M897 1014q-125 51 -266 55v-772q143 4 266 57v-143q-125 -49 -266 -55v-156h-103v158q-412 41 -411 526q0 268 116.5 388t294.5 136v158h103v-156q131 -2 266 -55v-141zM264 684q0 -178 63.5 -270t200.5 -111v762q-137 -20 -200.5 -111.5t-63.5 -269.5z" />
+<glyph unicode="&#xa3;" horiz-adv-x="1136" d="M727 1243q-299 0 -299 -233v-299h412v-136h-412v-415q51 -6 145.5 -25.5t154.5 -30t143 -7.5t153 30v-150q-100 -39 -229 -29.5t-230.5 38t-229.5 31.5t-231 -48v150q80 39 177 45v411h-177v136h177v293q0 158 105.5 269t328.5 111q162 0 309 -79v-150q-139 88 -297 88z " />
+<glyph unicode="&#xa5;" horiz-adv-x="1232" d="M1204 1366l-444 -645h256v-123h-322v-192h322v-123h-322v-283h-147v283h-322v123h322v192h-322v123h256l-444 645h180l404 -588l403 588h180z" />
+<glyph unicode="&#xa7;" horiz-adv-x="1112" d="M1008 629q0 -76 -51.5 -130.5t-125.5 -78.5q72 -59 72 -158q0 -131 -111.5 -204.5t-310.5 -73.5q-203 0 -350 73v152q135 -84 340 -84q285 0 285 137q0 61 -48.5 102.5t-218.5 79.5q-184 43 -277 101.5t-93 181.5q0 164 186 223q-82 51 -82 144q0 119 100.5 204.5 t309.5 85.5q156 0 297 -61v-145q-131 70 -285 69q-274 0 -274 -153q0 -25 8 -40.5t68.5 -44t179.5 -55.5q84 -18 140 -38.5t116.5 -56.5t92.5 -94t32 -136zM743 514q117 35 117 115q0 61 -49 102t-217 80q-98 23 -176 49q-152 -29 -152 -133q0 -25 8.5 -40t70 -44t179.5 -55 q135 -29 219 -74z" />
+<glyph unicode="&#xa8;" horiz-adv-x="788" d="M162 1155v162h162v-162h-162zM465 1155v162h162v-162h-162z" />
+<glyph unicode="&#xa9;" horiz-adv-x="1593" d="M799 -16q-289 0 -495 204.5t-206 493.5q0 291 206 495.5t495 204.5q291 0 495.5 -204.5t204.5 -495.5q0 -289 -204.5 -493.5t-495.5 -204.5zM799 1311q-258 0 -442.5 -184.5t-184.5 -444.5q0 -258 184.5 -442.5t442.5 -184.5q260 0 443 184.5t183 442.5q0 260 -183 444.5 t-443 184.5zM535 682q0 -170 70.5 -249t221.5 -79q121 0 234 47v-82q-115 -45 -244 -45q-369 0 -368 408q0 410 368 410q129 0 244 -45v-82q-109 45 -234 45q-152 0 -222 -79t-70 -249z" />
+<glyph unicode="&#xaa;" horiz-adv-x="806" d="M381 1382q246 0 246 -235v-172q0 -72 -46 -115t-92.5 -53t-95.5 -10t-96 10t-94 54t-47 118q0 186 297 186l92 -6q0 143 -168 144q-92 0 -164 -29v80q72 28 168 28zM545 977v108q-37 6 -101 7q-207 0 -206 -111q0 -109 155 -109q152 1 152 105z" />
+<glyph unicode="&#xab;" horiz-adv-x="1132" d="M608 911l-364 -389l364 -391h-198l-347 391l347 389h198zM997 911l-364 -389l364 -391h-198l-346 391l346 389h198z" />
+<glyph unicode="&#xac;" horiz-adv-x="1273" d="M199 664h876v-340h-135v204h-741v136z" />
+<glyph unicode="&#xad;" horiz-adv-x="950" d="M786 682v-143h-624v143h624z" />
+<glyph unicode="&#xae;" horiz-adv-x="1593" d="M926 618l219 -335h-103l-206 323h-205v-323h-86v798h293q131 0 201.5 -58t70.5 -173q0 -63 -22.5 -111.5t-57.5 -72t-58 -33t-46 -15.5zM834 688q113 0 150.5 43t37.5 112.5t-38 112.5t-150 43h-203v-311h203zM799 -16q-289 0 -495 204.5t-206 493.5q0 291 206 495.5 t495 204.5q291 0 495.5 -204.5t204.5 -495.5q0 -289 -204.5 -493.5t-495.5 -204.5zM799 1311q-258 0 -442.5 -184.5t-184.5 -444.5q0 -258 184.5 -442.5t442.5 -184.5q260 0 443 184.5t183 442.5q0 260 -183 444.5t-443 184.5z" />
+<glyph unicode="&#xaf;" horiz-adv-x="825" d="M176 1180v108h479v-108h-479z" />
+<glyph unicode="&#xb0;" horiz-adv-x="792" d="M391 1370q109 0 166 -58.5t57 -168.5q0 -227 -223 -227.5t-223 227t223 227.5zM391 989q78 0 114 36t36 118q0 80 -36 116.5t-114 36.5q-80 0 -114.5 -36.5t-34.5 -116.5q0 -82 34.5 -118t114.5 -36z" />
+<glyph unicode="&#xb1;" horiz-adv-x="1198" d="M657 721h301v-123h-301v-303h-122v303h-304v123h304v301h122v-301zM231 68v122h727v-122h-727z" />
+<glyph unicode="&#xb2;" horiz-adv-x="671" d="M240 1028h331v-80h-462v70q133 98 252.5 230t119.5 239q0 125 -172 125q-106 0 -192 -62v86q90 55 198 56q125 0 185.5 -60.5t60.5 -144.5q1 -197 -321 -459z" />
+<glyph unicode="&#xb3;" horiz-adv-x="661" d="M444 1346q6 -2 14.5 -6.5t31 -20.5t40 -36.5t31.5 -54.5t14 -71q0 -90 -66.5 -153.5t-203.5 -63.5q-102 0 -196 45v82q90 -49 186 -49q203 0 203 141t-207 141h-80v76h84q164 0 164 119q0 117 -174 117q-88 0 -158 -37v80q82 37 168 37q125 0 184.5 -58.5t59.5 -138.5 q0 -49 -23.5 -86t-48.5 -49z" />
+<glyph unicode="&#xb4;" horiz-adv-x="483" d="M240 1391h151l-170 -236h-98z" />
+<glyph unicode="&#xb5;" horiz-adv-x="1247" d="M891 1022h147v-938q-193 -100 -430 -100q-152 2 -258 82v-496h-147v1452h147v-664q0 -45 9.5 -78.5t35 -70.5t83 -57.5t145.5 -20.5q135 0 268 39v852z" />
+<glyph unicode="&#xb6;" horiz-adv-x="911" d="M549 1366h203v-1366h-136v524h-67q-229 0 -350 108.5t-121 313.5q0 203 121 311.5t350 108.5z" />
+<glyph unicode="&#xb7;" horiz-adv-x="636" d="M399 639v-164h-161v164h161z" />
+<glyph unicode="&#xb8;" horiz-adv-x="518" d="M399 -10l-129 -236h-155l168 236h116z" />
+<glyph unicode="&#xb9;" horiz-adv-x="491" d="M244 1683h90v-735h-78v651l-147 -96v94z" />
+<glyph unicode="&#xba;" horiz-adv-x="854" d="M422 1384q266 0 266 -294q0 -293 -266 -293q-113 0 -189.5 64.5t-76.5 228.5q0 86 23.5 147t64.5 92t84 43t94 12zM422 872q98 0 141 51.5t43 166t-43 167t-141 52.5q-96 0 -140 -52.5t-44 -167t44 -166t140 -51.5z" />
+<glyph unicode="&#xbb;" horiz-adv-x="1132" d="M526 911h197l348 -389l-348 -391h-197l363 391zM137 911h197l348 -389l-348 -391h-197l363 391z" />
+<glyph unicode="&#xbc;" horiz-adv-x="1433" d="M1225 295h104v-74h-104v-221h-80v221h-357v84l347 428h90v-438zM877 295h268v326zM240 1380h92v-733h-80v651l-146 -98v94zM1042 1403h97l-895 -1448h-97z" />
+<glyph unicode="&#xbd;" horiz-adv-x="1460" d="M240 1380h92v-733h-80v651l-146 -98v94zM999 80h332v-80h-461v70q133 98 252 229t119 238q0 127 -172 127q-104 0 -192 -64v88q98 55 198 55q127 0 186.5 -60t59.5 -146q0 -195 -322 -457zM1042 1403h97l-895 -1448h-97z" />
+<glyph unicode="&#xbe;" horiz-adv-x="1654" d="M471 1042q6 -2 14.5 -6t31 -20.5t39.5 -35.5t31.5 -53t14.5 -71q0 -90 -65.5 -154.5t-204.5 -64.5q-98 0 -197 47v80q94 -47 189 -47q201 0 200 141q0 68 -53 104.5t-154 36.5h-79v74h84q164 0 163.5 119t-174.5 119q-84 0 -157 -39v82q82 37 168 37q125 0 184 -58.5 t59 -140.5q0 -49 -23.5 -86t-45.5 -49zM1446 295h104v-74h-104v-221h-80v221h-356v84l346 428h90v-438zM1098 295h268v326zM1264 1403h96l-895 -1448h-96z" />
+<glyph unicode="&#xbf;" horiz-adv-x="989" d="M610 1022v-162h-164v162h164zM553 -360q-47 0 -93 7t-105.5 31.5t-102.5 64.5t-74 111.5t-31 165.5q0 82 32 141.5t77 97.5l90 76q45 38 77 101.5t32 151.5v92h147v-102q0 -104 -31.5 -181.5t-76.5 -119t-90.5 -77.5t-77 -80t-31.5 -100q0 -233 270 -233q141 0 275 90 v-160q-115 -77 -287 -77z" />
+<glyph unicode="&#xc0;" horiz-adv-x="1325" d="M735 1366l543 -1366h-158l-164 426h-589l-164 -426h-160l545 1366h147zM422 567h479l-239 625zM590 1718l117 -235h-99l-170 235h152z" />
+<glyph unicode="&#xc1;" horiz-adv-x="1325" d="M43 0l545 1366h147l543 -1366h-158l-164 426h-589l-164 -426h-160zM422 567h479l-239 625zM731 1718h152l-170 -235h-99z" />
+<glyph unicode="&#xc2;" horiz-adv-x="1325" d="M735 1366l543 -1366h-158l-164 426h-589l-164 -426h-160l545 1366h147zM422 567h479l-239 625zM705 1731l163 -248h-114l-92 145l-93 -145h-114l163 248h87z" />
+<glyph unicode="&#xc3;" horiz-adv-x="1325" d="M948 1526q-53 -66 -114.5 -73t-117.5 23l-112 59q-55 30 -116.5 22.5t-114.5 -72.5v117q53 66 114.5 71.5t116.5 -23.5l112 -60q56 -30 117.5 -23.5t114.5 71.5v-112zM735 1366l543 -1366h-158l-164 426h-589l-164 -426h-160l545 1366h147zM422 567h479l-239 625z" />
+<glyph unicode="&#xc4;" horiz-adv-x="1325" d="M428 1483v164h164v-164h-164zM731 1483v164h164v-164h-164zM735 1366l543 -1366h-158l-164 426h-589l-164 -426h-160l545 1366h147zM422 567h479l-239 625z" />
+<glyph unicode="&#xc5;" horiz-adv-x="1325" d="M735 1366l543 -1366h-158l-164 426h-589l-164 -426h-160l545 1366h147zM422 567h479l-239 625zM661.5 1759q79.5 0 122.5 -43t43 -125t-43 -125t-122.5 -43t-122.5 43t-43 125t43 125t122.5 43zM662 1493q49 0 70.5 22.5t21.5 76t-21.5 77t-70.5 23.5q-51 0 -72 -23.5 t-21 -77t21 -76t72 -22.5z" />
+<glyph unicode="&#xc6;" horiz-adv-x="1939" d="M1126 1225v-471h607v-144h-607v-469h691v-141h-838v428h-506l-252 -428h-170l811 1366h955v-141h-691zM979 575v644h-45l-375 -644h420z" />
+<glyph unicode="&#xc7;" horiz-adv-x="1286" d="M774 1247q-260 0 -381 -134t-121 -425t121 -426t381 -135q209 0 400 80v-141q-172 -68 -357 -78l-125 -232h-155l163 232q-575 35 -575 698q0 700 633 700q217 0 416 -77v-142q-187 80 -400 80z" />
+<glyph unicode="&#xc8;" horiz-adv-x="1159" d="M596 1718l117 -235h-99l-170 235h152zM326 1227v-471h628v-144h-628v-473h714v-139h-862v1366h862v-139h-714z" />
+<glyph unicode="&#xc9;" horiz-adv-x="1159" d="M680 1718h151l-169 -235h-97zM326 1227v-471h628v-144h-628v-473h714v-139h-862v1366h862v-139h-714z" />
+<glyph unicode="&#xca;" horiz-adv-x="1159" d="M662 1731l165 -248h-114l-92 145l-95 -145h-114l166 248h84zM326 1227v-471h628v-144h-628v-473h714v-139h-862v1366h862v-139h-714z" />
+<glyph unicode="&#xcb;" horiz-adv-x="1159" d="M395 1483v164h162v-164h-162zM698 1483v164h162v-164h-162zM326 1227v-471h628v-144h-628v-473h714v-139h-862v1366h862v-139h-714z" />
+<glyph unicode="&#xcc;" horiz-adv-x="501" d="M178 0v1366h148v-1366h-148zM184 1718l117 -235h-98l-170 235h151z" />
+<glyph unicode="&#xcd;" horiz-adv-x="501" d="M326 0v1366h-148v-1366h148zM319 1718h152l-170 -235h-98z" />
+<glyph unicode="&#xce;" horiz-adv-x="501" d="M326 0v1366h-148v-1366h148zM295 1731l164 -248h-115l-92 145l-92 -145h-115l164 248h86z" />
+<glyph unicode="&#xcf;" horiz-adv-x="501" d="M326 0v1366h-148v-1366h148zM18 1483v164h164v-164h-164zM322 1483v164h163v-164h-163z" />
+<glyph unicode="&#xd0;" horiz-adv-x="1468" d="M696 1366q641 0 641 -682q0 -684 -641 -684h-428v621h-159v122h159v623h428zM686 139q262 0 383 131t121 414t-121 414t-383 131h-270v-486h350v-122h-350v-482h270z" />
+<glyph unicode="&#xd1;" horiz-adv-x="1490" d="M1161 1366h148v-1366h-166l-817 1151v-1151h-148v1366h168l815 -1151v1151zM1032 1526q-53 -66 -114.5 -73t-117.5 23l-113 59q-56 30 -117.5 22.5t-114.5 -72.5v117q53 66 114.5 71.5t117.5 -23.5l113 -60q56 -30 117.5 -23.5t114.5 71.5v-112z" />
+<glyph unicode="&#xd2;" d="M125 684q0 700 633 700t633 -700t-633 -700t-633 700zM272 684q0 -291 117 -426t369 -135t368.5 135t116.5 426t-116.5 426t-368.5 135t-369 -135t-117 -426zM713 1718l116 -235h-96l-170 235h150z" />
+<glyph unicode="&#xd3;" d="M758 1384q633 0 633 -700t-633 -700t-633 700t633 700zM758 123q252 0 368.5 135t116.5 426t-116.5 426t-368.5 135t-369 -135t-117 -426t117 -426t369 -135zM801 1718h151l-170 -235h-96z" />
+<glyph unicode="&#xd4;" d="M758 1384q633 0 633 -700t-633 -700t-633 700t633 700zM758 123q252 0 368.5 135t116.5 426t-116.5 426t-368.5 135t-369 -135t-117 -426t117 -426t369 -135zM801 1731l164 -248h-115l-92 145l-92 -145h-115l164 248h86z" />
+<glyph unicode="&#xd5;" d="M758 1384q635 0 635 -700t-635 -700q-633 0 -633 700t633 700zM758 123q254 0 370.5 135t116.5 426t-116.5 426t-370.5 135q-252 0 -369 -135t-117 -426t117 -426t369 -135zM1047 1526q-53 -66 -115 -73t-118 23l-113 59q-56 30 -116.5 22.5t-113.5 -72.5v117 q53 66 113.5 71.5t116.5 -23.5l113 -60q56 -30 117.5 -23.5t115.5 71.5v-112z" />
+<glyph unicode="&#xd6;" d="M524 1483v164h164v-164h-164zM827 1483v164h164v-164h-164zM758 1384q633 0 633 -700t-633 -700t-633 700t633 700zM758 123q252 0 368.5 135t116.5 426t-116.5 426t-368.5 135t-369 -135t-117 -426t117 -426t369 -135z" />
+<glyph unicode="&#xd7;" horiz-adv-x="985" d="M705 160l-209 276l-207 -276h-131l272 364l-272 365h131l207 -277l209 277h131l-273 -365l273 -364h-131z" />
+<glyph unicode="&#xd8;" d="M1415 1366l-160 -188q137 -174 138 -494q0 -702 -635 -702q-254 0 -410 118l-86 -100h-160l158 188q-135 172 -135 496q0 700 633 700q256 0 411 -118l86 100h160zM272 684q0 -252 84 -383l721 856q-115 88 -319 88q-252 0 -369 -135t-117 -426zM1245 684q0 244 -84 381 l-721 -856q115 -88 318 -88q254 0 370.5 135t116.5 428z" />
+<glyph unicode="&#xd9;" horiz-adv-x="1476" d="M672 1718l116 -235h-96l-172 235h152zM1141 1366h147v-805q0 -281 -143.5 -429t-411.5 -148t-411.5 148.5t-143.5 428.5v805h148v-813q0 -434 407.5 -434t407.5 434v813z" />
+<glyph unicode="&#xda;" horiz-adv-x="1476" d="M795 1718h151l-170 -235h-98zM1141 1366h147v-805q0 -281 -143.5 -429t-411.5 -148t-411.5 148.5t-143.5 428.5v805h148v-813q0 -434 407.5 -434t407.5 434v813z" />
+<glyph unicode="&#xdb;" horiz-adv-x="1476" d="M776 1731l164 -248h-115l-92 145l-92 -145h-115l164 248h86zM1141 1366h147v-805q0 -281 -143.5 -429t-411.5 -148t-411.5 148.5t-143.5 428.5v805h148v-813q0 -434 407.5 -434t407.5 434v813z" />
+<glyph unicode="&#xdc;" horiz-adv-x="1476" d="M500 1483v164h164v-164h-164zM803 1483v164h164v-164h-164zM1141 1366h147v-805q0 -281 -143.5 -429t-411.5 -148t-411.5 148.5t-143.5 428.5v805h148v-813q0 -434 407.5 -434t407.5 434v813z" />
+<glyph unicode="&#xdd;" horiz-adv-x="1224" d="M655 1718h150l-170 -235h-96zM1012 1366h178l-508 -739v-627h-147v627l-510 739h178l405 -596z" />
+<glyph unicode="&#xde;" horiz-adv-x="1167" d="M590 1159q227 0 349 -109.5t122 -314.5t-122 -313.5t-349 -108.5h-266v-313h-148v1366h148v-207h266zM569 455q109 0 181.5 23.5t105.5 68.5t45 88t12 100.5t-12 100.5t-45 88t-105.5 68.5t-181.5 23.5h-245v-561h245z" />
+<glyph unicode="&#xdf;" horiz-adv-x="1255" d="M889 705q10 -4 27.5 -12.5t61.5 -39t76.5 -66.5t60.5 -94.5t28 -123.5q0 -170 -150.5 -269.5t-384.5 -99.5v133q162 0 274.5 61.5t112.5 188.5q0 129 -120.5 188.5t-266.5 59.5v129q145 0 232.5 62.5t87.5 181.5q0 123 -85 183t-222 60q-141 0 -217 -87t-76 -300v-860 h-148v868q0 113 23.5 203t73 162t136.5 111.5t208 39.5q229 0 341.5 -112.5t112.5 -267.5q0 -51 -19.5 -100.5t-46 -84.5t-54 -61.5t-46.5 -40.5z" />
+<glyph unicode="&#xe0;" horiz-adv-x="1093" d="M522 1040q215 0 328 -108.5t113 -315.5v-309q0 -98 -45.5 -167.5t-117 -100.5t-134 -43t-123.5 -12q-47 0 -96.5 6t-112 27.5t-108.5 55t-78.5 96t-32.5 144.5q0 70 25.5 125.5t62.5 90t94 59t101 36t104.5 17.5t86 7t60.5 1l164 -10q0 137 -75.5 195.5t-223.5 58.5 q-166 0 -299 -49v143q151 53 307 53zM815 307v197q-68 12 -182 12q-371 0 -371 -203q0 -193 281 -192q272 0 272 186zM506 1391l117 -236h-97l-170 236h150z" />
+<glyph unicode="&#xe1;" horiz-adv-x="1093" d="M522 1040q215 0 328 -108.5t113 -315.5v-309q0 -98 -45.5 -167.5t-117 -100.5t-134 -43t-123.5 -12q-47 0 -96.5 6t-112 27.5t-108.5 55t-78.5 96t-32.5 144.5q0 70 25.5 125.5t62.5 90t94 59t101 36t104.5 17.5t86 7t60.5 1l164 -10q0 137 -75.5 195.5t-223.5 58.5 q-166 0 -299 -49v143q151 53 307 53zM815 307v197q-68 12 -182 12q-371 0 -371 -203q0 -193 281 -192q272 0 272 186zM584 1391h151l-170 -236h-98z" />
+<glyph unicode="&#xe2;" horiz-adv-x="1093" d="M522 1040q215 0 328 -108.5t113 -315.5v-309q0 -98 -45.5 -167.5t-117 -100.5t-134 -43t-123.5 -12q-47 0 -96.5 6t-112 27.5t-108.5 55t-78.5 96t-32.5 144.5q0 70 25.5 125.5t62.5 90t94 59t101 36t104.5 17.5t86 7t60.5 1l164 -10q0 137 -75.5 195.5t-223.5 58.5 q-166 0 -299 -49v143q151 53 307 53zM815 307v197q-68 12 -182 12q-371 0 -371 -203q0 -193 281 -192q272 0 272 186zM612 1401l164 -246h-114l-93 143l-92 -143h-115l164 246h86z" />
+<glyph unicode="&#xe3;" horiz-adv-x="1093" d="M522 1040q215 0 328 -108.5t113 -315.5v-309q0 -98 -45.5 -167.5t-117 -100.5t-134 -43t-123.5 -12q-47 0 -96.5 6t-112 27.5t-108.5 55t-78.5 96t-32.5 144.5q0 70 25.5 125.5t62.5 90t93 59t101 36t105.5 17.5t85 7t59.5 1l166 -10q0 137 -75.5 195.5t-223.5 58.5 q-150 0 -299 -47v141q141 53 307 53zM815 307v197q-68 12 -182 12q-371 0 -371 -201q0 -195 281 -194q272 0 272 186zM846 1198q-53 -66 -114.5 -73t-118.5 23l-112 59q-56 30 -117.5 23t-115.5 -73v117q53 66 114.5 72t118.5 -24l112 -59q56 -30 118 -24t115 72v-113z" />
+<glyph unicode="&#xe4;" horiz-adv-x="1093" d="M336 1155v162h164v-162h-164zM639 1155v162h164v-162h-164zM522 1040q215 0 328 -108.5t113 -315.5v-309q0 -98 -45.5 -167.5t-117 -100.5t-134 -43t-123.5 -12q-47 0 -96.5 6t-112 27.5t-108.5 55t-78.5 96t-32.5 144.5q0 70 25.5 125.5t62.5 90t94 59t101 36 t104.5 17.5t86 7t60.5 1l164 -10q0 137 -75.5 195.5t-223.5 58.5q-166 0 -299 -49v143q151 53 307 53zM815 307v197q-68 12 -182 12q-371 0 -371 -203q0 -193 281 -192q272 0 272 186z" />
+<glyph unicode="&#xe5;" horiz-adv-x="1093" d="M522 1040q215 0 328 -108.5t113 -315.5v-309q0 -98 -45.5 -167.5t-117 -100.5t-134 -43t-123.5 -12q-47 0 -96.5 6t-112 27.5t-108.5 55t-78.5 96t-32.5 144.5q0 70 25.5 125.5t62.5 90t94 59t101 36t104.5 17.5t86 7t60.5 1l164 -10q0 137 -75.5 195.5t-223.5 58.5 q-166 0 -299 -49v143q151 53 307 53zM815 307v197q-68 12 -182 12q-371 0 -371 -203q0 -193 281 -192q272 0 272 186zM559 1432q80 0 123 -43t43 -125t-43 -125t-123 -43t-123 43t-43 125t43 125t123 43zM559 1163q49 0 70.5 23.5t21.5 77t-21.5 76t-70.5 22.5 q-51 0 -71.5 -22.5t-20.5 -76t20.5 -77t71.5 -23.5z" />
+<glyph unicode="&#xe6;" horiz-adv-x="1824" d="M1255 1040q94 0 171 -29.5t122 -69.5t79 -104.5t48.5 -109.5t22.5 -108.5t8 -78.5v-44l-4 -72h-746q14 -154 94 -223.5t240 -69.5q219 0 350 76v-152q-154 -72 -366 -71q-248 0 -365 151q-104 -152 -370 -151q-47 0 -96.5 6t-112 27.5t-108.5 55t-78.5 96t-32.5 144.5 q0 70 25.5 125.5t62.5 90t93 59t101 36t105.5 17.5t85 7t59.5 1l166 -10q0 137 -76 195.5t-223 58.5q-166 0 -299 -49v143q152 53 305 53q268 0 377 -168q112 168 362 168zM809 307v197q-66 12 -180 12q-371 0 -371 -203q0 -193 281 -192q270 0 270 186zM956 555h598 q0 35 -8 78t-33.5 110.5t-92 112.5t-165.5 45q-150 0 -219.5 -79t-79.5 -267z" />
+<glyph unicode="&#xe7;" horiz-adv-x="966" d="M614 899q-182 0 -265 -92t-83 -295q0 -205 83 -296t265 -91q154 0 287 57v-143q-115 -41 -225 -53l-127 -230h-156l164 228q-86 4 -157.5 30.5t-138 83t-104.5 162t-38 252.5q0 156 43 265.5t116.5 163.5t150.5 76.5t169 22.5q154 0 303 -57v-141q-140 57 -287 57z" />
+<glyph unicode="&#xe8;" horiz-adv-x="1136" d="M578 1040q94 0 170.5 -29.5t121.5 -69.5t79 -104.5t48.5 -109.5t22.5 -108.5t8 -78.5v-44l-4 -72h-745q14 -154 94 -223.5t237 -69.5q223 0 351 76v-152q-150 -72 -365 -71q-90 0 -165 21.5t-147.5 74.5t-113.5 159.5t-41 258.5v10q-2 532 449 532zM279 555h598 q0 35 -8.5 78t-34 110.5t-92 112.5t-164.5 45q-152 0 -220.5 -79t-78.5 -267zM547 1391l117 -236h-99l-170 236h152z" />
+<glyph unicode="&#xe9;" horiz-adv-x="1136" d="M578 1040q94 0 170.5 -29.5t121.5 -69.5t79 -104.5t48.5 -109.5t22.5 -108.5t8 -78.5v-44l-4 -72h-745q14 -154 94 -223.5t237 -69.5q223 0 351 76v-152q-150 -72 -365 -71q-90 0 -165 21.5t-147.5 74.5t-113.5 159.5t-41 258.5v10q-2 532 449 532zM279 555h598 q0 35 -8.5 78t-34 110.5t-92 112.5t-164.5 45q-152 0 -220.5 -79t-78.5 -267zM623 1391h151l-170 -236h-98z" />
+<glyph unicode="&#xea;" horiz-adv-x="1136" d="M578 1040q94 0 170.5 -29.5t121.5 -69.5t79 -104.5t48.5 -109.5t22.5 -108.5t8 -78.5v-44l-4 -72h-745q14 -154 94 -223.5t237 -69.5q223 0 351 76v-152q-150 -72 -365 -71q-90 0 -165 21.5t-147.5 74.5t-113.5 159.5t-41 258.5v10q-2 532 449 532zM279 555h598 q0 35 -8.5 78t-34 110.5t-92 112.5t-164.5 45q-152 0 -220.5 -79t-78.5 -267zM621 1401l163 -246h-114l-92 143l-93 -143h-114l164 246h86z" />
+<glyph unicode="&#xeb;" horiz-adv-x="1136" d="M578 1040q94 0 170.5 -29.5t121.5 -69.5t79 -104.5t48.5 -109.5t22.5 -108.5t8 -78.5v-44l-4 -72h-745q14 -154 94 -223.5t237 -69.5q223 0 351 76v-152q-150 -72 -365 -71q-90 0 -165 21.5t-147.5 74.5t-113.5 159.5t-41 258.5v10q-2 532 449 532zM279 555h598 q0 35 -8.5 78t-34 110.5t-92 112.5t-164.5 45q-152 0 -220.5 -79t-78.5 -267zM344 1155v162h164v-162h-164zM647 1155v162h164v-162h-164z" />
+<glyph unicode="&#xec;" horiz-adv-x="552" d="M203 0v1022h147v-1022h-147zM209 1391l117 -236h-99l-170 236h152z" />
+<glyph unicode="&#xed;" horiz-adv-x="552" d="M350 0v1022h-147v-1022h147zM342 1391h152l-170 -236h-97z" />
+<glyph unicode="&#xee;" horiz-adv-x="552" d="M350 0v1022h-147v-1022h147zM317 1401l166 -246h-114l-93 143l-94 -143h-114l165 246h84z" />
+<glyph unicode="&#xef;" horiz-adv-x="552" d="M350 0v1022h-147v-1022h147zM43 1155v162h162v-162h-162zM346 1155v162h162v-162h-162z" />
+<glyph unicode="&#xf0;" horiz-adv-x="1193" d="M852 1223q197 -193 197 -596q0 -643 -465 -643q-123 0 -216.5 41t-145.5 109.5t-77.5 147t-25.5 162.5q0 199 125 314.5t340 115.5q186 0 307 -90q-25 244 -174 365l-230 -129l-55 98l170 94q-86 33 -192 33q-41 0 -111 -8v137q66 10 127 10q184 0 328 -86l190 107 l53 -98zM584 123q43 0 70.5 3t78.5 29.5t83 75t57.5 148.5t27.5 242q-111 117 -317 116q-154 0 -236 -75.5t-82 -215.5q0 -41 9.5 -84t38 -103t98.5 -98t172 -38z" />
+<glyph unicode="&#xf1;" horiz-adv-x="1189" d="M600 1040q193 0 299.5 -98t106.5 -276v-666h-148v666q0 43 -9 76.5t-35 71.5t-84 58.5t-146 20.5q-129 0 -269 -41v-852h-147v940q201 100 432 100zM874 1198q-53 -66 -114.5 -73t-117.5 23l-113 59q-56 30 -116.5 23t-113.5 -73v117q53 66 113.5 72t116.5 -24l113 -59 q56 -30 117.5 -24t114.5 72v-113z" />
+<glyph unicode="&#xf2;" horiz-adv-x="1155" d="M100 512q0 156 43 265.5t117 163.5t151.5 76.5t170 22.5t169 -22.5t150.5 -76.5t117 -163.5t43 -265.5t-43 -265.5t-117 -163.5t-150.5 -76.5t-169 -22.5t-170 22.5t-151.5 76.5t-117 163.5t-43 265.5zM248 512q0 -207 80 -300t254 -93t252.5 94t78.5 299t-78.5 299 t-252.5 94t-254 -93t-80 -300zM514 1391l117 -236h-99l-170 236h152z" />
+<glyph unicode="&#xf3;" horiz-adv-x="1155" d="M581.5 1040q92.5 0 169 -22.5t150.5 -76.5t117 -163.5t43 -265.5t-43 -265.5t-117 -163.5t-150.5 -76.5t-169 -22.5t-170 22.5t-151.5 76.5t-117 163.5t-43 265.5t43 265.5t117 163.5t151.5 76.5t170 22.5zM582 119q174 0 252.5 94t78.5 299t-78.5 299t-252.5 94 t-254 -93t-80 -300t80 -300t254 -93zM647 1391h152l-170 -236h-99z" />
+<glyph unicode="&#xf4;" horiz-adv-x="1155" d="M100 512q0 156 43 265.5t117 163.5t151.5 76.5t170 22.5t169 -22.5t150.5 -76.5t117 -163.5t43 -265.5t-43 -265.5t-117 -163.5t-150.5 -76.5t-169 -22.5t-170 22.5t-151.5 76.5t-117 163.5t-43 265.5zM248 512q0 -207 80 -300t254 -93t252.5 94t78.5 299t-78.5 299 t-252.5 94t-254 -93t-80 -300zM623 1401l165 -246h-114l-92 143l-95 -143h-114l166 246h84z" />
+<glyph unicode="&#xf5;" horiz-adv-x="1155" d="M100 512q0 156 43 265.5t117 163.5t150.5 76.5t169 22.5t170 -22.5t151.5 -76.5t117 -163.5t43 -265.5t-43 -265.5t-117 -163.5t-151.5 -76.5t-170 -22.5t-169 22.5t-150.5 76.5t-117 163.5t-43 265.5zM248 512q0 -207 79 -300t253 -93t253.5 93t79.5 300t-79.5 300 t-253.5 93t-253 -93t-79 -300zM877 1198q-53 -66 -115 -73t-118 23l-113 59q-56 30 -116.5 24t-113.5 -72v115q53 66 113.5 73t116.5 -23l113 -60q56 -31 117.5 -24t115.5 73v-115z" />
+<glyph unicode="&#xf6;" horiz-adv-x="1155" d="M100 512q0 156 43 265.5t117 163.5t151.5 76.5t170 22.5t169 -22.5t150.5 -76.5t117 -163.5t43 -265.5t-43 -265.5t-117 -163.5t-150.5 -76.5t-169 -22.5t-170 22.5t-151.5 76.5t-117 163.5t-43 265.5zM248 512q0 -207 80 -300t254 -93t252.5 94t78.5 299t-78.5 299 t-252.5 94t-254 -93t-80 -300zM348 1155v162h162v-162h-162zM651 1155v162h162v-162h-162z" />
+<glyph unicode="&#xf7;" horiz-adv-x="1286" d="M561 735v164h164v-164h-164zM561 152v163h164v-163h-164zM1059 465v123h-832v-123h832z" />
+<glyph unicode="&#xf8;" horiz-adv-x="1175" d="M938 1022h160l-125 -150q94 -131 94 -360q0 -156 -43 -265.5t-116.5 -163.5t-150.5 -76.5t-169 -22.5q-182 0 -297 79l-55 -63h-160l127 152q-96 133 -97 360q0 156 43.5 265.5t117 163.5t151.5 76.5t170 22.5q180 0 297 -82zM254 512q0 -158 45 -246l496 586 q-78 53 -207 53q-174 0 -254 -93t-80 -300zM920 512q0 156 -46 246l-493 -588q76 -51 207 -51q174 0 253 93t79 300z" />
+<glyph unicode="&#xf9;" horiz-adv-x="1202" d="M877 1022h147v-592q0 -213 -111.5 -329.5t-316.5 -116.5t-316.5 116.5t-111.5 329.5v592h147v-600q0 -156 68 -228.5t213 -72.5q143 0 212 72.5t69 228.5v600zM535 1391l116 -236h-98l-170 236h152z" />
+<glyph unicode="&#xfa;" horiz-adv-x="1202" d="M877 1022h147v-592q0 -213 -111.5 -329.5t-316.5 -116.5t-316.5 116.5t-111.5 329.5v592h147v-600q0 -156 68 -228.5t213 -72.5q143 0 212 72.5t69 228.5v600zM657 1391h150l-170 -236h-96z" />
+<glyph unicode="&#xfb;" horiz-adv-x="1202" d="M877 1022h147v-592q0 -213 -111.5 -329.5t-316.5 -116.5t-316.5 116.5t-111.5 329.5v592h147v-600q0 -156 68 -228.5t213 -72.5q143 0 212 72.5t69 228.5v600zM637 1401l166 -246h-115l-92 143l-92 -143h-115l164 246h84z" />
+<glyph unicode="&#xfc;" horiz-adv-x="1202" d="M877 1022h147v-592q0 -213 -111.5 -329.5t-316.5 -116.5t-316.5 116.5t-111.5 329.5v592h147v-600q0 -156 68 -228.5t213 -72.5q143 0 212 72.5t69 228.5v600zM362 1155v162h164v-162h-164zM666 1155v162h163v-162h-163z" />
+<glyph unicode="&#xfd;" horiz-adv-x="1028" d="M807 1022h158l-418 -1122q-109 -295 -320 -295q-51 0 -98 18v135q41 -18 88 -18q63 0 118.5 68.5t80.5 138.5l24 69l-377 1006h158l293 -809zM565 1391h152l-170 -236h-98z" />
+<glyph unicode="&#xfe;" horiz-adv-x="1136" d="M569 1026q70 0 131.5 -12.5t125 -47t109.5 -90t74.5 -149.5t28.5 -217q0 -152 -42 -258.5t-114.5 -159.5t-148.5 -74.5t-164 -21.5q-129 0 -252 41v-414h-147v1776h147v-414q123 41 252 41zM569 133q170 0 246 89t76 288t-76 289t-246 90q-135 0 -252 -51v-654 q117 -51 252 -51z" />
+<glyph unicode="&#xff;" horiz-adv-x="1028" d="M807 1022h158l-418 -1122q-109 -295 -320 -295q-51 0 -98 18v135q41 -18 88 -18q63 0 118.5 68.5t80.5 138.5l24 69l-377 1006h158l293 -809zM279 1155v162h161v-162h-161zM582 1155v162h161v-162h-161z" />
+<glyph unicode="&#x152;" horiz-adv-x="2029" d="M1894 1227h-716v-471h628v-144h-628v-473h716v-139h-864v27q-117 -43 -274 -43q-633 0 -633 700t633 700q160 0 274 -45v27h864v-139zM756 123q170 0 274 59v1004q-109 59 -274 59q-252 0 -369 -135t-117 -426t117 -426t369 -135z" />
+<glyph unicode="&#x153;" horiz-adv-x="1921" d="M1356 1040q94 0 170 -29.5t122 -69.5t78.5 -104.5t47 -109.5t22.5 -108.5t8 -78.5v-44l-2 -72h-745q14 -154 94 -223.5t238 -69.5q219 0 350 76v-152q-150 -72 -365 -71q-276 0 -393 190q-119 -190 -399 -190q-92 0 -169 22.5t-151 76.5t-117 163.5t-43 265.5t43 265.5 t117 163.5t150.5 76.5t169.5 22.5q279 0 397 -186q113 186 377 186zM582 119q174 0 253.5 93t79.5 300t-79.5 300t-253.5 93t-253 -93t-79 -300t79 -300t253 -93zM1055 555h600q0 33 -8.5 77t-35 111.5t-93 112.5t-162.5 45q-152 0 -221.5 -79t-79.5 -267z" />
+<glyph unicode="&#x178;" horiz-adv-x="1224" d="M375 1483v164h164v-164h-164zM678 1483v164h164v-164h-164zM1012 1366h178l-508 -739v-627h-147v627l-510 739h178l405 -596z" />
+<glyph unicode="&#x2c6;" horiz-adv-x="823" d="M457 1401l164 -246h-115l-92 143l-92 -143h-115l166 246h84z" />
+<glyph unicode="&#x2dc;" horiz-adv-x="1038" d="M791 1198q-53 -66 -115 -73t-118 23l-113 59q-56 30 -116.5 23t-113.5 -73v117q53 66 113.5 72t116.5 -24l113 -59q56 -30 117.5 -24t115.5 72v-113z" />
+<glyph unicode="&#x2000;" horiz-adv-x="878" />
+<glyph unicode="&#x2001;" horiz-adv-x="1759" />
+<glyph unicode="&#x2002;" horiz-adv-x="878" />
+<glyph unicode="&#x2003;" horiz-adv-x="1759" />
+<glyph unicode="&#x2004;" horiz-adv-x="585" />
+<glyph unicode="&#x2005;" horiz-adv-x="438" />
+<glyph unicode="&#x2006;" horiz-adv-x="292" />
+<glyph unicode="&#x2007;" horiz-adv-x="292" />
+<glyph unicode="&#x2008;" horiz-adv-x="219" />
+<glyph unicode="&#x2009;" horiz-adv-x="350" />
+<glyph unicode="&#x200a;" horiz-adv-x="96" />
+<glyph unicode="&#x2010;" horiz-adv-x="950" d="M786 682v-143h-624v143h624z" />
+<glyph unicode="&#x2011;" horiz-adv-x="950" d="M786 682v-143h-624v143h624z" />
+<glyph unicode="&#x2012;" horiz-adv-x="950" d="M786 682v-143h-624v143h624z" />
+<glyph unicode="&#x2013;" horiz-adv-x="1146" d="M1001 655v-127h-860v127h860z" />
+<glyph unicode="&#x2014;" horiz-adv-x="1824" d="M1663 664v-136h-1501v136h1501z" />
+<glyph unicode="&#x2018;" horiz-adv-x="522" d="M264 1384l152 -401h-148l-172 401h168z" />
+<glyph unicode="&#x2019;" horiz-adv-x="522" d="M248 1384h168l-172 -401h-148z" />
+<glyph unicode="&#x201a;" horiz-adv-x="614" d="M299 172h166l-170 -401h-148z" />
+<glyph unicode="&#x201c;" horiz-adv-x="800" d="M543 1384l151 -401h-147l-172 401h168zM264 1384l152 -401h-148l-172 401h168z" />
+<glyph unicode="&#x201d;" horiz-adv-x="792" d="M248 1384h168l-172 -401h-148zM526 1384h168l-172 -401h-147z" />
+<glyph unicode="&#x201e;" horiz-adv-x="892" d="M299 172h166l-170 -401h-148zM578 172h167l-172 -401h-147z" />
+<glyph unicode="&#x2022;" horiz-adv-x="849" d="M657 684q0 -98 -69.5 -168t-165.5 -70q-98 0 -168 70t-70 168t70 167t168 69q96 0 165.5 -69t69.5 -167z" />
+<glyph unicode="&#x2026;" horiz-adv-x="1576" d="M219 0v164h164v-164h-164zM1200 0v164h162v-164h-162zM711 0v164h161v-164h-161z" />
+<glyph unicode="&#x202f;" horiz-adv-x="350" />
+<glyph unicode="&#x2039;" horiz-adv-x="710" d="M608 911l-364 -389l364 -391h-198l-347 391l347 389h198z" />
+<glyph unicode="&#x203a;" horiz-adv-x="776" d="M137 911h197l348 -389l-348 -391h-197l363 391z" />
+<glyph unicode="&#x205f;" horiz-adv-x="438" />
+<glyph unicode="&#x20ac;" horiz-adv-x="1390" d="M883 1245q-207 0 -325 -84t-157 -260h658v-123h-674q-4 -61 -4 -94q0 -37 4 -94h674v-123h-658q39 -176 157 -260t325 -84q209 0 399 80v-142q-203 -78 -416 -77q-524 0 -614 483h-150v123h136q-4 61 -4.5 94t4.5 94h-136v123h150q90 483 614 483q215 0 416 -79v-142 q-194 82 -399 82z" />
+<glyph unicode="&#x2122;" horiz-adv-x="1550" d="M100 1366h557v-72h-241v-610h-74v610h-242v72zM1313 1366h80v-682h-74v561l-242 -348l-241 348v-561h-74v682h80l235 -346z" />
+<glyph unicode="&#xe000;" horiz-adv-x="1020" d="M0 1020h1020v-1020h-1020v1020z" />
+<glyph unicode="&#xfb01;" horiz-adv-x="1202" d="M1040 0v1022h-147v-1022h147zM1049 1366v-162h-164v162h164zM616 1317q-39 0 -59 -2t-54 -14.5t-52.5 -35t-33 -70.5t-14.5 -116v-55h287v-137h-287v-887h-143v887h-176v137h176v53q0 106 28.5 182t63.5 112t89.5 56.5t82 22.5t66.5 2q53 0 100 -10v-133q-41 8 -74 8z " />
+<glyph unicode="&#xfb02;" horiz-adv-x="1220" d="M1040 0v1411h-147v-1411h147zM616 1317q-39 0 -59 -2t-54 -14.5t-52.5 -35t-33 -70.5t-14.5 -116v-55h287v-137h-287v-887h-143v887h-176v137h176v53q0 106 28.5 182t63.5 112t89.5 56.5t82 22.5t66.5 2q53 0 100 -10v-133q-41 8 -74 8z" />
+<glyph unicode="&#xfb03;" horiz-adv-x="1892" d="M1700 0v1022h-147v-1022h147zM1708 1366v-162h-163v162h163zM1288 1317q-49 0 -74.5 -4t-61.5 -24.5t-53 -73t-17 -136.5v-57h280v-135h-280v-887h-148v887h-176v135h176v55q0 106 27.5 182t62.5 112t89.5 56.5t83 22.5t67.5 2q55 0 98 -12v-131q-41 8 -74 8zM612 1317 q-49 0 -74.5 -4t-61.5 -24.5t-53 -73t-17 -136.5v-57h280v-135h-280v-887h-148v887h-176v135h176v55q0 106 27.5 182t62.5 112t89.5 56.5t83 22.5t67.5 2q55 0 98 -12v-131q-41 8 -74 8z" />
+<glyph unicode="&#xfb04;" horiz-adv-x="1904" d="M1706 0h-147v1411h147v-1411zM1288 1317q-49 0 -74.5 -4t-61.5 -24.5t-53 -73t-17 -136.5v-57h280v-135h-280v-887h-148v887h-176v135h176v55q0 106 27.5 182t62.5 112t89.5 56.5t83 22.5t67.5 2q55 0 98 -12v-131q-41 8 -74 8zM612 1317q-49 0 -74.5 -4t-61.5 -24.5 t-53 -73t-17 -136.5v-57h280v-135h-280v-887h-148v887h-176v135h176v55q0 106 27.5 182t62.5 112t89.5 56.5t83 22.5t67.5 2q55 0 98 -12v-131q-41 8 -74 8z" />
+</font>
+</defs></svg> 
\ No newline at end of file
Index: modules/uoa-validator-admin/trunk/src/main/webapp/jsps/fonts/opensans.css
===================================================================
--- modules/uoa-validator-admin/trunk/src/main/webapp/jsps/fonts/opensans.css	(nonexistent)
+++ modules/uoa-validator-admin/trunk/src/main/webapp/jsps/fonts/opensans.css	(revision 47450)
@@ -0,0 +1,13 @@
+/* Copyright (C) YOOtheme GmbH, YOOtheme Proprietary Use License (http://www.yootheme.com/license) */
+
+@font-face {
+	font-family: 'OpenSansLight';
+	src: url('OpenSans-Light-webfont.eot');
+	src: url('OpenSans-Light-webfont.eot?#iefix') format('embedded-opentype'),
+		url('OpenSans-Light-webfont.woff') format('woff'),
+		url('OpenSans-Light-webfont.ttf') format('truetype'),
+		url('OpenSans-Light-webfont.svg#OpenSansLight') format('svg');
+	font-weight: normal;
+	font-style: normal;
+}
+
Index: modules/uoa-validator-admin/trunk/src/main/webapp/jsps/images/EC_logo_blue_multi_horizontal.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/trunk/src/main/webapp/jsps/images/EC_logo_blue_multi_horizontal.png
===================================================================
--- modules/uoa-validator-admin/trunk/src/main/webapp/jsps/images/EC_logo_blue_multi_horizontal.png	(nonexistent)
+++ modules/uoa-validator-admin/trunk/src/main/webapp/jsps/images/EC_logo_blue_multi_horizontal.png	(revision 47450)

Property changes on: modules/uoa-validator-admin/trunk/src/main/webapp/jsps/images/EC_logo_blue_multi_horizontal.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/trunk/src/main/webapp/jsps/images/openairepluslogo.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/trunk/src/main/webapp/jsps/images/openairepluslogo.png
===================================================================
--- modules/uoa-validator-admin/trunk/src/main/webapp/jsps/images/openairepluslogo.png	(nonexistent)
+++ modules/uoa-validator-admin/trunk/src/main/webapp/jsps/images/openairepluslogo.png	(revision 47450)

Property changes on: modules/uoa-validator-admin/trunk/src/main/webapp/jsps/images/openairepluslogo.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/trunk/src/main/webapp/jsps/images/warning.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/trunk/src/main/webapp/jsps/images/warning.png
===================================================================
--- modules/uoa-validator-admin/trunk/src/main/webapp/jsps/images/warning.png	(nonexistent)
+++ modules/uoa-validator-admin/trunk/src/main/webapp/jsps/images/warning.png	(revision 47450)

Property changes on: modules/uoa-validator-admin/trunk/src/main/webapp/jsps/images/warning.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/trunk/src/main/webapp/jsps/images/menu_dropdown_level1_parent_blue.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/trunk/src/main/webapp/jsps/images/menu_dropdown_level1_parent_blue.png
===================================================================
--- modules/uoa-validator-admin/trunk/src/main/webapp/jsps/images/menu_dropdown_level1_parent_blue.png	(nonexistent)
+++ modules/uoa-validator-admin/trunk/src/main/webapp/jsps/images/menu_dropdown_level1_parent_blue.png	(revision 47450)

Property changes on: modules/uoa-validator-admin/trunk/src/main/webapp/jsps/images/menu_dropdown_level1_parent_blue.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/trunk/src/main/webapp/jsps/images/error.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/trunk/src/main/webapp/jsps/images/error.png
===================================================================
--- modules/uoa-validator-admin/trunk/src/main/webapp/jsps/images/error.png	(nonexistent)
+++ modules/uoa-validator-admin/trunk/src/main/webapp/jsps/images/error.png	(revision 47450)

Property changes on: modules/uoa-validator-admin/trunk/src/main/webapp/jsps/images/error.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/trunk/src/main/webapp/jsps/images/error_24.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/trunk/src/main/webapp/jsps/images/error_24.png
===================================================================
--- modules/uoa-validator-admin/trunk/src/main/webapp/jsps/images/error_24.png	(nonexistent)
+++ modules/uoa-validator-admin/trunk/src/main/webapp/jsps/images/error_24.png	(revision 47450)

Property changes on: modules/uoa-validator-admin/trunk/src/main/webapp/jsps/images/error_24.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/trunk/src/main/webapp/jsps/images/box_hint.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/trunk/src/main/webapp/jsps/images/box_hint.png
===================================================================
--- modules/uoa-validator-admin/trunk/src/main/webapp/jsps/images/box_hint.png	(nonexistent)
+++ modules/uoa-validator-admin/trunk/src/main/webapp/jsps/images/box_hint.png	(revision 47450)

Property changes on: modules/uoa-validator-admin/trunk/src/main/webapp/jsps/images/box_hint.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/trunk/src/main/webapp/jsps/images/zebra_list.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/trunk/src/main/webapp/jsps/images/zebra_list.png
===================================================================
--- modules/uoa-validator-admin/trunk/src/main/webapp/jsps/images/zebra_list.png	(nonexistent)
+++ modules/uoa-validator-admin/trunk/src/main/webapp/jsps/images/zebra_list.png	(revision 47450)

Property changes on: modules/uoa-validator-admin/trunk/src/main/webapp/jsps/images/zebra_list.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/trunk/src/main/webapp/jsps/images/pluslogo_sm.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/trunk/src/main/webapp/jsps/images/pluslogo_sm.png
===================================================================
--- modules/uoa-validator-admin/trunk/src/main/webapp/jsps/images/pluslogo_sm.png	(nonexistent)
+++ modules/uoa-validator-admin/trunk/src/main/webapp/jsps/images/pluslogo_sm.png	(revision 47450)

Property changes on: modules/uoa-validator-admin/trunk/src/main/webapp/jsps/images/pluslogo_sm.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/trunk/src/main/webapp/jsps/images/exclamation-icon.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/trunk/src/main/webapp/jsps/images/exclamation-icon.png
===================================================================
--- modules/uoa-validator-admin/trunk/src/main/webapp/jsps/images/exclamation-icon.png	(nonexistent)
+++ modules/uoa-validator-admin/trunk/src/main/webapp/jsps/images/exclamation-icon.png	(revision 47450)

Property changes on: modules/uoa-validator-admin/trunk/src/main/webapp/jsps/images/exclamation-icon.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/trunk/src/main/webapp/jsps/images/box_tip.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/trunk/src/main/webapp/jsps/images/box_tip.png
===================================================================
--- modules/uoa-validator-admin/trunk/src/main/webapp/jsps/images/box_tip.png	(nonexistent)
+++ modules/uoa-validator-admin/trunk/src/main/webapp/jsps/images/box_tip.png	(revision 47450)

Property changes on: modules/uoa-validator-admin/trunk/src/main/webapp/jsps/images/box_tip.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/trunk/src/main/webapp/jsps/images/inprogress.jpg
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/trunk/src/main/webapp/jsps/images/inprogress.jpg
===================================================================
--- modules/uoa-validator-admin/trunk/src/main/webapp/jsps/images/inprogress.jpg	(nonexistent)
+++ modules/uoa-validator-admin/trunk/src/main/webapp/jsps/images/inprogress.jpg	(revision 47450)

Property changes on: modules/uoa-validator-admin/trunk/src/main/webapp/jsps/images/inprogress.jpg
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/trunk/src/main/webapp/jsps/favicon.ico
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/trunk/src/main/webapp/jsps/favicon.ico
===================================================================
--- modules/uoa-validator-admin/trunk/src/main/webapp/jsps/favicon.ico	(nonexistent)
+++ modules/uoa-validator-admin/trunk/src/main/webapp/jsps/favicon.ico	(revision 47450)

Property changes on: modules/uoa-validator-admin/trunk/src/main/webapp/jsps/favicon.ico
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/trunk/src/main/webapp/jsps/registration.jsp
===================================================================
--- modules/uoa-validator-admin/trunk/src/main/webapp/jsps/registration.jsp	(nonexistent)
+++ modules/uoa-validator-admin/trunk/src/main/webapp/jsps/registration.jsp	(revision 47450)
@@ -0,0 +1,44 @@
+<%@ page contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<%@ taglib prefix="s" uri="/struts-tags"%>
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title><s:text name="registration.title"/></title>
+<link href="jsps/favicon.ico" rel="shortcut icon" type="image/x-icon" />
+<link href="jsps/style.css" rel="stylesheet" type="text/css" media="screen" />
+</head>
+<body>
+<div id="wrapper">
+	<jsp:include page="menu.jsp"/>
+	<div id="page">
+	<div id="page-bgtop">
+		<div class="content">
+			<div class="main">
+				<h2 class="title"><s:text name="registration.title"/></h2>
+				<s:text name="registration.description"/>
+				<%--<p class="meta"><a href='<s:url value="/jsps/help.jsp#registration"/>' target="_blank"><s:text name="help"/></a></p>--%>
+				<div class="entry">
+					<%-- <s:if test="%{@gr.uoa.di.validatorweb.configs.Constants@isModeLdap()}">
+						<s:text name="registration.ldap.message"/>
+					</s:if> --%>
+					<s:form action="Register">
+						<s:if test="%{repoMode.trim().toLowerCase().equals(\"dnet\")}">
+							<s:textfield name="username" key="registration.username"/>
+							<s:textfield name="firstName" key="registration.firstName"/>
+							<s:textfield name="lastName" key="registration.lastName"/>
+						</s:if>
+						<s:textfield name="email" key="registration.email"/>
+						<s:password name="password" key="registration.password"/>
+						<s:password name="repassword" key="registration.repassword"/>
+						<s:submit value="Register" cssClass="button-default"/>
+					</s:form>
+				</div>
+			</div>
+		</div>
+		
+	</div>
+	</div>
+</div>
+</body>
+</html>
\ No newline at end of file
Index: modules/uoa-validator-admin/trunk/src/main/webapp/jsps/fonts/YanoneKaffeesatz-Light-webfont.svg
===================================================================
--- modules/uoa-validator-admin/trunk/src/main/webapp/jsps/fonts/YanoneKaffeesatz-Light-webfont.svg	(nonexistent)
+++ modules/uoa-validator-admin/trunk/src/main/webapp/jsps/fonts/YanoneKaffeesatz-Light-webfont.svg	(revision 47450)
@@ -0,0 +1,299 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" >
+<svg xmlns="http://www.w3.org/2000/svg">
+<metadata>
+This is a custom SVG webfont generated by Font Squirrel.
+Copyright   : Copyright c 2010 Yanone httpyanonedetypedesign All rights reservedThis Font Software is licensed under the SIL Open Font License Version 11This license is available with a FAQ at httpscriptssilorgOFL
+Designer    : Yanone
+Foundry     : Yanone
+Foundry URL : httpyanonedetypedesign
+</metadata>
+<defs>
+<font id="webfont6ZqOUGp9" horiz-adv-x="882" >
+<font-face units-per-em="2048" ascent="1638" descent="-410" />
+<missing-glyph horiz-adv-x="350" />
+<glyph unicode="&#xfb01;" horiz-adv-x="811" d="M23 926q0 63 4 84q2 14 28 14h123v129q0 92 23 164q20 66 55 106q29 35 82 58q45 20 90 26q39 6 96 6q209 0 209 -73q0 -33 -14 -68q-80 39 -193 39q-52 0 -86 -6q-31 -6 -71 -33q-39 -27 -58 -80q-20 -61 -20 -141v-127h172q0 -63 -4 -84q-2 -14 -25 -14h-143v-899 q0 -27 -29 -27h-84v926h-155zM584 0v969q0 39 20 47q18 8 94 8v-997q0 -20 -14 -23q-20 -4 -100 -4z" />
+<glyph unicode="&#xfb02;" horiz-adv-x="831" d="M20 926q0 63 5 84q2 14 28 14h123v129q0 117 31 194.5t82 110.5q53 35 94 43q47 10 98 10q133 0 236 -57v-1427q0 -27 -29 -27h-84v1397q-55 18 -117 18q-41 0 -65.5 -6t-59.5 -27q-37 -20 -55 -77q-18 -55 -18 -140v-141h205q0 -63 -5 -84q-2 -14 -24 -14h-176v-899 q0 -27 -27 -27h-86v926h-156z" />
+<glyph horiz-adv-x="518" />
+<glyph horiz-adv-x="518" />
+<glyph unicode=" "  horiz-adv-x="350" />
+<glyph unicode="&#x09;" horiz-adv-x="350" />
+<glyph unicode="&#xa0;" horiz-adv-x="350" />
+<glyph unicode="!" horiz-adv-x="385" d="M104 82q0 41 23 65q25 27 66 27q46 0 67 -24q23 -27 23 -68t-25 -66q-27 -27 -65 -26q-89 0 -89 92zM125 1415q0 20 29 27q28 6 116 6l-18 -1006q-3 -34 -25 -43q-18 -8 -88 -8z" />
+<glyph unicode="&#x22;" horiz-adv-x="495" d="M72 1544q0 57 6 60q27 12 110 2q2 -72 -10 -240q-12 -158 -22 -168q-63 -2 -64 -2q-3 22 -12 147q-8 113 -8 201zM307 1544q0 57 6 60q27 12 111 2q2 -72 -10 -240q-12 -158 -23 -168l-63 -2q-3 22 -13 147q-8 113 -8 201z" />
+<glyph unicode="#" d="M78 408q0 83 12 92q4 2 14 2h109l14 254h-149q0 83 12 92q4 2 14 2h127l9 147q4 20 20 23q25 4 82 4l-10 -174h231l8 147q4 20 21 23q25 4 84 4l-10 -174h143q0 -57 -4 -78q-4 -16 -25 -16h-118l-15 -254h162q0 -57 -4 -78q-4 -16 -25 -16h-137l-8 -162q-4 -20 -21 -23 q-25 -4 -84 -4l11 189h-232l-8 -162q-4 -20 -20 -23q-25 -4 -82 -4l10 189h-131zM313 502h232l14 254h-231z" />
+<glyph unicode="$" d="M135 72q0 12 12 43q14 35 25 45q76 -63 227 -64q233 0 234 221q0 66 -31 121q-29 51 -106 129l-230 215q-127 123 -127 236q0 100 72 166q70 63 201 76v198q0 31 22 41q25 10 80 10v-247q70 -2 125 -19q53 -14 73.5 -26.5t20.5 -20.5q0 -51 -33 -82q-72 47 -213 47 q-227 0 -227 -145q0 -80 107 -180l251 -234q133 -127 134 -287q0 -287 -271 -323v-193q0 -29 -22 -39q-25 -10 -78 -10v236q-82 4 -139.5 18t-83.5 35q-23 17 -23 33z" />
+<glyph unicode="%" horiz-adv-x="1456" d="M125 1073q0 377 289 377q143 0 207 -82q66 -84 65 -293q0 -379 -283 -379q-76 0 -118 15q-49 16 -86 53t-56 115q-18 75 -18 194zM233 1065q0 -164 39 -221.5t129 -57.5q178 0 179 289q0 166 -39 223q-41 59 -127 60q-181 0 -181 -293zM256 29l862 1421q66 -18 66 -51 q0 -10 -858 -1415q-70 14 -70 45zM772 360q0 377 289 377q143 0 207 -82q66 -84 65 -293q0 -379 -282 -378q-76 0 -119 14q-49 16 -86 53q-39 39 -58 115q-16 67 -16 194zM879 350q0 -162 41 -221q39 -57 129 -57q178 0 178 288q0 166 -39 224q-41 59 -127 59 q-182 0 -182 -293z" />
+<glyph unicode="&#x26;" horiz-adv-x="1048" d="M74 352q0 120 67 221q66 98 168 158q-168 279 -168 432q0 145 92 213q94 70 250 70q119 0 209 -29q86 -28 86 -61q0 -47 -26 -80q-100 70 -258 70q-109 0 -172 -41q-61 -39 -62 -156q0 -121 148 -361q139 -227 340 -462q35 115 34 249q0 154 -49 269q-49 117 -123 174 q80 12 215 12q106 0 181 -4q4 -16 4 -45q0 -27 -17 -39q-12 -10 -67 -10l-148 2q113 -131 113 -375q0 -190 -60 -328q113 -127 173 -159q-2 -25 -27 -60q-23 -31 -45 -30q-33 0 -162 143q-115 -145 -321 -145q-375 -1 -375 372zM190 346q0 -109 57.5 -184.5t194.5 -75.5 q162 0 250 125q-172 195 -330 436q-172 -98 -172 -301z" />
+<glyph unicode="'" horiz-adv-x="260" d="M72 1544q0 57 6 60q27 12 110 2q2 -72 -10 -240q-12 -158 -22 -168q-63 -2 -64 -2q-3 22 -12 147q-8 113 -8 201z" />
+<glyph unicode="(" horiz-adv-x="600" d="M141 659q0 180 35 359q35 176 82 282q45 102 102 193q53 84 89 119q37 37 45 37q43 0 61 -74q-295 -350 -299 -911q0 -344 98 -607q100 -266 201 -381q-18 -82 -63 -82q-14 0 -50 41q-31 37 -88 134q-55 96 -100 211q-47 121 -80 299q-33 175 -33 380z" />
+<glyph unicode=")" horiz-adv-x="600" d="M47 -324q45 57 90 136q51 90 96 200q53 133 82 295q31 172 31 357q-3 316 -92 546q-90 231 -207 365q18 74 62 74q12 0 45 -35q37 -39 86 -119q57 -90 102 -192q51 -117 84 -281q33 -166 33 -363q0 -201 -33 -372q-35 -180 -80 -299q-47 -123 -98 -213q-57 -102 -88 -137 q-37 -43 -49 -44q-46 0 -64 82z" />
+<glyph unicode="*" horiz-adv-x="964" d="M43 1051q-4 49 26.5 79.5t55.5 18.5l287 -158q2 -25 -8.5 -39t-28.5 -4zM154 602l243 272q27 27 58 -12l-199 -319q-25 -25 -55 -2q-33 22 -47 61zM424 1372q-2 14 8 20.5t33 8.5q45 4 78 -17l-31 -337q-3 -34 -55 -25zM508 870.5q8 12.5 35 20.5l229 -295 q18 -25 -12 -51q-29 -27 -74 -33l-178 332q-8 14 0 26.5zM563 940q-33 45 4 66l320 151q33 -23 39 -67q6 -41 -23 -52z" />
+<glyph unicode="+" d="M86 526v49q0 20 2 31q4 16 8 19q8 4 17 4h280v278q0 22 19 25q25 4 84 4v-307h307q0 -53 -4 -82q-2 -20 -25 -21h-278v-280q0 -20 -19 -23q-25 -4 -84 -4v307h-307z" />
+<glyph unicode="," horiz-adv-x="366" d="M92 -184q55 92 62 190q-41 25 -41 82q0 35 22 62q20 23 58 22q84 0 83 -96q0 -86 -53 -193q-51 -104 -84 -104q-37 0 -47 37z" />
+<glyph unicode="-" horiz-adv-x="591" d="M88 526v49q0 20 2 31q4 16 8 19q8 4 17 4h391q0 -53 -4 -82q-2 -20 -25 -21h-389z" />
+<glyph unicode="." horiz-adv-x="366" d="M100 82q0 41 23 65q25 27 63 27q90 0 90 -92q0 -37 -24 -66q-25 -27 -66 -26q-86 0 -86 92z" />
+<glyph unicode="/" horiz-adv-x="626" d="M20 -41l463 1573q10 25 27 31q12 4 98 4l-461 -1577q-10 -23 -28 -27q-25 -4 -99 -4z" />
+<glyph unicode="0" d="M74 606q0 309 90 467q88 156 289 156q195 0 276.5 -143.5t81.5 -452.5q0 -330 -86 -489.5t-287 -159.5q-199 0 -280 149q-84 151 -84 473zM195 592q0 -272 57 -387q59 -119 186 -119q139 0 197 133q59 137 59 420q0 252 -53 371q-51 117 -182 116q-141 0 -202.5 -135 t-61.5 -399z" />
+<glyph unicode="1" d="M74 84q0 23 323 22l29 1006q-39 -2 -266 -49q-16 23 -17 82q0 12 166 49t201 37q16 0 33 -8l-25 -1117h180l113 7q0 -113 -18 -113h-717q-2 12 -2 84z" />
+<glyph unicode="2" d="M74 43q0 4 1 11t1 9q0 10 6 23l8 16l16 25q8 12 17 29q61 100 158 211l174 196q74 80 133 187q57 102 57 202q0 80 -41 125q-39 43 -145 43q-206 0 -326 -80q-14 35 -14 86q0 16 43 41t129 43.5t184 18.5q170 0 232 -64q63 -68 63 -204q0 -111 -59 -226 q-57 -111 -136 -198l-182 -209q-111 -127 -170 -222h379l209 9q0 -115 -20 -115h-709q-8 14 -8 43z" />
+<glyph unicode="3" d="M100 -115q0 45 15 88q82 -70 217 -69q152 0 244 116.5t92 292.5q0 57 -19 101q-16 41 -51 67q-33 27 -76 41q-39 14 -90 21q-10 2 -100 6l-2 76q287 160 286 342q0 154 -182 153q-199 0 -317 -82q-12 27 -13 84q0 23 39 47.5t125 42.5q74 16 189 17q285 0 284 -238 q0 -199 -245 -370q131 -12 211 -84q82 -74 81 -224q0 -233 -126 -376q-125 -141 -334 -142q-106 0 -168 29q-60 28 -60 61z" />
+<glyph unicode="4" d="M78 403q0 102 155 394q160 297 299 422q20 18 54 18q27 0 61 -14l-6 -801l176 4l4 -43q0 -68 -37 -68h-143v-274q0 -29 -14 -37q-8 -4 -99 -4v315h-419q-31 31 -31 88zM180 422h348l19 661q-104 -115 -217 -307q-109 -186 -150 -354z" />
+<glyph unicode="5" d="M80 -123q0 53 14 94q76 -70 221 -69q186 0 272.5 133t86.5 348q0 311 -361 311q-39 0 -77 -6q-10 -2 -32 -4t-30 -4l-49 -12q-25 -6 -27 -6l58 567h626q0 -66 -10 -86q-8 -16 -53 -17l-465 4l-39 -354q55 14 143 15q70 2 140 -11q55 -10 137 -53q72 -37 115 -123t43 -207 q0 -602 -474 -602q-78 0 -133 14.5t-82 34.5q-24 19 -24 33z" />
+<glyph unicode="6" d="M78 608q0 224 37 387q37 160 102 258q63 94 150 140q84 43 182 43q223 0 223 -62q0 -39 -10 -80q-92 35 -213 35q-152 0 -252 -155q-98 -154 -111 -463q100 186 320 186q141 0 225 -98q84 -100 84 -299q0 -518 -389 -518q-86 0 -151.5 30.5t-102.5 79.5t-59 135 q-20 78 -27 170q-8 115 -8 211zM186 588q-3 -249 50 -375q53 -127 194 -127q131 0 203 106.5t72 280.5q0 317 -230 318q-181 0 -289 -203z" />
+<glyph unicode="7" d="M106 1229h738q-436 -717 -557 -1403q-115 0 -115 29q71 372 215 718q147 354 289 555q-111 -4 -535 -4q-35 1 -35 105z" />
+<glyph unicode="8" d="M82 371q0 132 74 239q72 106 184 162q-86 49 -131 90q-113 82 -113 238q0 170 100.5 258t252.5 88q356 0 356 -330q0 -207 -246 -354q76 -49 127 -92q133 -123 133 -299q0 -178 -92 -282.5t-264 -104.5q-190 0 -287 106q-94 103 -94 281zM188 377q0 -129 70 -207 q70 -80 199 -80q119 0 186 78q68 77 68 203q0 141 -121 245q-49 43 -141 97q-113 -41 -187 -133t-74 -203zM207 1106q0 -123 112 -201q25 -18 140 -86q240 117 239 293q0 127 -71 176q-74 51 -168 51q-109 0 -180.5 -59t-71.5 -174z" />
+<glyph unicode="9" d="M74 729q0 520 389 520q209 0 276 -139q70 -141 72 -485q-2 -424 -129 -631q-125 -205 -387 -205q-172 0 -172 49q0 51 8 76q68 -18 154 -18q385 0 415 616q-100 -186 -311 -186q-139 0 -227 102t-88 301zM184 748q0 -156 61.5 -236t174.5 -80q170 0 285 203v4 q0 131 -9 205q-10 86 -32 155q-25 76 -72 111t-127 35q-281 0 -281 -397z" />
+<glyph unicode=":" horiz-adv-x="366" d="M100 82q0 41 23 65q25 27 63 27q90 0 90 -92q0 -37 -24 -66q-25 -27 -66 -26q-86 0 -86 92zM100 791q0 41 23 65q25 27 63 27q90 0 90 -92q0 -37 -24 -66q-25 -27 -66 -27q-86 1 -86 93z" />
+<glyph unicode=";" horiz-adv-x="366" d="M86 -184q58 95 61 190q-41 25 -41 82q0 35 23 62q20 23 59 22q84 0 84 -96q0 -88 -55 -192.5t-84 -104.5q-39 0 -47 37zM102 791q0 37 25 65q25 27 61 27q90 0 91 -92q0 -37 -25 -66q-25 -27 -66 -27q-86 1 -86 93z" />
+<glyph unicode="&#x3c;" horiz-adv-x="817" d="M90 532q0 43 39 64l549 268q39 -37 39 -76q0 -27 -21 -34l-458 -226l487 -213q-4 -41 -18.5 -65.5t-34.5 -24.5q-10 0 -47 15l-514 225q-21 26 -21 67z" />
+<glyph unicode="=" d="M86 348v49q0 18 2 29q4 18 8 20q8 4 17 5h690q0 -59 -4 -84q-3 -18 -25 -19h-688zM86 705v49q0 20 2 30q4 16 8 19q8 4 17 4h690q0 -59 -4 -84q-3 -18 -25 -18h-688z" />
+<glyph unicode="&#x3e;" horiz-adv-x="817" d="M98 762q0 35 17 63q14 27 35 27q12 0 49 -14l514 -226q18 -31 18 -67q0 -45 -39 -64l-549 -270q-39 39 -39 76q0 29 21 37l459 225z" />
+<glyph unicode="?" horiz-adv-x="602" d="M51 1370q0 31 76 57q74 27 166 27q127 0 207 -67.5t80 -223.5q0 -80 -29 -159q-27 -72 -64 -127q-12 -18 -42.5 -58.5l-38.5 -50.5q-47 -63 -66 -96q-39 -59 -39 -140q0 -37 4 -57q6 -37 8 -39q4 -10 0 -20q-18 -23 -102 -13q-23 55 -23 125q0 96 48 179q20 37 90 131 q66 88 98 155q35 74 35 152q0 197 -197 196q-120 0 -196 -61q-15 31 -15 90zM178 82q0 41 23 65q25 27 63 27q90 0 90 -92q0 -37 -24 -66q-25 -27 -66 -26q-86 0 -86 92z" />
+<glyph unicode="@" horiz-adv-x="1542" d="M109 541q0 451 190 655q190 207 528 207q311 0 463 -160q150 -158 150 -518q0 -199 -27 -334q-29 -145 -63 -213q-37 -72 -86 -115q-43 -39 -84 -49q-37 -10 -68 -10q-78 0 -129 51q-78 -53 -227 -53q-123 -2 -195 61q-66 61 -63 248q2 180 86 254q83 74 221 74 q80 0 125 -16q0 23 1 66.5t3 62.5q2 90 -39 124.5t-125 34.5q-133 0 -219 -49q-12 25 -12 64q0 23 18 35q78 49 250 49q120 0 178 -56q57 -53 53 -186l-12 -440l-4 -94.5t-4 -73t-2 -31.5q40 -25 86 -25q25 0 49 13q20 10 57 53q31 37 58 102q25 61 43 174q18 114 18 259 q0 326 -113 458q-115 137 -389 137q-297 0 -450.5 -178t-153.5 -594q0 -215 27 -356q29 -152 74 -235q47 -88 120 -136q80 -51 154 -65q72 -14 188 -15q260 0 480 107q31 -52 30 -86q0 -25 -57 -51q-61 -29 -180 -53.5t-262 -24.5q-94 0 -158 6q-61 6 -143 29 q-77 22 -129 61q-53 41 -104.5 106.5t-82.5 166.5q-35 111 -51 237q-18 142 -18 322zM604 307q-4 -133 37 -174q43 -43 127 -43q55 0 100 25q43 23 47 65l13 367q-51 10 -101 10q-106 0 -163 -55q-56 -54 -60 -195z" />
+<glyph unicode="A" horiz-adv-x="890" d="M14 2l387 1421q4 18 39 19q31 0 49 -6l388 -1409q4 -16 -6.5 -22.5t-41.5 -6.5q-49 0 -67 2l-103 395h-426l-94 -372q-3 -25 -55 -25q-33 0 -70 4zM260 500h371l-99 379q-78 305 -86 401q-16 -137 -88 -401z" />
+<glyph unicode="B" horiz-adv-x="800" d="M113 0v1399q0 35 51 35h205q342 0 342 -312q0 -162 -62 -241q-59 -78 -139 -90q43 -4 76 -15q35 -12 78 -45q45 -35 67 -92q25 -61 25 -150q0 -121 -27 -206q-28 -89 -67 -142q-41 -53 -95 -86q-47 -29 -104 -43q-49 -12 -101 -12h-249zM225 102h137q117 0 191 88 q74 89 74 289q0 86 -19 139q-18 49 -59 76q-40 25 -80 31q-39 6 -107 6h-137v-629zM225 829h154q211 0 211 273q0 231 -219 231h-146v-504z" />
+<glyph unicode="C" horiz-adv-x="720" d="M80 649q0 205 24 359q25 156 62 237q37 84 92 133q53 47 107 64q45 14 112 14q94 0 141 -33q49 -35 50 -69q0 -37 -21 -70q-70 63 -153 64q-49 0 -86 -13q-39 -12 -80 -57q-43 -47 -70 -116.5t-45 -205.5q-16 -117 -16 -309q0 -156 20 -282q18 -113 55 -168.5t76 -76 t92 -20.5q70 0 125 27q59 29 88 63q20 -35 21 -71q0 -49 -76 -96q-72 -45 -178 -46q-55 0 -101 11q-41 10 -90 49q-51 41 -79 108q-27 61 -50 197q-20 123 -20 307z" />
+<glyph unicode="D" horiz-adv-x="845" d="M115 0v1399q0 35 51 35h205q203 0 301 -148q96 -143 96 -493q0 -244 -29 -394q-33 -166 -88 -245q-61 -86 -125 -119q-70 -35 -164 -35h-247zM227 109h138q41 0 84 14q35 12 75 55q39 41 64 117q27 78 41 203q16 137 16 303q0 287 -65.5 407.5t-210.5 120.5h-142v-1220z " />
+<glyph unicode="E" horiz-adv-x="688" d="M117 0v1405q0 29 26 29h490q0 -98 -10 -103q-2 -2 -11 -2h-385v-493h361q0 -76 -2 -88q-2 -16 -23 -17h-336v-627h404q0 -80 -2 -90q-2 -14 -23 -14h-489z" />
+<glyph unicode="F" horiz-adv-x="667" d="M117 0v1405q0 29 26 29h490q0 -92 -10 -99q-2 -2 -11 -2h-385v-495h361q0 -78 -2 -90q-2 -16 -23 -17h-336v-704q2 -27 -24 -27h-86z" />
+<glyph unicode="G" horiz-adv-x="815" d="M74 694q0 229 30 383q33 162 89 234q63 82 135 112q74 31 178 31q90 0 153 -29q61 -29 62 -65q0 -31 -16 -70q-71 55 -179 56q-113 0 -182.5 -51.5t-110 -199t-40.5 -395.5q0 -184 20 -323q18 -131 57 -187q41 -59 82 -79.5t109 -20.5q65 0 110 25q45 23 58 53v551h-201 v69q0 27 31 27h276v-721q-109 -115 -278 -114q-74 0 -133 16q-57 16 -107 61q-45 43 -78 127q-27 70 -47 207q-18 125 -18 303z" />
+<glyph unicode="H" d="M113 0v1405q0 23 14 25q20 4 98 4v-600h434v571q0 23 15 25q20 4 98 4v-1407q0 -20 -14 -23q-20 -4 -99 -4v727h-434v-700q0 -20 -14 -23q-20 -4 -98 -4z" />
+<glyph unicode="I" horiz-adv-x="335" d="M111 0v1376q0 45 16 51q15 6 98 7v-1407q0 -20 -14 -23q-20 -4 -100 -4z" />
+<glyph unicode="J" horiz-adv-x="616" d="M43 88q0 37 20 70q72 -74 173 -74q53 0 85.5 20.5t47.5 65.5q18 53 20 90q4 57 4 117v1001q0 43 15 49t98 7v-1090q0 -78 -4 -108q-8 -57 -21 -99q-14 -47 -43 -82q-27 -31 -76 -53q-51 -23 -114 -22q-100 0 -152 32q-53 35 -53 76z" />
+<glyph unicode="K" horiz-adv-x="802" d="M111 0v1405q0 23 14 25q20 4 98 4v-625l412 618q29 6 72 7q50 0 49 -21q0 -8 -6 -18l-412 -586q52 -33 118.5 -105.5t135.5 -174.5t115.5 -238t46.5 -268q0 -12 -6 -17q-12 -8 -37 -8q-57 0 -74 2q-83 280 -153.5 430.5t-159.5 239.5q-35 35 -101 65v-708q0 -20 -14 -23 q-20 -4 -98 -4z" />
+<glyph unicode="L" horiz-adv-x="671" d="M113 0v1393q0 31 14 37q10 4 100 4v-1328h406v-79q0 -27 -29 -27h-491z" />
+<glyph unicode="M" horiz-adv-x="1017" d="M113 0v1405q0 29 26 29h76l223 -719l72 -246l70 240l215 696q10 29 28 29h86v-1407q0 -20 -14 -23q-20 -4 -100 -4l4 592l18 577l-153 -512l-119 -348q-6 -18 -23 -18h-53l-115 366l-30 97l-66 215l-57 192q16 -377 20 -555l2 -579q0 -20 -14 -23q-20 -4 -96 -4z" />
+<glyph unicode="N" horiz-adv-x="931" d="M113 0v1405q0 29 26 29h80l246 -566q63 -172 254 -647q-10 170 -10 699v485q0 23 14 25q20 4 98 4v-1407q0 -27 -26 -27h-78l-252 575q-45 102 -250 642q8 -270 8 -689v-501q0 -18 -12 -23q-16 -4 -98 -4z" />
+<glyph unicode="O" horiz-adv-x="911" d="M78 727q0 391 94 559t299 168q200 0 283 -160q82 -158 82 -565q0 -414 -91 -579q-92 -170 -296.5 -170t-286.5 161q-84 164 -84 586zM203 692q0 -326 55 -461t195 -135q141 0 202 144q59 139 60 491q0 338 -55.5 473t-192.5 135q-135 0 -201 -149q-63 -146 -63 -498z" />
+<glyph unicode="P" horiz-adv-x="755" d="M113 0v1405q0 29 26 29h213q358 0 359 -390q0 -224 -99 -331q-98 -106 -268 -107h-121v-579q0 -18 -12 -23q-16 -4 -98 -4zM223 713h129q236 0 236 340q0 279 -226 278h-139v-618z" />
+<glyph unicode="Q" horiz-adv-x="911" d="M78 727q0 391 94 559t299 168q200 0 283 -160q82 -158 82 -565q0 -356 -68 -528q-70 -176 -219 -209q14 -90 45 -131q29 -39 80 -39q74 0 133 35q18 -25 18 -62q0 -33 -55 -51t-117 -18q-90 0 -145 59q-55 57 -86 195q-127 6 -199 75q-72 68 -108 230q-37 159 -37 442z M203 692q0 -326 55 -461t195 -135q141 0 202 144q59 139 60 491q0 338 -55.5 473t-192.5 135q-135 0 -201 -149q-63 -146 -63 -498z" />
+<glyph unicode="R" horiz-adv-x="774" d="M113 0v1405q0 29 26 29h213q358 0 359 -390q0 -326 -211 -411q172 -225 207 -602q2 -16 -9 -25q-8 -4 -47 -8q-47 0 -63 2q-43 414 -199 608q-10 -2 -45 -2h-121v-579q0 -18 -12 -23q-16 -4 -98 -4zM223 713h129q236 0 236 336q0 283 -226 282h-139v-618z" />
+<glyph unicode="S" horiz-adv-x="753" d="M68 88q0 43 32 80q76 -74 230 -74q246 0 245 250q0 80 -32 156q-31 70 -111 155l-221 232q-139 158 -139 291q0 125 92 200q90 76 252 76q131 0 192 -27q66 -29 66 -63q0 -37 -31 -68q-74 55 -219 56q-104 0 -170 -47q-63 -45 -64 -125q0 -94 113 -222l244 -251 q86 -92 115 -168q33 -86 32 -185q0 -170 -86 -272t-270 -102q-125 0 -199 34q-71 35 -71 74z" />
+<glyph unicode="T" horiz-adv-x="749" d="M14 1327v78q0 29 27 29h696v-80q0 -27 -26 -27h-283v-1300q0 -20 -14 -23q-20 -4 -99 -4v1327h-301z" />
+<glyph unicode="U" horiz-adv-x="935" d="M113 440v965q0 23 14 25q20 4 100 4v-998q0 -51 4 -112q2 -35 21 -93q15 -49 43 -79q25 -27 74 -48q45 -18 114 -18q143 0 230 43v1278q0 20 14 23q20 4 100 4v-1383q-47 -31 -141 -51t-203 -20q-92 0 -168 26q-70 25 -108 64q-37 37 -60 104q-23 70 -28 123 q-6 59 -6 143z" />
+<glyph unicode="V" horiz-adv-x="860" d="M12 1425q2 8 25 9h90l227 -897q35 -152 86 -435q45 279 80 435l207 856q6 41 33 41h92l-350 -1446q-74 -6 -88 -6q-43 0 -74 120l-326 1293q-3 12 -3 21q0 5 1 9z" />
+<glyph unicode="W" horiz-adv-x="1314" d="M12 1395q-1 7 -1 12q0 27 26 27h90l188 -899q35 -186 62 -398h8q12 160 55 398l158 784q6 39 33 39h80l180 -823q23 -117 27 -140l6 -42.5t8 -53.5t6 -47q2 -25 7 -62.5t7 -50.5h9q23 205 55 396l168 858q6 41 33 41h92l-289 -1446q-49 -6 -88 -6q-37 0 -62 104l-153 664 q-16 72 -62 389l-57 -387l-160 -764q-70 -4 -94 -4q-37 0 -61 122z" />
+<glyph unicode="X" horiz-adv-x="870" d="M20 0l345 743l-289 670q-6 16 10 19q12 2 119 2l104 -248q70 -162 137 -346q92 233 142 346l98 227q6 16 21 19q10 2 106 2l-297 -691l332 -720q3 -6 3 -11q0 -12 -20 -12h-116l-140 307l-143 338q-68 -170 -145 -336l-140 -295q-8 -14 -28 -14h-99z" />
+<glyph unicode="Y" horiz-adv-x="737" d="M12 1415q-2 4 -1 7q0 7 14 10q10 2 114 2l99 -293q43 -115 86 -262q49 -166 53 -193q14 106 139 457l90 270q2 12 21 17q20 4 102 4l-299 -848v-559q0 -18 -14 -23q-16 -4 -99 -4v582z" />
+<glyph unicode="Z" horiz-adv-x="802" d="M47 45q0 29 10 55l564 1231h-435q-55 0 -84 -4v78q0 29 29 29h610q12 -16 13 -39q0 -27 -13 -58l-569 -1235h461q78 0 108 13v-88q0 -27 -26 -27h-649q-19 16 -19 45z" />
+<glyph unicode="[" horiz-adv-x="847" d="M305 -406v2046q0 27 14 33q20 8 74 8h436q0 -66 -8 -86q-6 -16 -39 -16h-364v-1878h409q0 -74 -10 -90.5t-39 -16.5h-473z" />
+<glyph unicode="\" horiz-adv-x="618" d="M23 1532q-6 25 12 31q12 4 96 4l467 -1598q6 -23 -12 -26q-25 -4 -97 -4z" />
+<glyph unicode="]" horiz-adv-x="847" d="M20 -410q0 71 7 86q6 16 41 17h364v1884h-409q0 74 10 90t39 16h473v-2052q0 -29 -14.5 -35t-75.5 -6h-435z" />
+<glyph unicode="^" horiz-adv-x="878" d="M117 494l329 299l291 -267q20 -18 21 -37q0 -23 -17 -38q-14 -14 -41 -19l-264 215l-221 -190q-33 -23 -45 -23q-23 0 -37 17q-12 16 -16 43z" />
+<glyph unicode="_" horiz-adv-x="782" d="M33 -193q0 59 4 84q3 18 24 19h689v-49q0 -20 -2 -31q-2 -14 -10.5 -18.5t-14.5 -4.5h-690z" />
+<glyph unicode="`" horiz-adv-x="329" d="M0 1411q2 20 20 57q16 31 33 31q2 0 133 -108q117 -96 146 -131q-23 -66 -43 -66q-2 0 -139 102q-140 105 -150 115z" />
+<glyph unicode="a" horiz-adv-x="749" d="M74 285q0 104 24 174q23 68 72 102q45 33 94 45t115 12q109 0 168 -24v180q0 92 -41 127t-121 35q-184 0 -295 -51q-16 33 -16 65q0 29 16 41q35 23 125 37q98 16 197 16q125 0 186 -57q59 -55 59 -190v-123q0 -324 -10 -621q-119 -74 -278 -73q-39 0 -88 4 q-31 2 -78 22.5t-68 48.5q-27 35 -43 90q-18 60 -18 140zM190 289q0 -72 15 -115q16 -47 45 -65q31 -18 59 -25q27 -6 76 -6q104 0 152 45q10 160 10 387q-53 20 -133 20q-104 0 -164 -47t-60 -194z" />
+<glyph unicode="b" horiz-adv-x="819" d="M119 41v1409q0 37 20 47q16 8 92 8v-544q106 84 254 83q131 -2 199 -92q70 -92 70 -301q0 -178 -27 -299q-29 -131 -65 -196q-39 -70 -95 -113q-47 -37 -104 -51q-49 -12 -109 -12q-157 0 -235 61zM231 119q39 -37 138 -37q262 0 262 539q0 180 -45 249.5t-150 69.5 q-125 0 -205 -80v-741z" />
+<glyph unicode="c" horiz-adv-x="675" d="M82 489q0 141 24 246q25 106 58 162q34 58 86 92q57 37 96 45q51 10 105 10q74 0 123 -24.5t49 -56.5q0 -37 -15 -68q-70 47 -159 47q-43 0 -70 -8q-31 -9 -68 -37q-33 -25 -59 -74q-23 -41 -39 -135q-16 -92 -16 -205q0 -237 55 -319t168 -82q121 0 188 61 q14 -31 15 -65q0 -37 -68 -67.5t-166 -30.5q-74 0 -127 18q-51 18 -94 70q-45 53 -66 157q-20 100 -20 264z" />
+<glyph unicode="d" horiz-adv-x="821" d="M84 483q0 281 94 420q95 141 246 141q104 0 168 -45v451q0 39 20 47q18 8 95 8v-1464q-121 -61 -291 -61q-76 0 -131 16q-51 16 -103 65q-49 49 -73 152q-25 104 -25 270zM205 494q0 -174 31 -267q31 -94 73 -118q41 -23 117 -27q102 0 168 41l-2 780q-53 41 -135 41 q-109 0 -180.5 -108.5t-71.5 -341.5z" />
+<glyph unicode="e" horiz-adv-x="768" d="M78 457q0 145 22 262q22 111 56 172q33 57 86 96t98 47q51 10 104 10q258 0 258 -323q0 -156 -20 -246q-182 -37 -489 -37q0 -137 32 -223q31 -78 78 -102q45 -23 129 -23q150 0 246 70q14 -35 14 -80q0 -37 -84 -68q-88 -33 -194 -32q-80 0 -135 18q-57 18 -104.5 65.5 t-72 145.5t-24.5 248zM195 532q270 0 389 29q8 57 8 137q-2 127 -37 187q-33 57 -121 57q-49 0 -80 -14q-39 -18 -71 -54q-35 -37 -60 -124q-26 -91 -28 -218z" />
+<glyph unicode="f" horiz-adv-x="505" d="M31 926q0 63 4 84q2 14 26 14h125v129q0 96 21 160q20 66 53 104q25 31 80 60q45 25 88 30q40 6 92 6q176 0 176 -63q0 -25 -12 -64q-68 25 -152 25q-51 0 -83 -8q-45 -10 -74 -31q-37 -25 -56 -78q-20 -61 -20 -137v-133h213q0 -63 -4 -84q-2 -14 -25 -14h-184v-899 q0 -27 -29 -27h-84v926h-155z" />
+<glyph unicode="g" horiz-adv-x="823" d="M68 -186q0 72 49 139t119 119q-68 20 -103 45q-37 27 -33 63q0 78 129 180q-129 80 -129 314q0 184 93 276q94 94 245 94q43 0 92 -12h254q12 -31 13 -53q0 -45 -47 -45q-52 0 -111 12q113 -74 113 -254q0 -170 -80 -274q-78 -102 -252 -103q-74 0 -117 15 q-86 -71 -86 -117q0 -47 297 -84q135 -18 203 -66q72 -49 71 -159q0 -127 -102 -217t-295 -90q-323 0 -323 217zM182 -164q0 -68 45 -100q47 -35 174 -35q131 0 201 57q72 59 72 131q0 78 -53 109q-47 29 -177 41q-102 12 -114 14q-59 -41 -103 -102q-45 -64 -45 -115z M217 676q0 -131 43 -199q45 -70 168 -69q104 0 158 86q53 88 53 221q0 242 -205 241q-96 0 -158 -71q-59 -68 -59 -209z" />
+<glyph unicode="h" horiz-adv-x="808" d="M111 0v1450q0 37 20 47q16 8 92 8v-549q109 88 260 88q137 0 186.5 -67.5t49.5 -206.5v-743q0 -20 -14 -23q-20 -4 -101 -4v745q0 92 -35 144q-34 49 -129 49q-129 0 -217 -82v-829q0 -20 -14 -23q-20 -4 -98 -4z" />
+<glyph unicode="i" horiz-adv-x="348" d="M113 1370q0 94 67 94q63 0 64 -92q-4 -96 -70 -96q-63 0 -61 94zM117 0v969q0 39 20 47q18 8 96 8v-997q0 -18 -16 -23q-20 -4 -100 -4z" />
+<glyph unicode="j" horiz-adv-x="370" d="M-231 -305q0 39 18 63q90 -53 197 -53q94 0 120 55q27 53 27 187v1022q0 39 19 47q16 8 94 8v-1100q0 -156 -53.5 -239.5t-198.5 -83.5q-102 0 -164 28q-59 29 -59 66zM127 1370q0 94 68 94q63 0 63 -92q-4 -96 -70 -96q-63 0 -61 94z" />
+<glyph unicode="k" horiz-adv-x="800" d="M117 0v1450q0 37 20 47q16 8 92 8v-585q59 59 139.5 91.5t149.5 32.5q180 0 180 -180q0 -61 -24.5 -120.5t-65.5 -100.5q-40 -40 -67 -61q-33 -25 -58 -39q82 -14 156 -92q72 -76 94 -220q6 -43 6 -94t-6 -108q-4 -25 -20 -27q-10 -2 -107 -2q8 57 8 127q0 98 -18 162 q-35 117 -104 157q-50 29 -101 30q-20 0 -41 -5l-121 -45v-399q0 -18 -14 -23q-16 -4 -98 -4zM229 514q346 119 346 322q0 104 -104 104q-131 0 -242 -131v-295z" />
+<glyph unicode="l" horiz-adv-x="346" d="M117 0v1450q0 37 18 47q16 8 94 8v-1478q0 -20 -14 -23q-20 -4 -98 -4z" />
+<glyph unicode="m" horiz-adv-x="1210" d="M117 0v977q154 68 303 67q141 0 196 -73q113 74 261 73q141 0 186 -69q43 -68 43 -227v-721q0 -20 -14 -23q-20 -4 -99 -4v754q0 109 -26 147q-29 41 -109 41q-104 0 -188 -55v-860q0 -18 -11 -23h-2q-16 -4 -100 -4v801q-3 77 -31 110q-27 33 -108 33q-92 0 -189 -45 v-872q0 -18 -16 -23q-20 -4 -96 -4z" />
+<glyph unicode="n" horiz-adv-x="819" d="M113 0v973q168 72 331 71q158 0 220 -65q61 -65 61 -215v-737q0 -20 -14 -23q-20 -4 -101 -4v733q0 117 -34.5 164t-135.5 47q-125 0 -215 -47v-870q0 -20 -14 -23q-20 -4 -98 -4z" />
+<glyph unicode="o" horiz-adv-x="782" d="M63 510q0 535 343 534q164 0 241 -114q76 -113 76 -418q0 -532 -340 -532q-83 0 -135 18q-55 18 -98 72q-43 51 -66 163q-21 103 -21 277zM184 502q0 -164 27 -266q25 -96 65 -127t111 -31q215 0 215 438q0 254 -47 340q-49 88 -154 88q-106 0 -161.5 -98t-55.5 -344z " />
+<glyph unicode="p" horiz-adv-x="817" d="M117 -356v1319q131 82 295 81q168 0 254 -96q84 -92 84 -336q0 -154 -23 -278q-20 -115 -57 -184q-35 -66 -82 -107q-43 -37 -88 -51q-40 -12 -86 -12q-126 0 -185 73v-448q-33 -8 -59 -8q-53 0 -53 47zM229 176q55 -94 154 -94q244 6 244 508q0 209 -52 280 q-51 74 -169 74q-100 0 -177 -51v-717z" />
+<glyph unicode="q" horiz-adv-x="833" d="M82 453q0 301 110.5 446t303.5 145q135 0 223 -63v-1337q0 -33 -12 -41q-10 -8 -58 -9h-24q-6 0 -12.5 1.5t-8.5 1.5v491q-74 -109 -229 -108q-293 0 -293 473zM205 451q0 -369 209 -369h9q53 0 101 31q52 34 80 98v696q-47 37 -133 37q-266 1 -266 -493z" />
+<glyph unicode="r" horiz-adv-x="561" d="M113 0v954q133 90 274 90q147 0 148 -71q0 -37 -17 -68q-51 31 -115 31q-100 0 -176 -57v-852q0 -20 -14 -23q-20 -4 -100 -4z" />
+<glyph unicode="s" horiz-adv-x="751" d="M80 68q0 35 24 69q90 -53 224 -53q221 0 221 158q0 113 -115 198l-215 156q-82 57 -108.5 104.5t-26.5 110.5q0 109 88 170q92 63 246 63q80 0 151 -20q63 -18 86 -40.5t23 -41.5q0 -35 -27 -63q-102 66 -223 65q-96 0 -155.5 -35t-59.5 -98q0 -76 100 -143l222 -158 q139 -115 139 -254q0 -135 -88 -205q-90 -72 -248 -71q-113 0 -188 26q-70 25 -70 62z" />
+<glyph unicode="t" horiz-adv-x="608" d="M55 924q0 63 4 84q4 16 23 16h125v324q0 33 18.5 39t93.5 6v-369h248q0 -63 -4 -84q-4 -16 -20 -16h-224v-629q0 -59 5 -113q2 -37 26 -71q23 -31 64 -31q66 0 133 33q8 -31 8 -60q0 -37 -47 -55q-49 -18 -119 -18q-59 0 -98 22q-37 23 -55 70q-16 43 -23 96 q-6 49 -6 129v627h-152z" />
+<glyph unicode="u" horiz-adv-x="849" d="M119 346v649q0 25 14 27q10 2 100 2v-692q0 -147 39 -199q41 -53 158 -53q111 0 188 47v868q0 23 15 25q20 4 98 4v-973q-139 -72 -311 -71.5t-238 83.5q-63 82 -63 283z" />
+<glyph unicode="v" horiz-adv-x="727" d="M53 987q-3 9 -3 15q0 13 11 18q10 4 107 4l88 -356q37 -143 57 -244l43 -215l17 -82h2q47 281 108 543l80 325q3 22 19 25q20 4 98 4l-262 -1036q-45 -4 -76 -4q-23 0 -51 102z" />
+<glyph unicode="w" horiz-adv-x="1130" d="M49 995q-3 22 12 25q20 4 107 4l82 -373q57 -283 96 -510h6q16 94 88 445l72 375q4 29 39 28h74l88 -407q4 -14 21.5 -87t25.5 -116l19.5 -96.5l15.5 -77.5l10 -64h8q15 163 86 510l70 344q2 20 20 25q20 4 94 4q-227 -1036 -233 -1036q-45 -4 -70 -4q-14 0 -32 30 q-16 27 -29 82l-33 142q-70 287 -119 571q-57 -346 -110 -573l-56 -248q-78 -4 -88 -4q-29 0 -49 100z" />
+<glyph unicode="x" horiz-adv-x="892" d="M45 0l332 537l-285 467q-6 16 10 18q12 2 109 2l104 -164l140 -244l143 248l92 140q10 16 23 18q10 2 106 2l-297 -479l320 -516q7 -10 7 -17t-9 -8q-20 -4 -121 -4l-107 164q-71 114 -172 295q-20 -39 -170 -297l-92 -139q-8 -14 -28 -19q-25 -4 -105 -4z" />
+<glyph unicode="y" horiz-adv-x="755" d="M2 -334q0 39 21 66q61 -29 124 -29q127 0 187 264l-266 1022q-6 29 8 31q20 4 100 4l154 -602l59 -318q18 141 55 320l138 565q3 28 18 31q20 4 102 4l-270 -1087q-47 -182 -110 -256q-66 -76 -170 -76q-150 0 -150 61z" />
+<glyph unicode="z" horiz-adv-x="743" d="M59 57q0 25 13 45l481 824h-248q-166 0 -231 -11q-4 37 -4 56q0 53 36 53h566q12 -12 12 -37q0 -33 -14 -59l-477 -822h237q184 0 248 17q2 -8 2 -53q0 -70 -43 -70h-557q-21 18 -21 57z" />
+<glyph unicode="{" horiz-adv-x="581" d="M106 606q0 43 31 62q39 23 53 37q18 18 33 55t15 104q0 90 -14.5 219t-14.5 201q0 240 317 240q23 -35 23 -70q0 -37 -29 -41q-94 -2 -145 -45q-51 -41 -51 -133q0 -43 12 -174q12 -132 12 -221q0 -174 -121 -224q57 -20 90 -65q31 -43 31 -127q0 -90 -12 -225.5 t-12 -188.5q0 -131 47 -168q47 -39 164 -47q6 -28 6 -43q0 -59 -43 -59q-156 0 -222 63q-68 63 -67 211q0 78 14.5 205t14.5 219q0 80 -31 117q-29 35 -92 47q-9 22 -9 51z" />
+<glyph unicode="|" horiz-adv-x="722" d="M305 -410v2044q0 23 17 29q14 6 96 6v-2048q0 -23 -17 -27q-20 -4 -96 -4z" />
+<glyph unicode="}" horiz-adv-x="581" d="M37 -240q0 37 26 41q98 3 148 43q51 41 51 136q0 46 -12 178q-12 133 -12 219q0 98 30 147q29 47 90 76q-61 23 -90 64q-31 43 -30 129q0 90 12 225t12 188q0 127 -47 164q-49 39 -166 51q0 8 -1 18.5t-2 16.5t-1 8q0 59 41 60q156 0 221 -64q68 -63 68 -211 q0 -80 -14.5 -207t-14.5 -219q0 -80 31 -116q29 -35 92 -48q10 -25 10 -49q0 -41 -30 -63q-40 -22 -56 -37q-16 -16 -31 -53q-16 -43 -16 -107q0 -90 14.5 -219t14.5 -201q0 -238 -318 -237q-20 26 -20 67z" />
+<glyph unicode="~" horiz-adv-x="817" d="M25 535q33 49 96 88t151 39q71 0 148 -50q80 -51 139 -51q92 0 160 82q25 20 49 2q23 -16 29 -55q-90 -133 -248 -133q-76 0 -160 51q-80 49 -127 49q-41 0 -72 -14q-39 -18 -67 -41l-19.5 -15.5t-14.5 -10.5l-5 -3q-18 -8 -37 10q-20 21 -22 52z" />
+<glyph unicode="&#xa1;" horiz-adv-x="385" d="M111 948q0 41 24 66q27 27 66 26q86 0 86 -92q0 -41 -23 -65q-25 -27 -63 -27q-90 0 -90 92zM123 -406l18 1002q3 34 25 43q25 10 86 10l16 -1022q0 -20 -28 -26q-28 -7 -117 -7z" />
+<glyph unicode="&#xa2;" d="M186 461q0 524 291 575v217q0 31 25 43q20 10 78 11v-267q57 -4 102 -24.5t45 -38.5q0 -55 -14 -84q-70 45 -148 45q-51 0 -94 -16q-41 -16 -84 -62q-41 -45 -63 -147q-23 -106 -23 -252q0 -135 14 -207q16 -82 47 -115q33 -37 70 -45q41 -10 103 -10q96 0 178 63 q14 -27 14 -73q0 -29 -59 -60q-59 -33 -133 -34v-218q0 -31 -21 -38q-25 -10 -80 -11v271q-84 10 -133 43q-47 33 -82 141q-33 105 -33 293z" />
+<glyph unicode="&#xa3;" horiz-adv-x="782" d="M31 569v49q0 10 4 31q4 16 8 19q8 4 14 4h123q0 301 84 426q82 121 240 121q86 0 145.5 -27t59.5 -70q0 -37 -21 -71q-74 55 -168 55q-74 0 -119 -31q-47 -31 -77.5 -129t-30.5 -266v-8h301q0 -53 -4 -82q-2 -20 -25 -21h-272q0 -264 14 -456l375 -9q10 -37 10 -53 q0 -51 -112 -51h-381q-18 313 -19 569h-149z" />
+<glyph unicode="&#xa5;" d="M78 1415q-6 14 12 17q10 2 115 2l98 -293q37 -104 88 -267q47 -147 49 -167q4 53 138 436l94 270q2 12 20 17q20 4 103 4l-228 -641h201q0 -55 -8 -74q-8 -20 -39 -21h-189l-36 -108v-127h274q0 -57 -8 -74q-10 -20 -39 -20h-227v-342q0 -20 -15 -23q-20 -4 -98 -4v369 h-279q0 59 9 75q10 18 39 19h231v119l-43 116h-236q0 55 9 74q8 20 39 21h153z" />
+<glyph unicode="&#xa6;" horiz-adv-x="460" d="M174 -397v809q0 25 14.5 35t45 10t53.5 -8v-814q0 -29 -11 -32q-12 -6 -47 -6q-37 0 -55 6zM174 682v793q0 47 59 47q31 0 54 -9v-798q0 -25 -10.5 -33t-47.5 -8q-32 0 -55 8z" />
+<glyph unicode="&#xa7;" horiz-adv-x="749" d="M96 805q0 135 127 209l-20 22q-49 55 -66 92q-20 45 -20 93q0 100 82 161q80 59 219 60q86 0 149 -29q61 -27 74 -59q4 -12 4 -23q0 -39 -24 -69q-80 61 -197 61q-86 0 -133 -33q-49 -33 -49 -88q0 -51 69 -131q18 -20 121 -110q98 -86 135 -130q88 -94 88 -204 q0 -51 -32 -113q-31 -57 -95 -94l21 -23q53 -59 67 -92q18 -40 19 -92q0 -98 -82 -159.5t-217 -61.5q-88 0 -152 28q-61 29 -73 60q-4 8 -5 22q0 39 25 70q77 -61 197 -61q88 0 135 32.5t47 87.5q0 61 -70 131q-37 37 -118.5 109t-137.5 131q-88 101 -88 203zM203 799 q0 -74 69 -156q20 -27 174 -151q39 16 74 63q31 43 31 78q0 74 -72 158q-37 41 -174 149q-45 -14 -73.5 -59t-28.5 -82z" />
+<glyph unicode="&#xa8;" horiz-adv-x="448" d="M0 1329q0 37 20 60q20 25 60 24q40 0 61 -24q20 -23 21 -60q0 -35 -23 -61q-20 -23 -59 -23q-80 0 -80 84zM289 1329q0 33 22 60q20 25 58 24q40 0 61 -24q20 -23 21 -60q0 -35 -23 -61q-20 -23 -59 -23q-80 0 -80 84z" />
+<glyph unicode="&#xa9;" horiz-adv-x="948" d="M78 1106q0 451 409 450q197 0 293 -102q94 -100 94 -346q0 -219 -104 -336t-295 -117q-203 0 -301 99q-96 96 -96 352zM168 1100q0 -197 73.5 -277t225.5 -80q145 0 231 92.5t86 276.5q0 195 -73 279q-74 82 -222 82q-321 0 -321 -373zM311 1081q0 184 54 240 q55 59 139 59q31 0 61.5 -12t30.5 -22q0 -31 -14 -54q-35 20 -68 21q-59 0 -92 -45q-35 -47 -35 -189q0 -113 24.5 -143.5t82.5 -30.5q41 0 88 27q14 -27 14 -49q0 -14 -37 -29q-39 -16 -74 -16q-96 0 -135 44.5t-39 198.5z" />
+<glyph unicode="&#xaa;" horiz-adv-x="684" d="M100 838q0 143 64 194q66 53 178 53q76 0 143 -22v160q0 129 -147 129q-109 0 -207 -49q-15 15 -18 43q-4 29 10 43q76 66 248 65q213 0 213 -197v-608q-113 -57 -252 -57q-113 0 -172.5 47t-59.5 199zM195 831q0 -92 41 -122q40 -31 116 -31q86 0 133 31v268 q-49 20 -114 20q-90 0 -133 -31t-43 -135z" />
+<glyph unicode="&#xab;" horiz-adv-x="851" d="M57 522q0 25 76 150q63 104 154 237l75 115q18 0 35 -14q23 -18 27 -29l6 -14q0 -23 -65 -136q-59 -100 -134 -208l-65 -101q272 -403 272 -452q-27 -70 -65 -70q-316 463 -316 522zM391 512q0 20 76 141q41 66 149 224l76 104q12 0 35 -14q18 -12 27 -27l6 -14 q0 -27 -64 -129q-39 -61 -131 -195l-65 -90q266 -352 266 -399q-25 -68 -64 -68q-311 416 -311 467z" />
+<glyph unicode="&#xac;" horiz-adv-x="817" d="M68 553q0 25 12 39q12 16 29 16h622v-381q-18 -8 -55 -8q-53 0 -53 39v242h-545q-10 26 -10 53z" />
+<glyph unicode="&#xad;" horiz-adv-x="591" d="M88 526v49q0 20 2 31q4 16 8 19q8 4 17 4h391q0 -53 -4 -82q-2 -20 -25 -21h-389z" />
+<glyph unicode="&#xae;" horiz-adv-x="948" d="M78 1106q0 451 409 450q197 0 293 -102q94 -100 94 -346q0 -219 -104 -336t-295 -117q-203 0 -301 99q-96 96 -96 352zM168 1100q0 -197 73.5 -277t225.5 -80q145 0 231 92.5t86 276.5q0 195 -73 279q-74 82 -222 82q-321 0 -321 -373zM352 844v530q0 10 13 10h100 q170 0 170 -147q0 -111 -84 -152q80 -82 96 -225q0 -14 -22 -18l-3 1q-3 1 -7.5 1h-10.5h-24q-23 166 -97 225h-67v-209q0 -10 -10 -14q-6 -2 -41 -2h-13zM416 1128h47q104 0 104 109q0 90 -102 90h-49v-199z" />
+<glyph unicode="&#xaf;" horiz-adv-x="522" d="M0 1313q4 55 47 55h467q10 -25 10 -51q-2 -57 -45 -57h-473q-6 22 -6 53z" />
+<glyph unicode="&#xb0;" horiz-adv-x="757" d="M199 1335q0 186 192 187q88 0 133 -41q43 -39 43 -144q0 -92 -49 -139q-51 -47 -141 -47q-92 0 -133 39q-45 41 -45 145zM283 1331q0 -100 96 -100q106 0 106 106q0 104 -94 105q-108 0 -108 -111z" />
+<glyph unicode="&#xb1;" horiz-adv-x="884" d="M86 27v49q0 20 2 30q4 16 8 19q8 4 17 4h690q0 -57 -4 -82q-4 -20 -25 -20h-688zM88 573v50q0 20 2 30q4 16 8 19q8 4 17 4h280v278q0 22 19 25q25 4 84 4v-307h307q0 -59 -4 -84q-3 -18 -25 -19h-278v-280q0 -18 -19 -23q-25 -4 -84 -4v307h-307z" />
+<glyph unicode="&#xb2;" horiz-adv-x="819" d="M106 633q0 43 19 65q53 59 180 170q131 115 184 183q59 76 60 153q0 59 -35 99q-34 37 -123 36q-115 0 -235 -90q-25 33 -25 70q0 43 96 90q92 45 205 45q137 0 192.5 -59.5t55.5 -161.5q0 -74 -45 -150q-46 -77 -98 -129l-140 -133q-104 -98 -127 -123h439q8 -33 8 -49 q0 -57 -39 -57h-563q-9 14 -9 41z" />
+<glyph unicode="&#xb3;" horiz-adv-x="845" d="M125 672q0 39 31 63q78 -59 215 -59q111 0 174 45t63 125q0 55 -39 92q-41 39 -100 47q-41 8 -168 8q-12 14 -12 51q0 41 37 41q61 0 135 -8q106 70 106 162q0 43 -37 78q-39 35 -127 35q-138 0 -239 -80q-25 25 -25 55q0 33 17 41q90 86 284 86q131 0 189 -51 q59 -53 59 -133q0 -125 -115 -215q70 -25 109 -76q41 -53 41 -123q0 -139 -96 -213q-92 -72 -258 -72q-164 0 -228 58q-16 16 -16 43z" />
+<glyph unicode="&#xb4;" horiz-adv-x="329" d="M0 1249q74 74 119 113q94 82 110 94q45 35 50 35q18 0 34 -33q14 -31 19 -57q-14 -18 -111 -90q-102 -78 -176 -127q-10 0 -22 16q-6 8 -17 33z" />
+<glyph unicode="&#xb5;" horiz-adv-x="856" d="M119 -391v1376q0 49 55 49q37 0 55 -8v-760q0 -180 195 -180q106 0 201 41v856q0 27 12 39t43 12q37 0 55 -8v-979q-158 -68 -311 -67q-137 0 -195 73v-407q0 -45 -61 -45q-26 0 -49 8z" />
+<glyph unicode="&#x3bc;" horiz-adv-x="856" d="M119 -391v1376q0 49 55 49q37 0 55 -8v-760q0 -180 195 -180q106 0 201 41v856q0 27 12 39t43 12q37 0 55 -8v-979q-158 -68 -311 -67q-137 0 -195 73v-407q0 -45 -61 -45q-26 0 -49 8z" />
+<glyph unicode="&#xb6;" horiz-adv-x="1116" d="M88 864q0 293 107 439q109 150 299 149q135 0 237 -53v-1364q0 -41 -57 -41q-35 0 -53 8v422q-70 -35 -187 -35q-152 0 -250 109q-96 104 -96 366zM203 874q0 -387 258 -391q90 -4 157 37v805q-41 29 -139 29q-135 0 -205 -123q-71 -126 -71 -357zM885 2v1364q0 47 59 47 q18 0 53 -10v-1368q0 -22 -12 -31q-10 -8 -45 -8q-37 0 -55 6z" />
+<glyph unicode="&#xb7;" horiz-adv-x="423" d="M121 551q0 39 24.5 65.5t61.5 26.5q90 0 90 -92q0 -39 -24.5 -65.5t-65.5 -26.5q-86 0 -86 92z" />
+<glyph unicode="&#xb8;" horiz-adv-x="256" d="M0 -375q10 53 20 68q9 3 19 0q2 0 12 -5t19 -7q20 -6 41 -7q70 0 69 74q0 72 -67 72l-80 -13l39 199h73l-26 -129q4 4 37 4q41 0 71 -31q29 -29 29 -88q0 -78 -43 -118q-41 -39 -104 -39q-62 0 -109 20z" />
+<glyph unicode="&#xb9;" horiz-adv-x="833" d="M125 639q0 59 39 59h231v631l-250 -51q-14 20 -14 53q0 41 39 53q229 70 301 70q25 0 39 -6v-750h195q6 -27 6 -51q0 -55 -37 -55h-543q-6 27 -6 47z" />
+<glyph unicode="&#xba;" horiz-adv-x="710" d="M86 1020q0 217 76 328q74 106 207 106q135 0 196.5 -92t61.5 -340q0 -428 -279 -428q-133 0 -198 90q-64 88 -64 336zM184 1012q0 -186 39 -252q41 -70 125 -70q182 0 182 334q0 186 -38 256q-41 72 -121 72q-187 0 -187 -340z" />
+<glyph unicode="&#xbb;" horiz-adv-x="847" d="M88 111q0 49 266 401l-63 90q-82 117 -131 195q-66 100 -66 129q0 39 64 57q305 -420 305 -471q0 -25 -78 -143q-70 -106 -158 -222l-77 -104q-4 2 -17 6q-10 4 -27 21q-18 18 -18 41zM412 68q0 18 69 135l135 217l68 102q-264 391 -264 445q0 16 18 32q16 14 33 21l16 4 q305 -449 306 -502q0 -31 -78 -155q-92 -150 -160 -248l-78 -119l-18 6q-12 4 -29 21q-18 18 -18 41z" />
+<glyph unicode="&#xbc;" horiz-adv-x="1794" d="M125 639q0 59 39 59h231v631l-250 -51q-14 20 -14 53q0 41 39 53q229 70 301 70q25 0 39 -6v-750h195q6 -27 6 -51q0 -55 -37 -55h-543q-6 27 -6 47zM485 29l818 1401q8 27 36 26q41 0 76 -43l-819 -1411q-10 -18 -33 -18q-51 0 -78 45zM1012 205q0 27 14 63 q41 127 148 293q111 172 204 262q37 39 92 39q10 0 48 -6v-596h143q10 -27 10 -55q0 -53 -35 -53h-118v-123q0 -39 -62 -39q-20 0 -45 6v156h-383q-16 20 -16 53zM1122 254h291l4 467q-82 -76 -168 -209q-90 -141 -127 -258z" />
+<glyph unicode="&#xbd;" horiz-adv-x="1863" d="M125 639q0 59 39 59h231v631l-250 -51q-14 20 -14 53q0 41 39 53q229 70 301 70q25 0 39 -6v-750h195q6 -27 6 -51q0 -55 -37 -55h-543q-6 27 -6 47zM485 29l818 1401q8 27 36 26q41 0 76 -43l-819 -1411q-10 -18 -33 -18q-51 0 -78 45zM1133 41q0 45 18 65 q53 59 180 170q125 109 184.5 185t59.5 151q0 59 -35 99q-34 37 -123 37q-115 0 -235 -91q-25 35 -25 70q0 41 96 88q98 47 205 47q137 0 193 -59q55 -57 55 -162q0 -74 -45 -149q-46 -77 -98 -130q-53 -53 -140 -131q-96 -88 -127 -125h439q8 -33 8 -49q0 -57 -39 -57h-563 q-8 14 -8 41z" />
+<glyph unicode="&#xbe;" horiz-adv-x="1787" d="M125 672q0 39 31 63q78 -59 215 -59q111 0 174 45t63 125q0 55 -39 92q-41 39 -100 47q-41 8 -168 8q-12 14 -12 51q0 41 37 41q61 0 135 -8q106 70 106 162q0 43 -37 78q-39 35 -127 35q-138 0 -239 -80q-25 25 -25 55q0 33 17 41q90 86 284 86q131 0 189 -51 q59 -53 59 -133q0 -125 -115 -215q70 -25 109 -76q41 -53 41 -123q0 -139 -96 -213q-92 -72 -258 -72q-164 0 -228 58q-16 16 -16 43zM498 29l817 1401q8 27 37 26q41 0 75 -43l-819 -1411q-10 -18 -33 -18q-50 0 -77 45zM1006 205q0 27 14 63q41 127 147 293 q111 172 205 262q37 39 92 39q10 0 47 -6v-596h144q10 -27 10 -55q0 -53 -35 -53h-119v-123q0 -39 -61 -39q-20 0 -45 6v156h-383q-16 20 -16 53zM1116 254h291l4 467q-82 -76 -168 -209q-90 -141 -127 -258z" />
+<glyph unicode="&#xbf;" horiz-adv-x="616" d="M29 -109q0 78 28 160q25 70 64 127l82 111q51 70 65 94q37 63 37 139q0 14 -4 56q-4 33 -6 40q-4 10 0 21q18 29 102 12q23 -55 23 -125q0 -94 -47 -178q-41 -66 -90 -131q-61 -80 -101 -154q-35 -68 -35 -151q0 -199 199 -199q117 0 197 62q14 -37 14 -88q0 -29 -78 -58 q-80 -29 -164 -28q-125 0 -206 69q-80 67 -80 221zM254 946q0 37 25 66q25 27 65 26q86 0 86 -92q0 -37 -24 -65q-25 -27 -62 -27q-90 0 -90 92z" />
+<glyph unicode="&#xc0;" horiz-adv-x="890" d="M14 2l387 1421q4 18 39 19q31 0 49 -6l388 -1409q4 -16 -6.5 -22.5t-41.5 -6.5q-49 0 -67 2l-103 395h-426l-94 -372q-3 -25 -55 -25q-33 0 -70 4zM209 1821q2 20 20 57q16 31 33 31q2 0 133 -109q117 -96 146 -131q-23 -66 -43 -65q-2 0 -140 102q-139 105 -149 115z M260 500h371l-99 379q-78 305 -86 401q-16 -137 -88 -401z" />
+<glyph unicode="&#xc1;" horiz-adv-x="890" d="M14 2l387 1421q4 18 39 19q31 0 49 -6l388 -1409q4 -16 -6.5 -22.5t-41.5 -6.5q-49 0 -67 2l-103 395h-426l-94 -372q-3 -25 -55 -25q-33 0 -70 4zM260 500h371l-99 379q-78 305 -86 401q-16 -137 -88 -401zM362 1659q74 74 119 113l113 94q45 35 47 35q18 0 33 -31 q18 -35 20 -60q-18 -23 -110 -92l-176 -125q-8 0 -21 17q-10 12 -18 32z" />
+<glyph unicode="&#xc2;" horiz-adv-x="890" d="M14 2l387 1421q4 18 39 19q31 0 49 -6l388 -1409q4 -16 -6.5 -22.5t-41.5 -6.5q-49 0 -67 2l-103 395h-426l-94 -372q-3 -25 -55 -25q-33 0 -70 4zM195 1636l227 234q16 4 27 4q27 0 40 -19q199 -199 199 -219q0 -12 -26.5 -26.5t-57.5 -14.5q-141 147 -158 177 q-150 -174 -174 -175q-50 0 -77 39zM260 500h371l-99 379q-78 305 -86 401q-16 -137 -88 -401z" />
+<glyph unicode="&#xc3;" horiz-adv-x="890" d="M14 2l387 1421q4 18 39 19q31 0 49 -6l388 -1409q4 -16 -6.5 -22.5t-41.5 -6.5q-49 0 -67 2l-103 395h-426l-94 -372q-3 -25 -55 -25q-33 0 -70 4zM152 1688q84 139 208 139q45 0 95 -53q49 -51 92 -52q47 0 76 23q27 20 45 47q16 23 22 23q10 0 23 -17q10 -12 16 -33 l6 -16q-12 -27 -33 -53q-16 -20 -69 -54q-47 -29 -101 -28q-70 0 -114 53q-45 55 -78 55q-34 0 -61 -24q-29 -27 -43 -45q-16 -23 -25 -23q-32 1 -59 58zM260 500h371l-99 379q-78 305 -86 401q-16 -137 -88 -401z" />
+<glyph unicode="&#xc4;" horiz-adv-x="890" d="M14 2l387 1421q4 18 39 19q31 0 49 -6l388 -1409q4 -16 -6.5 -22.5t-41.5 -6.5q-49 0 -67 2l-103 395h-426l-94 -372q-3 -25 -55 -25q-33 0 -70 4zM223 1739q0 37 21 59q23 25 59 25q39 0 59 -23q23 -27 23 -61q0 -33 -23 -60q-23 -25 -59 -24q-80 0 -80 84zM260 500h371 l-99 379q-78 305 -86 401q-16 -137 -88 -401zM512 1739q0 37 20 59q20 25 60 25q41 0 61.5 -22.5t20.5 -61.5q0 -33 -23 -60q-20 -25 -59 -24q-80 0 -80 84z" />
+<glyph unicode="&#xc5;" horiz-adv-x="890" d="M14 2l387 1421q4 18 39 19q31 0 49 -6l388 -1409q4 -16 -6.5 -22.5t-41.5 -6.5q-49 0 -67 2l-103 395h-426l-94 -372q-3 -25 -55 -25q-33 0 -70 4zM260 500h371l-99 379q-78 305 -86 401q-16 -137 -88 -401zM260 1769q0 186 193 187q90 0 135 -41q41 -39 41 -143 q0 -186 -191 -187q-90 0 -133 41q-45 43 -45 143zM348 1765q0 -98 92 -98q102 0 103 105q0 100 -90 100q-53 0 -78 -25q-27 -27 -27 -82z" />
+<glyph unicode="&#xc6;" horiz-adv-x="1312" d="M37 2l672 1409q6 23 36 23h515q0 -78 -3 -88q-4 -16 -20 -17h-383v-493h358q0 -63 -4 -88q-2 -16 -18 -17h-336v-627h403q0 -70 -4 -90q-2 -14 -20 -14h-492v395h-401l-178 -372q-9 -25 -56 -25q-32 0 -69 4zM389 500h352v800q-78 -215 -174 -430z" />
+<glyph unicode="&#xc7;" horiz-adv-x="720" d="M80 649q0 205 24 359q25 156 62 237q37 84 92 133q53 47 107 64q45 14 112 14q94 0 141 -33q49 -35 50 -69q0 -37 -21 -70q-70 63 -153 64q-49 0 -86 -13q-39 -12 -80 -57q-43 -47 -70 -116.5t-45 -205.5q-16 -117 -16 -309q0 -156 20 -282q18 -113 55 -168.5t76 -76 t92 -20.5q70 0 125 27q59 29 88 63q20 -35 21 -71q0 -47 -66 -90q-65 -43 -159 -49l-21 -103q4 4 37 4q39 0 69.5 -30.5t30.5 -88.5q0 -78 -43 -118q-41 -39 -104 -39q-61 0 -109 20q10 53 21 68q9 3 18 0q2 0 12.5 -5t18.5 -7q23 -6 41 -7q70 0 69 74q0 72 -67 72l-80 -13 l33 173q-43 2 -90 20q-39 14 -78 57t-68 115q-27 70 -43 193q-16 126 -16 284z" />
+<glyph unicode="&#xc8;" horiz-adv-x="688" d="M117 0v1405q0 29 26 29h490q0 -98 -10 -103q-2 -2 -11 -2h-385v-493h361q0 -76 -2 -88q-2 -16 -23 -17h-336v-627h404q0 -80 -2 -90q-2 -14 -23 -14h-489zM162 1821q2 20 20 57q14 31 33 31q2 0 133 -109q115 -96 146 -131q-23 -66 -43 -65q-2 0 -140 102 q-139 105 -149 115z" />
+<glyph unicode="&#xc9;" horiz-adv-x="688" d="M117 0v1405q0 29 26 29h490q0 -98 -10 -103q-2 -2 -11 -2h-385v-493h361q0 -76 -2 -88q-2 -16 -23 -17h-336v-627h404q0 -80 -2 -90q-2 -14 -23 -14h-489zM313 1659q74 74 119 113l113 94q45 35 47 35q18 0 33 -31q18 -35 20 -60q-18 -23 -110 -92q-74 -55 -177 -125 q-8 0 -20 17q-10 12 -19 32z" />
+<glyph unicode="&#xca;" horiz-adv-x="688" d="M117 0v1405q0 29 26 29h490q0 -98 -10 -103q-2 -2 -11 -2h-385v-493h361q0 -76 -2 -88q-2 -16 -23 -17h-336v-627h404q0 -80 -2 -90q-2 -14 -23 -14h-489zM145 1636l228 234q16 4 26 4q27 0 41 -19q199 -199 199 -219q0 -12 -26.5 -26.5t-57.5 -14.5q-141 147 -158 177 q-150 -174 -174 -175q-51 0 -78 39z" />
+<glyph unicode="&#xcb;" horiz-adv-x="688" d="M117 0v1405q0 29 26 29h490q0 -98 -10 -103q-2 -2 -11 -2h-385v-493h361q0 -76 -2 -88q-2 -16 -23 -17h-336v-627h404q0 -80 -2 -90q-2 -14 -23 -14h-489zM174 1739q0 37 21 59q23 25 59 25q41 0 61.5 -22.5t20.5 -61.5q0 -33 -23 -60q-23 -25 -59 -24q-80 0 -80 84z M463 1739q0 33 22 59q23 25 58 25q41 0 61.5 -22.5t20.5 -61.5q0 -33 -23 -60q-20 -25 -59 -24q-80 0 -80 84z" />
+<glyph unicode="&#xcc;" horiz-adv-x="335" d="M-68 1821q2 27 18.5 57.5t35.5 30.5q4 0 135 -109q123 -102 143 -131q-23 -66 -43 -65q-2 0 -139 102q-140 105 -150 115zM111 0v1376q0 45 16 51q15 6 98 7v-1407q0 -20 -14 -23q-20 -4 -100 -4z" />
+<glyph unicode="&#xcd;" horiz-adv-x="335" d="M84 1659q74 74 119 113q94 82 110 94q45 35 49 35q18 0 33 -31q18 -35 21 -60q-18 -23 -111 -92l-176 -125q-10 0 -23 17q-6 8 -16 32zM111 0v1376q0 45 16 51q15 6 98 7v-1407q0 -20 -14 -23q-20 -4 -100 -4z" />
+<glyph unicode="&#xce;" horiz-adv-x="335" d="M-82 1636l227 234q16 4 27 4q25 0 41 -19q199 -199 199 -219q0 -12 -27 -26.5t-57 -14.5q-141 147 -158 177q-150 -174 -174 -175q-51 0 -78 39zM111 0v1376q0 45 16 51q15 6 98 7v-1407q0 -20 -14 -23q-20 -4 -100 -4z" />
+<glyph unicode="&#xcf;" horiz-adv-x="335" d="M-53 1739q0 33 22 59q23 25 58 25q41 0 61.5 -22.5t20.5 -61.5q0 -33 -23 -60q-20 -25 -59 -24q-80 0 -80 84zM111 0v1376q0 45 16 51q15 6 98 7v-1407q0 -20 -14 -23q-20 -4 -100 -4zM236 1739q0 33 22 59q20 25 57 25q39 0 60 -23q23 -27 22 -61q0 -33 -22 -60 q-23 -25 -60 -24q-79 0 -79 84z" />
+<glyph unicode="&#xd0;" horiz-adv-x="845" d="M25 705v49q0 8 4 28q4 16 8 19q8 4 14 4h64v594q0 35 51 35h205q203 0 301 -146q96 -141 96 -487q0 -248 -29 -400q-31 -160 -88 -245q-59 -88 -125 -121q-70 -35 -164 -35h-247v705h-90zM227 109h138q41 0 84 14q35 12 75 55q39 41 64 117q27 78 41 203q16 137 16 303 q0 287 -65.5 407.5t-210.5 120.5h-142v-524h213q0 -57 -4 -82q-3 -18 -24 -18h-185v-596z" />
+<glyph unicode="&#xd1;" horiz-adv-x="931" d="M113 0v1405q0 29 26 29h80l246 -566q63 -172 254 -647q-10 170 -10 699v485q0 23 14 25q20 4 98 4v-1407q0 -27 -26 -27h-78l-252 575q-45 102 -250 642q8 -270 8 -689v-501q0 -18 -12 -23q-16 -4 -98 -4zM190 1688q84 139 209 139q45 0 95 -53q49 -51 92 -52q47 0 76 23 q27 20 45 47q16 23 22 23q10 0 23 -17q10 -12 16 -33l6 -16q-12 -27 -33 -53q-16 -20 -69 -54q-47 -29 -101 -28q-70 0 -114 53q-47 55 -78 55q-34 0 -62 -24q-29 -27 -43 -45q-16 -23 -24 -23q-33 1 -60 58z" />
+<glyph unicode="&#xd2;" horiz-adv-x="911" d="M78 727q0 391 94 559t299 168q200 0 283 -160q82 -158 82 -565q0 -414 -91 -579q-92 -170 -296.5 -170t-286.5 161q-84 164 -84 586zM203 692q0 -326 55 -461t195 -135q141 0 202 144q59 139 60 491q0 338 -55.5 473t-192.5 135q-135 0 -201 -149q-63 -146 -63 -498z M240 1821q2 27 18 57.5t35 30.5q2 0 133 -109q127 -106 145 -131q-23 -66 -43 -65q-4 0 -141 102q-131 99 -147 115z" />
+<glyph unicode="&#xd3;" horiz-adv-x="911" d="M78 727q0 391 94 559t299 168q200 0 283 -160q82 -158 82 -565q0 -414 -91 -579q-92 -170 -296.5 -170t-286.5 161q-84 164 -84 586zM203 692q0 -326 55 -461t195 -135q141 0 202 144q59 139 60 491q0 338 -55.5 473t-192.5 135q-135 0 -201 -149q-63 -146 -63 -498z M391 1659q74 74 119 113l113 94q45 35 47 35q18 0 35 -31q14 -31 18 -60q-18 -23 -111 -92l-176 -125q-10 0 -22 17q-6 8 -17 32z" />
+<glyph unicode="&#xd4;" horiz-adv-x="911" d="M78 727q0 391 94 559t299 168q200 0 283 -160q82 -158 82 -565q0 -414 -91 -579q-92 -170 -296.5 -170t-286.5 161q-84 164 -84 586zM203 692q0 -326 55 -461t195 -135q141 0 202 144q59 139 60 491q0 338 -55.5 473t-192.5 135q-135 0 -201 -149q-63 -146 -63 -498z M223 1636l228 234q16 4 26 4q27 0 41 -19q199 -199 199 -219q0 -12 -26.5 -26.5t-57.5 -14.5q-141 147 -158 177q-150 -174 -174 -175q-51 0 -78 39z" />
+<glyph unicode="&#xd5;" horiz-adv-x="911" d="M78 727q0 391 94 559t299 168q200 0 283 -160q82 -158 82 -565q0 -414 -91 -579q-92 -170 -296.5 -170t-286.5 161q-84 164 -84 586zM180 1688q84 139 209 139q45 0 94 -53q49 -51 92 -52q47 0 76 23q27 20 45 47q16 23 23 23q12 0 24 -17q10 -12 17 -33l4 -16 q-12 -27 -33 -53q-16 -20 -69 -54q-47 -29 -101 -28q-68 0 -115 53q-49 55 -77 55q-34 0 -62 -24q-29 -27 -43 -45q-16 -23 -24 -23q-33 1 -60 58zM203 692q0 -326 55 -461t195 -135q141 0 202 144q59 139 60 491q0 338 -55.5 473t-192.5 135q-135 0 -201 -149 q-63 -146 -63 -498z" />
+<glyph unicode="&#xd6;" horiz-adv-x="911" d="M78 727q0 391 94 559t299 168q200 0 283 -160q82 -158 82 -565q0 -414 -91 -579q-92 -170 -296.5 -170t-286.5 161q-84 164 -84 586zM203 692q0 -326 55 -461t195 -135q141 0 202 144q59 139 60 491q0 338 -55.5 473t-192.5 135q-135 0 -201 -149q-63 -146 -63 -498z M252 1739q0 33 22 59q20 25 58 25q41 0 61.5 -22.5t20.5 -61.5q0 -33 -23 -60q-23 -25 -59 -24q-80 0 -80 84zM541 1739q0 33 22 59q23 25 58 25q41 0 61 -22.5t20 -61.5q0 -33 -22 -60q-20 -25 -59 -24q-80 0 -80 84z" />
+<glyph unicode="&#xd7;" d="M178 795q66 61 80 59q6 0 12 -6l170 -193l172 193q18 10 29 2q25 -18 53 -45q10 -10 11 -10l-195 -220l192 -215q-49 -49 -57 -55q-10 -8 -35 2l-170 191l-168 -191q-8 -8 -16 -8q-10 0 -18.5 6t-22.5 21l-35 34l191 215z" />
+<glyph unicode="&#xd8;" horiz-adv-x="948" d="M96 727q0 387 94 559q92 168 295 168q154 0 238 -90l43 109q70 -2 76 -37q0 -18 -58 -172q70 -166 70 -535q0 -410 -90 -579.5t-295 -169.5q-162 0 -244 92l-43 -105q-14 -2 -42.5 8.5t-30.5 28.5l2 7l8 22l26 67l25 62q-74 166 -74 565zM221 692q0 -297 43 -432 l379 1008q-55 72 -156 71q-138 0 -202 -147q-64 -146 -64 -500zM309 166q53 -72 156 -72q94 0 151 53q55 51 86 195q31 141 31 389q0 305 -43 440z" />
+<glyph unicode="&#xd9;" horiz-adv-x="935" d="M113 440v965q0 23 14 25q20 4 100 4v-998q0 -51 4 -112q2 -35 21 -93q15 -49 43 -79q25 -27 74 -48q45 -18 114 -18q143 0 230 43v1278q0 20 14 23q20 4 100 4v-1383q-47 -31 -141 -51t-203 -20q-92 0 -168 26q-70 25 -108 64q-37 37 -60 104q-23 70 -28 123 q-6 59 -6 143zM246 1821q2 20 20 57q16 31 33 31q2 0 133 -109q117 -96 146 -131q-23 -66 -43 -65q-2 0 -140 102q-139 105 -149 115z" />
+<glyph unicode="&#xda;" horiz-adv-x="935" d="M113 440v965q0 23 14 25q20 4 100 4v-998q0 -51 4 -112q2 -35 21 -93q15 -49 43 -79q25 -27 74 -48q45 -18 114 -18q143 0 230 43v1278q0 20 14 23q20 4 100 4v-1383q-47 -31 -141 -51t-203 -20q-92 0 -168 26q-70 25 -108 64q-37 37 -60 104q-23 70 -28 123 q-6 59 -6 143zM397 1659q74 74 119 113l113 94q45 35 47 35q16 0 33 -31q18 -35 20 -60q-18 -23 -111 -92l-176 -125q-8 0 -20 17q-10 12 -19 32z" />
+<glyph unicode="&#xdb;" horiz-adv-x="935" d="M113 440v965q0 23 14 25q20 4 100 4v-998q0 -51 4 -112q2 -35 21 -93q15 -49 43 -79q25 -27 74 -48q45 -18 114 -18q143 0 230 43v1278q0 20 14 23q20 4 100 4v-1383q-47 -31 -141 -51t-203 -20q-92 0 -168 26q-70 25 -108 64q-37 37 -60 104q-23 70 -28 123 q-6 59 -6 143zM229 1636l228 234q16 4 26 4q25 0 41 -19q199 -199 199 -219q0 -12 -26.5 -26.5t-57.5 -14.5q-141 147 -158 177q-150 -174 -174 -175q-51 0 -78 39z" />
+<glyph unicode="&#xdc;" horiz-adv-x="935" d="M113 440v965q0 23 14 25q20 4 100 4v-998q0 -51 4 -112q2 -35 21 -93q15 -49 43 -79q25 -27 74 -48q45 -18 114 -18q143 0 230 43v1278q0 20 14 23q20 4 100 4v-1383q-47 -31 -141 -51t-203 -20q-92 0 -168 26q-70 25 -108 64q-37 37 -60 104q-23 70 -28 123 q-6 59 -6 143zM258 1739q0 37 21 59q20 25 59 25q41 0 61.5 -22.5t20.5 -61.5q0 -33 -23 -60q-20 -25 -59 -24q-80 0 -80 84zM547 1739q0 33 22 59q20 25 58 25q41 0 61.5 -22.5t20.5 -61.5q0 -33 -23 -60q-23 -25 -59 -24q-80 0 -80 84z" />
+<glyph unicode="&#xdd;" horiz-adv-x="737" d="M12 1415q-6 14 13 17q10 2 114 2l99 -293q43 -115 86 -262q49 -166 53 -193q14 106 139 457l90 270q2 12 21 17q20 4 102 4l-299 -848v-559q0 -18 -14 -23q-16 -4 -99 -4v582zM293 1659q74 74 119 113q94 82 110 94q45 35 49 35q18 0 33 -31q18 -35 21 -60 q-18 -23 -111 -92l-176 -125q-8 0 -21 17q-10 12 -18 32z" />
+<glyph unicode="&#xde;" horiz-adv-x="755" d="M113 0v1403q0 20 14 27q10 4 61 4h35v-265h129q358 0 359 -391q0 -221 -99 -329q-98 -106 -268 -107h-121v-315q0 -20 -14 -23q-20 -4 -96 -4zM223 451h66h20h17.5t13.5 -1t9 -1h3q236 0 236 339q0 279 -226 279h-71q-12 0 -28.5 -1t-20.5 -1h-19v-614z" />
+<glyph unicode="&#xdf;" horiz-adv-x="960" d="M100 2q18 39 19 109l-2 1013q0 317 321 318q199 0 299 -90q98 -90 99 -201q0 -61 -41 -113q-43 -51 -90 -75q-49 -25 -90.5 -66t-41.5 -86q0 -39 37 -82q29 -33 90 -84l107 -90q55 -53 90 -121q37 -74 37 -155q0 -143 -82 -220q-84 -78 -225 -77q-70 0 -131 16 q-57 14 -84 32.5t-27 39.5q0 41 31 77q70 -63 190 -63q94 0 150 47q57 49 57 143q0 80 -57 156q-59 78 -123 125q-72 51 -123 115q-57 70 -57 135q0 61 41 113q39 47 92 77q51 29 90 68q41 41 41 88q0 72 -69.5 129t-201.5 57q-113 0 -165 -65q-51 -63 -52 -213l2 -1002 q0 -37 -14 -57q-12 -18 -51 -18q-18 0 -35 6q-20 8 -22 10z" />
+<glyph unicode="&#xe0;" horiz-adv-x="749" d="M74 285q0 104 24 174q23 68 72 102q45 33 94 45t115 12q109 0 168 -24v180q0 92 -41 127t-121 35q-184 0 -295 -51q-16 33 -16 65q0 29 16 41q35 23 125 37q98 16 197 16q125 0 186 -57q59 -55 59 -190v-123q0 -324 -10 -621q-119 -74 -278 -73q-39 0 -88 4 q-31 2 -78 22.5t-68 48.5q-27 35 -43 90q-18 60 -18 140zM143 1411q2 27 19 57q14 31 35 31q4 0 135 -108q123 -102 143 -131q-23 -66 -43 -66q-2 0 -139 102q-140 105 -150 115zM190 289q0 -72 15 -115q16 -47 45 -65q31 -18 59 -25q27 -6 76 -6q104 0 152 45 q10 160 10 387q-53 20 -133 20q-104 0 -164 -47t-60 -194z" />
+<glyph unicode="&#xe1;" horiz-adv-x="749" d="M74 285q0 104 24 174q23 68 72 102q45 33 94 45t115 12q109 0 168 -24v180q0 92 -41 127t-121 35q-184 0 -295 -51q-16 33 -16 65q0 29 16 41q35 23 125 37q98 16 197 16q125 0 186 -57q59 -55 59 -190v-123q0 -324 -10 -621q-119 -74 -278 -73q-39 0 -88 4 q-31 2 -78 22.5t-68 48.5q-27 35 -43 90q-18 60 -18 140zM190 289q0 -72 15 -115q16 -47 45 -65q31 -18 59 -25q27 -6 76 -6q104 0 152 45q10 160 10 387q-53 20 -133 20q-104 0 -164 -47t-60 -194zM297 1249q74 74 119 113q94 82 110 94q45 35 49 35q16 0 33 -33 q18 -35 21 -57q-14 -18 -111 -90q-102 -78 -176 -127q-10 0 -23 16q-6 8 -16 33z" />
+<glyph unicode="&#xe2;" horiz-adv-x="749" d="M74 285q0 104 24 174q23 68 72 102q45 33 94 45t115 12q109 0 168 -24v180q0 92 -41 127t-121 35q-184 0 -295 -51q-16 33 -16 65q0 29 16 41q35 23 125 37q98 16 197 16q125 0 186 -57q59 -55 59 -190v-123q0 -324 -10 -621q-119 -74 -278 -73q-39 0 -88 4 q-31 2 -78 22.5t-68 48.5q-27 35 -43 90q-18 60 -18 140zM129 1227l227 233q16 4 27 4q27 0 41 -18q199 -199 199 -219q0 -12 -27 -26.5t-57 -14.5q-137 143 -158 176q-150 -174 -174 -174q-51 0 -78 39zM190 289q0 -72 15 -115q16 -47 45 -65q31 -18 59 -25q27 -6 76 -6 q104 0 152 45q10 160 10 387q-53 20 -133 20q-104 0 -164 -47t-60 -194z" />
+<glyph unicode="&#xe3;" horiz-adv-x="749" d="M74 285q0 104 24 174q23 68 72 102q45 33 94 45t115 12q109 0 168 -24v180q0 92 -41 127t-121 35q-184 0 -295 -51q-16 33 -16 65q0 29 16 41q35 23 125 37q98 16 197 16q125 0 186 -57q59 -55 59 -190v-123q0 -324 -10 -621q-119 -74 -278 -73q-39 0 -88 4 q-31 2 -78 22.5t-68 48.5q-27 35 -43 90q-18 60 -18 140zM86 1278q84 139 209 139q45 0 94 -51q49 -53 92 -53q45 0 76 24.5t45 44.5q16 23 23 23q10 0 22 -16q10 -12 19 -33l4 -17q-14 -33 -33 -53q-20 -25 -70 -53q-47 -29 -100 -29q-66 0 -115 56q-47 53 -78 53 q-37 0 -61 -23q-27 -23 -43 -47q-16 -23 -25 -22q-32 0 -59 57zM190 289q0 -72 15 -115q16 -47 45 -65q31 -18 59 -25q27 -6 76 -6q104 0 152 45q10 160 10 387q-53 20 -133 20q-104 0 -164 -47t-60 -194z" />
+<glyph unicode="&#xe4;" horiz-adv-x="749" d="M74 285q0 104 24 174q23 68 72 102q45 33 94 45t115 12q109 0 168 -24v180q0 92 -41 127t-121 35q-184 0 -295 -51q-16 33 -16 65q0 29 16 41q35 23 125 37q98 16 197 16q125 0 186 -57q59 -55 59 -190v-123q0 -324 -10 -621q-119 -74 -278 -73q-39 0 -88 4 q-31 2 -78 22.5t-68 48.5q-27 35 -43 90q-18 60 -18 140zM158 1329q0 33 22 60q20 25 58 24q40 0 61 -24q20 -23 20 -60q0 -35 -22 -61q-20 -23 -59 -23q-80 0 -80 84zM190 289q0 -72 15 -115q16 -47 45 -65q31 -18 59 -25q27 -6 76 -6q104 0 152 45q10 160 10 387 q-53 20 -133 20q-104 0 -164 -47t-60 -194zM446 1329q0 37 21 60q20 25 59 24.5t60 -24.5q23 -27 22 -60q0 -35 -22 -61q-20 -23 -60 -23q-80 0 -80 84z" />
+<glyph unicode="&#xe5;" horiz-adv-x="749" d="M74 285q0 104 24 174q23 68 72 102q45 33 94 45t115 12q109 0 168 -24v180q0 92 -41 127t-121 35q-184 0 -295 -51q-16 33 -16 65q0 29 16 41q35 23 125 37q98 16 197 16q125 0 186 -57q59 -55 59 -190v-123q0 -324 -10 -621q-119 -74 -278 -73q-39 0 -88 4 q-31 2 -78 22.5t-68 48.5q-27 35 -43 90q-18 60 -18 140zM190 289q0 -72 15 -115q16 -47 45 -65q31 -18 59 -25q27 -6 76 -6q104 0 152 45q10 160 10 387q-53 20 -133 20q-104 0 -164 -47t-60 -194zM195 1360q0 186 192 186q88 0 133 -41q43 -39 43 -143q0 -186 -190 -186 q-86 0 -133 43q-45 43 -45 141zM283 1356q0 -98 92 -99q102 0 102 105q0 100 -90 100q-53 0 -78 -24q-26 -27 -26 -82z" />
+<glyph unicode="&#xe6;" horiz-adv-x="1267" d="M74 291q0 197 84 270q80 72 219 72q111 0 170 -25v172q0 94 -45 127q-47 35 -129 35q-170 0 -277 -59q-14 23 -14 67q0 29 18 39q86 55 312 55q96 0 155 -38q51 -35 68 -123q46 95 117 129q68 33 168 32q258 0 258 -317q0 -162 -21 -252q-86 -14 -190 -14q-156 0 -299 31 v-35q0 -125 14 -197q14 -74 49 -110.5t72 -47.5q41 -10 96 -10q154 0 254 70q14 -31 14 -103q0 -12 -37 -30q-25 -12 -104 -31q-63 -14 -137 -14q-182 0 -246 94v-35q-104 -61 -274 -61q-72 0 -111 8q-49 10 -90 35q-45 27 -69.5 94.5t-24.5 171.5zM190 289 q0 -133 47.5 -172t145.5 -39q121 0 164 43v403q-53 20 -133 21q-100 0 -164 -53q-60 -51 -60 -203zM672 586q152 -33 280 -33q68 0 107 8q8 57 8 144q-4 127 -37 182q-35 55 -121 55q-94 0 -157 -72q-66 -73 -80 -284z" />
+<glyph unicode="&#xe7;" horiz-adv-x="675" d="M82 489q0 141 24 246q25 106 58 162q34 58 86 92q57 37 96 45q51 10 105 10q74 0 123 -24.5t49 -56.5q0 -37 -15 -68q-70 47 -159 47q-43 0 -70 -8q-31 -9 -68 -37q-33 -25 -59 -74q-23 -41 -39 -135q-16 -92 -16 -205q0 -237 55 -319t168 -82q121 0 188 61 q14 -31 15 -65q0 -34 -56 -62q-57 -29 -143 -34l-21 -105q4 4 37 4q41 0 72 -31q29 -29 29 -88q0 -78 -43 -118q-41 -39 -105 -39q-61 0 -108 20q10 53 20 68q9 3 19 0l12 -5q12 -5 20 -7q20 -6 39 -7q70 0 70 74q0 72 -68 72l-80 -13l33 175q-135 8 -200 114 q-68 107 -68 393z" />
+<glyph unicode="&#xe8;" horiz-adv-x="768" d="M78 457q0 145 22 262q22 111 56 172q33 57 86 96t98 47q51 10 104 10q258 0 258 -323q0 -156 -20 -246q-182 -37 -489 -37q0 -137 32 -223q31 -78 78 -102q45 -23 129 -23q150 0 246 70q14 -35 14 -80q0 -37 -84 -68q-88 -33 -194 -32q-80 0 -135 18q-57 18 -104.5 65.5 t-72 145.5t-24.5 248zM193 1411q2 20 20 57q16 31 33 31q4 0 135 -108q123 -102 143 -131q-23 -66 -43 -66q-2 0 -139 102q-139 105 -149 115zM195 532q270 0 389 29q8 57 8 137q-2 127 -37 187q-33 57 -121 57q-49 0 -80 -14q-39 -18 -71 -54q-35 -37 -60 -124 q-26 -91 -28 -218z" />
+<glyph unicode="&#xe9;" horiz-adv-x="768" d="M78 457q0 145 22 262q22 111 56 172q33 57 86 96t98 47q51 10 104 10q258 0 258 -323q0 -156 -20 -246q-182 -37 -489 -37q0 -137 32 -223q31 -78 78 -102q45 -23 129 -23q150 0 246 70q14 -35 14 -80q0 -37 -84 -68q-88 -33 -194 -32q-80 0 -135 18q-57 18 -104.5 65.5 t-72 145.5t-24.5 248zM195 532q270 0 389 29q8 57 8 137q-2 127 -37 187q-33 57 -121 57q-49 0 -80 -14q-39 -18 -71 -54q-35 -37 -60 -124q-26 -91 -28 -218zM346 1249q74 74 119 113q94 82 110 94q45 35 50 35q18 0 34 -33q14 -31 19 -57q-14 -18 -111 -90 q-102 -78 -176 -127q-10 0 -22 16q-6 8 -17 33z" />
+<glyph unicode="&#xea;" horiz-adv-x="768" d="M78 457q0 145 22 262q22 111 56 172q33 57 86 96t98 47q51 10 104 10q258 0 258 -323q0 -156 -20 -246q-182 -37 -489 -37q0 -137 32 -223q31 -78 78 -102q45 -23 129 -23q150 0 246 70q14 -35 14 -80q0 -37 -84 -68q-88 -33 -194 -32q-80 0 -135 18q-57 18 -104.5 65.5 t-72 145.5t-24.5 248zM178 1227l228 233q16 4 26 4q27 0 41 -18q199 -199 199 -219q0 -12 -27 -26.5t-57 -14.5q-137 143 -158 176q-150 -174 -174 -174q-51 0 -78 39zM195 532q270 0 389 29q8 57 8 137q-2 127 -37 187q-33 57 -121 57q-49 0 -80 -14q-39 -18 -71 -54 q-35 -37 -60 -124q-26 -91 -28 -218z" />
+<glyph unicode="&#xeb;" horiz-adv-x="768" d="M78 457q0 145 22 262q22 111 56 172q33 57 86 96t98 47q51 10 104 10q258 0 258 -323q0 -156 -20 -246q-182 -37 -489 -37q0 -137 32 -223q31 -78 78 -102q45 -23 129 -23q150 0 246 70q14 -35 14 -80q0 -37 -84 -68q-88 -33 -194 -32q-80 0 -135 18q-57 18 -104.5 65.5 t-72 145.5t-24.5 248zM195 532q270 0 389 29q8 57 8 137q-2 127 -37 187q-33 57 -121 57q-49 0 -80 -14q-39 -18 -71 -54q-35 -37 -60 -124q-26 -91 -28 -218zM207 1329q0 33 22 60q20 25 58 24q40 0 61 -24q20 -23 21 -60q0 -35 -23 -61q-20 -23 -59 -23q-80 0 -80 84z M496 1329q0 33 22 60q23 25 57 24q39 0 60 -24q23 -27 22 -60q0 -35 -22 -61q-20 -23 -60 -23q-79 0 -79 84z" />
+<glyph unicode="&#xec;" horiz-adv-x="348" d="M-59 1411q2 27 18 57.5t35 30.5q2 0 133 -108q127 -106 145 -131q-23 -66 -43 -66q-4 0 -141 102q-131 99 -147 115zM117 0v969q0 39 20 47q18 8 96 8v-997q0 -18 -16 -23q-20 -4 -100 -4z" />
+<glyph unicode="&#xed;" horiz-adv-x="348" d="M92 1249q74 74 119 113l113 94q45 35 47 35q18 0 35 -33q14 -31 18 -57q-14 -18 -111 -90q-102 -78 -176 -127q-10 0 -22 16q-6 8 -17 33zM117 0v969q0 39 20 47q18 8 96 8v-997q0 -18 -16 -23q-20 -4 -100 -4z" />
+<glyph unicode="&#xee;" horiz-adv-x="348" d="M-76 1227l228 233q16 4 26 4q27 0 41 -18q199 -199 199 -219q0 -12 -26.5 -26.5t-57.5 -14.5q-137 143 -158 176q-150 -174 -174 -174q-51 0 -78 39zM117 0v969q0 39 20 47q18 8 96 8v-997q0 -18 -16 -23q-20 -4 -100 -4z" />
+<glyph unicode="&#xef;" horiz-adv-x="348" d="M-47 1329q0 33 22 60q20 25 58 24q40 0 61 -24q20 -23 21 -60q0 -35 -23 -61q-20 -23 -59 -23q-80 0 -80 84zM117 0v969q0 39 20 47q18 8 96 8v-997q0 -18 -16 -23q-20 -4 -100 -4zM242 1329q0 33 22 60q23 25 58 24q40 0 61 -24q20 -23 20 -60q0 -35 -22 -61 q-20 -23 -59 -23q-80 0 -80 84z" />
+<glyph unicode="&#xf0;" horiz-adv-x="892" d="M94 526q0 252 92 383q92 133 258 133q139 0 226 -92q-47 186 -158 328l-197 -78q-31 84 -20 96q2 4 10 9l135 53q-46 46 -129 110q29 55 78 56q27 0 47 -21q78 -63 113 -102l158 63q31 -84 22 -96q-2 -4 -12 -8l-99 -39q201 -268 201 -729q0 -135 -12 -234 q-12 -90 -51 -190q-35 -90 -111 -139q-74 -49 -182 -49q-188 0 -279 129q-90 130 -90 417zM207 510q0 -432 254 -432q78 0 131 41q47 37 74 121q23 74 32 159q8 72 9 199q0 111 -11 197q-86 143 -227 143q-127 0 -194.5 -112.5t-67.5 -315.5z" />
+<glyph unicode="&#xf1;" horiz-adv-x="819" d="M113 0v973q168 72 331 71q158 0 220 -65q61 -65 61 -215v-737q0 -20 -14 -23q-20 -4 -101 -4v733q0 117 -34.5 164t-135.5 47q-125 0 -215 -47v-870q0 -20 -14 -23q-20 -4 -98 -4zM141 1278q84 139 209 139q47 0 96 -51q49 -53 91 -53q47 0 77 24q25 20 43 45 q16 23 23 23q12 0 25 -16q6 -8 16 -33l4 -17q-14 -33 -33 -53q-20 -25 -69 -53q-47 -29 -101 -29q-66 0 -114 56q-47 53 -78 53q-37 0 -62 -23q-27 -23 -43 -47q-16 -23 -24 -22q-33 0 -60 57z" />
+<glyph unicode="&#xf2;" horiz-adv-x="782" d="M63 510q0 535 343 534q164 0 241 -114q76 -113 76 -418q0 -532 -340 -532q-83 0 -135 18q-55 18 -98 72q-43 51 -66 163q-21 103 -21 277zM168 1411q2 20 20 57q16 31 33 31q2 0 133 -108q117 -96 146 -131q-23 -66 -43 -66q-2 0 -140 102q-139 105 -149 115zM184 502 q0 -164 27 -266q25 -96 65 -127t111 -31q215 0 215 438q0 254 -47 340q-49 88 -154 88q-106 0 -161.5 -98t-55.5 -344z" />
+<glyph unicode="&#xf3;" horiz-adv-x="782" d="M63 510q0 535 343 534q164 0 241 -114q76 -113 76 -418q0 -532 -340 -532q-83 0 -135 18q-55 18 -98 72q-43 51 -66 163q-21 103 -21 277zM184 502q0 -164 27 -266q25 -96 65 -127t111 -31q215 0 215 438q0 254 -47 340q-49 88 -154 88q-106 0 -161.5 -98t-55.5 -344z M319 1249q74 74 119 113l113 94q45 35 47 35q16 0 33 -33q18 -35 20 -57q-14 -18 -110 -90q-102 -78 -176 -127q-8 0 -21 16q-10 12 -18 33z" />
+<glyph unicode="&#xf4;" horiz-adv-x="782" d="M63 510q0 535 343 534q164 0 241 -114q76 -113 76 -418q0 -532 -340 -532q-83 0 -135 18q-55 18 -98 72q-43 51 -66 163q-21 103 -21 277zM152 1227l227 233q16 4 27 4q25 0 40 -18q199 -199 199 -219q0 -12 -26.5 -26.5t-57.5 -14.5q-137 143 -158 176 q-150 -174 -174 -174q-50 0 -77 39zM184 502q0 -164 27 -266q25 -96 65 -127t111 -31q215 0 215 438q0 254 -47 340q-49 88 -154 88q-106 0 -161.5 -98t-55.5 -344z" />
+<glyph unicode="&#xf5;" horiz-adv-x="782" d="M63 510q0 535 343 534q164 0 241 -114q76 -113 76 -418q0 -532 -340 -532q-83 0 -135 18q-55 18 -98 72q-43 51 -66 163q-21 103 -21 277zM109 1278q84 139 208 139q45 0 95 -51q49 -53 92 -53q45 0 75.5 24.5t45.5 44.5q16 23 22 23q10 0 23 -16q6 -8 16 -33l6 -17 q-14 -33 -33 -53q-20 -25 -69 -53q-47 -29 -101 -29q-68 0 -114 56q-45 53 -78 53q-37 0 -61 -23q-27 -23 -43 -47q-16 -23 -25 -22q-32 0 -59 57zM184 502q0 -164 27 -266q25 -96 65 -127t111 -31q215 0 215 438q0 254 -47 340q-49 88 -154 88q-106 0 -161.5 -98 t-55.5 -344z" />
+<glyph unicode="&#xf6;" horiz-adv-x="782" d="M63 510q0 535 343 534q164 0 241 -114q76 -113 76 -418q0 -532 -340 -532q-83 0 -135 18q-55 18 -98 72q-43 51 -66 163q-21 103 -21 277zM180 1329q0 37 21 60q20 25 59 24.5t59 -24.5q23 -27 23 -60q0 -35 -23 -61q-20 -23 -59 -23q-80 0 -80 84zM184 502 q0 -164 27 -266q25 -96 65 -127t111 -31q215 0 215 438q0 254 -47 340q-49 88 -154 88q-106 0 -161.5 -98t-55.5 -344zM469 1329q0 33 23 60q20 25 57 24q40 0 61 -24q20 -23 21 -60q0 -35 -23 -61q-20 -23 -59 -23q-80 0 -80 84z" />
+<glyph unicode="&#xf7;" d="M86 526v49q0 20 2 31q4 16 8 19q8 4 17 4h690q0 -53 -4 -82q-2 -20 -25 -21h-688zM358 287q0 39 21 61q23 25 59 25q82 0 82 -86q0 -33 -22 -60q-23 -25 -60 -24q-80 0 -80 84zM358 856q0 37 21 59q23 25 59 25q82 0 82 -84q0 -35 -22 -61q-23 -25 -60 -25q-80 0 -80 86z " />
+<glyph unicode="&#xf8;" horiz-adv-x="866" d="M57 4q0 10 95 166q-37 117 -37 340q0 535 338 534q158 0 227 -94q59 104 74 119q68 -15 67 -49q0 -16 -92 -164q43 -123 43 -344q0 -532 -330 -532q-178 0 -245 98l-32 -52.5t-27 -46t-15 -24.5q-12 2 -41 16q-25 13 -25 33zM233 502q0 -147 17 -232l348 592 q-43 82 -147 82q-106 0 -162 -98t-56 -344zM279 174q47 -96 157 -96q215 0 215 438q0 156 -20 252z" />
+<glyph unicode="&#xf9;" horiz-adv-x="849" d="M119 346v649q0 25 14 27q10 2 100 2v-692q0 -147 39 -199q41 -53 158 -53q111 0 188 47v868q0 23 15 25q20 4 98 4v-973q-139 -72 -311 -71.5t-238 83.5q-63 82 -63 283zM197 1411q2 27 18 57q14 31 35 31q4 0 135 -108q123 -102 143 -131q-23 -66 -43 -66q-4 0 -141 102 q-131 99 -147 115z" />
+<glyph unicode="&#xfa;" horiz-adv-x="849" d="M119 346v649q0 25 14 27q10 2 100 2v-692q0 -147 39 -199q41 -53 158 -53q111 0 188 47v868q0 23 15 25q20 4 98 4v-973q-139 -72 -311 -71.5t-238 83.5q-63 82 -63 283zM348 1249q74 74 119 113l113 94q45 35 47 35q18 0 35 -33q14 -31 18 -57q-14 -18 -111 -90 q-102 -78 -176 -127q-10 0 -22 16q-6 8 -17 33z" />
+<glyph unicode="&#xfb;" horiz-adv-x="849" d="M119 346v649q0 25 14 27q10 2 100 2v-692q0 -147 39 -199q41 -53 158 -53q111 0 188 47v868q0 23 15 25q20 4 98 4v-973q-139 -72 -311 -71.5t-238 83.5q-63 82 -63 283zM180 1227l228 233q16 4 26 4q25 0 41 -18q199 -199 199 -219q0 -12 -26.5 -26.5t-57.5 -14.5 q-137 143 -158 176q-150 -174 -174 -174q-51 0 -78 39z" />
+<glyph unicode="&#xfc;" horiz-adv-x="849" d="M119 346v649q0 25 14 27q10 2 100 2v-692q0 -147 39 -199q41 -53 158 -53q111 0 188 47v868q0 23 15 25q20 4 98 4v-973q-139 -72 -311 -71.5t-238 83.5q-63 82 -63 283zM209 1329q0 33 22 60q23 25 58 24q40 0 61 -24q20 -23 21 -60q0 -35 -23 -61q-20 -23 -59 -23 q-80 0 -80 84zM498 1329q0 33 22 60q20 25 58 24q40 0 61 -24q20 -23 20 -60q0 -35 -22 -61q-20 -23 -59 -23q-80 0 -80 84z" />
+<glyph unicode="&#xfd;" horiz-adv-x="755" d="M2 -334q0 39 21 66q61 -29 124 -29q127 0 187 264l-266 1022q-6 29 8 31q20 4 100 4l154 -602l59 -318q18 141 55 320l138 565q3 28 18 31q20 4 102 4l-270 -1087q-47 -182 -110 -256q-66 -76 -170 -76q-150 0 -150 61zM309 1249q74 74 119 113l113 94q45 35 47 35 q16 0 33 -33q18 -35 20 -57q-14 -18 -111 -90q-102 -78 -176 -127q-8 0 -20 16q-10 12 -19 33z" />
+<glyph unicode="&#xfe;" horiz-adv-x="817" d="M117 -365v1815q0 37 18 47q16 8 94 8v-489q78 27 183 26q168 0 254 -98q84 -96 84 -342q0 -158 -25 -274q-25 -115 -61 -181q-35 -61 -89 -104q-43 -35 -90 -49q-39 -12 -82 -12q-117 0 -174 63v-446q-23 -8 -65 -9q-29 0 -37 9q-10 9 -10 36zM229 158q47 -78 144 -78 q29 0 59 10q29 10 66 43q41 37 65.5 84t44.5 150q18 96 19 223q0 203 -54 278q-53 74 -163 74q-102 0 -181 -53v-731z" />
+<glyph unicode="&#xff;" horiz-adv-x="755" d="M2 -334q0 39 21 66q61 -29 124 -29q127 0 187 264l-266 1022q-6 29 8 31q20 4 100 4l154 -602l59 -318q18 141 55 320l138 565q3 28 18 31q20 4 102 4l-270 -1087q-47 -182 -110 -256q-66 -76 -170 -76q-150 0 -150 61zM170 1329q0 33 23 60q20 25 57 24q40 0 61 -24 q20 -23 21 -60q0 -35 -23 -61q-20 -23 -59 -23q-80 0 -80 84zM459 1329q0 33 22 60q23 25 58 24q40 0 61 -24q20 -23 21 -60q0 -35 -23 -61q-20 -23 -59 -23q-80 0 -80 84z" />
+<glyph unicode="&#x131;" horiz-adv-x="348" d="M117 0v969q0 39 20 47q18 8 96 8v-997q0 -18 -16 -23q-20 -4 -100 -4z" />
+<glyph unicode="&#x141;" horiz-adv-x="671" d="M12 721q0 20 17 31l84 26v615q0 31 14 37q10 4 100 4v-617l209 68q18 -57 18.5 -78t-16.5 -29l-211 -69v-603h406v-79q0 -27 -29 -27h-491v670l-84 -27q-17 66 -17 78z" />
+<glyph unicode="&#x142;" horiz-adv-x="346" d="M-2 694q0 18 2 22.5t14 8.5l103 33v692q0 37 18 47q16 8 94 8v-708l105 34l12 -47q4 -20 4 -30q0 -16 -2 -20.5t-14 -8.5l-105 -35v-663q0 -18 -14 -23q-16 -4 -98 -4v651l-103 -33q-4 16 -7 26.5t-5 19.5q-4 20 -4 30z" />
+<glyph unicode="&#x152;" horiz-adv-x="1282" d="M74 725q0 391 94 559q96 170 295 170q178 0 262 -133v84q0 29 27 29h477q0 -78 -2 -88q-4 -16 -21 -17h-383v-493h359q0 -76 -2 -88q-2 -16 -23 -17h-334v-627h404q0 -80 -2 -90q-2 -14 -25 -14h-475v133q-84 -152 -279 -151q-201 0 -288 161q-84 156 -84 582zM199 692 q0 -322 57 -465q55 -137 193 -137q139 0 194 145.5t55 495.5q0 338 -51 479q-49 135 -182 136q-137 0 -203 -152q-63 -148 -63 -502z" />
+<glyph unicode="&#x153;" horiz-adv-x="1314" d="M76 510q0 535 340 534q203 0 270 -170q47 102 125 138q72 33 176 32q258 0 258 -317q0 -162 -20 -252q-180 -37 -490 -37q0 -111 17 -188q14 -68 51 -104.5t69 -45.5q41 -10 95 -10q158 0 254 70q14 -35 14 -105q0 -12 -37 -30q-27 -12 -104 -31q-63 -14 -138 -14 q-113 0 -180 32q-70 33 -108 127q-82 -160 -262 -159q-86 0 -141.5 18t-100.5 72q-45 55 -68 163q-20 103 -20 277zM197 502q0 -164 26 -266q25 -96 66 -127q39 -31 110 -31q215 0 215 438q0 252 -49 338q-51 88 -151 88q-106 0 -161.5 -98t-55.5 -342zM735 532 q272 0 391 29q8 57 9 144q-4 133 -35 184q-33 53 -123 53q-46 0 -80 -12q-39 -14 -74 -51q-37 -41 -61 -125q-23 -83 -27 -222z" />
+<glyph unicode="&#x160;" horiz-adv-x="753" d="M68 88q0 43 32 80q76 -74 230 -74q246 0 245 250q0 80 -32 156q-31 70 -111 155l-221 232q-139 158 -139 291q0 125 92 200q90 76 252 76q131 0 192 -27q66 -29 66 -63q0 -37 -31 -68q-74 55 -219 56q-104 0 -170 -47q-63 -45 -64 -125q0 -94 113 -222l244 -251 q86 -92 115 -168q33 -86 32 -185q0 -170 -86 -272t-270 -102q-125 0 -199 34q-71 35 -71 74zM166 1829q14 33 27 47q18 23 30.5 22.5t61.5 -49.5q63 -63 92 -96l43 -47l80 96q57 66 67 76l27 25q47 -29 47 -56q0 -23 -102 -137q-100 -113 -121 -113t-127 103 q-100 98 -125 129z" />
+<glyph unicode="&#x161;" horiz-adv-x="751" d="M80 68q0 35 24 69q90 -53 224 -53q221 0 221 158q0 113 -115 198l-215 156q-82 57 -108.5 104.5t-26.5 110.5q0 109 88 170q92 63 246 63q80 0 151 -20q63 -18 86 -40.5t23 -41.5q0 -35 -27 -63q-102 66 -223 65q-96 0 -155.5 -35t-59.5 -98q0 -76 100 -143l222 -158 q139 -115 139 -254q0 -135 -88 -205q-90 -72 -248 -71q-113 0 -188 26q-70 25 -70 62zM170 1419q14 33 25 47q16 23 32 23q14 0 62 -47q63 -63 92 -96l43 -50l80 97q43 49 67 73l27 27q47 -29 47 -55q0 -23 -102 -138q-100 -113 -121 -112.5t-127 102.5q-80 78 -125 129z " />
+<glyph unicode="&#x178;" horiz-adv-x="737" d="M12 1415q-6 14 13 17q10 2 114 2l99 -293q43 -115 86 -262q49 -166 53 -193q14 106 139 457l90 270q2 12 21 17q20 4 102 4l-299 -848v-559q0 -18 -14 -23q-16 -4 -99 -4v582zM156 1739q0 33 22 59q23 25 58 25q41 0 61 -22.5t20 -61.5q0 -33 -22 -60q-20 -25 -59 -24 q-80 0 -80 84zM444 1739q0 37 21 59q23 25 59 25q39 0 60 -23q23 -27 22 -61q0 -33 -22 -60q-23 -25 -60 -24q-80 0 -80 84z" />
+<glyph unicode="&#x17d;" horiz-adv-x="802" d="M47 45q0 29 10 55l564 1231h-435q-55 0 -84 -4v78q0 29 29 29h610q12 -16 13 -39q0 -27 -13 -58l-569 -1235h461q78 0 108 13v-88q0 -27 -26 -27h-649q-19 16 -19 45zM195 1829q14 33 26 47q18 23 30.5 22.5t61.5 -49.5q63 -63 93 -96l43 -47l79 96q43 49 70 76l25 25 q47 -29 47 -56q0 -25 -100.5 -137.5t-123.5 -112.5q-20 0 -127 103q-99 98 -124 129z" />
+<glyph unicode="&#x17e;" horiz-adv-x="743" d="M59 57q0 25 13 45l481 824h-248q-166 0 -231 -11q-4 37 -4 56q0 53 36 53h566q12 -12 12 -37q0 -33 -14 -59l-477 -822h237q184 0 248 17q2 -8 2 -53q0 -70 -43 -70h-557q-21 18 -21 57zM139 1419q14 33 25 47q16 23 33 23q14 0 61 -47q63 -63 92 -96l43 -50l80 97 q29 33 70 73l24 27q47 -29 47 -55q0 -23 -102 -138q-100 -113 -121 -112q-18 0 -125 102q-94 90 -127 129z" />
+<glyph unicode="&#x17f;" horiz-adv-x="354" d="M106 2q14 43 15 119v1081q0 166 86 238q88 72 252 71q98 0 167.5 -30.5t69.5 -59.5q0 -43 -28 -78q-86 68 -211 68q-119 0 -172 -57q-51 -53 -52 -195v-1122q0 -33 -14 -43t-51 -10q-44 0 -62 18z" />
+<glyph unicode="&#x192;" horiz-adv-x="974" d="M33 -338q0 35 14 66q63 -25 152 -25q53 0 84 6q35 6 71 27q39 20 58 74q20 57 20 133v979h-278v49q0 10 4 30q4 16 8 19q8 4 14 4h252v139q0 98 21 162q20 68 53 102.5t80 53.5q59 23 88 24q49 4 92 4q86 0 131 -18t45 -45q0 -33 -12 -64q-68 25 -152 25q-52 0 -86 -6 q-33 -6 -71.5 -26.5t-57.5 -74.5q-18 -52 -18 -135v-141h325q0 -59 -4 -84q-3 -18 -24 -18h-297v-975q0 -100 -21 -164q-20 -68 -53 -102.5t-80 -53.5q-59 -23 -88 -24q-49 -4 -92 -4q-80 0 -131 20q-47 18 -47 43z" />
+<glyph unicode="&#x237;" horiz-adv-x="370" d="M-231 -305q0 39 18 63q90 -53 197 -53q94 0 120 55q27 53 27 187v1022q0 39 19 47q16 8 94 8v-1100q0 -156 -53.5 -239.5t-198.5 -83.5q-102 0 -164 28q-59 29 -59 66z" />
+<glyph unicode="&#x2c6;" horiz-adv-x="491" d="M0 1227l227 233q16 4 27 4q25 0 41 -18q199 -199 199 -219q0 -12 -27 -26.5t-57 -14.5q-137 143 -158 176q-150 -174 -174 -174q-51 0 -78 39z" />
+<glyph unicode="&#x2c7;" horiz-adv-x="473" d="M0 1419q14 33 25 47q16 23 32 23q14 0 62 -47q63 -63 92 -96l43 -50l80 97q43 49 67 73l27 27q47 -29 47 -55q0 -23 -102 -138q-100 -113 -121 -112.5t-127 102.5q-80 78 -125 129z" />
+<glyph unicode="&#x2d8;" horiz-adv-x="497" d="M0 1413q0 43 63 62q63 -178 183 -179q49 0 84 27t51 55q2 4 35 74q18 31 49 12q33 -18 35 -51q-72 -225 -256 -225q-102 0 -172 82q-72 84 -72 143z" />
+<glyph unicode="&#x2d9;" horiz-adv-x="131" d="M2 1370q0 94 68 94q63 0 63 -92q-4 -96 -70 -96q-63 0 -61 94z" />
+<glyph unicode="&#x2da;" horiz-adv-x="366" d="M0 1360q0 186 193 186q90 0 135 -41q41 -39 41 -143q0 -186 -191 -186q-88 0 -133 43t-45 141zM88 1356q0 -98 92 -99q102 0 103 105q0 100 -90 100q-53 0 -78 -24q-27 -27 -27 -82z" />
+<glyph unicode="&#x2db;" horiz-adv-x="260" d="M0 -233q0 90 57 167q55 76 127 99q20 12 39 8q27 -6 37 -41q-63 -35 -110.5 -96.5t-47.5 -124.5q0 -90 82 -90q29 0 62 16q12 -25 14 -41q0 -20 -2 -24q-8 -39 -100 -39q-158 0 -158 166z" />
+<glyph unicode="&#x2dc;" horiz-adv-x="581" d="M0 1278q84 139 209 139q45 0 94 -51q49 -53 92 -53q45 0 76 24.5t45 44.5q16 23 23 23q10 0 22 -16q10 -12 19 -33l4 -17q-14 -33 -33 -53q-20 -25 -70 -53q-47 -29 -100 -29q-66 0 -115 56q-47 53 -78 53q-37 0 -61 -23q-27 -23 -43 -47q-16 -23 -25 -22q-32 0 -59 57z " />
+<glyph unicode="&#x2dd;" horiz-adv-x="604" d="M106 1212l205 304q12 23 41 22q12 0 25 -6q12 12 33 12q28 0 49 -18.5t24 -48.5l-229 -297q-10 -16 -31 -17q-18 0 -33 13l-2 -5q-10 -10 -26 -10q-20 0 -37 15q-15 11 -19 36z" />
+<glyph unicode="&#x394;" horiz-adv-x="899" d="M57 0l328 1366q16 74 82 74q39 0 55 -15l338 -1425h-803zM188 106h545l-270 1164h-6z" />
+<glyph unicode="&#x2206;" horiz-adv-x="899" d="M57 0l328 1366q16 74 82 74q39 0 55 -15l338 -1425h-803zM188 106h545l-270 1164h-6z" />
+<glyph unicode="&#x3a9;" horiz-adv-x="942" d="M94 49q0 57 39 57h133q-168 248 -168 666q0 356 95 518q96 164 301 164q193 0 272 -154q78 -150 78 -520q0 -240 -56 -415q-55 -178 -118 -259h168q10 -35 10 -51q0 -55 -43 -55h-273q80 121 140 315q59 197 59 410q0 334 -59 475q-57 137 -191 137q-137 0 -202 -133 q-66 -135 -66 -461q0 -223 57.5 -427.5t132.5 -315.5h-301q-8 22 -8 49z" />
+<glyph unicode="&#x2126;" horiz-adv-x="942" d="M94 49q0 57 39 57h133q-168 248 -168 666q0 356 95 518q96 164 301 164q193 0 272 -154q78 -150 78 -520q0 -240 -56 -415q-55 -178 -118 -259h168q10 -35 10 -51q0 -55 -43 -55h-273q80 121 140 315q59 197 59 410q0 334 -59 475q-57 137 -191 137q-137 0 -202 -133 q-66 -135 -66 -461q0 -223 57.5 -427.5t132.5 -315.5h-301q-8 22 -8 49z" />
+<glyph unicode="&#x3c0;" horiz-adv-x="903" d="M70 963q0 61 41 61h710q10 -27 10 -53q0 -55 -43 -56h-81v-882q0 -41 -60 -41q-31 0 -53 8v915h-295v-882q0 -41 -59 -41q-23 0 -54 8v915h-106q-10 25 -10 48z" />
+<glyph unicode="&#x2000;" horiz-adv-x="976" />
+<glyph unicode="&#x2001;" horiz-adv-x="1955" />
+<glyph unicode="&#x2002;" horiz-adv-x="976" />
+<glyph unicode="&#x2003;" horiz-adv-x="1955" />
+<glyph unicode="&#x2004;" horiz-adv-x="651" />
+<glyph unicode="&#x2005;" horiz-adv-x="487" />
+<glyph unicode="&#x2006;" horiz-adv-x="325" />
+<glyph unicode="&#x2007;" horiz-adv-x="325" />
+<glyph unicode="&#x2008;" horiz-adv-x="243" />
+<glyph unicode="&#x2009;" horiz-adv-x="389" />
+<glyph unicode="&#x200a;" horiz-adv-x="106" />
+<glyph unicode="&#x2010;" horiz-adv-x="591" d="M88 526v49q0 20 2 31q4 16 8 19q8 4 17 4h391q0 -53 -4 -82q-2 -20 -25 -21h-389z" />
+<glyph unicode="&#x2011;" horiz-adv-x="591" d="M88 526v49q0 20 2 31q4 16 8 19q8 4 17 4h391q0 -53 -4 -82q-2 -20 -25 -21h-389z" />
+<glyph unicode="&#x2012;" horiz-adv-x="591" d="M88 526v49q0 20 2 31q4 16 8 19q8 4 17 4h391q0 -53 -4 -82q-2 -20 -25 -21h-389z" />
+<glyph unicode="&#x2013;" horiz-adv-x="890" d="M88 526v49q0 20 2 31q4 16 8 19q8 4 17 4h690q0 -53 -4 -82q-2 -20 -25 -21h-688z" />
+<glyph unicode="&#x2014;" horiz-adv-x="1431" d="M12 526v49q0 20 2 31q4 16 9 19q8 4 16 4h1382q0 -53 -4 -82q-2 -20 -24 -21h-1381z" />
+<glyph unicode="&#x2018;" horiz-adv-x="323" d="M76 1284q0 90 49 213t76 123q41 0 47 -37q-45 -88 -47 -231q41 -25 41 -82q0 -33 -23 -60q-23 -25 -57 -24q-86 0 -86 98z" />
+<glyph unicode="&#x2019;" horiz-adv-x="323" d="M78 1212q45 92 47 232q-41 25 -41 82q0 35 22 61q20 23 60 23q84 0 84 -99q0 -90 -49 -212.5t-76 -122.5q-39 -1 -47 36z" />
+<glyph unicode="&#x201a;" horiz-adv-x="319" d="M78 -193q45 92 47 232q-41 25 -41 82q0 35 22 61q20 23 60 23q84 0 84 -99q0 -90 -49 -212.5t-76 -122.5q-39 -1 -47 36z" />
+<glyph unicode="&#x201c;" horiz-adv-x="608" d="M76 1284q0 90 49 213t76 123q41 0 47 -37q-45 -88 -47 -231q41 -25 41 -82q0 -33 -23 -60q-23 -25 -57 -24q-86 0 -86 98zM360 1284q0 96 48 213q49 123 77 123q39 0 47 -37q-45 -88 -47 -231q39 -25 39 -82q0 -33 -22 -60q-23 -25 -58 -24q-84 0 -84 98z" />
+<glyph unicode="&#x201d;" horiz-adv-x="608" d="M78 1212q45 92 47 232q-41 25 -41 82q0 35 22 61q20 23 60 23q84 0 84 -99q0 -90 -49 -212.5t-76 -122.5q-39 -1 -47 36zM360 1212q43 80 50 232q-41 25 -41 82q0 33 22 59q23 25 58 25q84 0 83 -99q0 -90 -49 -212.5t-73 -122.5q-41 -1 -50 36z" />
+<glyph unicode="&#x201e;" horiz-adv-x="604" d="M78 -193q45 92 47 232q-41 25 -41 82q0 35 22 61q20 23 60 23q84 0 84 -99q0 -90 -49 -212.5t-76 -122.5q-39 -1 -47 36zM360 -193q43 82 50 232q-41 25 -41 82q0 35 22 61q20 23 58 23q84 0 83 -99q0 -90 -49 -212.5t-73 -122.5q-41 -1 -50 36z" />
+<glyph unicode="&#x2020;" horiz-adv-x="880" d="M76 985q0 37 26 64l260 -31q20 -6 24.5 -28.5t-9.5 -37.5l-248 -28q-23 -4 -39 16q-14 16 -14 45zM381 16l29 889q4 16 14 23q16 8 27 6q15 -3 24 -12l29 -879q4 -25 -17 -41q-16 -14 -45 -14q-43 -1 -61 28zM381 1395q-4 25 16.5 39t48.5 14q39 0 60 -27l-29 -366 q-6 -23 -28.5 -27t-36.5 10zM500 976.5q-4 24.5 8 39.5l246 31q25 8 39 -12.5t14 -51.5q0 -41 -27 -61l-258 28q-18 2 -22 26.5z" />
+<glyph unicode="&#x2021;" horiz-adv-x="880" d="M76 449q0 39 26 61l258 -29q18 -6 22.5 -28.5t-7.5 -36.5l-246 -31q-25 -8 -39 12.5t-14 51.5zM76 985q0 37 26 64l260 -31q20 -6 24.5 -28.5t-9.5 -37.5l-248 -28q-23 -4 -39 16q-14 16 -14 45zM377 20l31 357q4 23 26.5 27t36.5 -11l31 -344q2 -27 -14.5 -41t-51.5 -14 q-36 -1 -59 26zM381 1395q-4 25 16.5 39t48.5 14q39 0 60 -27l-29 -366q-6 -23 -28.5 -27t-36.5 10zM403 504v393q0 29 23 35q27 6 55 -8v-392q0 -29 -22 -34q-22 -6 -56 6zM494 440q-3 22 12 37l248 29q25 4 39 -14q14 -16 14 -48q0 -39 -27 -63l-258 31q-24 5 -28 28z M500 976.5q-4 24.5 8 39.5l246 31q25 8 39 -12.5t14 -51.5q0 -41 -27 -61l-258 28q-18 2 -22 26.5z" />
+<glyph unicode="&#x2022;" horiz-adv-x="436" d="M104 578q0 55 33 94t90 39q59 0 95 -37q35 -39 34 -96q0 -53 -34 -95q-33 -39 -95 -39q-123 1 -123 134z" />
+<glyph unicode="&#x2026;" horiz-adv-x="997" d="M90 82q0 41 23 65q25 27 63 27q90 0 90 -92q0 -37 -24 -66q-25 -27 -66 -26q-86 0 -86 92zM412 82q0 37 24 65q25 27 62 27q90 0 90 -92q0 -37 -25 -66q-25 -27 -65 -26q-86 0 -86 92zM733 82q0 41 23 65q25 27 63 27q90 0 90 -92q0 -37 -24 -66q-25 -27 -66 -26 q-86 0 -86 92z" />
+<glyph unicode="&#x202f;" horiz-adv-x="389" />
+<glyph unicode="&#x2030;" horiz-adv-x="2050" d="M125 1075q0 377 289 377q143 0 207 -82q66 -84 65 -293q0 -379 -283 -379q-76 0 -118 15q-49 16 -86 53t-55.5 114.5t-18.5 194.5zM229 25l865 1427q66 -18 65 -51q0 -4 -215 -361l-430 -708l-215 -352q-70 14 -70 45zM233 1067q0 -164 39 -221.5t129 -57.5 q178 0 179 289q0 166 -39 223q-41 59 -127 60q-181 0 -181 -293zM748 360q0 377 288 377q141 0 207 -84t66 -293q0 -379 -281 -378q-145 0 -213 75q-67 78 -67 303zM856 352q0 -164 41 -223q39 -57 127 -57q180 0 180 288q0 160 -41 224q-41 61 -125 61q-182 0 -182 -293z M1364 360q0 377 291 377q141 0 206.5 -84t65.5 -293q0 -379 -282 -378q-76 0 -119 14q-49 16 -86 53q-39 39 -58 115q-18 76 -18 196zM1473 352q0 -162 40.5 -221t128.5 -59q178 0 179 288q0 164 -39 224q-41 61 -127 61q-182 0 -182 -293z" />
+<glyph unicode="&#x2039;" horiz-adv-x="522" d="M57 512q0 53 305 512q18 0 35 -14q23 -18 27 -29l6 -14q0 -23 -65 -138q-66 -117 -134 -217l-65 -100q272 -395 272 -442q-27 -70 -65 -70q-316 453 -316 512z" />
+<glyph unicode="&#x203a;" horiz-adv-x="522" d="M88 67.5q0 22.5 68 133.5q37 61 137 211l67 100q-266 397 -266 455q0 39 70 57q303 -457 303 -512q0 -23 -78 -154q-68 -113 -158 -241l-77 -117l-19 6q-12 4 -29 21q-18 18 -18 40.5z" />
+<glyph unicode="&#x2044;" horiz-adv-x="399" d="M-250 27l817 1400q8 27 37 27q43 0 76 -43l-819 -1411q-8 -18 -33 -18q-51 0 -78 45z" />
+<glyph unicode="&#x205f;" horiz-adv-x="487" />
+<glyph unicode="&#x2074;" horiz-adv-x="837" d="M106 797q0 27 15 63q41 127 147 293q111 172 205 262q37 39 92 39q10 0 47 -6v-596h144q10 -27 10 -55q0 -53 -35 -54h-119v-122q0 -39 -61 -39q-20 0 -45 6v155h-383q-17 21 -17 54zM217 846h291l4 467q-86 -78 -168 -207q-90 -139 -127 -260z" />
+<glyph unicode="&#x20ac;" d="M45 430q0 57 8 74q10 20 39 20h135v29q0 94 6 170h-188q0 57 8 74q10 20 39 20h152q23 135 59 219q39 86 96 131q53 41 107 58q55 16 114.5 16t108.5 -16.5t66 -32.5q20 -20 20 -31q0 -53 -22 -76q-10 8 -60 31q-43 18 -90 19q-41 0 -82 -11q-37 -8 -78 -40.5t-71 -98.5 q-33 -72 -47 -168h333q0 -53 -10 -73.5t-37 -20.5h-299q-6 -76 -6 -170v-29h277q0 -59 -9 -75q-8 -18 -39 -19h-225q10 -113 30.5 -182.5t59.5 -104.5q37 -33 72 -43q37 -10 86 -10q125 0 199 74q18 -37 18 -76q0 -31 -71.5 -69.5t-163.5 -38.5q-72 0 -127.5 16t-102.5 57 q-49 43 -80 140q-29 92 -39 237h-186z" />
+<glyph unicode="&#x2122;" horiz-adv-x="1083" d="M70 1368v45q0 16 20 21h414v-45q0 -20 -19 -21h-155v-565q0 -12 -11 -17q-6 -2 -59 -2v584h-190zM553 784v629q0 20 20 21h43l103 -285l49 -125l41 123l98 266q6 20 21 21h49v-629q0 -12 -10 -17q-12 -4 -60 -4l2 234q0 35 6 237l-22 -65q-6 -20 -12.5 -35.5t-10.5 -26.5 q-2 -6 -4 -13t-4 -11l-2 -4l-67 -176q-4 -10 -11 -11h-43l-71 187l-56 151q8 -182 9 -235l2 -211q0 -14 -9 -17q-12 -4 -61 -4z" />
+<glyph unicode="&#x2202;" horiz-adv-x="892" d="M94 526q0 252 92 383q92 133 258 133q139 0 226 -92q-77 304 -357 516q23 55 78 56q27 0 45 -19q197 -151 289 -368q94 -223 94 -543q0 -135 -12 -234q-12 -90 -51 -190q-35 -90 -111 -139q-74 -49 -182 -49q-188 0 -279 129q-90 130 -90 417zM207 510q0 -432 254 -432 q78 0 131 41q47 37 74 121q23 74 32 159q8 72 9 199q0 111 -11 197q-86 143 -227 143q-127 0 -194.5 -112.5t-67.5 -315.5z" />
+<glyph unicode="&#x220f;" horiz-adv-x="903" d="M70 1372q0 61 41 62h710q10 -27 10 -54q0 -55 -43 -55h-81v-1679q0 -41 -60 -41q-20 0 -53 8v1712h-295v-1679q0 -41 -59 -41q-23 0 -54 8v1712h-106q-10 24 -10 47z" />
+<glyph unicode="&#x2211;" horiz-adv-x="829" d="M119 -389l334 821l-332 1002h555q6 -31 6 -43q0 -63 -39 -64h-360l286 -903l-293 -707h410q6 -25 6 -49q0 -57 -39 -57h-534z" />
+<glyph unicode="&#x2212;" d="M86 526v49q0 20 2 31q4 16 8 19q8 4 17 4h690q0 -53 -4 -82q-2 -20 -25 -21h-688z" />
+<glyph unicode="&#x221a;" horiz-adv-x="952" d="M113 453q20 27 65 26q43 0 49 -30l162 -605l209 1590h305q8 -23 8 -54q0 -53 -39 -53h-174l-225 -1665q-8 -57 -76 -57q-27 0 -61 10z" />
+<glyph unicode="&#x221e;" horiz-adv-x="1273" d="M106 547q0 121 62 207q59 84 211 84q104 0 162 -50q59 -51 108 -135q55 90 111 135q61 49 153 50q119 0 187 -76q70 -80 69 -215q0 -291 -247 -301q-27 -2 -76 8q-141 29 -215 186q-119 -184 -262 -184q-127 0 -195 82q-68 83 -68 209zM217 547q0 -78 41 -131.5 t117 -53.5q68 0 119 48q47 45 94 135l-2 8q-25 72 -70 119q-45 49 -106 51q-53 4 -91 -12q-102 -37 -102 -164zM692 543q78 -188 199 -189q77 0 123 49q45 47 45 144q0 137 -105 174q-23 8 -63 4q-31 0 -60 -12q-27 -12 -38 -25l-33 -39q-5 -6 -68 -106z" />
+<glyph unicode="&#x222b;" horiz-adv-x="974" d="M33 -338q0 35 14 66q63 -25 152 -25q53 0 84 6q35 6 71 27q39 20 58 74q20 57 20 133v1220q0 98 21 162q20 68 53 102.5t80 53.5q59 23 88 24q49 4 92 4q86 0 131 -18t45 -45q0 -33 -12 -64q-68 25 -152 25q-52 0 -86 -6q-33 -6 -71.5 -26.5t-57.5 -74.5 q-18 -52 -18 -135v-1218q0 -100 -21 -164q-20 -68 -53 -102.5t-80 -53.5q-59 -23 -88 -24q-49 -4 -92 -4q-80 0 -131 20q-47 18 -47 43z" />
+<glyph unicode="&#x2248;" horiz-adv-x="817" d="M31 393q37 49 94 84q66 39 141 39q71 0 148 -49q78 -49 139 -49q84 0 182 80q18 10 35 -6q14 -14 21 -48q-90 -133 -246 -133q-84 0 -156 51.5t-123 51.5q-90 0 -160 -82q-27 -18 -49 4q-24 24 -26 57zM31 657q96 127 241 127q68 0 146 -51q74 -49 135 -49q96 0 160 82 q16 16 35 10q20 -6 28 -24q6 -31 -2 -62q-80 -111 -225 -110q-78 0 -156 49q-77 49 -129 49q-31 0 -65 -10q-27 -8 -47 -21q-14 -8 -41 -29q-6 -6 -13.5 -10l-11.5 -6l-4 -2q-14 -8 -31 8q-18 18 -20 49z" />
+<glyph unicode="&#x2260;" horiz-adv-x="817" d="M49 281v49q0 20 2 30q2 14 10.5 18.5t14.5 4.5h221l94 254h-342v49q0 18 2 29q4 16 10 20q8 4 15 4h352l100 271q10 29 39 28q33 0 74 -39l-96 -260h221q0 -57 -4 -82q-4 -20 -25 -20h-229l-92 -254h350q0 -57 -4 -82q-4 -20 -25 -20h-360l-98 -271q-10 -23 -39 -22 q-41 0 -74 39l92 254h-209z" />
+<glyph unicode="&#x2264;" horiz-adv-x="851" d="M104 578q0 43 39 63l549 270q37 -37 41 -75q0 -25 -22 -37l-459 -226l487 -211q-4 -41 -18 -65q-16 -25 -33 -25q-20 0 -49 15l-514 225q-21 27 -21 66zM119 0q0 57 4 82q4 20 24 20h603q0 -59 -5 -84q-3 -18 -24 -18h-602z" />
+<glyph unicode="&#x2265;" horiz-adv-x="841" d="M104 815q2 39 19 64q16 27 35 26q10 0 47 -14l514 -225q20 -27 20 -68q0 -43 -39 -63l-550 -271q-37 39 -37 76q0 29 20 37l459 225zM119 0q0 57 4 82q4 20 24 20h586q0 -59 -4 -84q-3 -18 -24 -18h-586z" />
+<glyph unicode="&#x25ca;" horiz-adv-x="958" d="M74 717l409 727l410 -727l-410 -727zM197 717l286 -504l285 504l-285 506z" />
+<glyph unicode="&#xe000;" horiz-adv-x="1025" d="M0 1025h1025v-1025h-1025v1025z" />
+<glyph unicode="&#xfb00;" horiz-adv-x="940" d="M31 926q0 63 4 84q2 14 26 14h125v152q0 113 33 180t90 100q51 29 101 39q47 10 96 10q113 0 213 -65q80 74 237 73q176 0 177 -71q0 -25 -13 -56q-63 25 -151 25q-53 0 -84 -8q-47 -12 -74 -31q-41 -27 -57 -78q-18 -55 -19 -137v-133h213q0 -63 -4 -84q-2 -14 -22 -14 h-187v-899q0 -27 -28 -27h-84v926h-324v-899q0 -27 -29 -27h-84v926h-155zM299 1024h324v129q0 125 36 207q-63 45 -161 45q-31 0 -60 -6q-23 -4 -61 -25q-35 -16 -58 -69q-20 -47 -20 -125v-156z" />
+<glyph unicode="&#xfb03;" horiz-adv-x="1257" d="M29 926q0 63 4 84q2 14 28 14h123v152q0 113 33 180q33 70 88 100q51 29 101 39q47 10 98 10q113 0 213 -65q80 74 252 73q207 0 207 -73q0 -37 -13 -68q-80 39 -192 39q-52 0 -86 -6q-33 -6 -74 -33q-39 -27 -57 -80q-18 -55 -19 -141v-127h172q0 -63 -4 -84 q-2 -14 -24 -14h-144v-899q0 -27 -28 -27h-84v926h-326v-899q0 -27 -27 -27h-86v926h-155zM297 1024h326v129q0 129 36 207q-63 45 -161 45q-34 0 -62 -6q-23 -4 -61 -25q-35 -16 -58 -69q-20 -47 -20 -125v-156zM1028 0v969q0 39 21 47q18 8 92 8v-997q0 -18 -13 -23 q-16 -4 -100 -4z" />
+<glyph unicode="&#xfb04;" horiz-adv-x="1280" d="M29 926q0 63 4 84q2 14 28 14h123v152q0 113 33 180q33 70 88 100q51 29 101 39q47 10 98 10q109 0 207 -61q70 70 217 69q138 0 233 -55l-2 -2h2v-1429q0 -18 -12 -23q-16 -4 -98 -4v1391q-55 18 -117 18q-53 0 -72 -4q-31 -6 -61 -27q-33 -20 -49.5 -75.5t-16.5 -133.5 v-145h172q0 -63 -4 -84q-2 -14 -24 -14h-144v-899q0 -27 -28 -27h-84v926h-326v-899q0 -27 -27 -27h-86v926h-155zM297 1024h326v129q0 125 34 207q-63 45 -159 45q-34 0 -62 -6q-23 -4 -61 -25q-35 -16 -58 -69q-20 -47 -20 -125v-156z" />
+<glyph horiz-adv-x="1351" d="M55 924q0 63 4 84q4 16 23 16h125v324q0 33 18.5 39t93.5 6v-369h248q0 -63 -4 -84q-4 -16 -20 -16h-224v-629q0 -59 5 -113q2 -37 26 -71q23 -31 64 -31q66 0 133 33q8 -31 8 -60q0 -37 -47 -55q-49 -18 -119 -18q-59 0 -98 22q-37 23 -55 70q-16 43 -23 96 q-6 49 -6 129v627h-152zM670 57q0 25 12 45l481 824h-248q-166 0 -231 -11q-4 37 -4 56q0 53 37 53h565q12 -12 12 -37q0 -33 -14 -59l-477 -822h237q184 0 248 17q2 -8 2 -53q0 -70 -43 -70h-557q-20 18 -20 57z" />
+<glyph horiz-adv-x="835" d="M92 479q0 158 35 279q33 115 98 176q61 59 131 84q74 27 150 26q133 0 217 -73v-1069q0 -160 -92 -236q-90 -76 -250 -76q-115 0 -188.5 31t-73.5 70q0 37 24 67q111 -61 242 -61q90 0 157.5 49t67.5 172v160q-35 -41 -96 -68q-68 -29 -137 -28q-137 0 -211 108 q-74 106 -74 389zM213 479q0 -395 195 -395q145 0 204 141v676q-43 47 -135 47q-45 0 -92 -20q-39 -16 -84 -68q-41 -47 -65 -145q-23 -91 -23 -236z" />
+<glyph horiz-adv-x="503" d="M27 926q0 63 4 84q2 14 28 14h123v248q0 240 221 239q135 0 136 -59q0 -33 -13 -57q-37 18 -104 18q-61 0 -94 -30.5t-33 -122.5v-236h213q0 -63 -4 -84q-2 -14 -25 -14h-184v-899q0 -27 -29 -27h-84v926h-155z" />
+<glyph horiz-adv-x="921" d="M94 436q0 125 64 203q66 82 166 111q-76 8 -137.5 67.5t-61.5 175.5q0 141 92 232q90 88 248 100v197q0 29 22 39q18 8 80 8v-246q86 -8 158 -43q70 -35 100 -63q29 -29 29 -52q0 -41 -41 -94q-102 145 -293 146q-127 0 -201 -60q-78 -61 -77 -170q0 -172 213 -172 q68 0 135 10l-17 -110q-178 -6 -268 -82t-90 -189q0 -94 67.5 -155.5t200.5 -61.5q215 0 326 162q47 -47 47 -90q0 -14 -18 -39q-25 -33 -50 -55q-35 -33 -96 -55q-70 -27 -143 -35v-187q0 -29 -23 -39q-25 -10 -80 -10v234q-352 12 -352 323z" />
+<glyph horiz-adv-x="1351" d="M88 815q0 304 86 449t287 145q100 0 170 -68q72 -68 71 -233q0 -47 -12 -119q-12 -70 -31 -76l259 33v205q0 61 24 80q27 20 90 20v-290l234 34q0 -66 -9 -84q-10 -23 -40 -26q-104 -15 -185 -25v-553q0 -135 19 -180q18 -47 79 -47q92 0 144 22q8 -27 8 -63 q0 -55 -178 -55q-104 0 -146 61q-41 63 -40 262v541q-455 -53 -713 -53q0 -119 16 -205q14 -78 53 -113q35 -33 68 -41q31 -8 90 -8q158 0 248 154q33 -39 33 -86q0 -27 -31 -64q-33 -39 -100 -72q-74 -35 -162 -34q-78 0 -139 20q-57 18 -103 70q-49 55 -69.5 149 t-20.5 250zM205 885q66 0 151.5 6t141.5 12l53 6q27 6 35 70q10 72 10 104q0 129 -37 181q-37 53 -106 53q-94 0 -166 -96q-74 -98 -82 -336z" />
+<glyph horiz-adv-x="987" d="M106 2q14 43 15 119v1083q0 166 86 234q88 70 258 69q59 0 119 -16q57 -16 84 -37q29 -23 28 -35q0 -27 -28 -80q-84 66 -211 66q-119 0 -172 -59q-51 -57 -52 -207v-115h676q16 -33 -14 -98l-270 -410q133 -18 227 -102q92 -82 92 -232q0 -203 -104 -332 q-102 -127 -295 -126q-78 0 -133 16q-51 14 -72 35q-18 18 -18 37q0 41 26 79q84 -59 191 -59q132 0 209 92q76 90 75 250q0 186 -166 242q-74 27 -202 28l315 482h-537v-860q0 -47 -14 -64q-14 -18 -51 -18q-44 0 -62 18z" />
+<glyph horiz-adv-x="735" d="M51 926q0 90 10 96q2 2 11 2h575q18 -34 -12 -98l-273 -410q137 -18 228 -100q92 -83 92 -234q0 -203 -104 -332q-102 -127 -293 -126q-80 0 -135 18q-59 20 -74 35q-16 16 -17 35q0 45 27 79q90 -59 190 -59q132 0 209 92q78 94 78 250q0 182 -166 242q-74 25 -202 28 l313 482h-457z" />
+<glyph horiz-adv-x="1058" d="M6 924q0 63 4 84q4 16 23 16h168v324q0 33 18.5 39t91.5 6v-369h662q20 -31 -12 -98l-271 -410q133 -18 228 -102q90 -82 90 -232q0 -207 -101 -332q-102 -127 -289 -126q-70 0 -124 16q-51 14 -68 31q-18 18 -18 32q0 33 26 82q84 -53 180 -53q127 0 201 92t74 250 q0 182 -166 242q-74 27 -203 28l314 480h-523v-883q0 -31 -14 -37q-10 -4 -96 -4v924h-195z" />
+<glyph horiz-adv-x="1675" d="M100 717q0 338 201 536q205 201 537 201q330 0 534 -201q203 -201 203 -536.5t-203 -536.5q-205 -201 -534 -200q-332 0 -537 200q-201 199 -201 537zM371 637q0 -37 43 -37h10q2 0 6 1l4 1q8 0 10 -2l119 -192v-70q0 -16 -12 -16q-6 0 -14 4q-4 2 -13 2q-37 0 -37 -39 q0 -35 43 -35q8 0 37 4t35 4q4 0 37 -4t37 -4q45 0 45 37t-33 37q-14 0 -20 -2q-4 -2 -7 -3q-2 -1 -4 -1q-12 0 -12 16v74l119 186q2 6 8 6q4 0 8 -1t6 -1h13q27 0 32 19q16 -18 31 -19h17q4 0 7 1l3 1q12 0 12 -26v-232q0 -25 -12 -24q-6 0 -12.5 2t-14.5 2q-35 0 -35 -35 q0 -37 41 -37q2 0 7.5 1t12.5 2t15 1q37 4 41 4q8 0 37 -4t31 -4q43 0 43 35q0 37 -35 37q-8 0 -14.5 -2t-12.5 -2q-12 0 -12 26v199l139 -252q27 -49 64 -49q55 0 55 90v242q0 25 14 24h11q39 0 39 35q0 39 -41 39q-18 0 -33 -2q-29 -4 -33 -4q-6 0 -35 4q-14 2 -31 2 q-23 0 -34 -12q-10 -10 -11 -27q0 -35 37 -35h17q23 0 22 -24v-201l-143 262l-4 12q-2 25 -39 25q-14 0 -24.5 -2t-29 -2t-30.5 2t-23 2q-29 0 -34 -23q-10 23 -35 23q-18 0 -35 -2q-33 -4 -39 -4t-35 4q-14 2 -31 2q-39 0 -38 -39q0 -37 38 -37q6 0 11 2q-2 -4 -13.5 -23.5 t-19.5 -35.5q-27 -45 -29 -54l-69 113h4q45 0 45 35q0 39 -41 39q-8 0 -33 -4t-31 -4q-2 0 -34.5 4t-36.5 4q-41 0 -41 -39zM461 795q0 -41 43 -41q25 0 45 6q14 4 34.5 4t32.5 -4q18 -6 35 -6q43 0 43 41q0 35 -35 34l-5 -1q-5 -1 -9 -1h-14q-10 0 -10 25v229q0 25 10 25 h14q4 0 9 -1l5 -1q8 0 23 10q12 9 12 25q0 37 -43 37q-18 0 -33 -2l-36 -5q-10 0 -39 5q-14 2 -35 2q-47 0 -47 -37q0 -12 10 -23q12 -12 27 -12q2 0 6 1t8 1h14q10 0 11 -25v-229q0 -25 -11 -25h-14q-4 0 -8 1t-6 1q-37 1 -37 -34zM731 1057q0 -63 39 -111q47 -59 111 -108 q76 -59 112 -109q37 49 113 109q68 53 111 106q41 51 40.5 112.5t-36.5 94.5q-39 35 -91 35q-88 0 -137 -90q-49 90 -137 90q-49 0 -88 -35q-37 -33 -37 -94z" />
+<glyph horiz-adv-x="350" />
+</font>
+</defs></svg> 
\ No newline at end of file
Index: modules/uoa-validator-admin/trunk/src/main/webapp/jsps/fonts/kreon.css
===================================================================
--- modules/uoa-validator-admin/trunk/src/main/webapp/jsps/fonts/kreon.css	(nonexistent)
+++ modules/uoa-validator-admin/trunk/src/main/webapp/jsps/fonts/kreon.css	(revision 47450)
@@ -0,0 +1,12 @@
+/* Copyright (C) YOOtheme GmbH, YOOtheme Proprietary Use License (http://www.yootheme.com/license) */
+
+@font-face {
+	font-family: 'KreonRegular';
+	src: url('kreon-regular-webfont.eot');
+	src: url('kreon-regular-webfont.eot?#iefix') format('embedded-opentype'),
+		 url('kreon-regular-webfont.woff') format('woff'),
+		 url('kreon-regular-webfont.ttf') format('truetype'),
+		 url('kreon-regular-webfont.svg#KreonRegular') format('svg');
+	font-weight: normal;
+	font-style: normal;
+}
\ No newline at end of file
Index: modules/uoa-validator-admin/trunk/src/main/webapp/jsps/js/mootools-1.2.5.1-more.js
===================================================================
--- modules/uoa-validator-admin/trunk/src/main/webapp/jsps/js/mootools-1.2.5.1-more.js	(nonexistent)
+++ modules/uoa-validator-admin/trunk/src/main/webapp/jsps/js/mootools-1.2.5.1-more.js	(revision 47450)
@@ -0,0 +1,2192 @@
+//MooTools More, <http://mootools.net/more>. Copyright (c) 2006-2009 Aaron Newton <http://clientcide.com/>, Valerio Proietti <http://mad4milk.net> & the MooTools team <http://mootools.net/developers>, MIT Style License.
+
+/*
+---
+
+script: More.js
+
+name: More
+
+description: MooTools More
+
+license: MIT-style license
+
+requires:
+  - Core/MooTools
+
+provides: [MooTools.More]
+
+...
+*/
+
+MooTools.More = {
+	'version': '1.2.5.1',
+	'build': '254884f2b83651bf95260eed5c6cceb838e22d8e'
+};
+
+
+/*
+---
+
+script: MooTools.Lang.js
+
+name: MooTools.Lang
+
+description: Provides methods for localization.
+
+license: MIT-style license
+
+authors:
+  - Aaron Newton
+
+requires:
+  - Core/Events
+  - /MooTools.More
+
+provides: [Lang]
+
+...
+*/
+
+(function(){
+
+	var data = {
+		language: 'en-US',
+		languages: {
+			'en-US': {}
+		},
+		cascades: ['en-US']
+	};
+	
+	var cascaded;
+
+	MooTools.lang = new Events();
+
+	$extend(MooTools.lang, {
+
+		setLanguage: function(lang){
+			if (!data.languages[lang]) return this;
+			data.language = lang;
+			this.load();
+			this.fireEvent('langChange', lang);
+			return this;
+		},
+
+		load: function() {
+			var langs = this.cascade(this.getCurrentLanguage());
+			cascaded = {};
+			$each(langs, function(set, setName){
+				cascaded[setName] = this.lambda(set);
+			}, this);
+		},
+
+		getCurrentLanguage: function(){
+			return data.language;
+		},
+
+		addLanguage: function(lang){
+			data.languages[lang] = data.languages[lang] || {};
+			return this;
+		},
+
+		cascade: function(lang){
+			var cascades = (data.languages[lang] || {}).cascades || [];
+			cascades.combine(data.cascades);
+			cascades.erase(lang).push(lang);
+			var langs = cascades.map(function(lng){
+				return data.languages[lng];
+			}, this);
+			return $merge.apply(this, langs);
+		},
+
+		lambda: function(set) {
+			(set || {}).get = function(key, args){
+				return $lambda(set[key]).apply(this, $splat(args));
+			};
+			return set;
+		},
+
+		get: function(set, key, args){
+			if (cascaded && cascaded[set]) return (key ? cascaded[set].get(key, args) : cascaded[set]);
+		},
+
+		set: function(lang, set, members){
+			this.addLanguage(lang);
+			langData = data.languages[lang];
+			if (!langData[set]) langData[set] = {};
+			$extend(langData[set], members);
+			if (lang == this.getCurrentLanguage()){
+				this.load();
+				this.fireEvent('langChange', lang);
+			}
+			return this;
+		},
+
+		list: function(){
+			return Hash.getKeys(data.languages);
+		}
+
+	});
+
+})();
+
+
+/*
+---
+
+script: Log.js
+
+name: Log
+
+description: Provides basic logging functionality for plugins to implement.
+
+license: MIT-style license
+
+authors:
+  - Guillermo Rauch
+  - Thomas Aylott
+  - Scott Kyle
+
+requires:
+  - Core/Class
+  - /MooTools.More
+
+provides: [Log]
+
+...
+*/
+
+(function(){
+
+var global = this;
+
+var log = function(){
+	if (global.console && console.log){
+		try {
+			console.log.apply(console, arguments);
+		} catch(e) {
+			console.log(Array.slice(arguments));
+		}
+	} else {
+		Log.logged.push(arguments);
+	}
+	return this;
+};
+
+var disabled = function(){
+	this.logged.push(arguments);
+	return this;
+};
+
+this.Log = new Class({
+	
+	logged: [],
+	
+	log: disabled,
+	
+	resetLog: function(){
+		this.logged.empty();
+		return this;
+	},
+
+	enableLog: function(){
+		this.log = log;
+		this.logged.each(function(args){
+			this.log.apply(this, args);
+		}, this);
+		return this.resetLog();
+	},
+
+	disableLog: function(){
+		this.log = disabled;
+		return this;
+	}
+	
+});
+
+Log.extend(new Log).enableLog();
+
+// legacy
+Log.logger = function(){
+	return this.log.apply(this, arguments);
+};
+
+})();
+
+
+/*
+---
+
+script: Class.Refactor.js
+
+name: Class.Refactor
+
+description: Extends a class onto itself with new property, preserving any items attached to the class's namespace.
+
+license: MIT-style license
+
+authors:
+  - Aaron Newton
+
+requires:
+  - Core/Class
+  - /MooTools.More
+
+# Some modules declare themselves dependent on Class.Refactor
+provides: [Class.refactor, Class.Refactor]
+
+...
+*/
+
+Class.refactor = function(original, refactors){
+
+	$each(refactors, function(item, name){
+		var origin = original.prototype[name];
+		if (origin && (origin = origin._origin ? origin._origin: origin) && typeof item == 'function') original.implement(name, function(){
+			var old = this.previous;
+			this.previous = origin;
+			var value = item.apply(this, arguments);
+			this.previous = old;
+			return value;
+		}); else original.implement(name, item);
+	});
+
+	return original;
+
+};
+
+
+/*
+---
+
+script: Class.Binds.js
+
+name: Class.Binds
+
+description: Automagically binds specified methods in a class to the instance of the class.
+
+license: MIT-style license
+
+authors:
+  - Aaron Newton
+
+requires:
+  - Core/Class
+  - /MooTools.More
+
+provides: [Class.Binds]
+
+...
+*/
+
+Class.Mutators.Binds = function(binds){
+    return binds;
+};
+
+Class.Mutators.initialize = function(initialize){
+	return function(){
+		$splat(this.Binds).each(function(name){
+			var original = this[name];
+			if (original) this[name] = original.bind(this);
+		}, this);
+		return initialize.apply(this, arguments);
+	};
+};
+
+
+/*
+---
+
+script: Class.Occlude.js
+
+name: Class.Occlude
+
+description: Prevents a class from being applied to a DOM element twice.
+
+license: MIT-style license.
+
+authors:
+  - Aaron Newton
+
+requires: 
+  - Core/Class
+  - Core/Element
+  - /MooTools.More
+
+provides: [Class.Occlude]
+
+...
+*/
+
+Class.Occlude = new Class({
+
+	occlude: function(property, element){
+		element = document.id(element || this.element);
+		var instance = element.retrieve(property || this.property);
+		if (instance && !$defined(this.occluded))
+			return this.occluded = instance;
+
+		this.occluded = false;
+		element.store(property || this.property, this);
+		return this.occluded;
+	}
+
+});
+
+
+/*
+---
+
+script: Chain.Wait.js
+
+name: Chain.Wait
+
+description: value, Adds a method to inject pauses between chained events.
+
+license: MIT-style license.
+
+authors:
+  - Aaron Newton
+
+requires: 
+  - Core/Chain
+  - Core/Element
+  - Core/Fx
+  - /MooTools.More
+
+provides: [Chain.Wait]
+
+...
+*/
+
+(function(){
+
+	var wait = {
+		wait: function(duration){
+			return this.chain(function(){
+				this.callChain.delay($pick(duration, 500), this);
+			}.bind(this));
+		}
+	};
+
+	Chain.implement(wait);
+
+	if (window.Fx){
+		Fx.implement(wait);
+		['Css', 'Tween', 'Elements'].each(function(cls){
+			if (Fx[cls]) Fx[cls].implement(wait);
+		});
+	}
+
+	Element.implement({
+		chains: function(effects){
+			$splat($pick(effects, ['tween', 'morph', 'reveal'])).each(function(effect){
+				effect = this.get(effect);
+				if (!effect) return;
+				effect.setOptions({
+					link:'chain'
+				});
+			}, this);
+			return this;
+		},
+		pauseFx: function(duration, effect){
+			this.chains(effect).get($pick(effect, 'tween')).wait(duration);
+			return this;
+		}
+	});
+
+})();
+
+
+/*
+---
+
+script: Element.Measure.js
+
+name: Element.Measure
+
+description: Extends the Element native object to include methods useful in measuring dimensions.
+
+credits: "Element.measure / .expose methods by Daniel Steigerwald License: MIT-style license. Copyright: Copyright (c) 2008 Daniel Steigerwald, daniel.steigerwald.cz"
+
+license: MIT-style license
+
+authors:
+  - Aaron Newton
+
+requires:
+  - Core/Element.Style
+  - Core/Element.Dimensions
+  - /MooTools.More
+
+provides: [Element.Measure]
+
+...
+*/
+
+Element.implement({
+
+	measure: function(fn){
+		var vis = function(el) {
+			return !!(!el || el.offsetHeight || el.offsetWidth);
+		};
+		if (vis(this)) return fn.apply(this);
+		var parent = this.getParent(),
+			restorers = [],
+			toMeasure = []; 
+		while (!vis(parent) && parent != document.body) {
+			toMeasure.push(parent.expose());
+			parent = parent.getParent();
+		}
+		var restore = this.expose();
+		var result = fn.apply(this);
+		restore();
+		toMeasure.each(function(restore){
+			restore();
+		});
+		return result;
+	},
+
+	expose: function(){
+		if (this.getStyle('display') != 'none') return $empty;
+		var before = this.style.cssText;
+		this.setStyles({
+			display: 'block',
+			position: 'absolute',
+			visibility: 'hidden'
+		});
+		return function(){
+			this.style.cssText = before;
+		}.bind(this);
+	},
+
+	getDimensions: function(options){
+		options = $merge({computeSize: false},options);
+		var dim = {};
+		var getSize = function(el, options){
+			return (options.computeSize)?el.getComputedSize(options):el.getSize();
+		};
+		var parent = this.getParent('body');
+		if (parent && this.getStyle('display') == 'none'){
+			dim = this.measure(function(){
+				return getSize(this, options);
+			});
+		} else if (parent){
+			try { //safari sometimes crashes here, so catch it
+				dim = getSize(this, options);
+			}catch(e){}
+		} else {
+			dim = {x: 0, y: 0};
+		}
+		return $chk(dim.x) ? $extend(dim, {width: dim.x, height: dim.y}) : $extend(dim, {x: dim.width, y: dim.height});
+	},
+
+	getComputedSize: function(options){
+		//legacy support for my stupid spelling error
+		if (options && options.plains) options.planes = options.plains;
+		
+		options = $merge({
+			styles: ['padding','border'],
+			planes: {
+				height: ['top','bottom'],
+				width: ['left','right']
+			},
+			mode: 'both'
+		}, options);
+		
+		var size = {width: 0,height: 0};
+		switch (options.mode){
+			case 'vertical':
+				delete size.width;
+				delete options.planes.width;
+				break;
+			case 'horizontal':
+				delete size.height;
+				delete options.planes.height;
+				break;
+		}
+		var getStyles = [];
+		//this function might be useful in other places; perhaps it should be outside this function?
+		$each(options.planes, function(plane, key){
+			plane.each(function(edge){
+				options.styles.each(function(style){
+					getStyles.push((style == 'border') ? style + '-' + edge + '-' + 'width' : style + '-' + edge);
+				});
+			});
+		});
+		var styles = {};
+		getStyles.each(function(style){ styles[style] = this.getComputedStyle(style); }, this);
+		var subtracted = [];
+		$each(options.planes, function(plane, key){ //keys: width, height, planes: ['left', 'right'], ['top','bottom']
+			var capitalized = key.capitalize();
+			size['total' + capitalized] = size['computed' + capitalized] = 0;
+			plane.each(function(edge){ //top, left, right, bottom
+				size['computed' + edge.capitalize()] = 0;
+				getStyles.each(function(style, i){ //padding, border, etc.
+					//'padding-left'.test('left') size['totalWidth'] = size['width'] + [padding-left]
+					if (style.test(edge)){
+						styles[style] = styles[style].toInt() || 0; //styles['padding-left'] = 5;
+						size['total' + capitalized] = size['total' + capitalized] + styles[style];
+						size['computed' + edge.capitalize()] = size['computed' + edge.capitalize()] + styles[style];
+					}
+					//if width != width (so, padding-left, for instance), then subtract that from the total
+					if (style.test(edge) && key != style &&
+						(style.test('border') || style.test('padding')) && !subtracted.contains(style)){
+						subtracted.push(style);
+						size['computed' + capitalized] = size['computed' + capitalized]-styles[style];
+					}
+				});
+			});
+		});
+
+		['Width', 'Height'].each(function(value){
+			var lower = value.toLowerCase();
+			if(!$chk(size[lower])) return;
+
+			size[lower] = size[lower] + this['offset' + value] + size['computed' + value];
+			size['total' + value] = size[lower] + size['total' + value];
+			delete size['computed' + value];
+		}, this);
+
+		return $extend(styles, size);
+	}
+
+});
+
+/*
+---
+
+script: Element.Position.js
+
+name: Element.Position
+
+description: Extends the Element native object to include methods useful positioning elements relative to others.
+
+license: MIT-style license
+
+authors:
+  - Aaron Newton
+
+requires:
+  - Core/Element.Dimensions
+  - /Element.Measure
+
+provides: [Element.Position]
+
+...
+*/
+
+(function(){
+
+var original = Element.prototype.position;
+
+Element.implement({
+
+	position: function(options){
+		//call original position if the options are x/y values
+		if (options && ($defined(options.x) || $defined(options.y))) return original ? original.apply(this, arguments) : this;
+		$each(options||{}, function(v, k){ if (!$defined(v)) delete options[k]; });
+		options = $merge({
+			// minimum: { x: 0, y: 0 },
+			// maximum: { x: 0, y: 0},
+			relativeTo: document.body,
+			position: {
+				x: 'center', //left, center, right
+				y: 'center' //top, center, bottom
+			},
+			edge: false,
+			offset: {x: 0, y: 0},
+			returnPos: false,
+			relFixedPosition: false,
+			ignoreMargins: false,
+			ignoreScroll: false,
+			allowNegative: false
+		}, options);
+		//compute the offset of the parent positioned element if this element is in one
+		var parentOffset = {x: 0, y: 0}, 
+				parentPositioned = false;
+		/* dollar around getOffsetParent should not be necessary, but as it does not return
+		 * a mootools extended element in IE, an error occurs on the call to expose. See:
+		 * http://mootools.lighthouseapp.com/projects/2706/tickets/333-element-getoffsetparent-inconsistency-between-ie-and-other-browsers */
+		var offsetParent = this.measure(function(){
+			return document.id(this.getOffsetParent());
+		});
+		if (offsetParent && offsetParent != this.getDocument().body){
+			parentOffset = offsetParent.measure(function(){
+				return this.getPosition();
+			});
+			parentPositioned = offsetParent != document.id(options.relativeTo);
+			options.offset.x = options.offset.x - parentOffset.x;
+			options.offset.y = options.offset.y - parentOffset.y;
+		}
+		//upperRight, bottomRight, centerRight, upperLeft, bottomLeft, centerLeft
+		//topRight, topLeft, centerTop, centerBottom, center
+		var fixValue = function(option){
+			if ($type(option) != 'string') return option;
+			option = option.toLowerCase();
+			var val = {};
+			
+			if (option.test('left')) val.x = 'left';
+			else if (option.test('right')) val.x = 'right';
+			else val.x = 'center';
+			
+			if (option.test('upper') || option.test('top')) val.y = 'top';
+			else if (option.test('bottom')) val.y = 'bottom';
+			else val.y = 'center';
+			
+			return val;
+		};
+		options.edge = fixValue(options.edge);
+		options.position = fixValue(options.position);
+		if (!options.edge){
+			if (options.position.x == 'center' && options.position.y == 'center') options.edge = {x:'center', y:'center'};
+			else options.edge = {x:'left', y:'top'};
+		}
+
+		this.setStyle('position', 'absolute');
+		var rel = document.id(options.relativeTo) || document.body,
+				calc = rel == document.body ? window.getScroll() : rel.getPosition(),
+				top = calc.y, left = calc.x;
+
+		var dim = this.getDimensions({computeSize: true, styles:['padding', 'border','margin']});
+		var pos = {},
+				prefY = options.offset.y,
+				prefX = options.offset.x,
+				winSize = window.getSize();
+		switch(options.position.x){
+			case 'left':
+				pos.x = left + prefX;
+				break;
+			case 'right':
+				pos.x = left + prefX + rel.offsetWidth;
+				break;
+			default: //center
+				pos.x = left + ((rel == document.body ? winSize.x : rel.offsetWidth)/2) + prefX;
+				break;
+		}
+		switch(options.position.y){
+			case 'top':
+				pos.y = top + prefY;
+				break;
+			case 'bottom':
+				pos.y = top + prefY + rel.offsetHeight;
+				break;
+			default: //center
+				pos.y = top + ((rel == document.body ? winSize.y : rel.offsetHeight)/2) + prefY;
+				break;
+		}
+		if (options.edge){
+			var edgeOffset = {};
+
+			switch(options.edge.x){
+				case 'left':
+					edgeOffset.x = 0;
+					break;
+				case 'right':
+					edgeOffset.x = -dim.x-dim.computedRight-dim.computedLeft;
+					break;
+				default: //center
+					edgeOffset.x = -(dim.totalWidth/2);
+					break;
+			}
+			switch(options.edge.y){
+				case 'top':
+					edgeOffset.y = 0;
+					break;
+				case 'bottom':
+					edgeOffset.y = -dim.y-dim.computedTop-dim.computedBottom;
+					break;
+				default: //center
+					edgeOffset.y = -(dim.totalHeight/2);
+					break;
+			}
+			pos.x += edgeOffset.x;
+			pos.y += edgeOffset.y;
+		}
+		pos = {
+			left: ((pos.x >= 0 || parentPositioned || options.allowNegative) ? pos.x : 0).toInt(),
+			top: ((pos.y >= 0 || parentPositioned || options.allowNegative) ? pos.y : 0).toInt()
+		};
+		var xy = {left: 'x', top: 'y'};
+		['minimum', 'maximum'].each(function(minmax) {
+			['left', 'top'].each(function(lr) {
+				var val = options[minmax] ? options[minmax][xy[lr]] : null;
+				if (val != null && ((minmax == 'minimum') ? pos[lr] < val: pos[lr] > val)) pos[lr] = val;
+			});
+		});
+		if (rel.getStyle('position') == 'fixed' || options.relFixedPosition){
+			var winScroll = window.getScroll();
+			pos.top+= winScroll.y;
+			pos.left+= winScroll.x;
+		}
+		var relScroll = rel.getScroll();
+		if (options.ignoreScroll) {
+			pos.top -= relScroll.y;
+			pos.left -= relScroll.x;
+		} else {
+			pos.top += relScroll.y;
+			pos.left += relScroll.x;
+		}
+		if (options.ignoreMargins) {
+			pos.left += (
+				options.edge.x == 'right' ? dim['margin-right'] : 
+				options.edge.x == 'center' ? -dim['margin-left'] + ((dim['margin-right'] + dim['margin-left'])/2) : 
+					- dim['margin-left']
+			);
+			pos.top += (
+				options.edge.y == 'bottom' ? dim['margin-bottom'] : 
+				options.edge.y == 'center' ? -dim['margin-top'] + ((dim['margin-bottom'] + dim['margin-top'])/2) : 
+					- dim['margin-top']
+			);
+		}
+		pos.left = Math.ceil(pos.left);
+		pos.top = Math.ceil(pos.top);
+		if (options.returnPos) return pos;
+		else this.setStyles(pos);
+		return this;
+	}
+
+});
+
+})();
+
+
+/*
+---
+
+script: Element.Shortcuts.js
+
+name: Element.Shortcuts
+
+description: Extends the Element native object to include some shortcut methods.
+
+license: MIT-style license
+
+authors:
+  - Aaron Newton
+
+requires:
+  - Core/Element.Style
+  - /MooTools.More
+
+provides: [Element.Shortcuts]
+
+...
+*/
+
+Element.implement({
+
+	isDisplayed: function(){
+		return this.getStyle('display') != 'none';
+	},
+
+	isVisible: function(){
+		var w = this.offsetWidth,
+			h = this.offsetHeight;
+		return (w == 0 && h == 0) ? false : (w > 0 && h > 0) ? true : this.style.display != 'none';
+	},
+
+	toggle: function(){
+		return this[this.isDisplayed() ? 'hide' : 'show']();
+	},
+
+	hide: function(){
+		var d;
+		try {
+			//IE fails here if the element is not in the dom
+			d = this.getStyle('display');
+		} catch(e){}
+		if (d == "none") return this;
+		return this.store('element:_originalDisplay', d || '').setStyle('display', 'none');
+	},
+
+	show: function(display){
+		if (!display && this.isDisplayed()) return this;
+		display = display || this.retrieve('element:_originalDisplay') || 'block';
+		return this.setStyle('display', (display == 'none') ? 'block' : display);
+	},
+
+	swapClass: function(remove, add){
+		return this.removeClass(remove).addClass(add);
+	}
+});
+
+Document.implement({
+	clearSelection: function(){
+		if (document.selection && document.selection.empty) {
+			document.selection.empty();
+		} else if (window.getSelection) {
+			var selection = window.getSelection();
+			if (selection && selection.removeAllRanges) selection.removeAllRanges();
+		}
+	}
+});
+
+/*
+---
+
+script: Fx.Elements.js
+
+name: Fx.Elements
+
+description: Effect to change any number of CSS properties of any number of Elements.
+
+license: MIT-style license
+
+authors:
+  - Valerio Proietti
+
+requires:
+  - Core/Fx.CSS
+  - /MooTools.More
+
+provides: [Fx.Elements]
+
+...
+*/
+
+Fx.Elements = new Class({
+
+	Extends: Fx.CSS,
+
+	initialize: function(elements, options){
+		this.elements = this.subject = $$(elements);
+		this.parent(options);
+	},
+
+	compute: function(from, to, delta){
+		var now = {};
+
+		for (var i in from){
+			var iFrom = from[i], iTo = to[i], iNow = now[i] = {};
+			for (var p in iFrom) iNow[p] = this.parent(iFrom[p], iTo[p], delta);
+		}
+
+		return now;
+	},
+
+	set: function(now){
+		for (var i in now){
+			if (!this.elements[i]) continue;
+
+			var iNow = now[i];
+			for (var p in iNow) this.render(this.elements[i], p, iNow[p], this.options.unit);
+		}
+
+		return this;
+	},
+
+	start: function(obj){
+		if (!this.check(obj)) return this;
+		var from = {}, to = {};
+
+		for (var i in obj){
+			if (!this.elements[i]) continue;
+
+			var iProps = obj[i], iFrom = from[i] = {}, iTo = to[i] = {};
+
+			for (var p in iProps){
+				var parsed = this.prepare(this.elements[i], p, iProps[p]);
+				iFrom[p] = parsed.from;
+				iTo[p] = parsed.to;
+			}
+		}
+
+		return this.parent(from, to);
+	}
+
+});
+
+
+/*
+---
+
+script: Fx.Accordion.js
+
+name: Fx.Accordion
+
+description: An Fx.Elements extension which allows you to easily create accordion type controls.
+
+license: MIT-style license
+
+authors:
+  - Valerio Proietti
+
+requires:
+  - Core/Element.Event
+  - /Fx.Elements
+
+provides: [Fx.Accordion]
+
+...
+*/
+
+Fx.Accordion = new Class({
+
+	Extends: Fx.Elements,
+
+	options: {/*
+		onActive: $empty(toggler, section),
+		onBackground: $empty(toggler, section),
+		*/
+		fixedHeight: false,
+		fixedWidth: false,
+		display: 0,
+		show: false,
+		height: true,
+		width: false,
+		opacity: true,
+		alwaysHide: false,
+		trigger: 'click',
+		initialDisplayFx: true,
+		returnHeightToAuto: true
+	},
+
+	initialize: function(){
+		var params = Array.link(arguments, {
+			'container': Element.type, //deprecated
+			'options': Object.type,
+			'togglers': $defined,
+			'elements': $defined
+		});
+		this.parent(params.elements, params.options);
+		this.togglers = $$(params.togglers);
+		this.previous = -1;
+		this.internalChain = new Chain();
+		if (this.options.alwaysHide) this.options.wait = true;
+		if ($chk(this.options.show)){
+			this.options.display = false;
+			this.previous = this.options.show;
+		}
+		if (this.options.start){
+			this.options.display = false;
+			this.options.show = false;
+		}
+		this.effects = {};
+		if (this.options.opacity) this.effects.opacity = 'fullOpacity';
+		if (this.options.width) this.effects.width = this.options.fixedWidth ? 'fullWidth' : 'offsetWidth';
+		if (this.options.height) this.effects.height = this.options.fixedHeight ? 'fullHeight' : 'scrollHeight';
+		for (var i = 0, l = this.togglers.length; i < l; i++) this.addSection(this.togglers[i], this.elements[i]);
+		this.elements.each(function(el, i){
+			if (this.options.show === i){
+				this.fireEvent('active', [this.togglers[i], el]);
+			} else {
+				for (var fx in this.effects) el.setStyle(fx, 0);
+			}
+		}, this);
+		if ($chk(this.options.display) || this.options.initialDisplayFx === false) this.display(this.options.display, this.options.initialDisplayFx);
+		if (this.options.fixedHeight !== false) this.options.returnHeightToAuto = false;
+		this.addEvent('complete', this.internalChain.callChain.bind(this.internalChain));
+	},
+
+	addSection: function(toggler, element){
+		toggler = document.id(toggler);
+		element = document.id(element);
+		var test = this.togglers.contains(toggler);
+		this.togglers.include(toggler);
+		this.elements.include(element);
+		var idx = this.togglers.indexOf(toggler);
+		var displayer = this.display.bind(this, idx);
+		toggler.store('accordion:display', displayer);
+		toggler.addEvent(this.options.trigger, displayer);
+		if (this.options.height) element.setStyles({'padding-top': 0, 'border-top': 'none', 'padding-bottom': 0, 'border-bottom': 'none'});
+		if (this.options.width) element.setStyles({'padding-left': 0, 'border-left': 'none', 'padding-right': 0, 'border-right': 'none'});
+		element.fullOpacity = 1;
+		if (this.options.fixedWidth) element.fullWidth = this.options.fixedWidth;
+		if (this.options.fixedHeight) element.fullHeight = this.options.fixedHeight;
+		element.setStyle('overflow', 'hidden');
+		if (!test){
+			for (var fx in this.effects) element.setStyle(fx, 0);
+		}
+		return this;
+	},
+
+	removeSection: function(toggler, displayIndex) {
+		var idx = this.togglers.indexOf(toggler);
+		var element = this.elements[idx];
+		var remover = function(){
+			this.togglers.erase(toggler);
+			this.elements.erase(element);
+			this.detach(toggler);
+		}.bind(this);
+		if (this.now == idx || displayIndex != undefined) this.display($pick(displayIndex, idx - 1 >= 0 ? idx - 1 : 0)).chain(remover);
+		else remover();
+		return this;
+	},
+
+	detach: function(toggler){
+		var remove = function(toggler) {
+			toggler.removeEvent(this.options.trigger, toggler.retrieve('accordion:display'));
+		}.bind(this);
+		if (!toggler) this.togglers.each(remove);
+		else remove(toggler);
+		return this;
+	},
+
+	display: function(index, useFx){
+		if (!this.check(index, useFx)) return this;
+		useFx = $pick(useFx, true);
+		index = ($type(index) == 'element') ? this.elements.indexOf(index) : index;
+		if (index == this.previous && !this.options.alwaysHide) return this;
+		if (this.options.returnHeightToAuto){
+			var prev = this.elements[this.previous];
+			if (prev && !this.selfHidden){
+				for (var fx in this.effects){
+					prev.setStyle(fx, prev[this.effects[fx]]);
+				}
+			}
+		}
+		if ((this.timer && this.options.wait) || (index === this.previous && !this.options.alwaysHide)) return this;
+		this.previous = index;
+		var obj = {};
+		this.elements.each(function(el, i){
+			obj[i] = {};
+			var hide;
+			if (i != index){
+				hide = true;
+			} else if (this.options.alwaysHide && ((el.offsetHeight > 0 && this.options.height) || el.offsetWidth > 0 && this.options.width)){
+				hide = true;
+				this.selfHidden = true;
+			}
+			this.fireEvent(hide ? 'background' : 'active', [this.togglers[i], el]);
+			for (var fx in this.effects) obj[i][fx] = hide ? 0 : el[this.effects[fx]];
+		}, this);
+		this.internalChain.clearChain();
+		this.internalChain.chain(function(){
+			if (this.options.returnHeightToAuto && !this.selfHidden){
+				var el = this.elements[index];
+				if (el) el.setStyle('height', 'auto');
+			};
+		}.bind(this));
+		return useFx ? this.start(obj) : this.set(obj);
+	}
+
+});
+
+/*
+	Compatibility with 1.2.0
+*/
+var Accordion = new Class({
+
+	Extends: Fx.Accordion,
+
+	initialize: function(){
+		this.parent.apply(this, arguments);
+		var params = Array.link(arguments, {'container': Element.type});
+		this.container = params.container;
+	},
+
+	addSection: function(toggler, element, pos){
+		toggler = document.id(toggler);
+		element = document.id(element);
+		var test = this.togglers.contains(toggler);
+		var len = this.togglers.length;
+		if (len && (!test || pos)){
+			pos = $pick(pos, len - 1);
+			toggler.inject(this.togglers[pos], 'before');
+			element.inject(toggler, 'after');
+		} else if (this.container && !test){
+			toggler.inject(this.container);
+			element.inject(this.container);
+		}
+		return this.parent.apply(this, arguments);
+	}
+
+});
+
+/*
+---
+
+script: Fx.Move.js
+
+name: Fx.Move
+
+description: Defines Fx.Move, a class that works with Element.Position.js to transition an element from one location to another.
+
+license: MIT-style license
+
+authors:
+  - Aaron Newton
+
+requires:
+  - Core/Fx.Morph
+  - /Element.Position
+
+provides: [Fx.Move]
+
+...
+*/
+
+Fx.Move = new Class({
+
+	Extends: Fx.Morph,
+
+	options: {
+		relativeTo: document.body,
+		position: 'center',
+		edge: false,
+		offset: {x: 0, y: 0}
+	},
+
+	start: function(destination){
+		var element = this.element,
+			topLeft = element.getStyles('top', 'left');
+		if (topLeft.top == 'auto' || topLeft.left == 'auto'){
+			element.setPosition(element.getPosition(element.getOffsetParent()));
+		}
+		return this.parent(element.position($merge(this.options, destination, {returnPos: true})));
+	}
+
+});
+
+Element.Properties.move = {
+
+	set: function(options){
+		var morph = this.retrieve('move');
+		if (morph) morph.cancel();
+		return this.eliminate('move').store('move:options', $extend({link: 'cancel'}, options));
+	},
+
+	get: function(options){
+		if (options || !this.retrieve('move')){
+			if (options || !this.retrieve('move:options')) this.set('move', options);
+			this.store('move', new Fx.Move(this, this.retrieve('move:options')));
+		}
+		return this.retrieve('move');
+	}
+
+};
+
+Element.implement({
+
+	move: function(options){
+		this.get('move').start(options);
+		return this;
+	}
+
+});
+
+
+/*
+---
+
+script: Fx.Reveal.js
+
+name: Fx.Reveal
+
+description: Defines Fx.Reveal, a class that shows and hides elements with a transition.
+
+license: MIT-style license
+
+authors:
+  - Aaron Newton
+
+requires:
+  - Core/Fx.Morph
+  - /Element.Shortcuts
+  - /Element.Measure
+
+provides: [Fx.Reveal]
+
+...
+*/
+
+Fx.Reveal = new Class({
+
+	Extends: Fx.Morph,
+
+	options: {/*	  
+		onShow: $empty(thisElement),
+		onHide: $empty(thisElement),
+		onComplete: $empty(thisElement),
+		heightOverride: null,
+		widthOverride: null, */
+		link: 'cancel',
+		styles: ['padding', 'border', 'margin'],
+		transitionOpacity: !Browser.Engine.trident4,
+		mode: 'vertical',
+		display: function(){
+			return this.element.get('tag') != 'tr' ? 'block' : 'table-row';
+		},
+		hideInputs: Browser.Engine.trident ? 'select, input, textarea, object, embed' : false,
+		opacity: 1
+	},
+
+	dissolve: function(){
+		try {
+			if (!this.hiding && !this.showing){
+				if (this.element.getStyle('display') != 'none'){
+					this.hiding = true;
+					this.showing = false;
+					this.hidden = true;
+					this.cssText = this.element.style.cssText;
+					var startStyles = this.element.getComputedSize({
+						styles: this.options.styles,
+						mode: this.options.mode
+					});
+					this.element.setStyle('display', $lambda(this.options.display).apply(this));
+					if (this.options.transitionOpacity) startStyles.opacity = this.options.opacity;
+					var zero = {};
+					$each(startStyles, function(style, name){
+						zero[name] = [style, 0];
+					}, this);
+					this.element.setStyle('overflow', 'hidden');
+					var hideThese = this.options.hideInputs ? this.element.getElements(this.options.hideInputs) : null;
+					this.$chain.unshift(function(){
+						if (this.hidden){
+							this.hiding = false;
+							$each(startStyles, function(style, name){
+								startStyles[name] = style;
+							}, this);
+							this.element.style.cssText = this.cssText;
+							this.element.setStyle('display', 'none');
+							if (hideThese) hideThese.setStyle('visibility', 'visible');
+						}
+						this.fireEvent('hide', this.element);
+						this.callChain();
+					}.bind(this));
+					if (hideThese) hideThese.setStyle('visibility', 'hidden');
+					this.start(zero);
+				} else {
+					this.callChain.delay(10, this);
+					this.fireEvent('complete', this.element);
+					this.fireEvent('hide', this.element);
+				}
+			} else if (this.options.link == 'chain'){
+				this.chain(this.dissolve.bind(this));
+			} else if (this.options.link == 'cancel' && !this.hiding){
+				this.cancel();
+				this.dissolve();
+			}
+		} catch(e){
+			this.hiding = false;
+			this.element.setStyle('display', 'none');
+			this.callChain.delay(10, this);
+			this.fireEvent('complete', this.element);
+			this.fireEvent('hide', this.element);
+		}
+		return this;
+	},
+
+	reveal: function(){
+		try {
+			if (!this.showing && !this.hiding){
+				if (this.element.getStyle('display') == 'none'){
+					this.showing = true;
+					this.hiding = this.hidden =  false;
+					var startStyles;
+					this.cssText = this.element.style.cssText;
+					//toggle display, but hide it
+					this.element.measure(function(){
+						//create the styles for the opened/visible state
+						startStyles = this.element.getComputedSize({
+							styles: this.options.styles,
+							mode: this.options.mode
+						});
+					}.bind(this));
+					$each(startStyles, function(style, name){
+						startStyles[name] = style;
+					});
+					//if we're overridding height/width
+					if ($chk(this.options.heightOverride)) startStyles.height = this.options.heightOverride.toInt();
+					if ($chk(this.options.widthOverride)) startStyles.width = this.options.widthOverride.toInt();
+					if (this.options.transitionOpacity) {
+						this.element.setStyle('opacity', 0);
+						startStyles.opacity = this.options.opacity;
+					}
+					//create the zero state for the beginning of the transition
+					var zero = {
+						height: 0,
+						display: $lambda(this.options.display).apply(this)
+					};
+					$each(startStyles, function(style, name){ zero[name] = 0; });
+					//set to zero
+					this.element.setStyles($merge(zero, {overflow: 'hidden'}));
+					//hide inputs
+					var hideThese = this.options.hideInputs ? this.element.getElements(this.options.hideInputs) : null;
+					if (hideThese) hideThese.setStyle('visibility', 'hidden');
+					//start the effect
+					this.start(startStyles);
+					this.$chain.unshift(function(){
+						this.element.style.cssText = this.cssText;
+						this.element.setStyle('display', $lambda(this.options.display).apply(this));
+						if (!this.hidden) this.showing = false;
+						if (hideThese) hideThese.setStyle('visibility', 'visible');
+						this.callChain();
+						this.fireEvent('show', this.element);
+					}.bind(this));
+				} else {
+					this.callChain();
+					this.fireEvent('complete', this.element);
+					this.fireEvent('show', this.element);
+				}
+			} else if (this.options.link == 'chain'){
+				this.chain(this.reveal.bind(this));
+			} else if (this.options.link == 'cancel' && !this.showing){
+				this.cancel();
+				this.reveal();
+			}
+		} catch(e){
+			this.element.setStyles({
+				display: $lambda(this.options.display).apply(this),
+				visiblity: 'visible',
+				opacity: this.options.opacity
+			});
+			this.showing = false;
+			this.callChain.delay(10, this);
+			this.fireEvent('complete', this.element);
+			this.fireEvent('show', this.element);
+		}
+		return this;
+	},
+
+	toggle: function(){
+		if (this.element.getStyle('display') == 'none'){
+			this.reveal();
+		} else {
+			this.dissolve();
+		}
+		return this;
+	},
+
+	cancel: function(){
+		this.parent.apply(this, arguments);
+		this.element.style.cssText = this.cssText;
+		this.hiding = false;
+		this.showing = false;
+		return this;
+	}
+
+});
+
+Element.Properties.reveal = {
+
+	set: function(options){
+		var reveal = this.retrieve('reveal');
+		if (reveal) reveal.cancel();
+		return this.eliminate('reveal').store('reveal:options', options);
+	},
+
+	get: function(options){
+		if (options || !this.retrieve('reveal')){
+			if (options || !this.retrieve('reveal:options')) this.set('reveal', options);
+			this.store('reveal', new Fx.Reveal(this, this.retrieve('reveal:options')));
+		}
+		return this.retrieve('reveal');
+	}
+
+};
+
+Element.Properties.dissolve = Element.Properties.reveal;
+
+Element.implement({
+
+	reveal: function(options){
+		this.get('reveal', options).reveal();
+		return this;
+	},
+
+	dissolve: function(options){
+		this.get('reveal', options).dissolve();
+		return this;
+	},
+
+	nix: function(){
+		var params = Array.link(arguments, {destroy: Boolean.type, options: Object.type});
+		this.get('reveal', params.options).dissolve().chain(function(){
+			this[params.destroy ? 'destroy' : 'dispose']();
+		}.bind(this));
+		return this;
+	},
+
+	wink: function(){
+		var params = Array.link(arguments, {duration: Number.type, options: Object.type});
+		var reveal = this.get('reveal', params.options);
+		reveal.reveal().chain(function(){
+			(function(){
+				reveal.dissolve();
+			}).delay(params.duration || 2000);
+		});
+	}
+
+
+});
+
+/*
+---
+
+script: Fx.Scroll.js
+
+name: Fx.Scroll
+
+description: Effect to smoothly scroll any element, including the window.
+
+license: MIT-style license
+
+authors:
+  - Valerio Proietti
+
+requires:
+  - Core/Fx
+  - Core/Element.Event
+  - Core/Element.Dimensions
+  - /MooTools.More
+
+provides: [Fx.Scroll]
+
+...
+*/
+
+Fx.Scroll = new Class({
+
+	Extends: Fx,
+
+	options: {
+		offset: {x: 0, y: 0},
+		wheelStops: true
+	},
+
+	initialize: function(element, options){
+		this.element = this.subject = document.id(element);
+		this.parent(options);
+		var cancel = this.cancel.bind(this, false);
+
+		if ($type(this.element) != 'element') this.element = document.id(this.element.getDocument().body);
+
+		var stopper = this.element;
+
+		if (this.options.wheelStops){
+			this.addEvent('start', function(){
+				stopper.addEvent('mousewheel', cancel);
+			}, true);
+			this.addEvent('complete', function(){
+				stopper.removeEvent('mousewheel', cancel);
+			}, true);
+		}
+	},
+
+	set: function(){
+		var now = Array.flatten(arguments);
+		if (Browser.Engine.gecko) now = [Math.round(now[0]), Math.round(now[1])];
+		this.element.scrollTo(now[0] + this.options.offset.x, now[1] + this.options.offset.y);
+	},
+
+	compute: function(from, to, delta){
+		return [0, 1].map(function(i){
+			return Fx.compute(from[i], to[i], delta);
+		});
+	},
+
+	start: function(x, y){
+		if (!this.check(x, y)) return this;
+		var scrollSize = this.element.getScrollSize(),
+			scroll = this.element.getScroll(), 
+			values = {x: x, y: y};
+		for (var z in values){
+			var max = scrollSize[z];
+			if ($chk(values[z])) values[z] = ($type(values[z]) == 'number') ? values[z] : max;
+			else values[z] = scroll[z];
+			values[z] += this.options.offset[z];
+		}
+		return this.parent([scroll.x, scroll.y], [values.x, values.y]);
+	},
+
+	toTop: function(){
+		return this.start(false, 0);
+	},
+
+	toLeft: function(){
+		return this.start(0, false);
+	},
+
+	toRight: function(){
+		return this.start('right', false);
+	},
+
+	toBottom: function(){
+		return this.start(false, 'bottom');
+	},
+
+	toElement: function(el){
+		var position = document.id(el).getPosition(this.element);
+		return this.start(position.x, position.y);
+	},
+
+	scrollIntoView: function(el, axes, offset){
+		axes = axes ? $splat(axes) : ['x','y'];
+		var to = {};
+		el = document.id(el);
+		var pos = el.getPosition(this.element);
+		var size = el.getSize();
+		var scroll = this.element.getScroll();
+		var containerSize = this.element.getSize();
+		var edge = {
+			x: pos.x + size.x,
+			y: pos.y + size.y
+		};
+		['x','y'].each(function(axis) {
+			if (axes.contains(axis)) {
+				if (edge[axis] > scroll[axis] + containerSize[axis]) to[axis] = edge[axis] - containerSize[axis];
+				if (pos[axis] < scroll[axis]) to[axis] = pos[axis];
+			}
+			if (to[axis] == null) to[axis] = scroll[axis];
+			if (offset && offset[axis]) to[axis] = to[axis] + offset[axis];
+		}, this);
+		if (to.x != scroll.x || to.y != scroll.y) this.start(to.x, to.y);
+		return this;
+	},
+
+	scrollToCenter: function(el, axes, offset){
+		axes = axes ? $splat(axes) : ['x', 'y'];
+		el = $(el);
+		var to = {},
+			pos = el.getPosition(this.element),
+			size = el.getSize(),
+			scroll = this.element.getScroll(),
+			containerSize = this.element.getSize(),
+			edge = {
+				x: pos.x + size.x,
+				y: pos.y + size.y
+			};
+
+		['x','y'].each(function(axis){
+			if(axes.contains(axis)){
+				to[axis] = pos[axis] - (containerSize[axis] - size[axis])/2;
+			}
+			if(to[axis] == null) to[axis] = scroll[axis];
+			if(offset && offset[axis]) to[axis] = to[axis] + offset[axis];
+		}, this);
+		if (to.x != scroll.x || to.y != scroll.y) this.start(to.x, to.y);
+		return this;
+	}
+
+});
+
+
+/*
+---
+
+script: Fx.Slide.js
+
+name: Fx.Slide
+
+description: Effect to slide an element in and out of view.
+
+license: MIT-style license
+
+authors:
+  - Valerio Proietti
+
+requires:
+  - Core/Fx
+  - Core/Element.Style
+  - /MooTools.More
+
+provides: [Fx.Slide]
+
+...
+*/
+
+Fx.Slide = new Class({
+
+	Extends: Fx,
+
+	options: {
+		mode: 'vertical',
+		wrapper: false,
+		hideOverflow: true,
+		resetHeight: false
+	},
+
+	initialize: function(element, options){
+		this.addEvent('complete', function(){
+			this.open = (this.wrapper['offset' + this.layout.capitalize()] != 0);
+			if (this.open && this.options.resetHeight) this.wrapper.setStyle('height', '');
+			if (this.open && Browser.Engine.webkit419) this.element.dispose().inject(this.wrapper);
+		}, true);
+		this.element = this.subject = document.id(element);
+		this.parent(options);
+		var wrapper = this.element.retrieve('wrapper');
+		var styles = this.element.getStyles('margin', 'position', 'overflow');
+		if (this.options.hideOverflow) styles = $extend(styles, {overflow: 'hidden'});
+		if (this.options.wrapper) wrapper = document.id(this.options.wrapper).setStyles(styles);
+		this.wrapper = wrapper || new Element('div', {
+			styles: styles
+		}).wraps(this.element);
+		this.element.store('wrapper', this.wrapper).setStyle('margin', 0);
+		this.now = [];
+		this.open = true;
+	},
+
+	vertical: function(){
+		this.margin = 'margin-top';
+		this.layout = 'height';
+		this.offset = this.element.offsetHeight;
+	},
+
+	horizontal: function(){
+		this.margin = 'margin-left';
+		this.layout = 'width';
+		this.offset = this.element.offsetWidth;
+	},
+
+	set: function(now){
+		this.element.setStyle(this.margin, now[0]);
+		this.wrapper.setStyle(this.layout, now[1]);
+		return this;
+	},
+
+	compute: function(from, to, delta){
+		return [0, 1].map(function(i){
+			return Fx.compute(from[i], to[i], delta);
+		});
+	},
+
+	start: function(how, mode){
+		if (!this.check(how, mode)) return this;
+		this[mode || this.options.mode]();
+		var margin = this.element.getStyle(this.margin).toInt();
+		var layout = this.wrapper.getStyle(this.layout).toInt();
+		var caseIn = [[margin, layout], [0, this.offset]];
+		var caseOut = [[margin, layout], [-this.offset, 0]];
+		var start;
+		switch (how){
+			case 'in': start = caseIn; break;
+			case 'out': start = caseOut; break;
+			case 'toggle': start = (layout == 0) ? caseIn : caseOut;
+		}
+		return this.parent(start[0], start[1]);
+	},
+
+	slideIn: function(mode){
+		return this.start('in', mode);
+	},
+
+	slideOut: function(mode){
+		return this.start('out', mode);
+	},
+
+	hide: function(mode){
+		this[mode || this.options.mode]();
+		this.open = false;
+		return this.set([-this.offset, 0]);
+	},
+
+	show: function(mode){
+		this[mode || this.options.mode]();
+		this.open = true;
+		return this.set([0, this.offset]);
+	},
+
+	toggle: function(mode){
+		return this.start('toggle', mode);
+	}
+
+});
+
+Element.Properties.slide = {
+
+	set: function(options){
+		var slide = this.retrieve('slide');
+		if (slide) slide.cancel();
+		return this.eliminate('slide').store('slide:options', $extend({link: 'cancel'}, options));
+	},
+
+	get: function(options){
+		if (options || !this.retrieve('slide')){
+			if (options || !this.retrieve('slide:options')) this.set('slide', options);
+			this.store('slide', new Fx.Slide(this, this.retrieve('slide:options')));
+		}
+		return this.retrieve('slide');
+	}
+
+};
+
+Element.implement({
+
+	slide: function(how, mode){
+		how = how || 'toggle';
+		var slide = this.get('slide'), toggle;
+		switch (how){
+			case 'hide': slide.hide(mode); break;
+			case 'show': slide.show(mode); break;
+			case 'toggle':
+				var flag = this.retrieve('slide:flag', slide.open);
+				slide[flag ? 'slideOut' : 'slideIn'](mode);
+				this.store('slide:flag', !flag);
+				toggle = true;
+			break;
+			default: slide.start(how, mode);
+		}
+		if (!toggle) this.eliminate('slide:flag');
+		return this;
+	}
+
+});
+
+
+/*
+---
+
+script: Fx.SmoothScroll.js
+
+name: Fx.SmoothScroll
+
+description: Class for creating a smooth scrolling effect to all internal links on the page.
+
+license: MIT-style license
+
+authors:
+  - Valerio Proietti
+
+requires:
+  - Core/Selectors
+  - /Fx.Scroll
+
+provides: [Fx.SmoothScroll]
+
+...
+*/
+
+var SmoothScroll = Fx.SmoothScroll = new Class({
+
+	Extends: Fx.Scroll,
+
+	initialize: function(options, context){
+		context = context || document;
+		this.doc = context.getDocument();
+		var win = context.getWindow();
+		this.parent(this.doc, options);
+		this.links = $$(this.options.links || this.doc.links);
+		var location = win.location.href.match(/^[^#]*/)[0] + '#';
+		this.links.each(function(link){
+			if (link.href.indexOf(location) != 0) {return;}
+			var anchor = link.href.substr(location.length);
+			if (anchor) this.useLink(link, anchor);
+		}, this);
+		if (!Browser.Engine.webkit419) {
+			this.addEvent('complete', function(){
+				win.location.hash = this.anchor;
+			}, true);
+		}
+	},
+
+	useLink: function(link, anchor){
+		var el;
+		link.addEvent('click', function(event){
+			if (el !== false && !el) el = document.id(anchor) || this.doc.getElement('a[name=' + anchor + ']');
+			if (el) {
+				event.preventDefault();
+				this.anchor = anchor;
+				this.toElement(el).chain(function(){
+					this.fireEvent('scrolledTo', [link, el]);
+				}.bind(this));
+				link.blur();
+			}
+		}.bind(this));
+	}
+});
+
+/*
+---
+
+script: Fx.Sort.js
+
+name: Fx.Sort
+
+description: Defines Fx.Sort, a class that reorders lists with a transition.
+
+license: MIT-style license
+
+authors:
+  - Aaron Newton
+
+requires:
+  - Core/Element.Dimensions
+  - /Fx.Elements
+  - /Element.Measure
+
+provides: [Fx.Sort]
+
+...
+*/
+
+Fx.Sort = new Class({
+
+	Extends: Fx.Elements,
+
+	options: {
+		mode: 'vertical'
+	},
+
+	initialize: function(elements, options){
+		this.parent(elements, options);
+		this.elements.each(function(el){
+			if (el.getStyle('position') == 'static') el.setStyle('position', 'relative');
+		});
+		this.setDefaultOrder();
+	},
+
+	setDefaultOrder: function(){
+		this.currentOrder = this.elements.map(function(el, index){
+			return index;
+		});
+	},
+
+	sort: function(newOrder){
+		if ($type(newOrder) != 'array') return false;
+		var top = 0,
+			left = 0,
+			next = {},
+			zero = {},
+			vert = this.options.mode == 'vertical';
+		var current = this.elements.map(function(el, index){
+			var size = el.getComputedSize({styles: ['border', 'padding', 'margin']});
+			var val;
+			if (vert){
+				val = {
+					top: top,
+					margin: size['margin-top'],
+					height: size.totalHeight
+				};
+				top += val.height - size['margin-top'];
+			} else {
+				val = {
+					left: left,
+					margin: size['margin-left'],
+					width: size.totalWidth
+				};
+				left += val.width;
+			}
+			var plane = vert ? 'top' : 'left';
+			zero[index] = {};
+			var start = el.getStyle(plane).toInt();
+			zero[index][plane] = start || 0;
+			return val;
+		}, this);
+		this.set(zero);
+		newOrder = newOrder.map(function(i){ return i.toInt(); });
+		if (newOrder.length != this.elements.length){
+			this.currentOrder.each(function(index){
+				if (!newOrder.contains(index)) newOrder.push(index);
+			});
+			if (newOrder.length > this.elements.length)
+				newOrder.splice(this.elements.length-1, newOrder.length - this.elements.length);
+		}
+		var margin = top = left = 0;
+		newOrder.each(function(item, index){
+			var newPos = {};
+			if (vert){
+				newPos.top = top - current[item].top - margin;
+				top += current[item].height;
+			} else {
+				newPos.left = left - current[item].left;
+				left += current[item].width;
+			}
+			margin = margin + current[item].margin;
+			next[item]=newPos;
+		}, this);
+		var mapped = {};
+		$A(newOrder).sort().each(function(index){
+			mapped[index] = next[index];
+		});
+		this.start(mapped);
+		this.currentOrder = newOrder;
+		return this;
+	},
+
+	rearrangeDOM: function(newOrder){
+		newOrder = newOrder || this.currentOrder;
+		var parent = this.elements[0].getParent();
+		var rearranged = [];
+		this.elements.setStyle('opacity', 0);
+		//move each element and store the new default order
+		newOrder.each(function(index){
+			rearranged.push(this.elements[index].inject(parent).setStyles({
+				top: 0,
+				left: 0
+			}));
+		}, this);
+		this.elements.setStyle('opacity', 1);
+		this.elements = $$(rearranged);
+		this.setDefaultOrder();
+		return this;
+	},
+
+	getDefaultOrder: function(){
+		return this.elements.map(function(el, index){
+			return index;
+		});
+	},
+
+	forward: function(){
+		return this.sort(this.getDefaultOrder());
+	},
+
+	backward: function(){
+		return this.sort(this.getDefaultOrder().reverse());
+	},
+
+	reverse: function(){
+		return this.sort(this.currentOrder.reverse());
+	},
+
+	sortByElements: function(elements){
+		return this.sort(elements.map(function(el){
+			return this.elements.indexOf(el);
+		}, this));
+	},
+
+	swap: function(one, two){
+		if ($type(one) == 'element') one = this.elements.indexOf(one);
+		if ($type(two) == 'element') two = this.elements.indexOf(two);
+		
+		var newOrder = $A(this.currentOrder);
+		newOrder[this.currentOrder.indexOf(one)] = two;
+		newOrder[this.currentOrder.indexOf(two)] = one;
+		return this.sort(newOrder);
+	}
+
+});
+
+/*
+---
+
+script: Request.JSONP.js
+
+name: Request.JSONP
+
+description: Defines Request.JSONP, a class for cross domain javascript via script injection.
+
+license: MIT-style license
+
+authors:
+  - Aaron Newton
+  - Guillermo Rauch
+
+requires:
+  - Core/Element
+  - Core/Request
+  - /Log
+
+provides: [Request.JSONP]
+
+...
+*/
+
+Request.JSONP = new Class({
+
+	Implements: [Chain, Events, Options, Log],
+
+	options: {/*
+		onRetry: $empty(intRetries),
+		onRequest: $empty(scriptElement),
+		onComplete: $empty(data),
+		onSuccess: $empty(data),
+		onCancel: $empty(),
+		log: false,
+		*/
+		url: '',
+		data: {},
+		retries: 0,
+		timeout: 0,
+		link: 'ignore',
+		callbackKey: 'callback',
+		injectScript: document.head
+	},
+
+	initialize: function(options){
+		this.setOptions(options);
+		if (this.options.log) this.enableLog();
+		this.running = false;
+		this.requests = 0;
+		this.triesRemaining = [];
+	},
+
+	check: function(){
+		if (!this.running) return true;
+		switch (this.options.link){
+			case 'cancel': this.cancel(); return true;
+			case 'chain': this.chain(this.caller.bind(this, arguments)); return false;
+		}
+		return false;
+	},
+
+	send: function(options){
+		if (!$chk(arguments[1]) && !this.check(options)) return this;
+
+		var type = $type(options), 
+				old = this.options, 
+				index = $chk(arguments[1]) ? arguments[1] : this.requests++;
+		if (type == 'string' || type == 'element') options = {data: options};
+
+		options = $extend({data: old.data, url: old.url}, options);
+
+		if (!$chk(this.triesRemaining[index])) this.triesRemaining[index] = this.options.retries;
+		var remaining = this.triesRemaining[index];
+
+		(function(){
+			var script = this.getScript(options);
+			this.log('JSONP retrieving script with url: ' + script.get('src'));
+			this.fireEvent('request', script);
+			this.running = true;
+
+			(function(){
+				if (remaining){
+					this.triesRemaining[index] = remaining - 1;
+					if (script){
+						script.destroy();
+						this.send(options, index).fireEvent('retry', this.triesRemaining[index]);
+					}
+				} else if(this.running && script && this.options.timeout){
+					script.destroy();
+					this.cancel().fireEvent('failure');
+				}
+			}).delay(this.options.timeout, this);
+		}).delay(Browser.Engine.trident ? 50 : 0, this);
+		return this;
+	},
+
+	cancel: function(){
+		if (!this.running) return this;
+		this.running = false;
+		this.fireEvent('cancel');
+		return this;
+	},
+
+	getScript: function(options){
+		var index = Request.JSONP.counter,
+				data;
+		Request.JSONP.counter++;
+
+		switch ($type(options.data)){
+			case 'element': data = document.id(options.data).toQueryString(); break;
+			case 'object': case 'hash': data = Hash.toQueryString(options.data);
+		}
+
+		var src = options.url + 
+			 (options.url.test('\\?') ? '&' :'?') + 
+			 (options.callbackKey || this.options.callbackKey) + 
+			 '=Request.JSONP.request_map.request_'+ index + 
+			 (data ? '&' + data : '');
+		if (src.length > 2083) this.log('JSONP '+ src +' will fail in Internet Explorer, which enforces a 2083 bytes length limit on URIs');
+
+		var script = new Element('script', {type: 'text/javascript', src: src});
+		Request.JSONP.request_map['request_' + index] = function(){ this.success(arguments, script); }.bind(this);
+		return script.inject(this.options.injectScript);
+	},
+
+	success: function(args, script){
+		if (!this.running) return false;
+		if (script) script.destroy();
+		this.running = false;
+		this.log('JSONP successfully retrieved: ', args);
+		this.fireEvent('complete', args).fireEvent('success', args).callChain();
+	}
+
+});
+
+Request.JSONP.counter = 0;
+Request.JSONP.request_map = {};
+
+
+/*
+---
+
+script: Form.Validator.Swedish.js
+
+name: Form.Validator.Swedish
+
+description: Form Validator messages for Swedish.
+
+license: MIT-style license
+
+authors:
+  - Martin Lundgren
+
+requires:
+  - /Lang
+
+provides: [Form.Validator.Swedish]
+
+...
+*/
+
+MooTools.lang.set('sv-SE', 'Form.Validator', {
+
+	required: 'Fältet är obligatoriskt.',
+	minLength: 'Ange minst {minLength} tecken (du angav {length} tecken).',
+	maxLength: 'Ange högst {maxLength} tecken (du angav {length} tecken). ',
+	integer: 'Ange ett heltal i fältet. Tal med decimaler (t.ex. 1,25) är inte tillåtna.',
+	numeric: 'Ange endast numeriska värden i detta fält (t.ex. "1" eller "1.1" eller "-1" eller "-1,1").',
+	digits: 'Använd endast siffror och skiljetecken i detta fält (till exempel ett telefonnummer med bindestreck tillåtet).',
+	alpha: 'Använd endast bokstäver (a-ö) i detta fält. Inga mellanslag eller andra tecken är tillåtna.',
+	alphanum: 'Använd endast bokstäver (a-ö) och siffror (0-9) i detta fält. Inga mellanslag eller andra tecken är tillåtna.',
+	dateSuchAs: 'Ange ett giltigt datum som t.ex. {date}',
+	dateInFormatMDY: 'Ange ett giltigt datum som t.ex. YYYY-MM-DD (i.e. "1999-12-31")',
+	email: 'Ange en giltig e-postadress. Till exempel "erik@domain.com".',
+	url: 'Ange en giltig webbadress som http://www.google.com.',
+	currencyDollar: 'Ange en giltig belopp. Exempelvis 100,00.',
+	oneRequired: 'Vänligen ange minst ett av dessa alternativ.',
+	errorPrefix: 'Fel: ',
+	warningPrefix: 'Varning: ',
+
+	// Form.Validator.Extras
+	noSpace: 'Det får inte finnas några mellanslag i detta fält.',
+	reqChkByNode: 'Inga objekt är valda.',
+	requiredChk: 'Detta är ett obligatoriskt fält.',
+	reqChkByName: 'Välj en {label}.',
+	match: 'Detta fält måste matcha {matchName}',
+	startDate: 'startdatumet',
+	endDate: 'slutdatum',
+	currendDate: 'dagens datum',
+	afterDate: 'Datumet bör vara samma eller senare än {label}.',
+	beforeDate: 'Datumet bör vara samma eller tidigare än {label}.',
+	startMonth: 'Välj en start månad',
+	sameMonth: 'Dessa två datum måste vara i samma månad - du måste ändra det ena eller det andra.'
+
+});
+
+
+/*
+---
+
+script: Form.Validator.Ukrainian.js
+
+name: Form.Validator.Ukrainian
+
+description: Form Validator messages in Ukrainian (utf-8).
+
+license: MIT-style license
+
+authors:
+  - Slik
+
+requires:
+  - /Lang
+
+provides: [Form.Validator.Ukrainian]
+
+...
+*/
+
+MooTools.lang.set('uk-UA', 'Form.Validator', {
+
+	required: 'Це поле повинне бути заповненим.',
+	minLength: 'Введіть хоча б {minLength} символів (Ви ввели {length}).',
+	maxLength: 'Кількість символів не може бути більше {maxLength} (Ви ввели {length}).',
+	integer: 'Введіть в це поле число. Дробові числа (наприклад 1.25) не дозволені.',
+	numeric: 'Введіть в це поле число (наприклад "1" або "1.1", або "-1", або "-1.1").',
+	digits: 'В цьому полі ви можете використовувати лише цифри і знаки пунктіації (наприклад, телефонний номер з знаками дефізу або з крапками).',
+	alpha: 'В цьому полі можна використовувати лише латинські літери (a-z). Пробіли і інші символи заборонені.',
+	alphanum: 'В цьому полі можна використовувати лише латинські літери (a-z) і цифри (0-9). Пробіли і інші символи заборонені.',
+	dateSuchAs: 'Введіть коректну дату {date}.',
+	dateInFormatMDY: 'Введіть дату в форматі ММ/ДД/РРРР (наприклад "12/31/2009").',
+	email: 'Введіть коректну адресу електронної пошти (наприклад "name@domain.com").',
+	url: 'Введіть коректне інтернет-посилання (наприклад http://www.google.com).',
+	currencyDollar: 'Введіть суму в доларах (наприклад "$100.00").',
+	oneRequired: 'Заповніть одне з полів.',
+	errorPrefix: 'Помилка: ',
+	warningPrefix: 'Увага: '
+
+});
Index: modules/uoa-validator-admin/trunk/src/main/webapp/jsps/fonts/YanoneKaffeesatz-Light-webfont.eot
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/trunk/src/main/webapp/jsps/fonts/YanoneKaffeesatz-Light-webfont.eot
===================================================================
--- modules/uoa-validator-admin/trunk/src/main/webapp/jsps/fonts/YanoneKaffeesatz-Light-webfont.eot	(nonexistent)
+++ modules/uoa-validator-admin/trunk/src/main/webapp/jsps/fonts/YanoneKaffeesatz-Light-webfont.eot	(revision 47450)

Property changes on: modules/uoa-validator-admin/trunk/src/main/webapp/jsps/fonts/YanoneKaffeesatz-Light-webfont.eot
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/trunk/src/main/webapp/jsps/fonts/maven_pro_regular-webfont.eot
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/trunk/src/main/webapp/jsps/fonts/maven_pro_regular-webfont.eot
===================================================================
--- modules/uoa-validator-admin/trunk/src/main/webapp/jsps/fonts/maven_pro_regular-webfont.eot	(nonexistent)
+++ modules/uoa-validator-admin/trunk/src/main/webapp/jsps/fonts/maven_pro_regular-webfont.eot	(revision 47450)

Property changes on: modules/uoa-validator-admin/trunk/src/main/webapp/jsps/fonts/maven_pro_regular-webfont.eot
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/trunk/src/main/webapp/jsps/corneeded.jsp
===================================================================
--- modules/uoa-validator-admin/trunk/src/main/webapp/jsps/corneeded.jsp	(nonexistent)
+++ modules/uoa-validator-admin/trunk/src/main/webapp/jsps/corneeded.jsp	(revision 47450)
@@ -0,0 +1,25 @@
+<%@ page contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<%@ taglib prefix="s" uri="/struts-tags"%>
+<html>
+<head>
+<link href="jsps/style.css" rel="stylesheet" type="text/css" media="screen" />
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title><s:text name="corneeded.title"/></title>
+</head>
+<body>
+<div id="wrapper">
+	<jsp:include page="menu.jsp"/>
+	<div id="page">
+	<div id="page-bgtop">
+		<div id="content">
+			<s:actionerror/>
+			<br>
+			<s:text name="corneeded.back"/>
+		</div>
+		<div style="clear: both;">&nbsp;</div>
+	</div>
+	</div>
+</div>
+</body>
+</html>
\ No newline at end of file
Index: modules/uoa-validator-admin/trunk/src/main/webapp/jsps/images/arrow_left.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/trunk/src/main/webapp/jsps/images/arrow_left.png
===================================================================
--- modules/uoa-validator-admin/trunk/src/main/webapp/jsps/images/arrow_left.png	(nonexistent)
+++ modules/uoa-validator-admin/trunk/src/main/webapp/jsps/images/arrow_left.png	(revision 47450)

Property changes on: modules/uoa-validator-admin/trunk/src/main/webapp/jsps/images/arrow_left.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/trunk/src/main/webapp/jsps/fonts/kreon-regular-webfont.ttf
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/trunk/src/main/webapp/jsps/fonts/kreon-regular-webfont.ttf
===================================================================
--- modules/uoa-validator-admin/trunk/src/main/webapp/jsps/fonts/kreon-regular-webfont.ttf	(nonexistent)
+++ modules/uoa-validator-admin/trunk/src/main/webapp/jsps/fonts/kreon-regular-webfont.ttf	(revision 47450)

Property changes on: modules/uoa-validator-admin/trunk/src/main/webapp/jsps/fonts/kreon-regular-webfont.ttf
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/trunk/src/main/webapp/jsps/images/icon_download.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/trunk/src/main/webapp/jsps/images/icon_download.png
===================================================================
--- modules/uoa-validator-admin/trunk/src/main/webapp/jsps/images/icon_download.png	(nonexistent)
+++ modules/uoa-validator-admin/trunk/src/main/webapp/jsps/images/icon_download.png	(revision 47450)

Property changes on: modules/uoa-validator-admin/trunk/src/main/webapp/jsps/images/icon_download.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/trunk/src/main/webapp/jsps/fonts/DroidSans-webfont.eot
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/trunk/src/main/webapp/jsps/fonts/DroidSans-webfont.eot
===================================================================
--- modules/uoa-validator-admin/trunk/src/main/webapp/jsps/fonts/DroidSans-webfont.eot	(nonexistent)
+++ modules/uoa-validator-admin/trunk/src/main/webapp/jsps/fonts/DroidSans-webfont.eot	(revision 47450)

Property changes on: modules/uoa-validator-admin/trunk/src/main/webapp/jsps/fonts/DroidSans-webfont.eot
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/trunk/src/main/webapp/jsps/images/list_checkbox.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/trunk/src/main/webapp/jsps/images/list_checkbox.png
===================================================================
--- modules/uoa-validator-admin/trunk/src/main/webapp/jsps/images/list_checkbox.png	(nonexistent)
+++ modules/uoa-validator-admin/trunk/src/main/webapp/jsps/images/list_checkbox.png	(revision 47450)

Property changes on: modules/uoa-validator-admin/trunk/src/main/webapp/jsps/images/list_checkbox.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/trunk/src/main/webapp/jsps/table-images/right.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/trunk/src/main/webapp/jsps/table-images/right.png
===================================================================
--- modules/uoa-validator-admin/trunk/src/main/webapp/jsps/table-images/right.png	(nonexistent)
+++ modules/uoa-validator-admin/trunk/src/main/webapp/jsps/table-images/right.png	(revision 47450)

Property changes on: modules/uoa-validator-admin/trunk/src/main/webapp/jsps/table-images/right.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/trunk/src/main/webapp/jsps/resetPassword.jsp
===================================================================
--- modules/uoa-validator-admin/trunk/src/main/webapp/jsps/resetPassword.jsp	(nonexistent)
+++ modules/uoa-validator-admin/trunk/src/main/webapp/jsps/resetPassword.jsp	(revision 47450)
@@ -0,0 +1,46 @@
+<%@ page contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<%@ taglib prefix="s" uri="/struts-tags"%>
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title><s:text name="forgotPassword.title"/></title>
+<link href="jsps/favicon.ico" rel="shortcut icon" type="image/x-icon" />
+<link href="jsps/style.css" rel="stylesheet" type="text/css" media="screen" />
+</head>
+<body>
+<div id="wrapper">
+	<jsp:include page="menu.jsp"/>
+	<div id="page">
+		<div id="page-bgtop">
+			<div id="middle">
+                <div class="middle-b">
+                    <div class="background">
+                        <div class="main">
+                        <div id="main_container" class="clearfix">
+                                <div id="mainmiddle" class="floatbox">
+                                <h2 class="title"><s:text name="forgotPassword.title"/></h2>
+                                <%--<p class="meta"><a href='<s:url value="/jsps/help.jsp#forgotPassword"/>' target="_blank"><s:text name="help"/></a></p>--%>
+                                <div class="entry">
+                                    <s:form action="resetPassword">
+                                    	<s:text name="resetPassword.securityCode.message" />
+                                        <s:textfield name="securityCode" key="resetPassword.securityCode"/>
+                                        <s:password name="password" key="registration.password"/>
+                                        <s:password name="repassword" key="registration.repassword"/>
+                                        <s:submit/>
+                                    </s:form>
+                                </div>
+								</div>
+                            </div>
+                        </div>
+                    </div>
+                </div>
+            </div>
+		</div>
+		  <div id="footer"> 
+           <jsp:include page="footer.jsp"/>
+        </div>
+	</div>
+</div>
+</body>
+</html>
\ No newline at end of file
Index: modules/uoa-validator-admin/trunk/src/main/webapp/jsps/table-images/pattern.gif
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/trunk/src/main/webapp/jsps/table-images/pattern.gif
===================================================================
--- modules/uoa-validator-admin/trunk/src/main/webapp/jsps/table-images/pattern.gif	(nonexistent)
+++ modules/uoa-validator-admin/trunk/src/main/webapp/jsps/table-images/pattern.gif	(revision 47450)

Property changes on: modules/uoa-validator-admin/trunk/src/main/webapp/jsps/table-images/pattern.gif
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/trunk/src/main/webapp/jsps/images/arrow_right.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/trunk/src/main/webapp/jsps/images/arrow_right.png
===================================================================
--- modules/uoa-validator-admin/trunk/src/main/webapp/jsps/images/arrow_right.png	(nonexistent)
+++ modules/uoa-validator-admin/trunk/src/main/webapp/jsps/images/arrow_right.png	(revision 47450)

Property changes on: modules/uoa-validator-admin/trunk/src/main/webapp/jsps/images/arrow_right.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/trunk/src/main/webapp/jsps/MenuMatic.css
===================================================================
--- modules/uoa-validator-admin/trunk/src/main/webapp/jsps/MenuMatic.css	(nonexistent)
+++ modules/uoa-validator-admin/trunk/src/main/webapp/jsps/MenuMatic.css	(revision 47450)
@@ -0,0 +1,125 @@
+/* Based partially on Matthew Carroll's keyboard accessible flavor of Suckerfish 
+ * Dropdowns by Patrick Griffiths and Dan Webb. 
+ * http://carroll.org.uk/sandbox/suckerfish/bones2.html
+ */
+
+/* ----[ LINKS ]----*/
+
+/* all menu links */
+#nav a, #subMenusContainer a{
+	text-decoration:none;
+	display:block;
+	padding:10px 20px;
+	background-color:#fff ;
+	-moz-border-radius: 7px;
+	-webkit-border-radius: 7px;
+}
+
+/* Just main menu links --[for non-javascript users this applies to submenu links as well]*/
+#nav a{
+	margin:0;
+	float:left;	
+}
+
+/* Just sub menu links */
+#subMenusContainer a, #nav li li a{
+	text-align:left;
+}
+
+/* All menu links on hover or focus */
+#nav a:hover, #nav a:focus, #subMenusContainer a:hover, #subMenusContainer a:focus, #nav a.mainMenuParentBtnFocused, #subMenusContainer a.subMenuParentBtnFocused{
+	background-color:#F6C739 ;
+	color:#FFF;
+}
+
+/* sub menu links on hover or focus */
+#subMenusContainer a:hover, 
+#subMenusContainer a:focus, 
+#nav a.mainMenuParentBtnFocused, 
+#subMenusContainer a.subMenuParentBtnFocused,
+#nav li a:hover,
+#nav li a:focus{
+	background-color:#F6C739 ;
+	color:#FFF;
+}
+
+/* Parent Sub Menu Links ---[javascript users only]*/
+.subMenuParentBtn{ 
+	background: url(../img/arrow_right.gif) right center no-repeat;  
+}
+
+/* Parent Sub Menu Links on hover or focus ---[javascript users only]*/
+.subMenuParentBtnFocused{ 
+	background: url(../img/arrow_right_over.gif) right center no-repeat;  
+}
+
+/* Parent Main Menu Links ---[javascript users only]*/
+.mainMenuParentBtn{	
+	 background: url(../img/arrow_down.gif) right center no-repeat; 
+}
+
+/* Parent Main Menu Links on hover or focus ---[javascript users only]*/
+.mainMenuParentBtnFocused{	
+	background: url(../img/arrow_down_over.gif) right center no-repeat; 
+}
+
+/* ----[ OLs ULs, LIs, and DIVs ]----*/
+
+/* Submenu Outer Wrapper - each submenu is inside a div with this class - javascript users only */
+.smOW{ 
+	display:none; 
+	position: absolute; 
+	overflow:hidden; 
+	/*the 2px left & right padding lets you have a 1px border 
+	  on the ul or ol inside since overflow is set to hidden*/
+	padding:0 2px;
+	margin:0 0 0 -2px;
+}
+
+
+/* All ULs and OLs */
+#nav, #nav ul, #nav ol, #subMenusContainer ul, #subMenusContainer ol { 
+	padding: 0;
+	margin: 0;
+	list-style: none;
+	line-height: 1em;
+}
+
+/* All submenu OLs and ULs */
+#nav ol, #nav ul, #subMenusContainer ul, #subMenusContainer ol {	
+	/*border around submenu goes here*/	 
+	background:#fff;	
+	border:1px solid #C3D46A;
+	left:0;
+}
+
+
+/* List items in main menu --[for non-javascript users this applies to submenus as well]  */
+#nav li { 
+	/*great place to use a background image as a divider*/
+	display:block;
+	list-style:none;
+	position:relative;
+	float:left;
+}
+
+#subMenusContainer li{
+	list-style: none;
+}
+
+/* main menu ul or ol elment */
+#nav{
+	display:block;
+	position: absolute;
+	list-style:none;
+	margin:0 0 0 0;
+	z-index:5;
+	top:15px;
+	left:50%;
+	text-align: center;
+	display:block;
+}
+
+#subMenusContainer{	display:block; 	position:absolute;	top:0;	left:0;	width:100%;	height:0;	overflow:visible;	z-index:1000000000; }
+
+
Index: modules/uoa-validator-admin/trunk/src/main/webapp/jsps/table-images/back.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/trunk/src/main/webapp/jsps/table-images/back.png
===================================================================
--- modules/uoa-validator-admin/trunk/src/main/webapp/jsps/table-images/back.png	(nonexistent)
+++ modules/uoa-validator-admin/trunk/src/main/webapp/jsps/table-images/back.png	(revision 47450)

Property changes on: modules/uoa-validator-admin/trunk/src/main/webapp/jsps/table-images/back.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/trunk/src/main/webapp/jsps/forgotPassword.jsp
===================================================================
--- modules/uoa-validator-admin/trunk/src/main/webapp/jsps/forgotPassword.jsp	(nonexistent)
+++ modules/uoa-validator-admin/trunk/src/main/webapp/jsps/forgotPassword.jsp	(revision 47450)
@@ -0,0 +1,43 @@
+<%@ page contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<%@ taglib prefix="s" uri="/struts-tags"%>
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title><s:text name="forgotPassword.title"/></title>
+<link href="jsps/favicon.ico" rel="shortcut icon" type="image/x-icon" />
+<link href="jsps/style.css" rel="stylesheet" type="text/css" media="screen" />
+</head>
+<body>
+<div id="wrapper">
+	<jsp:include page="menu.jsp"/>
+	<div id="page">
+        <div id="page-bgtop">
+             <div id="middle">
+                <div class="middle-b">
+                    <div class="background">
+                        <div id="main">
+                            <div id="main_container" class="clearfix">
+                                <div id="mainmiddle" class="floatbox">
+                                    <h1>Reset your password</h1>
+                                    <s:actionerror/>
+                                    <s:form action="sendPassword">
+                                        <s:textfield name="email" key="registration.email"/>
+                                        <s:submit/>
+                                    </s:form>
+                                    <s:text name="forgotPassword.message"/>
+                                </div>
+                            </div>
+                        </div>
+                    </div>
+                </div>
+            </div>
+        </div>
+        <!-- NMI This needs to be the same in all pages and the text is some properties file -->
+        <div id="footer"> 
+           <jsp:include page="footer.jsp"/>
+        </div>
+	</div>
+</div>
+</body>
+</html>
\ No newline at end of file
Index: modules/uoa-validator-admin/trunk/src/main/webapp/jsps/footer.jsp
===================================================================
--- modules/uoa-validator-admin/trunk/src/main/webapp/jsps/footer.jsp	(nonexistent)
+++ modules/uoa-validator-admin/trunk/src/main/webapp/jsps/footer.jsp	(revision 47450)
@@ -0,0 +1,7 @@
+<%@ taglib prefix="s" uri="/struts-tags"%>
+
+<div id="footer-bgcontent">
+	<p>
+		<s:text name="footer.text"/> 
+	</p>
+</div>
\ No newline at end of file
Index: modules/uoa-validator-admin/trunk/src/main/webapp/jsps/fonts/YanoneKaffeesatz-Light-webfont.woff
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/trunk/src/main/webapp/jsps/fonts/YanoneKaffeesatz-Light-webfont.woff
===================================================================
--- modules/uoa-validator-admin/trunk/src/main/webapp/jsps/fonts/YanoneKaffeesatz-Light-webfont.woff	(nonexistent)
+++ modules/uoa-validator-admin/trunk/src/main/webapp/jsps/fonts/YanoneKaffeesatz-Light-webfont.woff	(revision 47450)

Property changes on: modules/uoa-validator-admin/trunk/src/main/webapp/jsps/fonts/YanoneKaffeesatz-Light-webfont.woff
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/trunk/src/main/webapp/jsps/fonts/kreon-regular-webfont.eot
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/trunk/src/main/webapp/jsps/fonts/kreon-regular-webfont.eot
===================================================================
--- modules/uoa-validator-admin/trunk/src/main/webapp/jsps/fonts/kreon-regular-webfont.eot	(nonexistent)
+++ modules/uoa-validator-admin/trunk/src/main/webapp/jsps/fonts/kreon-regular-webfont.eot	(revision 47450)

Property changes on: modules/uoa-validator-admin/trunk/src/main/webapp/jsps/fonts/kreon-regular-webfont.eot
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/trunk/src/main/webapp/jsps/table-images/patternb-head.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/trunk/src/main/webapp/jsps/table-images/patternb-head.png
===================================================================
--- modules/uoa-validator-admin/trunk/src/main/webapp/jsps/table-images/patternb-head.png	(nonexistent)
+++ modules/uoa-validator-admin/trunk/src/main/webapp/jsps/table-images/patternb-head.png	(revision 47450)

Property changes on: modules/uoa-validator-admin/trunk/src/main/webapp/jsps/table-images/patternb-head.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/trunk/src/main/webapp/jsps/table-images/patternb.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/trunk/src/main/webapp/jsps/table-images/patternb.png
===================================================================
--- modules/uoa-validator-admin/trunk/src/main/webapp/jsps/table-images/patternb.png	(nonexistent)
+++ modules/uoa-validator-admin/trunk/src/main/webapp/jsps/table-images/patternb.png	(revision 47450)

Property changes on: modules/uoa-validator-admin/trunk/src/main/webapp/jsps/table-images/patternb.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/trunk/src/main/webapp/jsps/table-images/botright.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/trunk/src/main/webapp/jsps/table-images/botright.png
===================================================================
--- modules/uoa-validator-admin/trunk/src/main/webapp/jsps/table-images/botright.png	(nonexistent)
+++ modules/uoa-validator-admin/trunk/src/main/webapp/jsps/table-images/botright.png	(revision 47450)

Property changes on: modules/uoa-validator-admin/trunk/src/main/webapp/jsps/table-images/botright.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/trunk/src/main/webapp/jsps/table-images/left.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/trunk/src/main/webapp/jsps/table-images/left.png
===================================================================
--- modules/uoa-validator-admin/trunk/src/main/webapp/jsps/table-images/left.png	(nonexistent)
+++ modules/uoa-validator-admin/trunk/src/main/webapp/jsps/table-images/left.png	(revision 47450)

Property changes on: modules/uoa-validator-admin/trunk/src/main/webapp/jsps/table-images/left.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/trunk/src/main/webapp/jsps/manuals/favicon.ico
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/trunk/src/main/webapp/jsps/manuals/favicon.ico
===================================================================
--- modules/uoa-validator-admin/trunk/src/main/webapp/jsps/manuals/favicon.ico	(nonexistent)
+++ modules/uoa-validator-admin/trunk/src/main/webapp/jsps/manuals/favicon.ico	(revision 47450)

Property changes on: modules/uoa-validator-admin/trunk/src/main/webapp/jsps/manuals/favicon.ico
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/trunk/src/main/webapp/jsps/images/wrong.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/trunk/src/main/webapp/jsps/images/wrong.png
===================================================================
--- modules/uoa-validator-admin/trunk/src/main/webapp/jsps/images/wrong.png	(nonexistent)
+++ modules/uoa-validator-admin/trunk/src/main/webapp/jsps/images/wrong.png	(revision 47450)

Property changes on: modules/uoa-validator-admin/trunk/src/main/webapp/jsps/images/wrong.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/trunk/src/main/webapp/jsps/manuals/administrator-manual.pdf
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/trunk/src/main/webapp/jsps/manuals/administrator-manual.pdf
===================================================================
--- modules/uoa-validator-admin/trunk/src/main/webapp/jsps/manuals/administrator-manual.pdf	(nonexistent)
+++ modules/uoa-validator-admin/trunk/src/main/webapp/jsps/manuals/administrator-manual.pdf	(revision 47450)

Property changes on: modules/uoa-validator-admin/trunk/src/main/webapp/jsps/manuals/administrator-manual.pdf
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/trunk/src/main/webapp/WEB-INF/web.xml
===================================================================
--- modules/uoa-validator-admin/trunk/src/main/webapp/WEB-INF/web.xml	(nonexistent)
+++ modules/uoa-validator-admin/trunk/src/main/webapp/WEB-INF/web.xml	(revision 47450)
@@ -0,0 +1,78 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+	xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
+	xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
+	id="WebApp_ID" version="2.5">
+	<display-name>Validator Administration Panel</display-name>
+
+	<context-param>
+		<param-name>log4jConfigLocation</param-name>
+		<param-value>/WEB-INF/log4j.properties
+		</param-value>
+	</context-param>
+	<context-param>
+		<param-name>log4jRefreshInterval</param-name>
+		<param-value>1000</param-value>
+	</context-param>
+	<context-param>
+		<param-name>log4jExposeWebAppRoot</param-name>
+		<param-value>false</param-value>
+	</context-param>
+	<listener>
+		<listener-class>org.springframework.web.util.Log4jConfigListener</listener-class>
+	</listener>
+	<listener>
+		<listener-class>eu.dnetlib.validator.admin.config.ValidatorAdminContextLoaderListener</listener-class>
+	</listener>
+	<filter>
+	  <filter-name>struts2</filter-name>
+	  <filter-class>
+	    org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter
+	  </filter-class>
+	</filter>
+  
+	<filter-mapping>
+		<filter-name>struts2</filter-name>
+		<url-pattern>/*</url-pattern>
+	</filter-mapping>
+
+	<filter>
+	  <filter-name>CharacterEncodingFilter</filter-name>
+	  <filter-class>
+	    org.apache.catalina.filters.SetCharacterEncodingFilter
+	  </filter-class>
+	  <init-param>
+	    <param-name>encoding</param-name>
+	    <param-value>UTF-8</param-value>
+	  </init-param>
+	  <init-param>
+	    <param-name>ignore</param-name>
+	    <param-value>true</param-value>
+	  </init-param>
+	  
+	</filter>
+		<filter-mapping>
+	  <filter-name>CharacterEncodingFilter</filter-name>
+	  <url-pattern>/*</url-pattern>
+	</filter-mapping>
+	
+	<filter>
+	  <filter-name>AddDefaultCharsetFilter</filter-name>
+	  <filter-class>
+	    org.apache.catalina.filters.AddDefaultCharsetFilter
+	  </filter-class>
+	  <init-param>
+	    <param-name>encoding</param-name>
+	    <param-value>system</param-value>
+	  </init-param>
+	</filter>
+
+	<filter-mapping>
+	  <filter-name>AddDefaultCharsetFilter</filter-name>
+	  <url-pattern>/*</url-pattern>
+	</filter-mapping>
+	
+	<welcome-file-list>
+		<welcome-file>jsps/index.jsp</welcome-file>
+	</welcome-file-list>
+</web-app>
Index: modules/uoa-validator-admin/trunk/src/main/webapp/jsps/manuals/OpenAIRE_registration.pdf
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/trunk/src/main/webapp/jsps/manuals/OpenAIRE_registration.pdf
===================================================================
--- modules/uoa-validator-admin/trunk/src/main/webapp/jsps/manuals/OpenAIRE_registration.pdf	(nonexistent)
+++ modules/uoa-validator-admin/trunk/src/main/webapp/jsps/manuals/OpenAIRE_registration.pdf	(revision 47450)

Property changes on: modules/uoa-validator-admin/trunk/src/main/webapp/jsps/manuals/OpenAIRE_registration.pdf
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/trunk/src/main/webapp/WEB-INF/log4j.properties
===================================================================
--- modules/uoa-validator-admin/trunk/src/main/webapp/WEB-INF/log4j.properties	(nonexistent)
+++ modules/uoa-validator-admin/trunk/src/main/webapp/WEB-INF/log4j.properties	(revision 47450)
@@ -0,0 +1,36 @@
+log4j.rootLogger = WARN, R
+
+log4j.logger.eu.dnetlib = INFO
+log4j.logger.org.springframework = INFO, S
+log4j.additivity.org.springframework = false
+
+log4j.logger.com.opensymphony.xwork2.ognl.OgnlValueStack = FATAL
+log4j.logger.com.opensymphony.xwork2.ObjectFactory = FATAL
+
+log4j.appender.R=org.apache.log4j.RollingFileAppender
+log4j.appender.R.File=/var/log/dnet/validator/validator-admin.log
+log4j.appender.R.MaxFileSize=10MB
+log4j.appender.R.MaxBackupIndex=10
+log4j.appender.R.layout=org.apache.log4j.PatternLayout
+log4j.appender.R.layout.ConversionPattern= %d %p %t [%c] - %m%n
+
+log4j.appender.S=org.apache.log4j.RollingFileAppender
+log4j.appender.S.File=/var/log/dnet/validator/validator-admin-spring.log
+log4j.appender.S.MaxFileSize=10MB
+log4j.appender.S.MaxBackupIndex=10
+log4j.appender.S.layout=org.apache.log4j.PatternLayout
+log4j.appender.S.layout.ConversionPattern= %d %p %t [%c] - %m%n
+
+#log4j.rootLogger = ERROR, stdout
+#
+#log4j.logger.gr.uoa = INFO, stdout
+#log4j.logger.org.springframework = INFO, stdout
+#log4j.additivity.org.springframework = false
+#
+#log4j.logger.com.opensymphony.xwork2.ognl.OgnlValueStack = FATAL, stdout
+#log4j.logger.com.opensymphony.xwork2.ObjectFactory = FATAL, stdout
+#
+#log4j.appender.stdout=org.apache.log4j.ConsoleAppender
+#log4j.appender.stdout.Target=System.out
+#log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
+#log4j.appender.stdout.layout.ConversionPattern=%d %p %t [%c] - %m%n
Index: modules/uoa-validator-admin/trunk/src/main/webapp/jsps/images/help1.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/trunk/src/main/webapp/jsps/images/help1.png
===================================================================
--- modules/uoa-validator-admin/trunk/src/main/webapp/jsps/images/help1.png	(nonexistent)
+++ modules/uoa-validator-admin/trunk/src/main/webapp/jsps/images/help1.png	(revision 47450)

Property changes on: modules/uoa-validator-admin/trunk/src/main/webapp/jsps/images/help1.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/trunk/src/main/webapp/jsps/images/toolbar_m.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/trunk/src/main/webapp/jsps/images/toolbar_m.png
===================================================================
--- modules/uoa-validator-admin/trunk/src/main/webapp/jsps/images/toolbar_m.png	(nonexistent)
+++ modules/uoa-validator-admin/trunk/src/main/webapp/jsps/images/toolbar_m.png	(revision 47450)

Property changes on: modules/uoa-validator-admin/trunk/src/main/webapp/jsps/images/toolbar_m.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/trunk/src/main/webapp/jsps/images/number-1.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/trunk/src/main/webapp/jsps/images/number-1.png
===================================================================
--- modules/uoa-validator-admin/trunk/src/main/webapp/jsps/images/number-1.png	(nonexistent)
+++ modules/uoa-validator-admin/trunk/src/main/webapp/jsps/images/number-1.png	(revision 47450)

Property changes on: modules/uoa-validator-admin/trunk/src/main/webapp/jsps/images/number-1.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/trunk/src/main/webapp/jsps/images/number-3.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/trunk/src/main/webapp/jsps/images/number-3.png
===================================================================
--- modules/uoa-validator-admin/trunk/src/main/webapp/jsps/images/number-3.png	(nonexistent)
+++ modules/uoa-validator-admin/trunk/src/main/webapp/jsps/images/number-3.png	(revision 47450)

Property changes on: modules/uoa-validator-admin/trunk/src/main/webapp/jsps/images/number-3.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/trunk/src/main/webapp/jsps/images/spinner.gif
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/trunk/src/main/webapp/jsps/images/spinner.gif
===================================================================
--- modules/uoa-validator-admin/trunk/src/main/webapp/jsps/images/spinner.gif	(nonexistent)
+++ modules/uoa-validator-admin/trunk/src/main/webapp/jsps/images/spinner.gif	(revision 47450)

Property changes on: modules/uoa-validator-admin/trunk/src/main/webapp/jsps/images/spinner.gif
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/trunk/src/main/webapp/jsps/images/page_bg_img.jpg
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/trunk/src/main/webapp/jsps/images/page_bg_img.jpg
===================================================================
--- modules/uoa-validator-admin/trunk/src/main/webapp/jsps/images/page_bg_img.jpg	(nonexistent)
+++ modules/uoa-validator-admin/trunk/src/main/webapp/jsps/images/page_bg_img.jpg	(revision 47450)

Property changes on: modules/uoa-validator-admin/trunk/src/main/webapp/jsps/images/page_bg_img.jpg
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/trunk/deploy.info
===================================================================
--- modules/uoa-validator-admin/trunk/deploy.info	(nonexistent)
+++ modules/uoa-validator-admin/trunk/deploy.info	(revision 47450)
@@ -0,0 +1,10 @@
+{
+  "type_source": "SVN", 
+  "goal": "package -U -T 4C source:jar", 
+  "url": "http://svn-public.driver.research-infrastructures.eu/driver/dnet40/modules/uoa-validator-admin/trunk", 
+  "deploy_repository": "dnet4-snapshots", 
+  "version": "4", 
+  "mail": "nikonas@di.uoa.gr, antleb@di.uoa.gr, kiatrop@di.uoa.gr", 
+  "deploy_repository_url": "http://maven.research-infrastructures.eu/nexus/content/repositories/dnet4-snapshots", 
+  "name": "uoa-validator-admin"
+}
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/java/eu/dnetlib/validator/admin/api/impls/UserApiLocal.java
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/java/eu/dnetlib/validator/admin/api/impls/UserApiLocal.java	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/java/eu/dnetlib/validator/admin/api/impls/UserApiLocal.java	(revision 47450)
@@ -0,0 +1,135 @@
+package eu.dnetlib.validator.admin.api.impls;
+
+import java.math.BigInteger;
+import java.security.MessageDigest;
+import java.util.UUID;
+
+import org.apache.log4j.Logger;
+import org.springframework.transaction.annotation.Propagation;
+import org.springframework.transaction.annotation.Transactional;
+
+import eu.dnetlib.domain.functionality.UserProfile;
+import eu.dnetlib.validator.admin.api.UserApi;
+import eu.dnetlib.validator.commons.dao.users.UsersDAO;
+
+@Transactional(propagation = Propagation.REQUIRED)
+public class UserApiLocal implements UserApi {
+
+	private static Logger logger = Logger.getLogger(UserApiLocal.class);
+	private UsersDAO usersDao;
+
+	@Override
+	@Transactional()
+	public boolean activateUser(String activationId) throws Exception {
+		usersDao.activateUser(activationId);
+		return true;
+	}
+
+	@Override
+	@Transactional(propagation = Propagation.REQUIRED)
+	public String addUser(String username, String email, String password, String firstName, String lastName,  String institution) throws Exception {
+		String hashword;
+		MessageDigest md5 = MessageDigest.getInstance("MD5");
+		md5.update(password.getBytes());
+		BigInteger hash = new BigInteger(1, md5.digest());
+		hashword = hash.toString(16);
+		String activationId = UUID.randomUUID().toString();
+		UserProfile newUser = new UserProfile();
+		newUser.setEmail(email);
+		newUser.setPassword(hashword);
+		newUser.setFirstname(firstName);
+		newUser.setLastname(lastName);
+		newUser.setUsername(username);
+		newUser.setInstitution(institution);
+		newUser.setActivationId(activationId);
+		usersDao.save(newUser);
+		return activationId;
+	}
+
+	@Override
+	public boolean correctCreds(String email, String password) throws Exception {
+		String hashword;
+		MessageDigest md5 = MessageDigest.getInstance("MD5");
+		md5.update(password.getBytes());
+		BigInteger hash = new BigInteger(1, md5.digest());
+		hashword = hash.toString(16);
+		
+		if (usersDao.checkCorrectCreds(email, hashword)) {
+			logger.debug("Password verified");
+			return true;
+		} else {
+			logger.debug("no user found with email: " + email + " and pass: " + password + " (" + hashword + ")");
+
+			return false;
+		}
+	}
+
+	@Override
+	public boolean isAdmin(String email) throws Exception {
+		return usersDao.isAdmin(email);
+	}
+
+	@Override
+	public boolean isUserActivated(String email) throws Exception {
+		return usersDao.isActivated(email);
+	}
+
+	@Override
+	@Transactional(propagation = Propagation.REQUIRED)
+	public String prepareResetPassword(String email) throws Exception {
+		String uuid = UUID.randomUUID().toString();
+		usersDao.prepareResetPassword(uuid,email);
+		return uuid;
+	}
+
+	@Override
+	@Transactional(propagation = Propagation.REQUIRED)
+	public void resetPassword(String uuid, String password) throws Exception {
+		String hashword;
+		MessageDigest md5 = MessageDigest.getInstance("MD5");
+		md5.update(password.getBytes());
+		BigInteger hash = new BigInteger(1, md5.digest());
+		hashword = hash.toString(16);
+		usersDao.ResetPassword(uuid, hashword);
+	}
+
+	@Override
+	public boolean userExists(String email) throws Exception {
+		return usersDao.userExists(email);
+	}
+
+	@Override
+	public void editUser(UserProfile user) throws Exception {
+		this.usersDao.save(user);
+
+	}
+
+	@Override
+	public boolean usernameExists(String username) throws Exception {
+		return usersDao.usernameExists(username);
+	}
+
+	@Override
+	public String getEmailFromUsername(String username) throws Exception {
+		UserProfile user = usersDao.get(username);
+		if (user == null)
+			return null;
+		else
+			return usersDao.get(username).getEmail();
+	}
+
+	@Override
+	public UserProfile getUser(String userIdentifier) throws Exception {
+		return usersDao.get(userIdentifier);
+	}
+
+	public UsersDAO getUsersDao() {
+		return usersDao;
+	}
+
+	public void setUsersDao(UsersDAO usersDao) {
+		this.usersDao = usersDao;
+	}
+
+	
+}
Index: modules/uoa-validator-admin/trunk/src/main/webapp/jsps/images/img04.jpg
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/trunk/src/main/webapp/jsps/images/img04.jpg
===================================================================
--- modules/uoa-validator-admin/trunk/src/main/webapp/jsps/images/img04.jpg	(nonexistent)
+++ modules/uoa-validator-admin/trunk/src/main/webapp/jsps/images/img04.jpg	(revision 47450)

Property changes on: modules/uoa-validator-admin/trunk/src/main/webapp/jsps/images/img04.jpg
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/trunk/src/main/webapp/jsps/images/help.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/trunk/src/main/webapp/jsps/images/help.png
===================================================================
--- modules/uoa-validator-admin/trunk/src/main/webapp/jsps/images/help.png	(nonexistent)
+++ modules/uoa-validator-admin/trunk/src/main/webapp/jsps/images/help.png	(revision 47450)

Property changes on: modules/uoa-validator-admin/trunk/src/main/webapp/jsps/images/help.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/java/eu/dnetlib/validator/admin/api/impls/ValidatorAdminApiImpl.java
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/java/eu/dnetlib/validator/admin/api/impls/ValidatorAdminApiImpl.java	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/java/eu/dnetlib/validator/admin/api/impls/ValidatorAdminApiImpl.java	(revision 47450)
@@ -0,0 +1,502 @@
+package eu.dnetlib.validator.admin.api.impls;
+
+import java.io.BufferedReader;
+import java.io.StringReader;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.Properties;
+
+import eu.dnetlib.domain.functionality.validator.CustomProperties;
+import org.apache.log4j.Logger;
+import org.springframework.transaction.annotation.Propagation;
+import org.springframework.transaction.annotation.Transactional;
+
+import eu.dnetlib.domain.functionality.validator.Rule;
+import eu.dnetlib.domain.functionality.validator.RuleSet;
+import eu.dnetlib.domain.functionality.validator.StoredJob;
+import eu.dnetlib.validator.admin.actions.rules.FieldPair;
+import eu.dnetlib.validator.admin.api.ValidatorAdminAPI;
+import eu.dnetlib.validator.admin.api.ValidatorAdminException;
+import eu.dnetlib.validator.admin.constants.FieldNames;
+import eu.dnetlib.validator.admin.constants.FieldsAndDetails;
+import eu.dnetlib.validator.admin.constants.TypesAndTableNames;
+import eu.dnetlib.validator.admin.constants.fielddetails.FieldDetails;
+import eu.dnetlib.validator.commons.dao.jobs.JobsDAO;
+import eu.dnetlib.validator.commons.dao.rules.RulesDAO;
+import eu.dnetlib.validator.commons.dao.rules.RulesetsDAO;
+import eu.dnetlib.validator.commons.dao.users.UsersDAO;
+import eu.dnetlib.validator.commons.email.Emailer;
+
+
+/**
+ * 
+ * @author Nikon Gasparis
+ *
+ */
+
+@Transactional(propagation = Propagation.REQUIRED)
+public class ValidatorAdminApiImpl implements ValidatorAdminAPI {
+	
+	private JobsDAO jobsDao;
+	private RulesetsDAO rulesetsDao;
+	private RulesDAO rulesDao;
+	private UsersDAO usersDao;
+
+	private EmailBuilder emailBuilder;
+	
+	private Emailer emailer = null;
+	private List<String> masterAdmins = new ArrayList<String>();
+	private List<String> secondaryAdmins = new ArrayList<String>();
+	private String registrationsReportEmail;
+	private static Logger logger = Logger.getLogger(ValidatorAdminApiImpl.class);
+
+	public void start(){
+	}
+
+	@Override
+	public Rule getRule(int ruleId) throws ValidatorAdminException {
+		try {
+			logger.debug("getting rule with id: "+ruleId);
+			return rulesDao.get(ruleId);
+		} catch (Exception e) {
+			logger.error("Error getting rule ", e);
+			throw new ValidatorAdminException(e);
+		}
+		
+	}
+		
+	@Override
+	public List<FieldPair> getRuleValuePairs(Rule rule) throws ValidatorAdminException {
+		try {
+			logger.debug("getting rule value pairs");
+			boolean forUsage = false;
+			if( rule.getJob_type().equals("usage"))
+				forUsage = true;
+			List<String> labels = this.getRuleLabels(rule.getType(), forUsage, rule.isFor_cris());
+
+			List<FieldPair> ruleValues = new ArrayList<FieldPair>();
+			for (String fieldName : labels) {
+				FieldPair pair = new FieldPair();
+//				String fieldValue=null;
+				pair.setFieldName(fieldName);
+				if (fieldName.split("\\.")[1].equals(FieldNames.RULE_NAME)) {
+					pair.setFieldValue(rule.getName());
+				}
+				else if (fieldName.split("\\.")[1].equals(FieldNames.RULE_DESCRIPTION)) {
+					pair.setFieldValue(rule.getDescription());
+				}
+				else if (fieldName.split("\\.")[1].equals(FieldNames.RULE_MANDATORY)) {
+					pair.setFieldValue(Boolean.toString(rule.isMandatory()));
+				}				
+				else if (fieldName.split("\\.")[1].equals(FieldNames.RULE_WEIGHT)) {
+					pair.setFieldValue(Integer.toString(rule.getWeight()));
+				}
+				else if (fieldName.split("\\.")[1].equals(FieldNames.RULE_PROVIDER_INFORMATION)) {
+					pair.setFieldValue(rule.getProvider_information());
+				}
+				else{
+					pair.setFieldValue(rule.getConfiguration().getProperty(fieldName.split("\\.")[1]));
+				}				
+				logger.debug("getting rule value pairs-addpair: "+fieldName+"-"+rule.getConfiguration().getProperty(fieldName.split("\\.")[1]));
+				ruleValues.add(pair);
+			}
+			return ruleValues;
+		} catch (Exception e) {
+			logger.error("Error getting ruleValue pairs", e);
+			throw new ValidatorAdminException(e);
+		}
+
+	}	
+
+	
+	@Override
+	public List<Rule> getAllRules() throws ValidatorAdminException {
+		try {
+			logger.debug("getting all rules ");
+			return rulesDao.getAllRules();
+		} catch (Exception e) {
+			logger.error("Error getting all rules  to rule pair", e);
+			throw new ValidatorAdminException(e);
+		}	
+	}	
+	
+	@Override
+	@Transactional(propagation = Propagation.REQUIRED)
+	public String storeRule(Rule rule, String[] inputs, Boolean updateExisting) throws ValidatorAdminException {
+		try {
+			logger.debug("edit rule using the inputs of the user");
+			List<String> fields = new ArrayList<String>();
+			List<FieldDetails> generalFields = FieldsAndDetails.getFieldsAndDetails("Rules");
+			List<FieldDetails> usageFields = FieldsAndDetails.getFieldsAndDetails("usage_rules");
+			List<FieldDetails> crisFields = FieldsAndDetails.getFieldsAndDetails("cris_rules");
+			List<FieldDetails> subFields = FieldsAndDetails.getFieldsAndDetails(TypesAndTableNames.getTableNameOfType(rule.getType()));
+			for (FieldDetails field : generalFields) {
+				if (field.isForDet() && !field.getFieldName().equals(FieldNames.RULE_TYPE) && !field.getFieldName().equals(FieldNames.RULE_JOBTYPE))
+					fields.add(field.getFieldName());
+			}
+			if (subFields != null) {
+				for (FieldDetails field : subFields) {
+					if (field.isForDet())
+						fields.add(field.getFieldName());
+				}
+			}
+			if (rule.getJob_type().toLowerCase().contains("usage")) {
+				for (FieldDetails field : usageFields) {
+					if (field.isForDet())
+						fields.add(field.getFieldName());
+				}
+			}
+			if (rule.isFor_cris()) {
+				for (FieldDetails field : crisFields) {
+					if (field.isForDet())
+						fields.add(field.getFieldName());
+				}
+			}
+//			Properties pros = new Properties();
+			CustomProperties pros = new CustomProperties();
+
+			logger.debug("Fields: " + fields);
+			for (int i = 0; i < inputs.length; i++) {
+				logger.debug("input-" + i + " : "+ inputs[i]);
+			}
+			for (int i = 0; i < inputs.length; i++) {
+				logger.debug("Field: " + fields.get(i) + " - input: " + inputs[i]);
+				if (fields.get(i).equals(FieldNames.RULE_NAME)) {
+					rule.setName(inputs[i]);
+				}
+				else if (fields.get(i).equals(FieldNames.RULE_DESCRIPTION)) {
+					rule.setDescription(inputs[i]);
+				}
+				else if (fields.get(i).equals(FieldNames.RULE_MANDATORY)) {
+					rule.setMandatory(Boolean.parseBoolean(inputs[i]));
+				}				
+				else if (fields.get(i).equals(FieldNames.RULE_WEIGHT)) {
+					rule.setWeight(Integer.parseInt(inputs[i]));
+				}
+				else if (fields.get(i).equals(FieldNames.RULE_PROVIDER_INFORMATION)) {
+					rule.setProvider_information(inputs[i]);
+				}
+				else if (fields.get(i).equals(FieldNames.RULE_CRIS_ENTITY)) {
+					rule.setEntity_type(inputs[i]);
+				}
+				else{
+					if (fields.get(i).equals(FieldNames.RULE_VOCABULARY_WORDS)) {
+						String words = "";
+						BufferedReader bf = new BufferedReader(new StringReader(inputs[i]));
+						String line;
+						while ((line = bf.readLine()) != null) {
+							words += ",";
+							words += line;
+						}
+						words = words.substring(1);
+						pros.setProperty(fields.get(i), words);
+					} else if (fields.get(i).equals(FieldNames.RULE_NOTCONNFUSEDFIELDS)) {
+						String ncfields = "";
+						BufferedReader bf = new BufferedReader(new StringReader(inputs[i]));
+						String line;
+						while ((line = bf.readLine()) != null)
+							ncfields += line + "\n";
+						ncfields = ncfields.substring(0, ncfields.lastIndexOf('\n'));
+						pros.setProperty(fields.get(i), ncfields);
+					
+					}else  
+						pros.setProperty(fields.get(i), inputs[i]);
+				}
+			}
+			rule.setConfiguration(pros);
+			
+			if (!updateExisting)
+				rule.setId(-1);
+			rulesDao.save(rule);
+			return null;
+
+		} catch (Exception e) {
+			logger.error("Error storing rule", e);
+			throw new ValidatorAdminException(e);
+		}
+	}
+		
+	@Override
+	public List<String> getRuleLabels(String ruleType, Boolean forUsage, Boolean forCris) throws ValidatorAdminException {
+		try {
+			logger.debug("getting rule labels for type " + ruleType);
+			List<String> labels = new ArrayList<String>();
+			List<FieldDetails> generalFields = FieldsAndDetails.getFieldsAndDetails("Rules");
+			List<FieldDetails> usageFields = FieldsAndDetails.getFieldsAndDetails("usage_rules");
+			List<FieldDetails> crisFields = FieldsAndDetails.getFieldsAndDetails("cris_rules");
+			List<FieldDetails> subFields = FieldsAndDetails.getFieldsAndDetails(TypesAndTableNames.getTableNameOfType(ruleType));
+			for (FieldDetails field : generalFields) {
+				if (field.isForDet() && !field.getFieldName().equals(FieldNames.RULE_TYPE) && !field.getFieldName().equals(FieldNames.RULE_JOBTYPE))
+					labels.add(field.getTableName() + "." + field.getFieldName());
+			}
+			if (subFields != null) {
+				for (FieldDetails field : subFields) {
+					if (field.isForDet())
+						labels.add(field.getTableName() + "." + field.getFieldName());
+				}
+			}
+			if (forUsage) {
+				for (FieldDetails field : usageFields) {
+					if (field.isForDet())
+						labels.add(field.getTableName().split("_")[1] + "." + field.getFieldName());
+				}
+			}
+			if (forCris) {
+				for (FieldDetails field :crisFields) {
+					if (field.isForDet())
+						labels.add(field.getTableName().split("_")[1] + "." + field.getFieldName());
+				}
+			}
+			return labels;
+		}catch (Exception e) {
+			logger.error("getting rule labels for type " + ruleType, e);
+			throw new ValidatorAdminException(e);
+		}			
+	}
+	
+	@Override
+	public List<RuleSet> getRuleSets() throws ValidatorAdminException {
+		try {
+			logger.debug("Getting all rule sets");
+			return rulesetsDao.getRuleSets();
+		} catch (Exception e) {
+			logger.error("Error getting all rule sets", e);
+			throw new ValidatorAdminException(e);
+		}
+	}
+	
+	@Override
+	public String deleteRule(int ruleId) throws ValidatorAdminException {
+		try {
+			logger.debug("deleting rule with id "+ruleId);
+			return rulesDao.delete(ruleId);
+		}
+		catch (Exception e) {
+			logger.error("Error deleting rule with id "+ruleId, e);
+			throw new ValidatorAdminException(e);
+		}
+	}
+	
+	@Override
+	public RuleSet getRuleSet(int setId) throws ValidatorAdminException {
+		try {
+			logger.debug("getting ruleSet with id: " + setId);
+			return rulesetsDao.get(setId);
+		} catch (Exception e) {
+			logger.error("Error getting ruleSet with id: " + setId, e);
+			throw new ValidatorAdminException(e);
+		}
+	}
+	
+	@Override
+	public void storeRuleSet(RuleSet ruleSet, boolean updateExisting) throws ValidatorAdminException {
+		try {
+			if (updateExisting)
+				logger.debug("editing rule set " + ruleSet.getId());
+			else
+				logger.debug("creating rule set " + ruleSet.getName());
+			
+			rulesetsDao.save(ruleSet);
+			
+			} catch (Exception e) {
+				logger.error("Error storing ruleSet " + ruleSet.getName(), e);
+			throw new ValidatorAdminException(e);
+		}
+		
+	}
+	
+	@Override
+	public void deleteRuleSet(int setId) throws ValidatorAdminException {
+		try {
+			logger.debug("deleting rule set " + setId);
+			rulesetsDao.delete(setId);
+		} catch (Exception e) {
+			logger.error("Error deleting rule set " + setId, e);
+			throw new ValidatorAdminException(e);
+		}
+	}	
+	
+	@Override
+	@Transactional(propagation = Propagation.REQUIRED)
+	public int deleteOldJobs(String date, String period, String mode) throws ValidatorAdminException {
+		int jobsDeleted = 0;
+		try {
+			logger.debug("Deleting jobs " + period + " than "+date);
+			if (mode.equalsIgnoreCase("uncompleted_only")) {
+				jobsDeleted = jobsDao.deleteUncompletedJobs();
+			}
+			else if (mode.equalsIgnoreCase("compTest_only"))
+				jobsDeleted = jobsDao.deleteOld(date, period, "Compatibility Test");
+			else if (mode.equalsIgnoreCase("all"))
+				jobsDeleted = jobsDao.deleteOld(date, period, null);
+			else if (mode.equalsIgnoreCase("import"))
+				jobsDao.importOldJobs();;
+		} catch (Exception e) {
+			logger.error("Error deleting old jobs", e);
+			throw new ValidatorAdminException(e);
+		}
+		return jobsDeleted;
+	}
+
+	public Emailer getEmailer() {
+		return emailer;
+	}
+	public JobsDAO getJobsDao() {
+		return jobsDao;
+	}
+
+	public void setJobsDao(JobsDAO jobsDao) {
+		this.jobsDao = jobsDao;
+	}
+
+	public RulesetsDAO getRulesetsDao() {
+		return rulesetsDao;
+	}
+
+	public void setRulesetsDao(RulesetsDAO rulesetsDao) {
+		this.rulesetsDao = rulesetsDao;
+	}
+
+	public RulesDAO getRulesDao() {
+		return rulesDao;
+	}
+
+	public void setRulesDao(RulesDAO rulesDao) {
+		this.rulesDao = rulesDao;
+	}
+
+	public UsersDAO getUsersDao() {
+		return usersDao;
+	}
+
+	public void setUsersDao(UsersDAO usersDao) {
+		this.usersDao = usersDao;
+	}
+
+	public void setEmailer(Emailer emailer) {
+		this.emailer = emailer;
+	}
+
+	
+	public String getRegistrationsReportEmail() {
+		return registrationsReportEmail;
+	}
+
+	public void setRegistrationsReportEmail(String registrationsReportEmail) {
+		this.registrationsReportEmail = registrationsReportEmail;
+	}
+
+	public EmailBuilder getEmailBuilder() {
+		return emailBuilder;
+	}
+
+	public void setEmailBuilder(EmailBuilder emailBuilder) {
+		this.emailBuilder = emailBuilder;
+	}
+
+	@Override
+	public boolean userIsMasterAdmin(String user)
+			throws ValidatorAdminException {
+		logger.debug("checking if user " + user + " is master admin");
+		if (this.masterAdmins.contains(user)) {
+			logger.debug("is master admin");
+			return true;
+		} else {
+			logger.debug("isn't master admin");
+			return false;
+		}
+	}
+	
+	@Override
+	public boolean userIsSecondaryAdmin(String user)
+			throws ValidatorAdminException {
+		logger.debug("checking if user " + user + " is secondary admin");
+		if (this.secondaryAdmins.contains(user)) {
+			logger.debug("is secondary admin");
+			return true;
+		} else {
+			logger.debug("isn't secondary admin");
+			return false;
+		}
+	}
+	
+
+	public void setMasterAdmins(String masterAdmins) {
+		String[] recps = masterAdmins.split(",");
+
+		for (String recp : recps) {
+			recp = recp.trim();
+			this.masterAdmins.add(recp);
+		}
+	}
+
+	public void setSecondaryAdmins(String secondaryAdmins) {
+		String[] recps = secondaryAdmins.split(",");
+
+		for (String recp : recps) {
+			recp = recp.trim();
+			this.secondaryAdmins.add(recp);
+		}
+	}
+
+	@Override
+	public String sendRegistrationsReport(String dateFrom, String dateTo, String month, String year) throws ValidatorAdminException {
+		try {
+			List <StoredJob> jobs = null;
+			Map<String, String> jobInfo = null;
+			List<Map<String, String>> passedJobsList = new ArrayList<Map<String, String>>();
+			List<Map<String, String>> failedJobsList = new ArrayList<Map<String, String>>();
+			
+			Map<String, StoredJob> passedJobsMap = new HashMap<String, StoredJob>();
+			Map<String, StoredJob> failedJobsMap = new HashMap<String, StoredJob>();
+			
+			logger.debug("Sending registrations Report for period: " + dateFrom + " to: " + dateTo);
+			jobs = jobsDao.getJobs(null, "Registration Request", null, null, dateFrom, dateTo);
+			for (StoredJob job : jobs) {
+				String key = job.getBaseUrl()+"|"+job.getDesiredCompatibilityLevel();
+				if (job.getContentJobScore() >= 50 && job.getContentJobScore() >= 50) {
+					failedJobsMap.remove(key);
+					passedJobsMap.put (key, job);
+				} else {
+					if (!passedJobsMap.containsKey(key)) {
+						failedJobsMap.put (key, job);
+					}
+				}
+			}
+			boolean oldFormat = false;
+			for (StoredJob job : passedJobsMap.values()) {
+				jobInfo = new HashMap<String, String>();
+				jobInfo.put("name", job.getOfficialName());
+				jobInfo.put("baseUrl", job.getBaseUrl());
+				jobInfo.put("email", job.getUserEmail());
+				jobInfo.put("compliance", job.getDesiredCompatibilityLevel());
+				if (job.getOfficialName() == null)
+					oldFormat = true;
+				passedJobsList.add(jobInfo);
+			}
+			for (StoredJob job : failedJobsMap.values()) {
+				jobInfo = new HashMap<String, String>();
+				jobInfo.put("name", job.getOfficialName());
+				jobInfo.put("baseUrl", job.getBaseUrl());
+				jobInfo.put("email", job.getUserEmail());
+				jobInfo.put("compliance", job.getDesiredCompatibilityLevel());
+				if (job.getOfficialName() == null)
+					oldFormat = true;
+				failedJobsList.add(jobInfo);
+			}
+			String report = emailBuilder.buildXml(passedJobsList, failedJobsList, month, oldFormat);
+			ArrayList<String> recps = new ArrayList<String>();
+			recps.add(registrationsReportEmail);
+			emailer.sendMail(recps,"Datasource Registrations -- " + month + " " + year, report, true, null);
+			logger.debug("email : " + report);
+			return report;
+		} catch (Exception e) {
+			logger.error("Error deleting old jobs", e);
+			throw new ValidatorAdminException(e);
+		}
+	}
+
+}
+
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/java/eu/dnetlib/validator/admin/api/ValidatorAdminAPI.java
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/java/eu/dnetlib/validator/admin/api/ValidatorAdminAPI.java	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/java/eu/dnetlib/validator/admin/api/ValidatorAdminAPI.java	(revision 47450)
@@ -0,0 +1,136 @@
+package eu.dnetlib.validator.admin.api;
+
+import java.util.List;
+
+import eu.dnetlib.domain.functionality.validator.Rule;
+import eu.dnetlib.domain.functionality.validator.RuleSet;
+import eu.dnetlib.validator.admin.actions.rules.FieldPair;
+
+/**
+ * 
+ * @author Nikon Gasparis
+ * 
+ */
+public interface ValidatorAdminAPI {
+
+	public List<Rule> getAllRules() throws  ValidatorAdminException;
+
+	public List<FieldPair> getRuleValuePairs(Rule rule) throws  ValidatorAdminException;
+	
+	public Rule getRule(int ruleId) throws ValidatorAdminException;
+	
+	public List<String> getRuleLabels(String ruleType, Boolean forUsage, Boolean forCris) throws ValidatorAdminException;
+	
+	public String storeRule(Rule rule, String[] inputs, Boolean updateExisting) throws ValidatorAdminException;
+	
+	public void storeRuleSet(RuleSet ruleSet, boolean updateExisting) throws ValidatorAdminException;	
+	
+	public void deleteRuleSet(int setId) throws  ValidatorAdminException;
+	
+	public String deleteRule(int ruleId) throws  ValidatorAdminException;
+
+	public List<RuleSet> getRuleSets() throws  ValidatorAdminException;
+
+	public RuleSet getRuleSet(int setId) throws  ValidatorAdminException;
+
+	public boolean userIsSecondaryAdmin(String user)
+			throws ValidatorAdminException;
+	
+	public boolean userIsMasterAdmin(String user)
+			throws ValidatorAdminException;
+			
+	public int deleteOldJobs(String date, String period, String target) throws ValidatorAdminException;
+
+	public String sendRegistrationsReport(String dateFrom, String dateTo, String month, String year) throws ValidatorAdminException;
+	
+
+//	public List<String> getConstantRuleTypes() throws  AdminAPIException;
+	
+//	public String[] getJobTypesAsArray() throws  AdminAPIException;
+
+
+	/*
+	public String getRuleSetName(int setId) throws  AdminAPIException;
+	
+
+	
+
+	public List<String> getRuleSetRuleIdsByJobType(int setId, String jobType)
+			throws  AdminAPIException;
+
+	public List<RuleS> getAllRulesForPresentationByJobType(String jobType)
+			throws  AdminAPIException;
+
+	public List<RuleS> getAllRulesForPresentationByJobTypeByRuleSet(
+			List<String> ruleSetRuleIds, String jobType)
+			throws  AdminAPIException;
+
+	public List<RuleD> getRulesForJobValidationByJobType(String jobType)
+			throws  AdminAPIException;
+
+	public List<RuleD> getRulesForJobValidationByJobTypeByRuleSet(int setId,
+			String jobType) throws  AdminAPIException;
+
+	public List<RuleStored> getAllRulesByJobType(String jobType)
+			throws  AdminAPIException;
+
+	public List<RulePair> getAllRulesToRulePair() throws  AdminAPIException;
+
+	public Map<String, List<JobSubmitted>> getJobsOfUser(String userName)
+			throws  AdminAPIException;
+
+
+
+	public Properties getRuleProperties(String ruleId)
+			throws  AdminAPIException;
+
+
+
+	public Serializable getRuleClassInstanceByType(String type, Properties pros,int id) throws  AdminAPIException;
+
+	public List<String> getAllRuleIdsByJobType(String jobType)
+			throws  AdminAPIException;
+
+	public List<RuleD> convertRuleIdsListToRuleDList(List<String> ruleIds);
+
+	public List<String> getValidationErrors(int jobId, int ruleId)
+			throws  AdminAPIException;
+
+	public JobSubmitted getJobSubmitted(String jobId) throws  AdminAPIException;
+
+	public List<TaskStored> getJobTasks(String jobId, JobSubmitted job)
+			throws  AdminAPIException;
+
+	public List<Entry> getJobSummary(String jobId, String groupBy) throws AdminAPIException;
+
+
+	public Map<String, String> getRuleSetsMap() throws AdminAPIException;
+
+
+	public void restore();
+
+	public List<String> getDistinctGroupByValues(String jobId) throws  AdminAPIException;
+
+	public String getFilteredScore(String jobId, String groupBy) throws  AdminAPIException;
+
+	public void preRegistrationValidations(JobForRegistration job) throws AdminAPIException;
+
+	public void storeJobForRegistration(JobForRegistration job) throws AdminAPIException;
+
+	public JobForRegistration getJobForRegistration(String activationId) throws AdminAPIException;
+
+	public void deleteJobForRegistration(String activationId) throws AdminAPIException;
+
+	public void cleanUncompletedJobs() throws AdminAPIException;
+
+	public Map<String, Set<Integer>> prepareCrisJobs(Set<Integer> chosenContentRules, Boolean referential, String selectedEntities) throws AdminAPIException;
+
+	public Map<String, String> getRuleSetsMap(String deployEnvironment)
+			throws AdminAPIException;
+
+	public Boolean isRepoAdmin(String user) throws AdminAPIException;
+	
+	*
+	*/
+
+}
\ No newline at end of file
Index: modules/uoa-validator-admin/trunk/src/main/webapp/jsps/registrationsReport.jsp
===================================================================
--- modules/uoa-validator-admin/trunk/src/main/webapp/jsps/registrationsReport.jsp	(nonexistent)
+++ modules/uoa-validator-admin/trunk/src/main/webapp/jsps/registrationsReport.jsp	(revision 47450)
@@ -0,0 +1,74 @@
+<%@ page contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<%@ taglib prefix="s" uri="/struts-tags"%>
+<%@ taglib prefix="sj" uri="/struts-jquery-tags"%>
+<html>
+<head>
+<link href="jsps/style.css" rel="stylesheet" type="text/css" media="screen" />
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<!--<meta http-equiv="refresh" content="13" >-->
+<title><s:text name="manageJobs.sendReports.title"/></title>
+<link href="jsps/favicon.ico" rel="shortcut icon" type="image/x-icon" />
+<sj:head />
+</head>
+<body class="left">
+
+<div id="wrapper">
+	<jsp:include page="menu.jsp"/>
+	<div id="page">
+		<div id="page-bgtop">
+			<div id="middle">
+                <div class="middle-b">
+                    <div class="background">
+                    	<div id="left">
+                        	<div id="left_container">
+	                             <h2 class="helpHdr">Info</h2>
+                                 <s:text name="help.browsevalidations"/>
+                            </div>
+                        </div>
+                        <div id="main">
+                            <div id="main_container" class="clearfix">
+                                <div id="mainmiddle" class="floatbox">
+                                    <h1 class="title"><s:text name="manageJobs.sendReports.title"/></h1>
+<%--                                     <s:if test="%{enableCuration}"> --%>
+	                                    <s:form action="sendRegistrationsReport">
+	                                   		 <s:select name="month" 
+ 	                                    		key="manageJobs.sendReports.selectMonth"
+  	                          					list="#{'January-01':'January','February-02':'February','March-03':'March',
+  	                          					'April-04':'April','May-05':'May','June-06':'June',
+  	                          					'July-07':'July','August-08':'August','September-09':'September',
+  	                          					'October-10':'October','November-11':'November','December-12':'December'}"
+                                             	required="true"
+ 	  					                    />
+ 	  					                    <s:select name="year" 
+ 	                                    		key="manageJobs.sendReports.selectYear"
+  	                          					list="#{'2013':'2013','2014':'2014','2015':'2015'}"
+                                             	required="true"
+ 	  					                    />
+<%--      										<sj:datepicker name="manageJobs.sendReports.selectDateFrom" changeMonth="true" changeYear="true" displayFormat="yy-mm-dd"/> --%>
+<%--      										<sj:datepicker name="manageJobs.sendReports.selectMonthDateTo" changeMonth="true" changeYear="true" displayFormat="yy-mm-dd"/> --%>
+     										
+<%-- 	                                    	<s:select name="mode"  --%>
+<%-- 	                                    		key="manageJobs.deleteJobs.whatToDelete" --%>
+<%--  	                          					list="#{'all':'All jobs', 'compTest_only':'Compatibility Tests only', 'uncompleted_only':'Uncompleted jobs'}" --%>
+<%--                                             	required="true" --%>
+<%-- 	  					                    /> --%>
+	                                    	<s:submit cssClass="button-default"/>
+	                                    </s:form>
+<%-- 	                               </s:if> --%>
+                                    
+								</div>
+                            </div>
+                        </div>
+                    </div>
+                </div>
+            </div>
+		</div>
+		<!-- NMI This needs to be the same in all pages and the text is some properties file -->
+        <div id="footer"> 
+           <jsp:include page="footer.jsp"/>
+        </div>
+	</div>
+</div>
+</body>
+</html>
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/java/eu/dnetlib/validator/admin/api/ValidatorAdminException.java
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/java/eu/dnetlib/validator/admin/api/ValidatorAdminException.java	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/java/eu/dnetlib/validator/admin/api/ValidatorAdminException.java	(revision 47450)
@@ -0,0 +1,29 @@
+package eu.dnetlib.validator.admin.api;
+
+public class ValidatorAdminException extends Exception {
+
+	/**
+	 * 
+	 * @author Nikon Gasparis
+	 *
+	 */
+	
+	private static final long serialVersionUID = -80175916822821147L;
+
+	public ValidatorAdminException() {
+		super();
+	}
+	
+	public  ValidatorAdminException(String message) {
+		super(message);
+	}
+
+	public  ValidatorAdminException(String message, Throwable cause) {
+		super(message, cause);
+	}
+
+	public  ValidatorAdminException(Throwable cause) {
+		super(cause);
+	}
+}
+
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/java/eu/dnetlib/validator/admin/actions/login/SendPassword.java
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/java/eu/dnetlib/validator/admin/actions/login/SendPassword.java	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/java/eu/dnetlib/validator/admin/actions/login/SendPassword.java	(revision 47450)
@@ -0,0 +1,59 @@
+package eu.dnetlib.validator.admin.actions.login;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.apache.log4j.Logger;
+
+import com.opensymphony.xwork2.Action;
+
+import eu.dnetlib.validator.admin.actions.BaseValidatorAction;
+
+public class SendPassword extends BaseValidatorAction {
+
+	private static final long serialVersionUID = 7540821478579531671L;
+	private Logger logger = Logger.getLogger(SendPassword.class);
+	
+	private String email;
+
+	public String execute() {
+		this.clearErrorsAndMessages();
+		try {
+			logger.debug("sending password to user " + email);
+			List<String> to = new ArrayList<String>();
+			to.add(this.getEmail());
+			String securityCode = this.getUserAPI().prepareResetPassword(this.getEmail());
+			this.getEmailer().sendMail(to, this.getText("forgotPassword.mail.Subject"), this.getText("forgotPassword.mail.Body1") + ": " + this.getValBaseUrl() + "/resetPassword.action?securityCode=" + securityCode + "\n\n" + this.getText("forgotPassword.mail.Body2") + ": " + securityCode, false, null);
+			this.addActionMessage(this.getText("forgotPassword.message"));
+			return Action.SUCCESS;
+		} catch (Exception e) {
+			logger.error("error sending password to user " + email, e);
+			this.addActionError(this.getText("generic.error"));
+			return "exception";
+		}
+	}
+
+	public void validate() {
+		this.clearErrors();
+		try {
+			if (!this.getUserAPI().userExists(this.getEmail())) {
+				this.addActionError(this.getText("login.userNotExists"));
+				return;
+			}
+//			if (!this.getUserAPI().isUserActivated(this.getEmail())) {
+//				this.addActionError(this.getText("login.notActivated"));
+//				return;
+//			}
+		} catch (Exception e) {
+			this.addActionError(e.toString());
+		}
+	}
+
+	public String getEmail() {
+		return email;
+	}
+
+	public void setEmail(String email) {
+		this.email = email;
+	}
+}
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/java/eu/dnetlib/validator/admin/actions/login/AuthenticationInterceptor.java
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/java/eu/dnetlib/validator/admin/actions/login/AuthenticationInterceptor.java	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/java/eu/dnetlib/validator/admin/actions/login/AuthenticationInterceptor.java	(revision 47450)
@@ -0,0 +1,35 @@
+package eu.dnetlib.validator.admin.actions.login;
+
+import java.util.Map;
+
+import com.opensymphony.xwork2.Action;
+import com.opensymphony.xwork2.ActionInvocation;
+import com.opensymphony.xwork2.interceptor.Interceptor;
+
+import eu.dnetlib.validator.admin.config.Constants;
+
+public class AuthenticationInterceptor implements Interceptor {
+
+	private static final long serialVersionUID = 977098762082596481L;
+
+	@Override
+	public void destroy() {
+
+	}
+
+	@Override
+	public void init() {
+
+	}
+
+	@Override
+	public String intercept(ActionInvocation actionInvocation) throws Exception {
+		Map<String, Object> session = actionInvocation.getInvocationContext().getSession();
+		String auth = (String) session.get(Constants.loggedInField);
+
+		if (auth == null) {
+			return Action.LOGIN;
+		}
+		return actionInvocation.invoke();
+	}
+}
\ No newline at end of file
Index: modules/uoa-validator-admin/trunk/src/main/webapp/jsps/feedback.jsp
===================================================================
--- modules/uoa-validator-admin/trunk/src/main/webapp/jsps/feedback.jsp	(nonexistent)
+++ modules/uoa-validator-admin/trunk/src/main/webapp/jsps/feedback.jsp	(revision 47450)
@@ -0,0 +1,45 @@
+<%@ page contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<%@ taglib prefix="s" uri="/struts-tags"%>
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<link href="jsps/style.css" rel="stylesheet" type="text/css" media="screen" />
+<title><s:text name="feedback.title"/></title>
+<link href="jsps/favicon.ico" rel="shortcut icon" type="image/x-icon" />
+</head>
+<body>
+<div id="wrapper">
+	<jsp:include page="menu.jsp"/>
+	<div id="page">
+		<div id="page-bgtop">
+			<div id="middle">
+                <div class="middle-b">
+                    <div class="background">
+                        <div class="main">
+                        <div id="main_container" class="clearfix">
+                                <div id="mainmiddle" class="floatbox">
+                                    <h2 class="title"><s:text name="feedback.title"/></h2>
+                                    <s:actionerror/>
+                                    <s:text name="feedback.loggedin"/>
+                                    <div class="entry">
+                                        <s:form action="sendFeedback">
+                                            <s:select name="reason" list="#{'validator form: feedback':'Feedback', 'validator form: bug':'Report a Bug', 'validator form: other':'Other'}" key="feedback.reason"/>
+                                            <s:textarea name="message" cols="50" rows="10" key="feedback.message"/>
+                                            <s:submit/>
+                                        </s:form>
+                                    </div>
+								</div>
+                            </div>
+                        </div>
+                    </div>
+                </div>
+            </div>
+		</div>
+		  <div id="footer"> 
+           <jsp:include page="footer.jsp"/>
+        </div>
+	</div>
+</div>
+</body>
+</html>
\ No newline at end of file
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/java/eu/dnetlib/validator/admin/actions/login/Logout.java
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/java/eu/dnetlib/validator/admin/actions/login/Logout.java	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/java/eu/dnetlib/validator/admin/actions/login/Logout.java	(revision 47450)
@@ -0,0 +1,32 @@
+package eu.dnetlib.validator.admin.actions.login;
+
+import java.util.Map;
+
+import org.apache.struts2.interceptor.SessionAware;
+
+import com.opensymphony.xwork2.Action;
+
+import eu.dnetlib.validator.admin.actions.BaseValidatorAction;
+import eu.dnetlib.validator.admin.config.Constants;
+
+public class Logout extends BaseValidatorAction implements SessionAware {
+
+	private static final long serialVersionUID = -5304052800228900726L;
+	private Map<String, Object> session;
+
+	
+	public String execute() {
+		this.clearErrorsAndMessages();
+		session.remove(Constants.loggedInField);
+		session.remove("email");
+		session.remove("isAdmin");
+		this.addActionMessage("Logged-out successfully");
+		
+		return Action.SUCCESS;
+	}
+	
+	@Override
+	public void setSession(Map<String, Object> session) {
+		this.session = session;
+	}
+}
\ No newline at end of file
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/java/eu/dnetlib/validator/admin/actions/login/LoginPage.java
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/java/eu/dnetlib/validator/admin/actions/login/LoginPage.java	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/java/eu/dnetlib/validator/admin/actions/login/LoginPage.java	(revision 47450)
@@ -0,0 +1,29 @@
+package eu.dnetlib.validator.admin.actions.login;
+
+import java.util.Map;
+
+import org.apache.struts2.interceptor.SessionAware;
+
+import eu.dnetlib.validator.admin.actions.BaseValidatorAction;
+
+@SuppressWarnings("serial")
+public class LoginPage extends BaseValidatorAction implements SessionAware{
+
+	@Override
+	public String execute() throws Exception {
+		this.clearErrorsAndMessages();
+		String email = (String) session.get("email");
+		
+		if ( email!=null && !email.trim().isEmpty() )
+			return INPUT;
+		
+		return SUCCESS;
+	}
+	
+	private Map<String, Object> session;
+	@Override
+	public void setSession(Map<String, Object> session) {
+		this.session = session;		
+	}
+
+}
Index: modules/uoa-validator-admin/trunk/src/main/webapp/jsps/rules.jsp
===================================================================
--- modules/uoa-validator-admin/trunk/src/main/webapp/jsps/rules.jsp	(nonexistent)
+++ modules/uoa-validator-admin/trunk/src/main/webapp/jsps/rules.jsp	(revision 47450)
@@ -0,0 +1,3 @@
+<%@ taglib prefix="s" uri="/struts-tags"%>
+
+<s:property value="#request['jsonization']" escape="false"/>
\ No newline at end of file
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/java/eu/dnetlib/validator/admin/actions/users/EditUser.java
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/java/eu/dnetlib/validator/admin/actions/users/EditUser.java	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/java/eu/dnetlib/validator/admin/actions/users/EditUser.java	(revision 47450)
@@ -0,0 +1,66 @@
+package eu.dnetlib.validator.admin.actions.users;
+
+import java.util.Map;
+
+import org.apache.log4j.Logger;
+import org.apache.struts2.interceptor.SessionAware;
+
+import com.opensymphony.xwork2.Action;
+
+import eu.dnetlib.domain.functionality.UserProfile;
+import eu.dnetlib.validator.admin.actions.BaseValidatorAction;
+import eu.dnetlib.validator.admin.config.Constants;
+
+public class EditUser extends BaseValidatorAction implements SessionAware {
+
+	private static final long serialVersionUID = -362061491263257713L;
+	private Logger logger = Logger.getLogger(EditUser.class);
+
+	private UserProfile user;
+
+	private Map<String, Object> session;
+
+	public String execute() {
+		this.clearErrorsAndMessages();
+		try {
+			logger.debug("getting for edit user " + (String) session.get(Constants.loggedInField));
+				user = this.getUserAPI().getUser((String) session.get(Constants.loggedInField));
+			return Action.SUCCESS;
+		} catch (Exception e) {
+			logger.error("error getting for edit user " + (String) session.get(Constants.loggedInField), e);
+			this.addActionError(this.getText("generic.error"));
+			reportException(e);
+			return "exception";
+		}
+	}
+
+	public String edit() {
+		this.clearErrorsAndMessages();
+		try {
+			logger.debug("editing user " + (String) session.get(Constants.loggedInField));
+			this.getUserAPI().editUser(user);
+			this.addActionMessage(this.getText("editUser.success"));
+			return Action.SUCCESS;
+		} catch (Exception e) {
+			logger.error("error editing user " + (String) session.get(Constants.loggedInField), e);
+			this.addActionError(this.getText("generic.error"));
+			reportException(e);
+			return "exception";
+		}
+
+	}
+
+
+	public UserProfile getUser() {
+		return user;
+	}
+
+	public void setUser(UserProfile user) {
+		this.user = user;
+	}
+
+	@Override
+	public void setSession(Map<String, Object> session) {
+		this.session = session;
+	}
+}
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/java/eu/dnetlib/validator/admin/actions/users/ActivateAccount.java
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/java/eu/dnetlib/validator/admin/actions/users/ActivateAccount.java	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/java/eu/dnetlib/validator/admin/actions/users/ActivateAccount.java	(revision 47450)
@@ -0,0 +1,48 @@
+package eu.dnetlib.validator.admin.actions.users;
+
+import org.apache.log4j.Logger;
+
+import com.opensymphony.xwork2.Action;
+
+import eu.dnetlib.validator.admin.actions.BaseValidatorAction;
+
+public class ActivateAccount extends BaseValidatorAction {
+
+	private static final long serialVersionUID = 4680016183168923054L;
+	private Logger logger = Logger.getLogger(ActivateAccount.class);
+	
+	private String activationId;
+
+	public String execute() {
+		this.clearErrorsAndMessages();
+		try {
+			logger.debug("activating user account with activation id " + activationId);
+			if (this.getUserAPI().activateUser(this.getActivationId()))
+				this.addActionMessage(this.getText("registration.okAccountActivation"));
+			else
+				this.addActionMessage(this.getText("registration.okAccountAlreadyActivation"));
+			return Action.SUCCESS;
+		} catch (Exception e) {
+			logger.error("error activating user account with activation id " + activationId, e);
+			this.addActionError(this.getText("generic.error"));
+			reportException(e);
+			return "exception";
+		}
+	}
+
+	public void validate() {
+		this.clearErrors();
+		if (this.getActivationId() == null || this.getActivationId().length() == 0) {
+			this.addActionError(this.getText("noActivationId"));
+			return;
+		}
+	}
+
+	public String getActivationId() {
+		return activationId;
+	}
+
+	public void setActivationId(String activationId) {
+		this.activationId = activationId;
+	}
+}
\ No newline at end of file
Index: modules/uoa-validator-admin/trunk/src/main/webapp/jsps/fonts/DroidSans-webfont.ttf
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/trunk/src/main/webapp/jsps/fonts/DroidSans-webfont.ttf
===================================================================
--- modules/uoa-validator-admin/trunk/src/main/webapp/jsps/fonts/DroidSans-webfont.ttf	(nonexistent)
+++ modules/uoa-validator-admin/trunk/src/main/webapp/jsps/fonts/DroidSans-webfont.ttf	(revision 47450)

Property changes on: modules/uoa-validator-admin/trunk/src/main/webapp/jsps/fonts/DroidSans-webfont.ttf
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/trunk/src/main/webapp/jsps/fonts/kreon-regular-webfont.svg
===================================================================
--- modules/uoa-validator-admin/trunk/src/main/webapp/jsps/fonts/kreon-regular-webfont.svg	(nonexistent)
+++ modules/uoa-validator-admin/trunk/src/main/webapp/jsps/fonts/kreon-regular-webfont.svg	(revision 47450)
@@ -0,0 +1,234 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" >
+<svg xmlns="http://www.w3.org/2000/svg">
+<metadata></metadata>
+<defs>
+<font id="KreonRegular" horiz-adv-x="1333" >
+<font-face units-per-em="2048" ascent="1638" descent="-410" />
+<missing-glyph horiz-adv-x="491" />
+<glyph horiz-adv-x="0" />
+<glyph horiz-adv-x="2048" />
+<glyph unicode=" "  horiz-adv-x="491" />
+<glyph unicode="&#x09;" horiz-adv-x="491" />
+<glyph unicode="&#xa0;" horiz-adv-x="491" />
+<glyph unicode="!" horiz-adv-x="548" d="M135 1386l240 27l43 -78l-76 -850h-141zM152 112.5q0 51.5 34.5 86t85 34.5t87 -35.5t36.5 -85t-36.5 -85t-87 -35.5t-85 34.5t-34.5 86z" />
+<glyph unicode="&#x22;" horiz-adv-x="661" d="M74 1411l190 21l35 -62l-59 -414h-113zM362 1411l191 21l35 -62l-60 -414h-112z" />
+<glyph unicode="#" horiz-adv-x="1323" d="M59 602l27 47h281l86 234h-283l-27 106l27 47h338l141 379h135l23 -29l-131 -350h207l137 379h135l23 -29l-127 -350h192q12 0 12 -16v-137h-262l-84 -234h250q12 0 12 -16v-137h-319l-143 -398h-136l-22 27l135 371h-209l-145 -398h-135l-23 27l135 371h-223zM535 649 h206l84 234h-204z" />
+<glyph unicode="$" horiz-adv-x="987" d="M68 1028q0 92 25.5 151.5t70.5 104.5q90 90 242 121v385h184v-377q137 -12 272 -59l29 -353h-141l-91 222q-61 20 -154 20t-157.5 -43t-64.5 -131q0 -102 102 -168q45 -31 100.5 -54.5t128 -56t136 -77.5t102.5 -95q74 -92 74 -200.5t-27 -175t-72 -115.5 q-90 -92 -237 -123v-397h-184v387q-182 8 -318 76v346h148l36 -219q88 -33 177 -33q176 0 241 115q23 39 23 101t-38 112.5t-125 93.5t-172 77.5t-153.5 83t-112.5 119t-44 162.5z" />
+<glyph unicode="%" horiz-adv-x="1472" d="M63 1059q0 61 17.5 123.5t52.5 113.5q80 117 219 117t217 -106q72 -100 72 -246q0 -154 -80 -256q-80 -104 -209 -105q-143 0 -221 119q-68 101 -68 240zM180 27l907 1388h173l8 -29l-897 -1386h-178zM215 1058q0 -93 38 -157.5t99 -64.5t98 65.5t37 158.5t-35.5 156.5 t-100 63.5t-100.5 -64.5t-36 -157.5zM836 348q0 139 69 238q80 117 217 116q139 0 217 -108q72 -96 72 -246q0 -152 -78 -254q-80 -102 -211 -102q-139 0 -219 117q-67 100 -67 239zM989 346q0 -94 37 -157.5t98.5 -63.5t97 64.5t35.5 158.5t-35.5 157.5t-100 63.5 t-98.5 -64.5t-34 -158.5z" />
+<glyph unicode="&#x26;" horiz-adv-x="1376" d="M66 412q0 217 258 422q-111 188 -111 319q0 150 94 244q100 100 244.5 100t226.5 -81t82 -206q0 -186 -262 -407q88 -121 182 -230l107 -127q53 111 78 226h-93l-32 143h319l23 -29q-45 -268 -150 -456l-16 -27q123 -127 158 -137q8 2 25.5 15.5t37.5 27.5l59 39l86 -189 q-78 -66 -209 -65.5t-290 137.5q-150 -139 -365 -139q-197 0 -325 123q-127 119 -127 297zM279 402.5q0 -97.5 68.5 -166t187.5 -68.5t217 94q-170 199 -336 428q-63 -61 -100 -125.5t-37 -162zM408 1194q0 -98 98 -258q160 145 160 274q0 66 -36 99.5t-96.5 33.5t-93 -46 t-32.5 -103z" />
+<glyph unicode="'" horiz-adv-x="372" d="M74 1391l190 20l35 -61l-59 -414h-113z" />
+<glyph unicode="(" horiz-adv-x="565" d="M104 600q0 160 23 302t55 259q57 201 146 359h172q-133 -266 -183 -633q-18 -137 -18 -293t21.5 -296t52.5 -257q43 -166 127 -373h-172l-15 31q-129 260 -186 604q-23 137 -23 297z" />
+<glyph unicode=")" horiz-adv-x="565" d="M66 -332q84 207 120 348q80 307 80 580q0 522 -200 924h172q223 -418 223 -926q0 -266 -76 -543q-47 -168 -133 -352l-14 -31h-172z" />
+<glyph unicode="*" horiz-adv-x="741" d="M72 1038l12 47l231 86l-243 78l32 115l50 12l188 -153l-47 247l115 25l32 -35l-41 -237l187 170l82 -88l-13 -48l-231 -86l244 -77l-33 -115l-49 -12l-189 153l47 -248l-114 -24l-33 35l41 237l-186 -170zM336 1169l18 -26h35l14 28l-16 29h-37z" />
+<glyph unicode="+" horiz-adv-x="821" d="M70 645v125l26 29h242v262h154v-262h256v-154h-256v-307h-127l-27 24v283h-268z" />
+<glyph unicode="," horiz-adv-x="438" d="M45 -211l102 209l-53 235l215 39q23 -90 23 -156.5t-17.5 -130t-44.5 -116.5q-49 -100 -118 -170l-107 61v29z" />
+<glyph unicode="-" horiz-adv-x="817" d="M119 500v125l24 28h543q12 0 12 -16v-137h-579z" />
+<glyph unicode="." horiz-adv-x="425" d="M92 112.5q0 51.5 35 86t85 34.5t87 -35.5t37 -85t-36 -85t-87 -35.5t-86 34.5t-35 86z" />
+<glyph unicode="/" horiz-adv-x="944" d="M45 27l672 1386h184l-2 -29l-672 -1384h-176z" />
+<glyph unicode="0" horiz-adv-x="1193" d="M94 702q0 483 260 650q96 61 242 61q266 0 395 -221q109 -184 109 -490q0 -481 -262 -649q-96 -61 -242 -61q-266 0 -395 223q-107 182 -107 487zM309 702q0 -371 158 -493q53 -41 129 -41q145 0 221 156q68 139 68 378q0 373 -158 494q-55 41 -132 41t-131 -42t-87 -114 q-68 -141 -68 -379z" />
+<glyph unicode="1" horiz-adv-x="741" d="M51 1286l428 133l41 -18v-1239l191 -25v-137h-605l-22 135l231 35v1016l-233 -47z" />
+<glyph unicode="2" horiz-adv-x="1060" d="M45 1135q72 131 189.5 204.5t265.5 73.5q180 0 295 -86q131 -96 131 -283q0 -190 -226 -477q-119 -154 -212 -250t-132 -141h412l80 219h135l-43 -395h-834l-24 141q41 45 102.5 109.5t130 141.5t138 161t125.5 168q125 182 133 303v14q0 98 -68 154q-59 45 -131 45 q-102 0 -182 -53l-56 -172z" />
+<glyph unicode="3" horiz-adv-x="1071" d="M55 1139q72 131 196 202.5t296 71.5q162 0 280 -90q129 -100 129 -272q0 -117 -62.5 -202t-166.5 -122q92 -31 160 -106q86 -96 86 -212t-42 -193t-108 -126q-131 -98 -301 -98q-287 0 -456 139l108 164q150 -127 320 -127q135 0 199.5 63.5t64.5 140.5t-28 122t-75 75 q-86 55 -235 56h-105v176q213 0 308 41q119 53 118 196q0 100 -67 154q-59 47 -139 47t-124 -17.5t-73 -33.5l-76 -168z" />
+<glyph unicode="4" horiz-adv-x="1060" d="M4 557l590 858h221v-835h168v-177h-168v-235l166 -27v-139h-651v139l282 33v229h-540zM205 580h407v583z" />
+<glyph unicode="5" horiz-adv-x="1028" d="M39 133l100 158q133 -123 301 -123q131 0 219 86q86 82 86 213q0 164 -116 240q-94 61 -287 61q-94 0 -180 -12v592l65 65h654v-176h-525v-295h50q35 0 99 -3t150 -31.5t154 -84.5q152 -127 152 -342q0 -213 -160 -354q-156 -135 -373 -135q-125 0 -224.5 41t-164.5 100z " />
+<glyph unicode="6" horiz-adv-x="1140" d="M88 694q0 311 148 514q71 101 174.5 159t211 58t174 -21.5t115.5 -51.5q76 -47 131 -127l-194 -138l-103 146q-49 16 -107 16t-118.5 -37.5t-105.5 -105.5q-96 -141 -109 -344q47 53 126 93t179.5 40t182 -29.5t141.5 -87.5q127 -123 127 -327q0 -190 -123 -320 q-131 -139 -326 -139q-264 0 -407 227q-117 188 -117 475zM336 430q70 -262 266 -262q121 0 184 84q59 76 60 192q0 121 -70 199t-174 78q-113 0 -188 -84q-74 -82 -78 -207z" />
+<glyph unicode="7" horiz-adv-x="909" d="M55 989v424h807l37 -53l-428 -1360h-211l-10 55l448 1182h-462l-52 -248h-129z" />
+<glyph unicode="8" horiz-adv-x="1089" d="M84 377q0 242 250 381q-78 51 -132.5 125.5t-54.5 172t36 162t93 109.5q121 98 273 98q158 0 274 -90q125 -100 125 -254q0 -143 -125 -245q-35 -31 -73 -58q127 -76 170 -133q86 -111 86 -248q0 -176 -142 -295q-131 -113 -317 -112q-190 0 -322 96q-141 107 -141 291z M299 383q0 -104 86 -166q72 -51 143.5 -51t116.5 17.5t76 45.5q70 66 70 152q0 139 -185 233q-51 27 -108 56q-199 -109 -199 -287zM362 1100.5q0 -56.5 19.5 -91t50.5 -59.5q47 -39 150 -86q65 41 108 91.5t43 123t-51 121.5t-133 49t-134.5 -46t-52.5 -102.5z" />
+<glyph unicode="9" horiz-adv-x="1112" d="M86 133l115 160q143 -125 297 -125q274 0 303 446q-61 -59 -140 -85.5t-155 -26.5t-156 28.5t-137 83.5q-125 117 -125 324q0 203 117 340q125 143 344 143q248 0 371 -233q100 -190 100 -496q0 -293 -127 -487q-61 -96 -157.5 -154.5t-203 -58.5t-174 15.5t-120.5 37.5 q-74 31 -152 88zM303 956q0 -137 70 -211q64 -67 164 -67q43 0 86 15.5t77 45.5q80 72 88 176q-35 229 -153 304q-43 27 -100 26q-100 0 -166 -73.5t-66 -215.5z" />
+<glyph unicode=":" horiz-adv-x="481" d="M119 399.5q0 51.5 35.5 86t86 34.5t86 -35.5t35.5 -85t-35.5 -85t-86 -35.5t-86 34.5t-35.5 86zM119 884q0 50 35.5 86t86 36t86 -37t35.5 -87.5t-35.5 -85t-87 -34.5t-86 36t-34.5 86z" />
+<glyph unicode=";" horiz-adv-x="499" d="M90 -211l103 209l-54 235l215 39q23 -90 23 -156.5t-17.5 -130t-44.5 -116.5q-49 -100 -118 -170l-107 61v29zM117 679q0 50 35.5 86t86 36t86 -37t35.5 -87t-35.5 -85t-87 -35t-86 36t-34.5 86z" />
+<glyph unicode="&#x3c;" horiz-adv-x="866" d="M59 627v139l670 405v-192l-473 -285l473 -282v-199z" />
+<glyph unicode="=" horiz-adv-x="923" d="M125 475v156h674v-156h-674zM125 733v156h674v-156h-674z" />
+<glyph unicode="&#x3e;" horiz-adv-x="866" d="M137 213v199l473 282l-473 285v192l670 -405v-139z" />
+<glyph unicode="?" horiz-adv-x="835" d="M80 1028l35 326q174 61 282.5 61t177 -25.5t113.5 -68.5q88 -84 88 -215q0 -174 -129 -293q-39 -35 -78 -63l-75 -54q-94 -68 -103 -168q-2 -25 -2 -43l-162 -2l-4 21q-8 29 -8 89t25.5 105t64.5 80t84 65.5t84 65.5q90 78 90 181q0 61 -44 107t-130 46q-88 0 -129 -18 l-55 -197h-125zM193 113.5q0 50.5 34.5 85t84.5 34.5t87 -35.5t37 -85t-37 -85t-87 -35.5t-84.5 35.5t-34.5 86z" />
+<glyph unicode="@" horiz-adv-x="1701" d="M63 553q0 184 67 329.5t177 247.5q229 207 567 207q326 0 539 -207q102 -96 160.5 -229t58.5 -261t-27.5 -221t-78.5 -165q-113 -156 -289 -156q-119 0 -174 64q-98 -63 -221 -64q-166 0 -275 103q-121 115 -121 319q0 231 152 348q117 88 272 88q109 0 203 -45l74 29 l55 -18v-586q0 -43 16.5 -55.5t43 -12.5t59.5 24.5t59 72.5q59 102 59.5 235t-38.5 234.5t-111 173.5q-156 156 -413 155q-266 0 -443 -172q-176 -172 -176 -442q0 -313 184 -486q168 -159 455 -159q143 0 240 39l37 -9l-58 -176q-100 -31 -261 -30.5t-307.5 56.5 t-252.5 163q-231 225 -232 606zM643 528q0 -141 74 -217q59 -61 176 -61q61 0 119 47q-2 20 -2 39v440q-61 31 -118.5 31t-100.5 -16.5t-76 -49.5q-72 -76 -72 -213z" />
+<glyph unicode="A" horiz-adv-x="1245" d="M-2 127l106 37l414 1251h197l436 -1251l94 -37l-22 -127h-482v121l181 43l-99 303h-438l-94 -303l176 -41v-123h-442zM438 643h328l-168 514z" />
+<glyph unicode="B" horiz-adv-x="1181" d="M94 1262v153h473q221 0 353 -104q124 -99 124 -264q0 -120 -65 -211q-59 -84 -145 -111q111 -23 186 -102q82 -86 82 -213t-44 -205t-116 -123q-123 -82 -332 -82h-489l-21 143l125 29v1077zM430 176h160q201 0 270 115q27 45 27 110.5t-25.5 108.5t-68.5 68 q-80 45 -207 45h-156v-447zM430 799h90q158 0 233.5 54t75.5 171q0 215 -274 215h-125v-440z" />
+<glyph unicode="C" horiz-adv-x="1191" d="M70 692q0 340 209 541q190 182 483 182q131 0 303 -39l39 -372h-139l-80 221q-39 14 -135.5 14t-185.5 -43t-150 -115q-129 -152 -129 -368q0 -236 141 -389q143 -156 381 -156q88 0 161.5 26.5t106.5 51.5l60 -162q-129 -92 -363 -92q-283 0 -483 180q-219 199 -219 520 z" />
+<glyph unicode="D" horiz-adv-x="1296" d="M100 145l125 29v1077l-123 13v151h387q334 0 531 -178q203 -182 203 -520t-195 -529q-193 -188 -530 -188h-377zM428 176l16 -2q563 0 564 545q0 246 -148 387q-143 135 -383 135l-49 -2v-1063z" />
+<glyph unicode="E" horiz-adv-x="1103" d="M98 145l125 27v1079l-123 11v153h873l41 -385h-129l-78 209h-381v-430h324v-176h-324v-457h401l72 207h129l-41 -383h-868z" />
+<glyph unicode="F" horiz-adv-x="1046" d="M98 145l125 27v1079l-123 11v153h873l43 -385h-127l-82 209h-381v-430h324v-176h-324v-453l332 -47l-13 -133h-626z" />
+<glyph unicode="G" horiz-adv-x="1259" d="M68 690q0 328 198 527q198 198 511 198h3q154 0 320 -43l30 -371h-149l-74 228q-61 10 -151 10t-180.5 -41t-153.5 -113q-139 -158 -139 -389q0 -240 147 -383q150 -145 399 -145q70 0 111 8l2 301l-233 29l36 145h400v-622q-147 -37 -321.5 -37t-308.5 47t-234 137 q-213 190 -213 514z" />
+<glyph unicode="H" horiz-adv-x="1376" d="M100 147l123 23v1079l-123 11v155h430l21 -153l-123 -21v-424h520v432l-117 11v155h424l21 -153l-123 -21v-1075l123 -16v-150h-424l-21 147l117 23v471h-520v-475l125 -16v-150h-432z" />
+<glyph unicode="I" horiz-adv-x="653" d="M94 147l129 23v1079l-129 11v155h447l20 -153l-133 -21v-1075l133 -16v-150h-448z" />
+<glyph unicode="J" horiz-adv-x="751" d="M16 96l109 162q90 -84 149 -84q76 0 76 113v954l-157 21l20 153h469v-155l-127 -11v-944q0 -182 -109 -262q-70 -51 -161 -51q-160 0 -269 104z" />
+<glyph unicode="K" horiz-adv-x="1255" d="M94 147l129 23v1079l-129 8v158h438l19 -151l-123 -23v-577l477 581l-145 23v147h452v-149l-67 -15l-393 -473l354 -612l113 -21v-145h-285l-324 608l-182 -219v-223l125 -16v-150h-440z" />
+<glyph unicode="L" horiz-adv-x="1046" d="M98 145l125 23v1083l-123 11v153h441l18 -151l-133 -23v-1065h401l72 207h129l-41 -383h-868z" />
+<glyph unicode="M" horiz-adv-x="1748" d="M92 145l129 27v1075l-102 10v158h422l331 -1147l345 1147h399l20 -158l-106 -16v-1075l112 -23l-8 -143h-397l-16 147l118 27v1053l-362 -1196h-236l-350 1206v-1069l121 -23v-145h-395z" />
+<glyph unicode="N" horiz-adv-x="1425" d="M96 145l129 27v1075l-123 13v155h428l517 -1218v1050l-127 17v151h403l27 -153l-131 -25v-1237h-304l-518 1221v-891l2 -146q0 -12 2 -18l117 -21v-145h-397z" />
+<glyph unicode="O" d="M88 705q0 303 143 499q156 213 435 213t436 -213q145 -199 145 -499q0 -301 -145 -500q-157 -213 -436 -213t-435 213q-143 197 -143 500zM303 700q0 -221 90 -370q96 -162 273 -162q178 0 276 162q90 147 90 370q0 225 -90 377q-100 164 -276 164t-273 -164 q-90 -152 -90 -377z" />
+<glyph unicode="P" horiz-adv-x="1132" d="M94 143l131 29v1077l-129 11v155h432q285 0 430 -129q131 -119 132 -323q0 -240 -162 -359q-143 -104 -404 -104h-94v-322q51 -10 297 -41l-6 -137h-606zM430 676h86q188 0 279 86q79 76 79 203q0 274 -372 274h-72v-563z" />
+<glyph unicode="Q" d="M88 705q0 303 143 499q156 213 435 213t436 -213q145 -199 145 -499q0 -301 -145 -500q-157 -213 -436 -213t-435 213q-143 197 -143 500zM303 700q0 -221 90 -370q96 -162 273 -162q178 0 276 162q90 147 90 370q0 225 -90 377q-100 164 -276 164t-273 -164 q-90 -152 -90 -377zM530 -131l80 86l430 -154l13 -67l-183 -162q-88 72 -171 146.5t-169 150.5z" />
+<glyph unicode="R" horiz-adv-x="1196" d="M94 143l131 29v1077l-129 11v155h432q285 0 430 -129q131 -119 132 -323q0 -141 -72 -239.5t-195 -150.5l199 -407l117 -25v-141h-285l-229 524q-49 -6 -101 -6h-94v-348l162 -29v-141h-477zM430 694h86q182 0 279 88q79 70 79 183q0 274 -372 274h-72v-545z" />
+<glyph unicode="S" horiz-adv-x="1038" d="M96 1035.5q0 99.5 36 167t97 114.5q129 98 316 98q180 0 346 -61l29 -353h-142l-90 222q-61 20 -154.5 20t-158 -43t-64.5 -131q0 -102 103 -168q45 -31 100 -54.5t128 -56t136.5 -77.5t102.5 -95q74 -91 74 -209q0 -119 -41 -197q-40 -77 -107 -126q-127 -94 -336 -94 t-365 78l15 346h143l37 -219q88 -33 176 -33q176 0 242 115q23 38 23 98q0 63 -38 115q-38 50 -125 93.5t-172 78t-154 83t-113 119t-44 170z" />
+<glyph unicode="T" horiz-adv-x="1187" d="M29 1036l43 379h1044l45 -379h-125l-86 203h-256v-1063l238 -41l-19 -135h-630l-27 135l233 41v1063h-251l-84 -203h-125z" />
+<glyph unicode="U" horiz-adv-x="1325" d="M61 1262v153h474v-151l-142 -19v-768q0 -145 72 -227t219 -82q190 0 258 164q25 59 25 147v768l-125 19v149h413v-151l-116 -21v-772q0 -238 -144 -365q-124 -114 -314 -114h-3q-236 0 -363 126t-127 353v778z" />
+<glyph unicode="V" horiz-adv-x="1185" d="M14 1276v139h463l17 -127l-187 -39l301 -930l305 934l-184 35v127h449v-139l-78 -27l-414 -1249h-188l-410 1249z" />
+<glyph unicode="W" horiz-adv-x="1830" d="M31 1274v141h440l18 -127l-149 -33l186 -1024l305 1147h205l307 -1155l193 1037l-168 30l12 125h441v-139l-121 -39l-242 -1237h-270l-275 1047l-276 -1047h-272l-232 1243z" />
+<glyph unicode="X" horiz-adv-x="1175" d="M41 0v127l90 14l334 545l-338 561l-86 25v143h457l16 -125l-145 -30l239 -392l230 389l-121 29v129h416v-149l-89 -15l-333 -549l331 -542l91 -25v-135h-463v127l129 10l-232 383l-225 -385l115 -14v-121h-416z" />
+<glyph unicode="Y" horiz-adv-x="1153" d="M8 1262v153h436l15 -135l-131 -25l278 -512l250 514l-117 23v135h400v-153l-88 -21l-369 -737v-334l238 -41l-21 -129h-635l-20 129l235 41v346l-389 727z" />
+<glyph unicode="Z" horiz-adv-x="1132" d="M76 158l727 1081h-531l-41 -219h-129v395h906l24 -190q-66 -100 -151.5 -233.5t-179 -276t-186.5 -282.5t-169 -257h522l39 217h131v-393h-929z" />
+<glyph unicode="[" horiz-adv-x="657" d="M160 -338v1751l16 25h475q12 0 13 -15v-137h-310v-1501h310v-135q0 -16 -13 -17h-469z" />
+<glyph unicode="\" horiz-adv-x="942" d="M43 1391v24h182l674 -1388l-16 -27h-166z" />
+<glyph unicode="]" horiz-adv-x="657" d="M-6 -215h309v1501h-309v137q0 14 12 15h475l17 -25v-1751l-23 -29h-469q-12 0 -12 17v135z" />
+<glyph unicode="^" horiz-adv-x="907" d="M106 1151l322 332h53l320 -334l-4 -10h-166l-178 121l-177 -121h-163z" />
+<glyph unicode="_" horiz-adv-x="1153" d="M10 -27l29 27h1091q12 0 13 -14v-140h-1133v127z" />
+<glyph unicode="`" horiz-adv-x="618" d="M106 1294l123 146l64 -17l219 -323l-76 -76z" />
+<glyph unicode="a" horiz-adv-x="942" d="M74 253.5q0 108.5 44 172t115 100.5q125 63 367 68v145q0 41 -38 75t-118 34q-76 0 -112 -33l-41 -133l-215 63q47 170 231 230q66 20 148 20q160 0 244.5 -79.5t84.5 -208.5v-525q0 -43 29 -43q14 0 43 15l45 -109q-63 -53 -141 -53q-117 0 -148 92q-90 -94 -229 -94 t-224 77.5t-85 186zM268 283.5q0 -50.5 15.5 -76t38 -40.5t47 -20.5t55.5 -5.5t62.5 13.5t54.5 31.5q43 33 59 82v176q-135 0 -198.5 -21.5t-98.5 -55t-35 -84z" />
+<glyph unicode="b" horiz-adv-x="1003" d="M4 1458l260 39l62 -65v-492q86 55 188 55t176 -34.5t127 -98.5q113 -135 113 -356q0 -279 -152 -412q-117 -102 -286 -102q-113 0 -197 47q-98 -49 -107 -51l-47 28v1327l-118 -8zM326 199q16 -20 62 -37t91 -17t88 15.5t80 56.5q88 90 88 277q0 176 -76 266 q-65 80 -167 80q-49 0 -95.5 -19.5t-70.5 -48.5v-573z" />
+<glyph unicode="c" horiz-adv-x="884" d="M74 477q0 268 143 408q114 110 294 110h3q133 0 231 -69q80 -55 107 -117l-203 -96l-65 118q-41 10 -68 11q-248 0 -248 -361q0 -154 75 -245t198 -91q57 0 120.5 21.5t104.5 62.5l45 -143q-123 -94 -299 -94q-184 0 -303 119q-135 131 -135 366z" />
+<glyph unicode="d" horiz-adv-x="1028" d="M74 481q0 279 151 412q117 102 287 102q86 0 164 -32v380l-117 -8l-18 123l256 43l63 -69v-1250q0 -43 29 -43q14 0 43 15l45 -109q-63 -53 -153 -53q-1 0 -2 -1q-89 0 -124 68q-95 -68 -202 -68l-2 1q-108 0 -181 34.5t-127 98.5q-113 135 -112 356zM268 494 q0 -176 76 -267q66 -80 168.5 -80t163.5 66v578q-18 18 -62.5 34.5t-89.5 16.5t-88 -15.5t-80 -56.5q-88 -90 -88 -276z" />
+<glyph unicode="e" horiz-adv-x="909" d="M108 706q36 96 99 158q123 131 307 131q135 0 227 -71q95 -76 95 -199q0 -63 -21.5 -123.5t-83.5 -109.5q-139 -111 -455 -115q33 -162 166 -213q46 -18 102 -18q3 0 6 -1q52 -1 89 9q39 10 68 22q55 27 77 49l45 -143q-23 -23 -75 -45q-112 -46 -221 -46q-91 0 -181 32 q-178 63 -246 247q-35 91 -35 213q0 126 37 223zM266 528q150 0 223.5 23.5t112.5 61.5t39 95.5t-30.5 94.5t-89 37t-98.5 -18.5t-73 -55.5q-72 -84 -84 -238z" />
+<glyph unicode="f" horiz-adv-x="690" d="M35 975l14 20h154v187q0 156 84 239q74 74 196 74q141 0 262 -86q25 -16 31 -23l-145 -169l-131 120q-12 4 -29 4q-82 0 -82 -135v-211h232q10 0 10 -12v-141h-242v-697l234 -34v-111h-512l-25 111l117 24v707h-140z" />
+<glyph unicode="g" horiz-adv-x="999" d="M37 -258q0 193 170 276q-49 41 -49 130t80 169q-158 104 -158 301q0 164 113 271q109 106 265 106t267 -90l203 103l43 -7l20 -170l-184 -22q49 -90 49 -185.5t-34 -163t-89 -112.5q-109 -90 -266 -90q-51 0 -90 8l-51 -80l8 -34q20 -4 87.5 -13.5t156 -30t151 -52 t98.5 -68.5q62 -69 62 -173q0 -101 -37 -169q-37 -70 -96 -117q-121 -92 -295 -92q-184 0 -299 78q-125 84 -125 227zM217 -229q0 -68 76 -113q70 -41 180 -41q109 0 182 47q78 47 78 111.5t-56 90t-157.5 47t-157.5 38.5q-145 -59 -145 -180zM274 644q0 -75 16.5 -116 t43.5 -65q51 -51 134 -51t138.5 55t55.5 160q0 104 -58.5 159.5t-136.5 55.5h-8q-84 -4 -134.5 -63.5t-50.5 -134.5z" />
+<glyph unicode="h" horiz-adv-x="1067" d="M37 1458l256 43l63 -69v-510q101 73 238 73h4q213 0 279 -155q24 -51 24 -125v-6v-566l123 -32v-111h-408l-24 111l125 28v539q0 92 -43 126t-91 34t-80 -8.5t-61 -20.5q-57 -25 -86 -53v-613l121 -32v-111h-407l-25 111l127 28v1204l-117 -8z" />
+<glyph unicode="i" horiz-adv-x="548" d="M59 950l252 45l66 -65v-787l121 -32v-111h-410l-22 111l127 28v697l-113 -9zM127 1364q0 53 37 90t90 37t90 -39t37 -90t-37 -88t-90 -37t-90 37t-37 90z" />
+<glyph unicode="j" horiz-adv-x="497" d="M-76 -504l78 150q14 -10 39.5 -28.5t60.5 -18.5q72 0 72 125v1112l-108 -9l-19 123l248 45l63 -65v-1184q0 -162 -66.5 -232.5t-178.5 -70.5q-104 0 -189 53zM106 1364q0 53 37 90t90 37t90 -39t37 -90t-36.5 -88t-91 -37t-90.5 37t-36 90z" />
+<glyph unicode="k" horiz-adv-x="993" d="M37 1458l256 43l63 -69v-891l314 325h-101l-16 129h326l49 -94l-318 -307l236 -455l108 -24v-115h-256l-233 453l-109 -105v-213l121 -24v-111h-407l-25 111l127 28v1204l-117 -8z" />
+<glyph unicode="l" horiz-adv-x="532" d="M35 1458l256 43l65 -69v-1289l129 -32v-111h-417l-25 111l129 28v1204l-117 -8z" />
+<glyph unicode="m" horiz-adv-x="1632" d="M59 950q27 4 62 11.5t69.5 13.5t67.5 11t53 9l60 -75q97 76 254 76h3q158 0 234 -99q133 98 299 98q213 0 283 -155q24 -51 24 -125v-6v-566l121 -32v-111h-409l-23 111l127 28v539q0 86 -51 127q-43 33 -108.5 33t-122 -25t-84.5 -49v-21l2 -59v-541l122 -32v-111h-407 l-25 111l125 28v539q0 92 -43 126t-106.5 34t-123 -27t-85.5 -53v-615l119 -32v-111h-408l-25 111l130 28v697l-113 -9z" />
+<glyph unicode="n" horiz-adv-x="1085" d="M59 950q27 4 62 11.5t69.5 13.5t67.5 11t53 9l60 -75q97 75 241 75h4q213 0 281 -155q23 -53 23 -131v-564l122 -34v-111h-407l-25 111l125 28v539q0 92 -43 126t-106.5 34t-123 -27t-85.5 -53v-615l119 -32v-111h-408l-25 111l130 28v697l-113 -9z" />
+<glyph unicode="o" horiz-adv-x="1013" d="M74 502q0 119 34.5 211t96.5 155q119 127 303 127q188 0 311 -135t123 -362q0 -238 -131 -375q-121 -131 -303 -131q-190 0 -311 139q-123 138 -123 371zM268 478q0 -163 66 -248t172 -85t174 83t68 253t-65 265.5t-175 95.5q-117 0 -180 -101q-60 -96 -60 -263z" />
+<glyph unicode="p" horiz-adv-x="1034" d="M39 952l256 43l55 -59q92 59 194.5 59t176.5 -34.5t127 -98.5q113 -135 113 -356q0 -279 -152 -412q-117 -102 -287 -102q-94 0 -164 31v-431l250 -45v-108h-536l-25 108l127 31v1260l-117 -9zM358 197q18 -20 62.5 -36t89.5 -16t88 15.5t82 56.5q86 90 86 277 q0 176 -74 266q-68 80 -168 80t-166 -66v-577z" />
+<glyph unicode="q" horiz-adv-x="1001" d="M74 481q0 279 151 412q117 102 287 102q102 0 184 -41l117 43l47 -39v-1331l113 -39v-149h-527l-22 129l252 49v428q-82 -53 -185.5 -53t-177 34.5t-127.5 98.5q-113 135 -112 356zM268 494q0 -176 76 -267q66 -80 168.5 -80t163.5 66v578q-18 18 -62.5 34.5t-89.5 16.5 t-88 -15.5t-80 -56.5q-88 -90 -88 -276z" />
+<glyph unicode="r" horiz-adv-x="829" d="M59 950q115 18 242 43l64 -94q82 94 213 94q90 0 152.5 -45t92.5 -110l-202 -103l-64 99q-70 0 -125 -60q-57 -59 -57 -158v-442q0 -8 35 -14l231 -49v-111h-553l-25 111l127 28v690h-112z" />
+<glyph unicode="s" horiz-adv-x="827" d="M49 207l211 80l49 -119q47 -20 87 -20q3 0 6 -1q36 1 58 7q24 6 46 18q47 31 47 90q0 76 -93 116t-160 72.5t-112 69.5q-92 78 -92 205q0 125 101 201q94 69 225 69q66 0 121 -18.5t96 -46.5q78 -53 121 -137l-209 -80l-47 104q-41 21 -88 21h-2q-46 0 -84 -28 q-39 -28 -39 -81t51 -87t141 -70.5t138.5 -69.5t74.5 -70q52 -69 52 -153q0 -81 -31 -133q-31 -54 -80 -89q-95 -65 -230 -65h-4q-115 0 -223 63q-100 61 -131 152z" />
+<glyph unicode="t" horiz-adv-x="665" d="M8 975l15 20h182v342l164 39l10 -30v-351h213q10 0 10 -12v-141h-223v-588q0 -66 19.5 -85t49 -19t50 6t39.5 16q38 17 61 35q4 -14 43 -135q-29 -27 -84 -53.5t-143 -26.5t-148.5 53t-60.5 174v623h-168z" />
+<glyph unicode="u" horiz-adv-x="1044" d="M25 950l254 45l63 -67v-555q0 -193 113 -217q31 -8 58.5 -8t55 7t54.5 21q59 33 77 80v575h-106l-19 119l250 47l60 -69v-723q0 -68 37 -68l36 4l29 -92q-57 -57 -133 -57q-106 0 -139 92q-96 -92 -230 -92q-225 0 -301 184q-26 61 -26 148v6v501h-113z" />
+<glyph unicode="v" horiz-adv-x="956" d="M0 977l248 18l260 -755l252 620h-111l-14 117l248 18l65 -77l-381 -928h-161l-310 870h-80z" />
+<glyph unicode="w" horiz-adv-x="1441" d="M10 979l273 20l159 -784l193 758h223l209 -760l158 639h-92l-15 127l228 18l45 -71l-224 -932h-241l-195 731l-188 -731h-244l-184 858h-90z" />
+<glyph unicode="x" horiz-adv-x="950" d="M57 129h86l213 367l-215 364h-84v135h230l217 -360l196 360h185v-129h-78l-219 -372l217 -361h88v-133h-240l-207 346l-198 -346h-182z" />
+<glyph unicode="y" horiz-adv-x="983" d="M2 979l254 16l276 -829l259 686h-107l-14 125l248 18l53 -69q-184 -522 -329.5 -896t-169 -422t-54.5 -87q-72 -84 -185 -84q-90 0 -182 82l76 141q57 -70 121 -70q66 0 112 123q14 35 27 66l45 121l-332 952h-82z" />
+<glyph unicode="z" horiz-adv-x="866" d="M88 0v158l469 682q-160 4 -321 4l-29 -160h-119v311h690v-159l-471 -682h326l29 168h116v-322h-690z" />
+<glyph unicode="{" horiz-adv-x="690" d="M14 477v170q98 0 163 57.5t65 167.5l-2 78l-2 92q0 205 53 293q66 111 252 111q53 0 101 -9.5t50 -10.5t6 -1l-61 -196l-145 49q-63 -35 -64 -201l2 -205q0 -297 -215 -313q215 -8 215 -311l-2 -180q0 -143 29 -197q12 -23 35 -33l145 49l61 -196q-121 -23 -157 -23 q-182 0 -254 127q-51 90 -51 283l4 198q0 141 -142 187q-41 14 -86 14z" />
+<glyph unicode="|" horiz-adv-x="505" d="M160 -438v1859h186v-1859h-186z" />
+<glyph unicode="}" horiz-adv-x="690" d="M-10 -309l61 196l146 -49q63 29 63 230l-2 180q0 305 217 317q-217 0 -217 307l2 205q0 166 -63 201l-146 -49l-61 196q123 20 190.5 20.5t127 -28t91.5 -82.5q53 -86 54 -293l-2 -92l-2 -78q0 -111 64.5 -168t162.5 -57v-170q-92 0 -160 -51q-68 -53 -67 -150l4 -198 q0 -193 -52 -283q-72 -127 -254 -127q-43 0 -83.5 8.5t-73.5 14.5z" />
+<glyph unicode="~" horiz-adv-x="839" d="M51 1186l2 26q35 74 76 107q80 63 164 63q70 0 158 -47l63 -30q29 -14 53 -15l113 101l121 -140q-109 -121 -213 -121q-55 0 -116.5 29t-96.5 42t-80 13t-77 -31.5t-46 -68.5z" />
+<glyph unicode="&#xa1;" horiz-adv-x="520" d="M121 -387l65 901h142l75 -850l-43 -78zM137 887q0 51 35 86t85 35t87 -36t37 -85t-37 -85t-87 -36t-85 35t-35 86z" />
+<glyph unicode="&#xa2;" horiz-adv-x="894" d="M63 477q0 233 105 367q92 115 242 141v420h184v-420q96 -18 168 -80q47 -39 80 -96l-203 -96l-66 118q-41 10 -67 11q-248 0 -248 -361q0 -154 75 -245t197 -91q57 0 121 21.5t105 62.5l45 -143q-90 -68 -207 -86v-430h-184v430q-150 31 -242 145q-104 127 -105 332z" />
+<glyph unicode="&#xa3;" horiz-adv-x="1079" d="M61 42q0 32 21.5 78t64.5 83q82 82 114 213t40 276h-182v135l16 19h172l-4 192q0 289 205 355q59 20 123.5 20t115 -12t91.5 -29q66 -29 114 -65l-145 -187l-164 140q-96 -4 -125 -82q-18 -49 -18 -226v-106h286q14 0 15 -17v-137h-307q-14 -276 -82 -413q113 -8 315 -82 q39 -14 61 -15l156 105l80 -217q-72 -78 -231 -78q-100 0 -197.5 31.5t-145 46t-102.5 14.5t-89 -28.5t-44 -61.5h-149q-2 4 -3 10q-2 6 -2 38z" />
+<glyph unicode="&#xa4;" horiz-adv-x="1232" d="M104 317l138 138q-78 113 -78 254q0 143 82 260l-142 143l142 145l153 -153q98 55 216 55t216 -57l156 155l143 -145l-147 -145q82 -117 82 -258q0 -139 -78 -252l143 -140l-143 -145l-149 147q-102 -59 -222 -59t-223 57l-147 -145zM358 709q0 -113 72 -186.5t184 -73.5 q113 0 184.5 73.5t71.5 186.5t-71.5 186.5t-184.5 73.5t-184.5 -73.5t-71.5 -186.5z" />
+<glyph unicode="&#xa5;" horiz-adv-x="1249" d="M51 1266v149h424l14 -129l-124 -26l284 -451l281 453l-121 22v131h389v-149l-78 -21l-385 -612h223v-158h-225v-43h225v-158h-225v-104l234 -41l-17 -129h-631l-18 129l227 41v104h-243v158h243v43h-243v158h229l-381 614z" />
+<glyph unicode="&#xa6;" horiz-adv-x="528" d="M166 -381v778h196v-778h-196zM166 635v778h196v-778h-196z" />
+<glyph unicode="&#xa7;" horiz-adv-x="1030" d="M98 -254l17 346h139l29 -231q98 -29 165.5 -29t110.5 9t76 32q76 47 76 122t-44 118t-112 78.5t-144.5 69.5t-144.5 79q-156 100 -156 244.5t113 246.5q-117 98 -117 240q0 147 119 244q123 100 305 100q176 0 357 -61l26 -353h-141l-88 232q-57 20 -150.5 20t-154 -45 t-60.5 -104.5t32 -96t80 -66.5t104.5 -52.5t123 -55t124 -72.5t91.5 -81q66 -80 66 -197.5t-111 -228.5q94 -90 95 -219q0 -178 -142 -279q-125 -86 -321 -86q-113 0 -196 21.5t-167 54.5zM324 622.5q0 -63.5 61 -106.5t131 -74q117 -55 162 -80q47 63 47 110.5t-31.5 83.5 t-82 65.5t-113 57.5t-123.5 58q-51 -51 -51 -114.5z" />
+<glyph unicode="&#xa8;" horiz-adv-x="790" d="M106 1246q0 48 34 85t84 37t86 -37t36 -86t-37 -84t-85 -35t-83 36t-35 84zM442 1247q0 47 36 84t86 37t85 -37t35 -85t-36 -84t-84 -36t-85 37t-37 84z" />
+<glyph unicode="&#xa9;" horiz-adv-x="1466" d="M66 765q0 138 52 260t142 213t212 143.5t260 52.5t260 -52.5t213 -143.5t143.5 -213t52.5 -260t-52.5 -260t-143.5 -212t-213 -142.5t-260 -52.5t-260 52.5t-212 142.5t-142 212t-52 260zM246 766q0 -102 38 -190.5t105 -153.5q141 -143 344 -143t345.5 142t142.5 345 t-142.5 345t-345.5 142t-345 -142t-142 -345zM375 752q0 182 112 290q106 104 273 105q57 0 94 -4l53 -10l19 -248h-97l-28 104l-37 2q-104 0 -168 -57t-64 -166t61.5 -173.5t153 -64.5t164.5 45l54 -133q-98 -63 -192.5 -63t-164 26.5t-121.5 73.5q-113 104 -112 273z" />
+<glyph unicode="&#xaa;" horiz-adv-x="700" d="M78 1019.5q0 67.5 27.5 106.5t72.5 60q76 35 219 35v18q0 47 -23.5 61.5t-45.5 14.5q-31 0 -62 -6l-8 -49l-178 34q18 78 92 123q63 37 150.5 37t137.5 -27.5t72.5 -74.5t26.5 -110.5t4 -138.5t3 -93.5t14 -18.5l26 6l31 -94q-59 -45 -121.5 -45t-93.5 49 q-53 -53 -143.5 -53t-145.5 49t-55 116.5zM242 1038q0 -20 13 -39.5t50 -19.5q70 0 92 51v88q-156 0 -155 -80z" />
+<glyph unicode="&#xab;" horiz-adv-x="944" d="M12 694l437 439l110 -111l-330 -330l330 -332l-110 -108zM360 694l394 396l110 -111l-286 -287l286 -289l-110 -108z" />
+<glyph unicode="&#xac;" horiz-adv-x="1204" d="M100 778v131l23 23h928l22 -23v-413q0 -14 -16 -15h-144v297h-813z" />
+<glyph unicode="&#xad;" horiz-adv-x="825" d="M-57 639v176h938v-176h-938z" />
+<glyph unicode="&#xae;" horiz-adv-x="1466" d="M66 765q0 138 52 260t142 213t212 143.5t260 52.5t260 -52.5t213 -143.5t143.5 -213t52.5 -260t-52.5 -260t-143.5 -212t-213 -142.5t-260 -52.5t-260 52.5t-212 142.5t-142 212t-52 260zM246 766q0 -102 38 -190.5t105 -153.5q141 -143 344 -143t345.5 142t142.5 345 t-142.5 345t-345.5 142t-345 -142t-142 -345zM467 1026v119h205q174 0 262 -74q80 -65 80 -178q0 -147 -133 -211l94 -172l63 -12v-103h-180l-117 252q-23 -4 -43 -4h-41v-131l95 -23v-94h-275l-8 99l47 16v506zM657 776h29q178 0 178 116t-170 116h-37v-232z" />
+<glyph unicode="&#xaf;" horiz-adv-x="905" d="M117 1257v156h671v-156h-671z" />
+<glyph unicode="&#xb0;" horiz-adv-x="624" d="M68 1220.5q0 118.5 63 194.5q66 78 180 78q113 0 181 -78q66 -78 65.5 -195.5t-65 -194.5t-182 -77t-180 77t-62.5 195.5zM229 1221q0 -82 41 -119q14 -14 40 -14.5t41.5 13t25.5 34.5q18 37 18 86q0 78 -43 114q-16 14 -41.5 14.5t-41 -13t-23.5 -33.5q-17 -35 -17 -82z " />
+<glyph unicode="&#xb1;" horiz-adv-x="931" d="M129 346v156h674v-156h-674zM129 842v155h258v240h156v-240h260v-155h-260v-264h-156v264h-258z" />
+<glyph unicode="&#xb2;" horiz-adv-x="614" d="M72 1286q29 86 96.5 126t123.5 40t92 -11t65 -34q66 -51 65.5 -123t-25 -119t-58.5 -82.5t-69.5 -62.5t-56.5 -45h107l30 69h86l-22 -188h-391l-21 88l72 64q131 121 158.5 169.5t27.5 79.5q0 68 -67 68q-23 0 -43 -8l-31 -74z" />
+<glyph unicode="&#xb3;" horiz-adv-x="604" d="M72 934l63 108q35 -29 68 -50t78 -21t66.5 21.5t21.5 56.5q0 59 -146 59v98q125 0 125 72q0 16 -14.5 32.5t-34.5 16.5q-53 0 -57 -10l-29 -62l-135 45q59 152 233 152q72 0 115 -31q82 -59 82 -127q0 -106 -100 -129q45 -10 82.5 -40.5t37.5 -87t-20.5 -90.5t-52.5 -56 q-66 -43 -154 -43q-143 0 -229 86z" />
+<glyph unicode="&#xb4;" horiz-adv-x="641" d="M106 1124l238 310l66 16l125 -166l-345 -250z" />
+<glyph unicode="&#xb6;" horiz-adv-x="1196" d="M57 1024q0 154 95 258q123 133 354 133h575v-164h-98v-1251h-174v1251h-92v-979l-2 -67q0 -82 -187 -232l-135 185l139 88v366q-225 10 -350 121t-125 291z" />
+<glyph unicode="&#xb7;" horiz-adv-x="485" d="M121 489v328h219l27 -31l-2 -297h-244z" />
+<glyph unicode="&#xb8;" horiz-adv-x="831" d="M147 -510l89 176l145 -96q78 0 117 55q14 20 14 58t-37 73t-125 35l-26 2l-35 39l71 199h203l-47 -119q76 -20 132.5 -74.5t56.5 -158t-83 -174t-229 -70.5q-147 0 -246 55z" />
+<glyph unicode="&#xb9;" horiz-adv-x="485" d="M70 1399l241 69l23 -32v-478l74 -16v-86h-302l-6 82l78 14v367l-90 -16z" />
+<glyph unicode="&#xba;" horiz-adv-x="684" d="M70 1152q0 77 21.5 134t58.5 94q74 76 192 76q121 0 195 -76q78 -82 77 -227q0 -221 -163 -285q-51 -20 -109 -20q-186 0 -252 170q-20 57 -20 134zM233 1146.5q0 -65.5 28 -106.5t81 -41t82 40t29 107.5t-28 112t-82 44.5t-82 -45.5t-28 -111z" />
+<glyph unicode="&#xbb;" horiz-adv-x="946" d="M82 403l285 289l-285 287l111 111l393 -400l-393 -395zM387 1022l113 111l436 -443l-436 -438l-111 108l328 330z" />
+<glyph unicode="&#xbc;" horiz-adv-x="1343" d="M63 1362l273 78l24 -17v-114q0 -12 -2 -25v-524q0 -18 74 -19v-96h-338v92l92 15v522l-106 -17zM193 4l684 1411h182l-2 -29l-682 -1409l-176 23zM686 221v150l318 420h180v-435h96v-135h-96v-108l86 -13v-100h-422l-8 90l172 25v106h-326zM827 356h185v238z" />
+<glyph unicode="&#xbd;" horiz-adv-x="1435" d="M68 1362l272 78l25 -17v-114q0 -12 -3 -25v-524q0 -18 74 -19v-96h-338v92l92 15v522l-106 -17zM197 4l684 1411h182l-2 -29l-682 -1409l-176 23zM776 608q45 92 110.5 139.5t151.5 47.5t135.5 -18.5t79.5 -51.5q63 -63 64 -164q0 -141 -154 -311q-43 -49 -84 -94 l-20 -23h182l43 115h92l-26 -248h-514l-27 100q37 39 93 93.5t110 117.5q127 156 127 264q0 47 -29 63.5t-53 16.5q-27 0 -58 -12l-49 -117z" />
+<glyph unicode="&#xbe;" horiz-adv-x="1445" d="M59 1251q45 121 187 168q49 16 105.5 16.5t103.5 -13t82 -38.5q78 -55 77 -159q0 -61 -32.5 -109.5t-92.5 -66.5q66 -18 102 -63.5t36 -108.5q0 -119 -97 -185q-84 -59 -186 -59q-166 0 -262 72l111 114q59 -47 133 -47t112 55q13 18 13 47q0 113 -172 113h-27v119h27 q80 0 108 14q57 29 57 79t-36.5 73.5t-69.5 23.5q-35 0 -76 -16l-47 -100zM305 4l682 1411h184l-2 -29l-682 -1409l-176 23zM784 221v150l318 420h180v-435h96v-135h-96v-108l86 -13v-100h-422l-8 90l172 25v106h-326zM926 356h184v238z" />
+<glyph unicode="&#xbf;" horiz-adv-x="800" d="M47 -126q0 128 57.5 212t144.5 148.5t135 116.5t48 130v25l162 2l4 -21q6 -31 6 -88t-25.5 -106t-63.5 -87t-82 -67.5t-81 -64.5q-90 -78 -90 -172q0 -98 86 -140q31 -14 70 -14q84 0 135 19l53 194h125l-35 -323q-66 -23 -136.5 -41.5t-160.5 -18.5q-170 0 -261 84 t-91 212zM385 876.5q0 51.5 35 86t86 34.5t87 -35.5t36 -86t-37 -85t-88 -34.5t-85 34.5t-34 86z" />
+<glyph unicode="&#xc0;" horiz-adv-x="1245" d="M-2 127l106 37l414 1251h197l436 -1251l94 -37l-22 -127h-482v121l181 43l-99 307h-438l-94 -307l176 -41v-123h-442zM387 1726l115 168l69 -12l287 -317l-76 -90zM438 643h328l-168 514z" />
+<glyph unicode="&#xc1;" horiz-adv-x="1245" d="M-2 127l106 37l414 1251h197l436 -1251l94 -37l-22 -127h-482v121l181 43l-99 303h-438l-94 -303l176 -41v-123h-442zM387 1597l293 304l68 8l118 -187l-399 -229zM438 643h328l-168 514z" />
+<glyph unicode="&#xc2;" horiz-adv-x="1245" d="M-2 127l106 37l414 1251h197l436 -1251l94 -37l-22 -127h-482v121l181 43l-99 303h-438l-94 -303l176 -41v-123h-442zM274 1499l322 332h53l320 -334l-4 -10h-166l-178 121l-177 -121h-163zM438 643h328l-168 514z" />
+<glyph unicode="&#xc3;" horiz-adv-x="1245" d="M-2 127l106 37l414 1251h197l436 -1251l94 -37l-22 -127h-482v121l181 43l-99 303h-438l-94 -303l176 -41v-123h-442zM274 1559v34q45 100 148 144q45 18 113.5 18t127 -32.5t105.5 -67.5l18 -13l125 115l121 -137q-113 -125 -205 -125q-49 0 -83.5 15.5t-66.5 34 t-64.5 33.5t-87 15t-87 -34.5t-49.5 -69.5zM438 643h328l-168 514z" />
+<glyph unicode="&#xc4;" horiz-adv-x="1245" d="M-2 127l106 37l414 1251h197l436 -1251l94 -37l-22 -127h-482v121l181 43l-99 303h-438l-94 -303l176 -41v-123h-442zM311 1788q0 53 37 92t91.5 39t92 -39t37.5 -93t-40 -92t-91 -38t-89 39t-38 92zM438 643h328l-168 514zM674 1789q0 52 39 91t93 39t92 -39t38 -92 t-39 -92t-91 -39t-92 40t-40 92z" />
+<glyph unicode="&#xc5;" horiz-adv-x="1236" d="M-6 127l106 37l394 1192q-86 59 -86 170q0 86 59 145t145 60q86 0 146.5 -60.5t60.5 -157t-88 -157.5l416 -1192l94 -37l-22 -127h-482v121l181 43l-99 303h-438l-94 -303l176 -41v-123h-443zM434 643h328l-168 514zM535 1526q0 -37 21.5 -57.5t57 -20.5t57 20.5 t21.5 57.5t-21.5 57.5t-57 20.5t-57 -20.5t-21.5 -57.5z" />
+<glyph unicode="&#xc6;" horiz-adv-x="1609" d="M-25 127l107 37l524 1251h873l41 -385h-129l-78 209h-381v-430h323v-176h-323v-457h401l72 207h129l-41 -383h-868l-21 145l125 27v356h-319l-146 -364l180 -41v-123h-442zM481 705h248v546l-29 2z" />
+<glyph unicode="&#xc7;" horiz-adv-x="1193" d="M72 692q0 340 207 541q193 182 485 182q131 0 303 -39l39 -372h-139l-80 221q-39 14 -134.5 14t-185.5 -43t-153 -115q-127 -147 -127 -368q0 -236 141 -389q143 -156 381 -156q88 0 161.5 26.5t106.5 51.5l60 -162q-113 -80 -320 -90l-29 -74q72 -18 124.5 -69.5 t52.5 -148.5t-78 -163.5t-213 -66.5q-100 0 -219 49l-13 4l84 164l136 -88q72 0 108 51q14 18 14 53t-33.5 68.5t-117.5 33.5l-25 3l-33 34l58 160q-238 43 -391 217q-170 193 -170 471z" />
+<glyph unicode="&#xc8;" horiz-adv-x="1103" d="M98 145l125 27v1079l-123 11v153h873l41 -385h-129l-78 209h-381v-430h324v-176h-324v-457h401l72 207h129l-41 -383h-868zM301 1726l117 168l69 -12l285 -317l-74 -90z" />
+<glyph unicode="&#xc9;" horiz-adv-x="1103" d="M98 145l125 27v1079l-123 11v153h873l41 -385h-129l-78 209h-381v-430h324v-176h-324v-457h401l72 207h129l-41 -383h-868zM387 1597l295 304l70 8l116 -187l-399 -229z" />
+<glyph unicode="&#xca;" horiz-adv-x="1103" d="M98 145l125 27v1079l-123 11v153h873l41 -385h-129l-78 209h-381v-430h324v-176h-324v-457h401l72 207h129l-41 -383h-868zM207 1499l321 332h54l319 -334l-4 -10h-166l-178 121l-176 -121h-164z" />
+<glyph unicode="&#xcb;" horiz-adv-x="1103" d="M98 145l125 27v1079l-123 11v153h873l41 -385h-129l-78 209h-381v-430h324v-176h-324v-457h401l72 207h129l-41 -383h-868zM258 1810q0 53 37 92.5t91 39.5t92 -39t38 -93.5t-40 -92.5t-91 -38t-89 39t-38 92zM621 1811.5q0 52.5 38.5 91.5t93 39t92.5 -39t38 -93 q0 -53 -39 -92t-91.5 -39t-92 40t-39.5 92.5z" />
+<glyph unicode="&#xcc;" horiz-adv-x="655" d="M78 147l147 23v1079l-129 11v155h447l20 -153l-133 -21v-1075l133 -16v-150h-448zM78 1726l117 168l65 -12l287 -317l-74 -90z" />
+<glyph unicode="&#xcd;" horiz-adv-x="653" d="M94 147l129 23v1079l-129 11v155h447l20 -153l-133 -21v-1075l133 -16v-150h-448zM96 1597l293 304l70 8l116 -187l-399 -229z" />
+<glyph unicode="&#xce;" horiz-adv-x="653" d="M-20 1499l321 332h53l320 -334l-4 -10h-166l-178 121l-176 -121h-164zM94 147l129 23v1079l-129 11v155h447l20 -153l-133 -21v-1075l133 -16v-150h-448z" />
+<glyph unicode="&#xcf;" horiz-adv-x="653" d="M43 1634q0 53 37 91t88 38t91 -37.5t40 -91.5q0 -53 -40 -91t-91 -38t-88 38t-37 91zM94 147l129 23v1079l-129 11v155h447l20 -153l-133 -21v-1075l133 -16v-150h-448zM371 1633.5q0 54.5 39 92t92 37.5t89 -38.5t36 -91t-37 -90.5t-89 -38t-91 37t-39 91.5z" />
+<glyph unicode="&#xd0;" horiz-adv-x="1294" d="M76 637v139l20 23h127v452l-123 13v151h387q334 0 531 -178q203 -182 203 -520t-195 -529q-193 -188 -530 -188h-377l-21 145l125 29v463h-147zM426 176h49q264 0 399 148q132 139 132 401q0 129 -42 227.5t-120 161.5q-152 129 -418 129v-444h340q14 0 14 -17v-145h-354 v-461z" />
+<glyph unicode="&#xd1;" horiz-adv-x="1425" d="M96 145l129 27v1075l-123 13v155h428l517 -1218v1050l-127 17v151h403l27 -153l-131 -25v-1237h-240l-582 1223v-893l2 -146q0 -12 2 -18l117 -21v-145h-397zM342 1559v34q45 100 150 144q43 18 111.5 18t126.5 -32.5t106 -67.5l18 -13l125 115l121 -137 q-113 -125 -205 -125q-49 0 -84 15.5t-66.5 34t-64.5 33.5t-87 15t-87 -34.5t-49 -69.5z" />
+<glyph unicode="&#xd2;" d="M88 705q0 303 143 499q156 213 435 213t436 -213q145 -199 145 -499q0 -301 -145 -500q-157 -213 -436 -213t-435 213q-143 197 -143 500zM303 700q0 -221 90 -370q96 -162 273 -162q178 0 276 162q90 147 90 370q0 225 -90 377q-100 164 -276 164t-273 -164 q-90 -152 -90 -377zM428 1726l115 168l67 -12l287 -317l-74 -90z" />
+<glyph unicode="&#xd3;" d="M88 705q0 303 143 499q156 213 435 213t436 -213q145 -199 145 -499q0 -301 -145 -500q-157 -213 -436 -213t-435 213q-143 197 -143 500zM303 700q0 -221 90 -370q96 -162 273 -162q178 0 276 162q90 147 90 370q0 225 -90 377q-100 164 -276 164t-273 -164 q-90 -152 -90 -377zM449 1597l292 304l70 8l117 -187l-400 -229z" />
+<glyph unicode="&#xd4;" d="M88 705q0 303 143 499q156 213 435 213t436 -213q145 -199 145 -499q0 -301 -145 -500q-157 -213 -436 -213t-435 213q-143 197 -143 500zM303 700q0 -221 90 -370q96 -162 273 -162q178 0 276 162q90 147 90 370q0 225 -90 377q-100 164 -276 164t-273 -164 q-90 -152 -90 -377zM319 1499l322 332h53l320 -334l-2 -10h-168l-178 121l-177 -121h-167z" />
+<glyph unicode="&#xd5;" d="M88 705q0 303 143 499q156 213 435 213t436 -213q145 -199 145 -499q0 -301 -145 -500q-157 -213 -436 -213t-435 213q-143 197 -143 500zM297 1559v34q45 100 145 144q45 18 117 18t135.5 -38t110.5 -75l125 115l121 -137q-66 -82 -148 -113q-29 -12 -66.5 -12 t-73.5 15.5t-66.5 34t-63.5 33.5t-86 15q-84 0 -139 -104zM303 700q0 -221 90 -370q96 -162 273 -162q178 0 276 162q90 147 90 370q0 225 -90 377q-100 164 -276 164t-273 -164q-90 -152 -90 -377z" />
+<glyph unicode="&#xd6;" d="M88 705q0 303 143 499q156 213 435 213t436 -213q145 -199 145 -499q0 -301 -145 -500q-157 -213 -436 -213t-435 213q-143 197 -143 500zM303 700q0 -221 90 -370q96 -162 273 -162q178 0 276 162q90 147 90 370q0 225 -90 377q-100 164 -276 164t-273 -164 q-90 -152 -90 -377zM371 1810q0 53 36.5 92.5t91 39.5t92.5 -39t38 -93.5t-40 -92.5t-91.5 -38t-89 39t-37.5 92zM733 1811.5q0 52.5 39 91.5t93.5 39t92 -39t37.5 -93q0 -53 -38.5 -92t-91 -39t-92.5 40t-40 92.5z" />
+<glyph unicode="&#xd7;" horiz-adv-x="978" d="M100 1008l109 108l283 -282l274 274l111 -109l-277 -276l272 -270l-108 -109l-272 270l-277 -276l-109 111l277 276z" />
+<glyph unicode="&#xd8;" d="M88 691.5q0 156.5 36 285.5t107 227q156 213 435 213q104 0 194 -33l70 154h200l-2 -39l-100 -217q111 -98 165 -250.5t54 -311.5t-36.5 -288t-108.5 -227q-158 -213 -436 -213q-123 0 -215 39l-64 -140h-192l-7 37l99 213q-100 98 -149.5 246t-49.5 304.5zM303 704.5 q0 -221.5 78 -358.5l401 873q-55 23 -132 22.5t-145.5 -45.5t-111.5 -119q-90 -151 -90 -372.5zM528 199q61 -31 145.5 -31t154 44t114.5 118q90 147 90 372t-96 381z" />
+<glyph unicode="&#xd9;" horiz-adv-x="1306" d="M61 1262v153h474v-151l-142 -19v-768q0 -309 283 -309q188 0 250 164q23 59 22 147v768l-125 19v149h414v-151l-117 -21v-772q0 -238 -137 -365q-121 -115 -313 -114q-236 0 -359 126t-123 353v778zM420 1726l115 168l69 -12l287 -317l-76 -90z" />
+<glyph unicode="&#xda;" horiz-adv-x="1306" d="M61 1262v153h474v-151l-142 -19v-768q0 -309 283 -309q188 0 250 164q23 59 22 147v768l-125 19v149h414v-151l-117 -21v-772q0 -238 -137 -365q-121 -115 -313 -114q-236 0 -359 126t-123 353v778zM485 1597l295 304l70 8l115 -187l-398 -229z" />
+<glyph unicode="&#xdb;" horiz-adv-x="1306" d="M61 1262v153h474v-151l-142 -19v-768q0 -309 283 -309q188 0 250 164q23 59 22 147v768l-125 19v149h414v-151l-117 -21v-772q0 -238 -137 -365q-121 -115 -313 -114q-236 0 -359 126t-123 353v778zM326 1499l321 332h53l320 -334l-2 -10h-168l-178 121l-176 -121h-168z " />
+<glyph unicode="&#xdc;" horiz-adv-x="1325" d="M61 1262v153h474v-151l-142 -19v-768q0 -145 72 -227t219 -82q190 0 258 164q25 59 25 147v768l-125 19v149h413v-151l-116 -21v-772q0 -238 -144 -365q-125 -115 -317 -114q-236 0 -363 126t-127 353v778zM395 1810q0 53 37 92.5t91.5 39.5t92 -39t37.5 -93.5t-40 -92.5 t-91 -38t-89 39t-38 92zM758 1811.5q0 52.5 39 91.5t93 39t92 -39t38 -93q0 -53 -39 -92t-91 -39t-92 40t-40 92.5z" />
+<glyph unicode="&#xdd;" horiz-adv-x="1153" d="M8 1262v153h436l15 -135l-137 -25l284 -524l258 526l-125 23v135h400v-153l-88 -21l-369 -737v-334l238 -41l-21 -129h-635l-20 129l235 41v346l-389 727zM412 1597l295 304l69 8l115 -187l-397 -229z" />
+<glyph unicode="&#xde;" horiz-adv-x="1075" d="M94 147l129 23v1079l-129 11v155h447l20 -153l-133 -21l4 -76q301 0 451.5 -103.5t150.5 -320.5q0 -219 -162 -331q-143 -98 -403 -99h-41v-145l236 -37v-129h-551zM428 487h33q199 0 278.5 64.5t79.5 173.5q0 141 -94 197.5t-281 56.5h-16v-492z" />
+<glyph unicode="&#xdf;" horiz-adv-x="1079" d="M66 0v119l104 20v948q0 203 106 314q96 96 263 96q143 0 243 -80q111 -88 111 -233q0 -94 -34 -154.5t-75 -103.5t-74.5 -76t-33.5 -70q8 -45 92 -88q268 -139 268 -358q0 -160 -114 -260q-102 -90 -244 -90q-119 0 -229 49l110 192q27 -23 53.5 -48t49.5 -40 q72 0 126 53.5t54 147.5q0 88 -90 162q-39 31 -84 58.5t-84 59.5q-90 72 -90 158q0 59 32.5 100.5t72.5 82t73 92t33 133.5q-4 66 -52 112.5t-118 46.5q-176 0 -177 -217v-1126h-292z" />
+<glyph unicode="&#xe0;" horiz-adv-x="942" d="M74 253.5q0 108.5 44 172t115 100.5q125 63 367 68v145q0 41 -38 75t-118 34q-76 0 -112 -33l-41 -133l-215 63q47 170 231 230q66 20 148 20q160 0 244.5 -79.5t84.5 -208.5v-525q0 -43 29 -43q14 0 43 15l45 -109q-63 -53 -141 -53q-117 0 -148 92q-90 -94 -229 -94 t-224 77.5t-85 186zM256 1294l123 146l63 -17l220 -323l-76 -76zM268 283.5q0 -50.5 15.5 -76t38 -40.5t47 -20.5t55.5 -5.5t62.5 13.5t54.5 31.5q43 33 59 82v176q-135 0 -198.5 -21.5t-98.5 -55t-35 -84z" />
+<glyph unicode="&#xe1;" horiz-adv-x="942" d="M74 253.5q0 108.5 44 172t115 100.5q125 63 367 68v145q0 41 -38 75t-118 34q-76 0 -112 -33l-41 -133l-215 63q47 170 231 230q66 20 148 20q160 0 244.5 -79.5t84.5 -208.5v-525q0 -43 29 -43q14 0 43 15l45 -109q-63 -53 -141 -53q-117 0 -148 92q-90 -94 -229 -94 t-224 77.5t-85 186zM268 283.5q0 -50.5 15.5 -76t38 -40.5t47 -20.5t55.5 -5.5t62.5 13.5t54.5 31.5q43 33 59 82v176q-135 0 -198.5 -21.5t-98.5 -55t-35 -84zM270 1174l236 305l65 16l123 -164l-340 -248z" />
+<glyph unicode="&#xe2;" horiz-adv-x="942" d="M74 253.5q0 108.5 44 172t115 100.5q125 63 367 68v145q0 41 -38 75t-118 34q-76 0 -112 -33l-41 -133l-215 63q47 170 231 230q66 20 148 20q160 0 244.5 -79.5t84.5 -208.5v-525q0 -43 29 -43q14 0 43 15l45 -109q-63 -53 -141 -53q-117 0 -148 92q-90 -94 -229 -94 t-224 77.5t-85 186zM123 1108l272 326h68l274 -328l-12 -23h-160l-137 107l-137 -107h-158zM268 283.5q0 -50.5 15.5 -76t38 -40.5t47 -20.5t55.5 -5.5t62.5 13.5t54.5 31.5q43 33 59 82v176q-135 0 -198.5 -21.5t-98.5 -55t-35 -84z" />
+<glyph unicode="&#xe3;" horiz-adv-x="942" d="M74 253.5q0 108.5 44 172t115 100.5q125 63 367 68v145q0 41 -38 75t-118 34q-76 0 -112 -33l-41 -133l-215 63q47 170 231 230q66 20 148 20q160 0 244.5 -79.5t84.5 -208.5v-525q0 -43 29 -43q14 0 43 15l45 -109q-63 -53 -141 -53q-117 0 -148 92q-90 -94 -229 -94 t-224 77.5t-85 186zM143 1198q0 57 54 115q66 72 163 71q74 0 177 -59q25 -14 47 -22l2 -7l94 97l115 -136q-43 -47 -89.5 -79.5t-94.5 -32.5t-77.5 12t-57 25.5t-54 26t-57.5 12.5q-74 0 -113 -93zM268 283.5q0 -50.5 15.5 -76t38 -40.5t47 -20.5t55.5 -5.5t62.5 13.5 t54.5 31.5q43 33 59 82v176q-135 0 -198.5 -21.5t-98.5 -55t-35 -84z" />
+<glyph unicode="&#xe4;" horiz-adv-x="942" d="M74 253.5q0 108.5 44 172t115 100.5q125 63 367 68v145q0 41 -38 75t-118 34q-76 0 -112 -33l-41 -133l-215 63q47 170 231 230q66 20 148 20q160 0 244.5 -79.5t84.5 -208.5v-525q0 -43 29 -43q14 0 43 15l45 -109q-63 -53 -141 -53q-117 0 -148 92q-90 -94 -229 -94 t-224 77.5t-85 186zM141 1278q0 53 37 90t90 37t90 -37t37 -90t-36.5 -90t-90.5 -37q-53 0 -90 37t-37 90zM268 283.5q0 -50.5 15.5 -76t38 -40.5t47 -20.5t55.5 -5.5t62.5 13.5t54.5 31.5q43 33 59 82v176q-135 0 -198.5 -21.5t-98.5 -55t-35 -84zM471 1278q0 53 37 90 t90 37t90 -37t37 -90t-37 -90t-90 -37t-90 37t-37 90z" />
+<glyph unicode="&#xe5;" horiz-adv-x="942" d="M74 253.5q0 108.5 44 172t115 100.5q125 63 367 68v145q0 41 -38 75t-118 34q-76 0 -112 -33l-41 -133l-215 63q47 170 231 230q66 20 148 20q160 0 244.5 -79.5t84.5 -208.5v-525q0 -43 29 -43q14 0 43 15l45 -109q-63 -53 -141 -53q-117 0 -148 92q-90 -94 -229 -94 t-224 77.5t-85 186zM268 283.5q0 -50.5 15.5 -76t38 -40.5t47 -20.5t55.5 -5.5t62.5 13.5t54.5 31.5q43 33 59 82v176q-135 0 -198.5 -21.5t-98.5 -55t-35 -84zM268 1290q0 82 56.5 138.5t139.5 56.5t139 -56.5t56 -138.5t-56 -138t-139 -56t-139.5 56t-56.5 138zM389 1290 q0 -31 21.5 -52t52.5 -21t53.5 21.5t22.5 51.5q0 31 -22.5 52.5t-53.5 21.5t-52.5 -21.5t-21.5 -52.5z" />
+<glyph unicode="&#xe6;" horiz-adv-x="1441" d="M74 252.5q0 107.5 46 171t122 100.5q135 70 358 70v145q0 41 -38 75t-118 34q-76 0 -112 -33l-41 -133l-215 63q47 170 231 230q66 20 148 20q198 0 286 -131q131 131 318 131q137 0 229 -69q96 -72 96 -199q0 -213 -278 -283q-98 -25 -236 -24h-36q-18 0 -39 2 q20 -193 163 -254q51 -23 124 -23t131.5 29t80.5 47l39 -139q-25 -27 -98.5 -58.5t-182 -31.5t-210 46t-166.5 144q-53 -127 -182 -174q-47 -18 -107 -18q-143 0 -228 77.5t-85 185zM268 274q0 -72 54 -106q37 -27 85 -27t79.5 13.5t54.5 31.5q43 33 59 82v176 q-332 0 -332 -170zM795 573h75q135 0 196.5 19.5t92.5 49.5t31 63.5t-6 55t-21.5 39t-43 30t-68.5 12.5t-83 -16.5t-77 -51.5q-82 -78 -96 -201z" />
+<glyph unicode="&#xe7;" horiz-adv-x="882" d="M74 477q0 268 143 408q115 111 297 110q133 0 231 -69q80 -55 107 -117l-203 -96l-65 118q-41 10 -68 11q-248 0 -248 -361q0 -154 75 -245t198 -91q57 0 120.5 21.5t104.5 62.5l45 -143q-92 -74 -227 -90l-25 -72q53 -14 96 -52t43 -116t-62.5 -130t-172.5 -52 q-84 0 -180 39l67 135l111 -76q61 0 92 43q10 16 10 39q0 90 -145 90l-25 31l43 123q-156 27 -252 141q-111 129 -110 338z" />
+<glyph unicode="&#xe8;" horiz-adv-x="927" d="M72 485q0 -242 133 -370q125 -123 334 -123q141 0 258 67q25 14 32 23l-45 143q-47 -47 -145 -69q-39 -10 -94.5 -10.5t-102.5 18t-82 49.5q-61 57 -84 164q315 4 455 115q105 83 105 233q0 61 -26 112.5t-69 86.5q-92 72 -227 71q-184 0 -307 -131q-135 -141 -135 -379z M266 528q12 154 84 238q66 74 170 74q59 0 90 -37t31 -94.5t-39 -95.5t-96 -56q-90 -29 -240 -29zM317 1378l121 162l66 -16l233 -303l-84 -88z" />
+<glyph unicode="&#xe9;" horiz-adv-x="909" d="M71.5 486q0.5 124 37 219.5t98.5 158.5q123 131 307 131q135 0 227 -71q95 -76 95 -199q0 -63 -21.5 -123.5t-83.5 -109.5q-139 -111 -455 -115q33 -162 166 -213q47 -18 102.5 -18.5t94.5 9t68 21.5q55 27 77 49l45 -143q-23 -23 -75 -45q-205 -84 -402 -14 q-178 63 -246 247q-35 92 -34.5 216zM266 528q150 0 223.5 23.5t112.5 61.5t39 95.5t-30.5 94.5t-89 37t-98.5 -18.5t-73 -55.5q-72 -84 -84 -238zM319 1174l236 305l66 16l122 -164l-340 -248z" />
+<glyph unicode="&#xea;" horiz-adv-x="927" d="M71.5 486q0.5 124 37 219.5t98.5 158.5q123 131 307 131q135 0 227 -71q95 -76 95 -199q0 -63 -21.5 -123.5t-83.5 -109.5q-139 -111 -455 -115q33 -162 166 -213q47 -18 102.5 -18.5t94.5 9t68 21.5q55 27 77 49l45 -143q-23 -23 -75 -45q-205 -84 -402 -14 q-178 63 -246 247q-35 92 -34.5 216zM199 1108l272 326h68l274 -328l-12 -23h-160l-137 107l-137 -107h-158zM266 528q150 0 223.5 23.5t112.5 61.5t39 95.5t-30.5 94.5t-89 37t-98.5 -18.5t-73 -55.5q-72 -84 -84 -238z" />
+<glyph unicode="&#xeb;" horiz-adv-x="927" d="M71.5 486q0.5 124 37 219.5t98.5 158.5q123 131 307 131q135 0 227 -71q95 -76 95 -199q0 -63 -21.5 -123.5t-83.5 -109.5q-139 -111 -455 -115q33 -162 166 -213q47 -18 102.5 -18.5t94.5 9t68 21.5q55 27 77 49l45 -143q-23 -23 -75 -45q-205 -84 -402 -14 q-178 63 -246 247q-35 92 -34.5 216zM217 1282q0 47 32 80t80 33t80.5 -34t32.5 -80t-33.5 -79t-80.5 -33t-79 33t-32 80zM266 528q150 0 223.5 23.5t112.5 61.5t39 95.5t-30.5 94.5t-89 37t-98.5 -18.5t-73 -55.5q-72 -84 -84 -238zM524 1283q0 46 32 79t80 33t81 -34 t33 -80t-34 -79t-81 -33t-79 34t-32 80z" />
+<glyph unicode="&#xec;" horiz-adv-x="548" d="M59 950l21 -123l113 9v-697l-127 -28l22 -111h410v111l-121 32v787l-66 65zM59 1333l123 164l66 -16l233 -305l-82 -89z" />
+<glyph unicode="&#xed;" horiz-adv-x="548" d="M59 950l252 45l66 -65v-787l121 -32v-111h-410l-22 111l127 28v697l-113 -9zM66 1174l235 305l66 16l120 -164l-337 -246z" />
+<glyph unicode="&#xee;" horiz-adv-x="548" d="M-23 1114l256 309h50l256 -307l-11 -16h-137l-135 110l-137 -110h-133zM59 950l252 45l66 -65v-787l121 -32v-111h-410l-22 111l127 28v697l-113 -9z" />
+<glyph unicode="&#xef;" horiz-adv-x="548" d="M-2 1282q0 47 31.5 80t80 33t81 -34t32.5 -80t-33.5 -79t-81 -33t-79 33t-31.5 80zM59 950l252 45l66 -65v-787l121 -32v-111h-410l-22 111l127 28v697l-113 -9zM283 1283q0 46 32.5 79t79.5 33t81 -34t34 -80t-35 -79t-81 -33t-78.5 34t-32.5 80z" />
+<glyph unicode="&#xf0;" horiz-adv-x="1046" d="M72 438q0 190 108 328q115 139 293 139q170 0 260 -94q-45 156 -155 274l-218 -122l-65 116l166 113q-84 63 -207 121l76 182q154 -59 303 -184l219 149l100 -164l-198 -112q188 -229 207 -529v-41q0 -256 -107 -426q-123 -197 -348 -196q-213 0 -330 143 q-104 125 -104 303zM266 438q0 -125 68 -197.5t174 -72.5q195 0 244 274q0 141 -80 222q-68 68 -178 67q-115 0 -175 -90q-53 -78 -53 -203z" />
+<glyph unicode="&#xf1;" horiz-adv-x="1085" d="M59 950q27 4 62 11.5t69.5 13.5t67.5 11t53 9l60 -75q98 76 245 75q213 0 281 -155q23 -53 23 -131v-564l122 -34v-111h-407l-25 111l125 28v539q0 92 -43 126t-106.5 34t-123 -27t-85.5 -53v-615l119 -32v-111h-408l-25 111l130 28v697l-113 -9zM246 1198q0 57 53 115 q66 72 164 71q74 0 176 -59q25 -14 47 -22l2 -7l94 97l115 -136q-43 -47 -89 -79.5t-94 -32.5t-78 12t-57.5 25.5t-54 26t-57.5 12.5q-74 0 -113 -93z" />
+<glyph unicode="&#xf2;" horiz-adv-x="1013" d="M74 502q0 -119 31.5 -212t91.5 -159q121 -139 311 -139q182 0 303 131q131 137 131 375q0 227 -123 362t-311 135q-184 0 -303 -127q-131 -137 -131 -366zM268 485q0 250 135 330q45 27 105 27q111 0 175.5 -95.5t64.5 -265.5t-68 -253t-174.5 -83t-172 85t-65.5 255z M319 1333l123 164l66 -16l233 -307l-82 -89z" />
+<glyph unicode="&#xf3;" horiz-adv-x="1013" d="M74 502q0 119 34.5 211t96.5 155q119 127 303 127q188 0 311 -135t123 -362q0 -238 -131 -375q-121 -131 -303 -131q-190 0 -311 139q-123 138 -123 371zM268.5 480q-0.5 -165 65 -250t172 -85t174.5 83t68 253t-65 265.5t-175 95.5q-117 0 -180 -101q-59 -96 -59.5 -261 zM326 1174l235 305l66 16l123 -164l-340 -248z" />
+<glyph unicode="&#xf4;" horiz-adv-x="1011" d="M74 502q0 119 34.5 211t96.5 155q119 127 303 127q188 0 311 -135t123 -362q0 -238 -131 -375q-121 -131 -303 -131q-190 0 -311 139q-123 138 -123 371zM223 1114l256 309h49l256 -307l-8 -16h-135l-137 110l-137 -110h-134zM268.5 480q-0.5 -165 65 -250t172 -85 t174.5 83t68 253t-65 265.5t-175 95.5q-117 0 -180 -101q-59 -96 -59.5 -261z" />
+<glyph unicode="&#xf5;" horiz-adv-x="1011" d="M74 502q0 119 34.5 211t96.5 155q119 127 303 127q188 0 311 -135t123 -362q0 -238 -131 -375q-121 -131 -303 -131q-190 0 -311 139q-123 138 -123 371zM193 1196q0 57 53 115q70 74 164 73q72 0 176 -59q27 -14 49 -22l2 -7l94 95l115 -136q-45 -47 -89 -78.5 t-94.5 -31.5t-80 11t-56.5 26q-68 37 -112.5 37t-72.5 -29t-38 -64zM268.5 480q-0.5 -165 65 -250t172 -85t174.5 83t68 253t-65 265.5t-175 95.5q-117 0 -180 -101q-59 -96 -59.5 -261z" />
+<glyph unicode="&#xf6;" horiz-adv-x="1011" d="M74 502q0 119 34.5 211t96.5 155q119 127 303 127q188 0 311 -135t123 -362q0 -238 -131 -375q-121 -131 -303 -131q-190 0 -311 139q-123 138 -123 371zM246 1282q0 47 31.5 80t80 33t81 -34t32.5 -80t-34 -79t-81 -33t-78.5 33t-31.5 80zM268.5 480q-0.5 -165 65 -250 t172 -85t174.5 83t68 253t-65 265.5t-175 95.5q-117 0 -180 -101q-59 -96 -59.5 -261zM553 1283q0 46 31.5 79t80 33t81 -34t32.5 -80t-33.5 -79t-81 -33t-79 34t-31.5 80z" />
+<glyph unicode="&#xf7;" horiz-adv-x="858" d="M92 520v156h674v-156h-674zM328 284q0 46 31.5 78.5t79.5 32.5t81 -33.5t33 -79.5t-34 -79t-81 -33t-78.5 34t-31.5 80zM328 915.5q0 47.5 31.5 80t79.5 32.5t81 -33.5t33 -80t-34 -79t-81 -32.5t-78.5 32.5t-31.5 80z" />
+<glyph unicode="&#xf8;" horiz-adv-x="1011" d="M74 498q0 231 131 370q119 127 303 127q61 0 125 -18l108 237h174l-2 -26l-131 -291q158 -139 158 -399q0 -238 -129 -375q-123 -131 -303 -131q-61 0 -127 18l-94 -211h-168l-6 27l120 266q-160 137 -159 406zM268 493.5q0 -147.5 43 -227.5l256 563q-29 8 -59 9 q-119 0 -179.5 -98.5t-60.5 -246zM446 154q25 -8 62 -9q104 0 170.5 83t66.5 240t-47 245z" />
+<glyph unicode="&#xf9;" horiz-adv-x="1044" d="M25 950l20 -119h113v-501q0 -170 98 -260q86 -78 229 -78q133 0 230 92q33 -92 139 -92q76 0 133 57l-29 92l-36 -4q-37 0 -37 68v723l-60 69l-250 -47l19 -119h106v-575q-18 -47 -77 -80q-53 -29 -95.5 -29t-74 7.5t-56.5 29.5q-55 53 -55 189v555l-63 67zM236 1333 l120 164l66 -16l235 -307l-84 -89z" />
+<glyph unicode="&#xfa;" horiz-adv-x="1044" d="M25 950l254 45l63 -67v-555q0 -193 113 -217q31 -8 58.5 -8.5t55 7t54.5 21.5q59 33 77 80v575h-106l-19 119l250 47l60 -69v-723q0 -68 37 -68l36 4l29 -92q-57 -57 -133 -57q-106 0 -139 92q-96 -92 -230 -92q-225 0 -301 184q-27 63 -26 154v501h-113zM305 1174 l236 305l65 16l123 -164l-340 -248z" />
+<glyph unicode="&#xfb;" horiz-adv-x="1044" d="M25 950l254 45l63 -67v-555q0 -193 113 -217q31 -8 58.5 -8.5t55 7t54.5 21.5q59 33 77 80v575h-106l-19 119l250 47l60 -69v-723q0 -68 37 -68l36 4l29 -92q-57 -57 -133 -57q-106 0 -139 92q-96 -92 -230 -92q-225 0 -301 184q-27 63 -26 154v501h-113zM201 1114 l256 309h49l256 -307l-10 -16h-138l-135 110l-137 -110h-133z" />
+<glyph unicode="&#xfc;" horiz-adv-x="1044" d="M25 950l254 45l63 -67v-555q0 -193 113 -217q31 -8 58.5 -8.5t55 7t54.5 21.5q59 33 77 80v575h-106l-19 119l250 47l60 -69v-723q0 -68 37 -68l36 4l29 -92q-57 -57 -133 -57q-106 0 -139 92q-96 -92 -230 -92q-225 0 -301 184q-27 63 -26 154v501h-113zM256 1282 q0 47 31.5 80t80 33t81 -34t32.5 -80t-33.5 -79t-81 -33t-79 33t-31.5 80zM563 1283q0 46 32 79t80 33t80.5 -34t32.5 -80t-33.5 -79t-80.5 -33t-79 34t-32 80z" />
+<glyph unicode="&#xfd;" horiz-adv-x="983" d="M2 979l254 16l276 -829l259 686h-107l-14 125l248 18l53 -69q-184 -522 -329.5 -896t-169 -422t-54.5 -87q-72 -84 -185 -84q-90 0 -182 82l76 141q57 -70 121 -70q66 0 112 123q14 35 27 66l45 121l-332 952h-82zM283 1174l235 305l66 16l123 -164l-340 -248z" />
+<glyph unicode="&#xfe;" horiz-adv-x="1007" d="M8 1466l260 39l62 -65v-500q86 55 188.5 55t176 -34.5t126.5 -98.5q113 -135 113 -356q0 -279 -152 -412q-117 -102 -286 -102q-102 0 -170 33q4 -66 4 -93v-329l245 -49v-113h-530l-14 110l112 27v1774l-116 -9zM330 197q18 -20 63 -36t90 -16t88 15.5t80 56.5 q88 90 88 277q0 172 -75 264q-62 80 -168 80q-49 0 -95.5 -19.5t-70.5 -48.5v-573z" />
+<glyph unicode="&#xff;" horiz-adv-x="978" d="M0 979l248 16l276 -829l264 694h-108l-14 117l249 18l52 -69q-164 -463 -284 -769.5t-158 -403.5t-61.5 -145t-53.5 -87q-72 -84 -185 -84q-90 0 -182 82l76 141q57 -70 121 -70q66 0 112 123q14 35 27 66l45 121l-332 960h-76zM215 1282q0 47 32 80t80 33t80.5 -34 t32.5 -80t-33.5 -79t-80.5 -33t-79 33t-32 80zM522 1283q0 46 32 79t80 33t81 -34t33 -80t-34 -79t-81 -33t-79 34t-32 80z" />
+<glyph unicode="&#x152;" horiz-adv-x="1787" d="M88 705q0 303 143 499q156 213 435 213l55 -2h936l41 -385h-129l-78 209h-381v-430h324v-176h-324v-457h401l72 207h129l-41 -383h-872q-70 -8 -133 -8q-279 0 -435 213q-143 197 -143 500zM303 700q0 -215 111 -370q113 -162 293 -162q133 0 200 72v923 q-96 78 -199.5 78t-178 -45t-123.5 -119q-102 -152 -103 -377z" />
+<glyph unicode="&#x153;" horiz-adv-x="1587" d="M74 498q0 233 131 370q119 127 303 127q219 0 342 -174q63 86 153.5 130t172 44t140 -18.5t101.5 -52.5q96 -76 96 -203q0 -145 -104 -229q-139 -111 -455 -115q33 -162 166 -213q47 -18 102.5 -18.5t94.5 9t67 21.5q55 27 78 49l45 -143q-23 -23 -75 -45 q-109 -45 -215 -45q-248 0 -373 168q-61 -84 -149.5 -126t-185.5 -42t-176 35.5t-136 103.5q-123 137 -123 367zM268.5 480q-0.5 -165 65 -250t172 -85t174.5 83t68 253t-65 265.5t-175 95.5q-117 0 -180 -101q-59 -96 -59.5 -261zM944 528q150 0 223.5 23.5t112.5 61.5 t39 95.5t-31 94.5t-89 37t-98 -18.5t-73 -55.5q-72 -84 -84 -238z" />
+<glyph unicode="&#x2000;" horiz-adv-x="971" />
+<glyph unicode="&#x2001;" horiz-adv-x="1942" />
+<glyph unicode="&#x2002;" horiz-adv-x="971" />
+<glyph unicode="&#x2003;" horiz-adv-x="1942" />
+<glyph unicode="&#x2004;" horiz-adv-x="647" />
+<glyph unicode="&#x2005;" horiz-adv-x="485" />
+<glyph unicode="&#x2006;" horiz-adv-x="323" />
+<glyph unicode="&#x2007;" horiz-adv-x="323" />
+<glyph unicode="&#x2008;" horiz-adv-x="242" />
+<glyph unicode="&#x2009;" horiz-adv-x="388" />
+<glyph unicode="&#x200a;" horiz-adv-x="107" />
+<glyph unicode="&#x2010;" horiz-adv-x="817" d="M119 500v125l24 28h543q12 0 12 -16v-137h-579z" />
+<glyph unicode="&#x2011;" horiz-adv-x="817" d="M119 500v125l24 28h543q12 0 12 -16v-137h-579z" />
+<glyph unicode="&#x2012;" horiz-adv-x="817" d="M119 500v125l24 28h543q12 0 12 -16v-137h-579z" />
+<glyph unicode="&#x2013;" horiz-adv-x="987" d="M111 616v154h759v-154h-759z" />
+<glyph unicode="&#x2014;" horiz-adv-x="1294" d="M111 616v154h1067v-154h-1067z" />
+<glyph unicode="&#x2018;" horiz-adv-x="411" d="M78 1196q0 68 26.5 151t73.5 152l113 -33l8 -28l-49 -234l110 -209l-198 -92q-84 135 -84 293z" />
+<glyph unicode="&#x2019;" horiz-adv-x="407" d="M61 985v29l103 209l-53 235l215 39q23 -90 22.5 -156.5t-18 -130t-43.5 -116.5q-49 -100 -119 -170z" />
+<glyph unicode="&#x201a;" horiz-adv-x="434" d="M74 -199l84 213l-76 230l203 59q10 -16 29.5 -72.5t19.5 -126t-16.5 -128t-43.5 -107.5q-45 -92 -108 -156l-92 64v24z" />
+<glyph unicode="&#x201c;" horiz-adv-x="684" d="M90 1083q0 207 121 418l125 -61v-29l-62 -209l54 -276l-215 -43q-2 8 -5.5 31.5t-7.5 52.5q-10 76 -10 116zM364.5 1084.5q0.5 66.5 14.5 130t35 116.5q35 92 90 170l106 -61v-29l-61 -209l53 -235l-215 -39q-23 90 -22.5 156.5z" />
+<glyph unicode="&#x201d;" horiz-adv-x="673" d="M80 924v28l61 209l-53 236l215 39q23 -90 23 -157t-14.5 -130.5t-35.5 -116.5q-35 -92 -90 -170zM354 924v28l62 209l-54 277l216 43q2 -8 5 -32t7 -52q10 -76 10 -117q0 -207 -121 -418z" />
+<glyph unicode="&#x201e;" horiz-adv-x="708" d="M68 -223l84 192l-76 230l194 59q8 -18 26.5 -83.5t18.5 -131.5t-15 -115t-40 -94q-45 -82 -108 -145l-84 63v25zM330 -246l104 215l-76 291l203 59q47 -141 47 -272q0 -150 -104 -305q-31 -45 -62 -74l-112 62v24z" />
+<glyph unicode="&#x2022;" horiz-adv-x="530" d="M88 784q0 74 51 126.5t125 52.5t126 -52.5t52 -126.5t-52 -125t-126 -51t-125 51t-51 125z" />
+<glyph unicode="&#x202f;" horiz-adv-x="388" />
+<glyph unicode="&#x2039;" horiz-adv-x="714" d="M23 590v53l579 442l10 -4v-186l-366 -281l366 -278v-186l-12 -7z" />
+<glyph unicode="&#x203a;" horiz-adv-x="716" d="M102 150v186l367 278l-367 281v186l11 4l579 -442v-53l-577 -447z" />
+<glyph unicode="&#x205f;" horiz-adv-x="485" />
+<glyph unicode="&#x20ac;" horiz-adv-x="1165" d="M63 455v155h117q-2 20 -2 39v64h-115v155h125q35 283 179.5 417t375.5 134q188 0 306 -35l38 -360h-139l-80 201q-49 18 -126.5 18t-141 -28.5t-104.5 -79.5q-76 -96 -95 -267h521v-155h-529l2 -103h527v-155h-510q27 -141 102 -209q86 -78 244 -78q88 0 154.5 26.5 t99.5 51.5l59 -162q-129 -92 -348 -92q-432 0 -524 463h-136z" />
+<glyph unicode="&#xe000;" horiz-adv-x="993" d="M0 0v993h993v-993h-993z" />
+</font>
+</defs></svg> 
\ No newline at end of file
Index: modules/uoa-validator-admin/trunk/src/main/webapp/jsps/fonts/mavenpro.css
===================================================================
--- modules/uoa-validator-admin/trunk/src/main/webapp/jsps/fonts/mavenpro.css	(nonexistent)
+++ modules/uoa-validator-admin/trunk/src/main/webapp/jsps/fonts/mavenpro.css	(revision 47450)
@@ -0,0 +1,12 @@
+/* Copyright (C) YOOtheme GmbH, YOOtheme Proprietary Use License (http://www.yootheme.com/license) */
+
+@font-face {
+	font-family: 'MavenProRegular';
+	src: url('maven_pro_regular-webfont.eot');
+	src: url('maven_pro_regular-webfont.eot?#iefix') format('embedded-opentype'),
+		 url('maven_pro_regular-webfont.woff') format('woff'),
+		 url('maven_pro_regular-webfont.ttf') format('truetype'),
+		 url('maven_pro_regular-webfont.svg#MavenProRegular') format('svg');
+	font-weight: normal;
+	font-style: normal;
+}
\ No newline at end of file
Index: modules/uoa-validator-admin/trunk/src/main/webapp/jsps/index.jsp
===================================================================
--- modules/uoa-validator-admin/trunk/src/main/webapp/jsps/index.jsp	(nonexistent)
+++ modules/uoa-validator-admin/trunk/src/main/webapp/jsps/index.jsp	(revision 47450)
@@ -0,0 +1,4 @@
+
+<% 
+response.sendRedirect("welcome");
+%>
\ No newline at end of file
Index: modules/uoa-validator-admin/trunk/src/main/webapp/jsps/fonts/DroidSans-webfont.woff
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/trunk/src/main/webapp/jsps/fonts/DroidSans-webfont.woff
===================================================================
--- modules/uoa-validator-admin/trunk/src/main/webapp/jsps/fonts/DroidSans-webfont.woff	(nonexistent)
+++ modules/uoa-validator-admin/trunk/src/main/webapp/jsps/fonts/DroidSans-webfont.woff	(revision 47450)

Property changes on: modules/uoa-validator-admin/trunk/src/main/webapp/jsps/fonts/DroidSans-webfont.woff
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/trunk/src/main/webapp/jsps/js/ddmenu.js
===================================================================
--- modules/uoa-validator-admin/trunk/src/main/webapp/jsps/js/ddmenu.js	(nonexistent)
+++ modules/uoa-validator-admin/trunk/src/main/webapp/jsps/js/ddmenu.js	(revision 47450)
@@ -0,0 +1,16 @@
+var ddmenuOptions=
+{
+	menuId: "ddmenu",
+	linkIdToMenuHtml: null,
+	effect: "slide",
+	delay: 50,
+	//dl114
+/*	license: "2c7u1" */
+	//production
+	license: "2c1o2"
+};
+
+var ddmenu=new McDdMenu(ddmenuOptions);
+
+/* Menucool Drop Down Menu v2013.3.18 Copyright www.menucool.com */
+function McDdMenu(d){var o=function(a,b){return a.getElementsByTagName(b)},k=function(b,d){if(window.getComputedStyle)var c=window.getComputedStyle(b,null);else if(b.currentStyle)c=b.currentStyle;else c=b[a];return c[d]},e=function(a,c,b){if(a.addEventListener)a.addEventListener(c,b,false);else a.attachEvent&&a.attachEvent("on"+c,b)},t=function(a){if(a&&a.stopPropagation)a.stopPropagation();else window.event.cancelBubble=true},F=function(b){var a=b?b:window.event;a.preventDefault&&a.preventDefault();a.returnValue=false;return false},b,l,y,a,c,i,g,f,n,x=document,L=["$1$2$3","$1$2$3","$1$24","$1$23","$1$22"];mcDdl=0;var K=[/(?:.*\.)?(\w)([\w\-])[^.]*(\w)\.[^.]+$/,/.*([\w\-])\.(\w)(\w)\.[^.]+$/,/^(?:.*\.)?(\w)(\w)\.[^.]+$/,/.*([\w\-])([\w\-])\.com\.[^.]+$/,/^(\w)[^.]*(\w)+$/],D=function(){var c=50,b=navigator.userAgent,a;if((a=b.indexOf("MSIE "))!=-1)c=parseInt(b.substring(a+5,b.indexOf(".",a)));return c},B=function(){b={a:d.license,b:d.menuId,c:d.effect=="none"?0:1,d:d.delay,e:d.linkIdToMenuHtml}},j=D(),m=function(d){var a=d.childNodes,c=[];if(a)for(var b=0,e=a.length;b<e;b++)a[b].nodeType==1&&c.push(a[b]);return c},C=function(b){var a=[],c=b.length;while(c--)a.push(String.fromCharCode(b[c]));return a.join("")},z=function(a){return a.replace(/(?:.*\.)?(\w)([\w\-])?[^.]*(\w)\.[^.]*$/,"$1$3$2")},L_1=function(e,c){var d=function(a){for(var c=a.substr(0,a.length-1),e=a.substr(a.length-1,1),d="",b=0;b<c.length;b++)d+=c.charCodeAt(b)-e;return unescape(d)},a=z(document.domain)+Math.random(),b=d(a);l="%66%75%6E%63%74%69%6F%6E%20%71%51%28%73%2C%6B%29%7B%76%61%72%20%72%3D%27%27%3B%66%6F%72%28%76%61%72%20%69%";if(b.length==39)try{a=(new Function("$","_",w(l))).apply(this,[b,c]);l=a}catch(f){}},M=function(a,b){return b?x[a](b):x[a]},w=function(d,b){for(var c=[],a=0;a<d.length;a++)c[c.length]=String.fromCharCode(d.charCodeAt(a)-(b&&b>7?b:3));return c.join("")},I=function(c,a){var b=function(b){var a=b.charCodeAt(0).toString();return a.substring(a.length-1)};return c+b(a[2])+a[0]+b(a[1])},G=function(a,c){var b=a.length;while(b--)if(a[b]===c)return true;return false},H=function(a,c){var b=false;if(a.className)b=G(a.className.split(" "),c);return b},h=function(a,b,c){if(!H(a,b))if(a.className=="")a.className=b;else if(c)a.className=b+" "+a.className;else a.className+=" "+b},p=function(c,e){if(c.className){for(var d="",b=c.className.split(" "),a=0,f=b.length;a<f;a++)if(b[a]!==e)d+=b[a]+" ";c.className=d}},s=function(a){this.a=null;this.b=a;this.c=null;this.d=null;this.e=null;this.f();this.g()},v=function(a){this.o(a);this.p(a)};s.prototype={j:function(){var a=this;clearTimeout(a.d);j<9&&clearTimeout(a.e);a.d=setTimeout(function(){a.l()},110)},k:function(){h(this.b,"over");this.c[a][c]="block";b.c&&this.m(this.c.mh,this.c.mj)},f:function(){if(j<8)this.b[a][c]="inline";var f=m(this.b);if(f.length)if(f[0][n]!="A"){var b=document.createElement("a");b.setAttribute("href","#");e(b,"click",function(a){t(a);return F(a)});this.b.insertBefore(b,this.b.firstChild);var d;while(d=b.nextSibling){if(d.nodeType==1&&d[n]=="DIV")break;b.appendChild(d)}this.a=b}else this.a=f[0]},m:function(b,h){var i=this;clearTimeout(i.e);var c=this.c[f];if(c<b){var e=Math.ceil((b-c)*.3);if(e<2)e=2;var d=c+e;if(d>b)d=b;this.c[a][g]=d-h+"px";this.e=setTimeout(function(){i.m(b,h)},16)}else delete this.e},g:function(){var d=m(this.b),s=this;if(d.length==2){h(d[0],"arrow",1);h(d[1],"drop",1);this.h();var o=parseInt(k(d[1],"borderTopWidth")),t=parseInt(k(d[1],"borderBottomWidth")),n=k(d[1],"width");d[1][a][i]="3000px";d[1][a].top=d[0][f]-o+"px";d[1][a].overflow="hidden";var l=document.createElement("div");l[a][c]="block";l[a].position="relative";l[a].styleFloat="left";l[a].cssFloat="left";d[1].insertBefore(l,d[1].firstChild);var r;while(r=l.nextSibling)l.appendChild(r);if(n=="auto"||parseInt(n)<l.offsetWidth+1)d[1][a][i]=l.offsetWidth+(j==9?1:j==7?4:0)+"px";else d[1][a][i]=n;l[a].top="auto";l[a].bottom="0";this.c=d[1];this.c.mj=o+t;this.c.mh=this.c[f];var q=this.c.firstChild.offsetTop,u=this.c.mh-q-this.c.firstChild[f]-this.c.mj;this.c.mi=this.c.mh-this.c.mj;this.c[a].paddingTop="0px";this.c[a].paddingBottom="0px";this.c[a][g]=b.c?"0px":this.c.mi+"px";this.c[a][c]="none";l[a].position="absolute";l[a].paddingTop=q+"px";l[a].paddingBottom=u+"px";e(this.b,"mouseover",function(a){s.i(a)});e(this.b,"mouseout",function(a){s.j(a)})}else{e(this.b,"mouseover",function(){h(this,"over")});e(this.b,"mouseout",function(){p(this,"over")})}},h:function(){for(var d=o(this.b,"div"),b=0,e=d.length;b<e;b++)d[b][a][c]="block"},n:function(h,f){var e=this;clearTimeout(e.e);var d=parseInt(this.c[a][g]);if(d>0){var b=Math.floor(d*.7);if(d-b<6)b=d-6;if(b<0)b=0;this.c[a][g]=b+"px";this.e=setTimeout(function(){e.n(h,f)},16)}else{this.c[a][c]="none";delete this.e}},i:function(c){var a=this;clearTimeout(a.d);a.d=setTimeout(function(){a.k()},b.d);t(c)},l:function(){p(this.b,"over");delete this.d;var d=this;if(b.c)d.n(d.c.mh,d.c.mj);else d.c[a][c]="none"}};v.prototype={o:function(a){L_1(a,b.a)},p:function(a){c="display";i="width";g="height";(new Function("a","b","c","d","e","f","g","h","i","j","k","z","y",function(c){for(var b=[],a=0,d=c.length;a<d;a++)b[b.length]=String.fromCharCode(c.charCodeAt(a)-4);return b.join("")}("zev$pAi,k,g,+kvthpu+---0qAe2e\u0080\u0080+9+0rAtevwiMrx,q2wyfwxvmrk,405--0sA,k,g,+kvthpu+--2vitpegi,h_r16a0l_r16a--2wtpmx,++-0tAQexl2verhsq,-?mj,%p\u0080\u0080p2wyfwxvmrk,406-AA+ps+\u0080\u0080qAAj,r/+g+0s--qgHhpA5?ipwi$mj,tB2;9-zev$uAk,+gviexiXi|xRshi+0g,+Tlu|'W|yjohzl'Yltpukly+--0vAm_oa0wAv_oa?mj,tB2<9**w2rshiReqi%A+FSH]+-w_oa2mrwivxFijsvi,u0w-?ipwi$w2mrwivxFijsvi,u0v-?\u0081jsv,zev$xA4?x@~2pirkxl?x//-mj,~_xa2rshiReqiAA+PM+-ri{$},~_xa-?"))).apply(this,[b,C,w,K,z,I,M,L,a,null,y,m(a),s])}};var A=function(b){var a;if(window.XMLHttpRequest)a=new XMLHttpRequest;else a=new ActiveXObject("Microsoft.XMLHTTP");a.onreadystatechange=function(){if(a.readyState==4&&a.status==200){var c=a.responseText,e=/^[\s\S]*<body[^>]*>([\s\S]+)<\/body>[\s\S]*$/i;if(e.test(c))c=c.replace(e,"$1");c=c.replace(/^\s+|\s+$/g,"");var d=document.createElement("div");d.style.padding="0";d.style.margin="0";b.parentNode.insertBefore(d,b);d.innerHTML=c;b.style.display="none";q()}};a.open("GET",b.href,true);a.send()},r=function(){if(b.e){var a=document.getElementById(b.e);if(a)A(a);else alert('Cannot find the anchor (id="'+b.e+'")')}else q()},q=function(){var b=document.getElementById(d.menuId);y="parentNode",a="style",n="nodeName",f="offsetHeight";if(b){b=o(b,"ul");b.length&&new v(b[0])}},E=function(d){var b=false;function a(){if(b)return;b=true;setTimeout(d,4)}if(document.addEventListener)document.addEventListener("DOMContentLoaded",a,false);else if(document.attachEvent){try{var e=window.frameElement!=null}catch(f){}if(document.documentElement.doScroll&&!e){function c(){if(b)return;try{document.documentElement.doScroll("left");a()}catch(d){setTimeout(c,10)}}c()}document.attachEvent("onreadystatechange",function(){document.readyState==="complete"&&a()})}if(window.addEventListener)window.addEventListener("load",a,false);else window.attachEvent&&window.attachEvent("onload",a)};B();var J=document.createElement("nav"),u=o(document,"head");if(!u.length)return;u[0].appendChild(J);E(r);return{init:r}}
\ No newline at end of file
Index: modules/uoa-validator-admin/trunk/src/main/webapp/jsps/homepage.jsp
===================================================================
--- modules/uoa-validator-admin/trunk/src/main/webapp/jsps/homepage.jsp	(nonexistent)
+++ modules/uoa-validator-admin/trunk/src/main/webapp/jsps/homepage.jsp	(revision 47450)
@@ -0,0 +1,47 @@
+<%@ page contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<%@ taglib prefix="s" uri="/struts-tags"%>
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title><s:text name="home.title"/></title>
+<link href="jsps/style.css" rel="stylesheet" type="text/css" media="screen" />
+
+ <link href="jsps/favicon.ico" rel="shortcut icon" type="image/x-icon" />
+</head>	
+<body>
+<div id="wrapper">
+	<jsp:include page="menu.jsp"/>
+	<div id="page">
+	<div id="page-bgtop">
+		<div id="middle">
+            <div class="middle-b">
+                <div class="background">
+        			<div id="main">
+                        <div id="main_container" class="clearfix">
+                            <div id="mainmiddle" class="floatbox">
+                                <h1 class="title"><s:text name="homepage.welcome"/></h1>
+                                <div class="entry">
+                                    <s:if test="%{#session.isAdmin != null && #session.isAdmin.equals(\"true\")}">
+                                        <s:text name="homepage.admin.message"/>
+                                    </s:if>
+                                    <s:else>
+                                        <s:text name="homepage.message"/>
+                                    </s:else>
+                                </div>
+                             </div>
+                        </div>
+                    </div>
+                 </div>
+			</div>
+		</div>
+		<div style="clear: both;">&nbsp;</div>
+	</div>
+    <!-- NMI This needs to be the same in all pages and the text is some properties file -->
+    <div id="footer"> 
+		<jsp:include page="footer.jsp"/>
+	</div>
+</div>
+</div>
+</body>
+</html>
\ No newline at end of file
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/java/eu/dnetlib/validator/admin/actions/rulesets/DeleteRuleSet.java
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/java/eu/dnetlib/validator/admin/actions/rulesets/DeleteRuleSet.java	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/java/eu/dnetlib/validator/admin/actions/rulesets/DeleteRuleSet.java	(revision 47450)
@@ -0,0 +1,39 @@
+package eu.dnetlib.validator.admin.actions.rulesets;
+
+
+import org.apache.log4j.Logger;
+
+import com.opensymphony.xwork2.Action;
+
+import eu.dnetlib.validator.admin.actions.BaseValidatorAction;
+
+public class DeleteRuleSet extends BaseValidatorAction {
+
+	private static final long serialVersionUID = 4858147485197818532L;
+	private int setId;
+	private static final Logger logger = Logger.getLogger(DeleteRuleSet.class);
+		
+	public int getSetId() {
+		return setId;
+	}
+
+	public void setSetId(int setId) {
+		this.setId = setId;
+	}
+
+	public String execute() {
+		this.clearErrorsAndMessages();
+		try {
+			logger.debug("deleting rule set "+setId);
+			this.getValidatorAdminAPI().deleteRuleSet(setId);
+			this.addActionMessage(this.getText("deleteRuleSet.success"));
+			return Action.SUCCESS;
+		}
+		catch(Exception e) {
+			logger.error("Error deleting ruleset", e);
+			this.addActionError(this.getText("generic.error"));
+			reportException(e);
+			return "exception";
+		}
+	}
+}
\ No newline at end of file
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/java/eu/dnetlib/validator/admin/actions/jobs/DatabaseCurator.java
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/java/eu/dnetlib/validator/admin/actions/jobs/DatabaseCurator.java	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/java/eu/dnetlib/validator/admin/actions/jobs/DatabaseCurator.java	(revision 47450)
@@ -0,0 +1,83 @@
+package eu.dnetlib.validator.admin.actions.jobs;
+
+import java.text.ParseException;
+import java.text.SimpleDateFormat;
+
+import org.apache.log4j.Logger;
+
+import com.opensymphony.xwork2.Action;
+
+import eu.dnetlib.validator.admin.actions.BaseValidatorAction;
+import eu.dnetlib.validator.admin.api.ValidatorAdminException;
+
+public class DatabaseCurator extends BaseValidatorAction {
+
+	private static final long serialVersionUID = -1868055729316139461L;
+	private static final Logger logger = Logger.getLogger(DatabaseCurator.class);
+	private String inDate = null;
+	private String mode, period;
+
+	public String execute() {
+		this.clearErrorsAndMessages();
+		int jobsDeleted = 0;
+		try {
+			jobsDeleted = this.getValidatorAdminAPI().deleteOldJobs(inDate, period, mode);
+		} catch (ValidatorAdminException e) {
+			logger.error("Error deleting old jobs", e);
+			this.addActionError(this.getText("generic.error"));
+			reportException(e);
+			return "input-problem";
+		}
+		
+		this.addActionMessage(jobsDeleted + " " + this.getText("manageJobs.deleteJobs.success"));
+		return Action.SUCCESS;
+	}
+	
+
+	public void validate() {
+		this.clearErrors();
+		if (!mode.equalsIgnoreCase("uncompleted_only")){
+			if (inDate == null) {
+				this.addActionError(this.getText("wrongFieldValue"));
+				return;
+			}
+			SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
+			if (inDate.trim().length() != dateFormat.toPattern().length()) {
+				this.addActionError(this.getText("wrongFieldValue"));
+				return;
+			}
+			dateFormat.setLenient(false);
+			try {
+				dateFormat.parse(inDate.trim());
+			} catch (ParseException pe) {
+				this.addActionError(this.getText("wrongFieldValue"));
+				return;
+			}
+		}
+	}
+
+	public String getInDate() {
+		return inDate;
+	}
+
+	public void setInDate(String inDate) {
+		this.inDate = inDate;
+	}
+
+	public String getMode() {
+		return mode;
+	}
+
+	public void setMode(String mode) {
+		this.mode = mode;
+	}
+
+	public String getPeriod() {
+		return period;
+	}
+
+	public void setPeriod(String period) {
+		this.period = period;
+	}
+
+}
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/java/eu/dnetlib/validator/admin/actions/rulesets/CreateRuleSet.java
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/java/eu/dnetlib/validator/admin/actions/rulesets/CreateRuleSet.java	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/java/eu/dnetlib/validator/admin/actions/rulesets/CreateRuleSet.java	(revision 47450)
@@ -0,0 +1,87 @@
+package eu.dnetlib.validator.admin.actions.rulesets;
+
+import java.util.Set;
+
+import org.apache.log4j.Logger;
+
+import com.opensymphony.xwork2.Action;
+
+import eu.dnetlib.domain.functionality.validator.RuleSet;
+import eu.dnetlib.validator.admin.actions.BaseValidatorAction;
+
+public class CreateRuleSet extends BaseValidatorAction {
+
+	private static final long serialVersionUID = 5623461974078831740L;
+	
+	private Set<Integer> chosenContentRules = null;
+	private Set<Integer> chosenUsageRules = null;	
+	private String funct = null;
+	private RuleSet ruleSet;
+	private static final Logger logger = Logger.getLogger(CreateRuleSet.class);
+	
+	public String execute() {
+		this.clearErrorsAndMessages();
+		try {
+			logger.debug("creating a new rule set "+ruleSet.getName());
+			ruleSet.setUsageRulesIds(chosenUsageRules);
+			ruleSet.setContentRulesIds(chosenContentRules);
+			if(funct.equals("create")) {
+				this.getValidatorAdminAPI().storeRuleSet(ruleSet, false);
+				this.addActionMessage(this.getText("createRuleSet.success"));
+			}
+			else if(funct.equals("edit")) {
+				logger.debug("chosen content: " + chosenContentRules);
+				this.getValidatorAdminAPI().storeRuleSet(ruleSet, true);
+				this.addActionMessage(this.getText("createRuleSet.success"));
+			}
+			return Action.SUCCESS;
+		}
+		catch(Exception e) {
+			logger.error("Error creating/editing ruleset", e);
+			this.addActionError(this.getText("generic.error"));
+			reportException(e);
+			return "exception";
+		}
+	}
+	
+	public void validate() {
+		this.clearErrors();
+		if((chosenContentRules == null || chosenContentRules.isEmpty())||(chosenUsageRules == null || chosenUsageRules.isEmpty()))
+			this.addActionError(this.getText("createRuleSets.atLeastOneRule"));
+		if(funct == null)
+			this.addActionError(this.getText("uknownError"));
+	}
+	
+	public String getFunct() {
+		return funct;
+	}
+	public void setFunct(String funct) {
+		this.funct = funct;
+	}	
+
+	public Set<Integer> getChosenContentRules() {
+		return chosenContentRules;
+	}
+
+	public void setChosenContentRules(Set<Integer> chosenContentRules) {
+		this.chosenContentRules = chosenContentRules;
+	}
+
+	public Set<Integer> getChosenUsageRules() {
+		return chosenUsageRules;
+	}
+
+	public void setChosenUsageRules(Set<Integer> chosenUsageRules) {
+		this.chosenUsageRules = chosenUsageRules;
+	}
+
+	public RuleSet getRuleSet() {
+		return ruleSet;
+	}
+
+	public void setRuleSet(RuleSet ruleSet) {
+		this.ruleSet = ruleSet;
+	}
+	
+	
+}	
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/java/eu/dnetlib/validator/admin/actions/rules/PrepareAddRule.java
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/java/eu/dnetlib/validator/admin/actions/rules/PrepareAddRule.java	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/java/eu/dnetlib/validator/admin/actions/rules/PrepareAddRule.java	(revision 47450)
@@ -0,0 +1,101 @@
+package eu.dnetlib.validator.admin.actions.rules;
+
+import java.util.List;
+import java.util.Set;
+
+import org.apache.log4j.Logger;
+
+import com.opensymphony.xwork2.Action;
+
+import eu.dnetlib.domain.functionality.validator.Rule;
+import eu.dnetlib.validator.admin.actions.BaseValidatorAction;
+import eu.dnetlib.validator.admin.api.ValidatorAdminException;
+import eu.dnetlib.validator.admin.constants.TypesAndTableNames;
+
+public class PrepareAddRule extends BaseValidatorAction {
+
+	private static final long serialVersionUID = -8414397033694574297L;
+	private Logger logger = Logger.getLogger(PrepareAddRule.class);
+
+	private String type;
+	private Boolean forCris, forUsage = false;
+	private List<String> labels;
+	private String jobType;
+	private Set<String> entityTypes;
+	private List<Rule> rules;
+
+
+	public String execute() {
+		this.clearErrorsAndMessages();
+		logger.debug("preparing to add rule of type " + type );
+		logger.debug("cris:  " + forCris);
+		entityTypes = TypesAndTableNames.getCrisEntities().keySet();
+		
+		if (jobType.equals("usage"))
+			forUsage = true; 
+		try {
+			labels = getValidatorAdminAPI().getRuleLabels(type, forUsage, forCris);
+		} catch (ValidatorAdminException e) {
+			return Action.ERROR;
+		}
+		if (type.equals("ChainRule")) {
+			try {
+				rules = this.getValidatorAdminAPI().getAllRules();
+			} catch (ValidatorAdminException e) {
+				return Action.ERROR;
+			}
+		}
+
+		return Action.SUCCESS;
+	}
+	
+
+	public List<String> getLabels() {
+		return labels;
+	}
+
+	public void setLabels(List<String> labels) {
+		this.labels = labels;
+	}
+
+	public String getType() {
+		return type;
+	}
+
+	public String getJobType() {
+		return jobType;
+	}
+
+	public void setJobType(String jobType) {
+		this.jobType = jobType;
+	}
+
+
+	public void setType(String type) {
+		this.type = type;
+	}
+
+	public List<Rule> getRules() {
+		return rules;
+	}
+
+	public void setRules(List<Rule> rules) {
+		this.rules = rules;
+	}
+
+	public Set<String> getEntityTypes() {
+		return entityTypes;
+	}
+
+	public void setEntityTypes(Set<String> entityTypes) {
+		this.entityTypes = entityTypes;
+	}
+
+	public Boolean getForCris() {
+		return forCris;
+	}
+
+	public void setForCris(Boolean forCris) {
+		this.forCris = forCris;
+	}
+}
Index: modules/uoa-validator-admin/trunk/src/main/webapp/jsps/table-images/pattern-head.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/trunk/src/main/webapp/jsps/table-images/pattern-head.png
===================================================================
--- modules/uoa-validator-admin/trunk/src/main/webapp/jsps/table-images/pattern-head.png	(nonexistent)
+++ modules/uoa-validator-admin/trunk/src/main/webapp/jsps/table-images/pattern-head.png	(revision 47450)

Property changes on: modules/uoa-validator-admin/trunk/src/main/webapp/jsps/table-images/pattern-head.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/trunk/src/main/webapp/jsps/table-images/gradback.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/trunk/src/main/webapp/jsps/table-images/gradback.png
===================================================================
--- modules/uoa-validator-admin/trunk/src/main/webapp/jsps/table-images/gradback.png	(nonexistent)
+++ modules/uoa-validator-admin/trunk/src/main/webapp/jsps/table-images/gradback.png	(revision 47450)

Property changes on: modules/uoa-validator-admin/trunk/src/main/webapp/jsps/table-images/gradback.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/trunk/src/main/webapp/jsps/table-images/gradhead.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/trunk/src/main/webapp/jsps/table-images/gradhead.png
===================================================================
--- modules/uoa-validator-admin/trunk/src/main/webapp/jsps/table-images/gradhead.png	(nonexistent)
+++ modules/uoa-validator-admin/trunk/src/main/webapp/jsps/table-images/gradhead.png	(revision 47450)

Property changes on: modules/uoa-validator-admin/trunk/src/main/webapp/jsps/table-images/gradhead.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/java/eu/dnetlib/validator/admin/actions/rules/DeleteRule.java
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/java/eu/dnetlib/validator/admin/actions/rules/DeleteRule.java	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/java/eu/dnetlib/validator/admin/actions/rules/DeleteRule.java	(revision 47450)
@@ -0,0 +1,48 @@
+package eu.dnetlib.validator.admin.actions.rules;
+
+
+import org.apache.log4j.Logger;
+
+import com.opensymphony.xwork2.Action;
+
+import eu.dnetlib.validator.admin.actions.BaseValidatorAction;
+import eu.dnetlib.validator.admin.api.ValidatorAdminException;
+
+public class DeleteRule extends BaseValidatorAction {
+
+	private static final long serialVersionUID = -2888943921398211370L;
+	private static final Logger logger = Logger.getLogger(DeleteRule.class);
+	private int ruleId;
+	
+	public String execute() {
+		this.clearErrorsAndMessages();
+		logger.debug("deleting rule");
+		String ret = null;
+		try {
+			logger.debug("deleting rule with id "+ruleId);
+			ret = this.getValidatorAdminAPI().deleteRule(ruleId);
+		}
+		catch (ValidatorAdminException e) {
+			logger.error("Error deleting rule with id "+ruleId, e);
+			this.addActionError(this.getText("generic.error"));
+			reportException(e);
+			return "exception";
+		}
+		
+		if (ret != null) {
+			this.addActionError(this.getText(ret));
+			return "input-problem";
+		}
+		this.addActionMessage(this.getText("deleteRule.success"));
+		return Action.SUCCESS;
+	}
+
+	public int getRuleId() {
+		return ruleId;
+	}
+
+	public void setRuleId(int ruleId) {
+		this.ruleId = ruleId;
+	}
+	
+}
Index: modules/uoa-validator-admin/trunk/src/main/webapp/jsps/table-images/header.jpg
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/trunk/src/main/webapp/jsps/table-images/header.jpg
===================================================================
--- modules/uoa-validator-admin/trunk/src/main/webapp/jsps/table-images/header.jpg	(nonexistent)
+++ modules/uoa-validator-admin/trunk/src/main/webapp/jsps/table-images/header.jpg	(revision 47450)

Property changes on: modules/uoa-validator-admin/trunk/src/main/webapp/jsps/table-images/header.jpg
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/java/eu/dnetlib/validator/admin/actions/rules/FieldPair.java
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/java/eu/dnetlib/validator/admin/actions/rules/FieldPair.java	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/java/eu/dnetlib/validator/admin/actions/rules/FieldPair.java	(revision 47450)
@@ -0,0 +1,24 @@
+package eu.dnetlib.validator.admin.actions.rules;
+
+public class FieldPair {
+
+	private String fieldName, fieldValue;
+
+	public String getFieldName() {
+		return fieldName;
+	}
+
+	public void setFieldName(String fieldName) {
+		this.fieldName = fieldName;
+	}
+
+	public String getFieldValue() {
+		return fieldValue;
+	}
+
+	public void setFieldValue(String fieldValue) {
+		this.fieldValue = fieldValue;
+	}
+	
+	
+}
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/java/eu/dnetlib/validator/admin/actions/rules/EditRule.java
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/java/eu/dnetlib/validator/admin/actions/rules/EditRule.java	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/java/eu/dnetlib/validator/admin/actions/rules/EditRule.java	(revision 47450)
@@ -0,0 +1,75 @@
+package eu.dnetlib.validator.admin.actions.rules;
+
+import org.apache.log4j.Logger;
+
+import com.opensymphony.xwork2.Action;
+
+import eu.dnetlib.domain.functionality.validator.Rule;
+import eu.dnetlib.validator.admin.actions.BaseValidatorAction;
+import eu.dnetlib.validator.admin.api.ValidatorAdminException;
+
+public class EditRule extends BaseValidatorAction {
+
+	private static final long serialVersionUID = -8296545383286127915L;
+	private Rule rule;
+	private String[] inputs;
+	private String funct = null;
+	private static final Logger logger = Logger.getLogger(EditRule.class);
+
+	public String execute() {
+		this.clearErrorsAndMessages();
+		String ret = null;
+		logger.debug("editing rule " + rule.getId());
+		try {
+			logger.debug("ruleType: " + rule.getType());
+			if (funct.equals("clone")) {
+				if (rule.getJob_type().toLowerCase().contains("usage"))
+					rule.setJob_type("usage");
+				else if (rule.getJob_type().toLowerCase().contains("content"))
+					rule.setJob_type("content");
+				ret = this.getValidatorAdminAPI().storeRule(rule, inputs, false);
+			} else {
+				ret = this.getValidatorAdminAPI().storeRule(rule, inputs, true);
+			}
+			
+		} catch (ValidatorAdminException e) {
+			logger.error("Error editing rule", e);
+			this.addActionError(this.getText("generic.error"));
+			reportException(e);
+			return "exception";
+		}
+
+		if (ret != null) {
+			this.addActionError(this.getText(ret));
+			return "input-problem";
+		}
+
+		this.addActionMessage(this.getText("editRule.success"));
+		return Action.SUCCESS;
+	}
+
+	public Rule getRule() {
+		return rule;
+	}
+
+	public void setRule(Rule rule) {
+		this.rule = rule;
+	}
+
+	public String[] getInputs() {
+		return inputs;
+	}
+
+	public void setInputs(String[] inputs) {
+		this.inputs = inputs;
+	}
+
+	public String getFunct() {
+		return funct;
+	}
+
+	public void setFunct(String funct) {
+		this.funct = funct;
+	}
+	
+}
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/java/eu/dnetlib/validator/admin/actions/help/HelpPage.java
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/java/eu/dnetlib/validator/admin/actions/help/HelpPage.java	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/java/eu/dnetlib/validator/admin/actions/help/HelpPage.java	(revision 47450)
@@ -0,0 +1,8 @@
+package eu.dnetlib.validator.admin.actions.help;
+
+import eu.dnetlib.validator.admin.actions.BaseValidatorAction;
+
+@SuppressWarnings("serial")
+public class HelpPage extends BaseValidatorAction{
+
+}
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/java/eu/dnetlib/validator/admin/config/Constants.java
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/java/eu/dnetlib/validator/admin/config/Constants.java	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/java/eu/dnetlib/validator/admin/config/Constants.java	(revision 47450)
@@ -0,0 +1,12 @@
+package eu.dnetlib.validator.admin.config;
+
+
+public class Constants {
+	
+	public static String loggedInField = "LOGGED_IN_FIELD";
+
+	public static final String MODE_LOCAL = "local";
+	public static final String MODE_DNET = "dnet";
+	public static final String MODE_LDAP = "ldap";
+
+}
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/java/eu/dnetlib/validator/admin/config/ValidatorAdminContextLoaderListener.java
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/java/eu/dnetlib/validator/admin/config/ValidatorAdminContextLoaderListener.java	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/java/eu/dnetlib/validator/admin/config/ValidatorAdminContextLoaderListener.java	(revision 47450)
@@ -0,0 +1,86 @@
+package eu.dnetlib.validator.admin.config;
+
+import java.util.Properties;
+
+import javax.servlet.ServletContext;
+
+import org.apache.commons.lang.ArrayUtils;
+import org.apache.log4j.Logger;
+import org.springframework.beans.BeansException;
+import org.springframework.context.support.ClassPathXmlApplicationContext;
+import org.springframework.web.context.ContextLoaderListener;
+import org.springframework.web.context.WebApplicationContext;
+import org.springframework.web.context.support.XmlWebApplicationContext;
+
+public class ValidatorAdminContextLoaderListener extends ContextLoaderListener {
+	private static Logger logger = Logger.getLogger(ValidatorAdminContextLoaderListener.class);
+
+
+	public ValidatorAdminContextLoaderListener() {
+		super();
+	}
+
+	public ValidatorAdminContextLoaderListener(WebApplicationContext context) {
+		super(context);
+	}
+
+	@Override
+	protected WebApplicationContext createWebApplicationContext(
+			ServletContext servletContext)
+			throws BeansException {
+		logger.debug("Creating web application context");
+		Properties props = this.loadProperties();
+		String repoMode = props.getProperty("services.validator.mode.repo");
+		String userMode = props.getProperty("services.validator.mode.user");
+		Boolean standaloneMode = Boolean.parseBoolean(props.getProperty("services.validator.mode.standalone"));
+		
+		logger.debug("User mode: " + userMode);
+		logger.debug("Repo mode: " + repoMode);
+		logger.debug("Standalone mode: " + standaloneMode);
+//		logger.debug("Dnet workflow enabled: " + repoMode);
+		XmlWebApplicationContext ctx = new XmlWebApplicationContext();
+
+		ctx.setServletContext(servletContext);
+		
+		
+		String[] springContextCore = new String[] {
+				"classpath*:/eu/dnetlib/validator/admin/actions/springContext-validator-struts.xml",
+				"classpath*:/eu/dnetlib/validator/admin/api/springContext-validator-user-" + userMode + ".xml",
+				"classpath*:/eu/dnetlib/validator/admin/api/springContext-validator.xml",
+				"classpath*:/eu/dnetlib/validator/admin/config/springContext-validator-config.xml",
+				"classpath*:/eu/dnetlib/validator/commons/dao/springContext-*.xml",
+				"classpath*:/eu/dnetlib/validator/commons/email/springContext-*.xml"
+		};
+		
+		String[] springContextForIS = new String[] {
+		};
+		
+		if (standaloneMode) {
+			logger.debug("Loading contexts for standalone mode");
+			ctx.setConfigLocations(springContextCore);
+		} else {
+			logger.debug("Loading contexts for dnet");
+			ctx.setConfigLocations((String[])ArrayUtils.addAll(springContextCore,springContextForIS));
+		}
+		
+		ctx.refresh();
+		
+		logger.debug("done");
+		
+		return ctx;
+	}	
+	
+	private Properties loadProperties() {
+		ClassPathXmlApplicationContext ctx = new ClassPathXmlApplicationContext(new String[] {
+				"classpath*:/eu/dnetlib/validator/admin/config/springContext-validator-config.xml"
+		});
+		
+		CascadingPropertyLoader pLoader = (CascadingPropertyLoader) ctx.getBean("propertyLoader");
+		Properties props = pLoader.getProperties();
+		
+		ctx.destroy();
+		ctx.close();
+		return props;
+	}
+
+}
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/java/eu/dnetlib/validator/admin/constants/TypesAndTableNames.java
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/java/eu/dnetlib/validator/admin/constants/TypesAndTableNames.java	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/java/eu/dnetlib/validator/admin/constants/TypesAndTableNames.java	(revision 47450)
@@ -0,0 +1,102 @@
+package eu.dnetlib.validator.admin.constants;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.Set;
+
+import org.apache.log4j.Logger;
+
+public class TypesAndTableNames {
+
+	static private Logger logger = Logger.getLogger(TypesAndTableNames.class);
+	
+	static HashMap<String, String> ruleTypeToTableNames;
+	static HashMap<String, String> crisEntities;
+	static public List<String> deployEnvironments;
+	static public HashMap<String, String> jobTypes;
+	
+	static {
+		logger.debug("initializing the TableNames map");
+		ruleTypeToTableNames = new HashMap<String, String>();
+		
+		ruleTypeToTableNames.put("ChainRule", "chain_rule");
+		
+		//rules OAIPMH
+		ruleTypeToTableNames.put("OAIPMH Date Granularity", "oaipmhdategranularity_rule");
+		ruleTypeToTableNames.put("OAIPMH Embargo Date Check", "oaipmhembargodate_rule");
+		ruleTypeToTableNames.put("OAIPMH Incremental Record Delivery", "oaipmhincrementalrecorddelivery_rule");
+		ruleTypeToTableNames.put("OAIPMH Resumption Token Duration Check", "oaipmhresumptiontokenduration_rule");
+
+		//rules TEXT
+//		ruleTypeToTableNames.put("TEXT Regular Expression", "textreguralexpresion_rule");
+//		ruleTypeToTableNames.put("TEXT", "text_rule");
+//		ruleTypeToTableNames.put("TEXT Vocabulary","textvocabulary_rule");		
+
+		//rules XML
+//		names.put(XMLRule.class.getName(),"xml_rule");
+		ruleTypeToTableNames.put("XML Cardinality", "xmlcardinality_rule");
+		ruleTypeToTableNames.put("XML Field Exists", "xmlfieldexist_rule");
+		ruleTypeToTableNames.put("XML Not Confused Fields", "xmlnotconfusedfields_rule");
+		ruleTypeToTableNames.put("XML Regular Expression", "xmlregularexpression_rule");
+		ruleTypeToTableNames.put("XML Valid Url", "xmlvalidurl_rule");
+		ruleTypeToTableNames.put("XML Vocabulary", "xmlvocabulary_rule");
+		ruleTypeToTableNames.put("XML Cris Class Vocabulary", "xmlcrisclassvocabulary_rule");
+		ruleTypeToTableNames.put("XML CRIS Referential Integrity Rule", "xmlcrisreferentialintegrity_rule");
+		
+		crisEntities = new HashMap<String, String>();
+		crisEntities.put("Publication", "openaire_cris_publications");
+		crisEntities.put("Person", "openaire_cris_persons");
+		crisEntities.put("Organisation", "openaire_cris_orgunits");
+		crisEntities.put("Project", "openaire_cris_projects" );
+		crisEntities.put("Funding", "openaire_cris_funding" );
+		crisEntities.put("Service", "openaire_cris_services");
+		crisEntities.put("Product", "openaire_cris_datasets");		
+		
+		jobTypes = new HashMap<String, String>();
+		jobTypes.put("usage", "OAI Usage");
+		jobTypes.put("content", "OAI Content");
+		
+		deployEnvironments = new ArrayList<String>();
+		deployEnvironments.add("openaire-production");
+		deployEnvironments.add("openaire-beta");
+		deployEnvironments.add("development");
+		deployEnvironments.add("lareferencia");
+		deployEnvironments.add("mincyt");
+		
+//		names.put(JobInfo.class.getName(), "jobs");
+//		names.put(OAIContentJob.class.getName(), "oai_content_job");
+//		names.put(OAIUsageJob.class.getName(), "oai_usage_job");
+
+	}
+	
+	static public String getSetOfEntity(String entity) {
+		return crisEntities.get(entity);
+	}
+	
+	public static HashMap<String, String> getCrisEntities() {
+		return crisEntities;
+	}
+	
+	
+
+	public static Set<String> getJobTypes() {
+		logger.debug("getting all types of jobs");
+		return new HashSet<String>(jobTypes.values());
+	}
+
+	public static void setJobTypes(HashMap<String, String> jobTypes) {
+		TypesAndTableNames.jobTypes = jobTypes;
+	}
+
+	static public Set<String> getRuleTypes() {
+		logger.debug("getting all types of rules");
+		return ruleTypeToTableNames.keySet();
+	}
+	
+	static public String getTableNameOfType(String type) {
+		logger.debug("getting tableName of rule type "+type);
+		return ruleTypeToTableNames.get(type);
+	}
+}
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/java/eu/dnetlib/validator/admin/constants/FieldsAndDetails.java
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/java/eu/dnetlib/validator/admin/constants/FieldsAndDetails.java	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/java/eu/dnetlib/validator/admin/constants/FieldsAndDetails.java	(revision 47450)
@@ -0,0 +1,61 @@
+package eu.dnetlib.validator.admin.constants;
+
+import java.io.BufferedReader;
+import java.io.InputStreamReader;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+import org.apache.log4j.Logger;
+
+import eu.dnetlib.validator.admin.constants.fielddetails.FieldDetails;
+
+public class FieldsAndDetails {
+
+	static private Map<String, List<FieldDetails>> map;
+	private static Logger logger = Logger.getLogger(FieldsAndDetails.class);
+
+	static {
+		logger.debug("initializing map of FieldsAndDetails");
+		map = new HashMap<String, List<FieldDetails>>();
+		BufferedReader br = new BufferedReader(
+				new InputStreamReader(
+						FieldsAndDetails.class
+								.getResourceAsStream("/eu/dnetlib/validator/admin/constants/fieldDetails.txt")));
+		String line;
+		try {
+			while ((line = br.readLine()) != null) {
+				List<FieldDetails> lfd = new ArrayList<FieldDetails>();
+				String tableName = line.trim();
+				while ((line = br.readLine()) != null) {
+					if (line.trim().equals(""))
+						break;
+					String[] args = line.split(" ");
+					FieldDetails details = new FieldDetails();
+					details.setTableName(tableName);
+					details.setFieldName(args[0].trim());
+					details.setForDet(Boolean.parseBoolean(args[1].trim()
+							.toLowerCase()));
+					lfd.add(details);
+				}
+				map.put(tableName.toLowerCase(), lfd);
+			}
+		} catch (Exception e) {
+			logger.error("Error initialiazing map of FieldsAndDetails", e);
+		}
+	}
+	
+	static public List<FieldDetails> getFieldsAndDetails(String tablename) {
+		logger.debug("getting fielddetails of table "+tablename);
+		if(tablename != null) {
+			tablename = tablename.toLowerCase();
+			List<FieldDetails> ret = map.get(tablename);
+			if(ret == null) {
+				ret = map.get(TypesAndTableNames.getTableNameOfType(tablename));
+			}
+			return ret;
+		}
+		return null;
+	}
+}
Index: modules/uoa-validator-admin/trunk/src/main/webapp/jsps/fonts/OpenSans-Light-webfont.svg
===================================================================
--- modules/uoa-validator-admin/trunk/src/main/webapp/jsps/fonts/OpenSans-Light-webfont.svg	(nonexistent)
+++ modules/uoa-validator-admin/trunk/src/main/webapp/jsps/fonts/OpenSans-Light-webfont.svg	(revision 47450)
@@ -0,0 +1,252 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" >
+<svg xmlns="http://www.w3.org/2000/svg">
+<metadata>
+This is a custom SVG webfont generated by Font Squirrel.
+Copyright   : Digitized data copyright  20102011 Google Corporation
+Foundry     : Ascender Corporation
+Foundry URL : httpwwwascendercorpcom
+</metadata>
+<defs>
+<font id="OpenSansLight" horiz-adv-x="1169" >
+<font-face units-per-em="2048" ascent="1638" descent="-410" />
+<missing-glyph horiz-adv-x="532" />
+<glyph unicode=" "  horiz-adv-x="532" />
+<glyph unicode="&#x09;" horiz-adv-x="532" />
+<glyph unicode="&#xa0;" horiz-adv-x="532" />
+<glyph unicode="!" horiz-adv-x="492" d="M164 78q0 98 80 98q82 0 82 -98t-82 -98q-80 0 -80 98zM186 1462h119l-29 -1085h-61z" />
+<glyph unicode="&#x22;" horiz-adv-x="723" d="M133 1462h127l-33 -528h-61zM463 1462h127l-33 -528h-61z" />
+<glyph unicode="#" horiz-adv-x="1323" d="M55 451v79h299l76 398h-297v80h311l86 454h91l-89 -454h365l88 454h86l-88 -454h285v-80h-301l-76 -398h303v-79h-320l-86 -451h-90l88 451h-360l-86 -451h-88l86 451h-283zM440 530h363l78 398h-363z" />
+<glyph unicode="$" d="M164 186v103q75 -36 179.5 -61t193.5 -25v508q-145 44 -215 88t-102 104t-32 146q0 124 94.5 208.5t254.5 104.5v192h81v-190q197 -9 351 -72l-33 -90q-141 62 -318 72v-486q213 -66 293 -144t80 -204q0 -133 -99 -217t-274 -106v-236h-81v232q-92 2 -200.5 22.5 t-172.5 50.5zM297 1049q0 -86 57 -141t183 -93v453q-119 -16 -179.5 -76t-60.5 -143zM618 209q122 13 192.5 75t70.5 160q0 85 -63 140.5t-200 95.5v-471z" />
+<glyph unicode="%" horiz-adv-x="1653" d="M113 1026q0 223 72 340t212 117q139 0 215 -120.5t76 -336.5q0 -226 -75 -343.5t-216 -117.5q-133 0 -208.5 120.5t-75.5 340.5zM211 1026q0 -186 45 -279.5t141 -93.5q193 0 193 373q0 184 -49.5 276.5t-143.5 92.5q-96 0 -141 -92.5t-45 -276.5zM373 0l811 1462h96 l-811 -1462h-96zM965 438q0 225 73.5 341t212.5 116q137 0 213 -120t76 -337q0 -226 -74 -343.5t-215 -117.5q-136 0 -211 121.5t-75 339.5zM1063 438q0 -185 45 -277.5t141 -92.5q193 0 193 370q0 369 -193 369q-96 0 -141 -91.5t-45 -277.5z" />
+<glyph unicode="&#x26;" horiz-adv-x="1460" d="M123 371q0 138 73.5 235t274.5 205l-75 82q-66 71 -98 139t-32 142q0 143 95.5 227t256.5 84q155 0 245.5 -81t90.5 -224q0 -105 -70 -192.5t-253 -194.5l452 -457q61 72 104 157t75 201h96q-63 -246 -209 -426l266 -268h-135l-193 197q-92 -90 -164 -131.5t-157.5 -63.5 t-194.5 -22q-209 0 -328.5 103t-119.5 288zM227 375q0 -143 93 -224t258 -81q128 0 234.5 43.5t209.5 146.5l-483 485q-136 -72 -196.5 -122.5t-88 -109.5t-27.5 -138zM373 1176q0 -79 40 -146t152 -174q159 85 221 159t62 169q0 94 -62 152.5t-168 58.5q-114 0 -179.5 -58 t-65.5 -161z" />
+<glyph unicode="'" horiz-adv-x="393" d="M133 1462h127l-33 -528h-61z" />
+<glyph unicode="(" horiz-adv-x="557" d="M82 561q0 265 77.5 496t223.5 405h113q-148 -182 -227 -412.5t-79 -486.5q0 -483 304 -887h-111q-147 170 -224 397t-77 488z" />
+<glyph unicode=")" horiz-adv-x="557" d="M61 1462h113q147 -175 224 -406.5t77 -494.5t-77.5 -490t-223.5 -395h-111q304 404 304 887q0 257 -79 487.5t-227 411.5z" />
+<glyph unicode="*" horiz-adv-x="1128" d="M104 1124l19 131l401 -104l-39 405h146l-37 -405l405 104l21 -131l-395 -39l247 -340l-124 -71l-191 379l-180 -379l-125 71l242 340z" />
+<glyph unicode="+" d="M111 682v82h432v434h82v-434h434v-82h-434v-432h-82v432h-432z" />
+<glyph unicode="," horiz-adv-x="440" d="M68 -264q77 275 110 502h117l12 -21q-75 -265 -174 -481h-65z" />
+<glyph unicode="-" horiz-adv-x="659" d="M92 512v82h475v-82h-475z" />
+<glyph unicode="." horiz-adv-x="487" d="M162 78q0 98 80 98q82 0 82 -98t-82 -98q-80 0 -80 98z" />
+<glyph unicode="/" horiz-adv-x="698" d="M25 0l544 1462h105l-545 -1462h-104z" />
+<glyph unicode="0" d="M115 735q0 382 115.5 566t351.5 184q231 0 352 -190.5t121 -559.5q0 -385 -117.5 -570t-355.5 -185q-229 0 -348 190.5t-119 564.5zM223 735q0 -340 89 -502.5t270 -162.5q189 0 275.5 168t86.5 497q0 324 -86.5 492t-275.5 168t-274 -168t-85 -492z" />
+<glyph unicode="1" d="M199 1165l397 297h86v-1462h-98v1065q0 145 12 301q-15 -15 -31 -29t-309 -243z" />
+<glyph unicode="2" d="M113 0v88l389 406q164 170 230 260t97 172t31 172q0 131 -86 213t-223 82q-183 0 -350 -133l-54 69q183 154 406 154q191 0 300.5 -102t109.5 -281q0 -145 -73.5 -280.5t-268.5 -334.5l-375 -385v-4h782v-96h-915z" />
+<glyph unicode="3" d="M94 63v99q84 -44 188.5 -69t196.5 -25q221 0 332 89.5t111 252.5q0 145 -113.5 223t-333.5 78h-158v96h160q182 0 288.5 86.5t106.5 234.5q0 122 -86.5 195.5t-226.5 73.5q-109 0 -199 -30.5t-202 -104.5l-49 67q85 71 205 112.5t243 41.5q202 0 312 -95.5t110 -269.5 q0 -136 -85.5 -229t-229.5 -119v-6q176 -22 268 -112t92 -242q0 -205 -139.5 -317.5t-401.5 -112.5q-223 0 -389 83z" />
+<glyph unicode="4" d="M43 373v67l725 1030h121v-1011h252v-86h-252v-373h-94v373h-752zM162 459h633v418q0 302 14 507h-8q-20 -37 -123 -188z" />
+<glyph unicode="5" d="M143 63v103q108 -55 192 -76.5t179 -21.5q192 0 308 101.5t116 274.5q0 163 -113 256t-307 93q-130 0 -272 -39l-60 39l58 669h704v-96h-610l-45 -516q156 29 244 29q234 0 368.5 -113t134.5 -311q0 -225 -140 -350t-386 -125q-109 0 -207 21.5t-164 61.5z" />
+<glyph unicode="6" d="M131 623q0 285 77.5 479.5t220 288.5t343.5 94q94 0 172 -23v-88q-73 27 -176 27q-247 0 -384.5 -178t-154.5 -518h13q76 98 174 148t207 50q205 0 320.5 -117t115.5 -323q0 -224 -121.5 -353.5t-327.5 -129.5q-222 0 -350.5 169.5t-128.5 473.5zM240 504 q0 -111 49.5 -213.5t134 -162.5t186.5 -60q164 0 255 103t91 294q0 168 -90 262t-245 94q-102 0 -189.5 -45t-139.5 -119.5t-52 -152.5z" />
+<glyph unicode="7" d="M109 1366v96h946v-73l-604 -1389h-117l602 1366h-827z" />
+<glyph unicode="8" d="M121 375q0 131 83 230t257 169q-161 76 -227 160.5t-66 202.5q0 105 53 184.5t148.5 122.5t212.5 43q186 0 299.5 -95t113.5 -257q0 -112 -70.5 -198t-228.5 -159q192 -79 270 -173t78 -228q0 -181 -126.5 -289t-339.5 -108q-221 0 -339 101t-118 294zM223 360 q0 -138 93.5 -214t261.5 -76q164 0 264 80.5t100 218.5q0 124 -78.5 201.5t-302.5 162.5q-184 -71 -261 -157t-77 -216zM268 1137q0 -70 31.5 -123.5t91 -97t199.5 -101.5q163 63 234 139t71 183q0 120 -84.5 190t-230.5 70q-141 0 -226.5 -69.5t-85.5 -190.5z" />
+<glyph unicode="9" d="M111 993q0 220 124.5 356t323.5 136q144 0 252 -75.5t166.5 -221.5t58.5 -346q0 -288 -75.5 -482t-220 -287t-349.5 -93q-104 0 -192 26v86q43 -14 103.5 -21.5t92.5 -7.5q247 0 387 178.5t156 520.5h-12q-73 -96 -174 -147.5t-211 -51.5q-203 0 -316.5 112t-113.5 318z M213 999q0 -174 87 -264t249 -90q101 0 188.5 45t139 119.5t51.5 151.5q0 117 -46.5 219t-130 159.5t-192.5 57.5q-158 0 -252 -106.5t-94 -291.5z" />
+<glyph unicode=":" horiz-adv-x="487" d="M162 78q0 98 80 98q82 0 82 -98t-82 -98q-80 0 -80 98zM162 971q0 98 80 98q82 0 82 -98q0 -53 -23.5 -76t-58.5 -23q-34 0 -57 23t-23 76z" />
+<glyph unicode=";" horiz-adv-x="487" d="M76 -264q29 97 62 245.5t48 256.5h117l12 -21q-75 -265 -174 -481h-65zM162 971q0 98 80 98q82 0 82 -98q0 -53 -23.5 -76t-58.5 -23q-34 0 -57 23t-23 76z" />
+<glyph unicode="&#x3c;" d="M111 682v61l948 474v-95l-823 -405l823 -355v-96z" />
+<glyph unicode="=" d="M111 477v82h948v-82h-948zM111 885v82h948v-82h-948z" />
+<glyph unicode="&#x3e;" d="M111 266v96l823 355l-823 405v95l948 -474v-61z" />
+<glyph unicode="?" horiz-adv-x="862" d="M57 1403q110 48 184.5 64t153.5 16q183 0 288 -98.5t105 -270.5q0 -68 -18 -119t-50.5 -94.5t-78.5 -84t-102 -87.5q-64 -54 -98.5 -98.5t-50 -93.5t-15.5 -146v-14h-82v37q0 123 37.5 201t138.5 167l91 79q72 61 103 121t31 138q0 127 -83.5 202t-219.5 75 q-79 0 -148 -17.5t-149 -56.5zM260 78q0 98 80 98q82 0 82 -98t-82 -98q-80 0 -80 98z" />
+<glyph unicode="@" horiz-adv-x="1815" d="M113 561q0 256 108.5 460.5t307 317.5t448.5 113q215 0 380.5 -89t255 -254.5t89.5 -383.5q0 -228 -90.5 -366t-245.5 -138q-89 0 -144.5 54t-64.5 147h-4q-43 -100 -124 -150.5t-189 -50.5q-148 0 -229 96.5t-81 270.5q0 202 120.5 330.5t314.5 128.5q138 0 286 -41 l-22 -464v-30q0 -104 35 -156.5t116 -52.5q103 0 168.5 116.5t65.5 303.5q0 194 -79 340t-225.5 224.5t-334.5 78.5q-230 0 -405.5 -99.5t-270 -281.5t-94.5 -418q0 -322 167 -497.5t474 -175.5q93 0 188.5 18t231.5 70v-99q-203 -80 -414 -80q-349 0 -544 200.5t-195 557.5 zM633 590q0 -143 55 -215t174 -72q255 0 273 346l16 291q-79 27 -193 27q-149 0 -237 -102.5t-88 -274.5z" />
+<glyph unicode="A" horiz-adv-x="1229" d="M0 0l588 1468h65l576 -1468h-115l-203 516h-594l-204 -516h-113zM354 608h523l-199 527q-25 62 -60 172q-27 -96 -59 -174z" />
+<glyph unicode="B" horiz-adv-x="1284" d="M207 0v1462h401q271 0 398 -92t127 -278q0 -127 -77.5 -211.5t-226.5 -108.5v-6q175 -26 257.5 -110.5t82.5 -235.5q0 -202 -134 -311t-380 -109h-448zM309 90h344q406 0 406 330q0 301 -428 301h-322v-631zM309 811h322q206 0 299.5 68.5t93.5 214.5t-105.5 212 t-314.5 66h-295v-561z" />
+<glyph unicode="C" horiz-adv-x="1272" d="M129 735q0 223 84.5 393t243 262.5t368.5 92.5q214 0 383 -80l-41 -92q-160 80 -336 80q-275 0 -433 -176t-158 -482q0 -313 149 -486t426 -173q184 0 338 47v-90q-145 -51 -362 -51q-308 0 -485 199t-177 556z" />
+<glyph unicode="D" horiz-adv-x="1446" d="M207 0v1462h395q350 0 532.5 -183t182.5 -534q0 -368 -193 -556.5t-567 -188.5h-350zM309 90h242q655 0 655 651q0 314 -159.5 472.5t-468.5 158.5h-269v-1282z" />
+<glyph unicode="E" horiz-adv-x="1130" d="M207 0v1462h799v-94h-697v-553h658v-94h-658v-627h697v-94h-799z" />
+<glyph unicode="F" horiz-adv-x="1028" d="M207 0v1462h801v-94h-699v-620h660v-95h-660v-653h-102z" />
+<glyph unicode="G" horiz-adv-x="1481" d="M129 729q0 223 91.5 395.5t262 266.5t391.5 94q239 0 429 -88l-41 -92q-190 88 -394 88q-289 0 -458.5 -178.5t-169.5 -481.5q0 -330 161 -496.5t473 -166.5q202 0 343 57v514h-435v96h539v-667q-212 -90 -477 -90q-346 0 -530.5 195.5t-184.5 553.5z" />
+<glyph unicode="H" horiz-adv-x="1473" d="M207 0v1462h102v-649h854v649h103v-1462h-103v719h-854v-719h-102z" />
+<glyph unicode="I" horiz-adv-x="516" d="M207 0v1462h102v-1462h-102z" />
+<glyph unicode="J" horiz-adv-x="506" d="M-184 -254q78 -20 149 -20q242 0 242 264v1472h102v-1462q0 -369 -342 -369q-92 0 -151 27v88z" />
+<glyph unicode="K" horiz-adv-x="1190" d="M207 0v1462h102v-760l162 162l573 598h130l-599 -618l615 -844h-125l-561 772l-195 -172v-600h-102z" />
+<glyph unicode="L" horiz-adv-x="1051" d="M207 0v1462h102v-1366h697v-96h-799z" />
+<glyph unicode="M" horiz-adv-x="1767" d="M207 0v1462h158l518 -1286h6l518 1286h154v-1462h-103v1108q0 116 12 240h-8l-547 -1348h-65l-545 1350h-8q8 -124 8 -254v-1096h-98z" />
+<glyph unicode="N" horiz-adv-x="1477" d="M207 0v1462h102l865 -1296h6q-9 180 -9 342v954h99v-1462h-103l-866 1298h-8q12 -232 12 -350v-948h-98z" />
+<glyph unicode="O" horiz-adv-x="1565" d="M129 735q0 349 175.5 549.5t479.5 200.5q306 0 479 -201.5t173 -550.5q0 -348 -174 -550.5t-480 -202.5q-305 0 -479 202.5t-174 552.5zM240 733q0 -314 140 -485.5t402 -171.5q264 0 403.5 170t139.5 487q0 316 -139.5 484.5t-401.5 168.5q-261 0 -402.5 -170 t-141.5 -483z" />
+<glyph unicode="P" horiz-adv-x="1198" d="M207 0v1462h358q522 0 522 -420q0 -212 -144 -325t-408 -113h-226v-604h-102zM309 692h201q247 0 357 81.5t110 264.5q0 169 -104 250.5t-322 81.5h-242v-678z" />
+<glyph unicode="Q" horiz-adv-x="1565" d="M129 735q0 349 175.5 549.5t479.5 200.5q306 0 479 -201.5t173 -550.5q0 -294 -126 -486.5t-349 -246.5l333 -348h-166l-282 330l-33 -2h-31q-305 0 -479 202.5t-174 552.5zM240 733q0 -314 140 -485.5t402 -171.5q264 0 403.5 170t139.5 487q0 316 -139.5 484.5 t-401.5 168.5q-261 0 -402.5 -170t-141.5 -483z" />
+<glyph unicode="R" horiz-adv-x="1217" d="M207 0v1462h348q272 0 402 -100.5t130 -302.5q0 -147 -77.5 -248t-235.5 -145l397 -666h-122l-377 637h-363v-637h-102zM309 725h279q185 0 287 82.5t102 243.5q0 167 -100 243t-326 76h-242v-645z" />
+<glyph unicode="S" horiz-adv-x="1116" d="M111 39v102q158 -67 403 -67q180 0 285.5 82.5t105.5 216.5q0 83 -35 137.5t-114 99.5t-232 97q-224 77 -309.5 166.5t-85.5 238.5q0 164 128.5 267.5t330.5 103.5q206 0 387 -78l-37 -88q-182 76 -348 76q-162 0 -258 -75t-96 -204q0 -81 29.5 -133t96.5 -93.5 t230 -99.5q171 -59 257 -114.5t125.5 -126t39.5 -170.5q0 -183 -134.5 -290t-357.5 -107q-268 0 -411 59z" />
+<glyph unicode="T" horiz-adv-x="1073" d="M10 1366v96h1053v-96h-475v-1366h-103v1366h-475z" />
+<glyph unicode="U" horiz-adv-x="1473" d="M190 520v942h103v-946q0 -211 117 -328.5t331 -117.5q209 0 324 115.5t115 320.5v956h102v-946q0 -252 -146 -394t-407 -142q-254 0 -396.5 142.5t-142.5 397.5z" />
+<glyph unicode="V" horiz-adv-x="1182" d="M0 1462h109l368 -995q84 -225 113 -338q20 75 79 233l402 1100h111l-547 -1462h-90z" />
+<glyph unicode="W" horiz-adv-x="1827" d="M51 1462h107l256 -942q15 -57 28 -105.5t23.5 -91t19 -82t15.5 -79.5q24 136 102 413l250 887h113l293 -1018q51 -176 73 -284q13 72 33.5 153t308.5 1149h103l-404 -1462h-84l-321 1128q-40 139 -60 228q-16 -87 -45.5 -200t-322.5 -1156h-86z" />
+<glyph unicode="X" horiz-adv-x="1102" d="M0 0l492 762l-447 700h115l395 -626l401 626h109l-453 -698l490 -764h-117l-432 682l-440 -682h-113z" />
+<glyph unicode="Y" horiz-adv-x="1081" d="M0 1462h117l426 -800l428 800h110l-487 -897v-565h-105v557z" />
+<glyph unicode="Z" horiz-adv-x="1180" d="M82 0v76l856 1290h-817v96h954v-76l-858 -1290h881v-96h-1016z" />
+<glyph unicode="[" horiz-adv-x="653" d="M174 -324v1786h428v-94h-330v-1597h330v-95h-428z" />
+<glyph unicode="\" horiz-adv-x="698" d="M25 1462h102l547 -1462h-103z" />
+<glyph unicode="]" horiz-adv-x="653" d="M51 -229h330v1597h-330v94h428v-1786h-428v95z" />
+<glyph unicode="^" d="M88 561l465 912h68l460 -912h-100l-395 791l-398 -791h-100z" />
+<glyph unicode="_" horiz-adv-x="842" d="M-4 -184h850v-82h-850v82z" />
+<glyph unicode="`" horiz-adv-x="1182" d="M393 1552v17h142q26 -48 98.5 -142t142.5 -170v-16h-69q-96 79 -188.5 171.5t-125.5 139.5z" />
+<glyph unicode="a" horiz-adv-x="1085" d="M98 289q0 159 132.5 247t383.5 93l207 6v72q0 155 -63 234t-203 79q-151 0 -313 -84l-37 86q179 84 354 84q179 0 267.5 -93t88.5 -290v-723h-73l-25 172h-8q-82 -105 -168.5 -148.5t-204.5 -43.5q-160 0 -249 82t-89 227zM203 285q0 -102 62.5 -158.5t176.5 -56.5 q174 0 274.5 99.5t100.5 276.5v107l-190 -8q-229 -11 -326.5 -71.5t-97.5 -188.5z" />
+<glyph unicode="b" horiz-adv-x="1219" d="M182 0v1556h99v-391q0 -88 -4 -162l-3 -85h7q62 98 149.5 144t210.5 46q228 0 343.5 -143.5t115.5 -419.5q0 -271 -121.5 -418t-341.5 -147q-116 0 -209 48t-147 136h-9l-28 -164h-62zM281 528q0 -246 86.5 -353t269.5 -107q178 0 268 124.5t90 354.5q0 471 -356 471 q-192 0 -275 -110t-83 -363v-17z" />
+<glyph unicode="c" horiz-adv-x="973" d="M119 537q0 270 137 420.5t375 150.5q141 0 270 -49l-27 -88q-141 47 -245 47q-200 0 -303 -123.5t-103 -355.5q0 -220 103 -344.5t288 -124.5q148 0 275 53v-92q-104 -51 -273 -51q-233 0 -365 147t-132 410z" />
+<glyph unicode="d" horiz-adv-x="1219" d="M119 528q0 282 118 431t343 149q118 0 204 -43t154 -147h6q-6 126 -6 247v391h98v-1556h-65l-25 166h-8q-124 -186 -356 -186q-225 0 -344 140t-119 408zM223 530q0 -462 359 -462q184 0 270 107t86 353v17q0 252 -84.5 362.5t-273.5 110.5q-178 0 -267.5 -125 t-89.5 -363z" />
+<glyph unicode="e" horiz-adv-x="1124" d="M119 535q0 260 128 416.5t345 156.5q192 0 303 -134t111 -364v-80h-783q2 -224 104.5 -342t293.5 -118q93 0 163.5 13t178.5 56v-90q-92 -40 -170 -54.5t-172 -14.5q-237 0 -369.5 146t-132.5 409zM229 618h672q0 189 -82 295.5t-227 106.5q-157 0 -252 -103.5 t-111 -298.5z" />
+<glyph unicode="f" horiz-adv-x="614" d="M29 1001v58l202 37v84q0 200 73.5 293.5t240.5 93.5q90 0 180 -27l-23 -86q-80 25 -159 25q-116 0 -164.5 -68.5t-48.5 -222.5v-101h256v-86h-256v-1001h-99v1001h-202z" />
+<glyph unicode="g" horiz-adv-x="1071" d="M45 -193q0 112 69.5 186t188.5 101q-49 21 -78.5 59.5t-29.5 88.5q0 109 139 192q-95 39 -148 122.5t-53 191.5q0 163 103.5 261.5t279.5 98.5q107 0 166 -21h348v-69l-225 -14q90 -112 90 -246q0 -157 -104.5 -254.5t-280.5 -97.5q-74 0 -104 6q-59 -31 -90 -73t-31 -89 q0 -52 39.5 -76t132.5 -24h190q177 0 271 -71.5t94 -211.5q0 -172 -139.5 -265.5t-397.5 -93.5q-205 0 -317.5 79t-112.5 220zM150 -184q0 -224 333 -224q428 0 428 273q0 98 -67 142t-217 44h-178q-299 0 -299 -235zM233 748q0 -126 76.5 -195.5t204.5 -69.5 q136 0 208.5 69t72.5 200q0 139 -74.5 208.5t-208.5 69.5q-130 0 -204.5 -74.5t-74.5 -207.5z" />
+<glyph unicode="h" horiz-adv-x="1208" d="M182 0v1556h99v-495l-5 -139h7q61 98 154 142t231 44q370 0 370 -397v-711h-98v705q0 164 -69 238.5t-214 74.5q-195 0 -285.5 -98.5t-90.5 -319.5v-600h-99z" />
+<glyph unicode="i" horiz-adv-x="463" d="M168 1389q0 96 63 96q31 0 48.5 -25t17.5 -71q0 -45 -17.5 -71t-48.5 -26q-63 0 -63 97zM182 0v1087h99v-1087h-99z" />
+<glyph unicode="j" horiz-adv-x="463" d="M-98 -381q69 -20 129 -20q151 0 151 176v1312h99v-1298q0 -135 -63.5 -208t-180.5 -73q-80 0 -135 25v86zM168 1389q0 96 63 96q31 0 48.5 -25t17.5 -71q0 -45 -17.5 -71t-48.5 -26q-63 0 -63 97z" />
+<glyph unicode="k" horiz-adv-x="991" d="M182 0v1556h99v-780l-7 -299h5l555 610h120l-428 -464l465 -623h-119l-413 549l-178 -162v-387h-99z" />
+<glyph unicode="l" horiz-adv-x="463" d="M182 0v1556h99v-1556h-99z" />
+<glyph unicode="m" horiz-adv-x="1808" d="M182 0v1087h82l21 -149h6q45 81 128 125.5t183 44.5q257 0 330 -193h4q53 93 142.5 143t203.5 50q178 0 267 -95t89 -302v-711h-98v713q0 159 -62 232t-190 73q-167 0 -247 -92t-80 -289v-637h-101v743q0 275 -252 275q-171 0 -249 -99.5t-78 -318.5v-600h-99z" />
+<glyph unicode="n" horiz-adv-x="1208" d="M182 0v1087h84l19 -149h6q106 170 377 170q370 0 370 -397v-711h-98v705q0 164 -69 238.5t-214 74.5q-195 0 -285.5 -98.5t-90.5 -319.5v-600h-99z" />
+<glyph unicode="o" horiz-adv-x="1200" d="M119 545q0 266 129 414.5t354 148.5q224 0 351.5 -150.5t127.5 -412.5q0 -266 -129 -415.5t-356 -149.5q-143 0 -252 69t-167 198t-58 298zM223 545q0 -224 98.5 -349.5t278.5 -125.5t278.5 125.5t98.5 349.5q0 225 -99.5 349t-279.5 124t-277.5 -123.5t-97.5 -349.5z " />
+<glyph unicode="p" horiz-adv-x="1219" d="M182 -492v1579h84l19 -155h6q112 176 358 176q220 0 335.5 -144.5t115.5 -420.5q0 -268 -121.5 -415.5t-331.5 -147.5q-251 0 -366 188h-7l3 -84q4 -74 4 -162v-414h-99zM281 541q0 -255 85.5 -364t278.5 -109q167 0 258.5 124t91.5 347q0 479 -346 479 q-190 0 -279 -104.5t-89 -340.5v-32z" />
+<glyph unicode="q" horiz-adv-x="1219" d="M119 532q0 275 118 425.5t338 150.5q236 0 353 -174h6l18 153h84v-1579h-98v414q0 122 6 248h-6q-118 -190 -369 -190q-214 0 -332 142t-118 410zM223 530q0 -229 89.5 -345.5t258.5 -116.5q198 0 282.5 109t84.5 366v12q0 245 -85 354t-271 109q-176 0 -267.5 -124 t-91.5 -364z" />
+<glyph unicode="r" horiz-adv-x="797" d="M182 0v1087h84l10 -196h7q67 120 143 168.5t184 48.5q69 0 148 -14l-19 -95q-68 17 -141 17q-139 0 -228 -118t-89 -298v-600h-99z" />
+<glyph unicode="s" horiz-adv-x="954" d="M84 47v107q164 -82 346 -82q161 0 244.5 53.5t83.5 142.5q0 82 -66.5 138t-218.5 110q-163 59 -229 101.5t-99.5 96t-33.5 130.5q0 122 102.5 193t286.5 71q176 0 334 -66l-37 -90q-160 66 -297 66q-133 0 -211 -44t-78 -122q0 -85 60.5 -136t236.5 -114 q147 -53 214 -95.5t100.5 -96.5t33.5 -127q0 -146 -111 -224.5t-315 -78.5q-218 0 -346 67z" />
+<glyph unicode="t" horiz-adv-x="686" d="M25 1001v58l161 45l50 246h51v-263h319v-86h-319v-688q0 -125 44 -185t138 -60t164 16v-80q-72 -24 -166 -24q-144 0 -212.5 77t-68.5 242v702h-161z" />
+<glyph unicode="u" horiz-adv-x="1208" d="M170 377v710h98v-704q0 -164 69 -238.5t214 -74.5q194 0 285.5 98t91.5 319v600h98v-1087h-84l-18 150h-6q-106 -170 -377 -170q-371 0 -371 397z" />
+<glyph unicode="v" horiz-adv-x="940" d="M0 1087h102l281 -739q56 -142 84 -248h6q41 136 84 250l281 737h102l-420 -1087h-100z" />
+<glyph unicode="w" horiz-adv-x="1481" d="M31 1087h106l174 -630q61 -234 80 -344h6q59 234 86 311l224 663h90l213 -661q72 -235 88 -311h6q8 65 80 348l166 624h100l-295 -1087h-104l-238 727q-23 74 -59 217h-6l-21 -74l-45 -145l-242 -725h-98z" />
+<glyph unicode="x" horiz-adv-x="1020" d="M55 0l394 559l-379 528h114l324 -458l321 458h109l-373 -528l400 -559h-115l-342 485l-344 -485h-109z" />
+<glyph unicode="y" horiz-adv-x="940" d="M0 1087h102l230 -610q105 -281 133 -379h6q42 129 137 385l230 604h102l-487 -1263q-59 -154 -99 -208t-93.5 -81t-129.5 -27q-57 0 -127 21v86q58 -16 125 -16q51 0 90 24t70.5 74.5t73 160t53.5 142.5z" />
+<glyph unicode="z" horiz-adv-x="944" d="M82 0v63l645 936h-598v88h727v-63l-649 -936h651v-88h-776z" />
+<glyph unicode="{" horiz-adv-x="723" d="M61 528v80q122 2 176 51t54 148v350q0 299 360 305v-90q-138 -5 -200 -58t-62 -157v-305q0 -130 -44 -194t-142 -85v-8q97 -20 141.5 -83.5t44.5 -186.5v-322q0 -102 59.5 -152.5t202.5 -53.5v-91q-195 0 -277.5 75t-82.5 231v337q0 205 -230 209z" />
+<glyph unicode="|" horiz-adv-x="1108" d="M508 -506v2067h92v-2067h-92z" />
+<glyph unicode="}" horiz-adv-x="723" d="M72 -233q141 2 201.5 52.5t60.5 153.5v322q0 123 44.5 186.5t141.5 83.5v8q-97 20 -141.5 84t-44.5 195v305q0 103 -61.5 156.5t-200.5 58.5v90q174 0 267 -77.5t93 -227.5v-350q0 -100 54.5 -148.5t175.5 -50.5v-80q-230 -4 -230 -209v-337q0 -155 -82.5 -230.5 t-277.5 -75.5v91z" />
+<glyph unicode="~" d="M111 625v94q108 110 233 110q61 0 115 -13.5t155 -57.5q126 -58 220 -58q56 0 109.5 30.5t115.5 94.5v-96q-48 -49 -104.5 -81t-129.5 -32q-116 0 -270 72q-124 57 -221 57q-49 0 -108 -30.5t-115 -89.5z" />
+<glyph unicode="&#xa1;" horiz-adv-x="492" d="M166 1010q0 98 80 98q82 0 82 -98q0 -53 -23.5 -76t-58.5 -23q-34 0 -57 23t-23 76zM186 -375l29 1086h61l29 -1086h-119z" />
+<glyph unicode="&#xa2;" d="M211 745q0 232 102.5 381.5t288.5 182.5v174h82v-166h14q131 0 275 -55l-31 -84q-134 51 -237 51q-187 0 -288.5 -122.5t-101.5 -358.5q0 -225 100.5 -349.5t280.5 -124.5q131 0 267 58v-92q-110 -56 -267 -56h-12v-204h-82v210q-186 30 -288.5 175t-102.5 380z" />
+<glyph unicode="&#xa3;" d="M78 0v84q110 21 171.5 110t61.5 224v258h-211v82h211v297q0 204 98 315t281 111q175 0 330 -68l-35 -86q-157 66 -295 66q-141 0 -209.5 -81t-68.5 -253v-301h411v-82h-411v-256q0 -116 -35 -196t-113 -128h809v-96h-995z" />
+<glyph unicode="&#xa4;" d="M127 326l139 141q-90 106 -90 256q0 147 90 258l-139 141l59 60l138 -142q103 93 260 93q155 0 260 -93l137 142l59 -60l-139 -141q90 -111 90 -258q0 -151 -90 -256l139 -141l-59 -60l-137 142q-110 -93 -260 -93q-153 0 -260 93l-138 -142zM260 723q0 -136 94.5 -232 t229.5 -96q134 0 228.5 95.5t94.5 232.5q0 136 -95 233t-228 97q-134 0 -229 -97t-95 -233z" />
+<glyph unicode="&#xa5;" d="M43 1462h117l426 -796l428 796h110l-432 -788h283v-82h-338v-205h338v-82h-338v-305h-105v305h-337v82h337v205h-337v82h278z" />
+<glyph unicode="&#xa6;" horiz-adv-x="1108" d="M508 258h92v-764h-92v764zM508 797v764h92v-764h-92z" />
+<glyph unicode="&#xa7;" horiz-adv-x="1057" d="M129 63v95q182 -78 332 -78q162 0 247 49.5t85 140.5q0 55 -25 87.5t-88.5 65.5t-190.5 79q-200 73 -272 141.5t-72 169.5q0 83 50.5 152.5t138.5 107.5q-86 47 -125 102t-39 136q0 117 101.5 183.5t275.5 66.5q175 0 336 -64l-35 -80q-91 34 -158.5 47t-144.5 13 q-134 0 -205.5 -44.5t-71.5 -119.5q0 -54 25.5 -88.5t85.5 -65.5t188 -74q192 -64 264 -132.5t72 -170.5q0 -173 -186 -274q86 -42 129 -96t43 -136q0 -135 -113 -207.5t-311 -72.5q-92 0 -171 15t-165 52zM246 825q0 -65 31.5 -104t105.5 -75t250 -99q82 41 126 98t44 121 q0 62 -32 102t-108.5 77t-236.5 87q-81 -23 -130.5 -79t-49.5 -128z" />
+<glyph unicode="&#xa8;" horiz-adv-x="1182" d="M336 1389q0 46 15.5 66t47.5 20q64 0 64 -86t-64 -86q-63 0 -63 86zM717 1389q0 46 15.5 66t47.5 20q64 0 64 -86t-64 -86q-63 0 -63 86z" />
+<glyph unicode="&#xa9;" horiz-adv-x="1704" d="M100 731q0 200 100 375t275 276t377 101q200 0 375 -100t276 -275t101 -377q0 -197 -97 -370t-272 -277t-383 -104q-207 0 -382 103.5t-272.5 276.5t-97.5 371zM193 731q0 -178 88.5 -329.5t240.5 -240.5t330 -89t329.5 88.5t240.5 240.5t89 330q0 174 -85.5 325 t-239 243t-334.5 92q-176 0 -328.5 -88.5t-241.5 -242.5t-89 -329zM489 725q0 208 111 332.5t297 124.5q119 0 227 -52l-37 -83q-98 45 -190 45q-142 0 -222.5 -94.5t-80.5 -264.5q0 -186 74.5 -275t220.5 -89q84 0 198 43v-88q-102 -45 -208 -45q-187 0 -288.5 115 t-101.5 331z" />
+<glyph unicode="&#xaa;" horiz-adv-x="686" d="M78 989q0 100 80 151.5t241 59.5l95 4v43q0 77 -38 114.5t-106 37.5q-87 0 -196 -49l-33 73q117 56 231 56q228 0 228 -215v-451h-68l-25 72q-84 -84 -202 -84q-95 0 -151 49t-56 139zM168 993q0 -54 35 -85t96 -31q90 0 142.5 50t52.5 142v64l-88 -5q-116 -6 -177 -36.5 t-61 -98.5z" />
+<glyph unicode="&#xab;" horiz-adv-x="885" d="M82 516v27l309 393l62 -43l-254 -363l254 -362l-62 -43zM442 516v27l310 393l61 -43l-254 -363l254 -362l-61 -43z" />
+<glyph unicode="&#xac;" d="M111 682v82h927v-494h-82v412h-845z" />
+<glyph unicode="&#xad;" horiz-adv-x="659" d="M92 512v82h475v-82h-475z" />
+<glyph unicode="&#xae;" horiz-adv-x="1704" d="M100 731q0 200 100 375t275 276t377 101q200 0 375 -100t276 -275t101 -377q0 -197 -97 -370t-272 -277t-383 -104q-207 0 -382 103.5t-272.5 276.5t-97.5 371zM193 731q0 -178 88.5 -329.5t240.5 -240.5t330 -89t329.5 88.5t240.5 240.5t89 330q0 174 -85.5 325 t-239 243t-334.5 92q-176 0 -328.5 -88.5t-241.5 -242.5t-89 -329zM608 291v880h211q143 0 222 -62t79 -191q0 -79 -38.5 -139.5t-110.5 -94.5l237 -393h-121l-210 360h-168v-360h-101zM709 731h112q91 0 143 46.5t52 135.5q0 172 -197 172h-110v-354z" />
+<glyph unicode="&#xaf;" horiz-adv-x="1024" d="M-6 1556v82h1036v-82h-1036z" />
+<glyph unicode="&#xb0;" horiz-adv-x="877" d="M139 1184q0 132 86.5 215.5t212.5 83.5t212.5 -83.5t86.5 -215.5t-86.5 -215.5t-212.5 -83.5q-130 0 -214.5 83t-84.5 216zM229 1184q0 -91 61 -154t148 -63q86 0 147.5 62t61.5 155q0 92 -60 154.5t-149 62.5q-90 0 -149.5 -64t-59.5 -153z" />
+<glyph unicode="&#xb1;" d="M111 1v82h948v-82h-948zM111 682v82h432v434h82v-434h434v-82h-434v-432h-82v432h-432z" />
+<glyph unicode="&#xb2;" horiz-adv-x="688" d="M53 586v78l242 237q125 121 172 193t47 149q0 71 -46.5 112.5t-123.5 41.5q-108 0 -217 -82l-49 65q119 103 270 103q124 0 194 -63.5t70 -174.5q0 -47 -13 -89t-40 -85.5t-68.5 -90t-308.5 -306.5h447v-88h-576z" />
+<glyph unicode="&#xb3;" horiz-adv-x="688" d="M41 629v88q136 -62 266 -62q115 0 174.5 49t59.5 136q0 83 -59.5 122t-178.5 39h-131v84h135q105 0 158 43.5t53 120.5q0 67 -47 107.5t-127 40.5q-128 0 -246 -78l-47 70q130 94 293 94q127 0 199.5 -60t72.5 -163q0 -78 -44 -131.5t-117 -75.5q186 -45 186 -211 q0 -130 -88.5 -201.5t-247.5 -71.5q-144 0 -264 60z" />
+<glyph unicode="&#xb4;" horiz-adv-x="1182" d="M393 1241v16q73 79 144.5 171.5t97.5 140.5h141v-17q-36 -52 -122.5 -138t-190.5 -173h-70z" />
+<glyph unicode="&#xb5;" horiz-adv-x="1221" d="M182 -492v1579h99v-704q0 -164 69 -238.5t213 -74.5q194 0 285.5 98t91.5 319v600h98v-1087h-84l-18 150h-6q-50 -77 -150 -123.5t-217 -46.5q-99 0 -167.5 27.5t-119.5 84.5q5 -92 5 -170v-414h-99z" />
+<glyph unicode="&#xb6;" horiz-adv-x="1341" d="M113 1042q0 260 109 387t341 127h543v-1816h-100v1722h-228v-1722h-100v819q-64 -18 -146 -18q-216 0 -317.5 125t-101.5 376z" />
+<glyph unicode="&#xb7;" horiz-adv-x="487" d="M162 721q0 98 80 98q82 0 82 -98t-82 -98q-80 0 -80 98z" />
+<glyph unicode="&#xb8;" horiz-adv-x="420" d="M43 -393q30 -10 92 -10q78 0 119 28t41 80q0 94 -193 121l93 174h96l-66 -117q168 -37 168 -174q0 -100 -67.5 -150.5t-188.5 -50.5q-68 0 -94 11v88z" />
+<glyph unicode="&#xb9;" horiz-adv-x="688" d="M76 1298l274 164h92v-876h-98v547q0 99 12 233q-26 -23 -233 -145z" />
+<glyph unicode="&#xba;" horiz-adv-x="739" d="M70 1141q0 162 78 250t223 88q142 0 220.5 -87t78.5 -251q0 -161 -80 -250.5t-223 -89.5t-220 86t-77 254zM160 1141q0 -264 209 -264t209 264q0 131 -50 194.5t-159 63.5t-159 -63.5t-50 -194.5z" />
+<glyph unicode="&#xbb;" horiz-adv-x="885" d="M72 168l254 362l-254 363l61 43l309 -391v-27l-309 -393zM432 168l254 362l-254 363l62 43l309 -391v-27l-309 -393z" />
+<glyph unicode="&#xbc;" horiz-adv-x="1516" d="M59 1298l274 164h92v-876h-98v547q0 99 12 233q-26 -23 -233 -145zM243 0l811 1462h94l-811 -1462h-94zM760 242v60l407 581h96v-563h129v-78h-129v-241h-90v241h-413zM864 320h309v221q0 132 8 232q-6 -12 -21.5 -35.5t-295.5 -417.5z" />
+<glyph unicode="&#xbd;" horiz-adv-x="1516" d="M11 1298l274 164h92v-876h-98v547q0 99 12 233q-26 -23 -233 -145zM168 0l811 1462h94l-811 -1462h-94zM827 1v78l242 237q125 121 172 193t47 149q0 71 -46.5 112.5t-123.5 41.5q-108 0 -217 -82l-49 65q119 103 270 103q124 0 194 -63.5t70 -174.5q0 -47 -13 -89 t-40 -85.5t-68.5 -90t-308.5 -306.5h447v-88h-576z" />
+<glyph unicode="&#xbe;" horiz-adv-x="1516" d="M41 629v88q136 -62 266 -62q115 0 174.5 49t59.5 136q0 83 -59.5 122t-178.5 39h-131v84h135q105 0 158 43.5t53 120.5q0 67 -47 107.5t-127 40.5q-128 0 -246 -78l-47 70q130 94 293 94q127 0 199.5 -60t72.5 -163q0 -78 -44 -131.5t-117 -75.5q186 -45 186 -211 q0 -130 -88.5 -201.5t-247.5 -71.5q-144 0 -264 60zM395 0l811 1462h94l-811 -1462h-94zM863 242v60l407 581h96v-563h129v-78h-129v-241h-90v241h-413zM967 320h309v221q0 132 8 232q-6 -12 -21.5 -35.5t-295.5 -417.5z" />
+<glyph unicode="&#xbf;" horiz-adv-x="862" d="M74 -27q0 70 20 124t58.5 102t171.5 159q64 53 98.5 98.5t49.5 94t15 145.5v15h82v-37q0 -125 -39.5 -204.5t-136.5 -164.5l-90 -79q-73 -61 -104 -120.5t-31 -138.5q0 -124 82 -200t221 -76q125 0 233 46l64 27l37 -79q-111 -48 -185.5 -64t-152.5 -16q-184 0 -288.5 99 t-104.5 269zM440 1010q0 98 80 98q82 0 82 -98q0 -53 -23.5 -76t-58.5 -23q-34 0 -57 23t-23 76z" />
+<glyph unicode="&#xc0;" horiz-adv-x="1229" d="M0 0l588 1468h65l576 -1468h-115l-203 516h-594l-204 -516h-113zM354 608h523l-199 527q-25 62 -60 172q-27 -96 -59 -174zM337 1890v17h142q26 -48 98.5 -142t142.5 -170v-16h-69q-96 79 -188.5 171.5t-125.5 139.5z" />
+<glyph unicode="&#xc1;" horiz-adv-x="1229" d="M0 0l588 1468h65l576 -1468h-115l-203 516h-594l-204 -516h-113zM354 608h523l-199 527q-25 62 -60 172q-27 -96 -59 -174zM504 1579v16q73 79 144.5 171.5t97.5 140.5h141v-17q-36 -52 -122.5 -138t-190.5 -173h-70z" />
+<glyph unicode="&#xc2;" horiz-adv-x="1229" d="M0 0l588 1468h65l576 -1468h-115l-203 516h-594l-204 -516h-113zM354 608h523l-199 527q-25 62 -60 172q-27 -96 -59 -174zM328 1579v16q62 67 131.5 156t110.5 156h98q68 -120 242 -312v-16h-70q-122 101 -221 207q-108 -114 -221 -207h-70z" />
+<glyph unicode="&#xc3;" horiz-adv-x="1229" d="M0 0l588 1468h65l576 -1468h-115l-203 516h-594l-204 -516h-113zM354 608h523l-199 527q-25 62 -60 172q-27 -96 -59 -174zM287 1581q10 111 63 174.5t137 63.5q48 0 88 -25t82 -59q34 -28 66 -50t61 -22q46 0 77 36.5t48 119.5h76q-16 -116 -69 -177t-132 -61 q-36 0 -75 18.5t-101 71.5q-32 26 -62.5 46t-62.5 20q-45 0 -75 -34.5t-48 -121.5h-73z" />
+<glyph unicode="&#xc4;" horiz-adv-x="1229" d="M0 0l588 1468h65l576 -1468h-115l-203 516h-594l-204 -516h-113zM354 608h523l-199 527q-25 62 -60 172q-27 -96 -59 -174zM367 1727q0 46 15.5 66t47.5 20q64 0 64 -86t-64 -86q-63 0 -63 86zM748 1727q0 46 15.5 66t47.5 20q64 0 64 -86t-64 -86q-63 0 -63 86z" />
+<glyph unicode="&#xc5;" horiz-adv-x="1229" d="M0 0l588 1468h65l576 -1468h-115l-203 516h-594l-204 -516h-113zM354 608h523l-199 527q-25 62 -60 172q-27 -96 -59 -174zM402 1610q0 94 60 152.5t157 58.5t157 -59t60 -152q0 -97 -60 -155t-157 -58t-157 58t-60 155zM482 1610q0 -66 37.5 -103.5t99.5 -37.5 t99.5 37.5t37.5 103.5q0 64 -39 101.5t-98 37.5q-62 0 -99.5 -38t-37.5 -101z" />
+<glyph unicode="&#xc6;" horiz-adv-x="1653" d="M-2 0l653 1462h877v-94h-615v-553h576v-94h-576v-627h615v-94h-717v516h-475l-227 -516h-111zM377 608h434v760h-100z" />
+<glyph unicode="&#xc7;" horiz-adv-x="1272" d="M129 735q0 223 84.5 393t243 262.5t368.5 92.5q214 0 383 -80l-41 -92q-160 80 -336 80q-275 0 -433 -176t-158 -482q0 -313 149 -486t426 -173q184 0 338 47v-90q-145 -51 -362 -51q-308 0 -485 199t-177 556zM561 -393q30 -10 92 -10q78 0 119 28t41 80q0 94 -193 121 l93 174h96l-66 -117q168 -37 168 -174q0 -100 -67.5 -150.5t-188.5 -50.5q-68 0 -94 11v88z" />
+<glyph unicode="&#xc8;" horiz-adv-x="1130" d="M207 0v1462h799v-94h-697v-553h658v-94h-658v-627h697v-94h-799zM314 1890v17h142q26 -48 98.5 -142t142.5 -170v-16h-69q-96 79 -188.5 171.5t-125.5 139.5z" />
+<glyph unicode="&#xc9;" horiz-adv-x="1130" d="M207 0v1462h799v-94h-697v-553h658v-94h-658v-627h697v-94h-799zM463 1579v16q73 79 144.5 171.5t97.5 140.5h141v-17q-36 -52 -122.5 -138t-190.5 -173h-70z" />
+<glyph unicode="&#xca;" horiz-adv-x="1130" d="M207 0v1462h799v-94h-697v-553h658v-94h-658v-627h697v-94h-799zM315 1579v16q62 67 131.5 156t110.5 156h98q68 -120 242 -312v-16h-70q-122 101 -221 207q-108 -114 -221 -207h-70z" />
+<glyph unicode="&#xcb;" horiz-adv-x="1130" d="M207 0v1462h799v-94h-697v-553h658v-94h-658v-627h697v-94h-799zM354 1727q0 46 15.5 66t47.5 20q64 0 64 -86t-64 -86q-63 0 -63 86zM735 1727q0 46 15.5 66t47.5 20q64 0 64 -86t-64 -86q-63 0 -63 86z" />
+<glyph unicode="&#xcc;" horiz-adv-x="516" d="M207 0v1462h102v-1462h-102zM-63 1890v17h142q26 -48 98.5 -142t142.5 -170v-16h-69q-96 79 -188.5 171.5t-125.5 139.5z" />
+<glyph unicode="&#xcd;" horiz-adv-x="516" d="M207 0v1462h102v-1462h-102zM191 1579v16q73 79 144.5 171.5t97.5 140.5h141v-17q-36 -52 -122.5 -138t-190.5 -173h-70z" />
+<glyph unicode="&#xce;" horiz-adv-x="516" d="M207 0v1462h102v-1462h-102zM-32 1579v16q62 67 131.5 156t110.5 156h98q68 -120 242 -312v-16h-70q-122 101 -221 207q-108 -114 -221 -207h-70z" />
+<glyph unicode="&#xcf;" horiz-adv-x="516" d="M207 0v1462h102v-1462h-102zM5 1727q0 46 15.5 66t47.5 20q64 0 64 -86t-64 -86q-63 0 -63 86zM386 1727q0 46 15.5 66t47.5 20q64 0 64 -86t-64 -86q-63 0 -63 86z" />
+<glyph unicode="&#xd0;" horiz-adv-x="1466" d="M47 678v94h160v690h395q350 0 532.5 -183t182.5 -534q0 -368 -193 -556.5t-567 -188.5h-350v678h-160zM309 90h242q655 0 655 651q0 314 -159.5 472.5t-468.5 158.5h-269v-600h406v-94h-406v-588z" />
+<glyph unicode="&#xd1;" horiz-adv-x="1477" d="M207 0v1462h102l865 -1296h6q-9 180 -9 342v954h99v-1462h-103l-866 1298h-8q12 -232 12 -350v-948h-98zM400 1581q10 111 63 174.5t137 63.5q48 0 88 -25t82 -59q34 -28 66 -50t61 -22q46 0 77 36.5t48 119.5h76q-16 -116 -69 -177t-132 -61q-36 0 -75 18.5t-101 71.5 q-32 26 -62.5 46t-62.5 20q-45 0 -75 -34.5t-48 -121.5h-73z" />
+<glyph unicode="&#xd2;" horiz-adv-x="1565" d="M129 735q0 349 175.5 549.5t479.5 200.5q306 0 479 -201.5t173 -550.5q0 -348 -174 -550.5t-480 -202.5q-305 0 -479 202.5t-174 552.5zM240 733q0 -314 140 -485.5t402 -171.5q264 0 403.5 170t139.5 487q0 316 -139.5 484.5t-401.5 168.5q-261 0 -402.5 -170 t-141.5 -483zM502 1890v17h142q26 -48 98.5 -142t142.5 -170v-16h-69q-96 79 -188.5 171.5t-125.5 139.5z" />
+<glyph unicode="&#xd3;" horiz-adv-x="1565" d="M129 735q0 349 175.5 549.5t479.5 200.5q306 0 479 -201.5t173 -550.5q0 -348 -174 -550.5t-480 -202.5q-305 0 -479 202.5t-174 552.5zM240 733q0 -314 140 -485.5t402 -171.5q264 0 403.5 170t139.5 487q0 316 -139.5 484.5t-401.5 168.5q-261 0 -402.5 -170 t-141.5 -483zM686 1579v16q73 79 144.5 171.5t97.5 140.5h141v-17q-36 -52 -122.5 -138t-190.5 -173h-70z" />
+<glyph unicode="&#xd4;" horiz-adv-x="1565" d="M129 735q0 349 175.5 549.5t479.5 200.5q306 0 479 -201.5t173 -550.5q0 -348 -174 -550.5t-480 -202.5q-305 0 -479 202.5t-174 552.5zM240 733q0 -314 140 -485.5t402 -171.5q264 0 403.5 170t139.5 487q0 316 -139.5 484.5t-401.5 168.5q-261 0 -402.5 -170 t-141.5 -483zM492 1579v16q62 67 131.5 156t110.5 156h98q68 -120 242 -312v-16h-70q-122 101 -221 207q-108 -114 -221 -207h-70z" />
+<glyph unicode="&#xd5;" horiz-adv-x="1565" d="M129 735q0 349 175.5 549.5t479.5 200.5q306 0 479 -201.5t173 -550.5q0 -348 -174 -550.5t-480 -202.5q-305 0 -479 202.5t-174 552.5zM240 733q0 -314 140 -485.5t402 -171.5q264 0 403.5 170t139.5 487q0 316 -139.5 484.5t-401.5 168.5q-261 0 -402.5 -170 t-141.5 -483zM443 1581q10 111 63 174.5t137 63.5q48 0 88 -25t82 -59q34 -28 66 -50t61 -22q46 0 77 36.5t48 119.5h76q-16 -116 -69 -177t-132 -61q-36 0 -75 18.5t-101 71.5q-32 26 -62.5 46t-62.5 20q-45 0 -75 -34.5t-48 -121.5h-73z" />
+<glyph unicode="&#xd6;" horiz-adv-x="1565" d="M129 735q0 349 175.5 549.5t479.5 200.5q306 0 479 -201.5t173 -550.5q0 -348 -174 -550.5t-480 -202.5q-305 0 -479 202.5t-174 552.5zM240 733q0 -314 140 -485.5t402 -171.5q264 0 403.5 170t139.5 487q0 316 -139.5 484.5t-401.5 168.5q-261 0 -402.5 -170 t-141.5 -483zM529 1727q0 46 15.5 66t47.5 20q64 0 64 -86t-64 -86q-63 0 -63 86zM910 1727q0 46 15.5 66t47.5 20q64 0 64 -86t-64 -86q-63 0 -63 86z" />
+<glyph unicode="&#xd7;" d="M119 1130l57 58l408 -408l409 408l58 -58l-408 -407l406 -408l-58 -57l-407 408l-406 -408l-57 57l405 408z" />
+<glyph unicode="&#xd8;" horiz-adv-x="1565" d="M129 735q0 349 175.5 549.5t479.5 200.5q232 0 392 -121l108 152l72 -60l-111 -153q191 -207 191 -570q0 -348 -174 -550.5t-480 -202.5q-236 0 -395 120l-86 -120l-74 59l90 127q-188 200 -188 569zM240 733q0 -312 139 -483l739 1034q-133 102 -334 102 q-261 0 -402.5 -170t-141.5 -483zM444 182q133 -106 338 -106q264 0 403.5 170t139.5 487q0 315 -139 486z" />
+<glyph unicode="&#xd9;" horiz-adv-x="1473" d="M190 520v942h103v-946q0 -211 117 -328.5t331 -117.5q209 0 324 115.5t115 320.5v956h102v-946q0 -252 -146 -394t-407 -142q-254 0 -396.5 142.5t-142.5 397.5zM450 1890v17h142q26 -48 98.5 -142t142.5 -170v-16h-69q-96 79 -188.5 171.5t-125.5 139.5z" />
+<glyph unicode="&#xda;" horiz-adv-x="1473" d="M190 520v942h103v-946q0 -211 117 -328.5t331 -117.5q209 0 324 115.5t115 320.5v956h102v-946q0 -252 -146 -394t-407 -142q-254 0 -396.5 142.5t-142.5 397.5zM633 1579v16q73 79 144.5 171.5t97.5 140.5h141v-17q-36 -52 -122.5 -138t-190.5 -173h-70z" />
+<glyph unicode="&#xdb;" horiz-adv-x="1473" d="M190 520v942h103v-946q0 -211 117 -328.5t331 -117.5q209 0 324 115.5t115 320.5v956h102v-946q0 -252 -146 -394t-407 -142q-254 0 -396.5 142.5t-142.5 397.5zM444 1579v16q62 67 131.5 156t110.5 156h98q68 -120 242 -312v-16h-70q-122 101 -221 207 q-108 -114 -221 -207h-70z" />
+<glyph unicode="&#xdc;" horiz-adv-x="1473" d="M190 520v942h103v-946q0 -211 117 -328.5t331 -117.5q209 0 324 115.5t115 320.5v956h102v-946q0 -252 -146 -394t-407 -142q-254 0 -396.5 142.5t-142.5 397.5zM481 1727q0 46 15.5 66t47.5 20q64 0 64 -86t-64 -86q-63 0 -63 86zM862 1727q0 46 15.5 66t47.5 20 q64 0 64 -86t-64 -86q-63 0 -63 86z" />
+<glyph unicode="&#xdd;" horiz-adv-x="1081" d="M0 1462h117l426 -800l428 800h110l-487 -897v-565h-105v557zM434 1579v16q73 79 144.5 171.5t97.5 140.5h141v-17q-36 -52 -122.5 -138t-190.5 -173h-70z" />
+<glyph unicode="&#xde;" horiz-adv-x="1198" d="M207 0v1462h102v-264h256q522 0 522 -420q0 -212 -144 -325t-408 -113h-226v-340h-102zM309 428h201q247 0 357 81.5t110 264.5q0 169 -104 250.5t-322 81.5h-242v-678z" />
+<glyph unicode="&#xdf;" horiz-adv-x="1194" d="M182 0v1206q0 173 103.5 267t292.5 94q188 0 285.5 -72.5t97.5 -210.5q0 -139 -139 -250q-81 -64 -110.5 -100.5t-29.5 -75.5q0 -44 14.5 -68t51.5 -57t102 -78q106 -75 151.5 -124.5t68 -103t22.5 -120.5q0 -156 -88 -241.5t-246 -85.5q-95 0 -174.5 18.5t-126.5 48.5 v107q65 -38 148.5 -62t152.5 -24q114 0 174.5 54.5t60.5 160.5q0 83 -39 144t-149 136q-127 87 -175 147t-48 146q0 60 32.5 110t106.5 108q74 57 106.5 105.5t32.5 106.5q0 93 -70 143t-202 50q-145 0 -226 -69t-81 -196v-1214h-99z" />
+<glyph unicode="&#xe0;" horiz-adv-x="1085" d="M98 289q0 159 132.5 247t383.5 93l207 6v72q0 155 -63 234t-203 79q-151 0 -313 -84l-37 86q179 84 354 84q179 0 267.5 -93t88.5 -290v-723h-73l-25 172h-8q-82 -105 -168.5 -148.5t-204.5 -43.5q-160 0 -249 82t-89 227zM203 285q0 -102 62.5 -158.5t176.5 -56.5 q174 0 274.5 99.5t100.5 276.5v107l-190 -8q-229 -11 -326.5 -71.5t-97.5 -188.5zM255 1552v17h142q26 -48 98.5 -142t142.5 -170v-16h-69q-96 79 -188.5 171.5t-125.5 139.5z" />
+<glyph unicode="&#xe1;" horiz-adv-x="1085" d="M98 289q0 159 132.5 247t383.5 93l207 6v72q0 155 -63 234t-203 79q-151 0 -313 -84l-37 86q179 84 354 84q179 0 267.5 -93t88.5 -290v-723h-73l-25 172h-8q-82 -105 -168.5 -148.5t-204.5 -43.5q-160 0 -249 82t-89 227zM203 285q0 -102 62.5 -158.5t176.5 -56.5 q174 0 274.5 99.5t100.5 276.5v107l-190 -8q-229 -11 -326.5 -71.5t-97.5 -188.5zM422 1241v16q73 79 144.5 171.5t97.5 140.5h141v-17q-36 -52 -122.5 -138t-190.5 -173h-70z" />
+<glyph unicode="&#xe2;" horiz-adv-x="1085" d="M98 289q0 159 132.5 247t383.5 93l207 6v72q0 155 -63 234t-203 79q-151 0 -313 -84l-37 86q179 84 354 84q179 0 267.5 -93t88.5 -290v-723h-73l-25 172h-8q-82 -105 -168.5 -148.5t-204.5 -43.5q-160 0 -249 82t-89 227zM203 285q0 -102 62.5 -158.5t176.5 -56.5 q174 0 274.5 99.5t100.5 276.5v107l-190 -8q-229 -11 -326.5 -71.5t-97.5 -188.5zM251 1241v16q62 67 131.5 156t110.5 156h98q68 -120 242 -312v-16h-70q-122 101 -221 207q-108 -114 -221 -207h-70z" />
+<glyph unicode="&#xe3;" horiz-adv-x="1085" d="M98 289q0 159 132.5 247t383.5 93l207 6v72q0 155 -63 234t-203 79q-151 0 -313 -84l-37 86q179 84 354 84q179 0 267.5 -93t88.5 -290v-723h-73l-25 172h-8q-82 -105 -168.5 -148.5t-204.5 -43.5q-160 0 -249 82t-89 227zM203 285q0 -102 62.5 -158.5t176.5 -56.5 q174 0 274.5 99.5t100.5 276.5v107l-190 -8q-229 -11 -326.5 -71.5t-97.5 -188.5zM200 1243q10 111 63 174.5t137 63.5q48 0 88 -25t82 -59q34 -28 66 -50t61 -22q46 0 77 36.5t48 119.5h76q-16 -116 -69 -177t-132 -61q-36 0 -75 18.5t-101 71.5q-32 26 -62.5 46t-62.5 20 q-45 0 -75 -34.5t-48 -121.5h-73z" />
+<glyph unicode="&#xe4;" horiz-adv-x="1085" d="M98 289q0 159 132.5 247t383.5 93l207 6v72q0 155 -63 234t-203 79q-151 0 -313 -84l-37 86q179 84 354 84q179 0 267.5 -93t88.5 -290v-723h-73l-25 172h-8q-82 -105 -168.5 -148.5t-204.5 -43.5q-160 0 -249 82t-89 227zM203 285q0 -102 62.5 -158.5t176.5 -56.5 q174 0 274.5 99.5t100.5 276.5v107l-190 -8q-229 -11 -326.5 -71.5t-97.5 -188.5zM282 1389q0 46 15.5 66t47.5 20q64 0 64 -86t-64 -86q-63 0 -63 86zM663 1389q0 46 15.5 66t47.5 20q64 0 64 -86t-64 -86q-63 0 -63 86z" />
+<glyph unicode="&#xe5;" horiz-adv-x="1085" d="M98 289q0 159 132.5 247t383.5 93l207 6v72q0 155 -63 234t-203 79q-151 0 -313 -84l-37 86q179 84 354 84q179 0 267.5 -93t88.5 -290v-723h-73l-25 172h-8q-82 -105 -168.5 -148.5t-204.5 -43.5q-160 0 -249 82t-89 227zM203 285q0 -102 62.5 -158.5t176.5 -56.5 q174 0 274.5 99.5t100.5 276.5v107l-190 -8q-229 -11 -326.5 -71.5t-97.5 -188.5zM325 1456q0 94 60 152.5t157 58.5t157 -59t60 -152q0 -97 -60 -155t-157 -58t-157 58t-60 155zM405 1456q0 -66 37.5 -103.5t99.5 -37.5t99.5 37.5t37.5 103.5q0 64 -39 101.5t-98 37.5 q-62 0 -99.5 -38t-37.5 -101z" />
+<glyph unicode="&#xe6;" horiz-adv-x="1731" d="M98 289q0 154 125 243t377 97l201 6v72q0 155 -61.5 234t-198.5 79q-148 0 -305 -84l-37 86q173 84 346 84q261 0 325 -211q111 213 347 213q184 0 289.5 -134.5t105.5 -363.5v-80h-715q0 -460 348 -460q85 0 150 12t174 57v-90q-92 -41 -165 -55t-161 -14 q-295 0 -397 256q-68 -133 -168 -194.5t-252 -61.5q-156 0 -242 82.5t-86 226.5zM203 285q0 -102 61 -158.5t170 -56.5q169 0 266 99.5t97 276.5v107l-187 -8q-219 -11 -313 -71.5t-94 -188.5zM903 618h604q0 188 -77.5 295t-212.5 107q-284 0 -314 -402z" />
+<glyph unicode="&#xe7;" horiz-adv-x="973" d="M119 537q0 270 137 420.5t375 150.5q141 0 270 -49l-27 -88q-141 47 -245 47q-200 0 -303 -123.5t-103 -355.5q0 -220 103 -344.5t288 -124.5q148 0 275 53v-92q-104 -51 -273 -51q-233 0 -365 147t-132 410zM373 -393q30 -10 92 -10q78 0 119 28t41 80q0 94 -193 121 l93 174h96l-66 -117q168 -37 168 -174q0 -100 -67.5 -150.5t-188.5 -50.5q-68 0 -94 11v88z" />
+<glyph unicode="&#xe8;" horiz-adv-x="1124" d="M119 535q0 260 128 416.5t345 156.5q192 0 303 -134t111 -364v-80h-783q2 -224 104.5 -342t293.5 -118q93 0 163.5 13t178.5 56v-90q-92 -40 -170 -54.5t-172 -14.5q-237 0 -369.5 146t-132.5 409zM229 618h672q0 189 -82 295.5t-227 106.5q-157 0 -252 -103.5 t-111 -298.5zM302 1552v17h142q26 -48 98.5 -142t142.5 -170v-16h-69q-96 79 -188.5 171.5t-125.5 139.5z" />
+<glyph unicode="&#xe9;" horiz-adv-x="1124" d="M119 535q0 260 128 416.5t345 156.5q192 0 303 -134t111 -364v-80h-783q2 -224 104.5 -342t293.5 -118q93 0 163.5 13t178.5 56v-90q-92 -40 -170 -54.5t-172 -14.5q-237 0 -369.5 146t-132.5 409zM229 618h672q0 189 -82 295.5t-227 106.5q-157 0 -252 -103.5 t-111 -298.5zM452 1241v16q73 79 144.5 171.5t97.5 140.5h141v-17q-36 -52 -122.5 -138t-190.5 -173h-70z" />
+<glyph unicode="&#xea;" horiz-adv-x="1124" d="M119 535q0 260 128 416.5t345 156.5q192 0 303 -134t111 -364v-80h-783q2 -224 104.5 -342t293.5 -118q93 0 163.5 13t178.5 56v-90q-92 -40 -170 -54.5t-172 -14.5q-237 0 -369.5 146t-132.5 409zM229 618h672q0 189 -82 295.5t-227 106.5q-157 0 -252 -103.5 t-111 -298.5zM290 1241v16q62 67 131.5 156t110.5 156h98q68 -120 242 -312v-16h-70q-122 101 -221 207q-108 -114 -221 -207h-70z" />
+<glyph unicode="&#xeb;" horiz-adv-x="1124" d="M119 535q0 260 128 416.5t345 156.5q192 0 303 -134t111 -364v-80h-783q2 -224 104.5 -342t293.5 -118q93 0 163.5 13t178.5 56v-90q-92 -40 -170 -54.5t-172 -14.5q-237 0 -369.5 146t-132.5 409zM229 618h672q0 189 -82 295.5t-227 106.5q-157 0 -252 -103.5 t-111 -298.5zM331 1389q0 46 15.5 66t47.5 20q64 0 64 -86t-64 -86q-63 0 -63 86zM712 1389q0 46 15.5 66t47.5 20q64 0 64 -86t-64 -86q-63 0 -63 86z" />
+<glyph unicode="&#xec;" horiz-adv-x="463" d="M182 0v1087h99v-1087h-99zM-34 1552v17h142q26 -48 98.5 -142t142.5 -170v-16h-69q-96 79 -188.5 171.5t-125.5 139.5z" />
+<glyph unicode="&#xed;" horiz-adv-x="463" d="M182 0v1087h99v-1087h-99zM107 1241v16q73 79 144.5 171.5t97.5 140.5h141v-17q-36 -52 -122.5 -138t-190.5 -173h-70z" />
+<glyph unicode="&#xee;" horiz-adv-x="463" d="M182 0v1087h99v-1087h-99zM-58 1241v16q62 67 131.5 156t110.5 156h98q68 -120 242 -312v-16h-70q-122 101 -221 207q-108 -114 -221 -207h-70z" />
+<glyph unicode="&#xef;" horiz-adv-x="463" d="M182 0v1087h99v-1087h-99zM-21 1389q0 46 15.5 66t47.5 20q64 0 64 -86t-64 -86q-63 0 -63 86zM360 1389q0 46 15.5 66t47.5 20q64 0 64 -86t-64 -86q-63 0 -63 86z" />
+<glyph unicode="&#xf0;" horiz-adv-x="1174" d="M117 471q0 228 126.5 357.5t342.5 129.5q108 0 187.5 -33t148.5 -96l4 2q-64 270 -269 459l-270 -157l-49 77l244 146q-86 62 -199 119l45 81q147 -69 248 -145l225 137l49 -84l-202 -121q154 -151 230.5 -353t76.5 -431q0 -276 -124 -427.5t-349 -151.5 q-214 0 -339.5 130t-125.5 361zM221 463q0 -186 94.5 -289.5t268.5 -103.5q179 0 272.5 123t93.5 364q0 146 -97 228.5t-267 82.5q-185 0 -275 -100.5t-90 -304.5z" />
+<glyph unicode="&#xf1;" horiz-adv-x="1208" d="M182 0v1087h84l19 -149h6q106 170 377 170q370 0 370 -397v-711h-98v705q0 164 -69 238.5t-214 74.5q-195 0 -285.5 -98.5t-90.5 -319.5v-600h-99zM282 1243q10 111 63 174.5t137 63.5q48 0 88 -25t82 -59q34 -28 66 -50t61 -22q46 0 77 36.5t48 119.5h76 q-16 -116 -69 -177t-132 -61q-36 0 -75 18.5t-101 71.5q-32 26 -62.5 46t-62.5 20q-45 0 -75 -34.5t-48 -121.5h-73z" />
+<glyph unicode="&#xf2;" horiz-adv-x="1200" d="M119 545q0 266 129 414.5t354 148.5q224 0 351.5 -150.5t127.5 -412.5q0 -266 -129 -415.5t-356 -149.5q-143 0 -252 69t-167 198t-58 298zM223 545q0 -224 98.5 -349.5t278.5 -125.5t278.5 125.5t98.5 349.5q0 225 -99.5 349t-279.5 124t-277.5 -123.5t-97.5 -349.5z M335 1552v17h142q26 -48 98.5 -142t142.5 -170v-16h-69q-96 79 -188.5 171.5t-125.5 139.5z" />
+<glyph unicode="&#xf3;" horiz-adv-x="1200" d="M119 545q0 266 129 414.5t354 148.5q224 0 351.5 -150.5t127.5 -412.5q0 -266 -129 -415.5t-356 -149.5q-143 0 -252 69t-167 198t-58 298zM223 545q0 -224 98.5 -349.5t278.5 -125.5t278.5 125.5t98.5 349.5q0 225 -99.5 349t-279.5 124t-277.5 -123.5t-97.5 -349.5z M499 1241v16q73 79 144.5 171.5t97.5 140.5h141v-17q-36 -52 -122.5 -138t-190.5 -173h-70z" />
+<glyph unicode="&#xf4;" horiz-adv-x="1200" d="M119 545q0 266 129 414.5t354 148.5q224 0 351.5 -150.5t127.5 -412.5q0 -266 -129 -415.5t-356 -149.5q-143 0 -252 69t-167 198t-58 298zM223 545q0 -224 98.5 -349.5t278.5 -125.5t278.5 125.5t98.5 349.5q0 225 -99.5 349t-279.5 124t-277.5 -123.5t-97.5 -349.5z M309 1241v16q62 67 131.5 156t110.5 156h98q68 -120 242 -312v-16h-70q-122 101 -221 207q-108 -114 -221 -207h-70z" />
+<glyph unicode="&#xf5;" horiz-adv-x="1200" d="M119 545q0 266 129 414.5t354 148.5q224 0 351.5 -150.5t127.5 -412.5q0 -266 -129 -415.5t-356 -149.5q-143 0 -252 69t-167 198t-58 298zM223 545q0 -224 98.5 -349.5t278.5 -125.5t278.5 125.5t98.5 349.5q0 225 -99.5 349t-279.5 124t-277.5 -123.5t-97.5 -349.5z M264 1243q10 111 63 174.5t137 63.5q48 0 88 -25t82 -59q34 -28 66 -50t61 -22q46 0 77 36.5t48 119.5h76q-16 -116 -69 -177t-132 -61q-36 0 -75 18.5t-101 71.5q-32 26 -62.5 46t-62.5 20q-45 0 -75 -34.5t-48 -121.5h-73z" />
+<glyph unicode="&#xf6;" horiz-adv-x="1200" d="M119 545q0 266 129 414.5t354 148.5q224 0 351.5 -150.5t127.5 -412.5q0 -266 -129 -415.5t-356 -149.5q-143 0 -252 69t-167 198t-58 298zM223 545q0 -224 98.5 -349.5t278.5 -125.5t278.5 125.5t98.5 349.5q0 225 -99.5 349t-279.5 124t-277.5 -123.5t-97.5 -349.5z M346 1389q0 46 15.5 66t47.5 20q64 0 64 -86t-64 -86q-63 0 -63 86zM727 1389q0 46 15.5 66t47.5 20q64 0 64 -86t-64 -86q-63 0 -63 86z" />
+<glyph unicode="&#xf7;" d="M111 682v82h948v-82h-948zM504 371q0 98 80 98q82 0 82 -98q0 -53 -23.5 -76t-58.5 -23q-34 0 -57 23t-23 76zM504 1075q0 99 80 99q82 0 82 -99q0 -52 -23.5 -75t-58.5 -23q-34 0 -57 23t-23 75z" />
+<glyph unicode="&#xf8;" horiz-adv-x="1200" d="M119 545q0 266 129 414.5t354 148.5q179 0 301 -104l96 124l74 -55l-104 -137q112 -147 112 -391q0 -266 -129 -415.5t-356 -149.5q-173 0 -291 98l-86 -113l-72 58l93 120q-121 153 -121 402zM223 545q0 -200 78 -322l543 705q-98 90 -246 90q-180 0 -277.5 -123.5 t-97.5 -349.5zM362 152q94 -82 238 -82q180 0 278.5 125.5t98.5 349.5q0 190 -72 309z" />
+<glyph unicode="&#xf9;" horiz-adv-x="1208" d="M170 377v710h98v-704q0 -164 69 -238.5t214 -74.5q194 0 285.5 98t91.5 319v600h98v-1087h-84l-18 150h-6q-106 -170 -377 -170q-371 0 -371 397zM304 1552v17h142q26 -48 98.5 -142t142.5 -170v-16h-69q-96 79 -188.5 171.5t-125.5 139.5z" />
+<glyph unicode="&#xfa;" horiz-adv-x="1208" d="M170 377v710h98v-704q0 -164 69 -238.5t214 -74.5q194 0 285.5 98t91.5 319v600h98v-1087h-84l-18 150h-6q-106 -170 -377 -170q-371 0 -371 397zM495 1241v16q73 79 144.5 171.5t97.5 140.5h141v-17q-36 -52 -122.5 -138t-190.5 -173h-70z" />
+<glyph unicode="&#xfb;" horiz-adv-x="1208" d="M170 377v710h98v-704q0 -164 69 -238.5t214 -74.5q194 0 285.5 98t91.5 319v600h98v-1087h-84l-18 150h-6q-106 -170 -377 -170q-371 0 -371 397zM313 1241v16q62 67 131.5 156t110.5 156h98q68 -120 242 -312v-16h-70q-122 101 -221 207q-108 -114 -221 -207h-70z" />
+<glyph unicode="&#xfc;" horiz-adv-x="1208" d="M170 377v710h98v-704q0 -164 69 -238.5t214 -74.5q194 0 285.5 98t91.5 319v600h98v-1087h-84l-18 150h-6q-106 -170 -377 -170q-371 0 -371 397zM350 1389q0 46 15.5 66t47.5 20q64 0 64 -86t-64 -86q-63 0 -63 86zM731 1389q0 46 15.5 66t47.5 20q64 0 64 -86t-64 -86 q-63 0 -63 86z" />
+<glyph unicode="&#xfd;" horiz-adv-x="940" d="M0 1087h102l230 -610q105 -281 133 -379h6q42 129 137 385l230 604h102l-487 -1263q-59 -154 -99 -208t-93.5 -81t-129.5 -27q-57 0 -127 21v86q58 -16 125 -16q51 0 90 24t70.5 74.5t73 160t53.5 142.5zM361 1241v16q73 79 144.5 171.5t97.5 140.5h141v-17 q-36 -52 -122.5 -138t-190.5 -173h-70z" />
+<glyph unicode="&#xfe;" horiz-adv-x="1219" d="M182 -492v2048h99v-391l-7 -247h7q114 190 368 190q220 0 335.5 -144.5t115.5 -420.5q0 -268 -121.5 -415.5t-331.5 -147.5q-251 0 -366 188h-7l3 -84q4 -74 4 -162v-414h-99zM281 541q0 -255 85.5 -364t278.5 -109q167 0 258.5 124t91.5 347q0 479 -348 479 q-193 0 -279.5 -105t-86.5 -354v-18z" />
+<glyph unicode="&#xff;" horiz-adv-x="940" d="M0 1087h102l230 -610q105 -281 133 -379h6q42 129 137 385l230 604h102l-487 -1263q-59 -154 -99 -208t-93.5 -81t-129.5 -27q-57 0 -127 21v86q58 -16 125 -16q51 0 90 24t70.5 74.5t73 160t53.5 142.5zM214 1389q0 46 15.5 66t47.5 20q64 0 64 -86t-64 -86 q-63 0 -63 86zM595 1389q0 46 15.5 66t47.5 20q64 0 64 -86t-64 -86q-63 0 -63 86z" />
+<glyph unicode="&#x131;" horiz-adv-x="463" d="M182 0v1087h99v-1087h-99z" />
+<glyph unicode="&#x152;" horiz-adv-x="1839" d="M129 735q0 347 174.5 545.5t480.5 198.5q78 0 183 -17h747v-94h-655v-553h616v-94h-616v-627h655v-94h-756q-76 -16 -176 -16q-305 0 -479 200t-174 551zM240 733q0 -315 140.5 -484t401.5 -169q109 0 174 18v1266q-62 16 -172 16q-262 0 -403 -167.5t-141 -479.5z" />
+<glyph unicode="&#x153;" horiz-adv-x="1942" d="M119 545q0 266 129 414.5t354 148.5q151 0 251 -70t157 -209q110 279 399 279q192 0 303 -134t111 -364v-80h-762q2 -230 100.5 -345t276.5 -115q93 0 163.5 13t178.5 56v-90q-92 -40 -170 -54.5t-172 -14.5q-156 0 -266.5 67.5t-165.5 198.5q-59 -128 -158 -197 t-252 -69q-143 0 -252 69t-167 198t-58 298zM223 545q0 -224 98.5 -349.5t278.5 -125.5q174 0 265 122.5t91 352.5q0 224 -93 348.5t-265 124.5q-180 0 -277.5 -123.5t-97.5 -349.5zM1065 618h653q0 189 -82 295.5t-227 106.5q-155 0 -242 -104t-102 -298z" />
+<glyph unicode="&#x178;" horiz-adv-x="1081" d="M0 1462h117l426 -800l428 800h110l-487 -897v-565h-105v557zM288 1727q0 46 15.5 66t47.5 20q64 0 64 -86t-64 -86q-63 0 -63 86zM669 1727q0 46 15.5 66t47.5 20q64 0 64 -86t-64 -86q-63 0 -63 86z" />
+<glyph unicode="&#x2c6;" horiz-adv-x="1182" d="M299 1241v16q62 67 131.5 156t110.5 156h98q68 -120 242 -312v-16h-70q-122 101 -221 207q-108 -114 -221 -207h-70z" />
+<glyph unicode="&#x2da;" horiz-adv-x="1182" d="M371 1456q0 94 60 152.5t157 58.5t157 -59t60 -152q0 -97 -60 -155t-157 -58t-157 58t-60 155zM451 1456q0 -66 37.5 -103.5t99.5 -37.5t99.5 37.5t37.5 103.5q0 64 -39 101.5t-98 37.5q-62 0 -99.5 -38t-37.5 -101z" />
+<glyph unicode="&#x2dc;" horiz-adv-x="1182" d="M283 1243q10 111 63 174.5t137 63.5q48 0 88 -25t82 -59q34 -28 66 -50t61 -22q46 0 77 36.5t48 119.5h76q-16 -116 -69 -177t-132 -61q-36 0 -75 18.5t-101 71.5q-32 26 -62.5 46t-62.5 20q-45 0 -75 -34.5t-48 -121.5h-73z" />
+<glyph unicode="&#x2000;" horiz-adv-x="953" />
+<glyph unicode="&#x2001;" horiz-adv-x="1907" />
+<glyph unicode="&#x2002;" horiz-adv-x="953" />
+<glyph unicode="&#x2003;" horiz-adv-x="1907" />
+<glyph unicode="&#x2004;" horiz-adv-x="635" />
+<glyph unicode="&#x2005;" horiz-adv-x="476" />
+<glyph unicode="&#x2006;" horiz-adv-x="317" />
+<glyph unicode="&#x2007;" horiz-adv-x="317" />
+<glyph unicode="&#x2008;" horiz-adv-x="238" />
+<glyph unicode="&#x2009;" horiz-adv-x="381" />
+<glyph unicode="&#x200a;" horiz-adv-x="105" />
+<glyph unicode="&#x2010;" horiz-adv-x="659" d="M92 512v82h475v-82h-475z" />
+<glyph unicode="&#x2011;" horiz-adv-x="659" d="M92 512v82h475v-82h-475z" />
+<glyph unicode="&#x2012;" horiz-adv-x="659" d="M92 512v82h475v-82h-475z" />
+<glyph unicode="&#x2013;" horiz-adv-x="1024" d="M82 512v82h860v-82h-860z" />
+<glyph unicode="&#x2014;" horiz-adv-x="2048" d="M82 512v82h1884v-82h-1884z" />
+<glyph unicode="&#x2018;" horiz-adv-x="297" d="M29 981q32 112 81.5 251t92.5 230h65q-30 -101 -64.5 -257t-45.5 -244h-117z" />
+<glyph unicode="&#x2019;" horiz-adv-x="297" d="M29 961q29 96 61 241.5t49 259.5h117l12 -20q-75 -265 -174 -481h-65z" />
+<glyph unicode="&#x201a;" horiz-adv-x="451" d="M68 -263q29 96 61 241.5t49 259.5h117l12 -20q-75 -265 -174 -481h-65z" />
+<glyph unicode="&#x201c;" horiz-adv-x="614" d="M29 981q32 112 81.5 251t92.5 230h65q-30 -101 -64.5 -257t-45.5 -244h-117zM346 981q34 120 83 255t91 226h66q-30 -98 -63 -248.5t-48 -252.5h-117z" />
+<glyph unicode="&#x201d;" horiz-adv-x="614" d="M29 961q29 96 61 241.5t49 259.5h117l12 -20q-75 -265 -174 -481h-65zM346 961q30 98 63 248.5t48 252.5h116l13 -20q-36 -128 -85 -261t-89 -220h-66z" />
+<glyph unicode="&#x201e;" horiz-adv-x="768" d="M68 -263q29 96 61 241.5t49 259.5h117l12 -20q-75 -265 -174 -481h-65zM385 -263q30 98 63 248.5t48 252.5h116l13 -20q-36 -128 -85 -261t-89 -220h-66z" />
+<glyph unicode="&#x2022;" horiz-adv-x="770" d="M231 748q0 89 40.5 134.5t113.5 45.5t113.5 -47t40.5 -133q0 -85 -41 -133t-113 -48t-113 47t-41 134z" />
+<glyph unicode="&#x2026;" horiz-adv-x="1466" d="M162 78q0 98 80 98q82 0 82 -98t-82 -98q-80 0 -80 98zM651 78q0 98 80 98q82 0 82 -98t-82 -98q-80 0 -80 98zM1141 78q0 98 80 98q82 0 82 -98t-82 -98q-80 0 -80 98z" />
+<glyph unicode="&#x202f;" horiz-adv-x="381" />
+<glyph unicode="&#x2039;" horiz-adv-x="524" d="M82 516v27l309 393l62 -43l-254 -363l254 -362l-62 -43z" />
+<glyph unicode="&#x203a;" horiz-adv-x="524" d="M72 168l254 362l-254 363l61 43l309 -391v-27l-309 -393z" />
+<glyph unicode="&#x2044;" horiz-adv-x="246" d="M-332 0l811 1462h94l-811 -1462h-94z" />
+<glyph unicode="&#x205f;" horiz-adv-x="476" />
+<glyph unicode="&#x2074;" horiz-adv-x="688" d="M25 827v60l407 581h96v-563h129v-78h-129v-241h-90v241h-413zM129 905h309v221q0 132 8 232q-6 -12 -21.5 -35.5t-295.5 -417.5z" />
+<glyph unicode="&#x20ac;" d="M74 528v82h172q-4 38 -4 113l4 102h-172v82h184q39 272 183 425t362 153q88 0 161 -17t148 -57l-39 -86q-132 72 -270 72q-174 0 -288 -125.5t-155 -364.5h502v-82h-510l-4 -104v-24q0 -65 4 -87h449v-82h-443q30 -217 147.5 -338.5t301.5 -121.5q148 0 287 65v-94 q-81 -34 -150.5 -46.5t-140.5 -12.5q-228 0 -367.5 140t-181.5 408h-180z" />
+<glyph unicode="&#x2122;" horiz-adv-x="1485" d="M10 1384v78h522v-78h-219v-643h-86v643h-217zM608 741v721h125l221 -606l224 606h125v-721h-86v398l4 207h-7l-227 -605h-74l-221 609h-6l4 -201v-408h-82z" />
+<glyph unicode="&#x2212;" d="M111 682v82h948v-82h-948z" />
+<glyph unicode="&#xe000;" horiz-adv-x="1085" d="M0 1085h1085v-1085h-1085v1085z" />
+<glyph unicode="&#xfb01;" horiz-adv-x="1077" d="M29 1001v58l202 37v84q0 200 73.5 293.5t240.5 93.5q90 0 180 -27l-23 -86q-80 25 -159 25q-116 0 -164.5 -68.5t-48.5 -222.5v-101h256v-86h-256v-1001h-99v1001h-202zM782 1389q0 96 63 96q31 0 48.5 -25t17.5 -71q0 -45 -17.5 -71t-48.5 -26q-63 0 -63 97zM796 0v1087 h99v-1087h-99z" />
+<glyph unicode="&#xfb02;" horiz-adv-x="1077" d="M29 1001v58l202 37v84q0 200 73.5 293.5t240.5 93.5q90 0 180 -27l-23 -86q-80 25 -159 25q-116 0 -164.5 -68.5t-48.5 -222.5v-101h256v-86h-256v-1001h-99v1001h-202zM796 0v1556h99v-1556h-99z" />
+<glyph unicode="&#xfb03;" horiz-adv-x="1692" d="M29 1001v58l202 37v84q0 200 73.5 293.5t240.5 93.5q90 0 180 -27l-23 -86q-80 25 -159 25q-116 0 -164.5 -68.5t-48.5 -222.5v-101h256v-86h-256v-1001h-99v1001h-202zM643 1001v58l202 37v84q0 200 73.5 293.5t240.5 93.5q90 0 180 -27l-23 -86q-80 25 -159 25 q-116 0 -164.5 -68.5t-48.5 -222.5v-101h256v-86h-256v-1001h-99v1001h-202zM1397 1389q0 96 63 96q31 0 48.5 -25t17.5 -71q0 -45 -17.5 -71t-48.5 -26q-63 0 -63 97zM1411 0v1087h99v-1087h-99z" />
+<glyph unicode="&#xfb04;" horiz-adv-x="1692" d="M29 1001v58l202 37v84q0 200 73.5 293.5t240.5 93.5q90 0 180 -27l-23 -86q-80 25 -159 25q-116 0 -164.5 -68.5t-48.5 -222.5v-101h256v-86h-256v-1001h-99v1001h-202zM643 1001v58l202 37v84q0 200 73.5 293.5t240.5 93.5q90 0 180 -27l-23 -86q-80 25 -159 25 q-116 0 -164.5 -68.5t-48.5 -222.5v-101h256v-86h-256v-1001h-99v1001h-202zM1411 0v1556h99v-1556h-99z" />
+</font>
+</defs></svg> 
\ No newline at end of file
Index: modules/uoa-validator-admin/trunk/src/main/webapp/jsps/fonts/YanoneKaffeesatz-Light-webfont.ttf
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/trunk/src/main/webapp/jsps/fonts/YanoneKaffeesatz-Light-webfont.ttf
===================================================================
--- modules/uoa-validator-admin/trunk/src/main/webapp/jsps/fonts/YanoneKaffeesatz-Light-webfont.ttf	(nonexistent)
+++ modules/uoa-validator-admin/trunk/src/main/webapp/jsps/fonts/YanoneKaffeesatz-Light-webfont.ttf	(revision 47450)

Property changes on: modules/uoa-validator-admin/trunk/src/main/webapp/jsps/fonts/YanoneKaffeesatz-Light-webfont.ttf
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/resources/eu/dnetlib/validator/admin/api/emailTeplate.vm
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/resources/eu/dnetlib/validator/admin/api/emailTeplate.vm	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/resources/eu/dnetlib/validator/admin/api/emailTeplate.vm	(revision 47450)
@@ -0,0 +1,20 @@
+Greetings,
+
+The unsuccessful registration attempts during $month
+were the following (datasource Name, base URL, contact mail, compliance level):
+
+#foreach( $datasource in $failedJobs )
+$datasource.name, $datasource.baseUrl, $datasource.email, $datasource.compliance
+#end
+$noneFailed
+
+The successful ones were the following:
+
+#foreach( $datasource in $passedJobs )
+$datasource.name, $datasource.baseUrl, $datasource.email, $datasource.compliance
+#end
+$nonePassed
+
+Regards,
+Validator's administrator
+
Index: modules/uoa-validator-admin/trunk/src/main/webapp/jsps/manuals/user-manual.pdf
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/trunk/src/main/webapp/jsps/manuals/user-manual.pdf
===================================================================
--- modules/uoa-validator-admin/trunk/src/main/webapp/jsps/manuals/user-manual.pdf	(nonexistent)
+++ modules/uoa-validator-admin/trunk/src/main/webapp/jsps/manuals/user-manual.pdf	(revision 47450)

Property changes on: modules/uoa-validator-admin/trunk/src/main/webapp/jsps/manuals/user-manual.pdf
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/trunk/src/main/webapp/jsps/ddmenu.css
===================================================================
--- modules/uoa-validator-admin/trunk/src/main/webapp/jsps/ddmenu.css	(nonexistent)
+++ modules/uoa-validator-admin/trunk/src/main/webapp/jsps/ddmenu.css	(revision 47450)
@@ -0,0 +1,159 @@
+
+/*  Generated by www.menucool.com/drop-down-menu  */
+
+/* main menu
+----------------------------*/
+#ddmenu
+{
+    display:block;
+    font-family: "YanoneKaffeesatzLight";
+    text-align:center;
+    letter-spacing:normal;
+	float: right;
+        position: absolute;
+        bottom: 0;
+        right: 0;
+}
+
+#ddmenu ul
+{ 
+    width:100%;
+    margin:0; /*If above width is not 100% and you want this menu to align in the center of its container, set it as { margin: 0 auto; }*/
+    padding:0;
+    display:inline-block;
+    list-style:none;
+    position:relative;
+    font-size:0;
+    *z-index:999;
+}
+
+#ddmenu li
+{
+    margin:0;
+    padding:0;
+    display:inline-block;
+    position:relative;
+ float: left;
+        font-size: 22px;
+        text-transform: uppercase;
+        line-height:50px
+}
+
+#ddmenu a
+{
+    padding:0 12px;
+    font-weight:normal;
+    text-decoration:none;
+    display:inline-block;
+    outline:0;
+    position:relative;
+    white-space:nowrap;
+	color:#3440B5;
+}
+
+#ddmenu li.over
+{
+    z-index:9999999998;
+}
+
+/* links without sub-menu */
+#ddmenu li.over a
+{
+        color: #2D72D6;
+        background: #D0D0D0;
+}
+
+/* links with sub-menu */
+#ddmenu a.arrow
+{
+}
+#ddmenu li.over a.arrow
+{
+background: #D0D0D0 url(images/menu_dropdown_level1_parent_blue.png) 50% 100% no-repeat;
+    z-index:9999999999;
+    /*text-decoration:underline;*/
+}
+
+#ddmenu div 
+{
+    padding:0;
+    margin:0;
+}              
+        
+/* sub-menu layout
+----------------------------*/
+     
+
+#ddmenu div.drop
+{
+    position:absolute;
+    text-align:left;
+    background:#3440B5;
+    color: #bcbcbc;
+	font-size:18px;
+    padding:20px;
+    line-height:30px;
+}
+  
+#ddmenu div
+{
+    display:none;
+}
+/* sub-menu offset
+----------------------------*/
+
+#ddmenu div.drop
+{
+    left:0px;/*Use this property to change offset of the sub-menu*/
+}
+#ddmenu div.dropToLeft
+{
+    left:auto; right:0px;
+}
+#ddmenu div.dropToLeft2
+{
+    left:auto; right:-120px;
+}
+  
+/* links in sub menu
+----------------------------*/
+
+#ddmenu div.drop a
+{
+    background:#3440B5;
+    color:#bcbcbc;
+    text-decoration:none;    
+    display:block;
+    text-align:left;    
+    position:static;
+    padding:0 0;
+}
+
+#ddmenu div.drop a:hover
+{
+    color:#00B5F0;
+}
+
+/* blocks within the sub-menu
+----------------------------*/
+
+#ddmenu div.drop div
+{
+    background:none;    
+}  
+
+#ddmenu div.column
+{
+    width:auto;
+    float:left; /*align each column in one row*/
+    padding:0 10px; /*padding of each column*/
+}
+
+#ddmenu div.column div
+{
+   padding:0px 10px; /*sub-div within div.column. 10px for indent.*/
+}
+
+/* useful when http://www.menucool.com/ddmenu/one-menu-for-all-pages
+----------------------------*/
+#ddmenuLink {display:none;}
Index: modules/uoa-validator-admin/trunk/src/main/webapp/META-INF/MANIFEST.MF
===================================================================
--- modules/uoa-validator-admin/trunk/src/main/webapp/META-INF/MANIFEST.MF	(nonexistent)
+++ modules/uoa-validator-admin/trunk/src/main/webapp/META-INF/MANIFEST.MF	(revision 47450)
@@ -0,0 +1,3 @@
+Manifest-Version: 1.0
+Class-Path: 
+
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/java/eu/dnetlib/validator/admin/api/impls/EmailBuilder.java
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/java/eu/dnetlib/validator/admin/api/impls/EmailBuilder.java	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/java/eu/dnetlib/validator/admin/api/impls/EmailBuilder.java	(revision 47450)
@@ -0,0 +1,82 @@
+package eu.dnetlib.validator.admin.api.impls;
+
+import java.io.StringWriter;
+import java.util.List;
+import java.util.Map;
+
+import javax.xml.transform.TransformerConfigurationException;
+import javax.xml.transform.TransformerException;
+import javax.xml.transform.TransformerFactoryConfigurationError;
+
+import org.apache.log4j.Logger;
+import org.apache.velocity.Template;
+import org.apache.velocity.VelocityContext;
+import org.apache.velocity.app.VelocityEngine;
+import org.apache.velocity.exception.ParseErrorException;
+import org.apache.velocity.exception.ResourceNotFoundException;
+import org.apache.velocity.runtime.RuntimeConstants;
+import org.apache.velocity.runtime.resource.loader.ClasspathResourceLoader;
+
+public class EmailBuilder {
+
+	private static Logger logger = Logger.getLogger(EmailBuilder.class);
+	
+	private VelocityEngine ve = null;
+	
+	public void init() throws Exception {
+		this.ve = new VelocityEngine();
+		this.ve.setProperty(RuntimeConstants.RESOURCE_LOADER, "classpath");
+		this.ve.setProperty("classpath.resource.loader.class", ClasspathResourceLoader.class.getName());
+		this.ve.setProperty("runtime.log.logsystem.class", "org.apache.velocity.runtime.log.NullLogSystem");
+		this.ve.init();	
+	}
+	
+	public String buildXml(List<Map<String, String>> passedJobsList, List<Map<String, String>> failedJobsList, String month, boolean oldFormat) {
+		logger.debug("Building the registrations report Email");
+		String finalEmail = null;
+		
+		try {
+        
+			VelocityContext context = new VelocityContext();
+
+			context.put("passedJobs", passedJobsList);
+			context.put("failedJobs", failedJobsList);
+			context.put("month", month);
+			if (passedJobsList.isEmpty())
+				context.put("nonePassed", "There are no successful registration attempts.");
+			else
+				context.put("nonePassed", " ");
+			if (failedJobsList.isEmpty())
+				context.put("noneFailed", "There are no failed registration attempts.");
+			else
+				context.put("noneFailed", " ");
+			
+			Template t;
+			
+			if (oldFormat)
+				t = this.ve.getTemplate("/eu/dnetlib/validator/admin/api/emailTeplateOld.vm");
+			else
+				t = this.ve.getTemplate("/eu/dnetlib/validator/admin/api/emailTeplate.vm");
+			
+			StringWriter writer = new StringWriter();
+			
+			t.merge(context, writer);
+			finalEmail = writer.toString();
+			
+		} catch (TransformerConfigurationException e) {
+			logger.error("Error while building XML file", e);
+		} catch (TransformerFactoryConfigurationError e) {
+			logger.error("Error while building XML file", e);
+		} catch (TransformerException e) {
+			logger.error("Error while building XML file", e);
+		} catch (ResourceNotFoundException e) {
+			logger.error("Error while building XML file", e);
+		} catch (ParseErrorException e) {
+			logger.error("Error while building XML file", e);
+		} catch (Exception e) {
+			logger.error("Error while building XML file", e);
+		}
+		
+        return finalEmail;
+	}
+}
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/java/eu/dnetlib/validator/admin/api/UserApi.java
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/java/eu/dnetlib/validator/admin/api/UserApi.java	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/java/eu/dnetlib/validator/admin/api/UserApi.java	(revision 47450)
@@ -0,0 +1,32 @@
+package eu.dnetlib.validator.admin.api;
+
+import eu.dnetlib.domain.functionality.UserProfile;
+
+public interface UserApi {
+
+	public boolean activateUser(String activationId) throws Exception;
+
+	public boolean isUserActivated(String email) throws Exception;
+
+	public boolean userExists(String email) throws Exception;
+
+	public boolean usernameExists(String username) throws Exception;
+
+	public boolean correctCreds(String email, String password) throws Exception;
+
+	public String prepareResetPassword(String email) throws Exception;
+
+	public void resetPassword(String uuid, String password) throws Exception;
+
+	public boolean isAdmin(String email) throws Exception;
+
+	public void editUser(UserProfile user)
+			throws Exception;
+
+	public String addUser(String username, String email, String password,
+			String firstName, String lastName, String institution) throws Exception;
+
+	public String getEmailFromUsername(String username) throws Exception;
+
+	public UserProfile getUser(String userIdentifier) throws Exception;
+}
\ No newline at end of file
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/resources/eu/dnetlib/validator/admin/api/emailTeplateOld.vm
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/resources/eu/dnetlib/validator/admin/api/emailTeplateOld.vm	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/resources/eu/dnetlib/validator/admin/api/emailTeplateOld.vm	(revision 47450)
@@ -0,0 +1,20 @@
+Greetings,
+
+The unsuccessful registration attempts during $month
+were the following (base URL, contact mail, compliance level):
+
+#foreach( $datasource in $failedJobs )
+$datasource.baseUrl, $datasource.email, $datasource.compliance
+#end
+$noneFailed
+
+The successful ones were the following:
+
+#foreach( $datasource in $passedJobs )
+$datasource.baseUrl, $datasource.email, $datasource.compliance
+#end
+$nonePassed
+
+Regards,
+Validator's administrator
+
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/resources/eu/dnetlib/validator/admin/api/springContext-validator-user-local.xml
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/resources/eu/dnetlib/validator/admin/api/springContext-validator-user-local.xml	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/resources/eu/dnetlib/validator/admin/api/springContext-validator-user-local.xml	(revision 47450)
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<beans xmlns="http://www.springframework.org/schema/beans"
+	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+	xmlns:context="http://www.springframework.org/schema/context"
+	xmlns:cxf="http://cxf.apache.org/core"
+	xmlns:jaxws="http://cxf.apache.org/jaxws"
+	xmlns:p="http://http://www.springframework.org/schema/p"
+	xmlns:template="http://dnetlib.eu/springbeans/template"
+	xmlns:t="http://dnetlib.eu/springbeans/t"
+	xmlns:tx="http://www.springframework.org/schema/tx"
+	
+	xsi:schemaLocation="
+		http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.0.xsd
+        http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.0.xsd
+        http://cxf.apache.org/core http://cxf.apache.org/schemas/core.xsd
+        http://cxf.apache.org/jaxws http://cxf.apache.org/schemas/jaxws.xsd
+        http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-4.0.xsd
+        http://dnetlib.eu/springbeans/template http://dnetlib.eu/springbeans/template.xsd"
+	default-autowire="no">
+
+	<bean id="userAPI" class="eu.dnetlib.validator.admin.api.impls.UserApiLocal" lazy-init="true">
+		<property name="usersDao" ref="usersDao" />
+	</bean>
+	
+	<tx:annotation-driven transaction-manager="txManager" />
+	
+</beans>
\ No newline at end of file
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/java/eu/dnetlib/validator/admin/actions/login/Login.java
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/java/eu/dnetlib/validator/admin/actions/login/Login.java	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/java/eu/dnetlib/validator/admin/actions/login/Login.java	(revision 47450)
@@ -0,0 +1,156 @@
+package eu.dnetlib.validator.admin.actions.login;
+
+import java.util.Map;
+import java.util.regex.Pattern;
+
+import javax.servlet.http.HttpServletResponse;
+
+import org.apache.log4j.Logger;
+import org.apache.struts2.interceptor.ServletResponseAware;
+import org.apache.struts2.interceptor.SessionAware;
+
+import com.opensymphony.xwork2.Action;
+
+import eu.dnetlib.validator.admin.actions.BaseValidatorAction;
+import eu.dnetlib.validator.admin.config.Constants;
+
+public class Login extends BaseValidatorAction implements SessionAware, ServletResponseAware {
+
+	private static final long serialVersionUID = -6021271413570776229L;
+	private String email_username, password_login;
+	private boolean rememberme;
+	private Map<String, Object> session;
+	private HttpServletResponse response;
+
+	private String url;
+	private String params;
+
+	private transient Logger logger = Logger.getLogger(Login.class);
+
+	public String execute() {
+		this.clearErrorsAndMessages();
+		try {
+			if(this.email_username == null || this.email_username.trim().equals(""))
+				return "login";	
+			logger.debug("logging-in user " + this.getEmail());
+			session.put(Constants.loggedInField, this.getEmail());
+			session.put("email", this.getEmail());
+			if (this.getUserAPI().isAdmin(email_username) || this.getValidatorAdminAPI().userIsMasterAdmin(email_username))
+				session.put("isAdmin", "true");
+			if (this.getValidatorAdminAPI().userIsMasterAdmin(email_username))
+				session.put("isAdmin", "true");
+			if (this.getValidatorAdminAPI().userIsSecondaryAdmin(email_username))
+				session.put("isAdmin", "true");
+			this.addActionMessage("Logged-in successfully");
+
+			if (url != null && (url.equals("/go2login") || url.equals("/Login") || url.equals("/portalLogin"))) {
+				url = "";
+				return "welcome";
+			}
+
+			return Action.SUCCESS;
+		} catch (Exception e) {
+			logger.error("error logging-in user " + this.getEmail(), e);
+			this.addActionError(this.getText("generic.error"));
+			reportException(e);
+			return "exception";
+		}
+	}
+
+	public void validate() {
+		this.clearErrors();
+		try {
+			if(this.email_username == null || this.email_username.trim().equals(""))
+				return;
+			
+			
+			String username = this.email_username;
+
+			Pattern rfc2822 = Pattern.compile("^[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?$");
+			if (!rfc2822.matcher(this.getEmail().trim().toLowerCase()).matches()) {
+				logger.debug("user logged in using username");
+				this.email_username = this.getUserAPI().getEmailFromUsername(this.getEmail());
+			}
+
+			if (this.email_username == null) {
+				this.email_username = username;
+				this.addActionError(this.getText("login.userNotExists"));
+				return;
+			}
+
+			if (!this.getUserAPI().userExists(this.getEmail())) {
+				this.email_username = username;
+				this.addActionError(this.getText("login.userNotExists"));
+				return;
+			}
+			if (!this.getUserAPI().isUserActivated(this.getEmail())) {
+				this.email_username = username;
+				this.addActionError(this.getText("login.notActivated"));
+				return;
+			}
+			if (!this.getUserAPI().correctCreds(this.getEmail(), this.getPassword_login())) {
+				this.email_username = username;
+				this.addActionError(this.getText("login.incorrectCreds"));
+				return;
+			}
+		} catch (Exception e) {
+			logger.error("", e);
+			this.addActionError(e.toString());
+			reportException(e);
+		}
+	}
+
+
+	public String getEmail() {
+		return email_username;
+	}
+
+	public void setEmail_username(String email_username) {
+		this.email_username = email_username;
+	}
+
+	public String getPassword_login() {
+		return password_login;
+	}
+
+	public void setPassword_login(String password_login) {
+		this.password_login = password_login;
+	}
+
+	@Override
+	public void setSession(Map<String, Object> session) {
+		this.session = session;
+	}
+
+	public void setRememberme(boolean rememberme) {
+		this.rememberme = rememberme;
+	}
+
+	public boolean isRememberme() {
+		return rememberme;
+	}
+
+	public void setServletResponse(HttpServletResponse response) {
+		this.response = response;
+	}
+
+	public HttpServletResponse getServletResponse() {
+		return response;
+	}
+
+	public String getUrl() {
+		return url;
+	}
+
+	public void setUrl(String url) {
+		this.url = url;
+	}
+
+	public String getParams() {
+		return params;
+	}
+
+	public void setParams(String params) {
+		this.params = params;
+	}
+}
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/java/eu/dnetlib/validator/admin/actions/login/ForgotPasswordPage.java
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/java/eu/dnetlib/validator/admin/actions/login/ForgotPasswordPage.java	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/java/eu/dnetlib/validator/admin/actions/login/ForgotPasswordPage.java	(revision 47450)
@@ -0,0 +1,8 @@
+package eu.dnetlib.validator.admin.actions.login;
+
+import eu.dnetlib.validator.admin.actions.BaseValidatorAction;
+
+@SuppressWarnings("serial")
+public class ForgotPasswordPage extends BaseValidatorAction{
+
+}
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/java/eu/dnetlib/validator/admin/actions/users/Register.java
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/java/eu/dnetlib/validator/admin/actions/users/Register.java	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/java/eu/dnetlib/validator/admin/actions/users/Register.java	(revision 47450)
@@ -0,0 +1,135 @@
+package eu.dnetlib.validator.admin.actions.users;
+
+import java.util.ArrayList;
+import java.util.regex.Pattern;
+
+import org.apache.log4j.Logger;
+
+import com.opensymphony.xwork2.Action;
+
+import eu.dnetlib.validator.admin.actions.BaseValidatorAction;
+
+public class Register extends BaseValidatorAction {
+
+	private static final long serialVersionUID = 4906485913149844710L;
+	private Logger logger = Logger.getLogger(Register.class);
+	
+	private String email, password, repassword;
+	private String username, firstName, lastName, institution;
+
+	public String execute() {
+		this.clearErrorsAndMessages();
+		try {
+			logger.debug("registering user " + email);
+			String activationId = null;
+
+			activationId = this.getUserAPI().addUser(username, email, password, firstName, lastName, institution);
+
+			this.addActionMessage((this.getText("registration.successful")));
+			this.addActionMessage((this.getText("general.unblock") + " " + this.getEmailer().getFrom()));
+
+			ArrayList<String> to = new ArrayList<String>();
+			to.add(this.getEmail());
+
+			this.getEmailer().sendMail(to, this.getText("registration.mail.subject"), this.getText("registration.mail.message") + ": " + this.getValBaseUrl() + "/activateAccount.action?activationId=" + activationId, false, null);
+
+			return Action.SUCCESS;
+		} catch (Exception e) {
+			logger.error("error registering user " + email, e);
+			this.addActionError(this.getText("generic.error"));
+			reportException(e);
+			return "exception";
+		}
+	}
+
+	public void validate() {
+		this.clearErrors();
+		if (this.getEmail() == null || this.getEmail().length() == 0)
+			this.addFieldError("email", this.getText("compulsoryField"));
+		if (this.getPassword() == null || this.getPassword().length() == 0)
+			this.addFieldError("password", this.getText("compulsoryField"));
+		if (this.getRepassword() == null || this.getRepassword().length() == 0)
+			this.addFieldError("repassword", this.getText("compulsoryField"));
+		if (this.getUsername() == null || this.getUsername().length() == 0)
+			this.addFieldError("username", this.getText("compulsoryField"));
+		if (this.getFirstName() == null || this.getFirstName().length() == 0)
+			this.addFieldError("firstName", this.getText("compulsoryField"));
+		if (this.getLastName() == null || this.getLastName().length() == 0)
+			this.addFieldError("lastName", this.getText("compulsoryField"));
+
+		if (!this.getPassword().equals(this.getRepassword()))
+			this.addFieldError("password", this.getText("identicalPasswords"));
+
+		Pattern rfc2822 = Pattern.compile("^[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?$");
+		if (!rfc2822.matcher(this.getEmail().trim().toLowerCase()).matches()) {
+			this.addFieldError("email", this.getText("notValidEmail"));
+		}
+
+		try {
+			if (this.getUserAPI().userExists(this.getEmail()))
+				this.addFieldError("email", this.getText("userAlreadyExists"));
+			if (this.getUserAPI().usernameExists(this.getUsername()))
+				this.addFieldError("username", this.getText("userAlreadyExists"));
+
+		} catch (Exception e) {
+			this.addFieldError("email", this.getText("userAlreadyExists"));
+		}
+	}
+
+	public String getEmail() {
+		return email;
+	}
+
+	public void setEmail(String email) {
+		this.email = email;
+	}
+
+	public String getPassword() {
+		return password;
+	}
+
+	public void setPassword(String password) {
+		this.password = password;
+	}
+
+	public String getRepassword() {
+		return repassword;
+	}
+
+	public void setRepassword(String repassword) {
+		this.repassword = repassword;
+	}
+
+	public String getUsername() {
+		return username;
+	}
+
+	public void setUsername(String username) {
+		this.username = username;
+	}
+
+	public String getFirstName() {
+		return firstName;
+	}
+
+	public void setFirstName(String firstName) {
+		this.firstName = firstName;
+	}
+
+	public String getLastName() {
+		return lastName;
+	}
+
+	public void setLastName(String lastName) {
+		this.lastName = lastName;
+	}
+
+	public String getInstitution() {
+		return institution;
+	}
+
+	public void setInstitution(String institution) {
+		this.institution = institution;
+	}
+	
+}
Index: modules/uoa-validator-admin/trunk/src/main/webapp/jsps/fonts/maven_pro_regular-webfont.ttf
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/trunk/src/main/webapp/jsps/fonts/maven_pro_regular-webfont.ttf
===================================================================
--- modules/uoa-validator-admin/trunk/src/main/webapp/jsps/fonts/maven_pro_regular-webfont.ttf	(nonexistent)
+++ modules/uoa-validator-admin/trunk/src/main/webapp/jsps/fonts/maven_pro_regular-webfont.ttf	(revision 47450)

Property changes on: modules/uoa-validator-admin/trunk/src/main/webapp/jsps/fonts/maven_pro_regular-webfont.ttf
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/resources/eu/dnetlib/validator/admin/api/error_messages.txt
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/resources/eu/dnetlib/validator/admin/api/error_messages.txt	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/resources/eu/dnetlib/validator/admin/api/error_messages.txt	(revision 47450)
@@ -0,0 +1,28 @@
+error.parametersMissing.ruleId=Rule id must be specified in the parameters given
+error.parametersMissing.jobId=Job id must be specified in the parameters given
+error.badParameter.idNotNumerical=The id was not numerical
+error.badParameter.unknownType=The type specified is incorrect
+rules.name.error.message1=A value must be defined for the field name
+rules.description.error.message1=A value must be defined for the field description
+rules.type.error.message1=A value must be defined for the field type
+rules.mandatory.error.message1=A value must be defined for the field mandatory
+rules.success.error.message1=A value must be defined for the field success
+rules.success.error.message2=First character for success must be one of =, > or <
+rules.success.error.message3=Field success must contain only numerical characters after the first character
+rules.weight.error.message1=Value of field weight must be numerical
+rules.provider_information.error.message1=A value must be specified for the provider information field
+rules.job_type.error.message1=Job type must be one of the available types
+rules.job_type.error.message2=A job type must be specified for this rule
+cardinality_rule.greater_than.error.message1=Value of field 'greater than' must be numerical
+cardinality_rule.less_than.error.message2=Less and Greater cannot be both without value
+cardinality_rule.less_than.error.message1=Value of field 'less than' must be numerical
+NotConfusedFields_Rule.field1.error.message1=Fields 'field1' and 'field2' must both have a value
+NotConfusedFields_Rule.field1.error.message2=Fields 'field1' and 'field2' must have a different value
+RegularExpression_Rule.regular_expression.error.message1=Field 'regular expression' must have a value
+RetrievableResource_Rule.max_depth.error.message1=Field 'max_depth' must have a numerical value
+Vocabulary_Rule.words.error.message1=A value must be defined for the 'words' field
+OAI_Content_Job.records.error.message1=Field 'records' cannot be empty
+OAI_Content_Job.records.error.message2=At least one record must be used for the validation
+OAI_Content_Job.records.error.message3=Value of field 'records' must be numerical
+OAI_Content_Job.random.error.message1=Value of field 'random' must be boolean (true or false)
+OAI_Content_Job.base_url.error.message1=Value of field 'base url' doesn't seem to be a valid url adress
\ No newline at end of file
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/resources/eu/dnetlib/validator/admin/constants/fieldDetails.txt
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/resources/eu/dnetlib/validator/admin/constants/fieldDetails.txt	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/resources/eu/dnetlib/validator/admin/constants/fieldDetails.txt	(revision 47450)
@@ -0,0 +1,102 @@
+rules
+id false
+name true
+description true
+type true
+mandatory true
+weight true
+visible false
+job_type true
+
+usage_rules
+provider_information true
+
+cris_rules
+cris_entity true
+
+cardinality_rule
+less_than true
+greater_than true
+	
+chain_rule
+type true 
+rule_1 true
+rule_2 true
+
+regularexpression_rule
+regexp true
+
+validurl_rule
+
+vocabulary_rule
+terms true
+terms_type true
+
+oaipmhdategranularity_rule
+base_url true
+
+oaipmhembargodate_rule
+
+oaipmhincrementalrecorddelivery_rule
+from true
+until true
+
+oaipmhresumptiontokenduration_rule
+duration true
+
+text_rule
+
+textvocabulary_rule
+terms true
+
+textreguralexpresion_rule
+regexp true
+
+xml_rule
+xpath true
+success true
+
+xmlcardinality_rule
+xpath true
+success true
+lt true
+gt true
+
+xmlfieldexist_rule
+xpath true
+success true
+
+xmlnotconfusedfields_rule
+xpath true
+success true
+fields true
+
+xmlregularexpression_rule
+xpath true
+success true
+regexp true
+
+xmlvalidurl_rule
+xpath true
+success true
+
+xmlvocabulary_rule
+xpath true
+success true
+terms true
+terms_type true
+
+xmlcrisclassvocabulary_rule
+xpath true
+scheme_id true
+success true
+terms true
+
+xmlcrisreferentialintegrity_rule
+xpath true
+entity_acronym true
+scheme_id true
+related_entity_xpath true
+related_entity_acronym true
+success true
+terms true
\ No newline at end of file
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/resources/struts.properties
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/resources/struts.properties	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/resources/struts.properties	(revision 47450)
@@ -0,0 +1,6 @@
+struts.custom.i18n.resources=web-texts,web-error-texts,backend-errors,field-infos
+struts.ognl.allowStaticMethodAccess = true
+
+struts.xwork.chaining.copyErrors = true
+struts.xwork.chaining.copyFieldErrors = true
+struts.xwork.chaining.copyMessages = true
\ No newline at end of file
Index: modules/uoa-validator-admin/trunk/src/main/webapp/jsps/fonts/maven_pro_regular-webfont.woff
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/trunk/src/main/webapp/jsps/fonts/maven_pro_regular-webfont.woff
===================================================================
--- modules/uoa-validator-admin/trunk/src/main/webapp/jsps/fonts/maven_pro_regular-webfont.woff	(nonexistent)
+++ modules/uoa-validator-admin/trunk/src/main/webapp/jsps/fonts/maven_pro_regular-webfont.woff	(revision 47450)

Property changes on: modules/uoa-validator-admin/trunk/src/main/webapp/jsps/fonts/maven_pro_regular-webfont.woff
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/trunk/src/main/webapp/jsps/fonts/droidsans.css
===================================================================
--- modules/uoa-validator-admin/trunk/src/main/webapp/jsps/fonts/droidsans.css	(nonexistent)
+++ modules/uoa-validator-admin/trunk/src/main/webapp/jsps/fonts/droidsans.css	(revision 47450)
@@ -0,0 +1,13 @@
+/* Copyright (C) YOOtheme GmbH, YOOtheme Proprietary Use License (http://www.yootheme.com/license) */
+
+@font-face {
+	font-family: 'DroidSansRegular';
+	src: url('DroidSans-webfont.eot');
+	src: url('DroidSans-webfont.eot?#iefix') format('embedded-opentype'),
+		 url('DroidSans-webfont.woff') format('woff'),
+		 url('DroidSans-webfont.ttf') format('truetype'),
+		 url('DroidSans-webfont.svg#DroidSansRegular') format('svg');
+	font-weight: normal;
+	font-style: normal;
+}
+
Index: modules/uoa-validator-admin/trunk/src/main/webapp/jsps/instructions.jsp
===================================================================
--- modules/uoa-validator-admin/trunk/src/main/webapp/jsps/instructions.jsp	(nonexistent)
+++ modules/uoa-validator-admin/trunk/src/main/webapp/jsps/instructions.jsp	(revision 47450)
@@ -0,0 +1,43 @@
+<%@ page contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<%@ taglib prefix="s" uri="/struts-tags"%>
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title><s:text name="instructions.welcome"/></title>
+<link href="jsps/style.css" rel="stylesheet" type="text/css" media="screen" />
+
+ <link href="jsps/favicon.ico" rel="shortcut icon" type="image/x-icon" />
+</head>	
+<body>
+<div id="wrapper">
+	<jsp:include page="menu.jsp"/>
+	<div id="page">
+	<div id="page-bgtop">
+		<div id="middle">
+            <div class="middle-b">
+                <div class="background">
+                
+        			<div id="main">
+                        <div id="main_container" class="clearfix">
+                            <div id="mainmiddle" class="floatbox">
+                                <h1 class="title"><s:text name="instructions.welcome"/></h1>
+                                <div class="entry">
+                                	<s:text name="instructions.message"/>
+                                </div>
+                             </div>
+                        </div>
+                    </div>
+                 </div>
+			</div>
+		</div>
+		<div style="clear: both;">&nbsp;</div>
+	</div>
+    <!-- NMI This needs to be the same in all pages and the text is some properties file -->
+    <div id="footer"> 
+		<jsp:include page="footer.jsp"/>
+	</div>
+</div>
+</div>
+</body>
+</html>
\ No newline at end of file
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/resources/struts.xml
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/resources/struts.xml	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/resources/struts.xml	(revision 47450)
@@ -0,0 +1,219 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE struts PUBLIC
+	"-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
+	"http://struts.apache.org/dtds/struts-2.3.dtd">
+
+<struts>
+	<constant name="struts.action.excludePattern" value=".*services.*"/>
+	<package name="noAuthorization" namespace="/" extends="struts-default">
+		<default-action-ref name="welcome" />
+		
+		<global-results>
+			<result name="input">/jsps/info.jsp</result>
+			<result name="exception">/jsps/info.jsp</result>
+		</global-results>
+		
+		<action name="bugreporter" class="springManagedBugReporter">
+			<result>/jsps/info.jsp</result>
+		</action>
+		
+		<action name="welcome" class="springManagedDummy">
+			<result>/jsps/homepage.jsp</result>
+		</action>
+		
+		<action name="go2login" class="springManagedLoginPage">
+			<result>/jsps/login.jsp</result>
+			<result name="input" type="redirect">welcome</result>
+		</action>
+		
+		<action name="go2registration" class="springManagedDummy">
+			<result>/jsps/login.jsp</result>
+		</action>
+
+		<action name="Register" class="springManagedRegister">
+			<result>/jsps/info.jsp</result>
+			<result name="input">/jsps/login.jsp</result>
+		</action>
+
+		<action name="activateAccount" class="springManagedActivateAccount">
+			<result>/jsps/info.jsp</result>
+			<result name="input">/jsps/info.jsp</result>
+		</action>
+
+		<action name="Login" class="springManagedLogin">
+			<result type="redirect">${url}?${params}</result>
+			<result name="input">/jsps/login.jsp</result>
+			<result name="login" type="redirect">go2login</result>
+			<result name="welcome" type="redirect">welcome</result>
+		</action>
+		
+		<action name="portalLogin" class="springManagedPortalLogin">
+			<result>/jsps/homepage.jsp</result>
+			<result name="input">/jsps/login.jsp</result>
+		</action>
+
+		<action name="sendPassword" class="springManagedSendPassword">
+			<result>/jsps/info.jsp</result>
+			<result name="input">/jsps/forgotPassword.jsp</result>
+		</action>
+
+		<action name="resetPassword" class="springManagedResetPassword">
+			<result>/jsps/info.jsp</result>
+			<result name="input">/jsps/resetPassword.jsp</result>
+		</action>
+
+		<action name="logout" class="springManagedLogout">
+			<result>/jsps/homepage.jsp</result>
+		</action>
+		
+		<action name="score" class="springManagedScore">
+			<result>/jsps/score.jsp</result>
+		</action>
+		
+		<action name="help" class="springManagedHelp">
+			<result>/jsps/help.jsp</result>
+		</action>
+				
+		<action name="forgotPassword" class="springManagedForgotPassword">
+			<result>/jsps/forgotPassword.jsp</result>
+		</action>
+
+	</package>
+
+	<package name="needsAuthorization" namespace="/" extends="struts-default">
+
+		<interceptors>
+			<interceptor name="authenticationInterceptor" class="eu.dnetlib.validator.admin.actions.login.AuthenticationInterceptor" />
+			<interceptor-stack name="secureStack">
+				<interceptor-ref name="authenticationInterceptor" />
+				<interceptor-ref name="defaultStack" />
+			</interceptor-stack>
+		</interceptors>
+
+		<default-interceptor-ref name="secureStack" />
+
+		<global-results>
+			<result name="login">/jsps/login.jsp</result>
+			<result name="input-problem">/jsps/corneeded.jsp</result>
+			<result name="input">/jsps/info.jsp</result>
+			<result name="exception">/jsps/info.jsp</result>
+		</global-results>
+
+		<action name="curateDB" class="springManagedDatabaseCurator">
+			<result>/jsps/info.jsp</result>
+		</action>
+		
+		<action name="deleteJobs" class="springManagedDummy">
+			<result>/jsps/deleteJobs.jsp</result>
+		</action>
+		
+		<action name="sendRegistrationsReport" class="springManagedRegistrationsReport">
+			<result>/jsps/info.jsp</result>
+		</action>
+		
+		<action name="registrationsReport" class="springManagedDummy">
+			<result>/jsps/registrationsReport.jsp</result>
+		</action>
+		
+		<action name="getRulesForSet" class="springManagedGetRulesForSet">
+			<result>/jsps/createRuleSet.jsp</result>
+			<result name="deleted">/jsps/info.jsp</result>
+		</action>
+
+		<action name="getRuleSets" class="springManagedGetRuleSets">
+			<result>/jsps/chooseRuleSet.jsp</result>
+		</action>
+
+		<action name="populateRuleListForEdit" class="springManagedPopulateRuleList">
+			<result>/jsps/chooseRuleForEdit.jsp</result>
+		</action>
+
+		<action name="populateRuleListForClone" class="springManagedPopulateRuleList">
+			<result>/jsps/chooseRuleForClone.jsp</result>
+		</action>
+		
+		<action name="prepareEditRule" class="springManagedPrepareEditRule">
+			<result>/jsps/editRule.jsp</result>
+		</action>
+
+		<action name="editUser" class="springManagedEditUser" method="edit">
+			<result>/jsps/info.jsp</result>
+		</action>
+		
+		<action name="userDetails" class="springManagedEditUser">
+			<result>/jsps/editUser.jsp</result>
+		</action>
+		
+		<action name="populateList" class="springManagedPopulateList" method="populate">
+			<result>/jsps/rules.jsp</result>
+		</action>
+		
+		<action name="sendFeedback" class="springManagedSendFeedback">
+			<result>/jsps/info.jsp</result>
+		</action>
+		
+		<action name="feedback" class="springManagedFeedback">
+			<result>/jsps/feedback.jsp</result>
+		</action>
+		
+	</package>
+
+	<package name="needsAdminAuthorization" namespace="/"
+		extends="struts-default">
+
+		<interceptors>
+			<interceptor name="adminInterceptor" class="springManagedAdminInterceptor" />
+			<interceptor-stack name="secureStackA">
+				<interceptor-ref name="adminInterceptor" />
+				<interceptor-ref name="defaultStack" />
+			</interceptor-stack>
+		</interceptors>
+
+		<default-interceptor-ref name="secureStackA" />
+
+		<global-results>
+			<result name="login">/jsps/login.jsp</result>
+			<result name="input-problem">/jsps/corneeded.jsp</result>
+			<result name="input">/jsps/info.jsp</result>
+			<result name="exception">/jsps/info.jsp</result>
+		</global-results>
+
+		<action name="populateRuleCategories" class="springManagedPopulateRuleCategories">
+			<result>/jsps/chooseRuleCategory.jsp</result>
+		</action>
+
+		<action name="prepareAddRule" class="springManagedPrepareAddRule">
+			<result>/jsps/addRule.jsp</result>
+		</action>
+
+		<action name="addRule" class="springManagedAddRule">
+			<result>/jsps/info.jsp</result>
+		</action>
+
+		<action name="populateRuleList" class="springManagedPopulateRuleList">
+			<result>/jsps/deleteRule.jsp</result>
+		</action>
+
+		<action name="deleteRule" class="springManagedDeleteRule">
+			<result>/jsps/info.jsp</result>
+		</action>
+
+		<action name="editRule" class="springManagedEditRule">
+			<result>/jsps/info.jsp</result>
+		</action>
+
+		<action name="createRuleSet" class="springManagedCreateRuleSet">
+			<result>/jsps/info.jsp</result>
+			<result name="input">/jsps/corneeded.jsp</result>
+		</action>
+
+		<action name="getRuleSetsForDeletion" class="springManagedGetRuleSetsForDeletion">
+			<result>/jsps/chooseRuleSetForDeletion.jsp</result>
+		</action>
+
+		<action name="deleteRuleSet" class="springManagedDeleteRuleSet">
+			<result>/jsps/info.jsp</result>
+		</action>
+	
+	</package>
+</struts>
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/resources/validation.properties
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/resources/validation.properties	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/resources/validation.properties	(revision 47450)
@@ -0,0 +1,29 @@
+# The ESAPI validator does many security checks on input, such as canonicalization
+# and whitelist validation. Note that all of these validation rules are applied *after*
+# canonicalization. Double-encoded characters (even with different encodings involved,
+# are never allowed.
+#
+# To use:
+#
+# First set up a pattern below. You can choose any name you want, prefixed by the word
+# "Validation." For example:
+#   Validation.Email=^[A-Za-z0-9._%-]+@[A-Za-z0-9.-]+\\.[a-zA-Z]{2,4}$
+# 
+# Then you can validate in your code against the pattern like this:
+#     ESAPI.validator().isValidInput("User Email", input, "Email", maxLength, allowNull);
+# Where maxLength and allowNull are set for you needs, respectively.
+#
+# But note, when you use boolean variants of validation functions, you lose critical 
+# canonicalization. It is preferable to use the "get" methods (which throw exceptions) and 
+# and use the returned user input which is in canonical form. Consider the following:
+#  
+# try {
+#    someObject.setEmail(ESAPI.validator().getValidInput("User Email", input, "Email", maxLength, allowNull));
+#
+Validator.SafeString=^[.\\p{Alnum}\\p{Space}]{0,1024}$
+Validator.Email=^[A-Za-z0-9._%-]+@[A-Za-z0-9.-]+\\.[a-zA-Z]{2,4}$
+Validator.IPAddress=^(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$
+Validator.URL=^(ht|f)tp(s?)\\:\\/\\/[0-9a-zA-Z]([-.\\w]*[0-9a-zA-Z])*(:(0-9)*)*(\\/?)([a-zA-Z0-9\\-\\.\\?\\,\\:\\'\\/\\\\\\+=&amp;%\\$#_]*)?$
+Validator.CreditCard=^(\\d{4}[- ]?){3}\\d{4}$
+Validator.SSN=^(?!000)([0-6]\\d{2}|7([0-6]\\d|7[012]))([ -]?)(?!00)\\d\\d\\3(?!0000)\\d{4}$
+
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/java/eu/dnetlib/validator/admin/actions/BaseValidatorAction.java
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/java/eu/dnetlib/validator/admin/actions/BaseValidatorAction.java	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/java/eu/dnetlib/validator/admin/actions/BaseValidatorAction.java	(revision 47450)
@@ -0,0 +1,126 @@
+package eu.dnetlib.validator.admin.actions;
+
+import java.io.PrintWriter;
+import java.io.StringWriter;
+import java.io.Writer;
+import java.util.ArrayList;
+import java.util.List;
+
+import org.apache.log4j.Logger;
+
+import com.opensymphony.xwork2.ActionSupport;
+
+import eu.dnetlib.validator.admin.api.UserApi;
+import eu.dnetlib.validator.admin.api.ValidatorAdminAPI;
+import eu.dnetlib.validator.admin.config.Constants;
+import eu.dnetlib.validator.commons.email.Emailer;
+
+public class BaseValidatorAction extends ActionSupport {
+
+	/**
+	 * 
+	 */
+	private static final long serialVersionUID = -622158192564945303L;
+	private UserApi userAPI = null;
+	private ValidatorAdminAPI validatorAdminAPI = null;
+	private Emailer emailer = null;
+
+	public static String loggedInField = "LOGGED_IN_FIELD";
+	
+	private String valBaseUrl = null;
+	private String valAdminEmail = null;
+	private String userMode = null;
+	private String repoMode = null;
+	private String deployEnvironment = null;
+
+	public void reportException(Exception exception) {
+		Writer writer = new StringWriter();
+		PrintWriter printWriter = new PrintWriter(writer);
+		exception.printStackTrace(printWriter);
+		
+		List<String> recipients = new ArrayList<String>();
+		
+		try {
+			recipients.add(this.getValAdminEmail());
+			String message = "An exception has occurred:\n"+writer.toString();
+			String subject = "Automatic Bug Report";
+			this.getEmailer().sendMail(recipients, subject, message, false, null);
+		} catch (Exception e) {
+			Logger logger = Logger.getLogger(BaseValidatorAction.class);
+			logger.error("error sending error report", e);
+		}
+	}
+	
+	public boolean isModeLdap() {
+		return userMode.trim().toLowerCase().equals(Constants.MODE_LDAP);
+	}
+
+	public boolean isModeOpenAIRE() {
+		return repoMode.trim().toLowerCase().equals(Constants.MODE_DNET);
+	}
+
+	public UserApi getUserAPI() {
+		return userAPI;
+	}
+
+	public void setUserAPI(UserApi userAPI) {
+		this.userAPI = userAPI;
+	}
+
+	public ValidatorAdminAPI getValidatorAdminAPI() {
+		return validatorAdminAPI;
+	}
+
+	public void setValidatorAdminAPI(ValidatorAdminAPI validatorAdminAPI) {
+		this.validatorAdminAPI = validatorAdminAPI;
+	}
+
+	public Emailer getEmailer() {
+		return emailer;
+	}
+
+	public void setEmailer(Emailer emailer) {
+		this.emailer = emailer;
+	}
+
+	public String getUserMode() {
+		return userMode;
+	}
+
+	public void setUserMode(String userMode) {
+		this.userMode = userMode;
+	}
+
+	public String getRepoMode() {
+		return repoMode;
+	}
+
+	public void setRepoMode(String repoMode) {
+		this.repoMode = repoMode;
+	}
+
+	public void setValBaseUrl(String valBaseUrl) {
+		this.valBaseUrl = valBaseUrl;
+	}
+
+	public String getValBaseUrl() {
+		return valBaseUrl;
+	}
+
+	public void setValAdminEmail(String valAdminEmail) {
+		this.valAdminEmail = valAdminEmail;
+	}
+
+	public String getValAdminEmail() {
+		return valAdminEmail;
+	}
+
+	public String getDeployEnvironment() {
+		return deployEnvironment;
+	}
+
+	public void setDeployEnvironment(String deployEnvironment) {
+		this.deployEnvironment = deployEnvironment;
+	}
+
+}
\ No newline at end of file
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/java/eu/dnetlib/validator/admin/actions/rulesets/GetRules.java
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/java/eu/dnetlib/validator/admin/actions/rulesets/GetRules.java	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/java/eu/dnetlib/validator/admin/actions/rulesets/GetRules.java	(revision 47450)
@@ -0,0 +1,146 @@
+package eu.dnetlib.validator.admin.actions.rulesets;
+
+import java.util.ArrayList;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Set;
+
+import org.apache.log4j.Logger;
+
+import com.opensymphony.xwork2.Action;
+
+import eu.dnetlib.domain.functionality.validator.Rule;
+import eu.dnetlib.domain.functionality.validator.RuleSet;
+import eu.dnetlib.validator.admin.actions.BaseValidatorAction;
+import eu.dnetlib.validator.admin.constants.TypesAndTableNames;
+
+public class GetRules extends BaseValidatorAction {
+
+	private static final long serialVersionUID = 3336444896590055688L;
+	private int setId = -1;
+	private List<Rule> rulesContent;
+	private List<Rule> rulesUsage;
+	private Set<Integer> ruleIdsContent;
+	private Set<Integer> ruleIdsUsage;
+	private List<String> deployEnvironments;
+	private String funct = null;
+	private RuleSet ruleSet;
+	
+	private static final Logger logger = Logger.getLogger(GetRules.class);
+
+	public String execute() {
+		this.clearErrorsAndMessages();
+		try {
+			logger.debug("getting rules in rule set "+setId);
+			ruleIdsContent = new HashSet<Integer>();
+			ruleIdsUsage = new HashSet<Integer>();
+			rulesContent = new ArrayList<Rule>();
+			rulesUsage = new ArrayList<Rule>();
+			this.splitRules(this.getValidatorAdminAPI().getAllRules(),rulesContent, rulesUsage);
+			this.deployEnvironments = TypesAndTableNames.deployEnvironments;
+			if (setId == -1) {
+				ruleSet = new RuleSet();
+				ruleSet.setId(-1);
+				funct = "create";
+			} else {
+				funct = "edit";
+				ruleSet = this.getValidatorAdminAPI().getRuleSet(setId);
+				ruleIdsContent=ruleSet.getContentRulesIds();
+				ruleIdsUsage=ruleSet.getUsageRulesIds();
+//				visibility = Utilities.convertListToString(set.getVisibility());
+			}
+			return Action.SUCCESS;
+		}
+		catch(Exception e) {
+			logger.error("Error getting rules", e);
+			this.addActionError(this.getText("generic.error"));
+			reportException(e);
+			return "exception";
+		}
+	}
+
+	private void splitRules(List<Rule> totalRules, List<Rule> contentRules, List<Rule> usageRules) {
+		logger.debug("splitting rules..");
+		for (Rule rule : totalRules) {
+			if (rule.getJob_type().equals("content")) {
+				contentRules.add(rule);
+			} else if (rule.getJob_type().equals("usage")) {
+				usageRules.add(rule);
+			}
+		}
+	}
+
+	public String getFunct() {
+		return funct;
+	}
+
+	public void setFunct(String funct) {
+		this.funct = funct;
+	}
+		
+
+	public RuleSet getRuleSet() {
+		return ruleSet;
+	}
+
+	public void setRuleSet(RuleSet ruleSet) {
+		this.ruleSet = ruleSet;
+	}
+
+	public int getSetId() {
+		return setId;
+	}
+
+	public void setSetId(int setId) {
+		this.setId = setId;
+	}
+
+
+	public List<Rule> getRulesContent() {
+		return rulesContent;
+	}
+
+
+	public void setRulesContent(List<Rule> rulesContent) {
+		this.rulesContent = rulesContent;
+	}
+
+
+	public List<Rule> getRulesUsage() {
+		return rulesUsage;
+	}
+
+
+	public void setRulesUsage(List<Rule> rulesUsage) {
+		this.rulesUsage = rulesUsage;
+	}
+
+	public Set<Integer> getRuleIdsContent() {
+		return ruleIdsContent;
+	}
+
+	public void setRuleIdsContent(Set<Integer> ruleIdsContent) {
+		this.ruleIdsContent = ruleIdsContent;
+	}
+
+	public Set<Integer> getRuleIdsUsage() {
+		return ruleIdsUsage;
+	}
+
+	public void setRuleIdsUsage(Set<Integer> ruleIdsUsage) {
+		this.ruleIdsUsage = ruleIdsUsage;
+	}
+
+	public List<String> getDeployEnvironments() {
+		return deployEnvironments;
+	}
+
+	public void setDeployEnvironments(List<String> deployEnvironments) {
+		this.deployEnvironments = deployEnvironments;
+	}
+
+
+}
+
+	
+
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/java/eu/dnetlib/validator/admin/actions/rules/PrepareEditRule.java
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/java/eu/dnetlib/validator/admin/actions/rules/PrepareEditRule.java	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/java/eu/dnetlib/validator/admin/actions/rules/PrepareEditRule.java	(revision 47450)
@@ -0,0 +1,109 @@
+package eu.dnetlib.validator.admin.actions.rules;
+
+import java.util.List;
+import java.util.Set;
+
+import org.apache.log4j.Logger;
+
+import com.opensymphony.xwork2.Action;
+
+import eu.dnetlib.domain.functionality.validator.Rule;
+import eu.dnetlib.validator.admin.actions.BaseValidatorAction;
+import eu.dnetlib.validator.admin.api.ValidatorAdminException;
+import eu.dnetlib.validator.admin.constants.TypesAndTableNames;
+
+public class PrepareEditRule extends BaseValidatorAction {
+
+	private static final long serialVersionUID = 8825889540939707747L;
+	private int ruleId;
+
+	private Rule rule;
+	private List<Rule> rules;
+	private List<FieldPair> ruleValues;
+	private Set<String> entityTypes;
+	
+	private String funct = null;
+	private static final Logger logger = Logger.getLogger(PrepareEditRule.class);
+
+
+	public String execute() {
+		this.clearErrorsAndMessages();
+		try {
+//			logger.debug("preparing edit of rule");
+			entityTypes = TypesAndTableNames.getCrisEntities().keySet();
+			logger.debug("preparing edit of rule " + ruleId);
+			rule = this.getValidatorAdminAPI().getRule(ruleId);
+			this.ruleValues = this.getValidatorAdminAPI().getRuleValuePairs(rule);
+			if (rule.getType().equals("ChainRule")) {
+				try {
+					rules = this.getValidatorAdminAPI().getAllRules();
+				} catch (ValidatorAdminException e) {
+					return Action.ERROR;
+				}
+			}			
+			logger.debug("ruleType: " + rule.getType());
+			rule.setJob_type(TypesAndTableNames.jobTypes.get(rule.getJob_type()));
+			return Action.SUCCESS;
+		} catch (Exception e) {
+			logger.error("preparing edit of rule " + ruleId, e);
+			this.addActionError(this.getText("generic.error"));
+			reportException(e);
+			return "exception";
+		}
+	}
+
+	
+	public Rule getRule() {
+		return rule;
+	}
+
+	public void setRule(Rule rule) {
+		this.rule = rule;
+	}
+
+	public List<Rule> getRules() {
+		return rules;
+	}
+
+	public void setRules(List<Rule> rules) {
+		this.rules = rules;
+	}
+
+	public List<FieldPair> getRuleValues() {
+		return ruleValues;
+	}
+
+	public void setRuleValues(List<FieldPair> ruleValues) {
+		this.ruleValues = ruleValues;
+	}
+
+	public int getRuleId() {
+		return ruleId;
+	}
+
+	public void setRuleId(int ruleId) {
+		this.ruleId = ruleId;
+	}
+
+
+	public String getFunct() {
+		return funct;
+	}
+
+
+	public void setFunct(String funct) {
+		this.funct = funct;
+	}
+
+
+	public Set<String> getEntityTypes() {
+		return entityTypes;
+	}
+
+
+	public void setEntityTypes(Set<String> entityTypes) {
+		this.entityTypes = entityTypes;
+	}
+	
+	
+}
\ No newline at end of file
Index: modules/uoa-validator-admin/trunk/src/main/webapp/jsps/help2.jsp
===================================================================
--- modules/uoa-validator-admin/trunk/src/main/webapp/jsps/help2.jsp	(nonexistent)
+++ modules/uoa-validator-admin/trunk/src/main/webapp/jsps/help2.jsp	(revision 47450)
@@ -0,0 +1,131 @@
+<%@ page contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<%@ taglib prefix="s" uri="/struts-tags"%>
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<link href="jsps/favicon.ico" rel="shortcut icon" type="image/x-icon" />
+<link href="jsps/style.css" rel="stylesheet" type="text/css" media="screen" />
+<title><s:text name="help"/></title>
+</head>
+<body>
+<div id="wrapper">
+	<jsp:include page="menu.jsp"/>
+	<div id="page">
+	<div id="page-bgtop">
+		<div id="content">
+			<div class="post">
+				<h2 class="title"><a name="addOaiContent"><s:text name="help.addOaiContent.title"/></a></h2>
+				<div class="entry">
+					<s:text name="help.addOaiContent.message"/>
+				</div>
+			</div>
+			<div class="post">
+				<h2 class="title"><a name="addOaiUsage"><s:text name="help.addOaiUsage.title"/></a></h2>
+				<div class="entry">
+					<s:text name="help.addOaiUsage.message"/>
+				</div>
+			</div>
+			<%--<div class="post">
+				<h2 class="title"><a name="addRule"><s:text name="help.addRule.title"/></a></h2>
+				<div class="entry">
+					<s:text name="help.addRule.message"/>
+				</div>
+			</div>--%>
+			<div class="post">
+				<h2 class="title"><a name="browseJobs"><s:text name="help.browseJobs.title"/></a></h2>
+				<div class="entry">
+					<s:text name="help.browseJobs.message"/>
+				</div>
+			</div>
+			<%--<div class="post">
+				<h2 class="title"><a name="chooseJobCategory"><s:text name="help.chooseJobCategory.title"/></a></h2>
+				<div class="entry">
+					<s:text name="help.chooseJobCategory.message"/>
+				</div>
+			</div>
+			<div class="post">
+				<h2 class="title"><a name="chooseRuleCategory"><s:text name="help.chooseRuleCategory.title"/></a></h2>
+				<div class="entry">
+					<s:text name="help.chooseRuleCategory.message"/>
+				</div>
+			</div>
+			<div class="post">
+				<h2 class="title"><a name="chooseRuleForEdit"><s:text name="help.chooseRuleForEdit.title"/></a></h2>
+				<div class="entry">
+					<s:text name="help.chooseRuleForEdit.message"/>
+				</div>
+			</div>
+			<div class="post">
+				<h2 class="title"><a name="chooseRuleSet"><s:text name="help.chooseRuleSet.title"/></a></h2>
+				<div class="entry">
+					<s:text name="help.chooseRuleSet.message"/>
+				</div>
+			</div>
+			<div class="post">
+				<h2 class="title"><a name="chooseRuleSetForDeletion"><s:text name="help.chooseRuleSetForDeletion.title"/></a></h2>
+				<div class="entry">
+					<s:text name="help.chooseRuleSetForDeletion.message"/>
+				</div>
+			</div>--%>
+			<div class="post">
+				<h2 class="title"><a name="createRuleSet"><s:text name="help.createRuleSet.title"/></a></h2>
+				<div class="entry">
+					<s:text name="help.createRuleSet.message"/>
+				</div>
+			</div>
+			<%--<div class="post">
+				<h2 class="title"><a name="deleteRule"><s:text name="help.deleteRule.title"/></a></h2>
+				<div class="entry">
+					<s:text name="help.deleteRule.message"/>
+				</div>
+			</div>--%>
+			<div class="post">
+				<h2 class="title"><a name="editRule"><s:text name="help.editRule.title"/></a></h2>
+				<div class="entry">
+					<s:text name="help.editRule.message"/>
+				</div>
+			</div>
+			<div class="post">
+				<h2 class="title"><a name="jobDetails"><s:text name="help.jobDetails.title"/></a></h2>
+				<div class="entry">
+					<s:text name="help.jobDetails.message"/>
+				</div>
+			</div>
+			<div class="post">
+				<h2 class="title"><a name="jobSummary"><s:text name="help.jobSummary.title"/></a></h2>
+				<div class="entry">
+					<s:text name="help.jobSummary.message"/>
+				</div>
+			</div>
+			<%--<div class="post">
+				<h2 class="title"><a name="login"><s:text name="help.login.title"/></a></h2>
+				<div class="entry">
+					<s:text name="help.login.message"/>
+				</div>
+			</div>
+			<div class="post">
+				<h2 class="title"><a name="registration"><s:text name="help.registration.title"/></a></h2>
+				<div class="entry">
+					<s:text name="help.registration.message"/>
+				</div>
+			</div>--%>
+			<div class="post">
+				<h2 class="title"><a name="repoRegistration"><s:text name="help.repoRegistration.title"/></a></h2>
+				<div class="entry">
+					<s:text name="help.repoRegistration.message"/>
+				</div>
+			</div>
+			<%--<div class="post">
+				<h2 class="title"><a name="resetPassword"><s:text name="help.resetPassword.title"/></a></h2>
+				<div class="entry">
+					<s:text name="help.resetPassword.message"/>
+				</div>
+			</div>--%>
+		</div>
+		<div style="clear: both;">&nbsp;</div>
+	</div>
+	</div>
+</div>
+</body>
+</html>
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/java/eu/dnetlib/validator/admin/actions/rules/PopulateRuleCategories.java
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/java/eu/dnetlib/validator/admin/actions/rules/PopulateRuleCategories.java	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/java/eu/dnetlib/validator/admin/actions/rules/PopulateRuleCategories.java	(revision 47450)
@@ -0,0 +1,55 @@
+package eu.dnetlib.validator.admin.actions.rules;
+
+import java.util.Set;
+
+import org.apache.log4j.Logger;
+
+import com.opensymphony.xwork2.Action;
+
+import eu.dnetlib.validator.admin.actions.BaseValidatorAction;
+import eu.dnetlib.validator.admin.constants.TypesAndTableNames;
+
+public class PopulateRuleCategories extends BaseValidatorAction {
+
+	private static final long serialVersionUID = 3845749201114926778L;
+	private Logger logger = Logger.getLogger(PopulateRuleCategories.class);
+	
+	private Set<String> ruleTypes;
+//	private Set<String> jobTypes;
+	private String defaultJobType;
+	
+	public String execute() {
+		this.clearErrorsAndMessages();
+		logger.debug("populating rule categories");
+			defaultJobType="content";
+//			jobTypes = TypesAndTableNames.getJobTypes();
+			ruleTypes = TypesAndTableNames.getRuleTypes();
+
+		return Action.SUCCESS;
+	}
+
+	public Set<String> getRuleTypes() {
+		return ruleTypes;
+	}
+
+	public void setRuleTypes(Set<String> ruleTypes) {
+		this.ruleTypes = ruleTypes;
+	}
+
+//	public Set<String> getJobTypes() {
+//		return jobTypes;
+//	}
+//
+//	public void setJobTypes(Set<String> jobTypes) {
+//		this.jobTypes = jobTypes;
+//	}
+
+	public String getDefaultJobType() {
+		return defaultJobType;
+	}
+
+	public void setDefaultJobType(String defaultJobType) {
+		this.defaultJobType = defaultJobType;
+	}
+	
+}
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/java/eu/dnetlib/validator/admin/config/CascadingPropertyLoader.java
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/java/eu/dnetlib/validator/admin/config/CascadingPropertyLoader.java	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/java/eu/dnetlib/validator/admin/config/CascadingPropertyLoader.java	(revision 47450)
@@ -0,0 +1,55 @@
+package eu.dnetlib.validator.admin.config;
+
+import java.util.Properties;
+
+import org.springframework.beans.BeansException;
+import org.springframework.beans.factory.InitializingBean;
+import org.springframework.beans.factory.config.ConfigurableListableBeanFactory;
+import org.springframework.beans.factory.config.PropertyPlaceholderConfigurer;
+
+/**
+ * CascadingPropertyLoader loads a number of property files and mergers them together, so that the last properties
+ * override the previous. It also supports property expansion like:
+ * 
+ * <code>
+ *   something = 1
+ *   somethingelse = 2
+ *   test = ${something}/${somethingelse}
+ *  </code>
+ * 
+ * <p>
+ * And if you override something to XX, then test will become XX/2
+ * </p>
+ * 
+ * 
+ * @author marko
+ * 
+ */
+public class CascadingPropertyLoader extends PropertyPlaceholderConfigurer implements InitializingBean {
+
+	private Properties properties;
+
+	public void afterPropertiesSet() throws Exception {
+		this.properties = mergeProperties();
+
+		// Convert the merged properties, if necessary.
+		convertProperties(this.properties);
+		
+		logger.debug("Properties: " + properties);
+	}
+
+	@Override
+	protected void processProperties(final ConfigurableListableBeanFactory beanFactoryToProcess, final Properties props) throws BeansException {
+		super.processProperties(beanFactoryToProcess, props);
+	}
+
+	public Properties getProperties() {
+		return properties;
+	}
+
+	public void setProperties(final Properties properties) {
+		super.setProperties(properties);
+		
+		this.properties = properties;
+	}
+}
\ No newline at end of file
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/deleteJobs.jsp
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/deleteJobs.jsp	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/deleteJobs.jsp	(revision 47450)
@@ -0,0 +1,66 @@
+<%@ page contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<%@ taglib prefix="s" uri="/struts-tags"%>
+<%@ taglib prefix="sj" uri="/struts-jquery-tags"%>
+<html>
+<head>
+<link href="jsps/style.css" rel="stylesheet" type="text/css" media="screen" />
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<!--<meta http-equiv="refresh" content="13" >-->
+<title><s:text name="manageJobs.deleteJobs.title"/></title>
+<link href="jsps/favicon.ico" rel="shortcut icon" type="image/x-icon" />
+<sj:head />
+</head>
+<body class="left">
+
+<div id="wrapper">
+	<jsp:include page="menu.jsp"/>
+	<div id="page">
+		<div id="page-bgtop">
+			<div id="middle">
+                <div class="middle-b">
+                    <div class="background">
+                    	<div id="left">
+                        	<div id="left_container">
+	                             <h2 class="helpHdr">Info</h2>
+                                 <s:text name="help.browsevalidations"/>
+                            </div>
+                        </div>
+                        <div id="main">
+                            <div id="main_container" class="clearfix">
+                                <div id="mainmiddle" class="floatbox">
+                                    <h1 class="title"><s:text name="manageJobs.deleteJobs.title"/></h1>
+<%--                                     <s:if test="%{enableCuration}"> --%>
+	                                    <s:form action="curateDB">
+	                                   		 <s:select name="period" 
+	                                    		key="manageJobs.deleteJobs.deleteOld"
+ 	                          					list="#{'older':'older than', 'newer':'newer than', 'exact':'of'}"
+                                            	required="true"
+	  					                    />
+     										<sj:datepicker name="inDate" changeMonth="true" changeYear="true" displayFormat="yy-mm-dd"/>
+<%-- 	                                    	<s:textfield name="inDate" value="YYYY-MM-DD"/> --%>
+	                                    	<s:select name="mode" 
+	                                    		key="manageJobs.deleteJobs.whatToDelete"
+ 	                          					list="#{'all':'All jobs', 'compTest_only':'Compatibility Tests only', 'uncompleted_only':'Uncompleted jobs'}"
+                                            	required="true"
+	  					                    />
+<%--  	                          					list="#{'all':'All jobs', 'compTest_only':'Compatibility Tests only', 'uncompleted_only':'Uncompleted jobs','import':'Import jobs'}" --%>
+	                                    	<s:submit cssClass="button-default"/>
+	                                    </s:form>
+<%-- 	                               </s:if> --%>
+                                    
+								</div>
+                            </div>
+                        </div>
+                    </div>
+                </div>
+            </div>
+		</div>
+		<!-- NMI This needs to be the same in all pages and the text is some properties file -->
+        <div id="footer"> 
+           <jsp:include page="footer.jsp"/>
+        </div>
+	</div>
+</div>
+</body>
+</html>
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/chooseRuleForEdit.jsp
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/chooseRuleForEdit.jsp	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/chooseRuleForEdit.jsp	(revision 47450)
@@ -0,0 +1,55 @@
+<%@ page contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<%@ taglib prefix="s" uri="/struts-tags"%>
+<html>
+<head>
+<link href="jsps/favicon.ico" rel="shortcut icon" type="image/x-icon" />
+<link href="jsps/style.css" rel="stylesheet" type="text/css" media="screen" />
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title><s:text name="chooseRuleForEdit.title"/></title>
+</head>
+<body class="left">
+<div id="wrapper">
+	<jsp:include page="menu.jsp"/>
+	<div id="page">
+	<div id="page-bgtop">
+	<div id="middle">
+            <div class="middle-b">
+                <div class="background">
+			 <div id="left">
+                              <div id="left_container" >
+                                   <h2 class="helpHdr">Info</h2>
+                                   <s:text name="help.admin"/>
+                              </div>
+                         </div>
+                        <div id="main">
+                        <div id="main_container" class="clearfix">
+			<div id="content">
+				<h2 class="title"><s:text name="chooseRuleForEdit.title"/></h2>
+                               <div class="entry">
+					<s:form action="prepareEditRule">
+                                                <s:if test="%{#session.isAdmin != null && #session.isAdmin.equals(\"true\")}">
+                                                        <s:select name="ruleId" list="rules" listValue="name" listKey="id"  key="chooseRuleForEdit.label"/>
+                                                		<s:hidden name="funct" value="edit"/>
+                                                </s:if>
+                                                <s:else>
+                                                        <s:select name="ruleId" list="rules" listValue="name" listKey="id"  key="chooseRuleForEdit.label2"/>
+                                                </s:else>
+                                                <s:submit cssClass="button-default"/>
+                                        </s:form>
+                                </div>
+			</div>
+			</div>
+			</div>
+		</div>
+	</div>
+	</div>
+	</div>
+
+    <div id="footer">
+                <jsp:include page="footer.jsp"/>
+        </div>
+</div>
+</div>
+</body>
+</html>
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/chooseRuleCategory.jsp
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/chooseRuleCategory.jsp	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/chooseRuleCategory.jsp	(revision 47450)
@@ -0,0 +1,51 @@
+<%@ page contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<%@ taglib prefix="s" uri="/struts-tags"%>
+<html>
+<head>
+<link href="jsps/favicon.ico" rel="shortcut icon" type="image/x-icon" />
+<link href="jsps/style.css" rel="stylesheet" type="text/css" media="screen" />
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title><s:text name="chooseRuleCategory.title"/></title>
+</head>
+<body class="left">
+<div id="wrapper">
+	<jsp:include page="menu.jsp"/>
+	<div id="page">
+	<div id="page-bgtop">
+	<div id="middle">
+            <div class="middle-b">
+                <div class="background">
+			 <div id="left">
+                              <div id="left_container" >
+                                   <h2 class="helpHdr">Info</h2>
+                                   <s:text name="help.admin"/>
+                              </div>
+                         </div>
+                        <div id="main">
+                        <div id="main_container" class="clearfix">
+			<div id="content">
+				<h2 class="title"><s:text name="chooseRuleCategory.title"/></h2>
+                                <div class="entry">
+                                        <s:form action="prepareAddRule">
+                                                <s:select key="help.chooseRuleCategory.type.title" name="type" list="ruleTypes"/>
+                                                <s:radio name="jobType" list="#{'content':'OAI Content', 'usage':'OAI Usage'}" value="defaultJobType" label="%{getText(\"jobs.job_type.name\")}" title="%{getText(\"jobs.job_type.description\")}" />
+                                                <s:checkbox name="forCris" label="Is the rule for Cris Guidelines?"/>
+                                                <s:submit cssClass="button-default"/>
+                                        </s:form>
+                                </div>
+			</div>
+			</div>
+			</div>
+		</div>
+	</div>
+	</div>
+	</div>
+
+    <div id="footer">
+                <jsp:include page="footer.jsp"/>
+        </div>
+</div>
+</div>
+</body>
+</html>
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/addRule.jsp
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/addRule.jsp	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/addRule.jsp	(revision 47450)
@@ -0,0 +1,96 @@
+<%@ page contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<%@ taglib prefix="s" uri="/struts-tags"%>
+<html>
+<head>
+<link href="jsps/favicon.ico" rel="shortcut icon" type="image/x-icon" />
+<link href="jsps/style.css" rel="stylesheet" type="text/css" media="screen" />
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title><s:text name="addRule.title"/></title>
+</head>
+<body class="left">
+<div id="wrapper">
+	<jsp:include page="menu.jsp"/>
+	<div id="page">
+	<div id="page-bgtop">
+	<div id="middle">
+            <div class="middle-b">
+                <div class="background">
+
+			 <div id="left">
+                              <div id="left_container" >
+                                                <h2 class="helpHdr">Info</h2>
+                                                <s:text name="help.admin"/>
+                              </div>
+                         </div>
+                                <div id="main">
+                        <div id="main_container" class="clearfix">
+		<div id="content">
+				<h2 class="title"><s:text name="addRule.title"/></h2>
+				<p class="meta"><a href='<s:url value="/jsps/help.jsp#addRule"/>' target="_blank"><s:text name="help"/></a></p>
+				<div class="entry">
+					<s:form action="addRule">
+<%-- 						<s:hidden name="type"/> --%>
+						<s:hidden name="jobType"/>
+						<s:hidden name="forCris"/>
+						<s:iterator value="labels" var="label">
+							<s:set name="dscr" value="%{#label+\".description\"}"/>
+							<s:set name="tltp" value="%{#label+\".name\"}"/>
+							<s:if test="%{#label.equals(\"xmlvocabulary_rule.terms\") || #label.equals(\"rules.description\")}">
+								<s:textarea name="inputs" title="%{getText(#dscr)}" label="%{getText(#tltp)}" cols="50" rows="5"/>
+							</s:if>
+							<s:elseif test="%{#label.equals(\"xmlcrisclassvocabulary_rule.terms\") || #label.equals(\"xmlcrisreferentialintegrity_rule.terms\")}">
+								<s:textarea name="inputs" title="%{getText(#dscr)}" label="%{getText(#tltp)}" cols="50" rows="5"/>
+							</s:elseif>
+                            <s:elseif test="%{#label.equals(\"xmlvocabulary_rule.terms_type\")}">
+                                <s:select label="%{getText(#tltp)}" name="inputs" list="#{'whitelist':'whitelist', 'blacklist':'blacklist'}" title="%{getText(#dscr)}"/>
+							</s:elseif>
+							<s:elseif test="%{#label.equals(\"rules.mandatory\")}">
+								<s:select label="%{getText(#tltp)}" name="inputs" list="#{'true':'true', 'false':'false'}" title="%{getText(#dscr)}"/>
+							</s:elseif>
+							<s:elseif test="%{#label.equals(\"rules.cris_entity\")}">
+                                <s:select label="%{getText(#tltp)}" name="inputs" list="entityTypes" value="%{rule.entity_type}" title="%{getText(#dscr)}"/>
+                            </s:elseif>
+<%-- 							<s:elseif test="%{#label.equals(\"rules.provider_information\")}"> --%>
+<%-- 								<s:if test="%{jobType.equals(\"usage\")}"> --%>
+<%-- 									<s:textfield name="inputs" title="%{getText(#dscr)}" label="%{getText(#tltp)}"/> --%>
+<%-- 								</s:if> --%>
+<%-- 							</s:elseif> --%>
+							<s:elseif test="%{#label.matches('.*success')}">
+								<s:select label="%{getText(#tltp)}" name="inputs" list="#{'>0':'>0', 'all':'all', '0':'0', '1':'1'}"  title="%{getText(#dscr)}"/>
+							</s:elseif>
+							<s:elseif test="%{#label.equals(\"chain_rule.type\")}">
+								<s:select label="%{getText(#tltp)}" name="inputs" list="#{'or':'or', 'and':'and', 'horn':'horn'}" title="%{getText(#dscr)}"/>
+							</s:elseif>							
+							<s:elseif test="%{#label.equals(\"chain_rule.rule_1\")}">
+								<s:select name="inputs" list="rules" listValue="ruleName" listKey="ruleId" label="%{getText(#tltp)}" title="%{getText(#dscr)}"/>
+							</s:elseif>							
+							<s:elseif test="%{#label.equals(\"chain_rule.rule_2\")}">
+								<s:select name="inputs" list="rules" listValue="ruleName" listKey="ruleId" label="%{getText(#tltp)}" title="%{getText(#dscr)}"/>
+							</s:elseif>		
+							<s:else>
+								<s:textfield name="inputs" title="%{getText(#dscr)}" label="%{getText(#tltp)}"/>
+							</s:else>
+						</s:iterator>
+<%-- 						<s:if test="%{forCris == true}"> --%>
+<%-- 							<s:select name="entityType" list="entityTypes" label="%{getText(\"jobs.entity_type.name\")}" title="%{getText(\"jobs.entity_type.description\")}" /> --%>
+<%-- 						</s:if> --%>
+<%-- 						<s:textfield name="jobType" value="%{#jobType}" label="%{getText(\"jobs.job_type.name\")}" title="%{getText(\"jobs.job_type.description\")}" readonly='true'/> --%>
+						<s:textfield name="type" label="%{getText(\"rules.type.name\")}" title="%{getText(\"rules.type.description\")}" readonly='true'/>
+						<s:submit value="Insert" cssClass="button-default"/>
+					</s:form>
+				</div>
+			</div>
+		</div>
+	</div>
+	</div>
+	</div>
+	</div>
+	</div>
+    <div id="footer">
+                <jsp:include page="footer.jsp"/>
+        </div>
+        </div>
+        </div>
+</body>
+</html>
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/deleteRule.jsp
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/deleteRule.jsp	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/deleteRule.jsp	(revision 47450)
@@ -0,0 +1,49 @@
+<%@ page contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<%@ taglib prefix="s" uri="/struts-tags"%>
+<html>
+<head>
+<link href="jsps/favicon.ico" rel="shortcut icon" type="image/x-icon" />
+<link href="jsps/style.css" rel="stylesheet" type="text/css" media="screen" />
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title><s:text name="deleteRule.title"/></title>
+</head>
+<body class="left">
+<div id="wrapper">
+	<jsp:include page="menu.jsp"/>
+	<div id="page">
+	<div id="page-bgtop">
+	<div id="middle">
+            <div class="middle-b">
+                <div class="background">
+			 <div id="left">
+                              <div id="left_container" >
+                                                <h2 class="helpHdr">Info</h2>
+                                                <s:text name="help.admin"/>
+                              </div>
+                         </div>
+                          <div id="main">
+                        <div id="main_container" class="clearfix">
+			<div id="content">
+			<h2 class="title"><s:text name="deleteRule.title"/></h2>
+                                <div class="entry">
+                                        <s:form action="deleteRule">
+                                                <s:select name="ruleId" list="rules" listValue="name" listKey="id"  key="deleteRule.label"/>
+						<s:submit cssClass="button-default"/>
+                                        </s:form>
+                                </div>
+			</div>
+		</div>
+	</div>
+	</div>
+	</div>
+	</div>
+	</div>
+
+    <div id="footer">
+                <jsp:include page="footer.jsp"/>
+        </div>
+</div>
+</div>
+</body>
+</html>
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/createRuleSet.jsp
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/createRuleSet.jsp	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/createRuleSet.jsp	(revision 47450)
@@ -0,0 +1,106 @@
+<%@ page contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<%@ taglib prefix="s" uri="/struts-tags"%>
+<html>
+<head>
+<link href="jsps/favicon.ico" rel="shortcut icon" type="image/x-icon" />
+<link href="jsps/style.css" rel="stylesheet" type="text/css" media="screen" />
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<s:if test="%{#session.isAdmin != null && #session.isAdmin.equals(\"true\")}">
+        <s:set name="isAdmin" value="true"/>
+</s:if>
+<s:else>
+        <s:set name="isAdmin" value="false"/>
+</s:else>
+<title>
+        <s:if test="%{#isAdmin}">
+                <s:text name="createRuleSet.title"/>
+        </s:if>
+        <s:else>
+                <s:text name="createRuleSet.title2"/>
+        </s:else>
+</title>
+</head>
+<body class="left">
+<div id="wrapper">
+	<jsp:include page="menu.jsp"/>
+	<div id="page">
+	<div id="page-bgtop">
+	<div id="middle">
+            <div class="middle-b">
+                <div class="background">
+			 <div id="left">
+                              <div id="left_container" >
+                                   <h2 class="helpHdr">Info</h2>
+                                   <s:text name="help.admin"/>
+                              </div>
+                         </div>
+                        <div id="main">
+                        <div id="main_container" class="clearfix">
+			<div id="content">
+				<s:if test="%{#isAdmin}">
+                                        <h2 class="title"><s:text name="createRuleSet.title"/></h2>
+                                </s:if>
+                                <s:else>
+                                        <h2 class="title"><s:text name="createRuleSet.title2"/></h2>
+                                </s:else>
+                                <div class="entry">
+                                        <s:form action="createRuleSet">
+                                                <s:hidden name="funct"/>
+                                                <s:hidden name="ruleSet.id"/>
+                                                <s:textfield name="ruleSet.name" key="createRuleSet.name"/>
+                                                <s:textfield name="ruleSet.shortName" key="createRuleSet.shortName"/>
+                                                <s:textfield name="ruleSet.description" key="createRuleSet.description"/>
+                                                <s:textfield name="ruleSet.guidelinesAcronym" key="createRuleSet.guidelinesAcronym"/>
+<%--                                                 <s:textfield name="ruleSet.visibility" key="createRuleSet.visibility"/> --%>
+                                                 
+                                                <s:select key="createRuleSet.visibility"
+                                                       name="ruleSet.visibility"
+                                                       list="deployEnvironments"
+                                                       multiple="true"
+                                                       size="%{#ruleSet.visibility.size()}"
+                                                       value="%{ruleSet.visibility}"
+                                                       disabled='%{!#isAdmin}'
+                                                /> 
+                                                 
+                                                <s:select key="createRuleSet.rulesContent"
+                                                       name="chosenContentRules"
+                                                       list="rulesContent"
+                                                       listKey="id"
+                                                       listValue="name"
+                                                       multiple="true"
+                                                       size="%{#rulesContent.size()}"
+                                                       value="%{ruleIdsContent}"
+                                                       disabled='%{!#isAdmin}'
+                                                />
+                                                <s:select key="createRuleSet.rulesUsage"
+                                                       name="chosenUsageRules"
+                                                       list="rulesUsage"
+                                                       listKey="id"
+                                                       listValue="name"
+                                                       multiple="true"
+                                                       size="%{#rulesUsage.size()}"
+                                                       value="%{ruleIdsUsage}"
+                                                       disabled='%{!#isAdmin}'
+                                                />
+
+                                                <s:if test="%{#isAdmin}">
+                                                	<s:submit cssClass="button-default"/>
+                                                </s:if>
+                                        </s:form>
+                                </div>
+
+			</div>
+			</div>
+			</div>
+		</div>
+	</div>
+	</div>
+	</div>
+    <div id="footer">
+                <jsp:include page="footer.jsp"/>
+        </div>
+	</div>
+</div>
+</body>
+</html>
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/images/logo-referencia-openaire.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/images/logo-referencia-openaire.png
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/images/logo-referencia-openaire.png	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/images/logo-referencia-openaire.png	(revision 47450)

Property changes on: modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/images/logo-referencia-openaire.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/java/eu/dnetlib/validator/admin/constants/fielddetails/FieldDetails.java
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/java/eu/dnetlib/validator/admin/constants/fielddetails/FieldDetails.java	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/java/eu/dnetlib/validator/admin/constants/fielddetails/FieldDetails.java	(revision 47450)
@@ -0,0 +1,32 @@
+package eu.dnetlib.validator.admin.constants.fielddetails;
+
+public class FieldDetails {
+
+	private String tableName;
+	private String fieldName;
+	// true if the user must provide a value for this field when adding a new record in the table
+	private boolean forDet;
+	
+	public String getTableName() {
+		return tableName;
+	}
+	public void setTableName(String tableName) {
+		this.tableName = tableName;
+	}
+	public String getFieldName() {
+		return fieldName;
+	}
+	public void setFieldName(String fieldName) {
+		this.fieldName = fieldName;
+	}
+	public boolean isForDet() {
+		return forDet;
+	}
+	public void setForDet(boolean forDet) {
+		this.forDet = forDet;
+	}
+	
+	public String getBundleName() {
+		return this.tableName+"."+this.fieldName;
+	}
+}
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/images/openairepluslogo.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/images/openairepluslogo.png
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/images/openairepluslogo.png	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/images/openairepluslogo.png	(revision 47450)

Property changes on: modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/images/openairepluslogo.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/images/ajax_loader_blue_32.gif
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/images/ajax_loader_blue_32.gif
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/images/ajax_loader_blue_32.gif	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/images/ajax_loader_blue_32.gif	(revision 47450)

Property changes on: modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/images/ajax_loader_blue_32.gif
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/resources/eu/dnetlib/validator/admin/api/springContext-validator-user-ldap.xml
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/resources/eu/dnetlib/validator/admin/api/springContext-validator-user-ldap.xml	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/resources/eu/dnetlib/validator/admin/api/springContext-validator-user-ldap.xml	(revision 47450)
@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<beans xmlns="http://www.springframework.org/schema/beans"
+	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+	xmlns:context="http://www.springframework.org/schema/context"
+	xmlns:cxf="http://cxf.apache.org/core"
+	xmlns:jaxws="http://cxf.apache.org/jaxws"
+	xmlns:p="http://http://www.springframework.org/schema/p"
+	xmlns:template="http://dnetlib.eu/springbeans/template"
+	xmlns:t="http://dnetlib.eu/springbeans/t"
+	xmlns:tx="http://www.springframework.org/schema/tx"
+	
+	xsi:schemaLocation="
+		http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.0.xsd
+        http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.0.xsd
+        http://cxf.apache.org/core http://cxf.apache.org/schemas/core.xsd
+        http://cxf.apache.org/jaxws http://cxf.apache.org/schemas/jaxws.xsd
+        http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-4.0.xsd
+        http://dnetlib.eu/springbeans/template http://dnetlib.eu/springbeans/template.xsd"
+	default-autowire="no">
+
+	<bean id="userAPI" class="eu.dnetlib.validator.admin.api.impls.UserApiLDAP" lazy-init="true">
+		<property name="ldapAddress" value="${services.validator.ldap.address}" />
+		<property name="ldapPort" value="${services.validator.ldap.port}" />
+		<property name="ldapUsername" value="${services.validator.ldap.username}" />
+		<property name="ldapPassword" value="${services.validator.ldap.password}" />
+		<property name="ldapUsersDN" value="${services.validator.ldap.usersDN}" />
+	</bean>
+
+</beans>
\ No newline at end of file
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/resources/eu/dnetlib/validator/admin/api/springContext-validator.properties
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/resources/eu/dnetlib/validator/admin/api/springContext-validator.properties	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/resources/eu/dnetlib/validator/admin/api/springContext-validator.properties	(revision 47450)
@@ -0,0 +1,49 @@
+# the address where validator is running and is accessible from the rest of the web
+services.validator.baseUrl = http://${container.hostname}:${container.port}/${container.context}
+
+# the email of the administrator
+# he will receive all the automatic bug reports and feedback created
+services.validator.adminEmail = nikonas@di.uoa.gr
+
+# the private key used for signing the direct login links from the OpenAIRE portal
+services.validator.portallogin.key = 568345
+
+
+# If set to true then, when the server is stopped and restarted, all jobs that haven't finished for any reason will restart
+# If set to false then only jobs that stopped gracefully due to a previous server restart will be restarted
+# Unless the server has stopped unexpectedly and you are now restarting it, this setting must be left to false
+services.validator.jobs.totalRestart = false
+
+# the mailhost for the mail service
+services.validator.mail.host = smtp.gmail.com
+# the port where the mail service is running
+services.validator.mail.port = 465
+# the address that appears in the from field in the mails send by the validator
+services.validator.mail.fromAddress = no-reply@openaire.eu
+# the reply-to field value in the mails send by the validator
+services.validator.mail.replyToAddress = no-reply@openaire.eu
+# the username of the account used to login in the mail server
+services.validator.mail.username = test.openaire@gmail.com
+# the password of the account used to login in the mail server
+services.validator.mail.password = ^($*@$)*!$
+# if authentication should take place
+# if set to false username and password is not needed
+services.validator.mail.authenticate = true
+# is set to yes then all mails will not be sent to their targets but to the address specified in services.validator.mail.overrideEmail
+services.validator.mail.override = false
+# if set to true then no mails are send, they are only logged as a debug message
+services.validator.mail.logonly = false
+# the mode used for the mails send by the validator
+services.validator.mail.mode = ssl
+# used by eu.dnetlib.utils.MailLibrary to control debuggin messages
+services.validator.mail.debug = false
+# if services.validator.mail.override is true then all mails will be send only to this address
+services.validator.mail.overrideEmail = nikonas@di.uoa.gr
+# a comma-seperated list of address that will receive all mails about validations and repo registrations
+services.validator.mail.specialRecipients = nikonas@di.uoa.gr
+
+# a comma-seperated list of addresses that have the ability to register repos without the need for validation and registration
+services.validator.repoRegistration.override = nikonas@di.uoa.gr
+
+# do not change
+services.validator.registration.validationSet = OpenAIRE For Literature Repositories
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/images/error_icon_24.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/images/error_icon_24.png
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/images/error_icon_24.png	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/images/error_icon_24.png	(revision 47450)

Property changes on: modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/images/error_icon_24.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/images/re3data.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/images/re3data.png
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/images/re3data.png	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/images/re3data.png	(revision 47450)

Property changes on: modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/images/re3data.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/images/menu_dropdown_level1_parent_blue.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/images/menu_dropdown_level1_parent_blue.png
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/images/menu_dropdown_level1_parent_blue.png	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/images/menu_dropdown_level1_parent_blue.png	(revision 47450)

Property changes on: modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/images/menu_dropdown_level1_parent_blue.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/images/OpenAIREplus_logo.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/images/OpenAIREplus_logo.png
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/images/OpenAIREplus_logo.png	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/images/OpenAIREplus_logo.png	(revision 47450)

Property changes on: modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/images/OpenAIREplus_logo.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/images/tick.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/images/tick.png
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/images/tick.png	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/images/tick.png	(revision 47450)

Property changes on: modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/images/tick.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/images/error_24.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/images/error_24.png
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/images/error_24.png	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/images/error_24.png	(revision 47450)

Property changes on: modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/images/error_24.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/resources/web-texts.properties
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/resources/web-texts.properties	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/resources/web-texts.properties	(revision 47450)
@@ -0,0 +1,227 @@
+site.title = Validator Admin Panel
+site.slogan = Tools for validator administration
+
+general.unblock = Please make sure that you can accept mails from
+
+menu.home = Home
+menu.register = Join OpenAIRE
+menu.validate = Test Compatibility
+menu.account = My Account
+menu.about = Help
+menu.account.login = Sign In
+menu.account.registration.title = New User?
+menu.account.registration = Register Now!
+menu.account.logout = Logout
+menu.account.edit = My Account | 
+menu.about.feedback = Send Feedback
+menu.about.faq = FAQ
+menu.about.help = Help Guides
+menu.admin = Admin Panel
+
+homepage.welcome = Welcome to Validator Administration Panel!
+instructions.welcome = How to Join OpenAIRE
+instructions.message = <div class="entry"> <ol> <li> <b>Do you wish your repository or journal to be a part of OpenAIRE?</b> <ul> <li>If you are a new user, start by <a href="go2login.action">creating an account</a>.<br> If you have previously registered in the <a href="http://www.openaire.eu" target="_blank">main OpenAIRE portal</a>, you can use the same account. </li> </ul> <br> </li> <li> <b>Register your repository in <a class="external" href="http://www.opendoar.org/" target="_blank">OpenDOAR</a></b> <i>(this step does not apply for journals)</i> <ul> <li>OpenDOAR is an authoritative worldwide directory of academic open access repositories.</li> </ul> </li> <br> <li> <b>Make your repository/journal OpenAIRE compliant by implementing the <a href="http://guidelines.openaire.eu" class="external" target="_blank" >OpenAIRE Guidelines</a> </b> <ul> <li>If your repository/journal currently has no OpenAIRE records, you will need to create a test record as proof of correct implementation of the guidelines.</li> <li>Create an openaire set and insert your OpenAIRE records in it.</li> <li>If you used a test record, you will need to keep it until your repository/journal is successfully added as OpenAIRE compliant (step 5). Then you can safely delete it.</li> <li>You can find an example of an OpenAIRE compliant record <a href="jsps/manuals/example_record.txt" target="_blank">here</a>.</li> </ul> </li> <br> <li> <b>Test Compatibility</b> <ul> <li>After you have made some progress in implementing the guidelines you should <a href="populateRules.action">run a Compatibility test</a>.</li> <li>Enter the OAI-PMH base URL of your repository/journal and choose to test your repository against the OpenAIRE rule set. Aim for a score of 100, which will be sufficient to allow your repository to join OpenAIRE.</li> <li>After running the test you can <a href="prepareJobBrowsing.action">browse the results</a>. Please note that the results are updated periodically, and the whole test might take some time to finish.</li> </ul> </li> <br> <li> <b>Join OpenAIRE</b> <ul> <li>Now your repository/journal is ready to Join OpenAIRE!</li> <li><i>If you want to add a <b>literature repository</b></i>, click <a href="populateDoarList.action?mode=opendoar" target="_blank">here</a> and locate your repository. Add and correct any details in the form and click submit.<br> <i>If you want to add a <b>data repository</b></i>, click <a href="populateDoarList.action?mode=re3data" target="_blank">here</a> and locate your repository. Add and correct any details in the form and click submit.<br><i>If you want to add a <b>journal</b></i>, click <a href="prepareRepoRegistration.action?mode=journal" target="_blank">here</a>, fill in the form, and click submit.<br> <i>If you want to add an <b>aggregator</b></i>, click <a href="prepareRepoRegistration.action?mode=aggregator" target="_blank">here</a>, fill in the form, and click submit.</li> <li>After a short compatibility test against the OpenAIRE rule set, your repository will be ready to join OpenAIRE.</li> <li>An email will be sent to the repository administrator to confirm this request. Please make sure you have contacted them before registering.</li> <li>If the compatibility test does not succeed, you will be unable to join OpenAIRE until you correct all the errors that are found. Then you must re-submit your request (step 5).</li> </ul> </li> </ol> <p> For more information check the <a href="https://www.openaire.eu/support/faq#moofaqCat-19" target="_blank">FAQ</a> and our detailed <a href="jsps/manuals/user-manual.pdf" target="_blank">help guide</a>.<br> If you need further assistance please contact us through the <a href="https://www.openaire.eu/support/helpdesk" target="blank" class="help"> OpenAIRE Helpdesk</a>. </p><p><i>The validator is a customizable tool that may be installed and operated in various aggregating environments. <br/><a href="mailto:natalia@di.uoa.gr" class="icon-mail">Click here</a> to contact us and receive more information.</i></p> </div>
+homepage.admin.message = You have logged-in using an administrator email. For information on how to create new rules, new rule-sets, and for the various other functionalities, please refer to the <a href="jsps/manuals/administrator-manual.pdf">Administrator Manual</a>.
+homepage.message = You can view rules, rule-sets, job statistics and request changes to rules/rulesets.
+
+
+registration.title = User Registration
+registration.email = E-mail
+registration.password = Password
+registration.repassword = Re-enter password
+registration.successful = <span>An activation e-mail has been sent to the e-mail address you specified. Please follow the link included in that e-mail to activate your account.</span>
+registration.mail.subject = OpenAIRE Account Activation
+registration.mail.message = Please follow this link to activate your account
+registration.okAccountActivation = Account activation was successful! You can now log-in using your account details.
+registration.okAccountAlreadyActivation = Your account is already activated! You can log-in using your account details.
+registration.description = Register to use the OpenAIRE repository manager services
+registration.rememberme = Remember me
+registration.ldap.message = Your email address will be used for signing in the validator service.<br/>For the rest of the OpenAIRE services available through the openAIRE portal you will have to sign in using your username.
+registration.username = Username
+registration.username_email = Username/Email
+registration.firstName = First Name
+registration.lastName = Last Name
+registration.institution = Institution
+
+
+info.title = Information
+
+login.title = User Login
+login.forgotpassword = Forgot your password?
+login.notActivated = Your account has not been activated. Please check your mailbox again and follow the instructions found in the activation email.
+login.incorrectCreds = The credentials you entered are incorrect
+login.userNotExists = The username you specified doesn't have an associated account. You should consider registering it first.
+login.description = If you have an account
+login.overview = This service uses the same sign-in mechanism as the OpenAIRE portal so you can use the same credentials.
+
+forgotPassword.title = Reset Password
+forgotPassword.message = An e-mail will be sent to this address. Please follow the instructions found inside to reset your password.
+forgotPassword.mail.Subject = OpenAIRE Reset Password Request
+forgotPassword.mail.Body1 = To complete your password reset please follow this link
+forgotPassword.mail.Body2 = Security Code
+
+resetPassword.securityCode = Security Code
+resetPassword.securityCode.message = Enter the security code sent to you through mail.
+resetPassword.wrongSecurityCode = Security Code is incorrect
+resetPassword.success = You have successfully changed your password
+
+corneeded.title = Errors Found
+corneeded.back = Please use the "back" button of your browser to correct these errors
+
+manageJobs.deleteJobs.title = Delete Jobs
+manageJobs.deleteJobs.success = jobs deleted successfully
+manageJobs.deleteJobs.deleteOld = Delete jobs 
+manageJobs.deleteJobs.whatToDelete = What to delete
+
+manageJobs.sendReports.title = Send Registrations Report
+manageJobs.sendReports.selectDateFrom = Date from
+manageJobs.sendReports.selectDateTo = Date to
+manageJobs.sendReports.selectMonth = Select Month
+manageJobs.sendReports.selectYear = Select Year
+manageJobs.sendReports.success = Registrations Report sent successfully
+
+chooseRuleCategory.title = Choose Rule Category
+
+chooseRuleForEdit.title = Choose Rule
+chooseRuleForEdit.label = Choose Rule to Edit
+chooseRuleForEdit.label2 = Choose Rule to View
+chooseRuleForClone.label = Choose Rule to Clone
+
+addRule.title = Add Rule
+addRule.success = New rule has been added successfully
+addRule.uploadFile = Upload a File
+
+deleteRule.title = Delete Rule
+deleteRule.label = Choose Rule to Delete
+deleteRule.success = Rule has been deleted
+
+home.title = Homepage
+home.login = Sign In
+home.register = Register
+home.browseJobs = Browse Compatibility Test Results
+
+home.manageRules = Rules
+home.manageRules.addRule = Add New Rule
+home.manageRules.editRule = Edit Rule
+home.manageRules.cloneRule = Clone Rule
+home.manageRules.deleteRule = Delete Rule
+home.manageRules.viewRule = View Rule
+
+home.manageRulesets = RuleSets
+home.manageRulesets.createRuleSet = Create RuleSet
+home.manageRulesets.editRuleSet = Edit RuleSet
+home.manageRulesets.deleteRuleSet = Delete RuleSet
+home.manageRulesets.viewRuleSet = View RuleSet
+
+home.manageJobs = Jobs
+home.manageJobs.deleteJobs = Delete Jobs
+home.manageJobs.sendReport = Send Report
+home.manageJobs.viewStats = View Statistics
+
+home.manageUsers = Users
+home.manageUsers.addUser = Add User
+home.manageUsers.editUser = Edit User
+home.manageUsers.makeAdmin = Make Admin
+
+home.logout = Logout
+
+
+editRule.title = Edit Rule
+editRule.title2 = View Rule
+editRule.label = Choose Rule to Edit
+editRule.success = The rule was edited successfully
+
+editUser.title = Edit your account details
+editUser.fname = First Name
+editUser.lname = Last Name
+editUser.inst = Institution
+editUser.success = Your profile has been successfully updated
+
+createRuleSet.title = Create/Edit Rule Set
+createRuleSet.title2 = View Rule Set
+createRuleSet.name = Name
+createRuleSet.shortName = Short Name
+createRuleSet.visibility = Visibility
+createRuleSet.guidelinesAcronym = Guidelines Acronym
+createRuleSet.description = Description
+createRuleSet.rulesContent = Choose Content Rules
+createRuleSet.rulesUsage = Choose Usage Rules
+
+createRuleSet.success = The Set has been created successfully!
+createRuleSets.atLeastOneRule = You must select at least one rule to be added in this set
+
+chooseRuleSet.title = Choose Rule Set
+chooseRuleSet.label = Choose Rule Set
+
+deleteRuleSet.title = Delete Rule Set
+deleteRuleSet.success = Rule Set has been deleted successfully
+
+jobSummary.title = Test Summary
+jobSummary.successes = # Records
+jobSummary.errors = Success
+
+sidebar.toolbar = Toolbar
+sidebar.homepage = Homepage
+
+ruleSetInfo.name = Name
+ruleSetInfo.description = Description
+ruleSetInfo.jobType = Available in tests of type: 
+ruleSetInfo.message = Here you can find information on the rules contained in the chosen rule set. <div class="note"><h3 style="margin-left: -11px;">Definitions</h3><ul style="margin-left: -50px;"><li> Mandatory (M) = the field must always be present in the metadata record. An empty element is not allowed.</li> <li>Mandatory when applicable (MA) = when the value of the field can be obtained it must be present in the metadata record.</li> <li> Recommended (R) = the use of the field is recommended.</li> <li>Optional (O) = it is not important whether the element is used or not.</li></ul></div>
+ruleSetInfo.title = Rule Set Information
+ruleSetInfo.DRIVER = The DRIVER rule set checks the compatibility of your repository with the <a href="http://www.driver-support.eu/documents/DRIVER_Guidelines_v2_Final_2008-11-13.pdf">DRIVER guidelines</a>
+ruleSetInfo.openAIRE = The openAIRE rule set checks the compatibility of your repository with the <a href="http://www.openaire.eu/en/about-openaire/news-a-events/184-openaire-releases-version-10-of-the-openaire-guidelines.html">openAIRE guidelines</a>
+
+feedback.title = Send us your feedback
+feedback.message = Message
+feedback.reason = Reason
+feedback.loggedin = Please note that you must be logged-in to send a message using this form.
+feedback.success = Thank you for your message!
+
+help = Help
+help.addOaiContent.title = Adding an OAI-Content Validation
+help.addOaiContent.message = To add a new validation: <br>1. Select the base URL of the repository you want to validate. Please note that you need to have registered the repository first, and the administrator must have activated its registration.<br>2. Insert the number of records you want to validate.<br>3. Choose if you want the records to be selected randomly from those found in the repository, or in the order that the repository lists them.<br>4. If you want to validate only the records belonging to a particular set, insert the name of the set.<br>5. Either choose a predefined rule-set or manually choose the rules you want to apply.<br><br>You can view a rule set or an individual rule by using the toolbar on the left. For more information please refer to the <a href="jsps/manuals/user-manual.pdf">User Manual</a>, in the section <i>OAI Content Validation</i>.
+help.addOaiUsage.title = Adding an OAI-Usage Validation
+help.addOaiUsage.message = To add a new validation: <br>1. Select the base URL of the repository you want to validate. Please note that you need to have registered the repository first, and the administrator must have activated its registration.<br>2. Either choose a predefined rule-set or manually choose the rules you want to apply.<br><br>You can view a rule set or an individual rule by using the toolbar on the left. For more information please refer to the <a href="jsps/manuals/user-manual.pdf">User Manual</a>, in the section <i>OAI Usage Validation</i>.
+help.addRule.title = Adding a New Rule
+help.addRule.message =
+help.browseJobs.title = Browsing Validations
+help.browseJobs.message = Here you can browse all the past and current validations you have submitted. Please note that the results of an ongoing validation are not update in real-time, but only after the validation has finished its execution completely. To see a summary of the validation click on <i>Show Summary</i>. If you want more details about each task that was executed, you may click on <i>Show Details</i> though this is generally not neccessary. For more information please refer to the <a href="jsps/manuals/user-manual.pdf">User Manual</a>, in the section <i>Browsing Validations</i>.
+help.chooseJobCategory.title = Choosing a Validation Category
+help.chooseJobCategory.message = 
+help.chooseRuleCategory.title = Choosing a Rule Category
+help.chooseRuleCategory.message =
+help.chooseRuleCategory.type.title = Rule Type
+help.chooseRuleCategory.type.message =
+help.chooseRuleForEdit.title = Choosing a Rule
+help.chooseRuleForEdit.message =
+help.chooseRuleSet.title = Choosing a Rule Set
+help.chooseRuleSet.message =
+help.chooseRuleSetForDeletion.title = Choosing a Rule Set
+help.chooseRuleSetForDeletion.message =
+help.createRuleSet.title = Viewing a Rule Set
+help.createRuleSet.message = You can view the <i>name</i> of the Rule Set, as well as the rules that it contains (the ones with a blue background).
+help.deleteRule.title = Deleting a Rule
+help.deleteRule.message =
+help.editRule.title = Viewing a Rule
+help.editRule.message = When you view a rule you will be presented with many fields describing its functionality. For general purposes, the fields you must focus on are <i>name</i> and <i>description</i>. If you would like to find out what the rest of the fields mean, you must refer to the <a href="jsps/manuals/administrator-manual.pdf">administrator manual</a>.
+help.jobDetails.title = Viewing the Details of a Validation
+help.jobDetails.message = Here you can review details about each task of a validation. Each row refers to a certain task and you can see on which rule was used, which record it was applied on and if it was successful or not. Please note that retrieving the details of a validation can be a time-consuming process for large validations, and viewing a validation summary is generally sufficient. For more information please refer to the <a href="jsps/manuals/user-manual.pdf">User Manual</a>, in the section <i>Viewing Validation Details</i>.
+help.jobSummary.title = Viewing the Summary of a Validation
+help.jobSummary.message = Here you can review a summary of the validation results. Each row refers to a certain validation rule and you can see how many of the records were successfully validated. For the records that did not validate successfully, links are provided to their oai-dc metadata representation. For more information please refer to the <a href="jsps/manuals/user-manual.pdf">User Manual</a>, in the section <i>Viewing a Validation Summary</i>. 
+help.login.title = Logging in
+help.login.message =
+help.registration.title = Registering
+help.registration.message =
+help.repoRegistration.title = Registering a Repository
+help.repoRegistration.message = Before you can start a validation, you have to register the repository you want to validate (unless it is already registered by someone else). To do this, you must fill in it\''s base URL. Automatically an e-mail will be send to the repository\''s administrator containing an activation link. As soon as the administrator activates the registration, you will be able to start validations for this repository.
+help.resetPassword.title = Reseting your Password
+help.resetPassword.message =
+help.generic = <p>For help adding your repository/journal in OpenAIRE, please follow <a href="help.action">these instructions</a></p><p>For more advanced uses, you can find detailed information and step-by-step guides in the <a class="download" href="jsps/manuals/user-manual.pdf">User Manual</a></p><p>&nbsp;</p><p><i>The validator is a customizable tool that may be installed and operated in various aggregating environments. <br/><a href="mailto:natalia@di.uoa.gr" class="icon-mail">Click here</a> to contact us and receive more information.</i></p>
+help.newvalidation =<p><h3>Select repository/journal</h3> Select from the list, or enter the base OAI URL of the repository/journal. The repository''s/journal''s published sets are exposed in a later stage and you may select one for the compatibility tests.  </p> <p><h3>Select guidelines</h3> You may apply two types of compatibility tests on your repository: <ul style="text-aling:left"> <li>Content: specific to the content/format of the dc fields</li> <li>Usage: specific to the implementation of OAI-PMH</li> </ul> You may select from a predifined set of rules (OpenAIRE for Literature Repositories, OpenAIRE for Data Archives) or customize them according to your needs.  </p> <p><h3>Select parameters</h3> You may define an upper limit on the # of records tested. This is highly recommended for first time users, or when re-checking after the implementation of automated changes.  </p> <p> Select one of the repository''s/journal''s exposed sets.  </p><p> You may also group your results by a specific field. This is quite useful when validating an aggregator and you know in advance which is the field that distinguished among data sources. </p><p>For further assistance please contact the <a href="https://www.openaire.eu/support/helpdesk" target="_blank" class="external">OpenAIRE helpdesk</a>.</p>
+help.browsevalidations = <div class="download"><a href="jsps/manuals/user-manual.pdf" target="blank">Instructions manual</a></div> <p> <strong>TYPE:</strong> Content or Usage<br/> <strong>STATUS: </strong>Working / Stopped / Finished<br/> <strong>SCORE: </strong> <a href="score.action">click here</a> to find more<br/> <strong>SUBMITTED: </strong>time of submission<br/> <strong>DURATION: </strong>time test took to finish<br/> <strong>REPOSITORY: </strong>tested repository/journal<br/> <strong>GUIDELINES: </strong>guidelines used for testing<br/> <strong>REPORTS: </strong>comprehensive summary of the compatibility test results<br/> </p> <p>For further assistance please contact the <a href="https://www.openaire.eu/support/helpdesk" target="_blank" class="external">OpenAIRE helpdesk</a>.</p>
+help.jobsummary= <div class="download"><a href="jsps/manuals/user-manual.pdf" target="_blank">Instructions manual</a></div> <p>For further assistance please contact the <a href="https://www.openaire.eu/support/helpdesk" target="_blank" class="external">OpenAIRE helpdesk</a>.</p>
+help.registerRepo =  <p>Use the form on the right to add your repository or journal in OpenAIRE. If you want to find more information about this process <a href="jsps/manuals/user-manual.pdf" target="_blank">click here</a>.</p> <div class="alert">The official repository/journal administrator (his/her email address being retrieved from the OAI-PMH verb <b>Identify</b>) will be contacted and informed about registration request. So please make sure that you are either this person or have access to the email address, or that you have notified them.</div> For any problems or questions please contact the <a href="https://www.openaire.eu/support/helpdesk" target="_blank" class="external">OpenAIRE helpdesk</a>.
+help.chooseRepoForEdit = <p>You have access to edit one of the following repositories/journals listed on the right.</p> <p>For any problems or questions please contact the <a href="https://www.openaire.eu/support/helpdesk" target="_blank" class="external">OpenAIRE helpdesk</a>.</p>
+help.editRepoDnet = <p>Use the form on the right to update the repository/journal information.</p> <p>For any problems or questions please contact the <a href="https://www.openaire.eu/support/helpdesk" target="_blank" class="external">OpenAIRE helpdesk</a>.</p>
+help.admin=<div class="download"> For more information read our detailed <a href="jsps/manuals/administrator-manual.pdf" target="_blank">help guide</a>.</div>
+footer.text = &copy; 2010&nbsp;-&nbsp;2015 OpenAIRE
\ No newline at end of file
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/resources/web-error-texts.properties
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/resources/web-error-texts.properties	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/resources/web-error-texts.properties	(revision 47450)
@@ -0,0 +1,21 @@
+compulsoryField = This field must have a value
+identicalPasswords = Passwords must be identical
+notValidEmail = Invalid email adress
+userAlreadyExists = This user already exists
+noActivationId = The activation id was not specified
+numericalValue = This field must have a numerical value
+recordsLessThan1 = At least 1 record must be used
+invalidBaseUrl = Invalid base Url
+alreadyRepo = Repository already exists. You may need to activate it.
+noAdminEmail = This repository does not provide an administrator email. Registration cannot continue.
+notBelongsToYou = This job doesn't belong to you or doesn't exist
+uknownError = Unknown Error
+requiredFieldNoValue = A required field(*) has no value
+wrongFieldValue = This field has an invalid value
+jobError = Your repository failed to validate. An automatic error report has been sent to the system administrator. You will soon be contacted with the reason for the error and any further actions that might be needed.
+generic.error = An unexpected error has occurred and the administrator was automatically notified. Please try again later.
+login.manual = Please login manually using your account from the OpenAIRE portal
+registration.notOpenDoar = The registration of repositories not in OpenDoar is disabled
+job.noTasks = It appears that this test is empty. Likely causes are the following: <br><br>1. The test is still running <br>2. The chosen set didn't contain any records (e.g., the ec_fundedresources set is empty) <br>3. The test contained no rules <br>4. An unexpected error occurred and might be resolved if you try again later <br><br>If you think that none of the above reasons applies, please report this issue using <a href="http://www.openaire.eu/en/support/helpdesk?view=detail&cid[0]=-1">this form</a>.
+registration.modeNotSelected = It appears that you haven\'t chosen the correct type of repository. Please choose 'JOIN OPENAIRE' from main menu and choose the right one.
+registration.noAggregated = It appears that you repository is part of an aggregator. Your repository will be automatically registered when the aggregator registers in OpenAIRE. Aggregator Name
\ No newline at end of file
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/chooseRuleSet.jsp
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/chooseRuleSet.jsp	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/chooseRuleSet.jsp	(revision 47450)
@@ -0,0 +1,49 @@
+<%@ page contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<%@ taglib prefix="s" uri="/struts-tags"%>
+<html>
+<head>
+<link href="jsps/favicon.ico" rel="shortcut icon" type="image/x-icon" />
+<link href="jsps/style.css" rel="stylesheet" type="text/css" media="screen" />
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title><s:text name="chooseRuleSet.title"/></title>
+</head>
+<body class="left">
+<div id="wrapper">
+	<jsp:include page="menu.jsp"/>
+	<div id="page">
+	<div id="page-bgtop">
+	<div id="middle">
+            <div class="middle-b">
+                <div class="background">
+			 <div id="left">
+                              <div id="left_container" >
+                                   <h2 class="helpHdr">Info</h2>
+                                   <s:text name="help.admin"/>
+                              </div>
+                         </div>
+                        <div id="main">
+                        <div id="main_container" class="clearfix">
+			<div id="content">
+				<h2 class="title"><s:text name="chooseRuleSet.title"/></h2>
+                                <div class="entry">
+                                        <s:form action="getRulesForSet">
+                                                <s:select name="setId" list="sets" listValue="name" listKey="id" key="chooseRuleSet.label"/>
+                                                <s:submit cssClass="button-default"/>
+                                        </s:form>
+                                </div>
+			</div>
+			</div>
+			</div>
+		</div>
+	</div>
+	</div>
+	</div>
+
+    <div id="footer">
+                <jsp:include page="footer.jsp"/>
+        </div>
+</div>
+</div>
+</body>
+</html>
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/images/checkmark_28.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/images/checkmark_28.png
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/images/checkmark_28.png	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/images/checkmark_28.png	(revision 47450)

Property changes on: modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/images/checkmark_28.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/images/zebra_list.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/images/zebra_list.png
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/images/zebra_list.png	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/images/zebra_list.png	(revision 47450)

Property changes on: modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/images/zebra_list.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/images/tick1.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/images/tick1.png
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/images/tick1.png	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/images/tick1.png	(revision 47450)

Property changes on: modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/images/tick1.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/editRule.jsp
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/editRule.jsp	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/editRule.jsp	(revision 47450)
@@ -0,0 +1,121 @@
+<%@ page contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<%@ taglib prefix="s" uri="/struts-tags"%>
+<html>
+<head>
+<link href="jsps/favicon.ico" rel="shortcut icon" type="image/x-icon" />
+<link href="jsps/style.css" rel="stylesheet" type="text/css" media="screen" />
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<s:if test="%{#session.isAdmin != null && #session.isAdmin.equals(\"true\")}">
+        <s:set name="isAdmin" value="true"/>
+</s:if>
+<s:else>
+        <s:set name="isAdmin" value="false"/>
+</s:else>
+<title>
+        <s:if test="%{#isAdmin}">
+                <s:text name="editRule.title"/>
+        </s:if>
+        <s:else>
+                <s:text name="editRule.title2"/>
+        </s:else>
+</title>
+
+</head>
+<body class="left">
+<div id="wrapper">
+	<jsp:include page="menu.jsp"/>
+	<div id="page">
+	<div id="page-bgtop">
+	<div id="middle">
+            <div class="middle-b">
+                <div class="background">
+			 <div id="left">
+                              <div id="left_container" >
+                                   <h2 class="helpHdr">Info</h2>
+                                   <s:text name="help.admin"/>
+                              </div>
+                         </div>
+                        <div id="main">
+                        <div id="main_container" class="clearfix">
+			<div id="content">
+				<s:if test="%{#isAdmin}">
+                                        <h2 class="title"><s:text name="editRule.title"/></h2>
+                                </s:if>
+                                <s:else>
+                                        <h2 class="title"><s:text name="editRule.title2"/></h2>
+                                </s:else>
+                                <div class="entry">
+                                        <s:form action="editRule">
+                                        		<s:hidden name="funct"/>
+                                                <s:hidden name="rule.id" value="%{rule.id}"/>
+                                                <s:hidden name="rule.for_cris"/>
+                                                <s:iterator value="ruleValues" var="ruleValue">
+                                                        <s:set name="label" value="%{#ruleValue.fieldName}"/>
+                                                        <s:set name="dscr" value="%{#ruleValue.fieldName+\".description\"}"/>
+                                                        <s:set name="tltp" value="%{#ruleValue.fieldName+\".name\"}"/>
+                                                        <s:if test="%{#label.equals(\"xmlvocabulary_rule.terms\") || #label.equals(\"rules.description\")}">
+                                                                <s:textarea name="inputs" value="%{#ruleValue.fieldValue}" title="%{getText(#dscr)}" label="%{getText(#tltp)}" cols="50" rows="10" disabled='%{!#isAdmin}'/>
+                                                        </s:if>
+                                                        <s:elseif test="%{#label.equals(\"xmlcrisclassvocabulary_rule.terms\") || #label.equals(\"xmlcrisreferentialintegrity_rule.terms\")}">
+                                                                <s:textarea name="inputs" value="%{#ruleValue.fieldValue}" title="%{getText(#dscr)}" label="%{getText(#tltp)}" cols="50" rows="10" disabled='%{!#isAdmin}'/>
+                                                        </s:elseif>
+                                                        <s:elseif test="%{#label.equals(\"xmlvocabulary_rule.terms_type\")}">
+                                                                <s:select label="%{getText(#tltp)}" name="inputs" value="%{#ruleValue.fieldValue}" list="#{'whitelist':'whitelist', 'blacklist':'blacklist'}" title="%{getText(#dscr)}"/>
+                                                        </s:elseif>
+                                                        <s:elseif test="%{#label.equals(\"rules.mandatory\")}">
+                                                                <s:select label="%{getText(#tltp)}" name="inputs" value="%{rule.mandatory}" list="#{'true':'true', 'false':'false'}" title="%{getText(#dscr)}"/>
+                                                        </s:elseif>
+                                                        <s:elseif test="%{#label.equals(\"rules.cris_entity\")}">
+                                                                <s:select label="%{getText(#tltp)}" name="inputs" list="entityTypes" value="%{rule.entity_type}" title="%{getText(#dscr)}"/>
+                                                        </s:elseif>
+														<s:elseif test="%{#label.matches('.*success')}">
+															<s:select label="%{getText(#tltp)}" name="inputs" value="%{#ruleValue.fieldValue}" list="#{'>0':'>0', 'all':'all', '0':'0', '1':'1'}" title="%{getText(#dscr)}"/>
+														</s:elseif>
+                                                        <s:elseif test="%{#label.equals(\"chain_rule.type\")}">
+                                                                <s:select label="%{getText(#tltp)}" name="inputs" value="%{#ruleValue.fieldValue}" list="#{'or':'or', 'and':'and', 'horn':'horn'}" title="%{getText(#dscr)}"/>
+                                                        </s:elseif>
+                                                        <s:elseif test="%{#label.equals(\"chain_rule.rule_1\")}">
+                                                                <s:select name="inputs" list="rules" listValue="name" listKey="id"  value="%{#ruleValue.fieldValue}" label="%{getText(#tltp)}" title="%{getText(#dscr)}"/>
+                                                        </s:elseif>
+                                                        <s:elseif test="%{#label.equals(\"chain_rule.rule_2\")}">
+                                                                <s:select name="inputs" list="rules" listValue="name" listKey="id"  value="%{#ruleValue.fieldValue}" label="%{getText(#tltp)}" title="%{getText(#dscr)}"/>
+                                                        </s:elseif>
+                                                        <s:elseif test="%{#label.equals(\"rules.provider_information\")}">
+<%-- 															<s:if test="%{rule.job_type.equals(\"OAI Usage\")}"> --%>
+															<s:textfield name="inputs" value="%{#ruleValue.fieldValue}" title="%{getText(#dscr)}" label="%{getText(#tltp)}" disabled='%{!#isAdmin}'/>
+<%--                                                         	</s:if> --%>
+														</s:elseif>
+                                                        <s:else>
+                                                                <s:textfield name="inputs" value="%{#ruleValue.fieldValue}" title="%{getText(#dscr)}" label="%{getText(#tltp)}" disabled='%{!#isAdmin}'/>
+                                                        </s:else>
+                                                </s:iterator>
+<%--                                                 <s:textfield name="rule.entity_type" label="%{getText(\"jobs.entity_type.name\")}" title="%{getText(\"jobs.entity_type.description\")}" /> --%>
+                                                <s:textfield name="rule.job_type" label="%{getText(\"jobs.job_type.name\")}" title="%{getText(\"jobs.job_type.description\")}" readonly='true'/>
+                                                <s:textfield name="rule.type" label="%{getText(\"rules.type.name\")}" title="%{getText(\"rules.type.description\")}" readonly='true'/>
+                                                <s:if test="%{#isAdmin}">
+                                                 	<s:if test="%{funct.equals(\"edit\")}">
+                                                        <s:submit value="Update" cssClass="button-default"/>
+                                                    </s:if>
+                                                    <s:elseif test="%{funct.equals(\"clone\")}">
+                                                    	<s:submit value="Clone" cssClass="button-default"/>
+                                                    </s:elseif>
+                                                </s:if>
+                                        </s:form>
+                                </div>
+
+			</div>
+			</div>
+			</div>
+		</div>
+	</div>
+	</div>
+	</div>
+
+    <div id="footer">
+                <jsp:include page="footer.jsp"/>
+        </div>
+</div>
+</div>
+</body>
+</html>
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/chooseRuleForClone.jsp
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/chooseRuleForClone.jsp	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/chooseRuleForClone.jsp	(revision 47450)
@@ -0,0 +1,50 @@
+<%@ page contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<%@ taglib prefix="s" uri="/struts-tags"%>
+<html>
+<head>
+<link href="jsps/favicon.ico" rel="shortcut icon" type="image/x-icon" />
+<link href="jsps/style.css" rel="stylesheet" type="text/css" media="screen" />
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title><s:text name="chooseRuleForEdit.title"/></title>
+</head>
+<body class="left">
+<div id="wrapper">
+	<jsp:include page="menu.jsp"/>
+	<div id="page">
+	<div id="page-bgtop">
+	<div id="middle">
+            <div class="middle-b">
+                <div class="background">
+			 <div id="left">
+                              <div id="left_container" >
+                                   <h2 class="helpHdr">Info</h2>
+                                   <s:text name="help.admin"/>
+                              </div>
+                         </div>
+                        <div id="main">
+                        <div id="main_container" class="clearfix">
+			<div id="content">
+				<h2 class="title"><s:text name="chooseRuleForEdit.title"/></h2>
+                               <div class="entry">
+					<s:form action="prepareEditRule">
+                           <s:select name="ruleId" list="rules" listValue="name" listKey="id"  key="chooseRuleForClone.label"/>
+                           <s:hidden name="funct" value="clone"/>
+                           <s:submit cssClass="button-default"/>
+                    </s:form>
+                                </div>
+			</div>
+			</div>
+			</div>
+		</div>
+	</div>
+	</div>
+	</div>
+
+    <div id="footer">
+                <jsp:include page="footer.jsp"/>
+        </div>
+        </div>
+</div>
+</body>
+</html>
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/images/EC_logo_blue_multi_horizontal.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/images/EC_logo_blue_multi_horizontal.png
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/images/EC_logo_blue_multi_horizontal.png	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/images/EC_logo_blue_multi_horizontal.png	(revision 47450)

Property changes on: modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/images/EC_logo_blue_multi_horizontal.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/images/box_download.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/images/box_download.png
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/images/box_download.png	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/images/box_download.png	(revision 47450)

Property changes on: modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/images/box_download.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/images/box_info.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/images/box_info.png
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/images/box_info.png	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/images/box_info.png	(revision 47450)

Property changes on: modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/images/box_info.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/images/opendoar.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/images/opendoar.png
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/images/opendoar.png	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/images/opendoar.png	(revision 47450)

Property changes on: modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/images/opendoar.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/images/exclamation-icon.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/images/exclamation-icon.png
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/images/exclamation-icon.png	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/images/exclamation-icon.png	(revision 47450)

Property changes on: modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/images/exclamation-icon.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/images/list_check.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/images/list_check.png
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/images/list_check.png	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/images/list_check.png	(revision 47450)

Property changes on: modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/images/list_check.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/images/error.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/images/error.png
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/images/error.png	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/images/error.png	(revision 47450)

Property changes on: modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/images/error.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/images/BG_Footer_f5.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/images/BG_Footer_f5.png
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/images/BG_Footer_f5.png	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/images/BG_Footer_f5.png	(revision 47450)

Property changes on: modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/images/BG_Footer_f5.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/images/info-left.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/images/info-left.png
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/images/info-left.png	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/images/info-left.png	(revision 47450)

Property changes on: modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/images/info-left.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/images/readmore.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/images/readmore.png
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/images/readmore.png	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/images/readmore.png	(revision 47450)

Property changes on: modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/images/readmore.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/images/BG_Header_f5.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/images/BG_Header_f5.png
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/images/BG_Header_f5.png	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/images/BG_Header_f5.png	(revision 47450)

Property changes on: modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/images/BG_Header_f5.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/images/inprogress.jpg
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/images/inprogress.jpg
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/images/inprogress.jpg	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/images/inprogress.jpg	(revision 47450)

Property changes on: modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/images/inprogress.jpg
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/images/pluslogo_sm.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/images/pluslogo_sm.png
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/images/pluslogo_sm.png	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/images/pluslogo_sm.png	(revision 47450)

Property changes on: modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/images/pluslogo_sm.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/images/compliant.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/images/compliant.png
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/images/compliant.png	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/images/compliant.png	(revision 47450)

Property changes on: modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/images/compliant.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/images/line_dotted.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/images/line_dotted.png
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/images/line_dotted.png	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/images/line_dotted.png	(revision 47450)

Property changes on: modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/images/line_dotted.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/images/icon_download.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/images/icon_download.png
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/images/icon_download.png	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/images/icon_download.png	(revision 47450)

Property changes on: modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/images/icon_download.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/images/list_star.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/images/list_star.png
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/images/list_star.png	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/images/list_star.png	(revision 47450)

Property changes on: modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/images/list_star.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/images/list_arrow.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/images/list_arrow.png
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/images/list_arrow.png	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/images/list_arrow.png	(revision 47450)

Property changes on: modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/images/list_arrow.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/images/arrow_left.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/images/arrow_left.png
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/images/arrow_left.png	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/images/arrow_left.png	(revision 47450)

Property changes on: modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/images/arrow_left.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/trunk/src/main/webapp/jsps/js/mootools-1.2.5-core-nc.js
===================================================================
--- modules/uoa-validator-admin/trunk/src/main/webapp/jsps/js/mootools-1.2.5-core-nc.js	(nonexistent)
+++ modules/uoa-validator-admin/trunk/src/main/webapp/jsps/js/mootools-1.2.5-core-nc.js	(revision 47450)
@@ -0,0 +1,4288 @@
+/*
+---
+
+name: Core
+
+description: The core of MooTools, contains all the base functions and the Native and Hash implementations. Required by all the other scripts.
+
+license: MIT-style license.
+
+copyright: Copyright (c) 2006-2008 [Valerio Proietti](http://mad4milk.net/).
+
+authors: The MooTools production team (http://mootools.net/developers/)
+
+inspiration:
+  - Class implementation inspired by [Base.js](http://dean.edwards.name/weblog/2006/03/base/) Copyright (c) 2006 Dean Edwards, [GNU Lesser General Public License](http://opensource.org/licenses/lgpl-license.php)
+  - Some functionality inspired by [Prototype.js](http://prototypejs.org) Copyright (c) 2005-2007 Sam Stephenson, [MIT License](http://opensource.org/licenses/mit-license.php)
+
+provides: [MooTools, Native, Hash.base, Array.each, $util]
+
+...
+*/
+
+var MooTools = {
+	'version': '1.2.5',
+	'build': '008d8f0f2fcc2044e54fdd3635341aaab274e757'
+};
+
+var Native = function(options){
+	options = options || {};
+	var name = options.name;
+	var legacy = options.legacy;
+	var protect = options.protect;
+	var methods = options.implement;
+	var generics = options.generics;
+	var initialize = options.initialize;
+	var afterImplement = options.afterImplement || function(){};
+	var object = initialize || legacy;
+	generics = generics !== false;
+
+	object.constructor = Native;
+	object.$family = {name: 'native'};
+	if (legacy && initialize) object.prototype = legacy.prototype;
+	object.prototype.constructor = object;
+
+	if (name){
+		var family = name.toLowerCase();
+		object.prototype.$family = {name: family};
+		Native.typize(object, family);
+	}
+
+	var add = function(obj, name, method, force){
+		if (!protect || force || !obj.prototype[name]) obj.prototype[name] = method;
+		if (generics) Native.genericize(obj, name, protect);
+		afterImplement.call(obj, name, method);
+		return obj;
+	};
+
+	object.alias = function(a1, a2, a3){
+		if (typeof a1 == 'string'){
+			var pa1 = this.prototype[a1];
+			if ((a1 = pa1)) return add(this, a2, a1, a3);
+		}
+		for (var a in a1) this.alias(a, a1[a], a2);
+		return this;
+	};
+
+	object.implement = function(a1, a2, a3){
+		if (typeof a1 == 'string') return add(this, a1, a2, a3);
+		for (var p in a1) add(this, p, a1[p], a2);
+		return this;
+	};
+
+	if (methods) object.implement(methods);
+
+	return object;
+};
+
+Native.genericize = function(object, property, check){
+	if ((!check || !object[property]) && typeof object.prototype[property] == 'function') object[property] = function(){
+		var args = Array.prototype.slice.call(arguments);
+		return object.prototype[property].apply(args.shift(), args);
+	};
+};
+
+Native.implement = function(objects, properties){
+	for (var i = 0, l = objects.length; i < l; i++) objects[i].implement(properties);
+};
+
+Native.typize = function(object, family){
+	if (!object.type) object.type = function(item){
+		return ($type(item) === family);
+	};
+};
+
+(function(){
+	var natives = {'Array': Array, 'Date': Date, 'Function': Function, 'Number': Number, 'RegExp': RegExp, 'String': String};
+	for (var n in natives) new Native({name: n, initialize: natives[n], protect: true});
+
+	var types = {'boolean': Boolean, 'native': Native, 'object': Object};
+	for (var t in types) Native.typize(types[t], t);
+
+	var generics = {
+		'Array': ["concat", "indexOf", "join", "lastIndexOf", "pop", "push", "reverse", "shift", "slice", "sort", "splice", "toString", "unshift", "valueOf"],
+		'String': ["charAt", "charCodeAt", "concat", "indexOf", "lastIndexOf", "match", "replace", "search", "slice", "split", "substr", "substring", "toLowerCase", "toUpperCase", "valueOf"]
+	};
+	for (var g in generics){
+		for (var i = generics[g].length; i--;) Native.genericize(natives[g], generics[g][i], true);
+	}
+})();
+
+var Hash = new Native({
+
+	name: 'Hash',
+
+	initialize: function(object){
+		if ($type(object) == 'hash') object = $unlink(object.getClean());
+		for (var key in object) this[key] = object[key];
+		return this;
+	}
+
+});
+
+Hash.implement({
+
+	forEach: function(fn, bind){
+		for (var key in this){
+			if (this.hasOwnProperty(key)) fn.call(bind, this[key], key, this);
+		}
+	},
+
+	getClean: function(){
+		var clean = {};
+		for (var key in this){
+			if (this.hasOwnProperty(key)) clean[key] = this[key];
+		}
+		return clean;
+	},
+
+	getLength: function(){
+		var length = 0;
+		for (var key in this){
+			if (this.hasOwnProperty(key)) length++;
+		}
+		return length;
+	}
+
+});
+
+Hash.alias('forEach', 'each');
+
+Array.implement({
+
+	forEach: function(fn, bind){
+		for (var i = 0, l = this.length; i < l; i++) fn.call(bind, this[i], i, this);
+	}
+
+});
+
+Array.alias('forEach', 'each');
+
+function $A(iterable){
+	if (iterable.item){
+		var l = iterable.length, array = new Array(l);
+		while (l--) array[l] = iterable[l];
+		return array;
+	}
+	return Array.prototype.slice.call(iterable);
+};
+
+function $arguments(i){
+	return function(){
+		return arguments[i];
+	};
+};
+
+function $chk(obj){
+	return !!(obj || obj === 0);
+};
+
+function $clear(timer){
+	clearTimeout(timer);
+	clearInterval(timer);
+	return null;
+};
+
+function $defined(obj){
+	return (obj != undefined);
+};
+
+function $each(iterable, fn, bind){
+	var type = $type(iterable);
+	((type == 'arguments' || type == 'collection' || type == 'array') ? Array : Hash).each(iterable, fn, bind);
+};
+
+function $empty(){};
+
+function $extend(original, extended){
+	for (var key in (extended || {})) original[key] = extended[key];
+	return original;
+};
+
+function $H(object){
+	return new Hash(object);
+};
+
+function $lambda(value){
+	return ($type(value) == 'function') ? value : function(){
+		return value;
+	};
+};
+
+function $merge(){
+	var args = Array.slice(arguments);
+	args.unshift({});
+	return $mixin.apply(null, args);
+};
+
+function $mixin(mix){
+	for (var i = 1, l = arguments.length; i < l; i++){
+		var object = arguments[i];
+		if ($type(object) != 'object') continue;
+		for (var key in object){
+			var op = object[key], mp = mix[key];
+			mix[key] = (mp && $type(op) == 'object' && $type(mp) == 'object') ? $mixin(mp, op) : $unlink(op);
+		}
+	}
+	return mix;
+};
+
+function $pick(){
+	for (var i = 0, l = arguments.length; i < l; i++){
+		if (arguments[i] != undefined) return arguments[i];
+	}
+	return null;
+};
+
+function $random(min, max){
+	return Math.floor(Math.random() * (max - min + 1) + min);
+};
+
+function $splat(obj){
+	var type = $type(obj);
+	return (type) ? ((type != 'array' && type != 'arguments') ? [obj] : obj) : [];
+};
+
+var $time = Date.now || function(){
+	return +new Date;
+};
+
+function $try(){
+	for (var i = 0, l = arguments.length; i < l; i++){
+		try {
+			return arguments[i]();
+		} catch(e){}
+	}
+	return null;
+};
+
+function $type(obj){
+	if (obj == undefined) return false;
+	if (obj.$family) return (obj.$family.name == 'number' && !isFinite(obj)) ? false : obj.$family.name;
+	if (obj.nodeName){
+		switch (obj.nodeType){
+			case 1: return 'element';
+			case 3: return (/\S/).test(obj.nodeValue) ? 'textnode' : 'whitespace';
+		}
+	} else if (typeof obj.length == 'number'){
+		if (obj.callee) return 'arguments';
+		else if (obj.item) return 'collection';
+	}
+	return typeof obj;
+};
+
+function $unlink(object){
+	var unlinked;
+	switch ($type(object)){
+		case 'object':
+			unlinked = {};
+			for (var p in object) unlinked[p] = $unlink(object[p]);
+		break;
+		case 'hash':
+			unlinked = new Hash(object);
+		break;
+		case 'array':
+			unlinked = [];
+			for (var i = 0, l = object.length; i < l; i++) unlinked[i] = $unlink(object[i]);
+		break;
+		default: return object;
+	}
+	return unlinked;
+};
+
+
+/*
+---
+
+name: Array
+
+description: Contains Array Prototypes like each, contains, and erase.
+
+license: MIT-style license.
+
+requires: [$util, Array.each]
+
+provides: Array
+
+...
+*/
+
+Array.implement({
+
+	every: function(fn, bind){
+		for (var i = 0, l = this.length; i < l; i++){
+			if (!fn.call(bind, this[i], i, this)) return false;
+		}
+		return true;
+	},
+
+	filter: function(fn, bind){
+		var results = [];
+		for (var i = 0, l = this.length; i < l; i++){
+			if (fn.call(bind, this[i], i, this)) results.push(this[i]);
+		}
+		return results;
+	},
+
+	clean: function(){
+		return this.filter($defined);
+	},
+
+	indexOf: function(item, from){
+		var len = this.length;
+		for (var i = (from < 0) ? Math.max(0, len + from) : from || 0; i < len; i++){
+			if (this[i] === item) return i;
+		}
+		return -1;
+	},
+
+	map: function(fn, bind){
+		var results = [];
+		for (var i = 0, l = this.length; i < l; i++) results[i] = fn.call(bind, this[i], i, this);
+		return results;
+	},
+
+	some: function(fn, bind){
+		for (var i = 0, l = this.length; i < l; i++){
+			if (fn.call(bind, this[i], i, this)) return true;
+		}
+		return false;
+	},
+
+	associate: function(keys){
+		var obj = {}, length = Math.min(this.length, keys.length);
+		for (var i = 0; i < length; i++) obj[keys[i]] = this[i];
+		return obj;
+	},
+
+	link: function(object){
+		var result = {};
+		for (var i = 0, l = this.length; i < l; i++){
+			for (var key in object){
+				if (object[key](this[i])){
+					result[key] = this[i];
+					delete object[key];
+					break;
+				}
+			}
+		}
+		return result;
+	},
+
+	contains: function(item, from){
+		return this.indexOf(item, from) != -1;
+	},
+
+	extend: function(array){
+		for (var i = 0, j = array.length; i < j; i++) this.push(array[i]);
+		return this;
+	},
+	
+	getLast: function(){
+		return (this.length) ? this[this.length - 1] : null;
+	},
+
+	getRandom: function(){
+		return (this.length) ? this[$random(0, this.length - 1)] : null;
+	},
+
+	include: function(item){
+		if (!this.contains(item)) this.push(item);
+		return this;
+	},
+
+	combine: function(array){
+		for (var i = 0, l = array.length; i < l; i++) this.include(array[i]);
+		return this;
+	},
+
+	erase: function(item){
+		for (var i = this.length; i--; i){
+			if (this[i] === item) this.splice(i, 1);
+		}
+		return this;
+	},
+
+	empty: function(){
+		this.length = 0;
+		return this;
+	},
+
+	flatten: function(){
+		var array = [];
+		for (var i = 0, l = this.length; i < l; i++){
+			var type = $type(this[i]);
+			if (!type) continue;
+			array = array.concat((type == 'array' || type == 'collection' || type == 'arguments') ? Array.flatten(this[i]) : this[i]);
+		}
+		return array;
+	},
+
+	hexToRgb: function(array){
+		if (this.length != 3) return null;
+		var rgb = this.map(function(value){
+			if (value.length == 1) value += value;
+			return value.toInt(16);
+		});
+		return (array) ? rgb : 'rgb(' + rgb + ')';
+	},
+
+	rgbToHex: function(array){
+		if (this.length < 3) return null;
+		if (this.length == 4 && this[3] == 0 && !array) return 'transparent';
+		var hex = [];
+		for (var i = 0; i < 3; i++){
+			var bit = (this[i] - 0).toString(16);
+			hex.push((bit.length == 1) ? '0' + bit : bit);
+		}
+		return (array) ? hex : '#' + hex.join('');
+	}
+
+});
+
+
+/*
+---
+
+name: String
+
+description: Contains String Prototypes like camelCase, capitalize, test, and toInt.
+
+license: MIT-style license.
+
+requires: Native
+
+provides: String
+
+...
+*/
+
+String.implement({
+
+	test: function(regex, params){
+		return ((typeof regex == 'string') ? new RegExp(regex, params) : regex).test(this);
+	},
+
+	contains: function(string, separator){
+		return (separator) ? (separator + this + separator).indexOf(separator + string + separator) > -1 : this.indexOf(string) > -1;
+	},
+
+	trim: function(){
+		return this.replace(/^\s+|\s+$/g, '');
+	},
+
+	clean: function(){
+		return this.replace(/\s+/g, ' ').trim();
+	},
+
+	camelCase: function(){
+		return this.replace(/-\D/g, function(match){
+			return match.charAt(1).toUpperCase();
+		});
+	},
+
+	hyphenate: function(){
+		return this.replace(/[A-Z]/g, function(match){
+			return ('-' + match.charAt(0).toLowerCase());
+		});
+	},
+
+	capitalize: function(){
+		return this.replace(/\b[a-z]/g, function(match){
+			return match.toUpperCase();
+		});
+	},
+
+	escapeRegExp: function(){
+		return this.replace(/([-.*+?^${}()|[\]\/\\])/g, '\\$1');
+	},
+
+	toInt: function(base){
+		return parseInt(this, base || 10);
+	},
+
+	toFloat: function(){
+		return parseFloat(this);
+	},
+
+	hexToRgb: function(array){
+		var hex = this.match(/^#?(\w{1,2})(\w{1,2})(\w{1,2})$/);
+		return (hex) ? hex.slice(1).hexToRgb(array) : null;
+	},
+
+	rgbToHex: function(array){
+		var rgb = this.match(/\d{1,3}/g);
+		return (rgb) ? rgb.rgbToHex(array) : null;
+	},
+
+	stripScripts: function(option){
+		var scripts = '';
+		var text = this.replace(/<script[^>]*>([\s\S]*?)<\/script>/gi, function(){
+			scripts += arguments[1] + '\n';
+			return '';
+		});
+		if (option === true) $exec(scripts);
+		else if ($type(option) == 'function') option(scripts, text);
+		return text;
+	},
+
+	substitute: function(object, regexp){
+		return this.replace(regexp || (/\\?\{([^{}]+)\}/g), function(match, name){
+			if (match.charAt(0) == '\\') return match.slice(1);
+			return (object[name] != undefined) ? object[name] : '';
+		});
+	}
+
+});
+
+
+/*
+---
+
+name: Function
+
+description: Contains Function Prototypes like create, bind, pass, and delay.
+
+license: MIT-style license.
+
+requires: [Native, $util]
+
+provides: Function
+
+...
+*/
+
+try {
+	delete Function.prototype.bind;
+} catch(e){}
+
+Function.implement({
+
+	extend: function(properties){
+		for (var property in properties) this[property] = properties[property];
+		return this;
+	},
+
+	create: function(options){
+		var self = this;
+		options = options || {};
+		return function(event){
+			var args = options.arguments;
+			args = (args != undefined) ? $splat(args) : Array.slice(arguments, (options.event) ? 1 : 0);
+			if (options.event) args = [event || window.event].extend(args);
+			var returns = function(){
+				return self.apply(options.bind || null, args);
+			};
+			if (options.delay) return setTimeout(returns, options.delay);
+			if (options.periodical) return setInterval(returns, options.periodical);
+			if (options.attempt) return $try(returns);
+			return returns();
+		};
+	},
+
+	run: function(args, bind){
+		return this.apply(bind, $splat(args));
+	},
+
+	pass: function(args, bind){
+		return this.create({bind: bind, arguments: args});
+	},
+
+	bind: function(bind, args){
+		return this.create({bind: bind, arguments: args});
+	},
+
+	bindWithEvent: function(bind, args){
+		return this.create({bind: bind, arguments: args, event: true});
+	},
+
+	attempt: function(args, bind){
+		return this.create({bind: bind, arguments: args, attempt: true})();
+	},
+
+	delay: function(delay, bind, args){
+		return this.create({bind: bind, arguments: args, delay: delay})();
+	},
+
+	periodical: function(periodical, bind, args){
+		return this.create({bind: bind, arguments: args, periodical: periodical})();
+	}
+
+});
+
+
+/*
+---
+
+name: Number
+
+description: Contains Number Prototypes like limit, round, times, and ceil.
+
+license: MIT-style license.
+
+requires: [Native, $util]
+
+provides: Number
+
+...
+*/
+
+Number.implement({
+
+	limit: function(min, max){
+		return Math.min(max, Math.max(min, this));
+	},
+
+	round: function(precision){
+		precision = Math.pow(10, precision || 0);
+		return Math.round(this * precision) / precision;
+	},
+
+	times: function(fn, bind){
+		for (var i = 0; i < this; i++) fn.call(bind, i, this);
+	},
+
+	toFloat: function(){
+		return parseFloat(this);
+	},
+
+	toInt: function(base){
+		return parseInt(this, base || 10);
+	}
+
+});
+
+Number.alias('times', 'each');
+
+(function(math){
+	var methods = {};
+	math.each(function(name){
+		if (!Number[name]) methods[name] = function(){
+			return Math[name].apply(null, [this].concat($A(arguments)));
+		};
+	});
+	Number.implement(methods);
+})(['abs', 'acos', 'asin', 'atan', 'atan2', 'ceil', 'cos', 'exp', 'floor', 'log', 'max', 'min', 'pow', 'sin', 'sqrt', 'tan']);
+
+
+/*
+---
+
+name: Hash
+
+description: Contains Hash Prototypes. Provides a means for overcoming the JavaScript practical impossibility of extending native Objects.
+
+license: MIT-style license.
+
+requires: Hash.base
+
+provides: Hash
+
+...
+*/
+
+Hash.implement({
+
+	has: Object.prototype.hasOwnProperty,
+
+	keyOf: function(value){
+		for (var key in this){
+			if (this.hasOwnProperty(key) && this[key] === value) return key;
+		}
+		return null;
+	},
+
+	hasValue: function(value){
+		return (Hash.keyOf(this, value) !== null);
+	},
+
+	extend: function(properties){
+		Hash.each(properties || {}, function(value, key){
+			Hash.set(this, key, value);
+		}, this);
+		return this;
+	},
+
+	combine: function(properties){
+		Hash.each(properties || {}, function(value, key){
+			Hash.include(this, key, value);
+		}, this);
+		return this;
+	},
+
+	erase: function(key){
+		if (this.hasOwnProperty(key)) delete this[key];
+		return this;
+	},
+
+	get: function(key){
+		return (this.hasOwnProperty(key)) ? this[key] : null;
+	},
+
+	set: function(key, value){
+		if (!this[key] || this.hasOwnProperty(key)) this[key] = value;
+		return this;
+	},
+
+	empty: function(){
+		Hash.each(this, function(value, key){
+			delete this[key];
+		}, this);
+		return this;
+	},
+
+	include: function(key, value){
+		if (this[key] == undefined) this[key] = value;
+		return this;
+	},
+
+	map: function(fn, bind){
+		var results = new Hash;
+		Hash.each(this, function(value, key){
+			results.set(key, fn.call(bind, value, key, this));
+		}, this);
+		return results;
+	},
+
+	filter: function(fn, bind){
+		var results = new Hash;
+		Hash.each(this, function(value, key){
+			if (fn.call(bind, value, key, this)) results.set(key, value);
+		}, this);
+		return results;
+	},
+
+	every: function(fn, bind){
+		for (var key in this){
+			if (this.hasOwnProperty(key) && !fn.call(bind, this[key], key)) return false;
+		}
+		return true;
+	},
+
+	some: function(fn, bind){
+		for (var key in this){
+			if (this.hasOwnProperty(key) && fn.call(bind, this[key], key)) return true;
+		}
+		return false;
+	},
+
+	getKeys: function(){
+		var keys = [];
+		Hash.each(this, function(value, key){
+			keys.push(key);
+		});
+		return keys;
+	},
+
+	getValues: function(){
+		var values = [];
+		Hash.each(this, function(value){
+			values.push(value);
+		});
+		return values;
+	},
+
+	toQueryString: function(base){
+		var queryString = [];
+		Hash.each(this, function(value, key){
+			if (base) key = base + '[' + key + ']';
+			var result;
+			switch ($type(value)){
+				case 'object': result = Hash.toQueryString(value, key); break;
+				case 'array':
+					var qs = {};
+					value.each(function(val, i){
+						qs[i] = val;
+					});
+					result = Hash.toQueryString(qs, key);
+				break;
+				default: result = key + '=' + encodeURIComponent(value);
+			}
+			if (value != undefined) queryString.push(result);
+		});
+
+		return queryString.join('&');
+	}
+
+});
+
+Hash.alias({keyOf: 'indexOf', hasValue: 'contains'});
+
+
+/*
+---
+
+name: Class
+
+description: Contains the Class Function for easily creating, extending, and implementing reusable Classes.
+
+license: MIT-style license.
+
+requires: [$util, Native, Array, String, Function, Number, Hash]
+
+provides: Class
+
+...
+*/
+
+function Class(params){
+	
+	if (params instanceof Function) params = {initialize: params};
+	
+	var newClass = function(){
+		Object.reset(this);
+		if (newClass._prototyping) return this;
+		this._current = $empty;
+		var value = (this.initialize) ? this.initialize.apply(this, arguments) : this;
+		delete this._current; delete this.caller;
+		return value;
+	}.extend(this);
+	
+	newClass.implement(params);
+	
+	newClass.constructor = Class;
+	newClass.prototype.constructor = newClass;
+
+	return newClass;
+
+};
+
+Function.prototype.protect = function(){
+	this._protected = true;
+	return this;
+};
+
+Object.reset = function(object, key){
+		
+	if (key == null){
+		for (var p in object) Object.reset(object, p);
+		return object;
+	}
+	
+	delete object[key];
+	
+	switch ($type(object[key])){
+		case 'object':
+			var F = function(){};
+			F.prototype = object[key];
+			var i = new F;
+			object[key] = Object.reset(i);
+		break;
+		case 'array': object[key] = $unlink(object[key]); break;
+	}
+	
+	return object;
+	
+};
+
+new Native({name: 'Class', initialize: Class}).extend({
+
+	instantiate: function(F){
+		F._prototyping = true;
+		var proto = new F;
+		delete F._prototyping;
+		return proto;
+	},
+	
+	wrap: function(self, key, method){
+		if (method._origin) method = method._origin;
+		
+		return function(){
+			if (method._protected && this._current == null) throw new Error('The method "' + key + '" cannot be called.');
+			var caller = this.caller, current = this._current;
+			this.caller = current; this._current = arguments.callee;
+			var result = method.apply(this, arguments);
+			this._current = current; this.caller = caller;
+			return result;
+		}.extend({_owner: self, _origin: method, _name: key});
+
+	}
+	
+});
+
+Class.implement({
+	
+	implement: function(key, value){
+		
+		if ($type(key) == 'object'){
+			for (var p in key) this.implement(p, key[p]);
+			return this;
+		}
+		
+		var mutator = Class.Mutators[key];
+		
+		if (mutator){
+			value = mutator.call(this, value);
+			if (value == null) return this;
+		}
+		
+		var proto = this.prototype;
+
+		switch ($type(value)){
+			
+			case 'function':
+				if (value._hidden) return this;
+				proto[key] = Class.wrap(this, key, value);
+			break;
+			
+			case 'object':
+				var previous = proto[key];
+				if ($type(previous) == 'object') $mixin(previous, value);
+				else proto[key] = $unlink(value);
+			break;
+			
+			case 'array':
+				proto[key] = $unlink(value);
+			break;
+			
+			default: proto[key] = value;
+
+		}
+		
+		return this;
+
+	}
+	
+});
+
+Class.Mutators = {
+	
+	Extends: function(parent){
+
+		this.parent = parent;
+		this.prototype = Class.instantiate(parent);
+
+		this.implement('parent', function(){
+			var name = this.caller._name, previous = this.caller._owner.parent.prototype[name];
+			if (!previous) throw new Error('The method "' + name + '" has no parent.');
+			return previous.apply(this, arguments);
+		}.protect());
+
+	},
+
+	Implements: function(items){
+		$splat(items).each(function(item){
+			if (item instanceof Function) item = Class.instantiate(item);
+			this.implement(item);
+		}, this);
+
+	}
+	
+};
+
+
+/*
+---
+
+name: Class.Extras
+
+description: Contains Utility Classes that can be implemented into your own Classes to ease the execution of many common tasks.
+
+license: MIT-style license.
+
+requires: Class
+
+provides: [Chain, Events, Options, Class.Extras]
+
+...
+*/
+
+var Chain = new Class({
+
+	$chain: [],
+
+	chain: function(){
+		this.$chain.extend(Array.flatten(arguments));
+		return this;
+	},
+
+	callChain: function(){
+		return (this.$chain.length) ? this.$chain.shift().apply(this, arguments) : false;
+	},
+
+	clearChain: function(){
+		this.$chain.empty();
+		return this;
+	}
+
+});
+
+var Events = new Class({
+
+	$events: {},
+
+	addEvent: function(type, fn, internal){
+		type = Events.removeOn(type);
+		if (fn != $empty){
+			this.$events[type] = this.$events[type] || [];
+			this.$events[type].include(fn);
+			if (internal) fn.internal = true;
+		}
+		return this;
+	},
+
+	addEvents: function(events){
+		for (var type in events) this.addEvent(type, events[type]);
+		return this;
+	},
+
+	fireEvent: function(type, args, delay){
+		type = Events.removeOn(type);
+		if (!this.$events || !this.$events[type]) return this;
+		this.$events[type].each(function(fn){
+			fn.create({'bind': this, 'delay': delay, 'arguments': args})();
+		}, this);
+		return this;
+	},
+
+	removeEvent: function(type, fn){
+		type = Events.removeOn(type);
+		if (!this.$events[type]) return this;
+		if (!fn.internal) this.$events[type].erase(fn);
+		return this;
+	},
+
+	removeEvents: function(events){
+		var type;
+		if ($type(events) == 'object'){
+			for (type in events) this.removeEvent(type, events[type]);
+			return this;
+		}
+		if (events) events = Events.removeOn(events);
+		for (type in this.$events){
+			if (events && events != type) continue;
+			var fns = this.$events[type];
+			for (var i = fns.length; i--; i) this.removeEvent(type, fns[i]);
+		}
+		return this;
+	}
+
+});
+
+Events.removeOn = function(string){
+	return string.replace(/^on([A-Z])/, function(full, first){
+		return first.toLowerCase();
+	});
+};
+
+var Options = new Class({
+
+	setOptions: function(){
+		this.options = $merge.run([this.options].extend(arguments));
+		if (!this.addEvent) return this;
+		for (var option in this.options){
+			if ($type(this.options[option]) != 'function' || !(/^on[A-Z]/).test(option)) continue;
+			this.addEvent(option, this.options[option]);
+			delete this.options[option];
+		}
+		return this;
+	}
+
+});
+
+
+/*
+---
+
+name: Browser
+
+description: The Browser Core. Contains Browser initialization, Window and Document, and the Browser Hash.
+
+license: MIT-style license.
+
+requires: [Native, $util]
+
+provides: [Browser, Window, Document, $exec]
+
+...
+*/
+
+var Browser = $merge({
+
+	Engine: {name: 'unknown', version: 0},
+
+	Platform: {name: (window.orientation != undefined) ? 'ipod' : (navigator.platform.match(/mac|win|linux/i) || ['other'])[0].toLowerCase()},
+
+	Features: {xpath: !!(document.evaluate), air: !!(window.runtime), query: !!(document.querySelector)},
+
+	Plugins: {},
+
+	Engines: {
+
+		presto: function(){
+			return (!window.opera) ? false : ((arguments.callee.caller) ? 960 : ((document.getElementsByClassName) ? 950 : 925));
+		},
+
+		trident: function(){
+			return (!window.ActiveXObject) ? false : ((window.XMLHttpRequest) ? ((document.querySelectorAll) ? 6 : 5) : 4);
+		},
+
+		webkit: function(){
+			return (navigator.taintEnabled) ? false : ((Browser.Features.xpath) ? ((Browser.Features.query) ? 525 : 420) : 419);
+		},
+
+		gecko: function(){
+			return (!document.getBoxObjectFor && window.mozInnerScreenX == null) ? false : ((document.getElementsByClassName) ? 19 : 18);
+		}
+
+	}
+
+}, Browser || {});
+
+Browser.Platform[Browser.Platform.name] = true;
+
+Browser.detect = function(){
+
+	for (var engine in this.Engines){
+		var version = this.Engines[engine]();
+		if (version){
+			this.Engine = {name: engine, version: version};
+			this.Engine[engine] = this.Engine[engine + version] = true;
+			break;
+		}
+	}
+
+	return {name: engine, version: version};
+
+};
+
+Browser.detect();
+
+Browser.Request = function(){
+	return $try(function(){
+		return new XMLHttpRequest();
+	}, function(){
+		return new ActiveXObject('MSXML2.XMLHTTP');
+	}, function(){
+		return new ActiveXObject('Microsoft.XMLHTTP');
+	});
+};
+
+Browser.Features.xhr = !!(Browser.Request());
+
+Browser.Plugins.Flash = (function(){
+	var version = ($try(function(){
+		return navigator.plugins['Shockwave Flash'].description;
+	}, function(){
+		return new ActiveXObject('ShockwaveFlash.ShockwaveFlash').GetVariable('$version');
+	}) || '0 r0').match(/\d+/g);
+	return {version: parseInt(version[0] || 0 + '.' + version[1], 10) || 0, build: parseInt(version[2], 10) || 0};
+})();
+
+function $exec(text){
+	if (!text) return text;
+	if (window.execScript){
+		window.execScript(text);
+	} else {
+		var script = document.createElement('script');
+		script.setAttribute('type', 'text/javascript');
+		script[(Browser.Engine.webkit && Browser.Engine.version < 420) ? 'innerText' : 'text'] = text;
+		document.head.appendChild(script);
+		document.head.removeChild(script);
+	}
+	return text;
+};
+
+Native.UID = 1;
+
+var $uid = (Browser.Engine.trident) ? function(item){
+	return (item.uid || (item.uid = [Native.UID++]))[0];
+} : function(item){
+	return item.uid || (item.uid = Native.UID++);
+};
+
+var Window = new Native({
+
+	name: 'Window',
+
+	legacy: (Browser.Engine.trident) ? null: window.Window,
+
+	initialize: function(win){
+		$uid(win);
+		if (!win.Element){
+			win.Element = $empty;
+			if (Browser.Engine.webkit) win.document.createElement("iframe"); //fixes safari 2
+			win.Element.prototype = (Browser.Engine.webkit) ? window["[[DOMElement.prototype]]"] : {};
+		}
+		win.document.window = win;
+		return $extend(win, Window.Prototype);
+	},
+
+	afterImplement: function(property, value){
+		window[property] = Window.Prototype[property] = value;
+	}
+
+});
+
+Window.Prototype = {$family: {name: 'window'}};
+
+new Window(window);
+
+var Document = new Native({
+
+	name: 'Document',
+
+	legacy: (Browser.Engine.trident) ? null: window.Document,
+
+	initialize: function(doc){
+		$uid(doc);
+		doc.head = doc.getElementsByTagName('head')[0];
+		doc.html = doc.getElementsByTagName('html')[0];
+		if (Browser.Engine.trident && Browser.Engine.version <= 4) $try(function(){
+			doc.execCommand("BackgroundImageCache", false, true);
+		});
+		if (Browser.Engine.trident) doc.window.attachEvent('onunload', function(){
+			doc.window.detachEvent('onunload', arguments.callee);
+			doc.head = doc.html = doc.window = null;
+		});
+		return $extend(doc, Document.Prototype);
+	},
+
+	afterImplement: function(property, value){
+		document[property] = Document.Prototype[property] = value;
+	}
+
+});
+
+Document.Prototype = {$family: {name: 'document'}};
+
+new Document(document);
+
+
+/*
+---
+
+name: Element
+
+description: One of the most important items in MooTools. Contains the dollar function, the dollars function, and an handful of cross-browser, time-saver methods to let you easily work with HTML Elements.
+
+license: MIT-style license.
+
+requires: [Window, Document, Array, String, Function, Number, Hash]
+
+provides: [Element, Elements, $, $$, Iframe]
+
+...
+*/
+
+var Element = new Native({
+
+	name: 'Element',
+
+	legacy: window.Element,
+
+	initialize: function(tag, props){
+		var konstructor = Element.Constructors.get(tag);
+		if (konstructor) return konstructor(props);
+		if (typeof tag == 'string') return document.newElement(tag, props);
+		return document.id(tag).set(props);
+	},
+
+	afterImplement: function(key, value){
+		Element.Prototype[key] = value;
+		if (Array[key]) return;
+		Elements.implement(key, function(){
+			var items = [], elements = true;
+			for (var i = 0, j = this.length; i < j; i++){
+				var returns = this[i][key].apply(this[i], arguments);
+				items.push(returns);
+				if (elements) elements = ($type(returns) == 'element');
+			}
+			return (elements) ? new Elements(items) : items;
+		});
+	}
+
+});
+
+Element.Prototype = {$family: {name: 'element'}};
+
+Element.Constructors = new Hash;
+
+var IFrame = new Native({
+
+	name: 'IFrame',
+
+	generics: false,
+
+	initialize: function(){
+		var params = Array.link(arguments, {properties: Object.type, iframe: $defined});
+		var props = params.properties || {};
+		var iframe = document.id(params.iframe);
+		var onload = props.onload || $empty;
+		delete props.onload;
+		props.id = props.name = $pick(props.id, props.name, iframe ? (iframe.id || iframe.name) : 'IFrame_' + $time());
+		iframe = new Element(iframe || 'iframe', props);
+		var onFrameLoad = function(){
+			var host = $try(function(){
+				return iframe.contentWindow.location.host;
+			});
+			if (!host || host == window.location.host){
+				var win = new Window(iframe.contentWindow);
+				new Document(iframe.contentWindow.document);
+				$extend(win.Element.prototype, Element.Prototype);
+			}
+			onload.call(iframe.contentWindow, iframe.contentWindow.document);
+		};
+		var contentWindow = $try(function(){
+			return iframe.contentWindow;
+		});
+		((contentWindow && contentWindow.document.body) || window.frames[props.id]) ? onFrameLoad() : iframe.addListener('load', onFrameLoad);
+		return iframe;
+	}
+
+});
+
+var Elements = new Native({
+
+	initialize: function(elements, options){
+		options = $extend({ddup: true, cash: true}, options);
+		elements = elements || [];
+		if (options.ddup || options.cash){
+			var uniques = {}, returned = [];
+			for (var i = 0, l = elements.length; i < l; i++){
+				var el = document.id(elements[i], !options.cash);
+				if (options.ddup){
+					if (uniques[el.uid]) continue;
+					uniques[el.uid] = true;
+				}
+				if (el) returned.push(el);
+			}
+			elements = returned;
+		}
+		return (options.cash) ? $extend(elements, this) : elements;
+	}
+
+});
+
+Elements.implement({
+
+	filter: function(filter, bind){
+		if (!filter) return this;
+		return new Elements(Array.filter(this, (typeof filter == 'string') ? function(item){
+			return item.match(filter);
+		} : filter, bind));
+	}
+
+});
+
+(function(){
+
+/*<ltIE8>*/
+var createElementAcceptsHTML;
+try {
+	var x = document.createElement('<input name=x>');
+	createElementAcceptsHTML = (x.name == 'x');
+} catch(e){}
+
+var escapeQuotes = function(html){
+	return ('' + html).replace(/&/g,'&amp;').replace(/"/g,'&quot;');
+};
+/*</ltIE8>*/
+
+Document.implement({
+
+	newElement: function(tag, props){
+		if (props && props.checked != null) props.defaultChecked = props.checked;
+		/*<ltIE8>*/// Fix for readonly name and type properties in IE < 8
+		if (createElementAcceptsHTML && props){
+			tag = '<' + tag;
+			if (props.name) tag += ' name="' + escapeQuotes(props.name) + '"';
+			if (props.type) tag += ' type="' + escapeQuotes(props.type) + '"';
+			tag += '>';
+			delete props.name;
+			delete props.type;
+		}
+		/*</ltIE8>*/
+		return this.id(this.createElement(tag)).set(props);
+	},
+
+	newTextNode: function(text){
+		return this.createTextNode(text);
+	},
+
+	getDocument: function(){
+		return this;
+	},
+
+	getWindow: function(){
+		return this.window;
+	},
+	
+	id: (function(){
+		
+		var types = {
+
+			string: function(id, nocash, doc){
+				id = doc.getElementById(id);
+				return (id) ? types.element(id, nocash) : null;
+			},
+			
+			element: function(el, nocash){
+				$uid(el);
+				if (!nocash && !el.$family && !(/^object|embed$/i).test(el.tagName)){
+					var proto = Element.Prototype;
+					for (var p in proto) el[p] = proto[p];
+				};
+				return el;
+			},
+			
+			object: function(obj, nocash, doc){
+				if (obj.toElement) return types.element(obj.toElement(doc), nocash);
+				return null;
+			}
+			
+		};
+
+		types.textnode = types.whitespace = types.window = types.document = $arguments(0);
+		
+		return function(el, nocash, doc){
+			if (el && el.$family && el.uid) return el;
+			var type = $type(el);
+			return (types[type]) ? types[type](el, nocash, doc || document) : null;
+		};
+
+	})()
+
+});
+
+})();
+
+if (window.$ == null) Window.implement({
+	$: function(el, nc){
+		return document.id(el, nc, this.document);
+	}
+});
+
+Window.implement({
+
+	$$: function(selector){
+		if (arguments.length == 1 && typeof selector == 'string') return this.document.getElements(selector);
+		var elements = [];
+		var args = Array.flatten(arguments);
+		for (var i = 0, l = args.length; i < l; i++){
+			var item = args[i];
+			switch ($type(item)){
+				case 'element': elements.push(item); break;
+				case 'string': elements.extend(this.document.getElements(item, true));
+			}
+		}
+		return new Elements(elements);
+	},
+
+	getDocument: function(){
+		return this.document;
+	},
+
+	getWindow: function(){
+		return this;
+	}
+
+});
+
+Native.implement([Element, Document], {
+
+	getElement: function(selector, nocash){
+		return document.id(this.getElements(selector, true)[0] || null, nocash);
+	},
+
+	getElements: function(tags, nocash){
+		tags = tags.split(',');
+		var elements = [];
+		var ddup = (tags.length > 1);
+		tags.each(function(tag){
+			var partial = this.getElementsByTagName(tag.trim());
+			(ddup) ? elements.extend(partial) : elements = partial;
+		}, this);
+		return new Elements(elements, {ddup: ddup, cash: !nocash});
+	}
+
+});
+
+(function(){
+
+var collected = {}, storage = {};
+var props = {input: 'checked', option: 'selected', textarea: (Browser.Engine.webkit && Browser.Engine.version < 420) ? 'innerHTML' : 'value'};
+
+var get = function(uid){
+	return (storage[uid] || (storage[uid] = {}));
+};
+
+var clean = function(item, retain){
+	if (!item) return;
+	var uid = item.uid;
+	if (retain !== true) retain = false;
+	if (Browser.Engine.trident){
+		if (item.clearAttributes){
+			var clone = retain && item.cloneNode(false);
+			item.clearAttributes();
+			if (clone) item.mergeAttributes(clone);
+		} else if (item.removeEvents){
+			item.removeEvents();
+		}
+		if ((/object/i).test(item.tagName)){
+			for (var p in item){
+				if (typeof item[p] == 'function') item[p] = $empty;
+			}
+			Element.dispose(item);
+		}
+	}	
+	if (!uid) return;
+	collected[uid] = storage[uid] = null;
+};
+
+var purge = function(){
+	Hash.each(collected, clean);
+	if (Browser.Engine.trident) $A(document.getElementsByTagName('object')).each(clean);
+	if (window.CollectGarbage) CollectGarbage();
+	collected = storage = null;
+};
+
+var walk = function(element, walk, start, match, all, nocash){
+	var el = element[start || walk];
+	var elements = [];
+	while (el){
+		if (el.nodeType == 1 && (!match || Element.match(el, match))){
+			if (!all) return document.id(el, nocash);
+			elements.push(el);
+		}
+		el = el[walk];
+	}
+	return (all) ? new Elements(elements, {ddup: false, cash: !nocash}) : null;
+};
+
+var attributes = {
+	'html': 'innerHTML',
+	'class': 'className',
+	'for': 'htmlFor',
+	'defaultValue': 'defaultValue',
+	'text': (Browser.Engine.trident || (Browser.Engine.webkit && Browser.Engine.version < 420)) ? 'innerText' : 'textContent'
+};
+var bools = ['compact', 'nowrap', 'ismap', 'declare', 'noshade', 'checked', 'disabled', 'readonly', 'multiple', 'selected', 'noresize', 'defer'];
+var camels = ['value', 'type', 'defaultValue', 'accessKey', 'cellPadding', 'cellSpacing', 'colSpan', 'frameBorder', 'maxLength', 'readOnly', 'rowSpan', 'tabIndex', 'useMap'];
+
+bools = bools.associate(bools);
+
+Hash.extend(attributes, bools);
+Hash.extend(attributes, camels.associate(camels.map(String.toLowerCase)));
+
+var inserters = {
+
+	before: function(context, element){
+		if (element.parentNode) element.parentNode.insertBefore(context, element);
+	},
+
+	after: function(context, element){
+		if (!element.parentNode) return;
+		var next = element.nextSibling;
+		(next) ? element.parentNode.insertBefore(context, next) : element.parentNode.appendChild(context);
+	},
+
+	bottom: function(context, element){
+		element.appendChild(context);
+	},
+
+	top: function(context, element){
+		var first = element.firstChild;
+		(first) ? element.insertBefore(context, first) : element.appendChild(context);
+	}
+
+};
+
+inserters.inside = inserters.bottom;
+
+Hash.each(inserters, function(inserter, where){
+
+	where = where.capitalize();
+
+	Element.implement('inject' + where, function(el){
+		inserter(this, document.id(el, true));
+		return this;
+	});
+
+	Element.implement('grab' + where, function(el){
+		inserter(document.id(el, true), this);
+		return this;
+	});
+
+});
+
+Element.implement({
+
+	set: function(prop, value){
+		switch ($type(prop)){
+			case 'object':
+				for (var p in prop) this.set(p, prop[p]);
+				break;
+			case 'string':
+				var property = Element.Properties.get(prop);
+				(property && property.set) ? property.set.apply(this, Array.slice(arguments, 1)) : this.setProperty(prop, value);
+		}
+		return this;
+	},
+
+	get: function(prop){
+		var property = Element.Properties.get(prop);
+		return (property && property.get) ? property.get.apply(this, Array.slice(arguments, 1)) : this.getProperty(prop);
+	},
+
+	erase: function(prop){
+		var property = Element.Properties.get(prop);
+		(property && property.erase) ? property.erase.apply(this) : this.removeProperty(prop);
+		return this;
+	},
+
+	setProperty: function(attribute, value){
+		var key = attributes[attribute];
+		if (value == undefined) return this.removeProperty(attribute);
+		if (key && bools[attribute]) value = !!value;
+		(key) ? this[key] = value : this.setAttribute(attribute, '' + value);
+		return this;
+	},
+
+	setProperties: function(attributes){
+		for (var attribute in attributes) this.setProperty(attribute, attributes[attribute]);
+		return this;
+	},
+
+	getProperty: function(attribute){
+		var key = attributes[attribute];
+		var value = (key) ? this[key] : this.getAttribute(attribute, 2);
+		return (bools[attribute]) ? !!value : (key) ? value : value || null;
+	},
+
+	getProperties: function(){
+		var args = $A(arguments);
+		return args.map(this.getProperty, this).associate(args);
+	},
+
+	removeProperty: function(attribute){
+		var key = attributes[attribute];
+		(key) ? this[key] = (key && bools[attribute]) ? false : '' : this.removeAttribute(attribute);
+		return this;
+	},
+
+	removeProperties: function(){
+		Array.each(arguments, this.removeProperty, this);
+		return this;
+	},
+
+	hasClass: function(className){
+		return this.className.contains(className, ' ');
+	},
+
+	addClass: function(className){
+		if (!this.hasClass(className)) this.className = (this.className + ' ' + className).clean();
+		return this;
+	},
+
+	removeClass: function(className){
+		this.className = this.className.replace(new RegExp('(^|\\s)' + className + '(?:\\s|$)'), '$1');
+		return this;
+	},
+
+	toggleClass: function(className){
+		return this.hasClass(className) ? this.removeClass(className) : this.addClass(className);
+	},
+
+	adopt: function(){
+		Array.flatten(arguments).each(function(element){
+			element = document.id(element, true);
+			if (element) this.appendChild(element);
+		}, this);
+		return this;
+	},
+
+	appendText: function(text, where){
+		return this.grab(this.getDocument().newTextNode(text), where);
+	},
+
+	grab: function(el, where){
+		inserters[where || 'bottom'](document.id(el, true), this);
+		return this;
+	},
+
+	inject: function(el, where){
+		inserters[where || 'bottom'](this, document.id(el, true));
+		return this;
+	},
+
+	replaces: function(el){
+		el = document.id(el, true);
+		el.parentNode.replaceChild(this, el);
+		return this;
+	},
+
+	wraps: function(el, where){
+		el = document.id(el, true);
+		return this.replaces(el).grab(el, where);
+	},
+
+	getPrevious: function(match, nocash){
+		return walk(this, 'previousSibling', null, match, false, nocash);
+	},
+
+	getAllPrevious: function(match, nocash){
+		return walk(this, 'previousSibling', null, match, true, nocash);
+	},
+
+	getNext: function(match, nocash){
+		return walk(this, 'nextSibling', null, match, false, nocash);
+	},
+
+	getAllNext: function(match, nocash){
+		return walk(this, 'nextSibling', null, match, true, nocash);
+	},
+
+	getFirst: function(match, nocash){
+		return walk(this, 'nextSibling', 'firstChild', match, false, nocash);
+	},
+
+	getLast: function(match, nocash){
+		return walk(this, 'previousSibling', 'lastChild', match, false, nocash);
+	},
+
+	getParent: function(match, nocash){
+		return walk(this, 'parentNode', null, match, false, nocash);
+	},
+
+	getParents: function(match, nocash){
+		return walk(this, 'parentNode', null, match, true, nocash);
+	},
+	
+	getSiblings: function(match, nocash){
+		return this.getParent().getChildren(match, nocash).erase(this);
+	},
+
+	getChildren: function(match, nocash){
+		return walk(this, 'nextSibling', 'firstChild', match, true, nocash);
+	},
+
+	getWindow: function(){
+		return this.ownerDocument.window;
+	},
+
+	getDocument: function(){
+		return this.ownerDocument;
+	},
+
+	getElementById: function(id, nocash){
+		var el = this.ownerDocument.getElementById(id);
+		if (!el) return null;
+		for (var parent = el.parentNode; parent != this; parent = parent.parentNode){
+			if (!parent) return null;
+		}
+		return document.id(el, nocash);
+	},
+
+	getSelected: function(){
+		return new Elements($A(this.options).filter(function(option){
+			return option.selected;
+		}));
+	},
+
+	getComputedStyle: function(property){
+		if (this.currentStyle) return this.currentStyle[property.camelCase()];
+		var computed = this.getDocument().defaultView.getComputedStyle(this, null);
+		return (computed) ? computed.getPropertyValue([property.hyphenate()]) : null;
+	},
+
+	toQueryString: function(){
+		var queryString = [];
+		this.getElements('input, select, textarea', true).each(function(el){
+			if (!el.name || el.disabled || el.type == 'submit' || el.type == 'reset' || el.type == 'file') return;
+			var value = (el.tagName.toLowerCase() == 'select') ? Element.getSelected(el).map(function(opt){
+				return opt.value;
+			}) : ((el.type == 'radio' || el.type == 'checkbox') && !el.checked) ? null : el.value;
+			$splat(value).each(function(val){
+				if (typeof val != 'undefined') queryString.push(el.name + '=' + encodeURIComponent(val));
+			});
+		});
+		return queryString.join('&');
+	},
+
+	clone: function(contents, keepid){
+		contents = contents !== false;
+		var clone = this.cloneNode(contents);
+		var clean = function(node, element){
+			if (!keepid) node.removeAttribute('id');
+			if (Browser.Engine.trident){
+				node.clearAttributes();
+				node.mergeAttributes(element);
+				node.removeAttribute('uid');
+				if (node.options){
+					var no = node.options, eo = element.options;
+					for (var j = no.length; j--;) no[j].selected = eo[j].selected;
+				}
+			}
+			var prop = props[element.tagName.toLowerCase()];
+			if (prop && element[prop]) node[prop] = element[prop];
+		};
+
+		if (contents){
+			var ce = clone.getElementsByTagName('*'), te = this.getElementsByTagName('*');
+			for (var i = ce.length; i--;) clean(ce[i], te[i]);
+		}
+
+		clean(clone, this);
+		return document.id(clone);
+	},
+
+	destroy: function(){
+		Element.empty(this);
+		Element.dispose(this);
+		clean(this, true);
+		return null;
+	},
+
+	empty: function(){
+		$A(this.childNodes).each(function(node){
+			Element.destroy(node);
+		});
+		return this;
+	},
+
+	dispose: function(){
+		return (this.parentNode) ? this.parentNode.removeChild(this) : this;
+	},
+
+	hasChild: function(el){
+		el = document.id(el, true);
+		if (!el) return false;
+		if (Browser.Engine.webkit && Browser.Engine.version < 420) return $A(this.getElementsByTagName(el.tagName)).contains(el);
+		return (this.contains) ? (this != el && this.contains(el)) : !!(this.compareDocumentPosition(el) & 16);
+	},
+
+	match: function(tag){
+		return (!tag || (tag == this) || (Element.get(this, 'tag') == tag));
+	}
+
+});
+
+Native.implement([Element, Window, Document], {
+
+	addListener: function(type, fn){
+		if (type == 'unload'){
+			var old = fn, self = this;
+			fn = function(){
+				self.removeListener('unload', fn);
+				old();
+			};
+		} else {
+			collected[this.uid] = this;
+		}
+		if (this.addEventListener) this.addEventListener(type, fn, false);
+		else this.attachEvent('on' + type, fn);
+		return this;
+	},
+
+	removeListener: function(type, fn){
+		if (this.removeEventListener) this.removeEventListener(type, fn, false);
+		else this.detachEvent('on' + type, fn);
+		return this;
+	},
+
+	retrieve: function(property, dflt){
+		var storage = get(this.uid), prop = storage[property];
+		if (dflt != undefined && prop == undefined) prop = storage[property] = dflt;
+		return $pick(prop);
+	},
+
+	store: function(property, value){
+		var storage = get(this.uid);
+		storage[property] = value;
+		return this;
+	},
+
+	eliminate: function(property){
+		var storage = get(this.uid);
+		delete storage[property];
+		return this;
+	}
+
+});
+
+window.addListener('unload', purge);
+
+})();
+
+Element.Properties = new Hash;
+
+Element.Properties.style = {
+
+	set: function(style){
+		this.style.cssText = style;
+	},
+
+	get: function(){
+		return this.style.cssText;
+	},
+
+	erase: function(){
+		this.style.cssText = '';
+	}
+
+};
+
+Element.Properties.tag = {
+
+	get: function(){
+		return this.tagName.toLowerCase();
+	}
+
+};
+
+Element.Properties.html = (function(){
+	var wrapper = document.createElement('div');
+
+	var translations = {
+		table: [1, '<table>', '</table>'],
+		select: [1, '<select>', '</select>'],
+		tbody: [2, '<table><tbody>', '</tbody></table>'],
+		tr: [3, '<table><tbody><tr>', '</tr></tbody></table>']
+	};
+	translations.thead = translations.tfoot = translations.tbody;
+
+	var html = {
+		set: function(){
+			var html = Array.flatten(arguments).join('');
+			var wrap = Browser.Engine.trident && translations[this.get('tag')];
+			if (wrap){
+				var first = wrapper;
+				first.innerHTML = wrap[1] + html + wrap[2];
+				for (var i = wrap[0]; i--;) first = first.firstChild;
+				this.empty().adopt(first.childNodes);
+			} else {
+				this.innerHTML = html;
+			}
+		}
+	};
+
+	html.erase = html.set;
+
+	return html;
+})();
+
+if (Browser.Engine.webkit && Browser.Engine.version < 420) Element.Properties.text = {
+	get: function(){
+		if (this.innerText) return this.innerText;
+		var temp = this.ownerDocument.newElement('div', {html: this.innerHTML}).inject(this.ownerDocument.body);
+		var text = temp.innerText;
+		temp.destroy();
+		return text;
+	}
+};
+
+
+/*
+---
+
+name: Element.Dimensions
+
+description: Contains methods to work with size, scroll, or positioning of Elements and the window object.
+
+license: MIT-style license.
+
+credits:
+  - Element positioning based on the [qooxdoo](http://qooxdoo.org/) code and smart browser fixes, [LGPL License](http://www.gnu.org/licenses/lgpl.html).
+  - Viewport dimensions based on [YUI](http://developer.yahoo.com/yui/) code, [BSD License](http://developer.yahoo.com/yui/license.html).
+
+requires: Element
+
+provides: Element.Dimensions
+
+...
+*/
+
+(function(){
+
+Element.implement({
+
+	scrollTo: function(x, y){
+		if (isBody(this)){
+			this.getWindow().scrollTo(x, y);
+		} else {
+			this.scrollLeft = x;
+			this.scrollTop = y;
+		}
+		return this;
+	},
+
+	getSize: function(){
+		if (isBody(this)) return this.getWindow().getSize();
+		return {x: this.offsetWidth, y: this.offsetHeight};
+	},
+
+	getScrollSize: function(){
+		if (isBody(this)) return this.getWindow().getScrollSize();
+		return {x: this.scrollWidth, y: this.scrollHeight};
+	},
+
+	getScroll: function(){
+		if (isBody(this)) return this.getWindow().getScroll();
+		return {x: this.scrollLeft, y: this.scrollTop};
+	},
+
+	getScrolls: function(){
+		var element = this, position = {x: 0, y: 0};
+		while (element && !isBody(element)){
+			position.x += element.scrollLeft;
+			position.y += element.scrollTop;
+			element = element.parentNode;
+		}
+		return position;
+	},
+
+	getOffsetParent: function(){
+		var element = this;
+		if (isBody(element)) return null;
+		if (!Browser.Engine.trident) return element.offsetParent;
+		while ((element = element.parentNode) && !isBody(element)){
+			if (styleString(element, 'position') != 'static') return element;
+		}
+		return null;
+	},
+
+	getOffsets: function(){
+		if (this.getBoundingClientRect){
+			var bound = this.getBoundingClientRect(),
+				html = document.id(this.getDocument().documentElement),
+				htmlScroll = html.getScroll(),
+				elemScrolls = this.getScrolls(),
+				elemScroll = this.getScroll(),
+				isFixed = (styleString(this, 'position') == 'fixed');
+
+			return {
+				x: bound.left.toInt() + elemScrolls.x - elemScroll.x + ((isFixed) ? 0 : htmlScroll.x) - html.clientLeft,
+				y: bound.top.toInt()  + elemScrolls.y - elemScroll.y + ((isFixed) ? 0 : htmlScroll.y) - html.clientTop
+			};
+		}
+
+		var element = this, position = {x: 0, y: 0};
+		if (isBody(this)) return position;
+
+		while (element && !isBody(element)){
+			position.x += element.offsetLeft;
+			position.y += element.offsetTop;
+
+			if (Browser.Engine.gecko){
+				if (!borderBox(element)){
+					position.x += leftBorder(element);
+					position.y += topBorder(element);
+				}
+				var parent = element.parentNode;
+				if (parent && styleString(parent, 'overflow') != 'visible'){
+					position.x += leftBorder(parent);
+					position.y += topBorder(parent);
+				}
+			} else if (element != this && Browser.Engine.webkit){
+				position.x += leftBorder(element);
+				position.y += topBorder(element);
+			}
+
+			element = element.offsetParent;
+		}
+		if (Browser.Engine.gecko && !borderBox(this)){
+			position.x -= leftBorder(this);
+			position.y -= topBorder(this);
+		}
+		return position;
+	},
+
+	getPosition: function(relative){
+		if (isBody(this)) return {x: 0, y: 0};
+		var offset = this.getOffsets(),
+				scroll = this.getScrolls();
+		var position = {
+			x: offset.x - scroll.x,
+			y: offset.y - scroll.y
+		};
+		var relativePosition = (relative && (relative = document.id(relative))) ? relative.getPosition() : {x: 0, y: 0};
+		return {x: position.x - relativePosition.x, y: position.y - relativePosition.y};
+	},
+
+	getCoordinates: function(element){
+		if (isBody(this)) return this.getWindow().getCoordinates();
+		var position = this.getPosition(element),
+				size = this.getSize();
+		var obj = {
+			left: position.x,
+			top: position.y,
+			width: size.x,
+			height: size.y
+		};
+		obj.right = obj.left + obj.width;
+		obj.bottom = obj.top + obj.height;
+		return obj;
+	},
+
+	computePosition: function(obj){
+		return {
+			left: obj.x - styleNumber(this, 'margin-left'),
+			top: obj.y - styleNumber(this, 'margin-top')
+		};
+	},
+
+	setPosition: function(obj){
+		return this.setStyles(this.computePosition(obj));
+	}
+
+});
+
+
+Native.implement([Document, Window], {
+
+	getSize: function(){
+		if (Browser.Engine.presto || Browser.Engine.webkit){
+			var win = this.getWindow();
+			return {x: win.innerWidth, y: win.innerHeight};
+		}
+		var doc = getCompatElement(this);
+		return {x: doc.clientWidth, y: doc.clientHeight};
+	},
+
+	getScroll: function(){
+		var win = this.getWindow(), doc = getCompatElement(this);
+		return {x: win.pageXOffset || doc.scrollLeft, y: win.pageYOffset || doc.scrollTop};
+	},
+
+	getScrollSize: function(){
+		var doc = getCompatElement(this), min = this.getSize();
+		return {x: Math.max(doc.scrollWidth, min.x), y: Math.max(doc.scrollHeight, min.y)};
+	},
+
+	getPosition: function(){
+		return {x: 0, y: 0};
+	},
+
+	getCoordinates: function(){
+		var size = this.getSize();
+		return {top: 0, left: 0, bottom: size.y, right: size.x, height: size.y, width: size.x};
+	}
+
+});
+
+// private methods
+
+var styleString = Element.getComputedStyle;
+
+function styleNumber(element, style){
+	return styleString(element, style).toInt() || 0;
+};
+
+function borderBox(element){
+	return styleString(element, '-moz-box-sizing') == 'border-box';
+};
+
+function topBorder(element){
+	return styleNumber(element, 'border-top-width');
+};
+
+function leftBorder(element){
+	return styleNumber(element, 'border-left-width');
+};
+
+function isBody(element){
+	return (/^(?:body|html)$/i).test(element.tagName);
+};
+
+function getCompatElement(element){
+	var doc = element.getDocument();
+	return (!doc.compatMode || doc.compatMode == 'CSS1Compat') ? doc.html : doc.body;
+};
+
+})();
+
+//aliases
+Element.alias('setPosition', 'position'); //compatability
+
+Native.implement([Window, Document, Element], {
+
+	getHeight: function(){
+		return this.getSize().y;
+	},
+
+	getWidth: function(){
+		return this.getSize().x;
+	},
+
+	getScrollTop: function(){
+		return this.getScroll().y;
+	},
+
+	getScrollLeft: function(){
+		return this.getScroll().x;
+	},
+
+	getScrollHeight: function(){
+		return this.getScrollSize().y;
+	},
+
+	getScrollWidth: function(){
+		return this.getScrollSize().x;
+	},
+
+	getTop: function(){
+		return this.getPosition().y;
+	},
+
+	getLeft: function(){
+		return this.getPosition().x;
+	}
+
+});
+
+
+/*
+---
+
+name: Event
+
+description: Contains the Event Class, to make the event object cross-browser.
+
+license: MIT-style license.
+
+requires: [Window, Document, Hash, Array, Function, String]
+
+provides: Event
+
+...
+*/
+
+var Event = new Native({
+
+	name: 'Event',
+
+	initialize: function(event, win){
+		win = win || window;
+		var doc = win.document;
+		event = event || win.event;
+		if (event.$extended) return event;
+		this.$extended = true;
+		var type = event.type;
+		var target = event.target || event.srcElement;
+		while (target && target.nodeType == 3) target = target.parentNode;
+
+		if (type.test(/key/)){
+			var code = event.which || event.keyCode;
+			var key = Event.Keys.keyOf(code);
+			if (type == 'keydown'){
+				var fKey = code - 111;
+				if (fKey > 0 && fKey < 13) key = 'f' + fKey;
+			}
+			key = key || String.fromCharCode(code).toLowerCase();
+		} else if (type.match(/(click|mouse|menu)/i)){
+			doc = (!doc.compatMode || doc.compatMode == 'CSS1Compat') ? doc.html : doc.body;
+			var page = {
+				x: event.pageX || event.clientX + doc.scrollLeft,
+				y: event.pageY || event.clientY + doc.scrollTop
+			};
+			var client = {
+				x: (event.pageX) ? event.pageX - win.pageXOffset : event.clientX,
+				y: (event.pageY) ? event.pageY - win.pageYOffset : event.clientY
+			};
+			if (type.match(/DOMMouseScroll|mousewheel/)){
+				var wheel = (event.wheelDelta) ? event.wheelDelta / 120 : -(event.detail || 0) / 3;
+			}
+			var rightClick = (event.which == 3) || (event.button == 2);
+			var related = null;
+			if (type.match(/over|out/)){
+				switch (type){
+					case 'mouseover': related = event.relatedTarget || event.fromElement; break;
+					case 'mouseout': related = event.relatedTarget || event.toElement;
+				}
+				if (!(function(){
+					while (related && related.nodeType == 3) related = related.parentNode;
+					return true;
+				}).create({attempt: Browser.Engine.gecko})()) related = false;
+			}
+		}
+
+		return $extend(this, {
+			event: event,
+			type: type,
+
+			page: page,
+			client: client,
+			rightClick: rightClick,
+
+			wheel: wheel,
+
+			relatedTarget: related,
+			target: target,
+
+			code: code,
+			key: key,
+
+			shift: event.shiftKey,
+			control: event.ctrlKey,
+			alt: event.altKey,
+			meta: event.metaKey
+		});
+	}
+
+});
+
+Event.Keys = new Hash({
+	'enter': 13,
+	'up': 38,
+	'down': 40,
+	'left': 37,
+	'right': 39,
+	'esc': 27,
+	'space': 32,
+	'backspace': 8,
+	'tab': 9,
+	'delete': 46
+});
+
+Event.implement({
+
+	stop: function(){
+		return this.stopPropagation().preventDefault();
+	},
+
+	stopPropagation: function(){
+		if (this.event.stopPropagation) this.event.stopPropagation();
+		else this.event.cancelBubble = true;
+		return this;
+	},
+
+	preventDefault: function(){
+		if (this.event.preventDefault) this.event.preventDefault();
+		else this.event.returnValue = false;
+		return this;
+	}
+
+});
+
+
+/*
+---
+
+name: Element.Event
+
+description: Contains Element methods for dealing with events. This file also includes mouseenter and mouseleave custom Element Events.
+
+license: MIT-style license.
+
+requires: [Element, Event]
+
+provides: Element.Event
+
+...
+*/
+
+Element.Properties.events = {set: function(events){
+	this.addEvents(events);
+}};
+
+Native.implement([Element, Window, Document], {
+
+	addEvent: function(type, fn){
+		var events = this.retrieve('events', {});
+		events[type] = events[type] || {'keys': [], 'values': []};
+		if (events[type].keys.contains(fn)) return this;
+		events[type].keys.push(fn);
+		var realType = type, custom = Element.Events.get(type), condition = fn, self = this;
+		if (custom){
+			if (custom.onAdd) custom.onAdd.call(this, fn);
+			if (custom.condition){
+				condition = function(event){
+					if (custom.condition.call(this, event)) return fn.call(this, event);
+					return true;
+				};
+			}
+			realType = custom.base || realType;
+		}
+		var defn = function(){
+			return fn.call(self);
+		};
+		var nativeEvent = Element.NativeEvents[realType];
+		if (nativeEvent){
+			if (nativeEvent == 2){
+				defn = function(event){
+					event = new Event(event, self.getWindow());
+					if (condition.call(self, event) === false) event.stop();
+				};
+			}
+			this.addListener(realType, defn);
+		}
+		events[type].values.push(defn);
+		return this;
+	},
+
+	removeEvent: function(type, fn){
+		var events = this.retrieve('events');
+		if (!events || !events[type]) return this;
+		var pos = events[type].keys.indexOf(fn);
+		if (pos == -1) return this;
+		events[type].keys.splice(pos, 1);
+		var value = events[type].values.splice(pos, 1)[0];
+		var custom = Element.Events.get(type);
+		if (custom){
+			if (custom.onRemove) custom.onRemove.call(this, fn);
+			type = custom.base || type;
+		}
+		return (Element.NativeEvents[type]) ? this.removeListener(type, value) : this;
+	},
+
+	addEvents: function(events){
+		for (var event in events) this.addEvent(event, events[event]);
+		return this;
+	},
+
+	removeEvents: function(events){
+		var type;
+		if ($type(events) == 'object'){
+			for (type in events) this.removeEvent(type, events[type]);
+			return this;
+		}
+		var attached = this.retrieve('events');
+		if (!attached) return this;
+		if (!events){
+			for (type in attached) this.removeEvents(type);
+			this.eliminate('events');
+		} else if (attached[events]){
+			while (attached[events].keys[0]) this.removeEvent(events, attached[events].keys[0]);
+			attached[events] = null;
+		}
+		return this;
+	},
+
+	fireEvent: function(type, args, delay){
+		var events = this.retrieve('events');
+		if (!events || !events[type]) return this;
+		events[type].keys.each(function(fn){
+			fn.create({'bind': this, 'delay': delay, 'arguments': args})();
+		}, this);
+		return this;
+	},
+
+	cloneEvents: function(from, type){
+		from = document.id(from);
+		var fevents = from.retrieve('events');
+		if (!fevents) return this;
+		if (!type){
+			for (var evType in fevents) this.cloneEvents(from, evType);
+		} else if (fevents[type]){
+			fevents[type].keys.each(function(fn){
+				this.addEvent(type, fn);
+			}, this);
+		}
+		return this;
+	}
+
+});
+
+// IE9
+try {
+	if (typeof HTMLElement != 'undefined')
+		HTMLElement.prototype.fireEvent = Element.prototype.fireEvent;
+} catch(e){}
+
+Element.NativeEvents = {
+	click: 2, dblclick: 2, mouseup: 2, mousedown: 2, contextmenu: 2, //mouse buttons
+	mousewheel: 2, DOMMouseScroll: 2, //mouse wheel
+	mouseover: 2, mouseout: 2, mousemove: 2, selectstart: 2, selectend: 2, //mouse movement
+	keydown: 2, keypress: 2, keyup: 2, //keyboard
+	focus: 2, blur: 2, change: 2, reset: 2, select: 2, submit: 2, //form elements
+	load: 1, unload: 1, beforeunload: 2, resize: 1, move: 1, DOMContentLoaded: 1, readystatechange: 1, //window
+	error: 1, abort: 1, scroll: 1 //misc
+};
+
+(function(){
+
+var $check = function(event){
+	var related = event.relatedTarget;
+	if (related == undefined) return true;
+	if (related === false) return false;
+	return ($type(this) != 'document' && related != this && related.prefix != 'xul' && !this.hasChild(related));
+};
+
+Element.Events = new Hash({
+
+	mouseenter: {
+		base: 'mouseover',
+		condition: $check
+	},
+
+	mouseleave: {
+		base: 'mouseout',
+		condition: $check
+	},
+
+	mousewheel: {
+		base: (Browser.Engine.gecko) ? 'DOMMouseScroll' : 'mousewheel'
+	}
+
+});
+
+})();
+
+
+/*
+---
+
+name: Element.Style
+
+description: Contains methods for interacting with the styles of Elements in a fashionable way.
+
+license: MIT-style license.
+
+requires: Element
+
+provides: Element.Style
+
+...
+*/
+
+Element.Properties.styles = {set: function(styles){
+	this.setStyles(styles);
+}};
+
+Element.Properties.opacity = {
+
+	set: function(opacity, novisibility){
+		if (!novisibility){
+			if (opacity == 0){
+				if (this.style.visibility != 'hidden') this.style.visibility = 'hidden';
+			} else {
+				if (this.style.visibility != 'visible') this.style.visibility = 'visible';
+			}
+		}
+		if (!this.currentStyle || !this.currentStyle.hasLayout) this.style.zoom = 1;
+		if (Browser.Engine.trident) this.style.filter = (opacity == 1) ? '' : 'alpha(opacity=' + opacity * 100 + ')';
+		this.style.opacity = opacity;
+		this.store('opacity', opacity);
+	},
+
+	get: function(){
+		return this.retrieve('opacity', 1);
+	}
+
+};
+
+Element.implement({
+
+	setOpacity: function(value){
+		return this.set('opacity', value, true);
+	},
+
+	getOpacity: function(){
+		return this.get('opacity');
+	},
+
+	setStyle: function(property, value){
+		switch (property){
+			case 'opacity': return this.set('opacity', parseFloat(value));
+			case 'float': property = (Browser.Engine.trident) ? 'styleFloat' : 'cssFloat';
+		}
+		property = property.camelCase();
+		if ($type(value) != 'string'){
+			var map = (Element.Styles.get(property) || '@').split(' ');
+			value = $splat(value).map(function(val, i){
+				if (!map[i]) return '';
+				return ($type(val) == 'number') ? map[i].replace('@', Math.round(val)) : val;
+			}).join(' ');
+		} else if (value == String(Number(value))){
+			value = Math.round(value);
+		}
+		this.style[property] = value;
+		return this;
+	},
+
+	getStyle: function(property){
+		switch (property){
+			case 'opacity': return this.get('opacity');
+			case 'float': property = (Browser.Engine.trident) ? 'styleFloat' : 'cssFloat';
+		}
+		property = property.camelCase();
+		var result = this.style[property];
+		if (!$chk(result)){
+			result = [];
+			for (var style in Element.ShortStyles){
+				if (property != style) continue;
+				for (var s in Element.ShortStyles[style]) result.push(this.getStyle(s));
+				return result.join(' ');
+			}
+			result = this.getComputedStyle(property);
+		}
+		if (result){
+			result = String(result);
+			var color = result.match(/rgba?\([\d\s,]+\)/);
+			if (color) result = result.replace(color[0], color[0].rgbToHex());
+		}
+		if (Browser.Engine.presto || (Browser.Engine.trident && !$chk(parseInt(result, 10)))){
+			if (property.test(/^(height|width)$/)){
+				var values = (property == 'width') ? ['left', 'right'] : ['top', 'bottom'], size = 0;
+				values.each(function(value){
+					size += this.getStyle('border-' + value + '-width').toInt() + this.getStyle('padding-' + value).toInt();
+				}, this);
+				return this['offset' + property.capitalize()] - size + 'px';
+			}
+			if ((Browser.Engine.presto) && String(result).test('px')) return result;
+			if (property.test(/(border(.+)Width|margin|padding)/)) return '0px';
+		}
+		return result;
+	},
+
+	setStyles: function(styles){
+		for (var style in styles) this.setStyle(style, styles[style]);
+		return this;
+	},
+
+	getStyles: function(){
+		var result = {};
+		Array.flatten(arguments).each(function(key){
+			result[key] = this.getStyle(key);
+		}, this);
+		return result;
+	}
+
+});
+
+Element.Styles = new Hash({
+	left: '@px', top: '@px', bottom: '@px', right: '@px',
+	width: '@px', height: '@px', maxWidth: '@px', maxHeight: '@px', minWidth: '@px', minHeight: '@px',
+	backgroundColor: 'rgb(@, @, @)', backgroundPosition: '@px @px', color: 'rgb(@, @, @)',
+	fontSize: '@px', letterSpacing: '@px', lineHeight: '@px', clip: 'rect(@px @px @px @px)',
+	margin: '@px @px @px @px', padding: '@px @px @px @px', border: '@px @ rgb(@, @, @) @px @ rgb(@, @, @) @px @ rgb(@, @, @)',
+	borderWidth: '@px @px @px @px', borderStyle: '@ @ @ @', borderColor: 'rgb(@, @, @) rgb(@, @, @) rgb(@, @, @) rgb(@, @, @)',
+	zIndex: '@', 'zoom': '@', fontWeight: '@', textIndent: '@px', opacity: '@'
+});
+
+Element.ShortStyles = {margin: {}, padding: {}, border: {}, borderWidth: {}, borderStyle: {}, borderColor: {}};
+
+['Top', 'Right', 'Bottom', 'Left'].each(function(direction){
+	var Short = Element.ShortStyles;
+	var All = Element.Styles;
+	['margin', 'padding'].each(function(style){
+		var sd = style + direction;
+		Short[style][sd] = All[sd] = '@px';
+	});
+	var bd = 'border' + direction;
+	Short.border[bd] = All[bd] = '@px @ rgb(@, @, @)';
+	var bdw = bd + 'Width', bds = bd + 'Style', bdc = bd + 'Color';
+	Short[bd] = {};
+	Short.borderWidth[bdw] = Short[bd][bdw] = All[bdw] = '@px';
+	Short.borderStyle[bds] = Short[bd][bds] = All[bds] = '@';
+	Short.borderColor[bdc] = Short[bd][bdc] = All[bdc] = 'rgb(@, @, @)';
+});
+
+
+/*
+---
+
+name: Fx
+
+description: Contains the basic animation logic to be extended by all other Fx Classes.
+
+license: MIT-style license.
+
+requires: [Chain, Events, Options]
+
+provides: Fx
+
+...
+*/
+
+var Fx = new Class({
+
+	Implements: [Chain, Events, Options],
+
+	options: {
+		/*
+		onStart: $empty,
+		onCancel: $empty,
+		onComplete: $empty,
+		*/
+		fps: 50,
+		unit: false,
+		duration: 500,
+		link: 'ignore'
+	},
+
+	initialize: function(options){
+		this.subject = this.subject || this;
+		this.setOptions(options);
+		this.options.duration = Fx.Durations[this.options.duration] || this.options.duration.toInt();
+		var wait = this.options.wait;
+		if (wait === false) this.options.link = 'cancel';
+	},
+
+	getTransition: function(){
+		return function(p){
+			return -(Math.cos(Math.PI * p) - 1) / 2;
+		};
+	},
+
+	step: function(){
+		var time = $time();
+		if (time < this.time + this.options.duration){
+			var delta = this.transition((time - this.time) / this.options.duration);
+			this.set(this.compute(this.from, this.to, delta));
+		} else {
+			this.set(this.compute(this.from, this.to, 1));
+			this.complete();
+		}
+	},
+
+	set: function(now){
+		return now;
+	},
+
+	compute: function(from, to, delta){
+		return Fx.compute(from, to, delta);
+	},
+
+	check: function(){
+		if (!this.timer) return true;
+		switch (this.options.link){
+			case 'cancel': this.cancel(); return true;
+			case 'chain': this.chain(this.caller.bind(this, arguments)); return false;
+		}
+		return false;
+	},
+
+	start: function(from, to){
+		if (!this.check(from, to)) return this;
+		this.from = from;
+		this.to = to;
+		this.time = 0;
+		this.transition = this.getTransition();
+		this.startTimer();
+		this.onStart();
+		return this;
+	},
+
+	complete: function(){
+		if (this.stopTimer()) this.onComplete();
+		return this;
+	},
+
+	cancel: function(){
+		if (this.stopTimer()) this.onCancel();
+		return this;
+	},
+
+	onStart: function(){
+		this.fireEvent('start', this.subject);
+	},
+
+	onComplete: function(){
+		this.fireEvent('complete', this.subject);
+		if (!this.callChain()) this.fireEvent('chainComplete', this.subject);
+	},
+
+	onCancel: function(){
+		this.fireEvent('cancel', this.subject).clearChain();
+	},
+
+	pause: function(){
+		this.stopTimer();
+		return this;
+	},
+
+	resume: function(){
+		this.startTimer();
+		return this;
+	},
+
+	stopTimer: function(){
+		if (!this.timer) return false;
+		this.time = $time() - this.time;
+		this.timer = $clear(this.timer);
+		return true;
+	},
+
+	startTimer: function(){
+		if (this.timer) return false;
+		this.time = $time() - this.time;
+		this.timer = this.step.periodical(Math.round(1000 / this.options.fps), this);
+		return true;
+	}
+
+});
+
+Fx.compute = function(from, to, delta){
+	return (to - from) * delta + from;
+};
+
+Fx.Durations = {'short': 250, 'normal': 500, 'long': 1000};
+
+
+/*
+---
+
+name: Fx.CSS
+
+description: Contains the CSS animation logic. Used by Fx.Tween, Fx.Morph, Fx.Elements.
+
+license: MIT-style license.
+
+requires: [Fx, Element.Style]
+
+provides: Fx.CSS
+
+...
+*/
+
+Fx.CSS = new Class({
+
+	Extends: Fx,
+
+	//prepares the base from/to object
+
+	prepare: function(element, property, values){
+		values = $splat(values);
+		var values1 = values[1];
+		if (!$chk(values1)){
+			values[1] = values[0];
+			values[0] = element.getStyle(property);
+		}
+		var parsed = values.map(this.parse);
+		return {from: parsed[0], to: parsed[1]};
+	},
+
+	//parses a value into an array
+
+	parse: function(value){
+		value = $lambda(value)();
+		value = (typeof value == 'string') ? value.split(' ') : $splat(value);
+		return value.map(function(val){
+			val = String(val);
+			var found = false;
+			Fx.CSS.Parsers.each(function(parser, key){
+				if (found) return;
+				var parsed = parser.parse(val);
+				if ($chk(parsed)) found = {value: parsed, parser: parser};
+			});
+			found = found || {value: val, parser: Fx.CSS.Parsers.String};
+			return found;
+		});
+	},
+
+	//computes by a from and to prepared objects, using their parsers.
+
+	compute: function(from, to, delta){
+		var computed = [];
+		(Math.min(from.length, to.length)).times(function(i){
+			computed.push({value: from[i].parser.compute(from[i].value, to[i].value, delta), parser: from[i].parser});
+		});
+		computed.$family = {name: 'fx:css:value'};
+		return computed;
+	},
+
+	//serves the value as settable
+
+	serve: function(value, unit){
+		if ($type(value) != 'fx:css:value') value = this.parse(value);
+		var returned = [];
+		value.each(function(bit){
+			returned = returned.concat(bit.parser.serve(bit.value, unit));
+		});
+		return returned;
+	},
+
+	//renders the change to an element
+
+	render: function(element, property, value, unit){
+		element.setStyle(property, this.serve(value, unit));
+	},
+
+	//searches inside the page css to find the values for a selector
+
+	search: function(selector){
+		if (Fx.CSS.Cache[selector]) return Fx.CSS.Cache[selector];
+		var to = {};
+		Array.each(document.styleSheets, function(sheet, j){
+			var href = sheet.href;
+			if (href && href.contains('://') && !href.contains(document.domain)) return;
+			var rules = sheet.rules || sheet.cssRules;
+			Array.each(rules, function(rule, i){
+				if (!rule.style) return;
+				var selectorText = (rule.selectorText) ? rule.selectorText.replace(/^\w+/, function(m){
+					return m.toLowerCase();
+				}) : null;
+				if (!selectorText || !selectorText.test('^' + selector + '$')) return;
+				Element.Styles.each(function(value, style){
+					if (!rule.style[style] || Element.ShortStyles[style]) return;
+					value = String(rule.style[style]);
+					to[style] = (value.test(/^rgb/)) ? value.rgbToHex() : value;
+				});
+			});
+		});
+		return Fx.CSS.Cache[selector] = to;
+	}
+
+});
+
+Fx.CSS.Cache = {};
+
+Fx.CSS.Parsers = new Hash({
+
+	Color: {
+		parse: function(value){
+			if (value.match(/^#[0-9a-f]{3,6}$/i)) return value.hexToRgb(true);
+			return ((value = value.match(/(\d+),\s*(\d+),\s*(\d+)/))) ? [value[1], value[2], value[3]] : false;
+		},
+		compute: function(from, to, delta){
+			return from.map(function(value, i){
+				return Math.round(Fx.compute(from[i], to[i], delta));
+			});
+		},
+		serve: function(value){
+			return value.map(Number);
+		}
+	},
+
+	Number: {
+		parse: parseFloat,
+		compute: Fx.compute,
+		serve: function(value, unit){
+			return (unit) ? value + unit : value;
+		}
+	},
+
+	String: {
+		parse: $lambda(false),
+		compute: $arguments(1),
+		serve: $arguments(0)
+	}
+
+});
+
+
+/*
+---
+
+name: Fx.Morph
+
+description: Formerly Fx.Styles, effect to transition any number of CSS properties for an element using an object of rules, or CSS based selector rules.
+
+license: MIT-style license.
+
+requires: Fx.CSS
+
+provides: Fx.Morph
+
+...
+*/
+
+Fx.Morph = new Class({
+
+	Extends: Fx.CSS,
+
+	initialize: function(element, options){
+		this.element = this.subject = document.id(element);
+		this.parent(options);
+	},
+
+	set: function(now){
+		if (typeof now == 'string') now = this.search(now);
+		for (var p in now) this.render(this.element, p, now[p], this.options.unit);
+		return this;
+	},
+
+	compute: function(from, to, delta){
+		var now = {};
+		for (var p in from) now[p] = this.parent(from[p], to[p], delta);
+		return now;
+	},
+
+	start: function(properties){
+		if (!this.check(properties)) return this;
+		if (typeof properties == 'string') properties = this.search(properties);
+		var from = {}, to = {};
+		for (var p in properties){
+			var parsed = this.prepare(this.element, p, properties[p]);
+			from[p] = parsed.from;
+			to[p] = parsed.to;
+		}
+		return this.parent(from, to);
+	}
+
+});
+
+Element.Properties.morph = {
+
+	set: function(options){
+		var morph = this.retrieve('morph');
+		if (morph) morph.cancel();
+		return this.eliminate('morph').store('morph:options', $extend({link: 'cancel'}, options));
+	},
+
+	get: function(options){
+		if (options || !this.retrieve('morph')){
+			if (options || !this.retrieve('morph:options')) this.set('morph', options);
+			this.store('morph', new Fx.Morph(this, this.retrieve('morph:options')));
+		}
+		return this.retrieve('morph');
+	}
+
+};
+
+Element.implement({
+
+	morph: function(props){
+		this.get('morph').start(props);
+		return this;
+	}
+
+});
+
+
+/*
+---
+
+name: Fx.Transitions
+
+description: Contains a set of advanced transitions to be used with any of the Fx Classes.
+
+license: MIT-style license.
+
+credits: Easing Equations by Robert Penner, <http://www.robertpenner.com/easing/>, modified and optimized to be used with MooTools.
+
+requires: Fx
+
+provides: Fx.Transitions
+
+...
+*/
+
+Fx.implement({
+
+	getTransition: function(){
+		var trans = this.options.transition || Fx.Transitions.Sine.easeInOut;
+		if (typeof trans == 'string'){
+			var data = trans.split(':');
+			trans = Fx.Transitions;
+			trans = trans[data[0]] || trans[data[0].capitalize()];
+			if (data[1]) trans = trans['ease' + data[1].capitalize() + (data[2] ? data[2].capitalize() : '')];
+		}
+		return trans;
+	}
+
+});
+
+Fx.Transition = function(transition, params){
+	params = $splat(params);
+	return $extend(transition, {
+		easeIn: function(pos){
+			return transition(pos, params);
+		},
+		easeOut: function(pos){
+			return 1 - transition(1 - pos, params);
+		},
+		easeInOut: function(pos){
+			return (pos <= 0.5) ? transition(2 * pos, params) / 2 : (2 - transition(2 * (1 - pos), params)) / 2;
+		}
+	});
+};
+
+Fx.Transitions = new Hash({
+
+	linear: $arguments(0)
+
+});
+
+Fx.Transitions.extend = function(transitions){
+	for (var transition in transitions) Fx.Transitions[transition] = new Fx.Transition(transitions[transition]);
+};
+
+Fx.Transitions.extend({
+
+	Pow: function(p, x){
+		return Math.pow(p, x[0] || 6);
+	},
+
+	Expo: function(p){
+		return Math.pow(2, 8 * (p - 1));
+	},
+
+	Circ: function(p){
+		return 1 - Math.sin(Math.acos(p));
+	},
+
+	Sine: function(p){
+		return 1 - Math.sin((1 - p) * Math.PI / 2);
+	},
+
+	Back: function(p, x){
+		x = x[0] || 1.618;
+		return Math.pow(p, 2) * ((x + 1) * p - x);
+	},
+
+	Bounce: function(p){
+		var value;
+		for (var a = 0, b = 1; 1; a += b, b /= 2){
+			if (p >= (7 - 4 * a) / 11){
+				value = b * b - Math.pow((11 - 6 * a - 11 * p) / 4, 2);
+				break;
+			}
+		}
+		return value;
+	},
+
+	Elastic: function(p, x){
+		return Math.pow(2, 10 * --p) * Math.cos(20 * p * Math.PI * (x[0] || 1) / 3);
+	}
+
+});
+
+['Quad', 'Cubic', 'Quart', 'Quint'].each(function(transition, i){
+	Fx.Transitions[transition] = new Fx.Transition(function(p){
+		return Math.pow(p, [i + 2]);
+	});
+});
+
+
+/*
+---
+
+name: Fx.Tween
+
+description: Formerly Fx.Style, effect to transition any CSS property for an element.
+
+license: MIT-style license.
+
+requires: Fx.CSS
+
+provides: [Fx.Tween, Element.fade, Element.highlight]
+
+...
+*/
+
+Fx.Tween = new Class({
+
+	Extends: Fx.CSS,
+
+	initialize: function(element, options){
+		this.element = this.subject = document.id(element);
+		this.parent(options);
+	},
+
+	set: function(property, now){
+		if (arguments.length == 1){
+			now = property;
+			property = this.property || this.options.property;
+		}
+		this.render(this.element, property, now, this.options.unit);
+		return this;
+	},
+
+	start: function(property, from, to){
+		if (!this.check(property, from, to)) return this;
+		var args = Array.flatten(arguments);
+		this.property = this.options.property || args.shift();
+		var parsed = this.prepare(this.element, this.property, args);
+		return this.parent(parsed.from, parsed.to);
+	}
+
+});
+
+Element.Properties.tween = {
+
+	set: function(options){
+		var tween = this.retrieve('tween');
+		if (tween) tween.cancel();
+		return this.eliminate('tween').store('tween:options', $extend({link: 'cancel'}, options));
+	},
+
+	get: function(options){
+		if (options || !this.retrieve('tween')){
+			if (options || !this.retrieve('tween:options')) this.set('tween', options);
+			this.store('tween', new Fx.Tween(this, this.retrieve('tween:options')));
+		}
+		return this.retrieve('tween');
+	}
+
+};
+
+Element.implement({
+
+	tween: function(property, from, to){
+		this.get('tween').start(arguments);
+		return this;
+	},
+
+	fade: function(how){
+		var fade = this.get('tween'), o = 'opacity', toggle;
+		how = $pick(how, 'toggle');
+		switch (how){
+			case 'in': fade.start(o, 1); break;
+			case 'out': fade.start(o, 0); break;
+			case 'show': fade.set(o, 1); break;
+			case 'hide': fade.set(o, 0); break;
+			case 'toggle':
+				var flag = this.retrieve('fade:flag', this.get('opacity') == 1);
+				fade.start(o, (flag) ? 0 : 1);
+				this.store('fade:flag', !flag);
+				toggle = true;
+			break;
+			default: fade.start(o, arguments);
+		}
+		if (!toggle) this.eliminate('fade:flag');
+		return this;
+	},
+
+	highlight: function(start, end){
+		if (!end){
+			end = this.retrieve('highlight:original', this.getStyle('background-color'));
+			end = (end == 'transparent') ? '#fff' : end;
+		}
+		var tween = this.get('tween');
+		tween.start('background-color', start || '#ffff88', end).chain(function(){
+			this.setStyle('background-color', this.retrieve('highlight:original'));
+			tween.callChain();
+		}.bind(this));
+		return this;
+	}
+
+});
+
+
+/*
+---
+
+name: Request
+
+description: Powerful all purpose Request Class. Uses XMLHTTPRequest.
+
+license: MIT-style license.
+
+requires: [Element, Chain, Events, Options, Browser]
+
+provides: Request
+
+...
+*/
+
+var Request = new Class({
+
+	Implements: [Chain, Events, Options],
+
+	options: {/*
+		onRequest: $empty,
+		onComplete: $empty,
+		onCancel: $empty,
+		onSuccess: $empty,
+		onFailure: $empty,
+		onException: $empty,*/
+		url: '',
+		data: '',
+		headers: {
+			'X-Requested-With': 'XMLHttpRequest',
+			'Accept': 'text/javascript, text/html, application/xml, text/xml, */*'
+		},
+		async: true,
+		format: false,
+		method: 'post',
+		link: 'ignore',
+		isSuccess: null,
+		emulation: true,
+		urlEncoded: true,
+		encoding: 'utf-8',
+		evalScripts: false,
+		evalResponse: false,
+		noCache: false
+	},
+
+	initialize: function(options){
+		this.xhr = new Browser.Request();
+		this.setOptions(options);
+		this.options.isSuccess = this.options.isSuccess || this.isSuccess;
+		this.headers = new Hash(this.options.headers);
+	},
+
+	onStateChange: function(){
+		if (this.xhr.readyState != 4 || !this.running) return;
+		this.running = false;
+		this.status = 0;
+		$try(function(){
+			this.status = this.xhr.status;
+		}.bind(this));
+		this.xhr.onreadystatechange = $empty;
+		if (this.options.isSuccess.call(this, this.status)){
+			this.response = {text: this.xhr.responseText, xml: this.xhr.responseXML};
+			this.success(this.response.text, this.response.xml);
+		} else {
+			this.response = {text: null, xml: null};
+			this.failure();
+		}
+	},
+
+	isSuccess: function(){
+		return ((this.status >= 200) && (this.status < 300));
+	},
+
+	processScripts: function(text){
+		if (this.options.evalResponse || (/(ecma|java)script/).test(this.getHeader('Content-type'))) return $exec(text);
+		return text.stripScripts(this.options.evalScripts);
+	},
+
+	success: function(text, xml){
+		this.onSuccess(this.processScripts(text), xml);
+	},
+
+	onSuccess: function(){
+		this.fireEvent('complete', arguments).fireEvent('success', arguments).callChain();
+	},
+
+	failure: function(){
+		this.onFailure();
+	},
+
+	onFailure: function(){
+		this.fireEvent('complete').fireEvent('failure', this.xhr);
+	},
+
+	setHeader: function(name, value){
+		this.headers.set(name, value);
+		return this;
+	},
+
+	getHeader: function(name){
+		return $try(function(){
+			return this.xhr.getResponseHeader(name);
+		}.bind(this));
+	},
+
+	check: function(){
+		if (!this.running) return true;
+		switch (this.options.link){
+			case 'cancel': this.cancel(); return true;
+			case 'chain': this.chain(this.caller.bind(this, arguments)); return false;
+		}
+		return false;
+	},
+
+	send: function(options){
+		if (!this.check(options)) return this;
+		this.running = true;
+
+		var type = $type(options);
+		if (type == 'string' || type == 'element') options = {data: options};
+
+		var old = this.options;
+		options = $extend({data: old.data, url: old.url, method: old.method}, options);
+		var data = options.data, url = String(options.url), method = options.method.toLowerCase();
+
+		switch ($type(data)){
+			case 'element': data = document.id(data).toQueryString(); break;
+			case 'object': case 'hash': data = Hash.toQueryString(data);
+		}
+
+		if (this.options.format){
+			var format = 'format=' + this.options.format;
+			data = (data) ? format + '&' + data : format;
+		}
+
+		if (this.options.emulation && !['get', 'post'].contains(method)){
+			var _method = '_method=' + method;
+			data = (data) ? _method + '&' + data : _method;
+			method = 'post';
+		}
+
+		if (this.options.urlEncoded && method == 'post'){
+			var encoding = (this.options.encoding) ? '; charset=' + this.options.encoding : '';
+			this.headers.set('Content-type', 'application/x-www-form-urlencoded' + encoding);
+		}
+
+		if (this.options.noCache){
+			var noCache = 'noCache=' + new Date().getTime();
+			data = (data) ? noCache + '&' + data : noCache;
+		}
+
+		var trimPosition = url.lastIndexOf('/');
+		if (trimPosition > -1 && (trimPosition = url.indexOf('#')) > -1) url = url.substr(0, trimPosition);
+
+		if (data && method == 'get'){
+			url = url + (url.contains('?') ? '&' : '?') + data;
+			data = null;
+		}
+
+		this.xhr.open(method.toUpperCase(), url, this.options.async);
+
+		this.xhr.onreadystatechange = this.onStateChange.bind(this);
+
+		this.headers.each(function(value, key){
+			try {
+				this.xhr.setRequestHeader(key, value);
+			} catch (e){
+				this.fireEvent('exception', [key, value]);
+			}
+		}, this);
+
+		this.fireEvent('request');
+		this.xhr.send(data);
+		if (!this.options.async) this.onStateChange();
+		return this;
+	},
+
+	cancel: function(){
+		if (!this.running) return this;
+		this.running = false;
+		this.xhr.abort();
+		this.xhr.onreadystatechange = $empty;
+		this.xhr = new Browser.Request();
+		this.fireEvent('cancel');
+		return this;
+	}
+
+});
+
+(function(){
+
+var methods = {};
+['get', 'post', 'put', 'delete', 'GET', 'POST', 'PUT', 'DELETE'].each(function(method){
+	methods[method] = function(){
+		var params = Array.link(arguments, {url: String.type, data: $defined});
+		return this.send($extend(params, {method: method}));
+	};
+});
+
+Request.implement(methods);
+
+})();
+
+Element.Properties.send = {
+
+	set: function(options){
+		var send = this.retrieve('send');
+		if (send) send.cancel();
+		return this.eliminate('send').store('send:options', $extend({
+			data: this, link: 'cancel', method: this.get('method') || 'post', url: this.get('action')
+		}, options));
+	},
+
+	get: function(options){
+		if (options || !this.retrieve('send')){
+			if (options || !this.retrieve('send:options')) this.set('send', options);
+			this.store('send', new Request(this.retrieve('send:options')));
+		}
+		return this.retrieve('send');
+	}
+
+};
+
+Element.implement({
+
+	send: function(url){
+		var sender = this.get('send');
+		sender.send({data: this, url: url || sender.options.url});
+		return this;
+	}
+
+});
+
+
+/*
+---
+
+name: Request.HTML
+
+description: Extends the basic Request Class with additional methods for interacting with HTML responses.
+
+license: MIT-style license.
+
+requires: [Request, Element]
+
+provides: Request.HTML
+
+...
+*/
+
+Request.HTML = new Class({
+
+	Extends: Request,
+
+	options: {
+		update: false,
+		append: false,
+		evalScripts: true,
+		filter: false
+	},
+
+	processHTML: function(text){
+		var match = text.match(/<body[^>]*>([\s\S]*?)<\/body>/i);
+		text = (match) ? match[1] : text;
+
+		var container = new Element('div');
+
+		return $try(function(){
+			var root = '<root>' + text + '</root>', doc;
+			if (Browser.Engine.trident){
+				doc = new ActiveXObject('Microsoft.XMLDOM');
+				doc.async = false;
+				doc.loadXML(root);
+			} else {
+				doc = new DOMParser().parseFromString(root, 'text/xml');
+			}
+			root = doc.getElementsByTagName('root')[0];
+			if (!root) return null;
+			for (var i = 0, k = root.childNodes.length; i < k; i++){
+				var child = Element.clone(root.childNodes[i], true, true);
+				if (child) container.grab(child);
+			}
+			return container;
+		}) || container.set('html', text);
+	},
+
+	success: function(text){
+		var options = this.options, response = this.response;
+
+		response.html = text.stripScripts(function(script){
+			response.javascript = script;
+		});
+
+		var temp = this.processHTML(response.html);
+
+		response.tree = temp.childNodes;
+		response.elements = temp.getElements('*');
+
+		if (options.filter) response.tree = response.elements.filter(options.filter);
+		if (options.update) document.id(options.update).empty().set('html', response.html);
+		else if (options.append) document.id(options.append).adopt(temp.getChildren());
+		if (options.evalScripts) $exec(response.javascript);
+
+		this.onSuccess(response.tree, response.elements, response.html, response.javascript);
+	}
+
+});
+
+Element.Properties.load = {
+
+	set: function(options){
+		var load = this.retrieve('load');
+		if (load) load.cancel();
+		return this.eliminate('load').store('load:options', $extend({data: this, link: 'cancel', update: this, method: 'get'}, options));
+	},
+
+	get: function(options){
+		if (options || ! this.retrieve('load')){
+			if (options || !this.retrieve('load:options')) this.set('load', options);
+			this.store('load', new Request.HTML(this.retrieve('load:options')));
+		}
+		return this.retrieve('load');
+	}
+
+};
+
+Element.implement({
+
+	load: function(){
+		this.get('load').send(Array.link(arguments, {data: Object.type, url: String.type}));
+		return this;
+	}
+
+});
+
+
+/*
+---
+
+name: JSON
+
+description: JSON encoder and decoder.
+
+license: MIT-style license.
+
+see: <http://www.json.org/>
+
+requires: [Array, String, Number, Function, Hash]
+
+provides: JSON
+
+...
+*/
+
+var JSON = new Hash(this.JSON && {
+	stringify: JSON.stringify,
+	parse: JSON.parse
+}).extend({
+	
+	$specialChars: {'\b': '\\b', '\t': '\\t', '\n': '\\n', '\f': '\\f', '\r': '\\r', '"' : '\\"', '\\': '\\\\'},
+
+	$replaceChars: function(chr){
+		return JSON.$specialChars[chr] || '\\u00' + Math.floor(chr.charCodeAt() / 16).toString(16) + (chr.charCodeAt() % 16).toString(16);
+	},
+
+	encode: function(obj){
+		switch ($type(obj)){
+			case 'string':
+				return '"' + obj.replace(/[\x00-\x1f\\"]/g, JSON.$replaceChars) + '"';
+			case 'array':
+				return '[' + String(obj.map(JSON.encode).clean()) + ']';
+			case 'object': case 'hash':
+				var string = [];
+				Hash.each(obj, function(value, key){
+					var json = JSON.encode(value);
+					if (json) string.push(JSON.encode(key) + ':' + json);
+				});
+				return '{' + string + '}';
+			case 'number': case 'boolean': return String(obj);
+			case false: return 'null';
+		}
+		return null;
+	},
+
+	decode: function(string, secure){
+		if ($type(string) != 'string' || !string.length) return null;
+		if (secure && !(/^[,:{}\[\]0-9.\-+Eaeflnr-u \n\r\t]*$/).test(string.replace(/\\./g, '@').replace(/"[^"\\\n\r]*"/g, ''))) return null;
+		return eval('(' + string + ')');
+	}
+
+});
+
+
+/*
+---
+
+name: Request.JSON
+
+description: Extends the basic Request Class with additional methods for sending and receiving JSON data.
+
+license: MIT-style license.
+
+requires: [Request, JSON]
+
+provides: [Request.JSON]
+
+...
+*/
+
+Request.JSON = new Class({
+
+	Extends: Request,
+
+	options: {
+		secure: true
+	},
+
+	initialize: function(options){
+		this.parent(options);
+		this.headers.extend({'Accept': 'application/json', 'X-Request': 'JSON'});
+	},
+
+	success: function(text){
+		this.response.json = JSON.decode(text, this.options.secure);
+		this.onSuccess(this.response.json, text);
+	}
+
+});
+
+
+/*
+---
+
+name: Cookie
+
+description: Class for creating, reading, and deleting browser Cookies.
+
+license: MIT-style license.
+
+credits: Based on the functions by Peter-Paul Koch (http://quirksmode.org).
+
+requires: Options
+
+provides: Cookie
+
+...
+*/
+
+var Cookie = new Class({
+
+	Implements: Options,
+
+	options: {
+		path: false,
+		domain: false,
+		duration: false,
+		secure: false,
+		document: document
+	},
+
+	initialize: function(key, options){
+		this.key = key;
+		this.setOptions(options);
+	},
+
+	write: function(value){
+		value = encodeURIComponent(value);
+		if (this.options.domain) value += '; domain=' + this.options.domain;
+		if (this.options.path) value += '; path=' + this.options.path;
+		if (this.options.duration){
+			var date = new Date();
+			date.setTime(date.getTime() + this.options.duration * 24 * 60 * 60 * 1000);
+			value += '; expires=' + date.toGMTString();
+		}
+		if (this.options.secure) value += '; secure';
+		this.options.document.cookie = this.key + '=' + value;
+		return this;
+	},
+
+	read: function(){
+		var value = this.options.document.cookie.match('(?:^|;)\\s*' + this.key.escapeRegExp() + '=([^;]*)');
+		return (value) ? decodeURIComponent(value[1]) : null;
+	},
+
+	dispose: function(){
+		new Cookie(this.key, $merge(this.options, {duration: -1})).write('');
+		return this;
+	}
+
+});
+
+Cookie.write = function(key, value, options){
+	return new Cookie(key, options).write(value);
+};
+
+Cookie.read = function(key){
+	return new Cookie(key).read();
+};
+
+Cookie.dispose = function(key, options){
+	return new Cookie(key, options).dispose();
+};
+
+
+/*
+---
+
+name: DomReady
+
+description: Contains the custom event domready.
+
+license: MIT-style license.
+
+requires: Element.Event
+
+provides: DomReady
+
+...
+*/
+
+Element.Events.domready = {
+
+	onAdd: function(fn){
+		if (Browser.loaded) fn.call(this);
+	}
+
+};
+
+(function(){
+
+	var domready = function(){
+		if (Browser.loaded) return;
+		Browser.loaded = true;
+		window.fireEvent('domready');
+		document.fireEvent('domready');
+	};
+	
+	window.addEvent('load', domready);
+
+	if (Browser.Engine.trident){
+		var temp = document.createElement('div');
+		(function(){
+			($try(function(){
+				temp.doScroll(); // Technique by Diego Perini
+				return document.id(temp).inject(document.body).set('html', 'temp').dispose();
+			})) ? domready() : arguments.callee.delay(50);
+		})();
+	} else if (Browser.Engine.webkit && Browser.Engine.version < 525){
+		(function(){
+			(['loaded', 'complete'].contains(document.readyState)) ? domready() : arguments.callee.delay(50);
+		})();
+	} else {
+		document.addEvent('DOMContentLoaded', domready);
+	}
+
+})();
+
+
+/*
+---
+
+name: Selectors
+
+description: Adds advanced CSS-style querying capabilities for targeting HTML Elements. Includes pseudo selectors.
+
+license: MIT-style license.
+
+requires: Element
+
+provides: Selectors
+
+...
+*/
+
+Native.implement([Document, Element], {
+
+	getElements: function(expression, nocash){
+		expression = expression.split(',');
+		var items, local = {};
+		for (var i = 0, l = expression.length; i < l; i++){
+			var selector = expression[i], elements = Selectors.Utils.search(this, selector, local);
+			if (i != 0 && elements.item) elements = $A(elements);
+			items = (i == 0) ? elements : (items.item) ? $A(items).concat(elements) : items.concat(elements);
+		}
+		return new Elements(items, {ddup: (expression.length > 1), cash: !nocash});
+	}
+
+});
+
+Element.implement({
+
+	match: function(selector){
+		if (!selector || (selector == this)) return true;
+		var tagid = Selectors.Utils.parseTagAndID(selector);
+		var tag = tagid[0], id = tagid[1];
+		if (!Selectors.Filters.byID(this, id) || !Selectors.Filters.byTag(this, tag)) return false;
+		var parsed = Selectors.Utils.parseSelector(selector);
+		return (parsed) ? Selectors.Utils.filter(this, parsed, {}) : true;
+	}
+
+});
+
+var Selectors = {Cache: {nth: {}, parsed: {}}};
+
+Selectors.RegExps = {
+	id: (/#([\w-]+)/),
+	tag: (/^(\w+|\*)/),
+	quick: (/^(\w+|\*)$/),
+	splitter: (/\s*([+>~\s])\s*([a-zA-Z#.*:\[])/g),
+	combined: (/\.([\w-]+)|\[(\w+)(?:([!*^$~|]?=)(["']?)([^\4]*?)\4)?\]|:([\w-]+)(?:\(["']?(.*?)?["']?\)|$)/g)
+};
+
+Selectors.Utils = {
+
+	chk: function(item, uniques){
+		if (!uniques) return true;
+		var uid = $uid(item);
+		if (!uniques[uid]) return uniques[uid] = true;
+		return false;
+	},
+
+	parseNthArgument: function(argument){
+		if (Selectors.Cache.nth[argument]) return Selectors.Cache.nth[argument];
+		var parsed = argument.match(/^([+-]?\d*)?([a-z]+)?([+-]?\d*)?$/);
+		if (!parsed) return false;
+		var inta = parseInt(parsed[1], 10);
+		var a = (inta || inta === 0) ? inta : 1;
+		var special = parsed[2] || false;
+		var b = parseInt(parsed[3], 10) || 0;
+		if (a != 0){
+			b--;
+			while (b < 1) b += a;
+			while (b >= a) b -= a;
+		} else {
+			a = b;
+			special = 'index';
+		}
+		switch (special){
+			case 'n': parsed = {a: a, b: b, special: 'n'}; break;
+			case 'odd': parsed = {a: 2, b: 0, special: 'n'}; break;
+			case 'even': parsed = {a: 2, b: 1, special: 'n'}; break;
+			case 'first': parsed = {a: 0, special: 'index'}; break;
+			case 'last': parsed = {special: 'last-child'}; break;
+			case 'only': parsed = {special: 'only-child'}; break;
+			default: parsed = {a: (a - 1), special: 'index'};
+		}
+
+		return Selectors.Cache.nth[argument] = parsed;
+	},
+
+	parseSelector: function(selector){
+		if (Selectors.Cache.parsed[selector]) return Selectors.Cache.parsed[selector];
+		var m, parsed = {classes: [], pseudos: [], attributes: []};
+		while ((m = Selectors.RegExps.combined.exec(selector))){
+			var cn = m[1], an = m[2], ao = m[3], av = m[5], pn = m[6], pa = m[7];
+			if (cn){
+				parsed.classes.push(cn);
+			} else if (pn){
+				var parser = Selectors.Pseudo.get(pn);
+				if (parser) parsed.pseudos.push({parser: parser, argument: pa});
+				else parsed.attributes.push({name: pn, operator: '=', value: pa});
+			} else if (an){
+				parsed.attributes.push({name: an, operator: ao, value: av});
+			}
+		}
+		if (!parsed.classes.length) delete parsed.classes;
+		if (!parsed.attributes.length) delete parsed.attributes;
+		if (!parsed.pseudos.length) delete parsed.pseudos;
+		if (!parsed.classes && !parsed.attributes && !parsed.pseudos) parsed = null;
+		return Selectors.Cache.parsed[selector] = parsed;
+	},
+
+	parseTagAndID: function(selector){
+		var tag = selector.match(Selectors.RegExps.tag);
+		var id = selector.match(Selectors.RegExps.id);
+		return [(tag) ? tag[1] : '*', (id) ? id[1] : false];
+	},
+
+	filter: function(item, parsed, local){
+		var i;
+		if (parsed.classes){
+			for (i = parsed.classes.length; i--; i){
+				var cn = parsed.classes[i];
+				if (!Selectors.Filters.byClass(item, cn)) return false;
+			}
+		}
+		if (parsed.attributes){
+			for (i = parsed.attributes.length; i--; i){
+				var att = parsed.attributes[i];
+				if (!Selectors.Filters.byAttribute(item, att.name, att.operator, att.value)) return false;
+			}
+		}
+		if (parsed.pseudos){
+			for (i = parsed.pseudos.length; i--; i){
+				var psd = parsed.pseudos[i];
+				if (!Selectors.Filters.byPseudo(item, psd.parser, psd.argument, local)) return false;
+			}
+		}
+		return true;
+	},
+
+	getByTagAndID: function(ctx, tag, id){
+		if (id){
+			var item = (ctx.getElementById) ? ctx.getElementById(id, true) : Element.getElementById(ctx, id, true);
+			return (item && Selectors.Filters.byTag(item, tag)) ? [item] : [];
+		} else {
+			return ctx.getElementsByTagName(tag);
+		}
+	},
+
+	search: function(self, expression, local){
+		var splitters = [];
+
+		var selectors = expression.trim().replace(Selectors.RegExps.splitter, function(m0, m1, m2){
+			splitters.push(m1);
+			return ':)' + m2;
+		}).split(':)');
+
+		var items, filtered, item;
+
+		for (var i = 0, l = selectors.length; i < l; i++){
+
+			var selector = selectors[i];
+
+			if (i == 0 && Selectors.RegExps.quick.test(selector)){
+				items = self.getElementsByTagName(selector);
+				continue;
+			}
+
+			var splitter = splitters[i - 1];
+
+			var tagid = Selectors.Utils.parseTagAndID(selector);
+			var tag = tagid[0], id = tagid[1];
+
+			if (i == 0){
+				items = Selectors.Utils.getByTagAndID(self, tag, id);
+			} else {
+				var uniques = {}, found = [];
+				for (var j = 0, k = items.length; j < k; j++) found = Selectors.Getters[splitter](found, items[j], tag, id, uniques);
+				items = found;
+			}
+
+			var parsed = Selectors.Utils.parseSelector(selector);
+
+			if (parsed){
+				filtered = [];
+				for (var m = 0, n = items.length; m < n; m++){
+					item = items[m];
+					if (Selectors.Utils.filter(item, parsed, local)) filtered.push(item);
+				}
+				items = filtered;
+			}
+
+		}
+
+		return items;
+
+	}
+
+};
+
+Selectors.Getters = {
+
+	' ': function(found, self, tag, id, uniques){
+		var items = Selectors.Utils.getByTagAndID(self, tag, id);
+		for (var i = 0, l = items.length; i < l; i++){
+			var item = items[i];
+			if (Selectors.Utils.chk(item, uniques)) found.push(item);
+		}
+		return found;
+	},
+
+	'>': function(found, self, tag, id, uniques){
+		var children = Selectors.Utils.getByTagAndID(self, tag, id);
+		for (var i = 0, l = children.length; i < l; i++){
+			var child = children[i];
+			if (child.parentNode == self && Selectors.Utils.chk(child, uniques)) found.push(child);
+		}
+		return found;
+	},
+
+	'+': function(found, self, tag, id, uniques){
+		while ((self = self.nextSibling)){
+			if (self.nodeType == 1){
+				if (Selectors.Utils.chk(self, uniques) && Selectors.Filters.byTag(self, tag) && Selectors.Filters.byID(self, id)) found.push(self);
+				break;
+			}
+		}
+		return found;
+	},
+
+	'~': function(found, self, tag, id, uniques){
+		while ((self = self.nextSibling)){
+			if (self.nodeType == 1){
+				if (!Selectors.Utils.chk(self, uniques)) break;
+				if (Selectors.Filters.byTag(self, tag) && Selectors.Filters.byID(self, id)) found.push(self);
+			}
+		}
+		return found;
+	}
+
+};
+
+Selectors.Filters = {
+
+	byTag: function(self, tag){
+		return (tag == '*' || (self.tagName && self.tagName.toLowerCase() == tag));
+	},
+
+	byID: function(self, id){
+		return (!id || (self.id && self.id == id));
+	},
+
+	byClass: function(self, klass){
+		return (self.className && self.className.contains && self.className.contains(klass, ' '));
+	},
+
+	byPseudo: function(self, parser, argument, local){
+		return parser.call(self, argument, local);
+	},
+
+	byAttribute: function(self, name, operator, value){
+		var result = Element.prototype.getProperty.call(self, name);
+		if (!result) return (operator == '!=');
+		if (!operator || value == undefined) return true;
+		switch (operator){
+			case '=': return (result == value);
+			case '*=': return (result.contains(value));
+			case '^=': return (result.substr(0, value.length) == value);
+			case '$=': return (result.substr(result.length - value.length) == value);
+			case '!=': return (result != value);
+			case '~=': return result.contains(value, ' ');
+			case '|=': return result.contains(value, '-');
+		}
+		return false;
+	}
+
+};
+
+Selectors.Pseudo = new Hash({
+
+	// w3c pseudo selectors
+
+	checked: function(){
+		return this.checked;
+	},
+	
+	empty: function(){
+		return !(this.innerText || this.textContent || '').length;
+	},
+
+	not: function(selector){
+		return !Element.match(this, selector);
+	},
+
+	contains: function(text){
+		return (this.innerText || this.textContent || '').contains(text);
+	},
+
+	'first-child': function(){
+		return Selectors.Pseudo.index.call(this, 0);
+	},
+
+	'last-child': function(){
+		var element = this;
+		while ((element = element.nextSibling)){
+			if (element.nodeType == 1) return false;
+		}
+		return true;
+	},
+
+	'only-child': function(){
+		var prev = this;
+		while ((prev = prev.previousSibling)){
+			if (prev.nodeType == 1) return false;
+		}
+		var next = this;
+		while ((next = next.nextSibling)){
+			if (next.nodeType == 1) return false;
+		}
+		return true;
+	},
+
+	'nth-child': function(argument, local){
+		argument = (argument == undefined) ? 'n' : argument;
+		var parsed = Selectors.Utils.parseNthArgument(argument);
+		if (parsed.special != 'n') return Selectors.Pseudo[parsed.special].call(this, parsed.a, local);
+		var count = 0;
+		local.positions = local.positions || {};
+		var uid = $uid(this);
+		if (!local.positions[uid]){
+			var self = this;
+			while ((self = self.previousSibling)){
+				if (self.nodeType != 1) continue;
+				count ++;
+				var position = local.positions[$uid(self)];
+				if (position != undefined){
+					count = position + count;
+					break;
+				}
+			}
+			local.positions[uid] = count;
+		}
+		return (local.positions[uid] % parsed.a == parsed.b);
+	},
+
+	// custom pseudo selectors
+
+	index: function(index){
+		var element = this, count = 0;
+		while ((element = element.previousSibling)){
+			if (element.nodeType == 1 && ++count > index) return false;
+		}
+		return (count == index);
+	},
+
+	even: function(argument, local){
+		return Selectors.Pseudo['nth-child'].call(this, '2n+1', local);
+	},
+
+	odd: function(argument, local){
+		return Selectors.Pseudo['nth-child'].call(this, '2n', local);
+	},
+	
+	selected: function(){
+		return this.selected;
+	},
+	
+	enabled: function(){
+		return (this.disabled === false);
+	}
+
+});
+
+
+/*
+---
+
+name: Swiff
+
+description: Wrapper for embedding SWF movies. Supports External Interface Communication.
+
+license: MIT-style license.
+
+credits: Flash detection & Internet Explorer + Flash Player 9 fix inspired by SWFObject.
+
+requires: [Options, $util]
+
+provides: Swiff
+
+...
+*/
+
+var Swiff = new Class({
+
+	Implements: [Options],
+
+	options: {
+		id: null,
+		height: 1,
+		width: 1,
+		container: null,
+		properties: {},
+		params: {
+			quality: 'high',
+			allowScriptAccess: 'always',
+			wMode: 'transparent',
+			swLiveConnect: true
+		},
+		callBacks: {},
+		vars: {}
+	},
+
+	toElement: function(){
+		return this.object;
+	},
+
+	initialize: function(path, options){
+		this.instance = 'Swiff_' + $time();
+
+		this.setOptions(options);
+		options = this.options;
+		var id = this.id = options.id || this.instance;
+		var container = document.id(options.container);
+
+		Swiff.CallBacks[this.instance] = {};
+
+		var params = options.params, vars = options.vars, callBacks = options.callBacks;
+		var properties = $extend({height: options.height, width: options.width}, options.properties);
+
+		var self = this;
+
+		for (var callBack in callBacks){
+			Swiff.CallBacks[this.instance][callBack] = (function(option){
+				return function(){
+					return option.apply(self.object, arguments);
+				};
+			})(callBacks[callBack]);
+			vars[callBack] = 'Swiff.CallBacks.' + this.instance + '.' + callBack;
+		}
+
+		params.flashVars = Hash.toQueryString(vars);
+		if (Browser.Engine.trident){
+			properties.classid = 'clsid:D27CDB6E-AE6D-11cf-96B8-444553540000';
+			params.movie = path;
+		} else {
+			properties.type = 'application/x-shockwave-flash';
+			properties.data = path;
+		}
+		var build = '<object id="' + id + '"';
+		for (var property in properties) build += ' ' + property + '="' + properties[property] + '"';
+		build += '>';
+		for (var param in params){
+			if (params[param]) build += '<param name="' + param + '" value="' + params[param] + '" />';
+		}
+		build += '</object>';
+		this.object = ((container) ? container.empty() : new Element('div')).set('html', build).firstChild;
+	},
+
+	replaces: function(element){
+		element = document.id(element, true);
+		element.parentNode.replaceChild(this.toElement(), element);
+		return this;
+	},
+
+	inject: function(element){
+		document.id(element, true).appendChild(this.toElement());
+		return this;
+	},
+
+	remote: function(){
+		return Swiff.remote.apply(Swiff, [this.toElement()].extend(arguments));
+	}
+
+});
+
+Swiff.CallBacks = {};
+
+Swiff.remote = function(obj, fn){
+	var rs = obj.CallFunction('<invoke name="' + fn + '" returntype="javascript">' + __flash__argumentsToXML(arguments, 2) + '</invoke>');
+	return eval(rs);
+};
+
Index: modules/uoa-validator-admin/trunk/src/main/webapp/jsps/info.jsp
===================================================================
--- modules/uoa-validator-admin/trunk/src/main/webapp/jsps/info.jsp	(nonexistent)
+++ modules/uoa-validator-admin/trunk/src/main/webapp/jsps/info.jsp	(revision 47450)
@@ -0,0 +1,25 @@
+<%@ page contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<%@ taglib prefix="s" uri="/struts-tags"%>
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<link href="jsps/style.css" rel="stylesheet" type="text/css" media="screen" />
+<link href="jsps/favicon.ico" rel="shortcut icon" type="image/x-icon" />
+<title><s:text name="info.title"/></title>
+</head>
+<body>
+<div id="wrapper">
+	<jsp:include page="menu.jsp"/>
+	<div id="page">
+	<div id="page-bgtop">
+		<div id="content">
+			<s:actionerror escape="false"/> 
+			<s:actionmessage escape="false"/> 
+		</div>
+		<div style="clear: both;">&nbsp;</div>
+	</div>
+	</div>
+</div>
+</body>
+</html>
\ No newline at end of file
Index: modules/uoa-validator-admin/trunk/src/main/webapp/jsps/table-images/pattern.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/trunk/src/main/webapp/jsps/table-images/pattern.png
===================================================================
--- modules/uoa-validator-admin/trunk/src/main/webapp/jsps/table-images/pattern.png	(nonexistent)
+++ modules/uoa-validator-admin/trunk/src/main/webapp/jsps/table-images/pattern.png	(revision 47450)

Property changes on: modules/uoa-validator-admin/trunk/src/main/webapp/jsps/table-images/pattern.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/trunk/src/main/webapp/jsps/table-images/botleft.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/trunk/src/main/webapp/jsps/table-images/botleft.png
===================================================================
--- modules/uoa-validator-admin/trunk/src/main/webapp/jsps/table-images/botleft.png	(nonexistent)
+++ modules/uoa-validator-admin/trunk/src/main/webapp/jsps/table-images/botleft.png	(revision 47450)

Property changes on: modules/uoa-validator-admin/trunk/src/main/webapp/jsps/table-images/botleft.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/trunk/src/main/webapp/jsps/table-images/gradhover.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/trunk/src/main/webapp/jsps/table-images/gradhover.png
===================================================================
--- modules/uoa-validator-admin/trunk/src/main/webapp/jsps/table-images/gradhover.png	(nonexistent)
+++ modules/uoa-validator-admin/trunk/src/main/webapp/jsps/table-images/gradhover.png	(revision 47450)

Property changes on: modules/uoa-validator-admin/trunk/src/main/webapp/jsps/table-images/gradhover.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/trunk/src/main/webapp/jsps/table-images/blurry.jpg
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/trunk/src/main/webapp/jsps/table-images/blurry.jpg
===================================================================
--- modules/uoa-validator-admin/trunk/src/main/webapp/jsps/table-images/blurry.jpg	(nonexistent)
+++ modules/uoa-validator-admin/trunk/src/main/webapp/jsps/table-images/blurry.jpg	(revision 47450)

Property changes on: modules/uoa-validator-admin/trunk/src/main/webapp/jsps/table-images/blurry.jpg
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/trunk/src/main/webapp/jsps/manuals/example_record.txt
===================================================================
--- modules/uoa-validator-admin/trunk/src/main/webapp/jsps/manuals/example_record.txt	(nonexistent)
+++ modules/uoa-validator-admin/trunk/src/main/webapp/jsps/manuals/example_record.txt	(revision 47450)
@@ -0,0 +1,25 @@
+<header>
+	<identifier>oai:openaire.cern.ch:1</identifier>
+	<datestamp>2011-01-18T14:26:14Z</datestamp>
+	<setSpec>EC_fundedresources</setSpec>
+</header>
+<metadata>
+	<oai_dc:dc xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:oai_dc="http://www.openarchives.org/OAI/2.0/oai_dc/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.openarchives.org/OAI/2.0/oai_dc/ http://www.openarchives.org/OAI/2.0/oai_dc.xsd">
+		<dc:language>eng</dc:language>
+		<dc:creator>Berchum, Marnix</dc:creator>
+		<dc:creator>Rodrigues, Eloy</dc:creator>
+		<dc:contributor>Brown, John</dc:contributor>
+		<dc:title>OpenAIRE Guidelines</dc:title>
+		<dc:date>2010-09-01</dc:date>
+		<dc:identifier>http://openaire.cern.ch/record/1</dc:identifier>
+		<dc:description>
+			The OpenAIRE Guidelines will provide orientation for repository managers to define and implement their local data management policies in compliance with the Open Access demands of the European Commission. Furthermore they will comply with the technical requirements of the OpenAIRE infrastructure that is being established to support and monitor the implementation of the FP7 OA pilot. By implementing these Guidelines repository managers are facilitating the authors who deposit their publications in the repository, in complying with the EC Open Access requirements. For developers of repository platforms the Guidelines provide guidance to add supportive functionalities for authors of EC funded research in future versions.
+		</dc:description>
+		<dc:relation>info:eu-repo/grantAgreement/EC/FP7/246686</dc:relation>
+		<dc:rights>info:eu-repo/semantics/openAccess</dc:rights>
+		<dc:audience>Librarians</dc:audience>
+		<dc:type>info:eu-repo/semantics/article</dc:type>
+		<dc:format>application/pdf</dc:format>
+		<dc:source>ISSN:0165-0505</dc:source>
+	</oai_dc:dc>
+</metadata>
\ No newline at end of file
Index: modules/uoa-validator-admin/trunk/src/main/webapp/WEB-INF/applicationContext.xml
===================================================================
--- modules/uoa-validator-admin/trunk/src/main/webapp/WEB-INF/applicationContext.xml	(nonexistent)
+++ modules/uoa-validator-admin/trunk/src/main/webapp/WEB-INF/applicationContext.xml	(revision 47450)
@@ -0,0 +1,44 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<beans xmlns="http://www.springframework.org/schema/beans"
+	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p"
+	xmlns:context="http://www.springframework.org/schema/context"
+
+	xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.0.xsd
+	http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.0.xsd">
+
+
+	
+<!-- 	<import resource="classpath*:/eu/dnetlib/validator/admin/**/springContext-*.xml" /> -->
+<!-- 	<import resource="classpath*:/eu/dnetlib/validator/commons/**/springContext-*.xml" /> -->
+
+	<context:annotation-config />
+
+<bean class="eu.dnetlib.validator.web.config.CascadingPropertyLoader"
+		id="propertyLoader">
+		<property name="order" value="2" />
+		<property name="properties">
+			<bean class="eu.dnetlib.conf.WebappContextProperyFactory">
+				<property name="propertyFetcher">
+					<bean class="eu.dnetlib.conf.PropertyFetcher" />
+				</property>
+			</bean>
+		</property>
+		<property name="ignoreUnresolvablePlaceholders" value="true" />
+		<property name="locations">			<list>
+				<value>classpath*:/gr/**/springContext-*.properties</value>
+				<value>classpath*:/eu/**/springContext-*.properties</value>
+
+				<value>classpath*:dnet-site-wizard.properties</value>
+				<value>classpath*:dnet-site-override.properties</value>
+				<value>classpath*:dnet-wizard.properties</value>
+				<value>classpath*:dnet-override.properties</value>
+				<value>classpath*:dnet-validator-wizard.properties</value>
+				<value>classpath*:dnet-validator-override.properties</value>
+				<value>classpath*:dnet-site-force-override.properties</value>
+				<value>classpath*:dnet-force-override.properties</value>
+			</list>
+		</property>
+	</bean>
+
+</beans>
\ No newline at end of file
Index: modules/uoa-validator-admin/trunk
===================================================================
--- modules/uoa-validator-admin/trunk	(nonexistent)
+++ modules/uoa-validator-admin/trunk	(revision 47450)

Property changes on: modules/uoa-validator-admin/trunk
___________________________________________________________________
Added: svn:ignore
## -0,0 +1,6 ##
+target
+.classpath
+.settings
+.project
+*.sh
+*.iml
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/pom.xml
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/pom.xml	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/pom.xml	(revision 47450)
@@ -0,0 +1,77 @@
+<?xml version="1.0" ?>
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+	<parent>
+		<groupId>eu.dnetlib</groupId>
+		<artifactId>dnet-container-parent</artifactId>
+		<version>1.0.0</version>
+	</parent>
+	<modelVersion>4.0.0</modelVersion>
+	<groupId>eu.dnetlib</groupId>
+	<artifactId>uoa-validator-admin</artifactId>
+	<packaging>war</packaging>
+	<version>2.1.0</version>
+	<scm>
+		<developerConnection>scm:svn:https://svn.driver.research-infrastructures.eu/driver/dnet40/modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0</developerConnection>
+	</scm>
+	<properties>
+		<struts2.version>2.3.32</struts2.version>
+	</properties>
+
+	<dependencies>
+		<dependency>
+			<groupId>org.apache.struts</groupId>
+			<artifactId>struts2-core</artifactId>
+			<version>${struts2.version}</version>
+<!-- 			<exclusions> -->
+<!-- 				<exclusion>  declare the exclusion here -->
+<!-- 					<groupId>javax.servlet.jsp</groupId> -->
+<!-- 					<artifactId>jsp-api</artifactId> -->
+<!-- 				</exclusion> -->
+<!-- 			</exclusions> -->
+		</dependency>
+		<dependency>
+			<groupId>org.apache.struts</groupId>
+			<artifactId>struts2-spring-plugin</artifactId>
+			<version>${struts2.version}</version>
+			<exclusions>
+				<exclusion>
+					<groupId>org.springframework</groupId>
+					<artifactId>spring-beans</artifactId>
+				</exclusion>
+				<exclusion>
+					<groupId>org.springframework</groupId>
+					<artifactId>spring-core</artifactId>
+				</exclusion>
+				<exclusion>
+					<groupId>org.springframework</groupId>
+					<artifactId>spring-context</artifactId>
+				</exclusion>
+				<exclusion>
+					<groupId>org.springframework</groupId>
+					<artifactId>spring-web</artifactId>
+				</exclusion>
+			</exclusions>
+		</dependency>
+		<dependency>
+			<groupId>org.apache.struts</groupId>
+			<artifactId>struts2-dojo-plugin</artifactId>
+			<version>${struts2.version}</version>
+		</dependency>
+		<dependency>
+			<groupId>com.jgeppert.struts2.jquery</groupId>
+			<artifactId>struts2-jquery-plugin</artifactId>
+			<version>3.7.1</version>
+		</dependency>
+		
+		<dependency>
+			<groupId>com.unboundid</groupId>
+			<artifactId>unboundid-ldapsdk</artifactId>
+			<version>1.1.3</version>
+		</dependency>
+        <dependency>
+            <groupId>eu.dnetlib</groupId>
+            <artifactId>uoa-validator-commons</artifactId>
+            <version>[2.0.0, 3.0.0-SNAPSHOT)</version>
+        </dependency>
+	</dependencies>
+</project>
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/images/box_alert.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/images/box_alert.png
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/images/box_alert.png	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/images/box_alert.png	(revision 47450)

Property changes on: modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/images/box_alert.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/images/register.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/images/register.png
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/images/register.png	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/images/register.png	(revision 47450)

Property changes on: modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/images/register.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/images/icon_folder.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/images/icon_folder.png
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/images/icon_folder.png	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/images/icon_folder.png	(revision 47450)

Property changes on: modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/images/icon_folder.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/images/register.jpg
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/images/register.jpg
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/images/register.jpg	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/images/register.jpg	(revision 47450)

Property changes on: modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/images/register.jpg
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/images/arrow_right.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/images/arrow_right.png
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/images/arrow_right.png	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/images/arrow_right.png	(revision 47450)

Property changes on: modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/images/arrow_right.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/java/eu/dnetlib/validator/admin/api/impls/UserApiLDAP.java
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/java/eu/dnetlib/validator/admin/api/impls/UserApiLDAP.java	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/java/eu/dnetlib/validator/admin/api/impls/UserApiLDAP.java	(revision 47450)
@@ -0,0 +1,438 @@
+package eu.dnetlib.validator.admin.api.impls;
+
+import java.security.GeneralSecurityException;
+import java.security.MessageDigest;
+import java.util.Random;
+import java.util.UUID;
+
+import org.apache.log4j.Logger;
+
+import com.unboundid.ldap.sdk.Attribute;
+import com.unboundid.ldap.sdk.DN;
+import com.unboundid.ldap.sdk.Entry;
+import com.unboundid.ldap.sdk.Filter;
+import com.unboundid.ldap.sdk.LDAPConnection;
+import com.unboundid.ldap.sdk.Modification;
+import com.unboundid.ldap.sdk.ModificationType;
+import com.unboundid.ldap.sdk.SearchRequest;
+import com.unboundid.ldap.sdk.SearchResult;
+import com.unboundid.ldap.sdk.SearchResultEntry;
+import com.unboundid.ldap.sdk.SearchScope;
+import com.unboundid.util.Base64;
+
+import eu.dnetlib.domain.functionality.UserProfile;
+import eu.dnetlib.validator.admin.api.UserApi;
+
+public class UserApiLDAP implements UserApi {
+
+	transient Logger logger = Logger.getLogger(UserApiLDAP.class);
+
+	private int ldapPort = 0;
+	private String ldapAddress;
+	private String ldapUsername;
+	private String ldapPassword;
+	private String ldapUsersDN;
+
+	@Override
+	public boolean activateUser(String activationId) throws Exception {
+		LDAPConnection connection = null;
+		try {
+			logger.debug("activating user with activationId " + activationId);
+			connection = new LDAPConnection(ldapAddress, ldapPort, ldapUsername, ldapPassword);
+			Filter filter = Filter.createEqualityFilter("employeeNumber", activationId);
+			SearchRequest searchRequest = new SearchRequest(ldapUsersDN, SearchScope.SUB, filter, "uid");
+			SearchResult searchResult = connection.search(searchRequest);
+			String dn = null;
+
+			if ( searchResult.getSearchEntries().size() > 0	) {
+			
+				for (SearchResultEntry entry : searchResult.getSearchEntries()) {
+					dn = "uid=" + entry.getAttributeValue("uid") + "," + ldapUsersDN;
+				}
+
+				Modification mod1 = new Modification(ModificationType.REPLACE, "JoomlaBlockUser", "0");
+				Modification mod2 = new Modification(ModificationType.REPLACE, "employeeNumber");
+				connection.modify(dn, mod1, mod2);
+				return true;
+			} else {
+				return false;
+			}
+		} catch (Exception e) {
+			logger.error("", e);
+			throw e;
+		} finally {
+			if (connection != null)
+				connection.close();
+		}
+	}
+
+	@Override
+	public String addUser(String username, String email, String password, String firstName, String lastName, String institution) throws Exception {
+		logger.debug("adding user " + username + " " + email + " to ldap");
+		Attribute cn = new Attribute("cn", username);
+		Attribute displayName = new Attribute("displayName", firstName + " " + lastName);
+		Attribute mail = new Attribute("mail", email);
+		Attribute givenName = new Attribute("givenName", firstName);
+		Attribute joomlaBlockUser = new Attribute("JoomlaBlockUser", "1");
+		Attribute joomlaGroup = new Attribute("JoomlaGroup", "Registered");
+		Attribute objectClass = new Attribute("objectClass", "top", "inetOrgPerson", "JoomlaUser");
+		Attribute userPassword = new Attribute("userPassword", Joomla15PasswordHash.create(password));
+		Attribute sn = new Attribute("sn", lastName);
+		Attribute uid = new Attribute("uid", username);
+		
+			
+		// Attribute joomlaUserParams = new Attribute("JoomlaUserParams", "");
+		String activationId = UUID.randomUUID().toString();
+		Attribute x500UniqueIdentifier = new Attribute("employeeNumber", activationId);
+		LDAPConnection connection = null;
+		try {
+			DN dn = new DN("uid=" + username + "," + ldapUsersDN);
+			Entry entry;
+			if (institution != null) {
+				Attribute o = new Attribute("o", institution);
+				entry = new Entry(dn.toNormalizedString(), cn, displayName, mail, givenName, joomlaBlockUser, joomlaGroup, objectClass, userPassword, sn, uid, x500UniqueIdentifier, o);
+						
+			} else {
+				entry = new Entry(dn.toNormalizedString(), cn, displayName, mail, givenName, joomlaBlockUser, joomlaGroup, objectClass, userPassword, sn, uid/*
+																																								 * ,
+																																								 * joomlaUserParams
+																																								 */, x500UniqueIdentifier);
+			}
+			connection = new LDAPConnection(ldapAddress, ldapPort, ldapUsername, ldapPassword);
+			connection.add(entry);
+
+			return activationId;
+		} catch (Exception e) {
+			logger.error("", e);
+			throw e;
+		} finally {
+			if (connection != null)
+				connection.close();
+		}
+	}
+
+	@Override
+	public boolean correctCreds(String email, String password) throws Exception {
+		LDAPConnection connection = null;
+		try {
+			logger.debug("checking if user " + email + " entered a correct password when logging in");
+			connection = new LDAPConnection(ldapAddress, ldapPort, ldapUsername, ldapPassword);
+			Filter filter = Filter.createEqualityFilter("mail", email);
+			SearchRequest searchRequest = new SearchRequest(ldapUsersDN, SearchScope.SUB, filter, "userPassword");
+			SearchResult searchResult = connection.search(searchRequest);
+			for (SearchResultEntry entry : searchResult.getSearchEntries()) {
+				if (Joomla15PasswordHash.check(password, entry.getAttributeValue("userPassword")))
+					return true;
+			}
+			return false;
+		} catch (Exception e) {
+			logger.error("", e);
+			throw e;
+		} finally {
+			if (connection != null)
+				connection.close();
+		}
+	}
+
+	@Override
+	public void editUser(UserProfile user) throws Exception {
+		LDAPConnection connection = null;
+		try {
+			logger.debug("editing user " + user.getEmail());
+			connection = new LDAPConnection(ldapAddress, ldapPort, ldapUsername, ldapPassword);
+			Filter filter = Filter.createEqualityFilter("mail", user.getEmail());
+			SearchRequest searchRequest = new SearchRequest(ldapUsersDN, SearchScope.SUB, filter, "uid");
+			SearchResult searchResult = connection.search(searchRequest);
+			String dn = null;
+			for (SearchResultEntry entry : searchResult.getSearchEntries()) {
+				dn = "uid=" + entry.getAttributeValue("uid") + "," + ldapUsersDN;
+			}
+			Modification mod1 = new Modification(ModificationType.REPLACE, "displayName", user.getFirstname() + " " + user.getLastname());
+			Modification mod2 = new Modification(ModificationType.REPLACE, "givenName", user.getFirstname());
+			Modification mod3 = new Modification(ModificationType.REPLACE, "sn", user.getLastname());
+			Modification mod4 = new Modification(ModificationType.REPLACE, "o", user.getInstitution());
+			connection.modify(dn, mod1, mod2, mod3, mod4);
+		} catch (Exception e) {
+			logger.error("", e);
+			throw e;
+		} finally {
+			if (connection != null)
+				connection.close();
+		}
+	}
+
+	@Override
+	public UserProfile getUser(String userIdentifier) throws Exception {
+		LDAPConnection connection = null;
+		try {
+			logger.debug("getting user " + userIdentifier + " from ldap");
+			connection = new LDAPConnection(ldapAddress, ldapPort, ldapUsername, ldapPassword);
+			Filter filter = Filter.createEqualityFilter("mail", userIdentifier);
+			SearchRequest searchRequest = new SearchRequest(ldapUsersDN, SearchScope.SUB, filter, "mail", "givenName", "sn", "o", "uid");
+			SearchResult searchResult = connection.search(searchRequest);
+			UserProfile profile = new UserProfile();
+			for (SearchResultEntry entry : searchResult.getSearchEntries()) {
+				profile.setEmail(entry.getAttributeValue("mail"));
+				profile.setFirstname(entry.getAttributeValue("givenName"));
+				profile.setLastname(entry.getAttributeValue("sn"));
+				profile.setInstitution(entry.getAttributeValue("o"));
+				profile.setUsername(entry.getAttributeValue("uid"));
+			}
+			return profile;
+		} catch (Exception e) {
+			logger.error("", e);
+			throw e;
+		} finally {
+			if (connection != null)
+				connection.close();
+		}
+	}
+
+	@Override
+	public boolean isAdmin(String email) throws Exception {
+		LDAPConnection connection = null;
+		try {
+			logger.debug("checking if user " + email + " is an administrator");
+			connection = new LDAPConnection(ldapAddress, ldapPort, ldapUsername, ldapPassword);
+			Filter filter = Filter.createEqualityFilter("mail", email);
+			SearchRequest searchRequest = new SearchRequest(ldapUsersDN, SearchScope.SUB, filter, "JoomlaGroup");
+			SearchResult searchResult = connection.search(searchRequest);
+
+			for (SearchResultEntry entry : searchResult.getSearchEntries()) {
+				for (String role : entry.getAttributeValues("JoomlaGroup"))
+					if (role.equals("validatorAdmin"))
+						return true;
+			}
+			logger.debug(email + " is not administrator");
+			return false;
+		} catch (Exception e) {
+			logger.error("", e);
+			throw e;
+		} finally {
+			if (connection != null)
+				connection.close();
+		}
+	}
+
+	@Override
+	public boolean isUserActivated(String email) throws Exception {
+		LDAPConnection connection = null;
+		try {
+			logger.debug("checking if user " + email + " is activated");
+			connection = new LDAPConnection(ldapAddress, ldapPort, ldapUsername, ldapPassword);
+			Filter filter = Filter.createEqualityFilter("mail", email);
+			SearchRequest searchRequest = new SearchRequest(ldapUsersDN, SearchScope.SUB, filter, "JoomlaBlockUser");
+			SearchResult searchResult = connection.search(searchRequest);
+			for (SearchResultEntry entry : searchResult.getSearchEntries()) {
+				int val = entry.getAttributeValueAsInteger("JoomlaBlockUser");
+				if (val == 0)
+					return true;
+				else
+					return false;
+			}
+		} catch (Exception e) {
+			logger.error("", e);
+			throw e;
+		} finally {
+			if (connection != null)
+				connection.close();
+		}
+		return false;
+	}
+
+	@Override
+	public String prepareResetPassword(String email) throws Exception {
+		LDAPConnection connection = null;
+		try {
+			logger.debug("preparing reset password for user " + email);
+			connection = new LDAPConnection(ldapAddress, ldapPort, ldapUsername, ldapPassword);
+			Filter filter = Filter.createEqualityFilter("mail", email);
+			SearchRequest searchRequest = new SearchRequest(ldapUsersDN, SearchScope.SUB, filter, "uid");
+			SearchResult searchResult = connection.search(searchRequest);
+			String dn = null;
+			for (SearchResultEntry entry : searchResult.getSearchEntries()) {
+				dn = "uid=" + entry.getAttributeValue("uid") + "," + ldapUsersDN;
+			}
+			String uuid = UUID.randomUUID().toString();
+			Modification mod = new Modification(ModificationType.REPLACE, "employeeNumber", uuid);
+			connection.modify(dn, mod);
+			return uuid;
+		} catch (Exception e) {
+			logger.error("", e);
+			throw e;
+		} finally {
+			if (connection != null)
+				connection.close();
+		}
+	}
+
+	@Override
+	public void resetPassword(String uuid, String password) throws Exception {
+		LDAPConnection connection = null;
+		try {
+			connection = new LDAPConnection(ldapAddress, ldapPort, ldapUsername, ldapPassword);
+			Filter filter = Filter.createEqualityFilter("employeeNumber", uuid);
+			SearchRequest searchRequest = new SearchRequest(ldapUsersDN, SearchScope.SUB, filter, "uid");
+			SearchResult searchResult = connection.search(searchRequest);
+			String dn = null;
+			for (SearchResultEntry entry : searchResult.getSearchEntries()) {
+				dn = "uid=" + entry.getAttributeValue("uid") + "," + ldapUsersDN;
+			}
+			Modification mod1 = new Modification(ModificationType.REPLACE, "userPassword", Joomla15PasswordHash.create(password));
+			Modification mod2 = new Modification(ModificationType.REPLACE, "employeeNumber");
+			connection.modify(dn, mod1, mod2);
+		} catch (Exception e) {
+			logger.error("", e);
+			throw e;
+		} finally {
+			if (connection != null)
+				connection.close();
+		}
+	}
+
+	@Override
+	public boolean userExists(String email) throws Exception {
+		LDAPConnection connection = null;
+		try {
+			logger.debug("checking if user " + email + " exists in ldap");
+			connection = new LDAPConnection(ldapAddress, ldapPort, ldapUsername, ldapPassword);
+			Filter filter = Filter.createEqualityFilter("mail", email);
+			SearchRequest searchRequest = new SearchRequest(ldapUsersDN, SearchScope.SUB, filter, "mail");
+
+			SearchResult searchResult = connection.search(searchRequest);
+			if (!searchResult.getSearchEntries().isEmpty())
+				return true;
+
+			return false;
+		} catch (Exception e) {
+			logger.error("", e);
+			throw e;
+		} finally {
+			if (connection != null)
+				connection.close();
+		}
+	}
+
+	@Override
+	public boolean usernameExists(String username) throws Exception {
+		LDAPConnection connection = null;
+		try {
+			logger.debug("checking if user " + username + " exists in ldap");
+			connection = new LDAPConnection(ldapAddress, ldapPort, ldapUsername, ldapPassword);
+			Filter filter = Filter.createEqualityFilter("uid", username);
+			SearchRequest searchRequest = new SearchRequest(ldapUsersDN, SearchScope.SUB, filter, "uid");
+			SearchResult searchResult = connection.search(searchRequest);
+
+			if (!searchResult.getSearchEntries().isEmpty()) {
+				return true;
+			}
+
+			return false;
+		} catch (Exception e) {
+			logger.error("", e);
+			throw e;
+		} finally {
+			if (connection != null)
+				connection.close();
+		}
+	}
+
+	@Override
+	public String getEmailFromUsername(String username) throws Exception {
+		LDAPConnection connection = null;
+		try {
+			logger.debug("getting email for user " + username);
+			connection = new LDAPConnection(ldapAddress, ldapPort, ldapUsername, ldapPassword);
+			Filter filter = Filter.createEqualityFilter("uid", username);
+			SearchRequest searchRequest = new SearchRequest(ldapUsersDN, SearchScope.SUB, filter, "mail");
+			SearchResult searchResult = connection.search(searchRequest);
+			for (SearchResultEntry entry : searchResult.getSearchEntries()) {
+				return entry.getAttributeValue("mail");
+			}
+			return null;
+		} catch (Exception e) {
+			logger.error("", e);
+			throw e;
+		} finally {
+			if (connection != null)
+				connection.close();
+		}
+	}
+
+	public void setLdapPort(int ldapPort) {
+		this.ldapPort = ldapPort;
+	}
+
+	public void setLdapAddress(String ldapAddress) {
+		this.ldapAddress = ldapAddress;
+	}
+
+	public void setLdapUsername(String ldapUsername) {
+		this.ldapUsername = ldapUsername;
+	}
+
+	public void setLdapPassword(String ldapPassword) {
+		this.ldapPassword = ldapPassword;
+	}
+
+	public void setLdapUsersDN(String ldapUsersDN) {
+		this.ldapUsersDN = ldapUsersDN;
+	}
+}
+
+class Joomla15PasswordHash 
+{
+   public static boolean check(String passwd,String dbEntry) {
+      String hashed = "{MD5}"+Base64.encode(pack(Joomla15PasswordHash.md5(passwd)));
+      if(dbEntry.equals(hashed))
+    	  return true;
+      else
+    	  return false;
+   }
+
+   static Random _rnd;
+
+   public static String create(String passwd) {
+	   return "{MD5}"+Base64.encode(pack(Joomla15PasswordHash.md5(passwd)));
+   }
+
+   /** Takes the MD5 hash of a sequence of ASCII or LATIN1 characters,
+    *  and returns it as a 32-character lowercase hex string.
+    *
+    *  Equivalent to MySQL's MD5() function 
+    *  and to perl's Digest::MD5::md5_hex(),
+    *  and to PHP's md5().
+    *
+    *  Does no error-checking of the input,  but only uses the low 8 bits
+    *  from each input character.
+    */
+   public static String md5(String data) {
+      byte[] bdata = new byte[data.length()]; int i; byte[] hash;
+
+      for (i=0;i<data.length();i++) bdata[i]=(byte)(data.charAt(i)&0xff );
+
+      try {
+         MessageDigest md5er = MessageDigest.getInstance("MD5");
+         hash = md5er.digest(bdata);
+      } catch (GeneralSecurityException e) { throw new RuntimeException(e); }
+
+      StringBuffer r = new StringBuffer(32);
+      for (i=0;i<hash.length;i++) {
+         String x = Integer.toHexString(hash[i]&0xff);
+         if (x.length()<2) r.append("0");
+         r.append(x);
+      }
+      return r.toString();      
+   }
+   
+   public static byte[] pack(String md5) {
+	    byte[] bytes = new byte[16];
+	    int j = 0;
+	    for(int i=0; i < 31; i+=2) {
+	    	bytes[j] = (byte) Integer.parseInt(md5.charAt(i)+""+md5.charAt(i+1),16);
+	    	j++;
+	    }
+	    return bytes;
+	}
+}
+
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/images/wrong.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/images/wrong.png
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/images/wrong.png	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/images/wrong.png	(revision 47450)

Property changes on: modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/images/wrong.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/images/help2.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/images/help2.png
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/images/help2.png	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/images/help2.png	(revision 47450)

Property changes on: modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/images/help2.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/images/icon_external.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/images/icon_external.png
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/images/icon_external.png	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/images/icon_external.png	(revision 47450)

Property changes on: modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/images/icon_external.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/images/help1.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/images/help1.png
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/images/help1.png	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/images/help1.png	(revision 47450)

Property changes on: modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/images/help1.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/images/module_separator_m.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/images/module_separator_m.png
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/images/module_separator_m.png	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/images/module_separator_m.png	(revision 47450)

Property changes on: modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/images/module_separator_m.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/images/footer_bg_m.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/images/footer_bg_m.png
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/images/footer_bg_m.png	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/images/footer_bg_m.png	(revision 47450)

Property changes on: modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/images/footer_bg_m.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/java/eu/dnetlib/validator/admin/actions/login/AdminInterceptor.java
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/java/eu/dnetlib/validator/admin/actions/login/AdminInterceptor.java	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/java/eu/dnetlib/validator/admin/actions/login/AdminInterceptor.java	(revision 47450)
@@ -0,0 +1,58 @@
+package eu.dnetlib.validator.admin.actions.login;
+
+import java.util.Map;
+
+import com.opensymphony.xwork2.Action;
+import com.opensymphony.xwork2.ActionInvocation;
+import com.opensymphony.xwork2.interceptor.Interceptor;
+
+import eu.dnetlib.validator.admin.api.UserApi;
+import eu.dnetlib.validator.admin.api.ValidatorAdminAPI;
+import eu.dnetlib.validator.admin.config.Constants;
+
+public class AdminInterceptor implements Interceptor {
+
+	private static final long serialVersionUID = -172948943490485824L;
+	private UserApi userAPI = null;
+	private ValidatorAdminAPI validatorAdminAPI = null;
+
+//	private Logger logger = Logger.getLogger(AdminInterceptor.class);
+	
+	@Override
+	public void destroy() {
+
+	}
+
+	@Override
+	public void init() {
+
+	}
+
+	@Override
+	public String intercept(ActionInvocation actionInvocation) throws Exception {
+		Map<String, Object> session = actionInvocation.getInvocationContext().getSession();
+		String auth = (String) session.get(Constants.loggedInField);
+
+		if (this.getUserAPI().isAdmin(auth) || this.getValidatorAdminAPI().userIsMasterAdmin(auth) || this.getValidatorAdminAPI().userIsSecondaryAdmin(auth))
+			return actionInvocation.invoke();
+		else
+			return Action.LOGIN;
+	}
+
+	public UserApi getUserAPI() {
+		return userAPI;
+	}
+
+	public void setUserAPI(UserApi userAPI) {
+		this.userAPI = userAPI;
+	}
+
+	public ValidatorAdminAPI getValidatorAdminAPI() {
+		return validatorAdminAPI;
+	}
+
+	public void setValidatorAdminAPI(ValidatorAdminAPI validatorAdminAPI) {
+		this.validatorAdminAPI = validatorAdminAPI;
+	}
+	
+}
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/images/e-Infrastructure_capacities_tr.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/images/e-Infrastructure_capacities_tr.png
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/images/e-Infrastructure_capacities_tr.png	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/images/e-Infrastructure_capacities_tr.png	(revision 47450)

Property changes on: modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/images/e-Infrastructure_capacities_tr.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/images/left_bg_l.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/images/left_bg_l.png
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/images/left_bg_l.png	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/images/left_bg_l.png	(revision 47450)

Property changes on: modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/images/left_bg_l.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/images/number-1.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/images/number-1.png
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/images/number-1.png	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/images/number-1.png	(revision 47450)

Property changes on: modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/images/number-1.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/java/eu/dnetlib/validator/admin/actions/login/PortalLogin.java
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/java/eu/dnetlib/validator/admin/actions/login/PortalLogin.java	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/java/eu/dnetlib/validator/admin/actions/login/PortalLogin.java	(revision 47450)
@@ -0,0 +1,207 @@
+package eu.dnetlib.validator.admin.actions.login;
+
+import java.util.Calendar;
+import java.util.Map;
+
+import javax.crypto.Mac;
+import javax.crypto.spec.SecretKeySpec;
+import javax.servlet.http.HttpServletRequest;
+
+import org.apache.commons.codec.binary.Base64;
+import org.apache.commons.codec.binary.Hex;
+import org.apache.log4j.Logger;
+import org.apache.struts2.interceptor.ServletRequestAware;
+import org.apache.struts2.interceptor.SessionAware;
+
+import com.opensymphony.xwork2.Action;
+
+import eu.dnetlib.validator.admin.actions.BaseValidatorAction;
+import eu.dnetlib.validator.admin.config.Constants;
+
+public class PortalLogin extends BaseValidatorAction implements ServletRequestAware, SessionAware {
+
+	private static final long serialVersionUID = -6312800103845446815L;
+	private transient Logger logger = Logger.getLogger(PortalLogin.class);
+
+	private HttpServletRequest request;
+	private Map<String, Object> session;
+
+	private String user, ip, valid, signature;
+	private String key;
+	private String email;
+
+	public void validate() {
+		this.clearErrors();
+		logger.debug("validating log-in from portal link " + user + ", " + ip + ", " + valid + ", " + signature);
+		if (user == null || ip == null || valid == null) {
+			this.addActionError(this.getText("login.manual"));
+			return;
+		}
+		if (user.trim().equals("") || ip.trim().equals("") || valid.trim().equals("")) {
+			this.addActionError(this.getText("login.manual"));
+			return;
+		}
+		long millisUntil = 0;
+		try {
+			millisUntil = Long.parseLong(valid);
+		} catch (Exception e) {
+			logger.error("", e);
+			this.addActionError(this.getText("login.manual"));
+			return;
+		}
+
+		try {
+			if (!signatureIsValid((user + ip + valid).trim(), signature.trim())) {
+				logger.debug("signature was not valid");
+				this.addActionError(this.getText("login.manual"));
+				return;
+			}
+		} catch (Exception e) {
+			logger.error("", e);
+			this.addActionError(this.getText("login.manual"));
+			return;
+		}
+
+		Calendar cal = Calendar.getInstance();
+		if (cal.getTime().getTime() > millisUntil) {
+			logger.debug("link has expired current-time: "+cal.getTime().getTime()+" link-time: "+millisUntil);
+			this.addActionError(this.getText("login.manual"));
+			return;
+		}
+
+		if (!ip.trim().equals(request.getRemoteAddr().trim())) {
+			logger.debug("ips are different "+ip+" "+request.getRemoteAddr());
+			this.addActionError(this.getText("login.manual"));
+			return;
+		}
+
+		try {
+//			if (isModeLdap())
+				this.email = this.getUserAPI().getEmailFromUsername(user);
+
+			if (this.email == null) {
+				this.email = "";
+				this.addActionError(this.getText("login.userNotExists"));
+				return;
+			}
+
+			if (!this.getUserAPI().userExists(this.getEmail())) {
+				this.email = "";
+				this.addActionError(this.getText("login.userNotExists"));
+				return;
+			}
+
+			if (!this.getUserAPI().isUserActivated(this.getEmail())) {
+				this.email = "";
+				this.addActionError(this.getText("login.notActivated"));
+				return;
+			}
+		} catch (Exception e) {
+			logger.error("", e);
+			this.addActionError(e.toString());
+		}
+	}
+
+	public String execute() {
+		this.clearErrorsAndMessages();
+		try {
+			logger.debug("logging-in from portal link " + user + ", " + ip + ", " + valid + ", " + signature);
+			session.put(Constants.loggedInField, this.getEmail());
+			session.put("email", this.getEmail());
+			if (this.getUserAPI().isAdmin(email))
+				session.put("isAdmin", "true");
+
+			this.addActionMessage("Logged-in successfully");
+
+			return Action.SUCCESS;
+		} catch (Exception e) {
+			logger.error("error logging-in from portal link " + user + ", " + ip + ", " + valid + ", " + signature, e);
+			this.addActionError(this.getText("generic.error"));
+			reportException(e);
+			return "exception";
+		}
+	}
+
+	public boolean signatureIsValid(String message, String signature) throws Exception {
+		byte[] encode = Hex.decodeHex(new String(Base64.decodeBase64(signature.getBytes())).toCharArray());
+
+		SecretKeySpec key = new SecretKeySpec(this.key.getBytes(), "HmacSHA1");
+		Mac mac = Mac.getInstance(key.getAlgorithm());
+
+		mac.init(key);
+
+		byte[] myEncode = mac.doFinal(message.getBytes());
+		
+		logger.debug("given encode: "+new String(encode)+" my-encode: "+new String(myEncode));
+
+		if (encode.length != myEncode.length)
+			return false;
+
+		for (int i = 0; i < encode.length; i++)
+			if (encode[i] != myEncode[i])
+				return false;
+		return true;
+	}
+
+	public void setServletRequest(HttpServletRequest request) {
+		this.request = request;
+	}
+
+	public HttpServletRequest getServletRequest() {
+		return request;
+	}
+
+	@Override
+	public void setSession(Map<String, Object> session) {
+		this.session = session;
+	}
+
+	public String getUser() {
+		return user;
+	}
+
+	public void setUser(String user) {
+		this.user = user;
+	}
+
+	public String getIp() {
+		return ip;
+	}
+
+	public void setIp(String ip) {
+		this.ip = ip;
+	}
+
+	public String getValid() {
+		return valid;
+	}
+
+	public void setValid(String valid) {
+		this.valid = valid;
+	}
+
+	public String getSignature() {
+		return signature;
+	}
+
+	public void setSignature(String signature) {
+		this.signature = signature;
+	}
+
+	public String getKey() {
+		return key;
+	}
+
+	public void setKey(String key) {
+		this.key = key;
+	}
+
+	public String getEmail() {
+		return email;
+	}
+
+	public void setEmail(String email) {
+		this.email = email;
+	}
+
+}
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/java/eu/dnetlib/validator/admin/actions/login/ResetPassword.java
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/java/eu/dnetlib/validator/admin/actions/login/ResetPassword.java	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/java/eu/dnetlib/validator/admin/actions/login/ResetPassword.java	(revision 47450)
@@ -0,0 +1,70 @@
+package eu.dnetlib.validator.admin.actions.login;
+
+import org.apache.log4j.Logger;
+
+import com.opensymphony.xwork2.Action;
+
+import eu.dnetlib.validator.admin.actions.BaseValidatorAction;
+
+public class ResetPassword extends BaseValidatorAction {
+
+	private static final long serialVersionUID = -4565098546731325693L;
+	private Logger logger = Logger.getLogger(ResetPassword.class);
+	
+	private String password, repassword, securityCode;
+
+	public String execute() {
+		this.clearErrorsAndMessages();
+		try {
+			logger.debug("reseting password with security code " + securityCode);
+			this.getUserAPI().resetPassword(this.getSecurityCode(), this.getPassword());
+			this.addActionMessage(this.getText("resetPassword.success"));
+			return Action.SUCCESS;
+		} catch (Exception e) {
+			logger.error("error reseting password with security code " + securityCode, e);
+			this.addActionError(this.getText("generic.error"));
+			return "exception";
+		}
+	}
+
+	public void validate() {
+		this.clearErrors();
+		try {
+			if (this.getSecurityCode() == null || this.getSecurityCode().length() == 0) {
+				this.addFieldError("securityCode", this.getText("resetPassword.wrongSecurityCode"));
+				return;
+			}
+			if (!this.getPassword().equals(this.getRepassword())) {
+				this.addFieldError("password", this.getText("identicalPasswords"));
+				return;
+			}
+		} catch (Exception e) {
+			this.addActionError("");
+		}
+	}
+
+	public String getPassword() {
+		return password;
+	}
+
+	public void setPassword(String password) {
+		this.password = password;
+	}
+
+	public String getRepassword() {
+		return repassword;
+	}
+
+	public void setRepassword(String repassword) {
+		this.repassword = repassword;
+	}
+
+	public String getSecurityCode() {
+		return securityCode;
+	}
+
+	public void setSecurityCode(String securityCode) {
+		this.securityCode = securityCode;
+	}
+
+}
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/images/number-3.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/images/number-3.png
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/images/number-3.png	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/images/number-3.png	(revision 47450)

Property changes on: modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/images/number-3.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/images/external_link.gif
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/images/external_link.gif
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/images/external_link.gif	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/images/external_link.gif	(revision 47450)

Property changes on: modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/images/external_link.gif
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/java/eu/dnetlib/validator/admin/actions/jobs/RegistrationsReport.java
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/java/eu/dnetlib/validator/admin/actions/jobs/RegistrationsReport.java	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/java/eu/dnetlib/validator/admin/actions/jobs/RegistrationsReport.java	(revision 47450)
@@ -0,0 +1,87 @@
+package eu.dnetlib.validator.admin.actions.jobs;
+
+import org.apache.log4j.Logger;
+
+import com.opensymphony.xwork2.Action;
+
+import eu.dnetlib.validator.admin.actions.BaseValidatorAction;
+import eu.dnetlib.validator.admin.api.ValidatorAdminException;
+
+public class RegistrationsReport extends BaseValidatorAction {
+
+	private static final long serialVersionUID = -1868055729316139461L;
+	private static final Logger logger = Logger.getLogger(RegistrationsReport.class);
+	private String dateFrom = null;
+	private String dateTo = null;
+	private String mode, month;
+	private int year;
+
+	public String execute() {
+		this.clearErrorsAndMessages();
+		try {
+			
+			int monthInt = Integer.parseInt(month.split("-")[1]);
+			String monthStr = month.split("-")[0];
+			dateFrom = new String("YYYY-MM-01").replaceFirst("MM", Integer.toString(monthInt)).replaceFirst("YYYY", Integer.toString(year));
+			if (monthInt != 12)
+				dateTo = new String("YYYY-MM-01").replaceFirst("MM", Integer.toString(monthInt+1)).replaceFirst("YYYY", Integer.toString(year));
+			else
+				dateTo = new String("YYYY-MM-01").replaceFirst("MM", "1").replaceFirst("YYYY", Integer.toString(year+1));
+			this.getValidatorAdminAPI().sendRegistrationsReport(dateFrom, dateTo, monthStr, Integer.toString(year));
+		} catch (ValidatorAdminException e) {
+			logger.error("Error deleting old jobs", e);
+			this.addActionError(this.getText("generic.error"));
+			reportException(e);
+			return "input-problem";
+		}
+		this.addActionMessage(this.getText("manageJobs.sendReports.success"));
+		
+		return Action.SUCCESS;
+	}
+	
+
+	public void validate() {
+		this.clearErrors();
+	}
+
+	public String getDateFrom() {
+		return dateFrom;
+	}
+
+	public void setDateFrom(String dateFrom) {
+		this.dateFrom = dateFrom;
+	}
+
+	public String getDateTo() {
+		return dateTo;
+	}
+
+	public void setDateTo(String dateTo) {
+		this.dateTo = dateTo;
+	}
+
+	public String getMode() {
+		return mode;
+	}
+
+	public void setMode(String mode) {
+		this.mode = mode;
+	}
+
+	public String getMonth() {
+		return month;
+	}
+
+	public void setMonth(String month) {
+		this.month = month;
+	}
+
+	public int getYear() {
+		return year;
+	}
+
+	public void setYear(int year) {
+		this.year = year;
+	}
+	
+}
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/java/eu/dnetlib/validator/admin/actions/rulesets/GetRuleSets.java
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/java/eu/dnetlib/validator/admin/actions/rulesets/GetRuleSets.java	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/java/eu/dnetlib/validator/admin/actions/rulesets/GetRuleSets.java	(revision 47450)
@@ -0,0 +1,39 @@
+package eu.dnetlib.validator.admin.actions.rulesets;
+
+import java.util.List;
+
+import org.apache.log4j.Logger;
+
+import com.opensymphony.xwork2.Action;
+
+import eu.dnetlib.domain.functionality.validator.RuleSet;
+import eu.dnetlib.validator.admin.actions.BaseValidatorAction;
+
+public class GetRuleSets extends BaseValidatorAction {
+
+	private static final long serialVersionUID = -5220242100308666597L;
+	private List<RuleSet> sets;
+	private static final Logger logger = Logger.getLogger(GetRuleSets.class);
+
+	public List<RuleSet> getSets() {
+		return sets;
+	}
+
+	public void setSets(List<RuleSet> sets) {
+		this.sets = sets;
+	}
+
+	public String execute() throws Exception {
+		this.clearErrorsAndMessages();
+		try {
+			logger.debug("getting all rule sets");
+			sets = this.getValidatorAdminAPI().getRuleSets();
+			return Action.SUCCESS;
+		} catch (Exception e) {
+			logger.error("Error getting rule sets", e);
+			this.addActionError(this.getText("generic.error"));
+			reportException(e);
+			return "exception";
+		}
+	}
+}
\ No newline at end of file
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/images/logo_openaire.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/images/logo_openaire.png
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/images/logo_openaire.png	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/images/logo_openaire.png	(revision 47450)

Property changes on: modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/images/logo_openaire.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/images/number-2.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/images/number-2.png
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/images/number-2.png	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/images/number-2.png	(revision 47450)

Property changes on: modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/images/number-2.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/java/eu/dnetlib/validator/admin/actions/rules/AddRule.java
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/java/eu/dnetlib/validator/admin/actions/rules/AddRule.java	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/java/eu/dnetlib/validator/admin/actions/rules/AddRule.java	(revision 47450)
@@ -0,0 +1,87 @@
+package eu.dnetlib.validator.admin.actions.rules;
+
+
+import org.apache.log4j.Logger;
+
+import com.opensymphony.xwork2.Action;
+
+import eu.dnetlib.domain.functionality.validator.Rule;
+import eu.dnetlib.validator.admin.actions.BaseValidatorAction;
+
+public class AddRule extends BaseValidatorAction {
+
+	private static final long serialVersionUID = -4636737264204104816L;
+	private String[] inputs;
+	private String type, jobType;
+	private boolean forCris;
+	private static final Logger logger = Logger.getLogger(AddRule.class);
+
+	public String execute() {
+		this.clearErrorsAndMessages();
+		try {
+			logger.debug("adding rule of type "+type+" using user inputs");
+			logger.debug("for cris: "+forCris);
+			logger.debug("jobType: "+ jobType);
+			Rule rule = new Rule();
+			rule.setType(type);
+			rule.setJob_type(jobType);
+			rule.setFor_cris(forCris);
+//			rule.setEntity_type(entityType);
+			String ret = this.getValidatorAdminAPI().storeRule(rule, inputs, true);
+			if (ret != null) {
+				this.addActionError(this.getText(ret));
+				return "input-problem";
+			}
+			
+			this.addActionMessage(this.getText("addRule.success"));
+			
+			return Action.SUCCESS;
+		} catch(Exception e) {
+			logger.error("Error adding rule", e);
+			this.addActionError(this.getText("generic.error"));
+			reportException(e);
+			return "exception";
+		}
+	}
+	
+	public String getJobType() {
+		return jobType;
+	}
+
+	public void setJobType(String jobType) {
+		this.jobType = jobType;
+	}
+
+	public boolean isForCris() {
+		return forCris;
+	}
+
+	public void setForCris(boolean forCris) {
+		this.forCris = forCris;
+	}
+
+//	public String getEntityType() {
+//		return entityType;
+//	}
+//
+//	public void setEntityType(String entityType) {
+//		this.entityType = entityType;
+//	}
+
+	public String getType() {
+		return type;
+	}
+
+	public void setType(String type) {
+		this.type = type;
+	}
+
+	public String[] getInputs() {
+		return inputs;
+	}
+
+	public void setInputs(String[] inputs) {
+		this.inputs = inputs;
+	}
+
+}
\ No newline at end of file
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/images/middle_bg_t.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/images/middle_bg_t.png
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/images/middle_bg_t.png	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/images/middle_bg_t.png	(revision 47450)

Property changes on: modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/images/middle_bg_t.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/images/help.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/images/help.png
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/images/help.png	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/images/help.png	(revision 47450)

Property changes on: modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/images/help.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/images/top_icon.gif
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/images/top_icon.gif
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/images/top_icon.gif	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/images/top_icon.gif	(revision 47450)

Property changes on: modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/images/top_icon.gif
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/menu.jsp
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/menu.jsp	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/menu.jsp	(revision 47450)
@@ -0,0 +1,160 @@
+<%@ page contentType="text/html;charset=UTF-8" pageEncoding="UTF-8"%>
+<%@ taglib prefix="s" uri="/struts-tags"%>
+
+<link href="jsps/ddmenu.css" rel="stylesheet" type="text/css" media="screen" />
+<script src="jsps/js/ddmenu.js" type="text/javascript"></script>
+
+
+	<div id="header">
+	<div id="topmenu">
+		<ul>
+				<s:if test="%{#session.email == null}">
+					<li   style="float: right;">
+						<a href='<s:url action="go2login" />'><s:text name="menu.account.login" /></a>
+					</li>
+				</s:if>
+				
+				<s:else>
+					<li  style="float: right;">
+						<a href='<s:url action="logout" />'><s:text name="menu.account.logout" />(<s:property value="#session.email" />)</a>
+					</li>
+					<li  style="float: right;">
+						<a href='<s:url action="userDetails" />'><s:text name="menu.account.edit" /></a>
+					</li>
+				</s:else>
+		</ul>
+	</div>
+			<s:if test="%{deployEnvironment.trim().toLowerCase().equals(\"lareferencia\")}">
+				<div id="logoLareferencia"></div>
+			</s:if>
+			<s:else>
+				<div id="logo">
+					<a id="logo" href="https://www.openaire.eu">
+					<img src="jsps/images/openairepluslogo.png" alt="openairepluslogo" width="171" height="120">
+					</a>
+				</div>
+			</s:else>
+		<nav id="ddmenu">
+			<ul>
+				<li><a href='<s:url action="welcome" />'><s:text name="menu.home" /></a></li>
+				
+<%-- 						<s:if test="%{repoMode.trim().toLowerCase().equals(\"dnet\")}"> --%>
+				<li>
+					<s:text name="home.manageRules" />
+					<div>
+					<div class="column">
+						<s:if test="%{#session.isAdmin != null && #session.isAdmin.equals(\"true\")}">
+						
+							<a href='<s:url action="populateRuleCategories" />'>
+								<s:text name="home.manageRules.addRule" />
+							</a>
+							<a href='<s:url action="populateRuleListForEdit" />'>
+								<s:text name="home.manageRules.editRule" />
+							</a>
+							<a href='<s:url action="populateRuleListForClone" />'>
+								<s:text name="home.manageRules.cloneRule" />
+							</a>
+							<a href='<s:url action="populateRuleList" />'>
+								<s:text name="home.manageRules.deleteRule" />
+							</a>
+						</s:if>
+						<s:else>
+							<a href='<s:url action="populateRuleListForEdit" />'>
+								<s:text name="home.manageRules.viewRule" />
+							</a>
+						</s:else>
+					</div>
+					</div>					
+				</li>
+				
+				<li>
+					<s:text name="home.manageRulesets" />
+					<div>
+					<div class="column">
+						<s:if test="%{#session.isAdmin != null && #session.isAdmin.equals(\"true\")}">
+							<a href='<s:url action="getRulesForSet" />'>
+								<s:text name="home.manageRulesets.createRuleSet" />
+							</a>
+							<a href='<s:url action="getRuleSets" />'>
+								<s:text name="home.manageRulesets.editRuleSet" />
+							</a>
+							<a href='<s:url action="getRuleSetsForDeletion" />'>
+								<s:text name="home.manageRulesets.deleteRuleSet" />
+							</a>
+						</s:if>
+						<s:else>
+							<a href='<s:url action="getRuleSets" />'>
+								<s:text name="home.manageRulesets.viewRuleSet" />
+							</a>
+						</s:else>
+					</div>
+					</div>					
+				</li>
+				
+				
+				<li>
+					<s:text name="home.manageJobs" />
+					<div>
+					<div class="column">
+					  <s:if test="%{#session.isAdmin != null && #session.isAdmin.equals(\"true\")}">
+						<a href='<s:url action="deleteJobs" />'>
+							<s:text name="home.manageJobs.deleteJobs" />
+						</a>
+						
+							<s:if test="%{!deployEnvironment.trim().toLowerCase().equals(\"lareferencia\")}">
+							<a href='<s:url action="registrationsReport" />'>
+								<s:text name="home.manageJobs.sendReport" />
+							</a>
+							</s:if>
+					  </s:if>
+<%-- 					  		<s:if test="%{!deployEnvironment.trim().toLowerCase().equals(\"lareferencia\")}"> --%>
+<%-- 								<a href='<s:url action="getRuleSetsForDeletion" />'> --%>
+<%-- 									<s:text name="home.manageJobs.viewStats" /> --%>
+<!-- 								</a> -->
+<%-- 							</s:if> --%>
+					</div>
+					</div>					
+				</li>
+				
+				<s:if test="%{!deployEnvironment.trim().toLowerCase().equals(\"lareferencia\")}">
+					<s:if test="%{#session.isAdmin != null && #session.isAdmin.equals(\"true\")}">
+<!-- 						<li> -->
+<%-- 							<s:text name="home.manageUsers" /> --%>
+<!-- 							<div> -->
+<!-- 							<div class="column"> -->
+<%-- 								<a href='<s:url action="getRulesForSet" />'> --%>
+<%-- 									<s:text name="home.manageUsers.addUser" /> --%>
+<!-- 								</a> -->
+<%-- 								<a href='<s:url action="getRuleSets" />'> --%>
+<%-- 									<s:text name="home.manageUsers.editUser" /> --%>
+<!-- 								</a> -->
+<%-- 								<a href='<s:url action="getRuleSetsForDeletion" />'> --%>
+<%-- 									<s:text name="home.manageUsers.makeAdmin" /> --%>
+<!-- 								</a> -->
+<!-- 							</div> -->
+<!-- 							</div>					 -->
+<!-- 						</li> -->
+					</s:if>
+				</s:if>
+				<li>
+					<s:text name="menu.about" />
+					<div>
+					<div class="column">
+						<a href="http://www.openaire.eu//support/faq/repman" target="_blank">
+							<s:text name="menu.about.faq" />
+						</a>
+						<a href='<s:url action="help" />'>
+							<s:text name="menu.about.help" />
+						</a>
+						<a href='<s:url action="feedback" />'>
+							<s:text name="menu.about.feedback" />
+						</a>
+					</div>
+					</div>
+				</li>
+
+			</ul>
+			</nav>
+			
+			<div style="clear:both"></div>
+		</div>
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/images/spinner.gif
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/images/spinner.gif
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/images/spinner.gif	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/images/spinner.gif	(revision 47450)

Property changes on: modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/images/spinner.gif
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/images/page_bg.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/images/page_bg.png
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/images/page_bg.png	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/images/page_bg.png	(revision 47450)

Property changes on: modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/images/page_bg.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/images/img04.jpg
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/images/img04.jpg
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/images/img04.jpg	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/images/img04.jpg	(revision 47450)

Property changes on: modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/images/img04.jpg
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/images/img01.jpg
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/images/img01.jpg
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/images/img01.jpg	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/images/img01.jpg	(revision 47450)

Property changes on: modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/images/img01.jpg
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/java/eu/dnetlib/validator/admin/actions/rules/PopulateRuleList.java
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/java/eu/dnetlib/validator/admin/actions/rules/PopulateRuleList.java	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/java/eu/dnetlib/validator/admin/actions/rules/PopulateRuleList.java	(revision 47450)
@@ -0,0 +1,42 @@
+package eu.dnetlib.validator.admin.actions.rules;
+
+import java.util.List;
+
+import org.apache.log4j.Logger;
+
+import com.opensymphony.xwork2.Action;
+
+import eu.dnetlib.domain.functionality.validator.Rule;
+import eu.dnetlib.validator.admin.actions.BaseValidatorAction;
+
+public class PopulateRuleList extends BaseValidatorAction {
+
+	private static final long serialVersionUID = -4035025449768015129L;
+	private List<Rule> rules;
+	private static final Logger logger = Logger.getLogger(PopulateRuleList.class);
+
+	public String execute() {
+		this.clearErrorsAndMessages();
+		try {
+			logger.debug("populating rule list");
+			rules = this.getValidatorAdminAPI().getAllRules();
+			return Action.SUCCESS;
+		}
+		catch(Exception e) {
+			logger.error("Error redirecting to job", e);
+			this.addActionError(this.getText("generic.error"));
+			reportException(e);
+			return "exception";
+		}
+	}
+
+	public List<Rule> getRules() {
+		return rules;
+	}
+
+	public void setRules(List<Rule> rules) {
+		this.rules = rules;
+	}
+	
+	
+}
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/help.jsp
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/help.jsp	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/help.jsp	(revision 47450)
@@ -0,0 +1,43 @@
+<%@ page contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<%@ taglib prefix="s" uri="/struts-tags"%>
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title><s:text name="home.title"/></title>
+<link href="jsps/style.css" rel="stylesheet" type="text/css" media="screen" />
+
+ <link href="jsps/favicon.ico" rel="shortcut icon" type="image/x-icon" />
+</head>
+<body>
+<div id="wrapper">
+        <jsp:include page="menu.jsp"/>
+        <div id="page">
+        <div id="page-bgtop">
+                <div id="middle">
+            <div class="middle-b">
+                <div class="background">
+                                <div id="main">
+                        <div id="main_container" class="clearfix">
+                            <div id="mainmiddle" class="floatbox">
+                                    <h1><s:text name="instructions.welcome"/></h1>
+                                    <div class="entry">
+                                    	<s:text name="instructions.message"/>
+                                    </div>
+                             </div>
+                        </div>
+                    </div>
+                 </div>
+                        </div>
+                </div>
+                <div style="clear: both;">&nbsp;</div>
+        </div>
+    <!-- NMI This needs to be the same in all pages and the text is some properties file -->
+    <div id="footer">
+                <jsp:include page="footer.jsp"/>
+        </div>
+</div>
+</div>
+</body>
+</html>
+
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/login.jsp
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/login.jsp	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/login.jsp	(revision 47450)
@@ -0,0 +1,86 @@
+<%@ page contentType="text/html; charset=UTF-8"
+    pageEncoding="UTF-8"%>
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<%@ taglib prefix="s" uri="/struts-tags"%>
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title><s:text name="login.title"/></title>
+<link href="jsps/favicon.ico" rel="shortcut icon" type="image/x-icon" />
+<link href="jsps/style.css" rel="stylesheet" type="text/css" media="screen" />
+</head>
+<body>
+<div id="wrapper">
+	<jsp:include page="menu.jsp"/>
+	<div id="page">
+        <div id="page-bgtop">
+             <div id="middle">
+                <div class="middle-b">
+                    <div class="background">
+                        <div id="main">
+                            <div id="main_container" class="clearfix">
+                                <div id="mainmiddle" class="floatbox">
+                                <h1>Sign In </h1>
+	                                <div class="notes">
+    		                            <s:text name="login.overview"/>
+   		                            </div>
+                                    <s:actionerror/>
+                                    <div class="post width45 separator float-left">
+                                        <h2><s:text name="login.title"/></h2>
+                                        <s:text name="login.description"/>
+                                        <%--<p class="meta"><a href='<s:url value="/jsps/help.jsp#login"/>' target="_blank"><s:text name="help"/></a></p>--%>
+                                        <div class="entry">
+                                            <s:form action="Login">
+                                            	
+                                            	<s:hidden name="url" value="%{#request['javax.servlet.forward.servlet_path']}"/>
+            									<s:hidden name="params" value="%{#request['javax.servlet.forward.query_string']}"/>  
+    
+                                                <s:textfield name="email_username" key="registration.username_email"/>
+                                                <s:password name="password_login" key="registration.password"/>
+
+                                                <%-- <s:checkbox name="rememberme" key="registration.rememberme"/> --%>
+                                                <s:submit  cssClass="button-default" value="Sign In"/>
+                                            </s:form>
+                                            <a class="smallfont" href='<s:url action="forgotPassword"/>'><s:text name="login.forgotpassword"/></a>
+                                        </div>
+                                    </div>
+                                    
+                                    <div class="post width45 float-left">
+                                        <h2><s:text name="menu.account.registration.title"/></h2>
+                                        <div class="entry">
+                                            <!-- NMI take the following out if everything works fine
+                                            <a href='<s:url action="go2registration" />'><s:text name="menu.account.registration" /></a>
+                                            -->
+                                        <s:text name="registration.description"/>
+                                        <%--<p class="meta"><a href='<s:url value="/jsps/help.jsp#registration"/>' target="_blank"><s:text name="help"/></a></p>--%>
+                                        
+                                            <%-- <s:if test="%{@gr.uoa.di.validatorweb.configs.Constants@isModeLdap()}">
+                                                <s:text name="registration.ldap.message"/>
+                                            </s:if> --%>
+                                            <s:form action="Register">
+                                                <s:textfield name="username" key="registration.username" requiredLabel="true"/>
+                                                <s:textfield name="firstName" key="registration.firstName" requiredLabel="true"/>
+                                                <s:textfield name="lastName" key="registration.lastName" requiredLabel="true"/>
+                                                <s:textfield name="email" key="registration.email" requiredLabel="true"/>
+                                                <s:textfield name="institution" key="registration.institution" />
+                                                <s:password name="password" key="registration.password" requiredLabel="true"/>
+                                                <s:password name="repassword" key="registration.repassword" requiredLabel="true"/>
+                                                <s:submit cssClass="button-default" value="Register"/>
+                                            </s:form>
+                                        </div>
+                                </div>
+                                 </div>
+                             </div>
+                         </div>
+                    </div>
+                </div>
+            </div>        
+        </div>
+        <!-- NMI This needs to be the same in all pages and the text is some properties file -->
+        <div id="footer"> 
+		<jsp:include page="footer.jsp"/>
+	</div>
+	</div>
+</div>
+</body>
+</html>
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/images/img03.gif
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/images/img03.gif
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/images/img03.gif	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/images/img03.gif	(revision 47450)

Property changes on: modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/images/img03.gif
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/rules.jsp
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/rules.jsp	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/rules.jsp	(revision 47450)
@@ -0,0 +1,3 @@
+<%@ taglib prefix="s" uri="/struts-tags"%>
+
+<s:property value="#request['jsonization']" escape="false"/>
\ No newline at end of file
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/registrationsReport.jsp
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/registrationsReport.jsp	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/registrationsReport.jsp	(revision 47450)
@@ -0,0 +1,74 @@
+<%@ page contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<%@ taglib prefix="s" uri="/struts-tags"%>
+<%@ taglib prefix="sj" uri="/struts-jquery-tags"%>
+<html>
+<head>
+<link href="jsps/style.css" rel="stylesheet" type="text/css" media="screen" />
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<!--<meta http-equiv="refresh" content="13" >-->
+<title><s:text name="manageJobs.sendReports.title"/></title>
+<link href="jsps/favicon.ico" rel="shortcut icon" type="image/x-icon" />
+<sj:head />
+</head>
+<body class="left">
+
+<div id="wrapper">
+	<jsp:include page="menu.jsp"/>
+	<div id="page">
+		<div id="page-bgtop">
+			<div id="middle">
+                <div class="middle-b">
+                    <div class="background">
+                    	<div id="left">
+                        	<div id="left_container">
+	                             <h2 class="helpHdr">Info</h2>
+                                 <s:text name="help.browsevalidations"/>
+                            </div>
+                        </div>
+                        <div id="main">
+                            <div id="main_container" class="clearfix">
+                                <div id="mainmiddle" class="floatbox">
+                                    <h1 class="title"><s:text name="manageJobs.sendReports.title"/></h1>
+<%--                                     <s:if test="%{enableCuration}"> --%>
+	                                    <s:form action="sendRegistrationsReport">
+	                                   		 <s:select name="month" 
+ 	                                    		key="manageJobs.sendReports.selectMonth"
+  	                          					list="#{'January-01':'January','February-02':'February','March-03':'March',
+  	                          					'April-04':'April','May-05':'May','June-06':'June',
+  	                          					'July-07':'July','August-08':'August','September-09':'September',
+  	                          					'October-10':'October','November-11':'November','December-12':'December'}"
+                                             	required="true"
+ 	  					                    />
+ 	  					                    <s:select name="year" 
+ 	                                    		key="manageJobs.sendReports.selectYear"
+  	                          					list="#{'2013':'2013','2014':'2014','2015':'2015'}"
+                                             	required="true"
+ 	  					                    />
+<%--      										<sj:datepicker name="manageJobs.sendReports.selectDateFrom" changeMonth="true" changeYear="true" displayFormat="yy-mm-dd"/> --%>
+<%--      										<sj:datepicker name="manageJobs.sendReports.selectMonthDateTo" changeMonth="true" changeYear="true" displayFormat="yy-mm-dd"/> --%>
+     										
+<%-- 	                                    	<s:select name="mode"  --%>
+<%-- 	                                    		key="manageJobs.deleteJobs.whatToDelete" --%>
+<%--  	                          					list="#{'all':'All jobs', 'compTest_only':'Compatibility Tests only', 'uncompleted_only':'Uncompleted jobs'}" --%>
+<%--                                             	required="true" --%>
+<%-- 	  					                    /> --%>
+	                                    	<s:submit cssClass="button-default"/>
+	                                    </s:form>
+<%-- 	                               </s:if> --%>
+                                    
+								</div>
+                            </div>
+                        </div>
+                    </div>
+                </div>
+            </div>
+		</div>
+		<!-- NMI This needs to be the same in all pages and the text is some properties file -->
+        <div id="footer"> 
+           <jsp:include page="footer.jsp"/>
+        </div>
+	</div>
+</div>
+</body>
+</html>
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/java/eu/dnetlib/validator/admin/actions/DummyAction.java
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/java/eu/dnetlib/validator/admin/actions/DummyAction.java	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/java/eu/dnetlib/validator/admin/actions/DummyAction.java	(revision 47450)
@@ -0,0 +1,13 @@
+package eu.dnetlib.validator.admin.actions;
+
+import com.opensymphony.xwork2.Action;
+
+public class DummyAction extends BaseValidatorAction {
+
+	private static final long serialVersionUID = 4105253794510714980L;
+
+	public String execute() {
+		return Action.SUCCESS;
+		
+	}
+}
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/fonts/yanonekaffeesatz.css
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/fonts/yanonekaffeesatz.css	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/fonts/yanonekaffeesatz.css	(revision 47450)
@@ -0,0 +1,13 @@
+/* Copyright (C) YOOtheme GmbH, YOOtheme Proprietary Use License (http://www.yootheme.com/license) */
+
+@font-face {
+	font-family: 'YanoneKaffeesatzLight';
+	src: url('YanoneKaffeesatz-Light-webfont.eot');
+	src: url('YanoneKaffeesatz-Light-webfont.eot?#iefix') format('embedded-opentype'),
+		url('YanoneKaffeesatz-Light-webfont.woff') format('woff'),
+		url('YanoneKaffeesatz-Light-webfont.ttf') format('truetype'),
+		url('YanoneKaffeesatz-Light-webfont.svg#YanoneKaffeesatzLight') format('svg');
+	font-weight: normal;
+	font-style: normal;
+}
+
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/fonts/DroidSans-webfont.ttf
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/fonts/DroidSans-webfont.ttf
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/fonts/DroidSans-webfont.ttf	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/fonts/DroidSans-webfont.ttf	(revision 47450)

Property changes on: modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/fonts/DroidSans-webfont.ttf
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/java/eu/dnetlib/validator/admin/constants/FieldNames.java
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/java/eu/dnetlib/validator/admin/constants/FieldNames.java	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/java/eu/dnetlib/validator/admin/constants/FieldNames.java	(revision 47450)
@@ -0,0 +1,37 @@
+package eu.dnetlib.validator.admin.constants;
+
+public class FieldNames {
+	
+	static public String RULE_ID="id";
+	static public String RULE_NAME="name";
+	static public String RULE_DESCRIPTION="description";
+	static public String RULE_TYPE="type";
+	static public String RULE_MANDATORY="mandatory";
+	static public String RULE_SUCCESS="success";
+	static public String RULE_WEIGHT="weight";
+	static public String RULE_PROVIDER_INFORMATION="provider_information";
+	static public String RULE_VISIBLE="visible";
+	static public String RULE_JOBTYPE="job_type";
+	
+	static public String RULE_RULESFK="Rules_id";
+	
+	static public String RULE_VOCABULARY_WORDS="terms";
+	static public String RULE_VOCABULARY_WORDS_TYPE="terms_type";
+	
+	static public String RULE_CRIS_ENTITY="cris_entity";
+	
+	static public String RULE_CRIS_CLASS_VOCABULARY_SCHEME_ID="scheme_id";
+	
+	static public String RULE_CRIS_REFERENTIAL_INTEGRITY_ENTITY_ACRONYM = "entity_acronym";
+	static public String RULE_CRIS_REFERENTIAL_INTEGRITY_RELATED_ENTITY_ACRONYM = "related_entity_acronym";
+	static public String RULE_CRIS_REFERENTIAL_INTEGRITY_RELATED_ENTITY_XPATH = "related_entity_xpath";
+	
+	static public String RULE_CARDINALITY_LESSTHAN="less_than";
+	static public String RULE_CARDINALITY_GREATERTHAN="greater_than";
+	
+	static public String RULE_REGULAREXPRESSION_REGEXPR ="regular_expression";
+	
+	static public String RULE_NOTCONNFUSEDFIELDS ="fields";
+	
+//	static public String JOB_CONTENT="OAI Content Validation";
+}
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/resources/eu/dnetlib/validator/admin/actions/springContext-validator-struts.xml
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/resources/eu/dnetlib/validator/admin/actions/springContext-validator-struts.xml	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/resources/eu/dnetlib/validator/admin/actions/springContext-validator-struts.xml	(revision 47450)
@@ -0,0 +1,75 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<beans xmlns="http://www.springframework.org/schema/beans"
+	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+	xmlns:context="http://www.springframework.org/schema/context"
+	xmlns:cxf="http://cxf.apache.org/core"
+	xmlns:jaxws="http://cxf.apache.org/jaxws"
+	xmlns:p="http://http://www.springframework.org/schema/p"
+	xmlns:template="http://dnetlib.eu/springbeans/template"
+	xmlns:t="http://dnetlib.eu/springbeans/t"
+	xsi:schemaLocation="
+		http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.0.xsd
+        http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.0.xsd
+        http://cxf.apache.org/core http://cxf.apache.org/schemas/core.xsd
+        http://cxf.apache.org/jaxws http://cxf.apache.org/schemas/jaxws.xsd
+        http://dnetlib.eu/springbeans/template http://dnetlib.eu/springbeans/template.xsd"
+	default-autowire="no">
+		
+	<!-- BASE -->	
+	<bean id="baseAction" class="eu.dnetlib.validator.admin.actions.BaseValidatorAction" abstract="true" scope="prototype">
+		<property name="emailer" ref="emailer" />
+		<property name="userAPI" ref="userAPI" />
+		<property name="validatorAdminAPI" ref="validatorAdminAPI" />
+		<property name="userMode" value="${services.validator.mode.user}" />
+		<property name="valBaseUrl" value="${services.validator.baseUrl}" />
+		<property name="deployEnvironment" value="${services.validator.deploy.environment}" />
+		<property name="valAdminEmail" value="${services.validator.adminEmail}" />
+	</bean>		
+	<bean id="springManagedDummy" class="eu.dnetlib.validator.admin.actions.DummyAction" parent="baseAction" scope="prototype"/>
+	<bean id="go2registration" class="eu.dnetlib.validator.admin.actions.DummyAction" parent="baseAction" scope="prototype"/>
+	
+	<!-- LOGIN -->
+	<bean id="springManagedLoginPage" class="eu.dnetlib.validator.admin.actions.login.LoginPage" parent="baseAction" scope="prototype"/>
+	<bean id="springManagedLogin" class="eu.dnetlib.validator.admin.actions.login.Login" parent="baseAction"  scope="prototype"/>
+	<bean id="springManagedSendPassword" class="eu.dnetlib.validator.admin.actions.login.SendPassword" parent="baseAction"  scope="prototype"/>
+	<bean id="springManagedResetPassword" class="eu.dnetlib.validator.admin.actions.login.ResetPassword" parent="baseAction"  scope="prototype"/>
+	<bean id="springManagedLogout" class="eu.dnetlib.validator.admin.actions.login.Logout" parent="baseAction"  scope="prototype"/>
+	<bean id="springManagedPortalLogin" class="eu.dnetlib.validator.admin.actions.login.PortalLogin" parent="baseAction" scope="prototype">
+		<property name="key" value="${services.validator.portallogin.key}" />
+	</bean>
+	<bean id="springManagedForgotPassword" class="eu.dnetlib.validator.admin.actions.login.ForgotPasswordPage" parent="baseAction" scope="prototype"/>
+	<bean id="springManagedAdminInterceptor" class="eu.dnetlib.validator.admin.actions.login.AdminInterceptor">
+		<property name="userAPI" ref="userAPI"/>
+		<property name="validatorAdminAPI" ref="validatorAdminAPI" />
+	</bean>
+
+	<!-- BROWSE JOBS -->
+	
+	<bean id="springManagedDatabaseCurator" class="eu.dnetlib.validator.admin.actions.jobs.DatabaseCurator" parent="baseAction" scope="prototype"/>
+	<bean id="springManagedRegistrationsReport" class="eu.dnetlib.validator.admin.actions.jobs.RegistrationsReport" parent="baseAction" scope="prototype"/>
+
+	<!-- USERS -->
+	<bean id="springManagedRegister" class="eu.dnetlib.validator.admin.actions.users.Register" parent="baseAction" scope="prototype"/>
+	<bean id="springManagedActivateAccount" class="eu.dnetlib.validator.admin.actions.users.ActivateAccount" parent="baseAction" scope="prototype"/>
+	<bean id="springManagedEditUser" class="eu.dnetlib.validator.admin.actions.users.EditUser" parent="baseAction" scope="prototype"/>
+	
+	<!-- ADMIN RULES -->
+	<bean id="springManagedPopulateRuleCategories" class="eu.dnetlib.validator.admin.actions.rules.PopulateRuleCategories" parent="baseAction" scope="prototype"/>
+	<bean id="springManagedDeleteRule" class="eu.dnetlib.validator.admin.actions.rules.DeleteRule" parent="baseAction" scope="prototype"/>
+	<bean id="springManagedPrepareAddRule" class="eu.dnetlib.validator.admin.actions.rules.PrepareAddRule" parent="baseAction" scope="prototype"/>
+	<bean id="springManagedEditRule" class="eu.dnetlib.validator.admin.actions.rules.EditRule" parent="baseAction" scope="prototype"/>
+	<bean id="springManagedAddRule" class="eu.dnetlib.validator.admin.actions.rules.AddRule" parent="baseAction" scope="prototype"/>
+	<bean id="springManagedPopulateRuleList" class="eu.dnetlib.validator.admin.actions.rules.PopulateRuleList" parent="baseAction" scope="prototype"/>
+	<bean id="springManagedPrepareEditRule" class="eu.dnetlib.validator.admin.actions.rules.PrepareEditRule" parent="baseAction" scope="prototype"/>
+	
+	<!-- ADMIN RULESETS -->
+	<bean id="springManagedDeleteRuleSet" class="eu.dnetlib.validator.admin.actions.rulesets.DeleteRuleSet" parent="baseAction" scope="prototype"/>
+	<bean id="springManagedCreateRuleSet" class="eu.dnetlib.validator.admin.actions.rulesets.CreateRuleSet" parent="baseAction" scope="prototype"/>
+	<bean id="springManagedGetRuleSetsForDeletion" class="eu.dnetlib.validator.admin.actions.rulesets.GetRuleSets" parent="baseAction" scope="prototype"/>
+	<bean id="springManagedGetRulesForSet" class="eu.dnetlib.validator.admin.actions.rulesets.GetRules" parent="baseAction" scope="prototype"/>
+	<bean id="springManagedGetRuleSets" class="eu.dnetlib.validator.admin.actions.rulesets.GetRuleSets" parent="baseAction" scope="prototype"/>
+
+	<!-- FEEDBACK/HELP -->
+	<bean id="springManagedHelp" class="eu.dnetlib.validator.admin.actions.help.HelpPage" parent="baseAction" scope="prototype" />
+	
+</beans>
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/fonts/OpenSans-Light-webfont.ttf
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/fonts/OpenSans-Light-webfont.ttf
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/fonts/OpenSans-Light-webfont.ttf	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/fonts/OpenSans-Light-webfont.ttf	(revision 47450)

Property changes on: modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/fonts/OpenSans-Light-webfont.ttf
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/resources/eu/dnetlib/validator/admin/api/springContext-validator.xml
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/resources/eu/dnetlib/validator/admin/api/springContext-validator.xml	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/resources/eu/dnetlib/validator/admin/api/springContext-validator.xml	(revision 47450)
@@ -0,0 +1,35 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<beans xmlns="http://www.springframework.org/schema/beans"
+	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+	xmlns:context="http://www.springframework.org/schema/context"
+	xmlns:cxf="http://cxf.apache.org/core"
+	xmlns:jaxws="http://cxf.apache.org/jaxws"
+	xmlns:p="http://http://www.springframework.org/schema/p"
+	xmlns:template="http://dnetlib.eu/springbeans/template"
+	xmlns:t="http://dnetlib.eu/springbeans/t"
+	xmlns:tx="http://www.springframework.org/schema/tx"
+	
+	xsi:schemaLocation="
+		http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.0.xsd
+        http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.0.xsd
+        http://cxf.apache.org/core http://cxf.apache.org/schemas/core.xsd
+        http://cxf.apache.org/jaxws http://cxf.apache.org/schemas/jaxws.xsd
+        http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-4.0.xsd
+        http://dnetlib.eu/springbeans/template http://dnetlib.eu/springbeans/template.xsd"
+	default-autowire="no">
+	
+	<bean id="validatorAdminAPI" class="eu.dnetlib.validator.admin.api.impls.ValidatorAdminApiImpl" scope="singleton" init-method="start">
+		<property name="jobsDao" ref="jobsDao" />
+		<property name="rulesetsDao" ref="rulesetsDao" />
+		<property name="rulesDao" ref="rulesDao" />
+		<property name="usersDao" ref="usersDao" />	
+		<property name="masterAdmins" value="${services.validator.admins.master}" />
+		<property name="secondaryAdmins" value="${services.validator.admins.secondary}" />
+		<property name="emailer" ref="emailer" />
+		<property name="emailBuilder" ref="emailBuilder" />
+		<property name="registrationsReportEmail" value="${services.validator.registrationsReport.email}" />
+	</bean>
+	
+	<bean id ="emailBuilder" class="eu.dnetlib.validator.admin.api.impls.EmailBuilder" init-method="init" scope="prototype" />
+	
+</beans>
\ No newline at end of file
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/resources/eu/dnetlib/validator/admin/config/springContext-validator-config.xml
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/resources/eu/dnetlib/validator/admin/config/springContext-validator-config.xml	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/resources/eu/dnetlib/validator/admin/config/springContext-validator-config.xml	(revision 47450)
@@ -0,0 +1,48 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<beans xmlns="http://www.springframework.org/schema/beans"
+	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+	xmlns:context="http://www.springframework.org/schema/context"
+	xmlns:cxf="http://cxf.apache.org/core"
+	xmlns:jaxws="http://cxf.apache.org/jaxws"
+	xmlns:p="http://http://www.springframework.org/schema/p"
+	xmlns:template="http://dnetlib.eu/springbeans/template"
+	xmlns:t="http://dnetlib.eu/springbeans/t"
+	xmlns:tx="http://www.springframework.org/schema/tx"
+	
+	xsi:schemaLocation="
+		http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.0.xsd
+        http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.0.xsd
+        http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-4.0.xsd
+		http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-4.0.xsd
+        http://cxf.apache.org/core http://cxf.apache.org/schemas/core.xsd
+        http://cxf.apache.org/jaxws http://cxf.apache.org/schemas/jaxws.xsd
+        http://dnetlib.eu/springbeans/template http://dnetlib.eu/springbeans/template.xsd"
+	default-autowire="no">
+
+	<bean class="eu.dnetlib.validator.admin.config.CascadingPropertyLoader" id="propertyLoader">
+		<property name="order" value="2" />
+		<property name="properties">
+			<bean class="eu.dnetlib.conf.WebappContextProperyFactory">
+				<property name="propertyFetcher">
+					<bean class="eu.dnetlib.conf.PropertyFetcher" />
+				</property>
+			</bean>
+		</property>
+		<property name="ignoreUnresolvablePlaceholders" value="true" />
+		<property name="locations">
+			<list>
+				<value>classpath*:/gr/**/springContext-*.properties</value>
+				<value>classpath*:/eu/**/springContext-*.properties</value>
+				
+				<value>classpath*:dnet-site-wizard.properties</value>
+				<value>classpath*:dnet-site-override.properties</value>
+				<value>classpath*:dnet-wizard.properties</value>
+				<value>classpath*:dnet-override.properties</value>
+				<value>classpath*:dnet-validator-wizard.properties</value>
+				<value>classpath*:dnet-validator-override.properties</value>
+				<value>classpath*:dnet-site-force-override.properties</value>
+				<value>classpath*:dnet-force-override.properties</value>
+			</list>
+		</property>
+	</bean>
+</beans>
\ No newline at end of file
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/fonts/maven_pro_regular-webfont.eot
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/fonts/maven_pro_regular-webfont.eot
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/fonts/maven_pro_regular-webfont.eot	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/fonts/maven_pro_regular-webfont.eot	(revision 47450)

Property changes on: modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/fonts/maven_pro_regular-webfont.eot
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/resources/field-infos.properties
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/resources/field-infos.properties	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/resources/field-infos.properties	(revision 47450)
@@ -0,0 +1,98 @@
+rules.name.description = The name of the rule. Must be short and descriptive.
+rules.name.name = Name
+rules.description.description = A longer text describing the rule in more detail.
+rules.description.name = Description
+rules.mandatory.description = Must be true or false. If true, then if this rule doesn't validate the score will suffer. If false, then if the rule validates successfully then the score will be increased (even above 100%)
+rules.mandatory.name = Mandatory
+rules.success.description = The correct syntax as regular expression is ([=<>][0-9]+)|a). For a thorough explanation of this field please refer to the Administrator Manual. 
+rules.success.name = Success
+rules.weight.description = An integer indicating how important this rule is. The base weight is 1. Weights greater than 1 mean that this rule impacts more on the score.
+rules.weight.name = Weight
+rules.provider_information.description = This information is used by the Provider Module to harvest the correct items for validation. For example, for OAI Content Validation jobs a possible value could be dc:identifier. For a thorough explanation of this field please refer to the Administrator Manual. 
+rules.provider_information.name = Provider Information
+rules.visible.description = Not shown to the end-user
+rules.visible.name = Visible
+rules.type.name = Rule Type
+rules.type.description = The type of the rule
+rules.cris_entity.name = Cris Entity
+rules.cris_entity.description = The type of cris entity that this rule will be applicable on
+jobs.job_type.name = Job Type
+jobs.job_type.description = The type of job that this rule will be applicable on
+jobs.entity_type.name = Entity Type
+jobs.entity_type.description = The type of entity that this rule will be applicable on
+xmlvocabulary_rule.terms.name = Words
+xmlvocabulary_rule.terms.description = The list of words that will be used for matching. Each line must include only one word.
+xmlvocabulary_rule.terms_type.name = Words List Type
+xmlvocabulary_rule.terms_type.description = The kind of the list of words that will be used for matching. Blacklist or whitelist.
+xmlvocabulary_rule.success.name = Success
+xmlvocabulary_rule.success.description = The correct syntax is :all, >0, 0 . For a thorough explanation of this field please refer to the Administrator Manual. 
+xmlvocabulary_rule.xpath.name = XPath
+xmlvocabulary_rule.xpath.description = XPath for specific rule.
+xmlcrisclassvocabulary_rule.terms.name = Words
+xmlcrisclassvocabulary_rule.terms.description = The list of words that will be used for matching. Each line must include only one word.
+xmlcrisclassvocabulary_rule.success.name = Success
+xmlcrisclassvocabulary_rule.success.description = The correct syntax is :all, >0, 0, 1 . For a thorough explanation of this field please refer to the Administrator Manual. 
+xmlcrisclassvocabulary_rule.xpath.name = XPath
+xmlcrisclassvocabulary_rule.xpath.description = XPath for specific rule.
+xmlcrisclassvocabulary_rule.scheme_id.name = Scheme ID
+xmlcrisclassvocabulary_rule.scheme_id.description = XPath for specific rule.
+xmlcrisreferentialintegrity_rule.terms.name = Words
+xmlcrisreferentialintegrity_rule.terms.description = The list of words that will be used for matching. Each line must include only one word.
+xmlcrisreferentialintegrity_rule.success.name = Success
+xmlcrisreferentialintegrity_rule.success.description = The correct syntax is :all, >0, 0, 1 . For a thorough explanation of this field please refer to the Administrator Manual. 
+xmlcrisreferentialintegrity_rule.xpath.name = XPath
+xmlcrisreferentialintegrity_rule.xpath.description = XPath for specific rule.
+xmlcrisreferentialintegrity_rule.scheme_id.name = Scheme ID
+xmlcrisreferentialintegrity_rule.scheme_id.description = XPath for specific rule.
+xmlcrisreferentialintegrity_rule.entity_acronym.name = Entity Acronym
+xmlcrisreferentialintegrity_rule.entity_acronym.description = Entity Acronym (eg.cfPers).
+xmlcrisreferentialintegrity_rule.related_entity_acronym.name = Related Entity Acronym
+xmlcrisreferentialintegrity_rule.related_entity_acronym.description = Related Entity Acronym (eg.cfPers).
+xmlcrisreferentialintegrity_rule.related_entity_xpath.name = Related Entity XPATH
+xmlcrisreferentialintegrity_rule.related_entity_xpath.description = Related Entity XPATH.
+xmlfieldexist_rule.success.name = Success
+xmlfieldexist_rule.success.description = The correct syntax is :all, >0, 0 . For a thorough explanation of this field please refer to the Administrator Manual. 
+xmlfieldexist_rule.xpath.name = XPath
+xmlfieldexist_rule.xpath.description = XPath for specific rule.
+xmlregularexpression_rule.success.name = Success
+xmlregularexpression_rule.success.description = The correct syntax is :all, >0, 0 . For a thorough explanation of this field please refer to the Administrator Manual. 
+xmlregularexpression_rule.xpath.name = XPath
+xmlregularexpression_rule.xpath.description = XPath for specific rule.
+xmlregularexpression_rule.regexp.name = Regular Expression
+xmlregularexpression_rule.regexp.description = The regular expression used for validation.
+xmlcardinality_rule.lt.name = Less Than
+xmlcardinality_rule.lt.description = Less than this number
+xmlcardinality_rule.gt.name = Greater Than
+xmlcardinality_rule.gt.description = Greater than this number
+xmlcardinality_rule.success.name = Success
+xmlcardinality_rule.success.description = The correct syntax is :all, >0, 0 . For a thorough explanation of this field please refer to the Administrator Manual. 
+xmlcardinality_rule.xpath.name = XPath
+xmlcardinality_rule.xpath.description = XPath for specific rule.
+xmlcardinality_rule.regexp.name = Regular Expression
+xmlcardinality_rule.regexp.description = The regular expression used for validation.
+xmlnotconfusedfields_rule.fields.name = Fields
+xmlnotconfusedfields_rule.fields.description = Fields that must not be confused each other
+xmlnotconfusedfields_rule.success.name = Success
+xmlnotconfusedfields_rule.success.description = The correct syntax is :all, >0, 0 . For a thorough explanation of this field please refer to the Administrator Manual. 
+xmlnotconfusedfields_rule.xpath.name = XPath
+xmlnotconfusedfields_rule.xpath.description = XPath for specific rule.
+xmlnotconfusedfields_rule.regexp.name = Regular Expression
+xmlnotconfusedfields_rule.regexp.description = The regular expression used for validation.
+xmlvalidurl_rule.success.name = Success
+xmlvalidurl_rule.success.description = The correct syntax is :all, >0, 0 . For a thorough explanation of this field please refer to the Administrator Manual. 
+xmlvalidurl_rule.xpath.name = XPath
+xmlvalidurl_rule.xpath.description = XPath for specific rule.
+xmlvalidurl_rule.regexp.name = Regular Expression
+xmlvalidurl_rule.regexp.description = The regular expression used for validation.
+chain_rule.type.description = Permitted values: 'or' -> true if any of the rules is successful, 'and' -> true if all the rules are successful, 'horn' -> rule[0] => rule[1] /\ rule[2] /\ ... /\ rule[n-1]
+chain_rule.type.name = Chain Type
+chain_rule.rule_1.description = The first rule that chain rule consists of.
+chain_rule.rule_1.name = 1st Rule of Chain
+chain_rule.rule_2.description = The second rule that chain rule consists of.
+chain_rule.rule_2.name = 2nd Rule of Chain
+oaipmhresumptiontokenduration_rule.duration.description = Duration of resumption token.
+oaipmhresumptiontokenduration_rule.duration..name = Duration
+oaipmhincrementalrecorddelivery_rule.from.name = From
+oaipmhincrementalrecorddelivery_rule.from.description = From field.
+oaipmhincrementalrecorddelivery_rule.until.name = Until
+oaipmhincrementalrecorddelivery_rule.until.description = Until field.
\ No newline at end of file
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/resources/backend-errors.properties
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/resources/backend-errors.properties	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/resources/backend-errors.properties	(revision 47450)
@@ -0,0 +1,29 @@
+error.parametersMissing.ruleId=Rule id must be specified in the parameters given
+error.parametersMissing.jobId=Job id must be specified in the parameters given
+error.badParameter.idNotNumerical=The id was not numerical
+error.badParameter.unknownType=The type specified is incorrect
+rules.name.error.message1=A value must be defined for the field name
+rules.description.error.message1=A value must be defined for the field description
+rules.type.error.message1=A value must be defined for the field type
+rules.mandatory.error.message1=A value must be defined for the field mandatory
+rules.success.error.message1=A value must be defined for the field success
+rules.success.error.message2=First character for success must be one of =, > or <
+rules.success.error.message3=Field success must contain only numerical characters after the first character
+rules.weight.error.message1=Value of field weight must be numerical
+rules.provider_information.error.message1=A value must be specified for the provider information field
+rules.job_type.error.message1=Job type must be one of the available types
+rules.job_type.error.message2=A job type must be specified for this rule
+cardinality_rule.greater_than.error.message1=Value of field 'greater than' must be numerical
+cardinality_rule.less_than.error.message2=Less and Greater cannot be both without value
+cardinality_rule.less_than.error.message1=Value of field 'less than' must be numerical
+NotConfusedFields_Rule.field1.error.message1=Fields 'field1' and 'field2' must both have a value
+NotConfusedFields_Rule.field1.error.message2=Fields 'field1' and 'field2' must have a different value
+RegularExpression_Rule.regular_expression.error.message1=Field 'regular expression' must have a value
+RetrievableResource_Rule.max_depth.error.message1=Field 'max_depth' must have a numerical value
+Vocabulary_Rule.words.error.message1=A value must be defined for the 'words' field
+OAI_Content_Job.records.error.message1=Field 'records' cannot be empty
+OAI_Content_Job.records.error.message2=At least one record must be used for the validation
+OAI_Content_Job.records.error.message3=Value of field 'records' must be numerical
+OAI_Content_Job.random.error.message1=Value of field 'random' must be boolean (true or false)
+OAI_Content_Job.base_url.error.message1=Value of field 'base url' doesn't seem to be a valid url adress
+RetrievableResource_Rule.mime_types.error.message1=Invalid mime type(s)
\ No newline at end of file
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/fonts/YanoneKaffeesatz-Light-webfont.eot
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/fonts/YanoneKaffeesatz-Light-webfont.eot
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/fonts/YanoneKaffeesatz-Light-webfont.eot	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/fonts/YanoneKaffeesatz-Light-webfont.eot	(revision 47450)

Property changes on: modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/fonts/YanoneKaffeesatz-Light-webfont.eot
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/style.css
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/style.css	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/style.css	(revision 47450)
@@ -0,0 +1,1233 @@
+
+/*
+Design by Free CSS Templates
+http://www.freecsstemplates.org
+Released for free under a Creative Commons Attribution 2.5 License
+*/
+@import url(fonts/kreon.css);
+@import url(fonts/yanonekaffeesatz.css);
+@import url(fonts/opensans.css);
+
+body, html {
+	height:100%;
+}
+body {
+	margin: 0;
+	padding: 0;
+	font: normal 12px/20px verdana, OpenSansLight, sans-serif;
+	/*font: 12px/20px "OpenSansLight", "Trebuchet MS", Georgia, "Times New Roman", Times, serif;*/
+	color: #717171;
+	background: #f5f5f5;
+ 	background-image: url(images/BG_Header_f5.png), url(images/BG_Footer_f5.png);
+ 	background-position: left top, right bottom;
+ 	background-repeat: no-repeat, no-repeat; 
+ 	background-attachment:fixed;
+}
+
+h1, h2, h3, h4, h5 {
+	margin: 0;
+	padding-bottom:5px;
+	font-family: "OpenSansLight", "Trebuchet MS", Georgia, "Times New Roman", Times, serif;
+	font-weight: normal;
+	color: #0F2B5B;
+}
+
+h1 { 	padding-top: 25px;
+	padding-bottom:15px;
+	font-size: 24px; 
+	color:#829333; 
+}
+
+h2 { 	padding-top: 25px;
+	padding-bottom:10px;
+	font-size: 18px; 
+	color:#829333; 
+}
+
+h3 {  
+	color:#343CB1;
+	font-size: 16px; 
+}
+h4 {  
+	font-size: 16px; 
+}
+h5 {  
+	font-size: 14px; 
+}
+
+p, ul, ol {
+	margin-top: 0;
+	text-align: justify;
+}
+
+ul, ol { }
+
+blockquote { }
+
+a { color: #2D72D6; }
+
+a:hover { text-decoration: none; color:#E76E12; cursor: pointer;}
+
+a img {
+	border: none;
+}
+
+img.left {
+	float: left;
+	margin: 7px 30px 0 0;
+}
+
+img.right {
+	float: right;
+	margin: 7px 0 0 30px;
+}
+
+hr {
+	border-top: 0px;
+	border-bottom: 1px solid #ddd;
+}
+.frontvisible {
+	font-size:16px;
+	font-family: "OpenSansLight", "Trebuchet MS", Georgia, "Times New Roman", Times, serif;
+}
+.optional {
+	font-size:72%!important;
+}
+.frontvisible p {
+	font-size:12px;
+}
+ul.frontvisible,
+.frontvisible ul {
+	list-style:none;
+	margin-left:60px;
+	padding-left:60px;
+	font-size:12px;
+}
+ul.frontvisible>li,
+.frontvisible li {
+	background: url('images/list_check.png') 0 0 no-repeat;
+	padding: 4px 0 0 30px;
+	font-size:14px;
+	line-height:24px;
+}
+
+.list1 {
+}
+
+.list1 li {
+	float: left;
+	line-height: normal;
+}
+
+.list1 li img {
+	margin: 0 30px 30px 0;
+}
+
+.list1 li.alt img {
+	margin-right: 0;
+}
+
+div.wrapper {
+	margin: auto; 
+}
+.errorMessage {
+	color: #E24912;
+	list-style: none;
+	font-style:italic;
+	margin:10px 0px;
+	font-size:110%;
+}
+
+.highlight {
+	background: url(images/menu_level2_parent.png) 0 40%  no-repeat;
+	padding-left:30px;
+	font-weight:bold;
+}
+
+.register {
+	background: url(images/register.png) right 40%  no-repeat;
+	padding-right:18px;
+}
+.notes {
+	color:#818181;
+	font-style:italic;
+    background-color: transparent;
+    background-image: url("images/info.jpg");
+    background-repeat: no-repeat;
+	background-position:0 left;
+    padding-left: 20px;
+	line-height:140%;
+}
+.notes_important {
+	color:#666;
+	font-style:italic;
+    background-color: transparent;
+    background-image: url("images/exclamation-icon.png");
+    background-repeat: no-repeat;
+	background-position:0 left;
+    padding-left: 20px;
+	line-height:140%;
+}
+.comments {
+	color:#666;
+	font-style:italic;
+ }
+ 
+.selectedHdr {
+	margin: 15px 0px 40px 0px;
+	color:#E24912;
+	font-family: "YanoneKaffeesatzLight"; 
+	font-size: 28px;
+}
+.helpHdr {
+    background-attachment: scroll;
+    background-color: transparent;
+    background-image: url("images/info-left.png");
+    background-position: 0 80%;  
+    background-repeat: no-repeat;
+    padding-left: 35px;
+}
+.next {
+	line-height:32px;
+	background-image: url("images/arrow_right.png");
+	background-position: 50% 40%;  
+	background-repeat: no-repeat;
+	padding-right:65px;
+	margin-bottom:20px;
+	text-align:center;
+}
+.next a {
+	text-decoration:none;
+}
+.prev {
+	line-height:32px;
+	background-image: url("images/arrow_left.png");
+	background-position: 45% 40%;  
+	background-repeat: no-repeat;
+	padding-left:25px;
+	text-align:center;
+	margin-bottom:20px;
+}
+.prev a {
+	text-decoration:none;
+}
+
+.smallInp {
+	width:10%!important;
+}
+.smallInp input[type="text"] {
+	width:10%!important;
+}
+
+.bigInp {
+	width:40%!important;
+}
+.bigInp input[type="text"] {
+	width:40%!important;
+}
+
+.validatedOk { 
+	line-height:32px;
+	background-image: url("images/tick.png");
+    background-position: 50% 100%;
+    background-repeat: no-repeat;
+}
+
+.addNewRow { 
+	line-height:32px;
+	background-image: url("images/tick.png");
+    background-position: 50% 50%;
+    background-repeat: no-repeat;
+}
+
+.validatedWrong {
+	line-height:32px;
+	background-image: url("images/error.png");
+    background-position: 50% 40%;  
+    background-repeat: no-repeat;
+}
+
+.validatedWarnings {
+	line-height:32px;
+	background-image: url("images/warning.png");
+    background-position: 50% 40%;  
+    background-repeat: no-repeat;
+}
+/*
+ * horizontal rule
+ */
+ 
+hr.dotted {
+	margin: 15px 0px 15px 0px;
+	display: block;
+	background: url(images/line_dotted.png) 0 0 repeat-x;
+	height: 1px;
+	border: none;
+}
+
+/*
+ * highlighted div and span tags
+ */
+
+span.note,
+span.info,
+span.alert,
+span.download,
+span.tip {
+	display: block;
+}
+
+.box-content {
+	background: #fafafa;
+	border: 1px solid #ddd;
+}
+
+
+div.note, span.note,
+div.info, span.info,
+div.alert, span.alert,
+div.download, span.download,
+div.tip, span.tip {
+	margin: 10px 0px 10px 0px;
+	padding: 8px 10px 8px 35px;
+	background: #fafafa;
+	border-top: 1px solid #ddd;
+	border-bottom: 1px solid #ddd;
+}
+
+div.info, span.info {
+	background: #ebf5fa url(images/box_info.png) 0 0 no-repeat;
+	border-color: #d2dce1;
+}
+
+div.alert, span.alert {
+	background: #fff0eb url(images/box_warning.png) 0 0 no-repeat;
+	border-color: #ffd7cd;
+}
+
+div.download, span.download {
+	background: #faffe6 url(images/box_download.png) 0 0 no-repeat;
+	border-color: #dce6be;
+}
+
+div.tip, span.tip {
+	background: #fffae6 url(images/box_tip.png) 0 0 no-repeat;
+	border-color: #fae6be;
+}
+.errorlink,
+.warninglink,
+.smallfont {
+	font-size:90%!important;
+}
+a.smallfont {
+	font-size:90%!important;
+}
+.firstpar {
+	padding:0px 5px 20px 45px;
+	margin:15px 0px;
+	background: no-repeat url(images/number-1.png) top left;
+}
+.secondpar {
+	padding:0px 5px 20px 45px;
+	margin:15px 0px;
+	background: no-repeat url(images/number-2.png) top left;
+}
+.thirdpar {
+	padding:0px 5px 20px 45px;
+	margin:15px 0px;
+	background: no-repeat url(images/number-3.png) top left;
+}
+.fourthpar {
+ 	padding:0px 5px 20px 45px;
+ 	margin:15px 0px;
+}
+.section {
+	padding-left:5px;
+	font-weight: normal;
+	text-transform: none;
+	line-height: 30px;
+	padding-top:3px;
+	padding-bottom: 10px;
+	font-family: "YanoneKaffeesatzLight"; 
+	font-size: 30px;
+	color:#343CB1;
+}
+.section1 {
+	padding-left:5px;
+	font-weight: normal;
+	text-transform: none;
+	line-height: 30px;
+	padding-top:3px;
+	padding-bottom: 10px;
+	font-family: "YanoneKaffeesatzLight"; 
+	font-size: 30px;
+	color:#343CB1;
+	background:#c2c2c2;
+}
+.box {
+	background: #fafafa;
+	border: 1px solid #ddd;
+}
+.field {
+	margin: 10px 0px;
+	line-height:28px;
+	font-size:100%;
+	clear:both;
+	overflow: hidden;
+}
+#left .field  {
+	padding:0
+	font-size:100%;
+	clear:both;
+	color:#351695;
+}
+.field label, label {
+	padding-left:1px;
+}
+	
+label input[type="text"] {
+	border:#839EB7 1px solid!important;
+	width:70%;
+}
+
+.field input[type="text"] {
+	width:80%;
+}
+.field input[type="password"] {
+	width:80%;
+}
+.fieldName {
+	margin-right: 10px;
+	font-family: "YanoneKaffeesatzLight"; 
+	font-size:18px;
+}
+
+
+/* Header */
+
+#header-wrapper {
+	color: #717171;
+}
+
+#header {
+	width: 970px;
+	height: 160px;
+	margin: 0 auto;
+	position:relative;
+}
+
+/* Menu */
+
+#topmenu {
+	height:30px;
+	padding-right:20px;
+}
+#topmenu ul {
+	list-style: none;
+}
+#topmenu li {
+	padding-left:10px;
+	font-family: "YanoneKaffeesatzLight"; 
+	font-size:16px;
+}
+#topmenu li a {
+	text-decoration:none;
+}
+
+
+
+	
+/* Search */
+/* oldname searchbox*/ 
+.class srchbx {
+	font-size:12px;
+	font-weight:bold;
+}
+#search {
+	float: right;
+	width: 305px;
+	height: 45px;
+}
+
+#search form {
+	float: right;
+	margin: 0;
+	padding: 12px 30px 0 0;
+}
+
+#search fieldset {
+	margin: 0;
+	padding: 0;
+	border: none;
+}
+
+#search input {
+	float: left;
+	font: 12px Georgia, "Times New Roman", Times, serif;
+	border: none;
+}
+
+#search-text {
+	width: 135px;
+	height: 18px;
+	padding: 3px 0 0 5px;
+	border: 1px solid #333333;
+	background: #ECF9E4;
+	color: #000000;
+}
+
+#search-submit {
+	height: 21px;
+	margin-left: 10px;
+	padding: 0px 5px;
+	background: #000000;
+	color: #FFFFFF;
+}
+
+/* Page */
+
+#page {
+	width: 970px;
+	margin: 0 auto;
+	/*background: #fafafa url(images/middle_bg_t.png) 0 0 repeat-x;*/
+	background:#ffffff;
+	box-shadow: 0 1px 0 rgba(0,0,0,0.1);
+}
+
+#page-bgtop {
+	
+}
+
+	/** LOGO */
+
+#logoLareferencia {
+	width: 308px;
+	height: 130px;
+	top:10px;
+	margin: 0 auto;
+	float:left;
+	position:absolute;
+	background: url(images/logo-referencia-openaire.png) no-repeat left bottom;
+	background-size: 300px;
+}	
+
+#logo {
+	width: 300px;
+	height: 130px;
+	top:10px;
+	margin: 0 auto;
+	float:left;
+	position:absolute;
+/* 	background: url(images/OpenAIREplus_logo.png) no-repeat left center; */
+}
+
+#logo h1, #logo p {
+	margin: 0px;
+	line-height: normal;
+	text-transform: none;
+	font-weight: normal;
+	color: #FFFFFF;
+}
+
+#logo p {
+	text-transform: lowercase;
+	font-size: 10px;
+}
+
+#logo h1 {
+	padding-top: 54px;
+	font-size: 34px;
+}
+
+#logo a {
+	text-decoration: none;
+	color: #FFFFFF;
+}
+
+/* Content */
+
+div#content {
+	width: auto;
+	min-height:300px;
+}
+div#content {
+	margin: 0px 0px 0px 0px;
+	float: left;
+	width: 658px;
+	padding-top: 10px;
+	padding-right: 30px;
+}
+
+.showright div#content {
+	margin: 0px 210px 0px 0px;  
+}
+
+
+/* Main */
+
+div#main {
+	/*background: url(images/img07.jpg) repeat-x left bottom;*/
+	width: auto!important;	 
+	min-height:300px;
+}
+ 
+div#main {
+	margin: 0px 0px 0px 0px;
+	padding: 0px 0px 0px 0px;
+}
+#main_container {
+	padding:0px 10px 0px 10px;
+}
+
+.left div#main {
+	margin: 0px 0px 0px 220px;  
+}
+.right div#main {
+	margin: 0px 240px 0px 0px;  
+}
+div#mainmiddle {
+	margin: 0px 0px 15px 0px;
+}
+div#middle {
+	margin: 0px 0px 0px 0px;
+	/*background: #fafafa url(images/middle_bg_t.png) 0 0 repeat-x;*/
+}
+
+div.middle-b {
+	padding: 15px 15px 15px 15px;
+	/*background: url(images/middle_bg_b.png) 0 100% repeat-x;	*/
+
+}
+
+div#middle .background {
+	min-height: 200px; 
+}
+.left div#middle .background {
+	background: url(images/left_bg_l.png) 220px 0 repeat-y;
+}
+/* Left */
+div#left {
+	width: 220px;
+}
+.left div#middle div#left {
+	float: left;
+}
+#left_container {
+	padding:0px 10px 0px 10px;
+}
+#left_container p, #left_container li, #left p, #left li{
+	text-align:left;
+	font-size:12px;
+}
+
+/* Post */
+
+.post {
+	/*background: url(images/img07.jpg) repeat-x left bottom;*/
+	padding-bottom: 25px;
+	padding-top: 5px;
+	margin: 15px 10px 0px 0px;
+	/*height: 180px;*/
+	position: relative;
+}
+
+.postvertical {
+	background: url(images/img07.jpg) repeat-x left bottom;
+	margin-bottom: 25px;
+	margin-top: 20px;
+	margin-right: 120px;
+	margin-left: 30px;
+	float: left;
+	width: 277px;
+}
+
+
+
+.post .title {
+	height: 30px;
+	color: #0F2B5B;
+}
+
+.post .title a {
+	text-decoration: none;
+	color: #585D60;
+}
+
+.post .date {
+}
+
+.post .meta {
+	margin-top: -10px;
+	padding: 2px 30px 2px 16px;
+	background: url(images/help.png) no-repeat left 8px;
+	font-weight: normal;
+	font-size: 10px;
+	color: #66665E;
+}
+
+.post .meta span {
+	display: block;
+	margin-top: -10px;
+}
+
+.post .meta a { 
+	padding-left: 3px;
+	text-decoration: none;
+	color: MediumBlue;
+}
+
+.post .entry {
+	padding: 10px 0;
+}
+
+.post .links {
+	margin: 0 250px 0 0;
+	padding: 0 0 0 0px;
+}
+
+.post .links .comments {
+}
+
+.post .links .permalink {
+	padding-left: 17px;
+}
+
+/* Sid */
+
+#sid {
+	float: left;
+	width: 177px;
+	padding-right: 22px;
+	font-size: 11px;
+	color: #585D60;
+}
+
+#sid ul {
+	margin: 0;
+	padding: 0;
+	list-style: none;
+	line-height: normal;
+}
+
+#sid li {
+	margin-bottom: 30px;
+	padding: 0 0 10px 0px;
+}
+
+#sid li ul {
+}
+
+#sid li li {
+	margin: 0;
+	padding: 7px 10px 10px 7px;
+	background: url(images/img07.jpg) repeat-x left bottom;
+}
+
+#sid p {
+	margin: 0;
+	padding: 0px 10px;
+}
+
+#sid h2 {
+	height: 26px;
+	margin: 0 0 10px 0px;
+	padding: 12px 0 2px 7px;
+	font-size: 18px;
+	font-weight: normal;
+	color: #464F54;
+}
+
+
+#sid p {
+	line-height: 200%;
+}
+#sid a {
+	text-align: left;
+	text-decoration: none;
+	font-weight: normal;
+	color: #585D60;
+}
+
+/* Calendar */
+
+#calendar {
+}
+
+#calendar caption {
+	padding-bottom: 5px;
+	font-weight: bold;
+}
+
+#calendar table {
+	width: 100%;
+	border-collapse: collapse;
+	border-bottom: 1px solid #24130F;
+	border-left: 1px solid #24130F;
+	border-right: 1px solid #24130F;
+}
+
+#calendar thead th {
+	padding: 5px 0;
+	text-align: center;
+	border-top: 1px solid #24130F;
+	border-left: 1px solid #24130F;
+	background: #24130F;
+}
+
+#calendar tbody td {
+	padding: 5px 0;
+	text-align: center;
+	border-top: 1px solid #24130F;
+	border-left: 1px solid #24130F;
+	border-bottom: 1px solid #24130F;
+}
+
+#calendar tfoot td {
+	padding: 5px;
+	border-left: 1px solid #24130F;
+	border-bottom: 1px solid #24130F;
+}
+
+#calendar tfoot #next {
+	border-top: 1px solid #24130F;
+	text-align: right;
+}
+
+#calendar tfoot #prev {
+	border-top: 1px solid #24130F;
+}
+
+#calendar .pad {
+	border-bottom: 1px solid #24130F;
+}
+
+#calendar #today {
+	background: #24130F;
+}
+
+/* Footer */
+
+#footer {
+	padding-top:10px;
+	clear: both;  
+	height: 62px;
+	background:#3440B5;
+	color:#ffffff;
+	border-top:1px solid #DADADA;
+
+	overflow: hidden;
+}
+
+#footer-bgcontent {
+	height: 62px;
+	padding: 10px;
+	background-attachment: scroll;
+    background-image: url("images/EC_logo_blue_multi_horizontal.png");
+    background-position: 95% 10%;
+    background-repeat: no-repeat;
+}
+
+#footer p {
+	font-size: 12px; font-family: "OpenSansLight"; 
+	margin: 0;
+	text-align: center;
+}
+
+#footer a {
+	color: #E5FFC4;
+}
+
+/* Table */
+
+#gradient-style
+{
+	font-size:100%;
+	text-align: left;
+	border-collapse: collapse;
+}
+#gradient-style th
+{
+	font-size: 110%;
+	font-weight: normal;
+	padding: 3px;
+	background: #F0F0F0;
+	border-top: 2px #CCCCCC solid;
+	border-bottom: 2px #CCCCCC solid;
+	color: #0F2B5B;
+}
+#gradient-style td
+{
+	padding:0px 3px;
+	border-bottom: 1px solid #fff;
+	color: #669;
+	border-top: 1px solid #fff;
+	background: #F0F0F0;
+}
+
+#gradient-style tfoot tr td
+{
+	background: #e8edff;
+	font-size: normal;
+	color: #99c;
+}
+#gradient-style tbody tr:hover td
+{
+	background: #0F2B5B;
+	color: #FFFFFF!important;
+}
+
+#gradient-style tbody tr:hover td a
+{
+	color: #fff!important;
+	text-decoration:underline;
+}
+
+.errordiv {
+	background-color:#FFFAE6;
+	padding: 5px 10px 5px 10px;
+	border-top: 1px dotted #AAB4BE;
+	border-bottom: 1px dotted #AAB4BE;
+}
+.errordiv:hover {
+}
+/* expand - colapse fields */
+
+.optiontable_container {
+	position:relative;
+	z-index:100;
+	min-width: 400px;
+}
+
+.optiontable_ttl {
+	line-height: 1em;
+	display:block;
+	margin-top: 0;
+	margin-bottom: 0;
+	padding-top: 0;
+	padding-bottom: 0;
+	padding-left: 10px;
+	padding-right: 10px;
+	border-color: #aeadad;
+	border-style: solid;
+	border-width:0 1px 1px;
+}
+
+.optiontable_content {
+	display:block;
+	padding-top: 5px;
+	padding-bottom: 5px;
+	padding-left: 2px;
+	padding-right: 2px;
+	border-color: #aeadad;
+	border-style: solid;
+	border-width:0 1px;
+}
+.contentR {
+	border-left: #aeadad solid 1px;
+	border-right: #aeadad solid 1px;
+}
+.usage {
+	border-left: #aeadad solid 1px;
+	border-right: #aeadad solid 1px;
+}
+
+.optiontable_content2 {
+	overflow:auto;
+	height: auto;/*30em;*/
+}
+
+.floatleft {
+	float: left;
+	padding-right: 10px;
+}
+
+
+a.help {
+    -moz-background-clip: border;
+    -moz-background-origin: padding;
+    -moz-background-size: auto auto;
+    background-attachment: scroll;
+    background-color: transparent;
+    background-image: url("images/help2.png");
+    background-position: 0 0;
+    background-repeat: no-repeat;
+    padding-left: 20px;
+}
+a.external {
+    -moz-background-clip: border;
+    -moz-background-origin: padding;
+    -moz-background-size: auto auto;
+    background-attachment: scroll;
+    background-color: transparent;
+    background-image: url("images/icon_external.png");
+    background-position: 0 40%;
+    background-repeat: no-repeat;
+    padding-left: 17px;
+}
+
+a.toplink {
+    background-attachment: scroll;
+    background-color: transparent;
+    background-image: url("images/footer_anchor.png");
+    background-position: bottom right;
+    background-repeat: no-repeat;
+    font-size: 12px;
+	width: 30px;
+	height: 5px;
+	display: block;
+	text-decoration: none;
+}
+
+a.download {
+    padding-left: 17px;
+    background: url(images/icon_download.png) 0 40% no-repeat;
+}
+
+.cmenu {
+	font-size: 12px;
+	margin : 10px 0px;
+	padding : 0px 10px 0px 0px;
+}
+
+a.cmenulink {
+	color: #0F2B5B;
+	text-transform: uppercase;
+	text-decoration: none;
+}
+
+a.selectlink {
+	text-decoration: none;
+}
+
+.nest {
+	padding-left:20px;
+	display: block;
+}
+
+/*
+ * Clearing & Floating
+ */
+ 
+.clearfix:after {
+	content: "."; 
+	display: block; 
+	height: 0;  
+	clear: both; 
+	visibility: hidden;
+}	
+ 
+.clearfix { display: block; }
+
+.floatbox { overflow:hidden; }
+
+.float-left { float: left; overflow: hidden; }
+.float-right { float: right; overflow: hidden; }
+
+.width15 { width: 14.999%; }
+.width18 { width: 18.333%; }
+.width20 { width: 19.999%; }
+.width23 { width: 22.999%; }
+.width25 { width: 24.999%; }
+.width33 { width: 33.333%; }
+.width35 { width: 34.999%; }
+.width40 { width: 39.999%; }
+.width45 { width: 44.999%; }
+.width50 { width: 49.999%; }
+.width54 { width: 53.999%; }
+.width65 { width: 64.999%; }
+.width75 { width: 74.999%; }
+.width100 { width: 100%; }
+
+.separator {
+	/*padding-right: 25px;*/
+	background: url(images/module_separator_m.png) 100% 0 repeat-y;
+}
+
+/* ajax request */
+#log_res {
+	overflow: auto;
+}
+ 
+#log_res.ajax-loading {
+	padding: 20px 0;
+	background: url(images/spinner.gif) no-repeat;
+}
+
+.button-default,
+.button-primary,
+form.style button,
+form.style input[type='button'],
+form.style input[type='submit'] { 
+	padding: 8px 14px;
+	margin-top: 5px;
+	margin-bottom: 5px;
+	border-radius: 2px; 
+	border: none;
+	box-shadow: inset 0 -1px 0 rgba(0,0,0,0.15);
+}
+
+/* Default */
+.button-default,
+form.style button,
+form.style input[type='button'],
+form.style input[type='submit'] {
+	background-color: #f5f5f5;
+	background-image: -o-linear-gradient(rgba(240,240,240,0), #dbdbdb);
+	background-image: -webkit-linear-gradient(rgba(240,240,240,0), #dbdbdb);
+	background-image: -moz-linear-gradient(rgba(240,240,240,0), #dbdbdb);
+	background-image: linear-gradient(rgba(240,240,240,0), #dbdbdb);
+	text-shadow: 0 1px 0 #fff;
+	text-decoration: none;
+	display: inherit;
+	text-align: center;
+	text-shadow: 0 1px 0 rgba(255,255,255,0.5);
+	color: #878787;
+}
+
+.button-default:hover,
+form.style button:hover,
+form.style input[type='button']:hover,
+form.style input[type='submit']:hover {
+	background-color: #dbdbdb;
+	box-shadow: inset 0 1px 5px rgba(0,0,0,0.1),
+				inset 0 0 1px rgba(0,0,0,0.1);
+}
+
+.button-default:active,
+form.style button:active,
+form.style input[type='button']:active,
+form.style input[type='submit']:active {
+	color: #737373;
+	box-shadow: inset 0 1px 5px rgba(0,0,0,0.1),
+				inset 0 0 1px rgba(0,0,0,0.1);
+}
+
+/* Primary */
+.button-primary {
+	color: #fff;
+	text-shadow: 0 -1px 0 rgba(0,0,0,0.3);
+}
+
+.button-primary:hover {
+	box-shadow: inset 0 1px 5px rgba(0,0,0,0.3),
+				inset 0 0 1px rgba(0,0,0,0.3);
+	color: #fff;
+}
+
+.button-primary:active {
+	box-shadow: inset 0 1px 8px rgba(0,0,0,0.4),
+				inset 0 0 1px rgba(0,0,0,0.3);
+	text-shadow: 0 0 5px #fff;
+}
+.wrapword{
+white-space: -moz-pre-wrap !important;  /* Mozilla, since 1999 */
+white-space: -pre-wrap;      /* Opera 4-6 */
+white-space: -o-pre-wrap;    /* Opera 7 */
+white-space: pre-wrap;       /* css-3 */
+word-wrap: break-word;       /* Internet Explorer 5.5+ */
+word-break: break-all;
+white-space: normal;
+}
+
+/* Zebra List and Table */
+table.zebra th, table.zebra td { padding: 5px; }
+table.zebra th { color:#3440B5 ;font-size: 14px; font-weight: normal; text-align: left; }
+table { border-collapse: collapse; border-spacing: 0; }
+table.zebra tbody, table.zebra tfoot { font-size: 12px; font-family: "OpenSansLight"; }
+
+table.zebra tbody td { border-bottom: 1px solid #ddd; word-wrap:break-word; }
+table.zebra tbody tr:first-child td { border-top: 1px solid #ddd; }
+
+table.zebra tbody tr.odd { background: url(images/zebra_list.png) 0 0 repeat; }
+table.zebra tbody tr:nth-of-type(odd) { background: url(images/zebra_list.png) 0 0 repeat;}
+
+table.zebra caption { color: #999; }
+table.zebra tbody tr:hover td { background: #E7E7E7; }
+
+/* Zebra List and Table */
+table.zebra1 th, table.zebra td { padding: 5px; }
+table.zebra1 th { font-size: 14px; font-weight: normal; text-align: left; }
+table { border-collapse: collapse; border-spacing: 0; }
+table.zebra1 tbody, table.zebra tfoot { font-size: 12px; font-family: "OpenSansLight"; }
+
+table.zebra1 tbody td { border-bottom: 0px solid #ddd; word-wrap:break-word; }
+table.zebra1 tbody tr:first-child td { border-top: 1px solid #ddd; }
+
+table.zebra1 tbody tr th{ color:black; }
+table.zebra1 tbody tr:first-child td { border-top: 0px solid #ddd; }
+
+table.zebra1 tbody th.numb {  background: #2D72D6; border: none; color: white;}
+table.zebra1 tbody td.numb {  background: #00B5F0; border: none; padding-left: 10px; color: white;}
+table.zebra1 tbody td.cb {  background: #dddddd; border: none; padding-left: 7px; color: white;}
+
+table.zebra1 caption { color: #999; }
+/* table.zebra1 tbody tr:hover  { background: #E7E7E7; } */
+
+
+/*----- Tabs -----*/
+.tabs {
+    width:100%;
+    display:inline-block;
+}
+ 
+    /*----- Tab Links -----*/
+    /* Clearfix */
+    .tab-links:after {
+        display:block;
+        clear:both;
+        content:'';
+    }
+ 
+    .tab-links li {
+        margin:0px 5px;
+        float:left;
+        list-style:none;
+        margin-bottom: -12px;
+    }
+    
+        .tab-links a {
+            padding:9px 15px;
+            display:inline-block;
+            border-radius:3px 3px 0px 0px;
+/*             background:#7FB5DA; */
+            background:#2D72D6;
+            text-decoration:none;
+			font-size: 15px;
+            font-weight:normal;;
+/*             color:#4c4c4c; */
+			color: #3440B5;
+            color:white;
+            transition:all linear 0.15s;
+/*             font-family: "YanoneKaffeesatzLight"; */
+/*             padding: 0 12px; */
+/* outline: 0; */
+/* position: relative; */
+/* white-space: nowrap; */
+
+        }
+ 
+        .tab-links a:hover {
+            background:#a7cce5;
+            text-decoration:none;
+        }
+
+    li.active a, li.active a:hover {
+        background:#F3F3F3;
+        color:#2D72D6;
+    }
+ 
+    /*----- Content of Tabs -----*/
+    .tab-content {
+        padding:10px;
+        border-radius:3px;
+        box-shadow:-1px 1px 1px rgba(0,0,0,0.15);
+        background:#F3F3F3;
+    }
+ 
+        .tab {
+            display:none;
+        }
+ 
+        .tab.active {
+            display:block;
+        }
\ No newline at end of file
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/editUser.jsp
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/editUser.jsp	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/editUser.jsp	(revision 47450)
@@ -0,0 +1,50 @@
+<%@ page contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<%@ taglib prefix="s" uri="/struts-tags"%>
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title><s:text name="editUser.title"/></title>
+<link href="jsps/favicon.ico" rel="shortcut icon" type="image/x-icon" />
+<link href="jsps/style.css" rel="stylesheet" type="text/css" media="screen" />
+</head>
+<body>
+<div id="wrapper">
+	<jsp:include page="menu.jsp"/>
+	<div id="page">
+        <div id="page-bgtop">
+            <div id="middle">
+                    <div class="middle-b">
+                        <div class="background">
+                            <div id="main">
+                                <div id="main_container" class="clearfix">
+                                    <div id="mainmiddle" class="floatbox">
+                                        <h1><s:text name="editUser.title"/></h1>
+                                        
+                                        <%--<p class="meta"><a href='<s:url value="/jsps/help.jsp#addRule"/>' target="_blank"><s:text name="help"/></a></p>--%>
+                                        <div class="entry">
+                                            <s:form action="editUser">
+                                                <div class="field"><s:textfield name="user.username" key="registration.username" readonly="true" requiredLabel="true"/></div>
+                                                <div class="field"><s:textfield name="user.email" key="registration.email" readonly="true" requiredLabel="true"/></div>
+                                            	<div class="field"><s:textfield name="user.firstname" key="registration.firstName" requiredLabel="true"/></div>
+                                                <div class="field"><s:textfield name="user.lastname" key="registration.lastName" requiredLabel="true"/></div>
+                                                <div class="field"><s:textfield name="user.institution" key="registration.institution"/></div>
+                                                <div class="field"><tr><td colspan="2"><hr class="dotted"/></td></tr></div>
+                                                <div class=" field float-left"><s:submit value="Update"/></div>
+                                            </s:form>
+                                        </div>
+                                    </div>
+                                </div>
+                            </div>
+                        </div>
+                    </div>
+                </div>
+        </div>
+        <!-- NMI This needs to be the same in all pages and the text is some properties file -->
+        <div id="footer"> 
+			<jsp:include page="footer.jsp"/>
+		</div>
+	</div>
+	</div>
+</body>
+</html>
\ No newline at end of file
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/chooseRuleSetForDeletion.jsp
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/chooseRuleSetForDeletion.jsp	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/chooseRuleSetForDeletion.jsp	(revision 47450)
@@ -0,0 +1,49 @@
+<%@ page contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<%@ taglib prefix="s" uri="/struts-tags"%>
+<html>
+<head>
+<link href="jsps/favicon.ico" rel="shortcut icon" type="image/x-icon" />
+<link href="jsps/style.css" rel="stylesheet" type="text/css" media="screen" />
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title><s:text name="deleteRuleSet.title"/></title>
+</head>
+<body class="left">
+<div id="wrapper">
+	<jsp:include page="menu.jsp"/>
+	<div id="page">
+	<div id="page-bgtop">
+	<div id="middle">
+            <div class="middle-b">
+                <div class="background">
+			 <div id="left">
+                              <div id="left_container" >
+                                   <h2 class="helpHdr">Info</h2>
+                                   <s:text name="help.admin"/>
+                              </div>
+                         </div>
+                        <div id="main">
+                        <div id="main_container" class="clearfix">
+			<div id="content">
+				<h2 class="title"><s:text name="deleteRuleSet.title"/></h2>
+                                <div class="entry">
+                                        <s:form action="deleteRuleSet">
+                                                <s:select name="setId" list="sets" listValue="name" listKey="id" key="chooseRuleSet.label"/>
+                                                <s:submit cssClass="button-default"/>
+                                        </s:form>
+                                </div>
+			</div>
+			</div>
+			</div>
+		</div>
+	</div>
+	</div>
+	</div>
+
+    <div id="footer">
+                <jsp:include page="footer.jsp"/>
+        </div>
+</div>
+</div>
+</body>
+</html>
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/images/button_arrow_right.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/images/button_arrow_right.png
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/images/button_arrow_right.png	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/images/button_arrow_right.png	(revision 47450)

Property changes on: modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/images/button_arrow_right.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/fonts/YanoneKaffeesatz-Light-webfont.ttf
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/fonts/YanoneKaffeesatz-Light-webfont.ttf
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/fonts/YanoneKaffeesatz-Light-webfont.ttf	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/fonts/YanoneKaffeesatz-Light-webfont.ttf	(revision 47450)

Property changes on: modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/fonts/YanoneKaffeesatz-Light-webfont.ttf
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/fonts/kreon.css
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/fonts/kreon.css	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/fonts/kreon.css	(revision 47450)
@@ -0,0 +1,12 @@
+/* Copyright (C) YOOtheme GmbH, YOOtheme Proprietary Use License (http://www.yootheme.com/license) */
+
+@font-face {
+	font-family: 'KreonRegular';
+	src: url('kreon-regular-webfont.eot');
+	src: url('kreon-regular-webfont.eot?#iefix') format('embedded-opentype'),
+		 url('kreon-regular-webfont.woff') format('woff'),
+		 url('kreon-regular-webfont.ttf') format('truetype'),
+		 url('kreon-regular-webfont.svg#KreonRegular') format('svg');
+	font-weight: normal;
+	font-style: normal;
+}
\ No newline at end of file
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/images/warning.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/images/warning.png
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/images/warning.png	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/images/warning.png	(revision 47450)

Property changes on: modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/images/warning.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/images/box_warning.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/images/box_warning.png
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/images/box_warning.png	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/images/box_warning.png	(revision 47450)

Property changes on: modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/images/box_warning.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/images/checkmark_24.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/images/checkmark_24.png
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/images/checkmark_24.png	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/images/checkmark_24.png	(revision 47450)

Property changes on: modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/images/checkmark_24.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/images/box_hint.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/images/box_hint.png
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/images/box_hint.png	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/images/box_hint.png	(revision 47450)

Property changes on: modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/images/box_hint.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/images/Line_Header.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/images/Line_Header.png
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/images/Line_Header.png	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/images/Line_Header.png	(revision 47450)

Property changes on: modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/images/Line_Header.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/images/info.jpg
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/images/info.jpg
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/images/info.jpg	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/images/info.jpg	(revision 47450)

Property changes on: modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/images/info.jpg
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/fonts/maven_pro_regular-webfont.ttf
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/fonts/maven_pro_regular-webfont.ttf
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/fonts/maven_pro_regular-webfont.ttf	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/fonts/maven_pro_regular-webfont.ttf	(revision 47450)

Property changes on: modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/fonts/maven_pro_regular-webfont.ttf
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/fonts/kreon-regular-webfont.ttf
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/fonts/kreon-regular-webfont.ttf
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/fonts/kreon-regular-webfont.ttf	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/fonts/kreon-regular-webfont.ttf	(revision 47450)

Property changes on: modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/fonts/kreon-regular-webfont.ttf
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/signin.jsp
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/signin.jsp	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/signin.jsp	(revision 47450)
@@ -0,0 +1,76 @@
+<%@ page contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<%@ taglib prefix="s" uri="/struts-tags"%>
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title><s:text name="login.title"/></title>
+<link href="jsps/favicon.ico" rel="shortcut icon" type="image/x-icon" />
+<link href="jsps/style.css" rel="stylesheet" type="text/css" media="screen" />
+</head>
+<body>
+<div id="wrapper">
+	<jsp:include page="menu.jsp"/>
+	<div id="page">
+		<div id="page-bgtop">
+			<div id="middle">
+                <div class="middle-b">
+                    <div class="background">
+                        <div class="main">
+                        <div id="main_container" class="clearfix">
+                                <div id="mainmiddle" class="floatbox">
+                                    <s:actionerror/>
+                                    <div class="post">
+                                        <h2 class="title"><s:text name="login.title"/></h2>
+                                        <s:text name="login.description"/>
+                                        <%--<p class="meta"><a href='<s:url value="/jsps/help.jsp#login"/>' target="_blank"><s:text name="help"/></a></p>--%>
+                                        <div class="entry">
+                                            <s:form action="Login">
+                                                <s:if test="%{repoMode.trim().toLowerCase().equals(\"dnet\")}">
+                                                    <s:textfield name="email" key="registration.username"/>
+                                                </s:if>
+                                                <s:else>
+                                                    <s:textfield name="email" key="registration.email"/>
+                                                </s:else>
+                                                <s:password name="password" key="registration.password"/>
+                                                <%-- <s:checkbox name="rememberme" key="registration.rememberme"/> --%>
+                                                <s:submit/>
+                                            </s:form>
+                                            <a href='<s:url value="forgotPassword" />'><s:text name="login.forgotpassword"/></a>
+                                        </div>
+                                    </div>
+                                    <div class="post">
+                                        <h2 class="title"><s:text name="registration.title"/></h2>
+                                        <s:text name="registration.description"/>
+                                        <%--<p class="meta"><a href='<s:url value="/jsps/help.jsp#registration"/>' target="_blank"><s:text name="help"/></a></p>--%>
+                                        <div class="entry">
+                                            <%-- <s:if test="%{@gr.uoa.di.validatorweb.configs.Constants@isModeLdap()}">
+                                                <s:text name="registration.ldap.message"/>
+                                            </s:if> --%>
+                                            <s:form action="Register">
+                                                <s:if test="%{repoMode.trim().toLowerCase().equals(\"dnet\")}">
+                                                    <s:textfield name="username" key="registration.username"/>
+                                                    <s:textfield name="firstName" key="registration.firstName"/>
+                                                    <s:textfield name="lastName" key="registration.lastName"/>
+                                                </s:if>
+                                                <s:textfield name="email" key="registration.email"/>
+                                                <s:password name="password" key="registration.password"/>
+                                                <s:password name="repassword" key="registration.repassword"/>
+                                                <s:submit/>
+                                            </s:form>
+                                        </div>
+                                    </div>
+								</div>
+                            </div>
+                        </div>
+                    </div>
+                </div>
+            </div>
+		</div>
+		  <div id="footer"> 
+           <jsp:include page="footer.jsp"/>
+        </div>
+	</div>
+</div>
+</body>
+</html>
\ No newline at end of file
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/fonts/maven_pro_regular-webfont.woff
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/fonts/maven_pro_regular-webfont.woff
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/fonts/maven_pro_regular-webfont.woff	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/fonts/maven_pro_regular-webfont.woff	(revision 47450)

Property changes on: modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/fonts/maven_pro_regular-webfont.woff
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/fonts/droidsans.css
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/fonts/droidsans.css	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/fonts/droidsans.css	(revision 47450)
@@ -0,0 +1,13 @@
+/* Copyright (C) YOOtheme GmbH, YOOtheme Proprietary Use License (http://www.yootheme.com/license) */
+
+@font-face {
+	font-family: 'DroidSansRegular';
+	src: url('DroidSans-webfont.eot');
+	src: url('DroidSans-webfont.eot?#iefix') format('embedded-opentype'),
+		 url('DroidSans-webfont.woff') format('woff'),
+		 url('DroidSans-webfont.ttf') format('truetype'),
+		 url('DroidSans-webfont.svg#DroidSansRegular') format('svg');
+	font-weight: normal;
+	font-style: normal;
+}
+
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/instructions.jsp
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/instructions.jsp	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/instructions.jsp	(revision 47450)
@@ -0,0 +1,43 @@
+<%@ page contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<%@ taglib prefix="s" uri="/struts-tags"%>
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title><s:text name="instructions.welcome"/></title>
+<link href="jsps/style.css" rel="stylesheet" type="text/css" media="screen" />
+
+ <link href="jsps/favicon.ico" rel="shortcut icon" type="image/x-icon" />
+</head>	
+<body>
+<div id="wrapper">
+	<jsp:include page="menu.jsp"/>
+	<div id="page">
+	<div id="page-bgtop">
+		<div id="middle">
+            <div class="middle-b">
+                <div class="background">
+                
+        			<div id="main">
+                        <div id="main_container" class="clearfix">
+                            <div id="mainmiddle" class="floatbox">
+                                <h1 class="title"><s:text name="instructions.welcome"/></h1>
+                                <div class="entry">
+                                	<s:text name="instructions.message"/>
+                                </div>
+                             </div>
+                        </div>
+                    </div>
+                 </div>
+			</div>
+		</div>
+		<div style="clear: both;">&nbsp;</div>
+	</div>
+    <!-- NMI This needs to be the same in all pages and the text is some properties file -->
+    <div id="footer"> 
+		<jsp:include page="footer.jsp"/>
+	</div>
+</div>
+</div>
+</body>
+</html>
\ No newline at end of file
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/fonts/OpenSans-Light-webfont.eot
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/fonts/OpenSans-Light-webfont.eot
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/fonts/OpenSans-Light-webfont.eot	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/fonts/OpenSans-Light-webfont.eot	(revision 47450)

Property changes on: modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/fonts/OpenSans-Light-webfont.eot
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/help2.jsp
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/help2.jsp	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/help2.jsp	(revision 47450)
@@ -0,0 +1,131 @@
+<%@ page contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<%@ taglib prefix="s" uri="/struts-tags"%>
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<link href="jsps/favicon.ico" rel="shortcut icon" type="image/x-icon" />
+<link href="jsps/style.css" rel="stylesheet" type="text/css" media="screen" />
+<title><s:text name="help"/></title>
+</head>
+<body>
+<div id="wrapper">
+	<jsp:include page="menu.jsp"/>
+	<div id="page">
+	<div id="page-bgtop">
+		<div id="content">
+			<div class="post">
+				<h2 class="title"><a name="addOaiContent"><s:text name="help.addOaiContent.title"/></a></h2>
+				<div class="entry">
+					<s:text name="help.addOaiContent.message"/>
+				</div>
+			</div>
+			<div class="post">
+				<h2 class="title"><a name="addOaiUsage"><s:text name="help.addOaiUsage.title"/></a></h2>
+				<div class="entry">
+					<s:text name="help.addOaiUsage.message"/>
+				</div>
+			</div>
+			<%--<div class="post">
+				<h2 class="title"><a name="addRule"><s:text name="help.addRule.title"/></a></h2>
+				<div class="entry">
+					<s:text name="help.addRule.message"/>
+				</div>
+			</div>--%>
+			<div class="post">
+				<h2 class="title"><a name="browseJobs"><s:text name="help.browseJobs.title"/></a></h2>
+				<div class="entry">
+					<s:text name="help.browseJobs.message"/>
+				</div>
+			</div>
+			<%--<div class="post">
+				<h2 class="title"><a name="chooseJobCategory"><s:text name="help.chooseJobCategory.title"/></a></h2>
+				<div class="entry">
+					<s:text name="help.chooseJobCategory.message"/>
+				</div>
+			</div>
+			<div class="post">
+				<h2 class="title"><a name="chooseRuleCategory"><s:text name="help.chooseRuleCategory.title"/></a></h2>
+				<div class="entry">
+					<s:text name="help.chooseRuleCategory.message"/>
+				</div>
+			</div>
+			<div class="post">
+				<h2 class="title"><a name="chooseRuleForEdit"><s:text name="help.chooseRuleForEdit.title"/></a></h2>
+				<div class="entry">
+					<s:text name="help.chooseRuleForEdit.message"/>
+				</div>
+			</div>
+			<div class="post">
+				<h2 class="title"><a name="chooseRuleSet"><s:text name="help.chooseRuleSet.title"/></a></h2>
+				<div class="entry">
+					<s:text name="help.chooseRuleSet.message"/>
+				</div>
+			</div>
+			<div class="post">
+				<h2 class="title"><a name="chooseRuleSetForDeletion"><s:text name="help.chooseRuleSetForDeletion.title"/></a></h2>
+				<div class="entry">
+					<s:text name="help.chooseRuleSetForDeletion.message"/>
+				</div>
+			</div>--%>
+			<div class="post">
+				<h2 class="title"><a name="createRuleSet"><s:text name="help.createRuleSet.title"/></a></h2>
+				<div class="entry">
+					<s:text name="help.createRuleSet.message"/>
+				</div>
+			</div>
+			<%--<div class="post">
+				<h2 class="title"><a name="deleteRule"><s:text name="help.deleteRule.title"/></a></h2>
+				<div class="entry">
+					<s:text name="help.deleteRule.message"/>
+				</div>
+			</div>--%>
+			<div class="post">
+				<h2 class="title"><a name="editRule"><s:text name="help.editRule.title"/></a></h2>
+				<div class="entry">
+					<s:text name="help.editRule.message"/>
+				</div>
+			</div>
+			<div class="post">
+				<h2 class="title"><a name="jobDetails"><s:text name="help.jobDetails.title"/></a></h2>
+				<div class="entry">
+					<s:text name="help.jobDetails.message"/>
+				</div>
+			</div>
+			<div class="post">
+				<h2 class="title"><a name="jobSummary"><s:text name="help.jobSummary.title"/></a></h2>
+				<div class="entry">
+					<s:text name="help.jobSummary.message"/>
+				</div>
+			</div>
+			<%--<div class="post">
+				<h2 class="title"><a name="login"><s:text name="help.login.title"/></a></h2>
+				<div class="entry">
+					<s:text name="help.login.message"/>
+				</div>
+			</div>
+			<div class="post">
+				<h2 class="title"><a name="registration"><s:text name="help.registration.title"/></a></h2>
+				<div class="entry">
+					<s:text name="help.registration.message"/>
+				</div>
+			</div>--%>
+			<div class="post">
+				<h2 class="title"><a name="repoRegistration"><s:text name="help.repoRegistration.title"/></a></h2>
+				<div class="entry">
+					<s:text name="help.repoRegistration.message"/>
+				</div>
+			</div>
+			<%--<div class="post">
+				<h2 class="title"><a name="resetPassword"><s:text name="help.resetPassword.title"/></a></h2>
+				<div class="entry">
+					<s:text name="help.resetPassword.message"/>
+				</div>
+			</div>--%>
+		</div>
+		<div style="clear: both;">&nbsp;</div>
+	</div>
+	</div>
+</div>
+</body>
+</html>
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/fonts/DroidSans-webfont.woff
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/fonts/DroidSans-webfont.woff
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/fonts/DroidSans-webfont.woff	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/fonts/DroidSans-webfont.woff	(revision 47450)

Property changes on: modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/fonts/DroidSans-webfont.woff
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/fonts/OpenSans-Light-webfont.woff
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/fonts/OpenSans-Light-webfont.woff
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/fonts/OpenSans-Light-webfont.woff	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/fonts/OpenSans-Light-webfont.woff	(revision 47450)

Property changes on: modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/fonts/OpenSans-Light-webfont.woff
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/fonts/YanoneKaffeesatz-Light-webfont.woff
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/fonts/YanoneKaffeesatz-Light-webfont.woff
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/fonts/YanoneKaffeesatz-Light-webfont.woff	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/fonts/YanoneKaffeesatz-Light-webfont.woff	(revision 47450)

Property changes on: modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/fonts/YanoneKaffeesatz-Light-webfont.woff
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/fonts/maven_pro_regular-webfont.svg
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/fonts/maven_pro_regular-webfont.svg	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/fonts/maven_pro_regular-webfont.svg	(revision 47450)
@@ -0,0 +1,245 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" >
+<svg xmlns="http://www.w3.org/2000/svg">
+<metadata>
+This is a custom SVG webfont generated by Font Squirrel.
+Copyright   : Copyright c 2011 by Vissol Ltd All rights reserved
+Designer    : Joe Prince
+Foundry     : Joe Prince
+</metadata>
+<defs>
+<font id="webfontOM8fITNz" horiz-adv-x="1529" >
+<font-face units-per-em="2048" ascent="1638" descent="-410" />
+<missing-glyph horiz-adv-x="692" />
+<glyph unicode=" "  horiz-adv-x="692" />
+<glyph unicode="&#x09;" horiz-adv-x="692" />
+<glyph unicode="&#xa0;" horiz-adv-x="692" />
+<glyph unicode="!" horiz-adv-x="761" d="M303 0v164h164v-164h-164zM311 1366h148l-15 -1022h-118z" />
+<glyph unicode="&#x22;" horiz-adv-x="780" d="M440 1384h170l-37 -411h-98zM203 973l-37 411h170l-35 -411h-98z" />
+<glyph unicode="#" horiz-adv-x="1210" d="M850 1071h125l-43 -242h147v-122h-168l-57 -326h166v-123h-186l-37 -219h-125l37 219h-271l-39 -219h-125l39 219h-168v123h189l55 326h-186v122h209l41 242h125l-41 -242h270zM729 381l57 326h-272l-55 -326h270z" />
+<glyph unicode="$" horiz-adv-x="1181" d="M1055 348q0 -156 -105.5 -250t-296.5 -110v-209h-110v205q-207 6 -377 96v160q158 -104 377 -109v520q-76 23 -117 37t-101.5 44t-92 63.5t-55 87t-23.5 121.5q0 143 95 249.5t294 126.5v209h110v-205q166 -8 314 -81v-152q-150 84 -314 86v-469q88 -29 147.5 -55.5 t124 -73.5t97.5 -120t33 -171zM301 1004q0 -78 61.5 -121t180.5 -80v428q-242 -34 -242 -227zM653 135q254 33 254 213q0 106 -65.5 165.5t-188.5 102.5v-481z" />
+<glyph unicode="%" horiz-adv-x="1777" d="M442 1360q123 0 209 -83t86 -294q0 -113 -26.5 -190.5t-71.5 -116.5t-93 -55.5t-104 -16.5q-57 0 -104 16.5t-93 55.5t-73 116.5t-27 190.5q0 111 27 189.5t73 116.5t93 54.5t104 16.5zM442 711q84 0 133.5 55t49.5 217t-49.5 216t-133.5 54q-86 0 -135 -54t-49 -216 t50 -217t134 -55zM1384 1366l-858 -1366h-131l858 1366h131zM1339 6q-57 0 -104 16.5t-93 55.5t-73 116.5t-27 190.5t27 190.5t73 116.5t93 55.5t104 16.5q55 0 103.5 -16.5t93.5 -55.5t71.5 -116.5t26.5 -190.5t-26.5 -190.5t-71.5 -116.5t-93.5 -55.5t-103.5 -16.5z M1339 657q-84 0 -134 -55t-50 -217t50 -217t134 -55t133.5 55t49.5 217t-49.5 217t-133.5 55z" />
+<glyph unicode="&#x26;" horiz-adv-x="1310" d="M1014 272l227 -272h-192l-125 152q-162 -168 -385 -168q-111 0 -198 38.5t-134 101t-71.5 127t-24.5 126.5q0 119 56 220t220 191q-135 168 -135 283q0 127 91 218t218 91q131 0 221 -87t90 -214q0 -109 -59 -183.5t-192 -152.5l297 -354q57 100 83 205h134 q-33 -177 -121 -322zM565 1233q-70 0 -120 -48t-50 -116q0 -72 129 -213q131 70 171 116t40 105q0 68 -49 112t-121 44zM545 127q172 0 291 129l-357 428q-78 -41 -128 -85t-68.5 -87t-22.5 -67.5t-4 -63.5q0 -33 12.5 -71t42 -82t90 -72.5t144.5 -28.5z" />
+<glyph unicode="'" horiz-adv-x="509" d="M203 973l-37 411h170l-35 -411h-98z" />
+<glyph unicode="(" horiz-adv-x="706" d="M418 1483h155q-29 -47 -59.5 -112.5t-74.5 -180.5t-72.5 -264.5t-28.5 -300.5q0 -150 28.5 -300.5t72.5 -264t76 -180t58 -111.5h-155q-227 408 -228 856q1 450 228 858z" />
+<glyph unicode=")" horiz-adv-x="706" d="M291 1483q227 -408 227 -856q0 -451 -227 -858h-158q29 47 59.5 111.5t75.5 180t74 265t29 301.5q0 195 -53.5 396.5t-98.5 296.5t-86 163h158z" />
+<glyph unicode="*" horiz-adv-x="841" d="M666 1270l-177 -80l177 -78l-56 -98l-153 112l16 -184h-111l21 184l-156 -112l-55 98l178 78l-178 80l55 94l156 -111l-21 187h111l-16 -187l153 111z" />
+<glyph unicode="+" horiz-adv-x="1128" d="M926 674v-123h-301v-301h-123v301h-303v123h303v303h123v-303h301z" />
+<glyph unicode="," horiz-adv-x="641" d="M303 172h168l-172 -401h-147z" />
+<glyph unicode="-" horiz-adv-x="950" d="M786 682v-143h-624v143h624z" />
+<glyph unicode="." horiz-adv-x="671" d="M260 0v164h164v-164h-164z" />
+<glyph unicode="/" horiz-adv-x="827" d="M723 1548h135l-754 -1749h-133z" />
+<glyph unicode="0" horiz-adv-x="1345" d="M671.5 1378q538.5 0 538.5 -700.5t-538.5 -700.5t-538.5 700.5t538.5 700.5zM671.5 113q61.5 0 110.5 10t104.5 45t92.5 94.5t60.5 164.5t23.5 251q0 178 -34 298t-95.5 174t-121.5 73.5t-140 19.5t-140.5 -19.5t-122 -73.5t-95 -174t-33.5 -298q0 -145 23.5 -250.5 t60 -165t92 -94.5t104.5 -45t110.5 -10z" />
+<glyph unicode="1" horiz-adv-x="923" d="M463 1366h168v-1366h-148v1212l-272 -180v174z" />
+<glyph unicode="2" horiz-adv-x="1189" d="M401 147h619v-147h-862v129q102 76 208.5 169t223.5 215t189.5 252t72.5 234q0 238 -322 238q-190 0 -358 -119v162q172 104 371 104q233 0 344.5 -112.5t111.5 -272.5q0 -111 -56 -232.5t-151.5 -236t-190 -206t-200.5 -177.5z" />
+<glyph unicode="3" horiz-adv-x="1193" d="M788 739q10 -4 26.5 -12t58.5 -39t75 -67.5t59.5 -99t26.5 -132.5q0 -78 -27.5 -147.5t-84 -129t-157.5 -94t-235 -34.5q-197 0 -364 86v151q160 -90 346 -90q182 0 278.5 67.5t96.5 194.5t-98.5 194.5t-284.5 67.5h-150v142h156q150 0 228.5 56t78.5 162.5t-83 164 t-240 57.5q-152 0 -295 -72v150q147 70 311 69q233 0 344 -108.5t111 -259.5q0 -172 -148 -260z" />
+<glyph unicode="4" horiz-adv-x="1210" d="M889 547h194v-137h-194v-410h-148v410h-663v157l645 799h166v-819zM242 547h499v608z" />
+<glyph unicode="5" horiz-adv-x="1202" d="M248 1366h702v-145h-575l-39 -406q121 37 266 37q84 0 153.5 -18.5t136 -63.5t105.5 -135t39 -217t-39 -217t-105.5 -135.5t-136 -63.5t-153.5 -18q-236 0 -391 84v153q150 -94 381 -94q80 0 138 19.5t89 46t47.5 69.5t20.5 77t4 79q0 92 -24.5 152.5t-71.5 88t-93.5 37 t-109.5 9.5q-96 0 -177 -16.5t-112 -33.5l-33 -14l-92 94z" />
+<glyph unicode="6" horiz-adv-x="1193" d="M598 874q215 0 340 -115.5t125 -314.5q0 -84 -25.5 -162.5t-78 -147t-145.5 -109.5t-216 -41q-465 0 -465 641q0 141 25.5 257.5t65.5 193.5t96.5 135.5t111.5 90t118.5 51t111 25.5t94.5 6q109 0 198 -26v-137q-102 25 -182 24q-47 0 -92 -6t-113.5 -32.5t-122 -73 t-97.5 -136.5t-58 -213q133 90 309 90zM598 123q102 0 172 38t98.5 98t37.5 103.5t9 83.5q0 139 -81.5 215t-235.5 76q-201 0 -317 -116q2 -141 27.5 -241.5t57 -149t83 -75t79 -29.5t70.5 -3z" />
+<glyph unicode="7" horiz-adv-x="1175" d="M143 1366h932v-137l-592 -1229h-164l596 1219h-772v147z" />
+<glyph unicode="8" horiz-adv-x="1191" d="M842 739q10 -4 25.5 -11t54.5 -34.5t69.5 -62.5t55 -95.5t24.5 -129.5q0 -78 -25.5 -149t-79 -134.5t-148.5 -101t-220 -37.5q-240 0 -356.5 127t-116.5 295q0 203 184 307l51 24l-20 11q-12 6 -44 30.5t-56.5 55t-44 84t-19.5 112.5q0 145 103.5 249.5t318.5 104.5 t318.5 -103t103.5 -251q0 -184 -148 -274zM324 1030q0 -111 72.5 -173t201.5 -62t201.5 62.5t72.5 172.5q0 209 -274 209t-274 -209zM598 123q86 0 149.5 23.5t96.5 56.5t52 76t23.5 71.5t4.5 55.5q0 123 -84 188t-242 65t-242 -65.5t-84 -187.5q0 -27 4.5 -55.5t23.5 -71.5 t52 -76t96.5 -56.5t149.5 -23.5z" />
+<glyph unicode="9" horiz-adv-x="1202" d="M584 494q-215 0 -340 115.5t-125 314.5q0 84 25.5 162.5t77.5 147.5t145.5 109.5t216.5 40.5q465 0 465 -643q0 -195 -48.5 -340t-116 -223t-160.5 -124t-160.5 -58t-137.5 -12q-104 0 -199 24v139q84 -25 183 -24q47 0 92 6t113.5 32.5t120.5 73t97.5 136.5t57.5 213 q-121 -90 -307 -90zM584 1245q-102 0 -172 -38t-98.5 -98t-38 -103t-9.5 -84q0 -139 82 -215t236 -76q207 0 317 117q-2 141 -27.5 241.5t-57.5 148.5t-83 74.5t-78.5 29.5t-70.5 3z" />
+<glyph unicode=":" horiz-adv-x="800" d="M324 98v164h163v-164h-163zM324 754v164h163v-164h-163z" />
+<glyph unicode=";" horiz-adv-x="854" d="M352 754v164h164v-164h-164zM350 172h168l-172 -401h-147z" />
+<glyph unicode="&#x3c;" horiz-adv-x="1351" d="M246 621l844 383v-164l-672 -289l672 -291v-162l-844 383v140z" />
+<glyph unicode="=" horiz-adv-x="1306" d="M1049 524v-143h-789v143h789zM1049 840v-142h-789v142h789z" />
+<glyph unicode="&#x3e;" horiz-adv-x="1329" d="M1112 621v-140l-842 -383v162l670 291l-670 289v164z" />
+<glyph unicode="?" horiz-adv-x="993" d="M391 0v164h164v-164h-164zM449 1382q61 0 120.5 -14t129 -50t112.5 -117t43 -197q0 -82 -31.5 -142.5t-77.5 -98.5l-90 -76q-45 -38 -76.5 -101.5t-31.5 -151.5v-90h-148v100q0 104 32 181t77 120t90 78t77 79t32 102q0 231 -269 231q-156 0 -274 -90v160q113 77 285 77z " />
+<glyph unicode="@" horiz-adv-x="1869" d="M1040 596q74 0 152 -10q2 14 2 43q0 35 -6 59.5t-23.5 50t-60.5 39t-109 13.5q-143 0 -256 -43l17 118q123 41 239 41q156 0 237 -70.5t81 -207.5q0 -59 -11.5 -142.5t-17.5 -137.5t-4 -107.5t30.5 -79t86.5 -25.5q90 0 169 114t79 312q0 145 -55.5 262t-144.5 186.5 t-191.5 106.5t-206.5 37q-311 0 -554 -230.5t-243 -553.5q0 -154 51 -270.5t123 -177t163 -98.5t153.5 -47t113.5 -9q254 0 430 100l-18 -92q-172 -82 -428 -82q-86 0 -174.5 22.5t-178.5 74.5t-158.5 127t-112.5 192.5t-44 259.5q0 244 133 445.5t334 309t410 107.5 q82 0 171 -21.5t180 -73t162.5 -126t116.5 -189t45 -254.5q0 -221 -91 -362t-242 -141q-137 0 -191 100q-96 -100 -295 -100q-143 0 -225 62t-82 171q0 49 16.5 94t59.5 94.5t138 79t230 29.5zM903 184q49 0 88 8.5t65.5 17.5t47 31.5t31 37t18.5 46t11 46t6.5 51.5t5.5 47 q-55 8 -136 8q-326 0 -325 -178q0 -115 188 -115z" />
+<glyph unicode="A" horiz-adv-x="1325" d="M735 1366l543 -1366h-158l-164 426h-589l-164 -426h-160l545 1366h147zM422 567h479l-239 625z" />
+<glyph unicode="B" horiz-adv-x="1271" d="M940 727q10 -2 24.5 -8t54.5 -33t69.5 -61.5t54 -98t24.5 -139.5q0 -387 -495 -387h-494v1366h453q455 0 454 -367q0 -55 -15 -104t-36.5 -78t-42 -50.5t-37.5 -29.5zM684 137q156 0 246 54.5t90 203.5q0 63 -21.5 108.5t-52.5 71t-80 39t-91 17.5t-97 4h-352v-498h358z M938 989q0 133 -72.5 184.5t-220.5 51.5h-319v-451h338q125 0 199.5 43t74.5 172z" />
+<glyph unicode="C" horiz-adv-x="1286" d="M272 684q0 -291 121 -426t381 -135q209 0 400 80v-142q-199 -78 -416 -77q-633 0 -633 700t633 700q219 0 416 -79v-142q-195 82 -400 82q-260 0 -381 -135t-121 -426z" />
+<glyph unicode="D" horiz-adv-x="1372" d="M178 1366h428q641 0 641 -682q0 -684 -641 -684h-428v1366zM596 139q262 0 383 131t121 414t-121 414t-383 131h-270v-1090h270z" />
+<glyph unicode="E" horiz-adv-x="1159" d="M326 1227v-471h628v-144h-628v-473h714v-139h-862v1366h862v-139h-714z" />
+<glyph unicode="F" horiz-adv-x="1097" d="M178 1366h838v-139h-690v-471h606v-144h-606v-612h-148v1366z" />
+<glyph unicode="G" horiz-adv-x="1386" d="M758 600v143h477v-653q-221 -106 -477 -106q-633 0 -633 700t633 700q227 0 430 -86v-143q-199 88 -414 88q-260 0 -381 -135t-121 -424q0 -291 121 -425t381 -134q164 0 313 49v426h-329z" />
+<glyph unicode="H" horiz-adv-x="1380" d="M1053 1366h147v-1366h-147v612h-727v-612h-148v1366h148v-612h727v612z" />
+<glyph unicode="I" horiz-adv-x="501" d="M178 1366h148v-1366h-148v1366z" />
+<glyph unicode="J" horiz-adv-x="915" d="M573 1366h148v-958q0 -125 -35 -213.5t-95.5 -131.5t-124 -61t-136.5 -18q-147 0 -271 71v154q117 -82 252 -82q139 0 200.5 68.5t61.5 224.5v946z" />
+<glyph unicode="K" horiz-adv-x="1294" d="M571 727l633 -727h-194l-535 623l-149 -164v-459h-148v1366h148v-704l632 704h199z" />
+<glyph unicode="L" horiz-adv-x="1067" d="M326 143h698v-143h-846v1366h148v-1223z" />
+<glyph unicode="M" horiz-adv-x="1619" d="M1278 1366h160v-1366h-148v1124l-483 -696l-481 696v-1124h-148v1366h160l469 -694z" />
+<glyph unicode="N" horiz-adv-x="1490" d="M1161 1366h148v-1366h-166l-817 1151v-1151h-148v1366h168l815 -1151v1151z" />
+<glyph unicode="O" d="M758 1384q635 0 635 -700t-635 -700q-633 0 -633 700t633 700zM758 123q254 0 370.5 135t116.5 426t-116.5 426t-370.5 135q-252 0 -369 -135t-117 -426t117 -426t369 -135z" />
+<glyph unicode="P" horiz-adv-x="1220" d="M662 1366q229 0 351 -108.5t122 -313.5t-122 -313.5t-351 -108.5h-338v-522h-148v1366h486zM643 664q109 0 181.5 23.5t105.5 68.5t45 88t12 100t-12 100t-45 88.5t-105.5 69t-181.5 23.5h-319v-561h319z" />
+<glyph unicode="Q" d="M1393 684q0 -651 -553 -698q41 -170 268 -176v-134q-113 0 -196 30t-127 81t-65.5 98t-29.5 101q-565 37 -565 698q0 700 633 700q635 0 635 -700zM758 123q254 0 370.5 135t116.5 426t-116.5 426t-370.5 135q-252 0 -369 -135t-117 -426t117 -426t369 -135z" />
+<glyph unicode="R" horiz-adv-x="1271" d="M829 573l375 -573h-174l-356 551h-348v-551h-148v1366h502q223 0 343 -101.5t120 -295.5q0 -88 -28 -160t-63.5 -112t-84.5 -69.5t-80 -39t-58 -15.5zM672 690q102 0 170.5 23.5t99.5 65.5t42 83t11 96.5t-11 96.5t-42 83t-99.5 65.5t-170.5 23.5h-346v-537h346z" />
+<glyph unicode="S" horiz-adv-x="1150" d="M272 1004q0 -70 56.5 -117t139.5 -69.5t181.5 -57.5t181 -76t139 -127t56.5 -209q0 -170 -128 -267t-357 -97q-223 0 -404 96v160q162 -109 393 -109q348 0 349 217q0 92 -56.5 154.5t-139.5 91.5l-181 60q-98 32 -181 65t-139.5 105.5t-56.5 179.5q0 158 114.5 269 t356.5 111q174 0 342 -81v-152q-152 86 -328 86q-164 0 -251 -60t-87 -173z" />
+<glyph unicode="T" horiz-adv-x="1163" d="M25 1366h1112v-143h-482v-1223h-147v1223h-483v143z" />
+<glyph unicode="U" horiz-adv-x="1476" d="M1141 1366h147v-805q0 -281 -143.5 -429t-411.5 -148t-411.5 148.5t-143.5 428.5v805h148v-813q0 -434 407.5 -434t407.5 434v813z" />
+<glyph unicode="V" horiz-adv-x="1251" d="M1061 1366h158l-525 -1366h-145l-524 1366h157l441 -1155z" />
+<glyph unicode="W" horiz-adv-x="1947" d="M1765 1366h156l-440 -1366h-150l-358 1114l-359 -1114h-151l-438 1366h155l359 -1143l360 1143h148l358 -1143z" />
+<glyph unicode="X" horiz-adv-x="1206" d="M690 690l484 -690h-177l-397 563l-395 -563h-180l485 692l-473 674h176l387 -549l385 549h180z" />
+<glyph unicode="Y" horiz-adv-x="1224" d="M1012 1366h178l-508 -739v-627h-147v627l-510 739h178l405 -596z" />
+<glyph unicode="Z" horiz-adv-x="1247" d="M1104 1366v-125l-785 -1094h785v-147h-973v129l780 1090h-759v147h952z" />
+<glyph unicode="[" horiz-adv-x="784" d="M391 1286v-1384h223v-140h-370v1663h370v-139h-223z" />
+<glyph unicode="\" horiz-adv-x="753" d="M59 1548l752 -1749h-133l-754 1749h135z" />
+<glyph unicode="]" horiz-adv-x="780" d="M393 1286h-221v139h369v-1663h-369v140h221v1384z" />
+<glyph unicode="^" horiz-adv-x="1146" d="M600 1413l213 -444h-123l-145 325l-148 -325h-123l213 444h113z" />
+<glyph unicode="_" horiz-adv-x="1118" d="M0 -49h1118v-90h-1118v90z" />
+<glyph unicode="`" horiz-adv-x="448" d="M244 1391l116 -236h-96l-170 236h150z" />
+<glyph unicode="a" horiz-adv-x="1093" d="M522 1040q215 0 328 -108.5t113 -317.5v-307q0 -98 -45.5 -167.5t-117 -100.5t-134 -43t-123.5 -12q-47 0 -96.5 6t-112 27.5t-108.5 55t-78.5 96t-32.5 144.5q0 70 25.5 125.5t62.5 90t94 59t101 36t104.5 17.5t86 7t60.5 1l164 -10q0 137 -75.5 195.5t-223.5 58.5 q-166 0 -299 -49v143q151 53 307 53zM815 307v197q-68 12 -182 12q-371 0 -371 -203q0 -193 281 -192q272 0 272 186z" />
+<glyph unicode="b" horiz-adv-x="1167" d="M569 1040q70 0 131.5 -12t125 -47t109.5 -90t74.5 -149.5t28.5 -217.5q0 -135 -31.5 -236.5t-77.5 -157.5t-110.5 -91t-119 -45t-111.5 -10q-111 0 -193 27.5t-123 63.5t-66.5 86t-30.5 82.5t-5 63.5v1106h147v-414q123 41 252 41zM588 119q57 0 103 13t95.5 51t77 125 t27.5 216q0 199 -76 289t-246 90q-127 0 -252 -51v-553q1 -180 271 -180z" />
+<glyph unicode="c" horiz-adv-x="966" d="M266 512q0 -205 83 -296t265 -91q154 0 287 57v-143q-143 -55 -303 -55q-72 0 -134.5 12t-128 48t-111.5 92.5t-75.5 152.5t-29.5 223q0 156 43 265.5t116.5 163.5t150.5 76.5t169 22.5q154 0 303 -57v-141q-139 57 -287 57q-182 0 -265 -92t-83 -295z" />
+<glyph unicode="d" horiz-adv-x="1150" d="M129 524q0 152 41 258.5t113.5 159.5t147.5 74.5t165 21.5q135 0 254 -39v412h147v-1106q0 -41 -12 -84t-50 -102.5t-130 -97t-227 -37.5q-57 0 -111.5 10t-118 45t-109.5 91t-78 157.5t-32 236.5zM276 524q0 -129 28 -216t77 -125t94 -51t103 -13q272 0 272 180v553 q-125 51 -254 51q-168 0 -244 -90t-76 -289z" />
+<glyph unicode="e" horiz-adv-x="1136" d="M578 1040q94 0 170.5 -29.5t121.5 -69.5t79 -104.5t48.5 -109.5t22.5 -108.5t8 -78.5v-44l-4 -72h-745q14 -154 94 -223.5t237 -69.5q223 0 351 76v-152q-150 -72 -365 -71q-90 0 -165 21.5t-147.5 74.5t-113.5 159.5t-41 258.5v7.5v7.5q0 527 449 527zM279 555h598 q0 35 -8.5 78t-34 110.5t-92 112.5t-164.5 45q-152 0 -220.5 -79t-78.5 -267z" />
+<glyph unicode="f" horiz-adv-x="675" d="M612 1317q-49 0 -74.5 -4t-61.5 -24.5t-53 -73t-17 -136.5v-57h280v-135h-280v-887h-148v887h-176v135h176v55q0 106 27.5 182t62.5 112t89.5 56.5t83 22.5t67.5 2q55 0 98 -12v-131q-41 8 -74 8z" />
+<glyph unicode="g" horiz-adv-x="1101" d="M557 1040q131 0 220 -36.5t125 -94t48.5 -99.5t12.5 -83v-770q0 -68 -19.5 -125t-64.5 -111.5t-137.5 -85t-223.5 -30.5q-143 0 -291 37v139q131 -37 275 -37q98 0 164.5 17.5t96.5 50t41 64.5t11 77v102q-115 -37 -240 -37q-68 0 -127 11.5t-120.5 45.5t-105.5 88 t-71.5 144t-27.5 209q0 160 43 271.5t115.5 162.5t138 70.5t137.5 19.5zM815 203v530q0 172 -258 172q-55 0 -98 -13t-90 -50t-73 -120t-26 -206q0 -115 24.5 -189.5t72 -110.5t95.5 -48t113 -12q123 0 240 47z" />
+<glyph unicode="h" horiz-adv-x="1181" d="M649 1040q188 0 290.5 -113.5t102.5 -320.5v-606h-147v606q0 287 -262 287q-143 0 -293 -62v-831h-147v1411h147v-436q155 65 309 65z" />
+<glyph unicode="i" horiz-adv-x="540" d="M348 0v1022h-147v-1022h147zM356 1366v-162h-163v162h163z" />
+<glyph unicode="j" horiz-adv-x="514" d="M207 1366h164v-162h-164v162zM215 1022h147v-1081q0 -336 -356 -336v137q127 2 168 50t41 157v1073z" />
+<glyph unicode="k" horiz-adv-x="1124" d="M559 553l492 -553h-197l-391 449l-127 -138v-311h-148v1411h148v-891l459 502h200z" />
+<glyph unicode="l" horiz-adv-x="552" d="M354 0h-147v1411h147v-1411z" />
+<glyph unicode="m" horiz-adv-x="1824" d="M1251 1040q186 0 288.5 -98t102.5 -276v-666h-147v666q0 43 -8 76.5t-32.5 71.5t-79 58.5t-134.5 20.5q-129 0 -283 -51q33 -74 33 -176v-666h-147v666q0 45 -8.5 78.5t-33 70.5t-80.5 57.5t-138 20.5q-125 0 -244 -37v-856h-147v942q197 98 409 98q168 0 270 -84 q197 84 379 84z" />
+<glyph unicode="n" horiz-adv-x="1189" d="M600 1040q193 0 299.5 -98t106.5 -276v-666h-148v666q0 43 -9 76.5t-35 71.5t-84 58.5t-146 20.5q-129 0 -269 -41v-852h-147v940q201 100 432 100z" />
+<glyph unicode="o" horiz-adv-x="1155" d="M579.5 1040q92.5 0 170 -22.5t151.5 -76.5t117 -163.5t43 -265.5t-43 -265.5t-117 -163.5t-151.5 -76.5t-170 -22.5t-169 22.5t-150.5 76.5t-117 163.5t-43 265.5t43 265.5t117 163.5t150.5 76.5t169 22.5zM580 119q174 0 253.5 93t79.5 300t-79.5 300t-253.5 93 t-253 -94t-79 -299t79 -299t253 -94z" />
+<glyph unicode="p" horiz-adv-x="1159" d="M588 1040q57 0 111.5 -10t118 -45t109.5 -92t77.5 -158.5t31.5 -236.5q0 -152 -41 -258.5t-113.5 -159.5t-147.5 -74.5t-165 -21.5q-125 0 -254 39v-402h-147v1096q0 41 12.5 84t50 103.5t130 98t227.5 37.5zM569 121q168 0 244 89t76 290q0 129 -27.5 215t-77 125 t-94.5 52t-102 13q-272 0 -273 -182v-551q117 -51 254 -51z" />
+<glyph unicode="q" horiz-adv-x="1150" d="M115 498q0 135 31.5 236.5t77.5 158.5t109.5 92t118 45t111.5 10q111 0 193 -27.5t123 -63.5t66.5 -86t30.5 -82.5t5 -63.5v-1096h-147v402q-117 -39 -252 -39q-90 0 -165 21.5t-147.5 74.5t-113.5 159.5t-41 258.5zM262 500q0 -201 76 -290t244 -89q135 0 252 51v551 q0 182 -271 182q-57 0 -102 -13t-94.5 -52t-77 -125t-27.5 -215z" />
+<glyph unicode="r" horiz-adv-x="702" d="M662 897q-168 -4 -349 -53v-844h-147v940q231 98 496 98v-141z" />
+<glyph unicode="s" horiz-adv-x="872" d="M248 743q0 -53 56 -85.5t137 -54t162 -51.5t137.5 -101.5t56.5 -182.5q0 -133 -99.5 -208.5t-275.5 -75.5q-170 0 -309 77v156q147 -90 303 -90q233 0 233 141q0 76 -56 119t-137 64.5t-162 47t-137.5 86t-56.5 158.5q0 123 89.5 210t273.5 87q131 0 262 -63v-148 q-117 70 -246 70q-231 0 -231 -156z" />
+<glyph unicode="t" horiz-adv-x="706" d="M375 887v-623q0 -78 32.5 -109.5t114.5 -31.5q63 0 117 24v-139q-68 -25 -135 -24q-41 0 -80 9t-88 35.5t-79 89t-30 154.5v615h-178v135h178v289h148v-289h264v-135h-264z" />
+<glyph unicode="u" horiz-adv-x="1202" d="M877 1022h147v-592q0 -213 -111.5 -329.5t-316.5 -116.5t-316.5 116.5t-111.5 329.5v592h147v-600q0 -156 68 -228.5t213 -72.5q143 0 212 72.5t69 228.5v600z" />
+<glyph unicode="v" horiz-adv-x="1062" d="M842 1022h157l-393 -1022h-149l-391 1022h157l309 -838z" />
+<glyph unicode="w" horiz-adv-x="1603" d="M1368 1022h156l-340 -1022h-150l-233 764l-234 -764h-149l-340 1022h155l261 -791l235 791h141l238 -791z" />
+<glyph unicode="x" horiz-adv-x="1032" d="M600 514l363 -514h-177l-274 389l-274 -389h-181l365 518l-354 504h174l268 -379l268 379h180l-356 -504z" />
+<glyph unicode="y" horiz-adv-x="1028" d="M807 1022h158l-418 -1122q-109 -295 -322 -295q-49 0 -96 18v135q41 -18 88 -18q39 0 77 28.5t62.5 68.5t45 81t28.5 70l10 28l-377 1006h158l291 -809z" />
+<glyph unicode="z" horiz-adv-x="950" d="M840 1022v-129l-561 -752h561v-141h-748v133l557 748h-543v141h734z" />
+<glyph unicode="{" horiz-adv-x="763" d="M463 72q0 -88 39 -122t121 -38v-137q-150 0 -229 78.5t-79 228.5v319q0 111 -129 150v100q129 33 129 148v319q0 150 79 229.5t229 79.5v-139q-82 -4 -121 -36.5t-39 -123.5v-329q0 -119 -119 -199q119 -80 119 -199v-329z" />
+<glyph unicode="|" horiz-adv-x="907" d="M526 -203h-147v1565h147v-1565z" />
+<glyph unicode="}" horiz-adv-x="753" d="M315 72v329q0 117 121 199q-121 82 -121 199v329q0 90 -37.5 123t-121.5 37v139q150 0 228.5 -79.5t78.5 -229.5v-319q0 -115 129 -148v-100q-129 -39 -129 -150v-319q0 -150 -79 -228.5t-228 -78.5v137q82 4 120.5 38t38.5 122z" />
+<glyph unicode="~" horiz-adv-x="1024" d="M823 639v-123q-57 -72 -122.5 -79t-127.5 26l-122 64q-61 32 -127 25t-123 -79v125q57 72 122.5 79t127.5 -26l122 -65q61 -33 127 -26t123 79z" />
+<glyph unicode="&#xa1;" horiz-adv-x="741" d="M467 1022v-162h-164v162h164zM459 -344h-148l15 1022h118z" />
+<glyph unicode="&#xa2;" horiz-adv-x="976" d="M897 1014q-125 51 -266 55v-772q143 4 266 57v-143q-125 -49 -266 -55v-156h-103v158q-412 41 -411 526q0 268 116.5 388t294.5 136v158h103v-156q131 -2 266 -55v-141zM264 684q0 -178 63.5 -270t200.5 -111v762q-137 -20 -200.5 -111.5t-63.5 -269.5z" />
+<glyph unicode="&#xa3;" horiz-adv-x="1136" d="M727 1243q-299 0 -299 -233v-299h412v-136h-412v-415q51 -6 145.5 -25.5t154.5 -30t143 -7.5t153 30v-150q-100 -39 -229 -29.5t-230.5 38t-229.5 31.5t-231 -48v150q80 39 177 45v411h-177v136h177v293q0 158 105.5 269t328.5 111q162 0 309 -79v-150q-139 88 -297 88z " />
+<glyph unicode="&#xa5;" horiz-adv-x="1232" d="M1204 1366l-444 -645h256v-123h-322v-192h322v-123h-322v-283h-147v283h-322v123h322v192h-322v123h256l-444 645h180l404 -588l403 588h180z" />
+<glyph unicode="&#xa7;" horiz-adv-x="1112" d="M1008 629q0 -76 -51.5 -130.5t-125.5 -78.5q72 -59 72 -158q0 -131 -111.5 -204.5t-310.5 -73.5q-203 0 -350 73v152q135 -84 340 -84q285 0 285 137q0 61 -48.5 102.5t-218.5 79.5q-184 43 -277 101.5t-93 181.5q0 164 186 223q-82 51 -82 144q0 119 100.5 204.5 t309.5 85.5q156 0 297 -61v-145q-131 70 -285 69q-274 0 -274 -153q0 -25 8 -40.5t68.5 -44t179.5 -55.5q84 -18 140 -38.5t116.5 -56.5t92.5 -94t32 -136zM743 514q117 35 117 115q0 61 -49 102t-217 80q-98 23 -176 49q-152 -29 -152 -133q0 -25 8.5 -40t70 -44t179.5 -55 q135 -29 219 -74z" />
+<glyph unicode="&#xa8;" horiz-adv-x="788" d="M162 1155v162h162v-162h-162zM465 1155v162h162v-162h-162z" />
+<glyph unicode="&#xa9;" horiz-adv-x="1593" d="M799 -16q-289 0 -495 204.5t-206 493.5q0 291 206 495.5t495 204.5q291 0 495.5 -204.5t204.5 -495.5q0 -289 -204.5 -493.5t-495.5 -204.5zM799 1311q-258 0 -442.5 -184.5t-184.5 -444.5q0 -258 184.5 -442.5t442.5 -184.5q260 0 443 184.5t183 442.5q0 260 -183 444.5 t-443 184.5zM535 682q0 -170 70.5 -249t221.5 -79q121 0 234 47v-82q-115 -45 -244 -45q-369 0 -368 408q0 410 368 410q129 0 244 -45v-82q-109 45 -234 45q-152 0 -222 -79t-70 -249z" />
+<glyph unicode="&#xaa;" horiz-adv-x="806" d="M381 1382q246 0 246 -235v-172q0 -72 -46 -115t-92.5 -53t-95.5 -10t-96 10t-94 54t-47 118q0 186 297 186l92 -6q0 143 -168 144q-92 0 -164 -29v80q72 28 168 28zM545 977v108q-37 6 -101 7q-207 0 -206 -111q0 -109 155 -109q152 1 152 105z" />
+<glyph unicode="&#xab;" horiz-adv-x="1132" d="M608 911l-364 -389l364 -391h-198l-347 391l347 389h198zM997 911l-364 -389l364 -391h-198l-346 391l346 389h198z" />
+<glyph unicode="&#xac;" horiz-adv-x="1273" d="M199 664h876v-340h-135v204h-741v136z" />
+<glyph unicode="&#xad;" horiz-adv-x="950" d="M786 682v-143h-624v143h624z" />
+<glyph unicode="&#xae;" horiz-adv-x="1593" d="M926 618l219 -335h-103l-206 323h-205v-323h-86v798h293q131 0 201.5 -58t70.5 -173q0 -63 -22.5 -111.5t-57.5 -72t-58 -33t-46 -15.5zM834 688q113 0 150.5 43t37.5 112.5t-38 112.5t-150 43h-203v-311h203zM799 -16q-289 0 -495 204.5t-206 493.5q0 291 206 495.5 t495 204.5q291 0 495.5 -204.5t204.5 -495.5q0 -289 -204.5 -493.5t-495.5 -204.5zM799 1311q-258 0 -442.5 -184.5t-184.5 -444.5q0 -258 184.5 -442.5t442.5 -184.5q260 0 443 184.5t183 442.5q0 260 -183 444.5t-443 184.5z" />
+<glyph unicode="&#xaf;" horiz-adv-x="825" d="M176 1180v108h479v-108h-479z" />
+<glyph unicode="&#xb0;" horiz-adv-x="792" d="M391 1370q109 0 166 -58.5t57 -168.5q0 -227 -223 -227.5t-223 227t223 227.5zM391 989q78 0 114 36t36 118q0 80 -36 116.5t-114 36.5q-80 0 -114.5 -36.5t-34.5 -116.5q0 -82 34.5 -118t114.5 -36z" />
+<glyph unicode="&#xb1;" horiz-adv-x="1198" d="M657 721h301v-123h-301v-303h-122v303h-304v123h304v301h122v-301zM231 68v122h727v-122h-727z" />
+<glyph unicode="&#xb2;" horiz-adv-x="671" d="M240 1028h331v-80h-462v70q133 98 252.5 230t119.5 239q0 125 -172 125q-106 0 -192 -62v86q90 55 198 56q125 0 185.5 -60.5t60.5 -144.5q1 -197 -321 -459z" />
+<glyph unicode="&#xb3;" horiz-adv-x="661" d="M444 1346q6 -2 14.5 -6.5t31 -20.5t40 -36.5t31.5 -54.5t14 -71q0 -90 -66.5 -153.5t-203.5 -63.5q-102 0 -196 45v82q90 -49 186 -49q203 0 203 141t-207 141h-80v76h84q164 0 164 119q0 117 -174 117q-88 0 -158 -37v80q82 37 168 37q125 0 184.5 -58.5t59.5 -138.5 q0 -49 -23.5 -86t-48.5 -49z" />
+<glyph unicode="&#xb4;" horiz-adv-x="483" d="M240 1391h151l-170 -236h-98z" />
+<glyph unicode="&#xb5;" horiz-adv-x="1247" d="M891 1022h147v-938q-193 -100 -430 -100q-152 2 -258 82v-496h-147v1452h147v-664q0 -45 9.5 -78.5t35 -70.5t83 -57.5t145.5 -20.5q135 0 268 39v852z" />
+<glyph unicode="&#xb6;" horiz-adv-x="911" d="M549 1366h203v-1366h-136v524h-67q-229 0 -350 108.5t-121 313.5q0 203 121 311.5t350 108.5z" />
+<glyph unicode="&#xb7;" horiz-adv-x="636" d="M399 639v-164h-161v164h161z" />
+<glyph unicode="&#xb8;" horiz-adv-x="518" d="M399 -10l-129 -236h-155l168 236h116z" />
+<glyph unicode="&#xb9;" horiz-adv-x="491" d="M244 1683h90v-735h-78v651l-147 -96v94z" />
+<glyph unicode="&#xba;" horiz-adv-x="854" d="M422 1384q266 0 266 -294q0 -293 -266 -293q-113 0 -189.5 64.5t-76.5 228.5q0 86 23.5 147t64.5 92t84 43t94 12zM422 872q98 0 141 51.5t43 166t-43 167t-141 52.5q-96 0 -140 -52.5t-44 -167t44 -166t140 -51.5z" />
+<glyph unicode="&#xbb;" horiz-adv-x="1132" d="M526 911h197l348 -389l-348 -391h-197l363 391zM137 911h197l348 -389l-348 -391h-197l363 391z" />
+<glyph unicode="&#xbc;" horiz-adv-x="1433" d="M1225 295h104v-74h-104v-221h-80v221h-357v84l347 428h90v-438zM877 295h268v326zM240 1380h92v-733h-80v651l-146 -98v94zM1042 1403h97l-895 -1448h-97z" />
+<glyph unicode="&#xbd;" horiz-adv-x="1460" d="M240 1380h92v-733h-80v651l-146 -98v94zM999 80h332v-80h-461v70q133 98 252 229t119 238q0 127 -172 127q-104 0 -192 -64v88q98 55 198 55q127 0 186.5 -60t59.5 -146q0 -195 -322 -457zM1042 1403h97l-895 -1448h-97z" />
+<glyph unicode="&#xbe;" horiz-adv-x="1654" d="M471 1042q6 -2 14.5 -6t31 -20.5t39.5 -35.5t31.5 -53t14.5 -71q0 -90 -65.5 -154.5t-204.5 -64.5q-98 0 -197 47v80q94 -47 189 -47q201 0 200 141q0 68 -53 104.5t-154 36.5h-79v74h84q164 0 163.5 119t-174.5 119q-84 0 -157 -39v82q82 37 168 37q125 0 184 -58.5 t59 -140.5q0 -49 -23.5 -86t-45.5 -49zM1446 295h104v-74h-104v-221h-80v221h-356v84l346 428h90v-438zM1098 295h268v326zM1264 1403h96l-895 -1448h-96z" />
+<glyph unicode="&#xbf;" horiz-adv-x="989" d="M610 1022v-162h-164v162h164zM553 -360q-47 0 -93 7t-105.5 31.5t-102.5 64.5t-74 111.5t-31 165.5q0 82 32 141.5t77 97.5l90 76q45 38 77 101.5t32 151.5v92h147v-102q0 -104 -31.5 -181.5t-76.5 -119t-90.5 -77.5t-77 -80t-31.5 -100q0 -233 270 -233q141 0 275 90 v-160q-115 -77 -287 -77z" />
+<glyph unicode="&#xc0;" horiz-adv-x="1325" d="M735 1366l543 -1366h-158l-164 426h-589l-164 -426h-160l545 1366h147zM422 567h479l-239 625zM590 1718l117 -235h-99l-170 235h152z" />
+<glyph unicode="&#xc1;" horiz-adv-x="1325" d="M43 0l545 1366h147l543 -1366h-158l-164 426h-589l-164 -426h-160zM422 567h479l-239 625zM731 1718h152l-170 -235h-99z" />
+<glyph unicode="&#xc2;" horiz-adv-x="1325" d="M735 1366l543 -1366h-158l-164 426h-589l-164 -426h-160l545 1366h147zM422 567h479l-239 625zM705 1731l163 -248h-114l-92 145l-93 -145h-114l163 248h87z" />
+<glyph unicode="&#xc3;" horiz-adv-x="1325" d="M948 1526q-53 -66 -114.5 -73t-117.5 23l-112 59q-55 30 -116.5 22.5t-114.5 -72.5v117q53 66 114.5 71.5t116.5 -23.5l112 -60q56 -30 117.5 -23.5t114.5 71.5v-112zM735 1366l543 -1366h-158l-164 426h-589l-164 -426h-160l545 1366h147zM422 567h479l-239 625z" />
+<glyph unicode="&#xc4;" horiz-adv-x="1325" d="M428 1483v164h164v-164h-164zM731 1483v164h164v-164h-164zM735 1366l543 -1366h-158l-164 426h-589l-164 -426h-160l545 1366h147zM422 567h479l-239 625z" />
+<glyph unicode="&#xc5;" horiz-adv-x="1325" d="M735 1366l543 -1366h-158l-164 426h-589l-164 -426h-160l545 1366h147zM422 567h479l-239 625zM661.5 1759q79.5 0 122.5 -43t43 -125t-43 -125t-122.5 -43t-122.5 43t-43 125t43 125t122.5 43zM662 1493q49 0 70.5 22.5t21.5 76t-21.5 77t-70.5 23.5q-51 0 -72 -23.5 t-21 -77t21 -76t72 -22.5z" />
+<glyph unicode="&#xc6;" horiz-adv-x="1939" d="M1126 1225v-471h607v-144h-607v-469h691v-141h-838v428h-506l-252 -428h-170l811 1366h955v-141h-691zM979 575v644h-45l-375 -644h420z" />
+<glyph unicode="&#xc7;" horiz-adv-x="1286" d="M774 1247q-260 0 -381 -134t-121 -425t121 -426t381 -135q209 0 400 80v-141q-172 -68 -357 -78l-125 -232h-155l163 232q-575 35 -575 698q0 700 633 700q217 0 416 -77v-142q-187 80 -400 80z" />
+<glyph unicode="&#xc8;" horiz-adv-x="1159" d="M596 1718l117 -235h-99l-170 235h152zM326 1227v-471h628v-144h-628v-473h714v-139h-862v1366h862v-139h-714z" />
+<glyph unicode="&#xc9;" horiz-adv-x="1159" d="M680 1718h151l-169 -235h-97zM326 1227v-471h628v-144h-628v-473h714v-139h-862v1366h862v-139h-714z" />
+<glyph unicode="&#xca;" horiz-adv-x="1159" d="M662 1731l165 -248h-114l-92 145l-95 -145h-114l166 248h84zM326 1227v-471h628v-144h-628v-473h714v-139h-862v1366h862v-139h-714z" />
+<glyph unicode="&#xcb;" horiz-adv-x="1159" d="M395 1483v164h162v-164h-162zM698 1483v164h162v-164h-162zM326 1227v-471h628v-144h-628v-473h714v-139h-862v1366h862v-139h-714z" />
+<glyph unicode="&#xcc;" horiz-adv-x="501" d="M178 0v1366h148v-1366h-148zM184 1718l117 -235h-98l-170 235h151z" />
+<glyph unicode="&#xcd;" horiz-adv-x="501" d="M326 0v1366h-148v-1366h148zM319 1718h152l-170 -235h-98z" />
+<glyph unicode="&#xce;" horiz-adv-x="501" d="M326 0v1366h-148v-1366h148zM295 1731l164 -248h-115l-92 145l-92 -145h-115l164 248h86z" />
+<glyph unicode="&#xcf;" horiz-adv-x="501" d="M326 0v1366h-148v-1366h148zM18 1483v164h164v-164h-164zM322 1483v164h163v-164h-163z" />
+<glyph unicode="&#xd0;" horiz-adv-x="1468" d="M696 1366q641 0 641 -682q0 -684 -641 -684h-428v621h-159v122h159v623h428zM686 139q262 0 383 131t121 414t-121 414t-383 131h-270v-486h350v-122h-350v-482h270z" />
+<glyph unicode="&#xd1;" horiz-adv-x="1490" d="M1161 1366h148v-1366h-166l-817 1151v-1151h-148v1366h168l815 -1151v1151zM1032 1526q-53 -66 -114.5 -73t-117.5 23l-113 59q-56 30 -117.5 22.5t-114.5 -72.5v117q53 66 114.5 71.5t117.5 -23.5l113 -60q56 -30 117.5 -23.5t114.5 71.5v-112z" />
+<glyph unicode="&#xd2;" d="M125 684q0 700 633 700t633 -700t-633 -700t-633 700zM272 684q0 -291 117 -426t369 -135t368.5 135t116.5 426t-116.5 426t-368.5 135t-369 -135t-117 -426zM713 1718l116 -235h-96l-170 235h150z" />
+<glyph unicode="&#xd3;" d="M758 1384q633 0 633 -700t-633 -700t-633 700t633 700zM758 123q252 0 368.5 135t116.5 426t-116.5 426t-368.5 135t-369 -135t-117 -426t117 -426t369 -135zM801 1718h151l-170 -235h-96z" />
+<glyph unicode="&#xd4;" d="M758 1384q633 0 633 -700t-633 -700t-633 700t633 700zM758 123q252 0 368.5 135t116.5 426t-116.5 426t-368.5 135t-369 -135t-117 -426t117 -426t369 -135zM801 1731l164 -248h-115l-92 145l-92 -145h-115l164 248h86z" />
+<glyph unicode="&#xd5;" d="M758 1384q635 0 635 -700t-635 -700q-633 0 -633 700t633 700zM758 123q254 0 370.5 135t116.5 426t-116.5 426t-370.5 135q-252 0 -369 -135t-117 -426t117 -426t369 -135zM1047 1526q-53 -66 -115 -73t-118 23l-113 59q-56 30 -116.5 22.5t-113.5 -72.5v117 q53 66 113.5 71.5t116.5 -23.5l113 -60q56 -30 117.5 -23.5t115.5 71.5v-112z" />
+<glyph unicode="&#xd6;" d="M524 1483v164h164v-164h-164zM827 1483v164h164v-164h-164zM758 1384q633 0 633 -700t-633 -700t-633 700t633 700zM758 123q252 0 368.5 135t116.5 426t-116.5 426t-368.5 135t-369 -135t-117 -426t117 -426t369 -135z" />
+<glyph unicode="&#xd7;" horiz-adv-x="985" d="M705 160l-209 276l-207 -276h-131l272 364l-272 365h131l207 -277l209 277h131l-273 -365l273 -364h-131z" />
+<glyph unicode="&#xd8;" d="M1415 1366l-160 -188q137 -174 138 -494q0 -702 -635 -702q-254 0 -410 118l-86 -100h-160l158 188q-135 172 -135 496q0 700 633 700q256 0 411 -118l86 100h160zM272 684q0 -252 84 -383l721 856q-115 88 -319 88q-252 0 -369 -135t-117 -426zM1245 684q0 244 -84 381 l-721 -856q115 -88 318 -88q254 0 370.5 135t116.5 428z" />
+<glyph unicode="&#xd9;" horiz-adv-x="1476" d="M672 1718l116 -235h-96l-172 235h152zM1141 1366h147v-805q0 -281 -143.5 -429t-411.5 -148t-411.5 148.5t-143.5 428.5v805h148v-813q0 -434 407.5 -434t407.5 434v813z" />
+<glyph unicode="&#xda;" horiz-adv-x="1476" d="M795 1718h151l-170 -235h-98zM1141 1366h147v-805q0 -281 -143.5 -429t-411.5 -148t-411.5 148.5t-143.5 428.5v805h148v-813q0 -434 407.5 -434t407.5 434v813z" />
+<glyph unicode="&#xdb;" horiz-adv-x="1476" d="M776 1731l164 -248h-115l-92 145l-92 -145h-115l164 248h86zM1141 1366h147v-805q0 -281 -143.5 -429t-411.5 -148t-411.5 148.5t-143.5 428.5v805h148v-813q0 -434 407.5 -434t407.5 434v813z" />
+<glyph unicode="&#xdc;" horiz-adv-x="1476" d="M500 1483v164h164v-164h-164zM803 1483v164h164v-164h-164zM1141 1366h147v-805q0 -281 -143.5 -429t-411.5 -148t-411.5 148.5t-143.5 428.5v805h148v-813q0 -434 407.5 -434t407.5 434v813z" />
+<glyph unicode="&#xdd;" horiz-adv-x="1224" d="M655 1718h150l-170 -235h-96zM1012 1366h178l-508 -739v-627h-147v627l-510 739h178l405 -596z" />
+<glyph unicode="&#xde;" horiz-adv-x="1167" d="M590 1159q227 0 349 -109.5t122 -314.5t-122 -313.5t-349 -108.5h-266v-313h-148v1366h148v-207h266zM569 455q109 0 181.5 23.5t105.5 68.5t45 88t12 100.5t-12 100.5t-45 88t-105.5 68.5t-181.5 23.5h-245v-561h245z" />
+<glyph unicode="&#xdf;" horiz-adv-x="1255" d="M889 705q10 -4 27.5 -12.5t61.5 -39t76.5 -66.5t60.5 -94.5t28 -123.5q0 -170 -150.5 -269.5t-384.5 -99.5v133q162 0 274.5 61.5t112.5 188.5q0 129 -120.5 188.5t-266.5 59.5v129q145 0 232.5 62.5t87.5 181.5q0 123 -85 183t-222 60q-141 0 -217 -87t-76 -300v-860 h-148v868q0 113 23.5 203t73 162t136.5 111.5t208 39.5q229 0 341.5 -112.5t112.5 -267.5q0 -51 -19.5 -100.5t-46 -84.5t-54 -61.5t-46.5 -40.5z" />
+<glyph unicode="&#xe0;" horiz-adv-x="1093" d="M522 1040q215 0 328 -108.5t113 -315.5v-309q0 -98 -45.5 -167.5t-117 -100.5t-134 -43t-123.5 -12q-47 0 -96.5 6t-112 27.5t-108.5 55t-78.5 96t-32.5 144.5q0 70 25.5 125.5t62.5 90t94 59t101 36t104.5 17.5t86 7t60.5 1l164 -10q0 137 -75.5 195.5t-223.5 58.5 q-166 0 -299 -49v143q151 53 307 53zM815 307v197q-68 12 -182 12q-371 0 -371 -203q0 -193 281 -192q272 0 272 186zM506 1391l117 -236h-97l-170 236h150z" />
+<glyph unicode="&#xe1;" horiz-adv-x="1093" d="M522 1040q215 0 328 -108.5t113 -315.5v-309q0 -98 -45.5 -167.5t-117 -100.5t-134 -43t-123.5 -12q-47 0 -96.5 6t-112 27.5t-108.5 55t-78.5 96t-32.5 144.5q0 70 25.5 125.5t62.5 90t94 59t101 36t104.5 17.5t86 7t60.5 1l164 -10q0 137 -75.5 195.5t-223.5 58.5 q-166 0 -299 -49v143q151 53 307 53zM815 307v197q-68 12 -182 12q-371 0 -371 -203q0 -193 281 -192q272 0 272 186zM584 1391h151l-170 -236h-98z" />
+<glyph unicode="&#xe2;" horiz-adv-x="1093" d="M522 1040q215 0 328 -108.5t113 -315.5v-309q0 -98 -45.5 -167.5t-117 -100.5t-134 -43t-123.5 -12q-47 0 -96.5 6t-112 27.5t-108.5 55t-78.5 96t-32.5 144.5q0 70 25.5 125.5t62.5 90t94 59t101 36t104.5 17.5t86 7t60.5 1l164 -10q0 137 -75.5 195.5t-223.5 58.5 q-166 0 -299 -49v143q151 53 307 53zM815 307v197q-68 12 -182 12q-371 0 -371 -203q0 -193 281 -192q272 0 272 186zM612 1401l164 -246h-114l-93 143l-92 -143h-115l164 246h86z" />
+<glyph unicode="&#xe3;" horiz-adv-x="1093" d="M522 1040q215 0 328 -108.5t113 -315.5v-309q0 -98 -45.5 -167.5t-117 -100.5t-134 -43t-123.5 -12q-47 0 -96.5 6t-112 27.5t-108.5 55t-78.5 96t-32.5 144.5q0 70 25.5 125.5t62.5 90t93 59t101 36t105.5 17.5t85 7t59.5 1l166 -10q0 137 -75.5 195.5t-223.5 58.5 q-150 0 -299 -47v141q141 53 307 53zM815 307v197q-68 12 -182 12q-371 0 -371 -201q0 -195 281 -194q272 0 272 186zM846 1198q-53 -66 -114.5 -73t-118.5 23l-112 59q-56 30 -117.5 23t-115.5 -73v117q53 66 114.5 72t118.5 -24l112 -59q56 -30 118 -24t115 72v-113z" />
+<glyph unicode="&#xe4;" horiz-adv-x="1093" d="M336 1155v162h164v-162h-164zM639 1155v162h164v-162h-164zM522 1040q215 0 328 -108.5t113 -315.5v-309q0 -98 -45.5 -167.5t-117 -100.5t-134 -43t-123.5 -12q-47 0 -96.5 6t-112 27.5t-108.5 55t-78.5 96t-32.5 144.5q0 70 25.5 125.5t62.5 90t94 59t101 36 t104.5 17.5t86 7t60.5 1l164 -10q0 137 -75.5 195.5t-223.5 58.5q-166 0 -299 -49v143q151 53 307 53zM815 307v197q-68 12 -182 12q-371 0 -371 -203q0 -193 281 -192q272 0 272 186z" />
+<glyph unicode="&#xe5;" horiz-adv-x="1093" d="M522 1040q215 0 328 -108.5t113 -315.5v-309q0 -98 -45.5 -167.5t-117 -100.5t-134 -43t-123.5 -12q-47 0 -96.5 6t-112 27.5t-108.5 55t-78.5 96t-32.5 144.5q0 70 25.5 125.5t62.5 90t94 59t101 36t104.5 17.5t86 7t60.5 1l164 -10q0 137 -75.5 195.5t-223.5 58.5 q-166 0 -299 -49v143q151 53 307 53zM815 307v197q-68 12 -182 12q-371 0 -371 -203q0 -193 281 -192q272 0 272 186zM559 1432q80 0 123 -43t43 -125t-43 -125t-123 -43t-123 43t-43 125t43 125t123 43zM559 1163q49 0 70.5 23.5t21.5 77t-21.5 76t-70.5 22.5 q-51 0 -71.5 -22.5t-20.5 -76t20.5 -77t71.5 -23.5z" />
+<glyph unicode="&#xe6;" horiz-adv-x="1824" d="M1255 1040q94 0 171 -29.5t122 -69.5t79 -104.5t48.5 -109.5t22.5 -108.5t8 -78.5v-44l-4 -72h-746q14 -154 94 -223.5t240 -69.5q219 0 350 76v-152q-154 -72 -366 -71q-248 0 -365 151q-104 -152 -370 -151q-47 0 -96.5 6t-112 27.5t-108.5 55t-78.5 96t-32.5 144.5 q0 70 25.5 125.5t62.5 90t93 59t101 36t105.5 17.5t85 7t59.5 1l166 -10q0 137 -76 195.5t-223 58.5q-166 0 -299 -49v143q152 53 305 53q268 0 377 -168q112 168 362 168zM809 307v197q-66 12 -180 12q-371 0 -371 -203q0 -193 281 -192q270 0 270 186zM956 555h598 q0 35 -8 78t-33.5 110.5t-92 112.5t-165.5 45q-150 0 -219.5 -79t-79.5 -267z" />
+<glyph unicode="&#xe7;" horiz-adv-x="966" d="M614 899q-182 0 -265 -92t-83 -295q0 -205 83 -296t265 -91q154 0 287 57v-143q-115 -41 -225 -53l-127 -230h-156l164 228q-86 4 -157.5 30.5t-138 83t-104.5 162t-38 252.5q0 156 43 265.5t116.5 163.5t150.5 76.5t169 22.5q154 0 303 -57v-141q-140 57 -287 57z" />
+<glyph unicode="&#xe8;" horiz-adv-x="1136" d="M578 1040q94 0 170.5 -29.5t121.5 -69.5t79 -104.5t48.5 -109.5t22.5 -108.5t8 -78.5v-44l-4 -72h-745q14 -154 94 -223.5t237 -69.5q223 0 351 76v-152q-150 -72 -365 -71q-90 0 -165 21.5t-147.5 74.5t-113.5 159.5t-41 258.5v10q-2 532 449 532zM279 555h598 q0 35 -8.5 78t-34 110.5t-92 112.5t-164.5 45q-152 0 -220.5 -79t-78.5 -267zM547 1391l117 -236h-99l-170 236h152z" />
+<glyph unicode="&#xe9;" horiz-adv-x="1136" d="M578 1040q94 0 170.5 -29.5t121.5 -69.5t79 -104.5t48.5 -109.5t22.5 -108.5t8 -78.5v-44l-4 -72h-745q14 -154 94 -223.5t237 -69.5q223 0 351 76v-152q-150 -72 -365 -71q-90 0 -165 21.5t-147.5 74.5t-113.5 159.5t-41 258.5v10q-2 532 449 532zM279 555h598 q0 35 -8.5 78t-34 110.5t-92 112.5t-164.5 45q-152 0 -220.5 -79t-78.5 -267zM623 1391h151l-170 -236h-98z" />
+<glyph unicode="&#xea;" horiz-adv-x="1136" d="M578 1040q94 0 170.5 -29.5t121.5 -69.5t79 -104.5t48.5 -109.5t22.5 -108.5t8 -78.5v-44l-4 -72h-745q14 -154 94 -223.5t237 -69.5q223 0 351 76v-152q-150 -72 -365 -71q-90 0 -165 21.5t-147.5 74.5t-113.5 159.5t-41 258.5v10q-2 532 449 532zM279 555h598 q0 35 -8.5 78t-34 110.5t-92 112.5t-164.5 45q-152 0 -220.5 -79t-78.5 -267zM621 1401l163 -246h-114l-92 143l-93 -143h-114l164 246h86z" />
+<glyph unicode="&#xeb;" horiz-adv-x="1136" d="M578 1040q94 0 170.5 -29.5t121.5 -69.5t79 -104.5t48.5 -109.5t22.5 -108.5t8 -78.5v-44l-4 -72h-745q14 -154 94 -223.5t237 -69.5q223 0 351 76v-152q-150 -72 -365 -71q-90 0 -165 21.5t-147.5 74.5t-113.5 159.5t-41 258.5v10q-2 532 449 532zM279 555h598 q0 35 -8.5 78t-34 110.5t-92 112.5t-164.5 45q-152 0 -220.5 -79t-78.5 -267zM344 1155v162h164v-162h-164zM647 1155v162h164v-162h-164z" />
+<glyph unicode="&#xec;" horiz-adv-x="552" d="M203 0v1022h147v-1022h-147zM209 1391l117 -236h-99l-170 236h152z" />
+<glyph unicode="&#xed;" horiz-adv-x="552" d="M350 0v1022h-147v-1022h147zM342 1391h152l-170 -236h-97z" />
+<glyph unicode="&#xee;" horiz-adv-x="552" d="M350 0v1022h-147v-1022h147zM317 1401l166 -246h-114l-93 143l-94 -143h-114l165 246h84z" />
+<glyph unicode="&#xef;" horiz-adv-x="552" d="M350 0v1022h-147v-1022h147zM43 1155v162h162v-162h-162zM346 1155v162h162v-162h-162z" />
+<glyph unicode="&#xf0;" horiz-adv-x="1193" d="M852 1223q197 -193 197 -596q0 -643 -465 -643q-123 0 -216.5 41t-145.5 109.5t-77.5 147t-25.5 162.5q0 199 125 314.5t340 115.5q186 0 307 -90q-25 244 -174 365l-230 -129l-55 98l170 94q-86 33 -192 33q-41 0 -111 -8v137q66 10 127 10q184 0 328 -86l190 107 l53 -98zM584 123q43 0 70.5 3t78.5 29.5t83 75t57.5 148.5t27.5 242q-111 117 -317 116q-154 0 -236 -75.5t-82 -215.5q0 -41 9.5 -84t38 -103t98.5 -98t172 -38z" />
+<glyph unicode="&#xf1;" horiz-adv-x="1189" d="M600 1040q193 0 299.5 -98t106.5 -276v-666h-148v666q0 43 -9 76.5t-35 71.5t-84 58.5t-146 20.5q-129 0 -269 -41v-852h-147v940q201 100 432 100zM874 1198q-53 -66 -114.5 -73t-117.5 23l-113 59q-56 30 -116.5 23t-113.5 -73v117q53 66 113.5 72t116.5 -24l113 -59 q56 -30 117.5 -24t114.5 72v-113z" />
+<glyph unicode="&#xf2;" horiz-adv-x="1155" d="M100 512q0 156 43 265.5t117 163.5t151.5 76.5t170 22.5t169 -22.5t150.5 -76.5t117 -163.5t43 -265.5t-43 -265.5t-117 -163.5t-150.5 -76.5t-169 -22.5t-170 22.5t-151.5 76.5t-117 163.5t-43 265.5zM248 512q0 -207 80 -300t254 -93t252.5 94t78.5 299t-78.5 299 t-252.5 94t-254 -93t-80 -300zM514 1391l117 -236h-99l-170 236h152z" />
+<glyph unicode="&#xf3;" horiz-adv-x="1155" d="M581.5 1040q92.5 0 169 -22.5t150.5 -76.5t117 -163.5t43 -265.5t-43 -265.5t-117 -163.5t-150.5 -76.5t-169 -22.5t-170 22.5t-151.5 76.5t-117 163.5t-43 265.5t43 265.5t117 163.5t151.5 76.5t170 22.5zM582 119q174 0 252.5 94t78.5 299t-78.5 299t-252.5 94 t-254 -93t-80 -300t80 -300t254 -93zM647 1391h152l-170 -236h-99z" />
+<glyph unicode="&#xf4;" horiz-adv-x="1155" d="M100 512q0 156 43 265.5t117 163.5t151.5 76.5t170 22.5t169 -22.5t150.5 -76.5t117 -163.5t43 -265.5t-43 -265.5t-117 -163.5t-150.5 -76.5t-169 -22.5t-170 22.5t-151.5 76.5t-117 163.5t-43 265.5zM248 512q0 -207 80 -300t254 -93t252.5 94t78.5 299t-78.5 299 t-252.5 94t-254 -93t-80 -300zM623 1401l165 -246h-114l-92 143l-95 -143h-114l166 246h84z" />
+<glyph unicode="&#xf5;" horiz-adv-x="1155" d="M100 512q0 156 43 265.5t117 163.5t150.5 76.5t169 22.5t170 -22.5t151.5 -76.5t117 -163.5t43 -265.5t-43 -265.5t-117 -163.5t-151.5 -76.5t-170 -22.5t-169 22.5t-150.5 76.5t-117 163.5t-43 265.5zM248 512q0 -207 79 -300t253 -93t253.5 93t79.5 300t-79.5 300 t-253.5 93t-253 -93t-79 -300zM877 1198q-53 -66 -115 -73t-118 23l-113 59q-56 30 -116.5 24t-113.5 -72v115q53 66 113.5 73t116.5 -23l113 -60q56 -31 117.5 -24t115.5 73v-115z" />
+<glyph unicode="&#xf6;" horiz-adv-x="1155" d="M100 512q0 156 43 265.5t117 163.5t151.5 76.5t170 22.5t169 -22.5t150.5 -76.5t117 -163.5t43 -265.5t-43 -265.5t-117 -163.5t-150.5 -76.5t-169 -22.5t-170 22.5t-151.5 76.5t-117 163.5t-43 265.5zM248 512q0 -207 80 -300t254 -93t252.5 94t78.5 299t-78.5 299 t-252.5 94t-254 -93t-80 -300zM348 1155v162h162v-162h-162zM651 1155v162h162v-162h-162z" />
+<glyph unicode="&#xf7;" horiz-adv-x="1286" d="M561 735v164h164v-164h-164zM561 152v163h164v-163h-164zM1059 465v123h-832v-123h832z" />
+<glyph unicode="&#xf8;" horiz-adv-x="1175" d="M938 1022h160l-125 -150q94 -131 94 -360q0 -156 -43 -265.5t-116.5 -163.5t-150.5 -76.5t-169 -22.5q-182 0 -297 79l-55 -63h-160l127 152q-96 133 -97 360q0 156 43.5 265.5t117 163.5t151.5 76.5t170 22.5q180 0 297 -82zM254 512q0 -158 45 -246l496 586 q-78 53 -207 53q-174 0 -254 -93t-80 -300zM920 512q0 156 -46 246l-493 -588q76 -51 207 -51q174 0 253 93t79 300z" />
+<glyph unicode="&#xf9;" horiz-adv-x="1202" d="M877 1022h147v-592q0 -213 -111.5 -329.5t-316.5 -116.5t-316.5 116.5t-111.5 329.5v592h147v-600q0 -156 68 -228.5t213 -72.5q143 0 212 72.5t69 228.5v600zM535 1391l116 -236h-98l-170 236h152z" />
+<glyph unicode="&#xfa;" horiz-adv-x="1202" d="M877 1022h147v-592q0 -213 -111.5 -329.5t-316.5 -116.5t-316.5 116.5t-111.5 329.5v592h147v-600q0 -156 68 -228.5t213 -72.5q143 0 212 72.5t69 228.5v600zM657 1391h150l-170 -236h-96z" />
+<glyph unicode="&#xfb;" horiz-adv-x="1202" d="M877 1022h147v-592q0 -213 -111.5 -329.5t-316.5 -116.5t-316.5 116.5t-111.5 329.5v592h147v-600q0 -156 68 -228.5t213 -72.5q143 0 212 72.5t69 228.5v600zM637 1401l166 -246h-115l-92 143l-92 -143h-115l164 246h84z" />
+<glyph unicode="&#xfc;" horiz-adv-x="1202" d="M877 1022h147v-592q0 -213 -111.5 -329.5t-316.5 -116.5t-316.5 116.5t-111.5 329.5v592h147v-600q0 -156 68 -228.5t213 -72.5q143 0 212 72.5t69 228.5v600zM362 1155v162h164v-162h-164zM666 1155v162h163v-162h-163z" />
+<glyph unicode="&#xfd;" horiz-adv-x="1028" d="M807 1022h158l-418 -1122q-109 -295 -320 -295q-51 0 -98 18v135q41 -18 88 -18q63 0 118.5 68.5t80.5 138.5l24 69l-377 1006h158l293 -809zM565 1391h152l-170 -236h-98z" />
+<glyph unicode="&#xfe;" horiz-adv-x="1136" d="M569 1026q70 0 131.5 -12.5t125 -47t109.5 -90t74.5 -149.5t28.5 -217q0 -152 -42 -258.5t-114.5 -159.5t-148.5 -74.5t-164 -21.5q-129 0 -252 41v-414h-147v1776h147v-414q123 41 252 41zM569 133q170 0 246 89t76 288t-76 289t-246 90q-135 0 -252 -51v-654 q117 -51 252 -51z" />
+<glyph unicode="&#xff;" horiz-adv-x="1028" d="M807 1022h158l-418 -1122q-109 -295 -320 -295q-51 0 -98 18v135q41 -18 88 -18q63 0 118.5 68.5t80.5 138.5l24 69l-377 1006h158l293 -809zM279 1155v162h161v-162h-161zM582 1155v162h161v-162h-161z" />
+<glyph unicode="&#x152;" horiz-adv-x="2029" d="M1894 1227h-716v-471h628v-144h-628v-473h716v-139h-864v27q-117 -43 -274 -43q-633 0 -633 700t633 700q160 0 274 -45v27h864v-139zM756 123q170 0 274 59v1004q-109 59 -274 59q-252 0 -369 -135t-117 -426t117 -426t369 -135z" />
+<glyph unicode="&#x153;" horiz-adv-x="1921" d="M1356 1040q94 0 170 -29.5t122 -69.5t78.5 -104.5t47 -109.5t22.5 -108.5t8 -78.5v-44l-2 -72h-745q14 -154 94 -223.5t238 -69.5q219 0 350 76v-152q-150 -72 -365 -71q-276 0 -393 190q-119 -190 -399 -190q-92 0 -169 22.5t-151 76.5t-117 163.5t-43 265.5t43 265.5 t117 163.5t150.5 76.5t169.5 22.5q279 0 397 -186q113 186 377 186zM582 119q174 0 253.5 93t79.5 300t-79.5 300t-253.5 93t-253 -93t-79 -300t79 -300t253 -93zM1055 555h600q0 33 -8.5 77t-35 111.5t-93 112.5t-162.5 45q-152 0 -221.5 -79t-79.5 -267z" />
+<glyph unicode="&#x178;" horiz-adv-x="1224" d="M375 1483v164h164v-164h-164zM678 1483v164h164v-164h-164zM1012 1366h178l-508 -739v-627h-147v627l-510 739h178l405 -596z" />
+<glyph unicode="&#x2c6;" horiz-adv-x="823" d="M457 1401l164 -246h-115l-92 143l-92 -143h-115l166 246h84z" />
+<glyph unicode="&#x2dc;" horiz-adv-x="1038" d="M791 1198q-53 -66 -115 -73t-118 23l-113 59q-56 30 -116.5 23t-113.5 -73v117q53 66 113.5 72t116.5 -24l113 -59q56 -30 117.5 -24t115.5 72v-113z" />
+<glyph unicode="&#x2000;" horiz-adv-x="878" />
+<glyph unicode="&#x2001;" horiz-adv-x="1759" />
+<glyph unicode="&#x2002;" horiz-adv-x="878" />
+<glyph unicode="&#x2003;" horiz-adv-x="1759" />
+<glyph unicode="&#x2004;" horiz-adv-x="585" />
+<glyph unicode="&#x2005;" horiz-adv-x="438" />
+<glyph unicode="&#x2006;" horiz-adv-x="292" />
+<glyph unicode="&#x2007;" horiz-adv-x="292" />
+<glyph unicode="&#x2008;" horiz-adv-x="219" />
+<glyph unicode="&#x2009;" horiz-adv-x="350" />
+<glyph unicode="&#x200a;" horiz-adv-x="96" />
+<glyph unicode="&#x2010;" horiz-adv-x="950" d="M786 682v-143h-624v143h624z" />
+<glyph unicode="&#x2011;" horiz-adv-x="950" d="M786 682v-143h-624v143h624z" />
+<glyph unicode="&#x2012;" horiz-adv-x="950" d="M786 682v-143h-624v143h624z" />
+<glyph unicode="&#x2013;" horiz-adv-x="1146" d="M1001 655v-127h-860v127h860z" />
+<glyph unicode="&#x2014;" horiz-adv-x="1824" d="M1663 664v-136h-1501v136h1501z" />
+<glyph unicode="&#x2018;" horiz-adv-x="522" d="M264 1384l152 -401h-148l-172 401h168z" />
+<glyph unicode="&#x2019;" horiz-adv-x="522" d="M248 1384h168l-172 -401h-148z" />
+<glyph unicode="&#x201a;" horiz-adv-x="614" d="M299 172h166l-170 -401h-148z" />
+<glyph unicode="&#x201c;" horiz-adv-x="800" d="M543 1384l151 -401h-147l-172 401h168zM264 1384l152 -401h-148l-172 401h168z" />
+<glyph unicode="&#x201d;" horiz-adv-x="792" d="M248 1384h168l-172 -401h-148zM526 1384h168l-172 -401h-147z" />
+<glyph unicode="&#x201e;" horiz-adv-x="892" d="M299 172h166l-170 -401h-148zM578 172h167l-172 -401h-147z" />
+<glyph unicode="&#x2022;" horiz-adv-x="849" d="M657 684q0 -98 -69.5 -168t-165.5 -70q-98 0 -168 70t-70 168t70 167t168 69q96 0 165.5 -69t69.5 -167z" />
+<glyph unicode="&#x2026;" horiz-adv-x="1576" d="M219 0v164h164v-164h-164zM1200 0v164h162v-164h-162zM711 0v164h161v-164h-161z" />
+<glyph unicode="&#x202f;" horiz-adv-x="350" />
+<glyph unicode="&#x2039;" horiz-adv-x="710" d="M608 911l-364 -389l364 -391h-198l-347 391l347 389h198z" />
+<glyph unicode="&#x203a;" horiz-adv-x="776" d="M137 911h197l348 -389l-348 -391h-197l363 391z" />
+<glyph unicode="&#x205f;" horiz-adv-x="438" />
+<glyph unicode="&#x20ac;" horiz-adv-x="1390" d="M883 1245q-207 0 -325 -84t-157 -260h658v-123h-674q-4 -61 -4 -94q0 -37 4 -94h674v-123h-658q39 -176 157 -260t325 -84q209 0 399 80v-142q-203 -78 -416 -77q-524 0 -614 483h-150v123h136q-4 61 -4.5 94t4.5 94h-136v123h150q90 483 614 483q215 0 416 -79v-142 q-194 82 -399 82z" />
+<glyph unicode="&#x2122;" horiz-adv-x="1550" d="M100 1366h557v-72h-241v-610h-74v610h-242v72zM1313 1366h80v-682h-74v561l-242 -348l-241 348v-561h-74v682h80l235 -346z" />
+<glyph unicode="&#xe000;" horiz-adv-x="1020" d="M0 1020h1020v-1020h-1020v1020z" />
+<glyph unicode="&#xfb01;" horiz-adv-x="1202" d="M1040 0v1022h-147v-1022h147zM1049 1366v-162h-164v162h164zM616 1317q-39 0 -59 -2t-54 -14.5t-52.5 -35t-33 -70.5t-14.5 -116v-55h287v-137h-287v-887h-143v887h-176v137h176v53q0 106 28.5 182t63.5 112t89.5 56.5t82 22.5t66.5 2q53 0 100 -10v-133q-41 8 -74 8z " />
+<glyph unicode="&#xfb02;" horiz-adv-x="1220" d="M1040 0v1411h-147v-1411h147zM616 1317q-39 0 -59 -2t-54 -14.5t-52.5 -35t-33 -70.5t-14.5 -116v-55h287v-137h-287v-887h-143v887h-176v137h176v53q0 106 28.5 182t63.5 112t89.5 56.5t82 22.5t66.5 2q53 0 100 -10v-133q-41 8 -74 8z" />
+<glyph unicode="&#xfb03;" horiz-adv-x="1892" d="M1700 0v1022h-147v-1022h147zM1708 1366v-162h-163v162h163zM1288 1317q-49 0 -74.5 -4t-61.5 -24.5t-53 -73t-17 -136.5v-57h280v-135h-280v-887h-148v887h-176v135h176v55q0 106 27.5 182t62.5 112t89.5 56.5t83 22.5t67.5 2q55 0 98 -12v-131q-41 8 -74 8zM612 1317 q-49 0 -74.5 -4t-61.5 -24.5t-53 -73t-17 -136.5v-57h280v-135h-280v-887h-148v887h-176v135h176v55q0 106 27.5 182t62.5 112t89.5 56.5t83 22.5t67.5 2q55 0 98 -12v-131q-41 8 -74 8z" />
+<glyph unicode="&#xfb04;" horiz-adv-x="1904" d="M1706 0h-147v1411h147v-1411zM1288 1317q-49 0 -74.5 -4t-61.5 -24.5t-53 -73t-17 -136.5v-57h280v-135h-280v-887h-148v887h-176v135h176v55q0 106 27.5 182t62.5 112t89.5 56.5t83 22.5t67.5 2q55 0 98 -12v-131q-41 8 -74 8zM612 1317q-49 0 -74.5 -4t-61.5 -24.5 t-53 -73t-17 -136.5v-57h280v-135h-280v-887h-148v887h-176v135h176v55q0 106 27.5 182t62.5 112t89.5 56.5t83 22.5t67.5 2q55 0 98 -12v-131q-41 8 -74 8z" />
+</font>
+</defs></svg> 
\ No newline at end of file
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/fonts/opensans.css
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/fonts/opensans.css	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/fonts/opensans.css	(revision 47450)
@@ -0,0 +1,13 @@
+/* Copyright (C) YOOtheme GmbH, YOOtheme Proprietary Use License (http://www.yootheme.com/license) */
+
+@font-face {
+	font-family: 'OpenSansLight';
+	src: url('OpenSans-Light-webfont.eot');
+	src: url('OpenSans-Light-webfont.eot?#iefix') format('embedded-opentype'),
+		url('OpenSans-Light-webfont.woff') format('woff'),
+		url('OpenSans-Light-webfont.ttf') format('truetype'),
+		url('OpenSans-Light-webfont.svg#OpenSansLight') format('svg');
+	font-weight: normal;
+	font-style: normal;
+}
+
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/images/box_tip.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/images/box_tip.png
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/images/box_tip.png	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/images/box_tip.png	(revision 47450)

Property changes on: modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/images/box_tip.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/images/footer_anchor.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/images/footer_anchor.png
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/images/footer_anchor.png	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/images/footer_anchor.png	(revision 47450)

Property changes on: modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/images/footer_anchor.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/images/list_disc.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/images/list_disc.png
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/images/list_disc.png	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/images/list_disc.png	(revision 47450)

Property changes on: modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/images/list_disc.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/images/list_checkbox.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/images/list_checkbox.png
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/images/list_checkbox.png	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/images/list_checkbox.png	(revision 47450)

Property changes on: modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/images/list_checkbox.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/images/icon_file.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/images/icon_file.png
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/images/icon_file.png	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/images/icon_file.png	(revision 47450)

Property changes on: modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/images/icon_file.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/fonts/DroidSans-webfont.eot
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/fonts/DroidSans-webfont.eot
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/fonts/DroidSans-webfont.eot	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/fonts/DroidSans-webfont.eot	(revision 47450)

Property changes on: modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/fonts/DroidSans-webfont.eot
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/resetPassword.jsp
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/resetPassword.jsp	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/resetPassword.jsp	(revision 47450)
@@ -0,0 +1,46 @@
+<%@ page contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<%@ taglib prefix="s" uri="/struts-tags"%>
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title><s:text name="forgotPassword.title"/></title>
+<link href="jsps/favicon.ico" rel="shortcut icon" type="image/x-icon" />
+<link href="jsps/style.css" rel="stylesheet" type="text/css" media="screen" />
+</head>
+<body>
+<div id="wrapper">
+	<jsp:include page="menu.jsp"/>
+	<div id="page">
+		<div id="page-bgtop">
+			<div id="middle">
+                <div class="middle-b">
+                    <div class="background">
+                        <div class="main">
+                        <div id="main_container" class="clearfix">
+                                <div id="mainmiddle" class="floatbox">
+                                <h2 class="title"><s:text name="forgotPassword.title"/></h2>
+                                <%--<p class="meta"><a href='<s:url value="/jsps/help.jsp#forgotPassword"/>' target="_blank"><s:text name="help"/></a></p>--%>
+                                <div class="entry">
+                                    <s:form action="resetPassword">
+                                    	<s:text name="resetPassword.securityCode.message" />
+                                        <s:textfield name="securityCode" key="resetPassword.securityCode"/>
+                                        <s:password name="password" key="registration.password"/>
+                                        <s:password name="repassword" key="registration.repassword"/>
+                                        <s:submit/>
+                                    </s:form>
+                                </div>
+								</div>
+                            </div>
+                        </div>
+                    </div>
+                </div>
+            </div>
+		</div>
+		  <div id="footer"> 
+           <jsp:include page="footer.jsp"/>
+        </div>
+	</div>
+</div>
+</body>
+</html>
\ No newline at end of file
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/images/middle_bg_b.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/images/middle_bg_b.png
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/images/middle_bg_b.png	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/images/middle_bg_b.png	(revision 47450)

Property changes on: modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/images/middle_bg_b.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/images/toolbar_m.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/images/toolbar_m.png
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/images/toolbar_m.png	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/images/toolbar_m.png	(revision 47450)

Property changes on: modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/images/toolbar_m.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/MenuMatic.css
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/MenuMatic.css	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/MenuMatic.css	(revision 47450)
@@ -0,0 +1,125 @@
+/* Based partially on Matthew Carroll's keyboard accessible flavor of Suckerfish 
+ * Dropdowns by Patrick Griffiths and Dan Webb. 
+ * http://carroll.org.uk/sandbox/suckerfish/bones2.html
+ */
+
+/* ----[ LINKS ]----*/
+
+/* all menu links */
+#nav a, #subMenusContainer a{
+	text-decoration:none;
+	display:block;
+	padding:10px 20px;
+	background-color:#fff ;
+	-moz-border-radius: 7px;
+	-webkit-border-radius: 7px;
+}
+
+/* Just main menu links --[for non-javascript users this applies to submenu links as well]*/
+#nav a{
+	margin:0;
+	float:left;	
+}
+
+/* Just sub menu links */
+#subMenusContainer a, #nav li li a{
+	text-align:left;
+}
+
+/* All menu links on hover or focus */
+#nav a:hover, #nav a:focus, #subMenusContainer a:hover, #subMenusContainer a:focus, #nav a.mainMenuParentBtnFocused, #subMenusContainer a.subMenuParentBtnFocused{
+	background-color:#F6C739 ;
+	color:#FFF;
+}
+
+/* sub menu links on hover or focus */
+#subMenusContainer a:hover, 
+#subMenusContainer a:focus, 
+#nav a.mainMenuParentBtnFocused, 
+#subMenusContainer a.subMenuParentBtnFocused,
+#nav li a:hover,
+#nav li a:focus{
+	background-color:#F6C739 ;
+	color:#FFF;
+}
+
+/* Parent Sub Menu Links ---[javascript users only]*/
+.subMenuParentBtn{ 
+	background: url(../img/arrow_right.gif) right center no-repeat;  
+}
+
+/* Parent Sub Menu Links on hover or focus ---[javascript users only]*/
+.subMenuParentBtnFocused{ 
+	background: url(../img/arrow_right_over.gif) right center no-repeat;  
+}
+
+/* Parent Main Menu Links ---[javascript users only]*/
+.mainMenuParentBtn{	
+	 background: url(../img/arrow_down.gif) right center no-repeat; 
+}
+
+/* Parent Main Menu Links on hover or focus ---[javascript users only]*/
+.mainMenuParentBtnFocused{	
+	background: url(../img/arrow_down_over.gif) right center no-repeat; 
+}
+
+/* ----[ OLs ULs, LIs, and DIVs ]----*/
+
+/* Submenu Outer Wrapper - each submenu is inside a div with this class - javascript users only */
+.smOW{ 
+	display:none; 
+	position: absolute; 
+	overflow:hidden; 
+	/*the 2px left & right padding lets you have a 1px border 
+	  on the ul or ol inside since overflow is set to hidden*/
+	padding:0 2px;
+	margin:0 0 0 -2px;
+}
+
+
+/* All ULs and OLs */
+#nav, #nav ul, #nav ol, #subMenusContainer ul, #subMenusContainer ol { 
+	padding: 0;
+	margin: 0;
+	list-style: none;
+	line-height: 1em;
+}
+
+/* All submenu OLs and ULs */
+#nav ol, #nav ul, #subMenusContainer ul, #subMenusContainer ol {	
+	/*border around submenu goes here*/	 
+	background:#fff;	
+	border:1px solid #C3D46A;
+	left:0;
+}
+
+
+/* List items in main menu --[for non-javascript users this applies to submenus as well]  */
+#nav li { 
+	/*great place to use a background image as a divider*/
+	display:block;
+	list-style:none;
+	position:relative;
+	float:left;
+}
+
+#subMenusContainer li{
+	list-style: none;
+}
+
+/* main menu ul or ol elment */
+#nav{
+	display:block;
+	position: absolute;
+	list-style:none;
+	margin:0 0 0 0;
+	z-index:5;
+	top:15px;
+	left:50%;
+	text-align: center;
+	display:block;
+}
+
+#subMenusContainer{	display:block; 	position:absolute;	top:0;	left:0;	width:100%;	height:0;	overflow:visible;	z-index:1000000000; }
+
+
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/forgotPassword.jsp
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/forgotPassword.jsp	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/forgotPassword.jsp	(revision 47450)
@@ -0,0 +1,43 @@
+<%@ page contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<%@ taglib prefix="s" uri="/struts-tags"%>
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title><s:text name="forgotPassword.title"/></title>
+<link href="jsps/favicon.ico" rel="shortcut icon" type="image/x-icon" />
+<link href="jsps/style.css" rel="stylesheet" type="text/css" media="screen" />
+</head>
+<body>
+<div id="wrapper">
+	<jsp:include page="menu.jsp"/>
+	<div id="page">
+        <div id="page-bgtop">
+             <div id="middle">
+                <div class="middle-b">
+                    <div class="background">
+                        <div id="main">
+                            <div id="main_container" class="clearfix">
+                                <div id="mainmiddle" class="floatbox">
+                                    <h1>Reset your password</h1>
+                                    <s:actionerror/>
+                                    <s:form action="sendPassword">
+                                        <s:textfield name="email" key="registration.email"/>
+                                        <s:submit/>
+                                    </s:form>
+                                    <s:text name="forgotPassword.message"/>
+                                </div>
+                            </div>
+                        </div>
+                    </div>
+                </div>
+            </div>
+        </div>
+        <!-- NMI This needs to be the same in all pages and the text is some properties file -->
+        <div id="footer"> 
+           <jsp:include page="footer.jsp"/>
+        </div>
+	</div>
+</div>
+</body>
+</html>
\ No newline at end of file
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/images/menu_level2_parent.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/images/menu_level2_parent.png
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/images/menu_level2_parent.png	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/images/menu_level2_parent.png	(revision 47450)

Property changes on: modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/images/menu_level2_parent.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/images/info.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/images/info.png
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/images/info.png	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/images/info.png	(revision 47450)

Property changes on: modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/images/info.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/footer.jsp
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/footer.jsp	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/footer.jsp	(revision 47450)
@@ -0,0 +1,7 @@
+<%@ taglib prefix="s" uri="/struts-tags"%>
+
+<div id="footer-bgcontent">
+	<p>
+		<s:text name="footer.text"/> 
+	</p>
+</div>
\ No newline at end of file
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/table-images/patternb-head.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/table-images/patternb-head.png
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/table-images/patternb-head.png	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/table-images/patternb-head.png	(revision 47450)

Property changes on: modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/table-images/patternb-head.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/table-images/patternb.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/table-images/patternb.png
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/table-images/patternb.png	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/table-images/patternb.png	(revision 47450)

Property changes on: modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/table-images/patternb.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/table-images/botright.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/table-images/botright.png
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/table-images/botright.png	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/table-images/botright.png	(revision 47450)

Property changes on: modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/table-images/botright.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/images/page_bg_img.jpg
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/images/page_bg_img.jpg
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/images/page_bg_img.jpg	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/images/page_bg_img.jpg	(revision 47450)

Property changes on: modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/images/page_bg_img.jpg
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/manuals/favicon.ico
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/manuals/favicon.ico
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/manuals/favicon.ico	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/manuals/favicon.ico	(revision 47450)

Property changes on: modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/manuals/favicon.ico
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/js/mootools-1.2.5-core-nc.js
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/js/mootools-1.2.5-core-nc.js	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/js/mootools-1.2.5-core-nc.js	(revision 47450)
@@ -0,0 +1,4288 @@
+/*
+---
+
+name: Core
+
+description: The core of MooTools, contains all the base functions and the Native and Hash implementations. Required by all the other scripts.
+
+license: MIT-style license.
+
+copyright: Copyright (c) 2006-2008 [Valerio Proietti](http://mad4milk.net/).
+
+authors: The MooTools production team (http://mootools.net/developers/)
+
+inspiration:
+  - Class implementation inspired by [Base.js](http://dean.edwards.name/weblog/2006/03/base/) Copyright (c) 2006 Dean Edwards, [GNU Lesser General Public License](http://opensource.org/licenses/lgpl-license.php)
+  - Some functionality inspired by [Prototype.js](http://prototypejs.org) Copyright (c) 2005-2007 Sam Stephenson, [MIT License](http://opensource.org/licenses/mit-license.php)
+
+provides: [MooTools, Native, Hash.base, Array.each, $util]
+
+...
+*/
+
+var MooTools = {
+	'version': '1.2.5',
+	'build': '008d8f0f2fcc2044e54fdd3635341aaab274e757'
+};
+
+var Native = function(options){
+	options = options || {};
+	var name = options.name;
+	var legacy = options.legacy;
+	var protect = options.protect;
+	var methods = options.implement;
+	var generics = options.generics;
+	var initialize = options.initialize;
+	var afterImplement = options.afterImplement || function(){};
+	var object = initialize || legacy;
+	generics = generics !== false;
+
+	object.constructor = Native;
+	object.$family = {name: 'native'};
+	if (legacy && initialize) object.prototype = legacy.prototype;
+	object.prototype.constructor = object;
+
+	if (name){
+		var family = name.toLowerCase();
+		object.prototype.$family = {name: family};
+		Native.typize(object, family);
+	}
+
+	var add = function(obj, name, method, force){
+		if (!protect || force || !obj.prototype[name]) obj.prototype[name] = method;
+		if (generics) Native.genericize(obj, name, protect);
+		afterImplement.call(obj, name, method);
+		return obj;
+	};
+
+	object.alias = function(a1, a2, a3){
+		if (typeof a1 == 'string'){
+			var pa1 = this.prototype[a1];
+			if ((a1 = pa1)) return add(this, a2, a1, a3);
+		}
+		for (var a in a1) this.alias(a, a1[a], a2);
+		return this;
+	};
+
+	object.implement = function(a1, a2, a3){
+		if (typeof a1 == 'string') return add(this, a1, a2, a3);
+		for (var p in a1) add(this, p, a1[p], a2);
+		return this;
+	};
+
+	if (methods) object.implement(methods);
+
+	return object;
+};
+
+Native.genericize = function(object, property, check){
+	if ((!check || !object[property]) && typeof object.prototype[property] == 'function') object[property] = function(){
+		var args = Array.prototype.slice.call(arguments);
+		return object.prototype[property].apply(args.shift(), args);
+	};
+};
+
+Native.implement = function(objects, properties){
+	for (var i = 0, l = objects.length; i < l; i++) objects[i].implement(properties);
+};
+
+Native.typize = function(object, family){
+	if (!object.type) object.type = function(item){
+		return ($type(item) === family);
+	};
+};
+
+(function(){
+	var natives = {'Array': Array, 'Date': Date, 'Function': Function, 'Number': Number, 'RegExp': RegExp, 'String': String};
+	for (var n in natives) new Native({name: n, initialize: natives[n], protect: true});
+
+	var types = {'boolean': Boolean, 'native': Native, 'object': Object};
+	for (var t in types) Native.typize(types[t], t);
+
+	var generics = {
+		'Array': ["concat", "indexOf", "join", "lastIndexOf", "pop", "push", "reverse", "shift", "slice", "sort", "splice", "toString", "unshift", "valueOf"],
+		'String': ["charAt", "charCodeAt", "concat", "indexOf", "lastIndexOf", "match", "replace", "search", "slice", "split", "substr", "substring", "toLowerCase", "toUpperCase", "valueOf"]
+	};
+	for (var g in generics){
+		for (var i = generics[g].length; i--;) Native.genericize(natives[g], generics[g][i], true);
+	}
+})();
+
+var Hash = new Native({
+
+	name: 'Hash',
+
+	initialize: function(object){
+		if ($type(object) == 'hash') object = $unlink(object.getClean());
+		for (var key in object) this[key] = object[key];
+		return this;
+	}
+
+});
+
+Hash.implement({
+
+	forEach: function(fn, bind){
+		for (var key in this){
+			if (this.hasOwnProperty(key)) fn.call(bind, this[key], key, this);
+		}
+	},
+
+	getClean: function(){
+		var clean = {};
+		for (var key in this){
+			if (this.hasOwnProperty(key)) clean[key] = this[key];
+		}
+		return clean;
+	},
+
+	getLength: function(){
+		var length = 0;
+		for (var key in this){
+			if (this.hasOwnProperty(key)) length++;
+		}
+		return length;
+	}
+
+});
+
+Hash.alias('forEach', 'each');
+
+Array.implement({
+
+	forEach: function(fn, bind){
+		for (var i = 0, l = this.length; i < l; i++) fn.call(bind, this[i], i, this);
+	}
+
+});
+
+Array.alias('forEach', 'each');
+
+function $A(iterable){
+	if (iterable.item){
+		var l = iterable.length, array = new Array(l);
+		while (l--) array[l] = iterable[l];
+		return array;
+	}
+	return Array.prototype.slice.call(iterable);
+};
+
+function $arguments(i){
+	return function(){
+		return arguments[i];
+	};
+};
+
+function $chk(obj){
+	return !!(obj || obj === 0);
+};
+
+function $clear(timer){
+	clearTimeout(timer);
+	clearInterval(timer);
+	return null;
+};
+
+function $defined(obj){
+	return (obj != undefined);
+};
+
+function $each(iterable, fn, bind){
+	var type = $type(iterable);
+	((type == 'arguments' || type == 'collection' || type == 'array') ? Array : Hash).each(iterable, fn, bind);
+};
+
+function $empty(){};
+
+function $extend(original, extended){
+	for (var key in (extended || {})) original[key] = extended[key];
+	return original;
+};
+
+function $H(object){
+	return new Hash(object);
+};
+
+function $lambda(value){
+	return ($type(value) == 'function') ? value : function(){
+		return value;
+	};
+};
+
+function $merge(){
+	var args = Array.slice(arguments);
+	args.unshift({});
+	return $mixin.apply(null, args);
+};
+
+function $mixin(mix){
+	for (var i = 1, l = arguments.length; i < l; i++){
+		var object = arguments[i];
+		if ($type(object) != 'object') continue;
+		for (var key in object){
+			var op = object[key], mp = mix[key];
+			mix[key] = (mp && $type(op) == 'object' && $type(mp) == 'object') ? $mixin(mp, op) : $unlink(op);
+		}
+	}
+	return mix;
+};
+
+function $pick(){
+	for (var i = 0, l = arguments.length; i < l; i++){
+		if (arguments[i] != undefined) return arguments[i];
+	}
+	return null;
+};
+
+function $random(min, max){
+	return Math.floor(Math.random() * (max - min + 1) + min);
+};
+
+function $splat(obj){
+	var type = $type(obj);
+	return (type) ? ((type != 'array' && type != 'arguments') ? [obj] : obj) : [];
+};
+
+var $time = Date.now || function(){
+	return +new Date;
+};
+
+function $try(){
+	for (var i = 0, l = arguments.length; i < l; i++){
+		try {
+			return arguments[i]();
+		} catch(e){}
+	}
+	return null;
+};
+
+function $type(obj){
+	if (obj == undefined) return false;
+	if (obj.$family) return (obj.$family.name == 'number' && !isFinite(obj)) ? false : obj.$family.name;
+	if (obj.nodeName){
+		switch (obj.nodeType){
+			case 1: return 'element';
+			case 3: return (/\S/).test(obj.nodeValue) ? 'textnode' : 'whitespace';
+		}
+	} else if (typeof obj.length == 'number'){
+		if (obj.callee) return 'arguments';
+		else if (obj.item) return 'collection';
+	}
+	return typeof obj;
+};
+
+function $unlink(object){
+	var unlinked;
+	switch ($type(object)){
+		case 'object':
+			unlinked = {};
+			for (var p in object) unlinked[p] = $unlink(object[p]);
+		break;
+		case 'hash':
+			unlinked = new Hash(object);
+		break;
+		case 'array':
+			unlinked = [];
+			for (var i = 0, l = object.length; i < l; i++) unlinked[i] = $unlink(object[i]);
+		break;
+		default: return object;
+	}
+	return unlinked;
+};
+
+
+/*
+---
+
+name: Array
+
+description: Contains Array Prototypes like each, contains, and erase.
+
+license: MIT-style license.
+
+requires: [$util, Array.each]
+
+provides: Array
+
+...
+*/
+
+Array.implement({
+
+	every: function(fn, bind){
+		for (var i = 0, l = this.length; i < l; i++){
+			if (!fn.call(bind, this[i], i, this)) return false;
+		}
+		return true;
+	},
+
+	filter: function(fn, bind){
+		var results = [];
+		for (var i = 0, l = this.length; i < l; i++){
+			if (fn.call(bind, this[i], i, this)) results.push(this[i]);
+		}
+		return results;
+	},
+
+	clean: function(){
+		return this.filter($defined);
+	},
+
+	indexOf: function(item, from){
+		var len = this.length;
+		for (var i = (from < 0) ? Math.max(0, len + from) : from || 0; i < len; i++){
+			if (this[i] === item) return i;
+		}
+		return -1;
+	},
+
+	map: function(fn, bind){
+		var results = [];
+		for (var i = 0, l = this.length; i < l; i++) results[i] = fn.call(bind, this[i], i, this);
+		return results;
+	},
+
+	some: function(fn, bind){
+		for (var i = 0, l = this.length; i < l; i++){
+			if (fn.call(bind, this[i], i, this)) return true;
+		}
+		return false;
+	},
+
+	associate: function(keys){
+		var obj = {}, length = Math.min(this.length, keys.length);
+		for (var i = 0; i < length; i++) obj[keys[i]] = this[i];
+		return obj;
+	},
+
+	link: function(object){
+		var result = {};
+		for (var i = 0, l = this.length; i < l; i++){
+			for (var key in object){
+				if (object[key](this[i])){
+					result[key] = this[i];
+					delete object[key];
+					break;
+				}
+			}
+		}
+		return result;
+	},
+
+	contains: function(item, from){
+		return this.indexOf(item, from) != -1;
+	},
+
+	extend: function(array){
+		for (var i = 0, j = array.length; i < j; i++) this.push(array[i]);
+		return this;
+	},
+	
+	getLast: function(){
+		return (this.length) ? this[this.length - 1] : null;
+	},
+
+	getRandom: function(){
+		return (this.length) ? this[$random(0, this.length - 1)] : null;
+	},
+
+	include: function(item){
+		if (!this.contains(item)) this.push(item);
+		return this;
+	},
+
+	combine: function(array){
+		for (var i = 0, l = array.length; i < l; i++) this.include(array[i]);
+		return this;
+	},
+
+	erase: function(item){
+		for (var i = this.length; i--; i){
+			if (this[i] === item) this.splice(i, 1);
+		}
+		return this;
+	},
+
+	empty: function(){
+		this.length = 0;
+		return this;
+	},
+
+	flatten: function(){
+		var array = [];
+		for (var i = 0, l = this.length; i < l; i++){
+			var type = $type(this[i]);
+			if (!type) continue;
+			array = array.concat((type == 'array' || type == 'collection' || type == 'arguments') ? Array.flatten(this[i]) : this[i]);
+		}
+		return array;
+	},
+
+	hexToRgb: function(array){
+		if (this.length != 3) return null;
+		var rgb = this.map(function(value){
+			if (value.length == 1) value += value;
+			return value.toInt(16);
+		});
+		return (array) ? rgb : 'rgb(' + rgb + ')';
+	},
+
+	rgbToHex: function(array){
+		if (this.length < 3) return null;
+		if (this.length == 4 && this[3] == 0 && !array) return 'transparent';
+		var hex = [];
+		for (var i = 0; i < 3; i++){
+			var bit = (this[i] - 0).toString(16);
+			hex.push((bit.length == 1) ? '0' + bit : bit);
+		}
+		return (array) ? hex : '#' + hex.join('');
+	}
+
+});
+
+
+/*
+---
+
+name: String
+
+description: Contains String Prototypes like camelCase, capitalize, test, and toInt.
+
+license: MIT-style license.
+
+requires: Native
+
+provides: String
+
+...
+*/
+
+String.implement({
+
+	test: function(regex, params){
+		return ((typeof regex == 'string') ? new RegExp(regex, params) : regex).test(this);
+	},
+
+	contains: function(string, separator){
+		return (separator) ? (separator + this + separator).indexOf(separator + string + separator) > -1 : this.indexOf(string) > -1;
+	},
+
+	trim: function(){
+		return this.replace(/^\s+|\s+$/g, '');
+	},
+
+	clean: function(){
+		return this.replace(/\s+/g, ' ').trim();
+	},
+
+	camelCase: function(){
+		return this.replace(/-\D/g, function(match){
+			return match.charAt(1).toUpperCase();
+		});
+	},
+
+	hyphenate: function(){
+		return this.replace(/[A-Z]/g, function(match){
+			return ('-' + match.charAt(0).toLowerCase());
+		});
+	},
+
+	capitalize: function(){
+		return this.replace(/\b[a-z]/g, function(match){
+			return match.toUpperCase();
+		});
+	},
+
+	escapeRegExp: function(){
+		return this.replace(/([-.*+?^${}()|[\]\/\\])/g, '\\$1');
+	},
+
+	toInt: function(base){
+		return parseInt(this, base || 10);
+	},
+
+	toFloat: function(){
+		return parseFloat(this);
+	},
+
+	hexToRgb: function(array){
+		var hex = this.match(/^#?(\w{1,2})(\w{1,2})(\w{1,2})$/);
+		return (hex) ? hex.slice(1).hexToRgb(array) : null;
+	},
+
+	rgbToHex: function(array){
+		var rgb = this.match(/\d{1,3}/g);
+		return (rgb) ? rgb.rgbToHex(array) : null;
+	},
+
+	stripScripts: function(option){
+		var scripts = '';
+		var text = this.replace(/<script[^>]*>([\s\S]*?)<\/script>/gi, function(){
+			scripts += arguments[1] + '\n';
+			return '';
+		});
+		if (option === true) $exec(scripts);
+		else if ($type(option) == 'function') option(scripts, text);
+		return text;
+	},
+
+	substitute: function(object, regexp){
+		return this.replace(regexp || (/\\?\{([^{}]+)\}/g), function(match, name){
+			if (match.charAt(0) == '\\') return match.slice(1);
+			return (object[name] != undefined) ? object[name] : '';
+		});
+	}
+
+});
+
+
+/*
+---
+
+name: Function
+
+description: Contains Function Prototypes like create, bind, pass, and delay.
+
+license: MIT-style license.
+
+requires: [Native, $util]
+
+provides: Function
+
+...
+*/
+
+try {
+	delete Function.prototype.bind;
+} catch(e){}
+
+Function.implement({
+
+	extend: function(properties){
+		for (var property in properties) this[property] = properties[property];
+		return this;
+	},
+
+	create: function(options){
+		var self = this;
+		options = options || {};
+		return function(event){
+			var args = options.arguments;
+			args = (args != undefined) ? $splat(args) : Array.slice(arguments, (options.event) ? 1 : 0);
+			if (options.event) args = [event || window.event].extend(args);
+			var returns = function(){
+				return self.apply(options.bind || null, args);
+			};
+			if (options.delay) return setTimeout(returns, options.delay);
+			if (options.periodical) return setInterval(returns, options.periodical);
+			if (options.attempt) return $try(returns);
+			return returns();
+		};
+	},
+
+	run: function(args, bind){
+		return this.apply(bind, $splat(args));
+	},
+
+	pass: function(args, bind){
+		return this.create({bind: bind, arguments: args});
+	},
+
+	bind: function(bind, args){
+		return this.create({bind: bind, arguments: args});
+	},
+
+	bindWithEvent: function(bind, args){
+		return this.create({bind: bind, arguments: args, event: true});
+	},
+
+	attempt: function(args, bind){
+		return this.create({bind: bind, arguments: args, attempt: true})();
+	},
+
+	delay: function(delay, bind, args){
+		return this.create({bind: bind, arguments: args, delay: delay})();
+	},
+
+	periodical: function(periodical, bind, args){
+		return this.create({bind: bind, arguments: args, periodical: periodical})();
+	}
+
+});
+
+
+/*
+---
+
+name: Number
+
+description: Contains Number Prototypes like limit, round, times, and ceil.
+
+license: MIT-style license.
+
+requires: [Native, $util]
+
+provides: Number
+
+...
+*/
+
+Number.implement({
+
+	limit: function(min, max){
+		return Math.min(max, Math.max(min, this));
+	},
+
+	round: function(precision){
+		precision = Math.pow(10, precision || 0);
+		return Math.round(this * precision) / precision;
+	},
+
+	times: function(fn, bind){
+		for (var i = 0; i < this; i++) fn.call(bind, i, this);
+	},
+
+	toFloat: function(){
+		return parseFloat(this);
+	},
+
+	toInt: function(base){
+		return parseInt(this, base || 10);
+	}
+
+});
+
+Number.alias('times', 'each');
+
+(function(math){
+	var methods = {};
+	math.each(function(name){
+		if (!Number[name]) methods[name] = function(){
+			return Math[name].apply(null, [this].concat($A(arguments)));
+		};
+	});
+	Number.implement(methods);
+})(['abs', 'acos', 'asin', 'atan', 'atan2', 'ceil', 'cos', 'exp', 'floor', 'log', 'max', 'min', 'pow', 'sin', 'sqrt', 'tan']);
+
+
+/*
+---
+
+name: Hash
+
+description: Contains Hash Prototypes. Provides a means for overcoming the JavaScript practical impossibility of extending native Objects.
+
+license: MIT-style license.
+
+requires: Hash.base
+
+provides: Hash
+
+...
+*/
+
+Hash.implement({
+
+	has: Object.prototype.hasOwnProperty,
+
+	keyOf: function(value){
+		for (var key in this){
+			if (this.hasOwnProperty(key) && this[key] === value) return key;
+		}
+		return null;
+	},
+
+	hasValue: function(value){
+		return (Hash.keyOf(this, value) !== null);
+	},
+
+	extend: function(properties){
+		Hash.each(properties || {}, function(value, key){
+			Hash.set(this, key, value);
+		}, this);
+		return this;
+	},
+
+	combine: function(properties){
+		Hash.each(properties || {}, function(value, key){
+			Hash.include(this, key, value);
+		}, this);
+		return this;
+	},
+
+	erase: function(key){
+		if (this.hasOwnProperty(key)) delete this[key];
+		return this;
+	},
+
+	get: function(key){
+		return (this.hasOwnProperty(key)) ? this[key] : null;
+	},
+
+	set: function(key, value){
+		if (!this[key] || this.hasOwnProperty(key)) this[key] = value;
+		return this;
+	},
+
+	empty: function(){
+		Hash.each(this, function(value, key){
+			delete this[key];
+		}, this);
+		return this;
+	},
+
+	include: function(key, value){
+		if (this[key] == undefined) this[key] = value;
+		return this;
+	},
+
+	map: function(fn, bind){
+		var results = new Hash;
+		Hash.each(this, function(value, key){
+			results.set(key, fn.call(bind, value, key, this));
+		}, this);
+		return results;
+	},
+
+	filter: function(fn, bind){
+		var results = new Hash;
+		Hash.each(this, function(value, key){
+			if (fn.call(bind, value, key, this)) results.set(key, value);
+		}, this);
+		return results;
+	},
+
+	every: function(fn, bind){
+		for (var key in this){
+			if (this.hasOwnProperty(key) && !fn.call(bind, this[key], key)) return false;
+		}
+		return true;
+	},
+
+	some: function(fn, bind){
+		for (var key in this){
+			if (this.hasOwnProperty(key) && fn.call(bind, this[key], key)) return true;
+		}
+		return false;
+	},
+
+	getKeys: function(){
+		var keys = [];
+		Hash.each(this, function(value, key){
+			keys.push(key);
+		});
+		return keys;
+	},
+
+	getValues: function(){
+		var values = [];
+		Hash.each(this, function(value){
+			values.push(value);
+		});
+		return values;
+	},
+
+	toQueryString: function(base){
+		var queryString = [];
+		Hash.each(this, function(value, key){
+			if (base) key = base + '[' + key + ']';
+			var result;
+			switch ($type(value)){
+				case 'object': result = Hash.toQueryString(value, key); break;
+				case 'array':
+					var qs = {};
+					value.each(function(val, i){
+						qs[i] = val;
+					});
+					result = Hash.toQueryString(qs, key);
+				break;
+				default: result = key + '=' + encodeURIComponent(value);
+			}
+			if (value != undefined) queryString.push(result);
+		});
+
+		return queryString.join('&');
+	}
+
+});
+
+Hash.alias({keyOf: 'indexOf', hasValue: 'contains'});
+
+
+/*
+---
+
+name: Class
+
+description: Contains the Class Function for easily creating, extending, and implementing reusable Classes.
+
+license: MIT-style license.
+
+requires: [$util, Native, Array, String, Function, Number, Hash]
+
+provides: Class
+
+...
+*/
+
+function Class(params){
+	
+	if (params instanceof Function) params = {initialize: params};
+	
+	var newClass = function(){
+		Object.reset(this);
+		if (newClass._prototyping) return this;
+		this._current = $empty;
+		var value = (this.initialize) ? this.initialize.apply(this, arguments) : this;
+		delete this._current; delete this.caller;
+		return value;
+	}.extend(this);
+	
+	newClass.implement(params);
+	
+	newClass.constructor = Class;
+	newClass.prototype.constructor = newClass;
+
+	return newClass;
+
+};
+
+Function.prototype.protect = function(){
+	this._protected = true;
+	return this;
+};
+
+Object.reset = function(object, key){
+		
+	if (key == null){
+		for (var p in object) Object.reset(object, p);
+		return object;
+	}
+	
+	delete object[key];
+	
+	switch ($type(object[key])){
+		case 'object':
+			var F = function(){};
+			F.prototype = object[key];
+			var i = new F;
+			object[key] = Object.reset(i);
+		break;
+		case 'array': object[key] = $unlink(object[key]); break;
+	}
+	
+	return object;
+	
+};
+
+new Native({name: 'Class', initialize: Class}).extend({
+
+	instantiate: function(F){
+		F._prototyping = true;
+		var proto = new F;
+		delete F._prototyping;
+		return proto;
+	},
+	
+	wrap: function(self, key, method){
+		if (method._origin) method = method._origin;
+		
+		return function(){
+			if (method._protected && this._current == null) throw new Error('The method "' + key + '" cannot be called.');
+			var caller = this.caller, current = this._current;
+			this.caller = current; this._current = arguments.callee;
+			var result = method.apply(this, arguments);
+			this._current = current; this.caller = caller;
+			return result;
+		}.extend({_owner: self, _origin: method, _name: key});
+
+	}
+	
+});
+
+Class.implement({
+	
+	implement: function(key, value){
+		
+		if ($type(key) == 'object'){
+			for (var p in key) this.implement(p, key[p]);
+			return this;
+		}
+		
+		var mutator = Class.Mutators[key];
+		
+		if (mutator){
+			value = mutator.call(this, value);
+			if (value == null) return this;
+		}
+		
+		var proto = this.prototype;
+
+		switch ($type(value)){
+			
+			case 'function':
+				if (value._hidden) return this;
+				proto[key] = Class.wrap(this, key, value);
+			break;
+			
+			case 'object':
+				var previous = proto[key];
+				if ($type(previous) == 'object') $mixin(previous, value);
+				else proto[key] = $unlink(value);
+			break;
+			
+			case 'array':
+				proto[key] = $unlink(value);
+			break;
+			
+			default: proto[key] = value;
+
+		}
+		
+		return this;
+
+	}
+	
+});
+
+Class.Mutators = {
+	
+	Extends: function(parent){
+
+		this.parent = parent;
+		this.prototype = Class.instantiate(parent);
+
+		this.implement('parent', function(){
+			var name = this.caller._name, previous = this.caller._owner.parent.prototype[name];
+			if (!previous) throw new Error('The method "' + name + '" has no parent.');
+			return previous.apply(this, arguments);
+		}.protect());
+
+	},
+
+	Implements: function(items){
+		$splat(items).each(function(item){
+			if (item instanceof Function) item = Class.instantiate(item);
+			this.implement(item);
+		}, this);
+
+	}
+	
+};
+
+
+/*
+---
+
+name: Class.Extras
+
+description: Contains Utility Classes that can be implemented into your own Classes to ease the execution of many common tasks.
+
+license: MIT-style license.
+
+requires: Class
+
+provides: [Chain, Events, Options, Class.Extras]
+
+...
+*/
+
+var Chain = new Class({
+
+	$chain: [],
+
+	chain: function(){
+		this.$chain.extend(Array.flatten(arguments));
+		return this;
+	},
+
+	callChain: function(){
+		return (this.$chain.length) ? this.$chain.shift().apply(this, arguments) : false;
+	},
+
+	clearChain: function(){
+		this.$chain.empty();
+		return this;
+	}
+
+});
+
+var Events = new Class({
+
+	$events: {},
+
+	addEvent: function(type, fn, internal){
+		type = Events.removeOn(type);
+		if (fn != $empty){
+			this.$events[type] = this.$events[type] || [];
+			this.$events[type].include(fn);
+			if (internal) fn.internal = true;
+		}
+		return this;
+	},
+
+	addEvents: function(events){
+		for (var type in events) this.addEvent(type, events[type]);
+		return this;
+	},
+
+	fireEvent: function(type, args, delay){
+		type = Events.removeOn(type);
+		if (!this.$events || !this.$events[type]) return this;
+		this.$events[type].each(function(fn){
+			fn.create({'bind': this, 'delay': delay, 'arguments': args})();
+		}, this);
+		return this;
+	},
+
+	removeEvent: function(type, fn){
+		type = Events.removeOn(type);
+		if (!this.$events[type]) return this;
+		if (!fn.internal) this.$events[type].erase(fn);
+		return this;
+	},
+
+	removeEvents: function(events){
+		var type;
+		if ($type(events) == 'object'){
+			for (type in events) this.removeEvent(type, events[type]);
+			return this;
+		}
+		if (events) events = Events.removeOn(events);
+		for (type in this.$events){
+			if (events && events != type) continue;
+			var fns = this.$events[type];
+			for (var i = fns.length; i--; i) this.removeEvent(type, fns[i]);
+		}
+		return this;
+	}
+
+});
+
+Events.removeOn = function(string){
+	return string.replace(/^on([A-Z])/, function(full, first){
+		return first.toLowerCase();
+	});
+};
+
+var Options = new Class({
+
+	setOptions: function(){
+		this.options = $merge.run([this.options].extend(arguments));
+		if (!this.addEvent) return this;
+		for (var option in this.options){
+			if ($type(this.options[option]) != 'function' || !(/^on[A-Z]/).test(option)) continue;
+			this.addEvent(option, this.options[option]);
+			delete this.options[option];
+		}
+		return this;
+	}
+
+});
+
+
+/*
+---
+
+name: Browser
+
+description: The Browser Core. Contains Browser initialization, Window and Document, and the Browser Hash.
+
+license: MIT-style license.
+
+requires: [Native, $util]
+
+provides: [Browser, Window, Document, $exec]
+
+...
+*/
+
+var Browser = $merge({
+
+	Engine: {name: 'unknown', version: 0},
+
+	Platform: {name: (window.orientation != undefined) ? 'ipod' : (navigator.platform.match(/mac|win|linux/i) || ['other'])[0].toLowerCase()},
+
+	Features: {xpath: !!(document.evaluate), air: !!(window.runtime), query: !!(document.querySelector)},
+
+	Plugins: {},
+
+	Engines: {
+
+		presto: function(){
+			return (!window.opera) ? false : ((arguments.callee.caller) ? 960 : ((document.getElementsByClassName) ? 950 : 925));
+		},
+
+		trident: function(){
+			return (!window.ActiveXObject) ? false : ((window.XMLHttpRequest) ? ((document.querySelectorAll) ? 6 : 5) : 4);
+		},
+
+		webkit: function(){
+			return (navigator.taintEnabled) ? false : ((Browser.Features.xpath) ? ((Browser.Features.query) ? 525 : 420) : 419);
+		},
+
+		gecko: function(){
+			return (!document.getBoxObjectFor && window.mozInnerScreenX == null) ? false : ((document.getElementsByClassName) ? 19 : 18);
+		}
+
+	}
+
+}, Browser || {});
+
+Browser.Platform[Browser.Platform.name] = true;
+
+Browser.detect = function(){
+
+	for (var engine in this.Engines){
+		var version = this.Engines[engine]();
+		if (version){
+			this.Engine = {name: engine, version: version};
+			this.Engine[engine] = this.Engine[engine + version] = true;
+			break;
+		}
+	}
+
+	return {name: engine, version: version};
+
+};
+
+Browser.detect();
+
+Browser.Request = function(){
+	return $try(function(){
+		return new XMLHttpRequest();
+	}, function(){
+		return new ActiveXObject('MSXML2.XMLHTTP');
+	}, function(){
+		return new ActiveXObject('Microsoft.XMLHTTP');
+	});
+};
+
+Browser.Features.xhr = !!(Browser.Request());
+
+Browser.Plugins.Flash = (function(){
+	var version = ($try(function(){
+		return navigator.plugins['Shockwave Flash'].description;
+	}, function(){
+		return new ActiveXObject('ShockwaveFlash.ShockwaveFlash').GetVariable('$version');
+	}) || '0 r0').match(/\d+/g);
+	return {version: parseInt(version[0] || 0 + '.' + version[1], 10) || 0, build: parseInt(version[2], 10) || 0};
+})();
+
+function $exec(text){
+	if (!text) return text;
+	if (window.execScript){
+		window.execScript(text);
+	} else {
+		var script = document.createElement('script');
+		script.setAttribute('type', 'text/javascript');
+		script[(Browser.Engine.webkit && Browser.Engine.version < 420) ? 'innerText' : 'text'] = text;
+		document.head.appendChild(script);
+		document.head.removeChild(script);
+	}
+	return text;
+};
+
+Native.UID = 1;
+
+var $uid = (Browser.Engine.trident) ? function(item){
+	return (item.uid || (item.uid = [Native.UID++]))[0];
+} : function(item){
+	return item.uid || (item.uid = Native.UID++);
+};
+
+var Window = new Native({
+
+	name: 'Window',
+
+	legacy: (Browser.Engine.trident) ? null: window.Window,
+
+	initialize: function(win){
+		$uid(win);
+		if (!win.Element){
+			win.Element = $empty;
+			if (Browser.Engine.webkit) win.document.createElement("iframe"); //fixes safari 2
+			win.Element.prototype = (Browser.Engine.webkit) ? window["[[DOMElement.prototype]]"] : {};
+		}
+		win.document.window = win;
+		return $extend(win, Window.Prototype);
+	},
+
+	afterImplement: function(property, value){
+		window[property] = Window.Prototype[property] = value;
+	}
+
+});
+
+Window.Prototype = {$family: {name: 'window'}};
+
+new Window(window);
+
+var Document = new Native({
+
+	name: 'Document',
+
+	legacy: (Browser.Engine.trident) ? null: window.Document,
+
+	initialize: function(doc){
+		$uid(doc);
+		doc.head = doc.getElementsByTagName('head')[0];
+		doc.html = doc.getElementsByTagName('html')[0];
+		if (Browser.Engine.trident && Browser.Engine.version <= 4) $try(function(){
+			doc.execCommand("BackgroundImageCache", false, true);
+		});
+		if (Browser.Engine.trident) doc.window.attachEvent('onunload', function(){
+			doc.window.detachEvent('onunload', arguments.callee);
+			doc.head = doc.html = doc.window = null;
+		});
+		return $extend(doc, Document.Prototype);
+	},
+
+	afterImplement: function(property, value){
+		document[property] = Document.Prototype[property] = value;
+	}
+
+});
+
+Document.Prototype = {$family: {name: 'document'}};
+
+new Document(document);
+
+
+/*
+---
+
+name: Element
+
+description: One of the most important items in MooTools. Contains the dollar function, the dollars function, and an handful of cross-browser, time-saver methods to let you easily work with HTML Elements.
+
+license: MIT-style license.
+
+requires: [Window, Document, Array, String, Function, Number, Hash]
+
+provides: [Element, Elements, $, $$, Iframe]
+
+...
+*/
+
+var Element = new Native({
+
+	name: 'Element',
+
+	legacy: window.Element,
+
+	initialize: function(tag, props){
+		var konstructor = Element.Constructors.get(tag);
+		if (konstructor) return konstructor(props);
+		if (typeof tag == 'string') return document.newElement(tag, props);
+		return document.id(tag).set(props);
+	},
+
+	afterImplement: function(key, value){
+		Element.Prototype[key] = value;
+		if (Array[key]) return;
+		Elements.implement(key, function(){
+			var items = [], elements = true;
+			for (var i = 0, j = this.length; i < j; i++){
+				var returns = this[i][key].apply(this[i], arguments);
+				items.push(returns);
+				if (elements) elements = ($type(returns) == 'element');
+			}
+			return (elements) ? new Elements(items) : items;
+		});
+	}
+
+});
+
+Element.Prototype = {$family: {name: 'element'}};
+
+Element.Constructors = new Hash;
+
+var IFrame = new Native({
+
+	name: 'IFrame',
+
+	generics: false,
+
+	initialize: function(){
+		var params = Array.link(arguments, {properties: Object.type, iframe: $defined});
+		var props = params.properties || {};
+		var iframe = document.id(params.iframe);
+		var onload = props.onload || $empty;
+		delete props.onload;
+		props.id = props.name = $pick(props.id, props.name, iframe ? (iframe.id || iframe.name) : 'IFrame_' + $time());
+		iframe = new Element(iframe || 'iframe', props);
+		var onFrameLoad = function(){
+			var host = $try(function(){
+				return iframe.contentWindow.location.host;
+			});
+			if (!host || host == window.location.host){
+				var win = new Window(iframe.contentWindow);
+				new Document(iframe.contentWindow.document);
+				$extend(win.Element.prototype, Element.Prototype);
+			}
+			onload.call(iframe.contentWindow, iframe.contentWindow.document);
+		};
+		var contentWindow = $try(function(){
+			return iframe.contentWindow;
+		});
+		((contentWindow && contentWindow.document.body) || window.frames[props.id]) ? onFrameLoad() : iframe.addListener('load', onFrameLoad);
+		return iframe;
+	}
+
+});
+
+var Elements = new Native({
+
+	initialize: function(elements, options){
+		options = $extend({ddup: true, cash: true}, options);
+		elements = elements || [];
+		if (options.ddup || options.cash){
+			var uniques = {}, returned = [];
+			for (var i = 0, l = elements.length; i < l; i++){
+				var el = document.id(elements[i], !options.cash);
+				if (options.ddup){
+					if (uniques[el.uid]) continue;
+					uniques[el.uid] = true;
+				}
+				if (el) returned.push(el);
+			}
+			elements = returned;
+		}
+		return (options.cash) ? $extend(elements, this) : elements;
+	}
+
+});
+
+Elements.implement({
+
+	filter: function(filter, bind){
+		if (!filter) return this;
+		return new Elements(Array.filter(this, (typeof filter == 'string') ? function(item){
+			return item.match(filter);
+		} : filter, bind));
+	}
+
+});
+
+(function(){
+
+/*<ltIE8>*/
+var createElementAcceptsHTML;
+try {
+	var x = document.createElement('<input name=x>');
+	createElementAcceptsHTML = (x.name == 'x');
+} catch(e){}
+
+var escapeQuotes = function(html){
+	return ('' + html).replace(/&/g,'&amp;').replace(/"/g,'&quot;');
+};
+/*</ltIE8>*/
+
+Document.implement({
+
+	newElement: function(tag, props){
+		if (props && props.checked != null) props.defaultChecked = props.checked;
+		/*<ltIE8>*/// Fix for readonly name and type properties in IE < 8
+		if (createElementAcceptsHTML && props){
+			tag = '<' + tag;
+			if (props.name) tag += ' name="' + escapeQuotes(props.name) + '"';
+			if (props.type) tag += ' type="' + escapeQuotes(props.type) + '"';
+			tag += '>';
+			delete props.name;
+			delete props.type;
+		}
+		/*</ltIE8>*/
+		return this.id(this.createElement(tag)).set(props);
+	},
+
+	newTextNode: function(text){
+		return this.createTextNode(text);
+	},
+
+	getDocument: function(){
+		return this;
+	},
+
+	getWindow: function(){
+		return this.window;
+	},
+	
+	id: (function(){
+		
+		var types = {
+
+			string: function(id, nocash, doc){
+				id = doc.getElementById(id);
+				return (id) ? types.element(id, nocash) : null;
+			},
+			
+			element: function(el, nocash){
+				$uid(el);
+				if (!nocash && !el.$family && !(/^object|embed$/i).test(el.tagName)){
+					var proto = Element.Prototype;
+					for (var p in proto) el[p] = proto[p];
+				};
+				return el;
+			},
+			
+			object: function(obj, nocash, doc){
+				if (obj.toElement) return types.element(obj.toElement(doc), nocash);
+				return null;
+			}
+			
+		};
+
+		types.textnode = types.whitespace = types.window = types.document = $arguments(0);
+		
+		return function(el, nocash, doc){
+			if (el && el.$family && el.uid) return el;
+			var type = $type(el);
+			return (types[type]) ? types[type](el, nocash, doc || document) : null;
+		};
+
+	})()
+
+});
+
+})();
+
+if (window.$ == null) Window.implement({
+	$: function(el, nc){
+		return document.id(el, nc, this.document);
+	}
+});
+
+Window.implement({
+
+	$$: function(selector){
+		if (arguments.length == 1 && typeof selector == 'string') return this.document.getElements(selector);
+		var elements = [];
+		var args = Array.flatten(arguments);
+		for (var i = 0, l = args.length; i < l; i++){
+			var item = args[i];
+			switch ($type(item)){
+				case 'element': elements.push(item); break;
+				case 'string': elements.extend(this.document.getElements(item, true));
+			}
+		}
+		return new Elements(elements);
+	},
+
+	getDocument: function(){
+		return this.document;
+	},
+
+	getWindow: function(){
+		return this;
+	}
+
+});
+
+Native.implement([Element, Document], {
+
+	getElement: function(selector, nocash){
+		return document.id(this.getElements(selector, true)[0] || null, nocash);
+	},
+
+	getElements: function(tags, nocash){
+		tags = tags.split(',');
+		var elements = [];
+		var ddup = (tags.length > 1);
+		tags.each(function(tag){
+			var partial = this.getElementsByTagName(tag.trim());
+			(ddup) ? elements.extend(partial) : elements = partial;
+		}, this);
+		return new Elements(elements, {ddup: ddup, cash: !nocash});
+	}
+
+});
+
+(function(){
+
+var collected = {}, storage = {};
+var props = {input: 'checked', option: 'selected', textarea: (Browser.Engine.webkit && Browser.Engine.version < 420) ? 'innerHTML' : 'value'};
+
+var get = function(uid){
+	return (storage[uid] || (storage[uid] = {}));
+};
+
+var clean = function(item, retain){
+	if (!item) return;
+	var uid = item.uid;
+	if (retain !== true) retain = false;
+	if (Browser.Engine.trident){
+		if (item.clearAttributes){
+			var clone = retain && item.cloneNode(false);
+			item.clearAttributes();
+			if (clone) item.mergeAttributes(clone);
+		} else if (item.removeEvents){
+			item.removeEvents();
+		}
+		if ((/object/i).test(item.tagName)){
+			for (var p in item){
+				if (typeof item[p] == 'function') item[p] = $empty;
+			}
+			Element.dispose(item);
+		}
+	}	
+	if (!uid) return;
+	collected[uid] = storage[uid] = null;
+};
+
+var purge = function(){
+	Hash.each(collected, clean);
+	if (Browser.Engine.trident) $A(document.getElementsByTagName('object')).each(clean);
+	if (window.CollectGarbage) CollectGarbage();
+	collected = storage = null;
+};
+
+var walk = function(element, walk, start, match, all, nocash){
+	var el = element[start || walk];
+	var elements = [];
+	while (el){
+		if (el.nodeType == 1 && (!match || Element.match(el, match))){
+			if (!all) return document.id(el, nocash);
+			elements.push(el);
+		}
+		el = el[walk];
+	}
+	return (all) ? new Elements(elements, {ddup: false, cash: !nocash}) : null;
+};
+
+var attributes = {
+	'html': 'innerHTML',
+	'class': 'className',
+	'for': 'htmlFor',
+	'defaultValue': 'defaultValue',
+	'text': (Browser.Engine.trident || (Browser.Engine.webkit && Browser.Engine.version < 420)) ? 'innerText' : 'textContent'
+};
+var bools = ['compact', 'nowrap', 'ismap', 'declare', 'noshade', 'checked', 'disabled', 'readonly', 'multiple', 'selected', 'noresize', 'defer'];
+var camels = ['value', 'type', 'defaultValue', 'accessKey', 'cellPadding', 'cellSpacing', 'colSpan', 'frameBorder', 'maxLength', 'readOnly', 'rowSpan', 'tabIndex', 'useMap'];
+
+bools = bools.associate(bools);
+
+Hash.extend(attributes, bools);
+Hash.extend(attributes, camels.associate(camels.map(String.toLowerCase)));
+
+var inserters = {
+
+	before: function(context, element){
+		if (element.parentNode) element.parentNode.insertBefore(context, element);
+	},
+
+	after: function(context, element){
+		if (!element.parentNode) return;
+		var next = element.nextSibling;
+		(next) ? element.parentNode.insertBefore(context, next) : element.parentNode.appendChild(context);
+	},
+
+	bottom: function(context, element){
+		element.appendChild(context);
+	},
+
+	top: function(context, element){
+		var first = element.firstChild;
+		(first) ? element.insertBefore(context, first) : element.appendChild(context);
+	}
+
+};
+
+inserters.inside = inserters.bottom;
+
+Hash.each(inserters, function(inserter, where){
+
+	where = where.capitalize();
+
+	Element.implement('inject' + where, function(el){
+		inserter(this, document.id(el, true));
+		return this;
+	});
+
+	Element.implement('grab' + where, function(el){
+		inserter(document.id(el, true), this);
+		return this;
+	});
+
+});
+
+Element.implement({
+
+	set: function(prop, value){
+		switch ($type(prop)){
+			case 'object':
+				for (var p in prop) this.set(p, prop[p]);
+				break;
+			case 'string':
+				var property = Element.Properties.get(prop);
+				(property && property.set) ? property.set.apply(this, Array.slice(arguments, 1)) : this.setProperty(prop, value);
+		}
+		return this;
+	},
+
+	get: function(prop){
+		var property = Element.Properties.get(prop);
+		return (property && property.get) ? property.get.apply(this, Array.slice(arguments, 1)) : this.getProperty(prop);
+	},
+
+	erase: function(prop){
+		var property = Element.Properties.get(prop);
+		(property && property.erase) ? property.erase.apply(this) : this.removeProperty(prop);
+		return this;
+	},
+
+	setProperty: function(attribute, value){
+		var key = attributes[attribute];
+		if (value == undefined) return this.removeProperty(attribute);
+		if (key && bools[attribute]) value = !!value;
+		(key) ? this[key] = value : this.setAttribute(attribute, '' + value);
+		return this;
+	},
+
+	setProperties: function(attributes){
+		for (var attribute in attributes) this.setProperty(attribute, attributes[attribute]);
+		return this;
+	},
+
+	getProperty: function(attribute){
+		var key = attributes[attribute];
+		var value = (key) ? this[key] : this.getAttribute(attribute, 2);
+		return (bools[attribute]) ? !!value : (key) ? value : value || null;
+	},
+
+	getProperties: function(){
+		var args = $A(arguments);
+		return args.map(this.getProperty, this).associate(args);
+	},
+
+	removeProperty: function(attribute){
+		var key = attributes[attribute];
+		(key) ? this[key] = (key && bools[attribute]) ? false : '' : this.removeAttribute(attribute);
+		return this;
+	},
+
+	removeProperties: function(){
+		Array.each(arguments, this.removeProperty, this);
+		return this;
+	},
+
+	hasClass: function(className){
+		return this.className.contains(className, ' ');
+	},
+
+	addClass: function(className){
+		if (!this.hasClass(className)) this.className = (this.className + ' ' + className).clean();
+		return this;
+	},
+
+	removeClass: function(className){
+		this.className = this.className.replace(new RegExp('(^|\\s)' + className + '(?:\\s|$)'), '$1');
+		return this;
+	},
+
+	toggleClass: function(className){
+		return this.hasClass(className) ? this.removeClass(className) : this.addClass(className);
+	},
+
+	adopt: function(){
+		Array.flatten(arguments).each(function(element){
+			element = document.id(element, true);
+			if (element) this.appendChild(element);
+		}, this);
+		return this;
+	},
+
+	appendText: function(text, where){
+		return this.grab(this.getDocument().newTextNode(text), where);
+	},
+
+	grab: function(el, where){
+		inserters[where || 'bottom'](document.id(el, true), this);
+		return this;
+	},
+
+	inject: function(el, where){
+		inserters[where || 'bottom'](this, document.id(el, true));
+		return this;
+	},
+
+	replaces: function(el){
+		el = document.id(el, true);
+		el.parentNode.replaceChild(this, el);
+		return this;
+	},
+
+	wraps: function(el, where){
+		el = document.id(el, true);
+		return this.replaces(el).grab(el, where);
+	},
+
+	getPrevious: function(match, nocash){
+		return walk(this, 'previousSibling', null, match, false, nocash);
+	},
+
+	getAllPrevious: function(match, nocash){
+		return walk(this, 'previousSibling', null, match, true, nocash);
+	},
+
+	getNext: function(match, nocash){
+		return walk(this, 'nextSibling', null, match, false, nocash);
+	},
+
+	getAllNext: function(match, nocash){
+		return walk(this, 'nextSibling', null, match, true, nocash);
+	},
+
+	getFirst: function(match, nocash){
+		return walk(this, 'nextSibling', 'firstChild', match, false, nocash);
+	},
+
+	getLast: function(match, nocash){
+		return walk(this, 'previousSibling', 'lastChild', match, false, nocash);
+	},
+
+	getParent: function(match, nocash){
+		return walk(this, 'parentNode', null, match, false, nocash);
+	},
+
+	getParents: function(match, nocash){
+		return walk(this, 'parentNode', null, match, true, nocash);
+	},
+	
+	getSiblings: function(match, nocash){
+		return this.getParent().getChildren(match, nocash).erase(this);
+	},
+
+	getChildren: function(match, nocash){
+		return walk(this, 'nextSibling', 'firstChild', match, true, nocash);
+	},
+
+	getWindow: function(){
+		return this.ownerDocument.window;
+	},
+
+	getDocument: function(){
+		return this.ownerDocument;
+	},
+
+	getElementById: function(id, nocash){
+		var el = this.ownerDocument.getElementById(id);
+		if (!el) return null;
+		for (var parent = el.parentNode; parent != this; parent = parent.parentNode){
+			if (!parent) return null;
+		}
+		return document.id(el, nocash);
+	},
+
+	getSelected: function(){
+		return new Elements($A(this.options).filter(function(option){
+			return option.selected;
+		}));
+	},
+
+	getComputedStyle: function(property){
+		if (this.currentStyle) return this.currentStyle[property.camelCase()];
+		var computed = this.getDocument().defaultView.getComputedStyle(this, null);
+		return (computed) ? computed.getPropertyValue([property.hyphenate()]) : null;
+	},
+
+	toQueryString: function(){
+		var queryString = [];
+		this.getElements('input, select, textarea', true).each(function(el){
+			if (!el.name || el.disabled || el.type == 'submit' || el.type == 'reset' || el.type == 'file') return;
+			var value = (el.tagName.toLowerCase() == 'select') ? Element.getSelected(el).map(function(opt){
+				return opt.value;
+			}) : ((el.type == 'radio' || el.type == 'checkbox') && !el.checked) ? null : el.value;
+			$splat(value).each(function(val){
+				if (typeof val != 'undefined') queryString.push(el.name + '=' + encodeURIComponent(val));
+			});
+		});
+		return queryString.join('&');
+	},
+
+	clone: function(contents, keepid){
+		contents = contents !== false;
+		var clone = this.cloneNode(contents);
+		var clean = function(node, element){
+			if (!keepid) node.removeAttribute('id');
+			if (Browser.Engine.trident){
+				node.clearAttributes();
+				node.mergeAttributes(element);
+				node.removeAttribute('uid');
+				if (node.options){
+					var no = node.options, eo = element.options;
+					for (var j = no.length; j--;) no[j].selected = eo[j].selected;
+				}
+			}
+			var prop = props[element.tagName.toLowerCase()];
+			if (prop && element[prop]) node[prop] = element[prop];
+		};
+
+		if (contents){
+			var ce = clone.getElementsByTagName('*'), te = this.getElementsByTagName('*');
+			for (var i = ce.length; i--;) clean(ce[i], te[i]);
+		}
+
+		clean(clone, this);
+		return document.id(clone);
+	},
+
+	destroy: function(){
+		Element.empty(this);
+		Element.dispose(this);
+		clean(this, true);
+		return null;
+	},
+
+	empty: function(){
+		$A(this.childNodes).each(function(node){
+			Element.destroy(node);
+		});
+		return this;
+	},
+
+	dispose: function(){
+		return (this.parentNode) ? this.parentNode.removeChild(this) : this;
+	},
+
+	hasChild: function(el){
+		el = document.id(el, true);
+		if (!el) return false;
+		if (Browser.Engine.webkit && Browser.Engine.version < 420) return $A(this.getElementsByTagName(el.tagName)).contains(el);
+		return (this.contains) ? (this != el && this.contains(el)) : !!(this.compareDocumentPosition(el) & 16);
+	},
+
+	match: function(tag){
+		return (!tag || (tag == this) || (Element.get(this, 'tag') == tag));
+	}
+
+});
+
+Native.implement([Element, Window, Document], {
+
+	addListener: function(type, fn){
+		if (type == 'unload'){
+			var old = fn, self = this;
+			fn = function(){
+				self.removeListener('unload', fn);
+				old();
+			};
+		} else {
+			collected[this.uid] = this;
+		}
+		if (this.addEventListener) this.addEventListener(type, fn, false);
+		else this.attachEvent('on' + type, fn);
+		return this;
+	},
+
+	removeListener: function(type, fn){
+		if (this.removeEventListener) this.removeEventListener(type, fn, false);
+		else this.detachEvent('on' + type, fn);
+		return this;
+	},
+
+	retrieve: function(property, dflt){
+		var storage = get(this.uid), prop = storage[property];
+		if (dflt != undefined && prop == undefined) prop = storage[property] = dflt;
+		return $pick(prop);
+	},
+
+	store: function(property, value){
+		var storage = get(this.uid);
+		storage[property] = value;
+		return this;
+	},
+
+	eliminate: function(property){
+		var storage = get(this.uid);
+		delete storage[property];
+		return this;
+	}
+
+});
+
+window.addListener('unload', purge);
+
+})();
+
+Element.Properties = new Hash;
+
+Element.Properties.style = {
+
+	set: function(style){
+		this.style.cssText = style;
+	},
+
+	get: function(){
+		return this.style.cssText;
+	},
+
+	erase: function(){
+		this.style.cssText = '';
+	}
+
+};
+
+Element.Properties.tag = {
+
+	get: function(){
+		return this.tagName.toLowerCase();
+	}
+
+};
+
+Element.Properties.html = (function(){
+	var wrapper = document.createElement('div');
+
+	var translations = {
+		table: [1, '<table>', '</table>'],
+		select: [1, '<select>', '</select>'],
+		tbody: [2, '<table><tbody>', '</tbody></table>'],
+		tr: [3, '<table><tbody><tr>', '</tr></tbody></table>']
+	};
+	translations.thead = translations.tfoot = translations.tbody;
+
+	var html = {
+		set: function(){
+			var html = Array.flatten(arguments).join('');
+			var wrap = Browser.Engine.trident && translations[this.get('tag')];
+			if (wrap){
+				var first = wrapper;
+				first.innerHTML = wrap[1] + html + wrap[2];
+				for (var i = wrap[0]; i--;) first = first.firstChild;
+				this.empty().adopt(first.childNodes);
+			} else {
+				this.innerHTML = html;
+			}
+		}
+	};
+
+	html.erase = html.set;
+
+	return html;
+})();
+
+if (Browser.Engine.webkit && Browser.Engine.version < 420) Element.Properties.text = {
+	get: function(){
+		if (this.innerText) return this.innerText;
+		var temp = this.ownerDocument.newElement('div', {html: this.innerHTML}).inject(this.ownerDocument.body);
+		var text = temp.innerText;
+		temp.destroy();
+		return text;
+	}
+};
+
+
+/*
+---
+
+name: Element.Dimensions
+
+description: Contains methods to work with size, scroll, or positioning of Elements and the window object.
+
+license: MIT-style license.
+
+credits:
+  - Element positioning based on the [qooxdoo](http://qooxdoo.org/) code and smart browser fixes, [LGPL License](http://www.gnu.org/licenses/lgpl.html).
+  - Viewport dimensions based on [YUI](http://developer.yahoo.com/yui/) code, [BSD License](http://developer.yahoo.com/yui/license.html).
+
+requires: Element
+
+provides: Element.Dimensions
+
+...
+*/
+
+(function(){
+
+Element.implement({
+
+	scrollTo: function(x, y){
+		if (isBody(this)){
+			this.getWindow().scrollTo(x, y);
+		} else {
+			this.scrollLeft = x;
+			this.scrollTop = y;
+		}
+		return this;
+	},
+
+	getSize: function(){
+		if (isBody(this)) return this.getWindow().getSize();
+		return {x: this.offsetWidth, y: this.offsetHeight};
+	},
+
+	getScrollSize: function(){
+		if (isBody(this)) return this.getWindow().getScrollSize();
+		return {x: this.scrollWidth, y: this.scrollHeight};
+	},
+
+	getScroll: function(){
+		if (isBody(this)) return this.getWindow().getScroll();
+		return {x: this.scrollLeft, y: this.scrollTop};
+	},
+
+	getScrolls: function(){
+		var element = this, position = {x: 0, y: 0};
+		while (element && !isBody(element)){
+			position.x += element.scrollLeft;
+			position.y += element.scrollTop;
+			element = element.parentNode;
+		}
+		return position;
+	},
+
+	getOffsetParent: function(){
+		var element = this;
+		if (isBody(element)) return null;
+		if (!Browser.Engine.trident) return element.offsetParent;
+		while ((element = element.parentNode) && !isBody(element)){
+			if (styleString(element, 'position') != 'static') return element;
+		}
+		return null;
+	},
+
+	getOffsets: function(){
+		if (this.getBoundingClientRect){
+			var bound = this.getBoundingClientRect(),
+				html = document.id(this.getDocument().documentElement),
+				htmlScroll = html.getScroll(),
+				elemScrolls = this.getScrolls(),
+				elemScroll = this.getScroll(),
+				isFixed = (styleString(this, 'position') == 'fixed');
+
+			return {
+				x: bound.left.toInt() + elemScrolls.x - elemScroll.x + ((isFixed) ? 0 : htmlScroll.x) - html.clientLeft,
+				y: bound.top.toInt()  + elemScrolls.y - elemScroll.y + ((isFixed) ? 0 : htmlScroll.y) - html.clientTop
+			};
+		}
+
+		var element = this, position = {x: 0, y: 0};
+		if (isBody(this)) return position;
+
+		while (element && !isBody(element)){
+			position.x += element.offsetLeft;
+			position.y += element.offsetTop;
+
+			if (Browser.Engine.gecko){
+				if (!borderBox(element)){
+					position.x += leftBorder(element);
+					position.y += topBorder(element);
+				}
+				var parent = element.parentNode;
+				if (parent && styleString(parent, 'overflow') != 'visible'){
+					position.x += leftBorder(parent);
+					position.y += topBorder(parent);
+				}
+			} else if (element != this && Browser.Engine.webkit){
+				position.x += leftBorder(element);
+				position.y += topBorder(element);
+			}
+
+			element = element.offsetParent;
+		}
+		if (Browser.Engine.gecko && !borderBox(this)){
+			position.x -= leftBorder(this);
+			position.y -= topBorder(this);
+		}
+		return position;
+	},
+
+	getPosition: function(relative){
+		if (isBody(this)) return {x: 0, y: 0};
+		var offset = this.getOffsets(),
+				scroll = this.getScrolls();
+		var position = {
+			x: offset.x - scroll.x,
+			y: offset.y - scroll.y
+		};
+		var relativePosition = (relative && (relative = document.id(relative))) ? relative.getPosition() : {x: 0, y: 0};
+		return {x: position.x - relativePosition.x, y: position.y - relativePosition.y};
+	},
+
+	getCoordinates: function(element){
+		if (isBody(this)) return this.getWindow().getCoordinates();
+		var position = this.getPosition(element),
+				size = this.getSize();
+		var obj = {
+			left: position.x,
+			top: position.y,
+			width: size.x,
+			height: size.y
+		};
+		obj.right = obj.left + obj.width;
+		obj.bottom = obj.top + obj.height;
+		return obj;
+	},
+
+	computePosition: function(obj){
+		return {
+			left: obj.x - styleNumber(this, 'margin-left'),
+			top: obj.y - styleNumber(this, 'margin-top')
+		};
+	},
+
+	setPosition: function(obj){
+		return this.setStyles(this.computePosition(obj));
+	}
+
+});
+
+
+Native.implement([Document, Window], {
+
+	getSize: function(){
+		if (Browser.Engine.presto || Browser.Engine.webkit){
+			var win = this.getWindow();
+			return {x: win.innerWidth, y: win.innerHeight};
+		}
+		var doc = getCompatElement(this);
+		return {x: doc.clientWidth, y: doc.clientHeight};
+	},
+
+	getScroll: function(){
+		var win = this.getWindow(), doc = getCompatElement(this);
+		return {x: win.pageXOffset || doc.scrollLeft, y: win.pageYOffset || doc.scrollTop};
+	},
+
+	getScrollSize: function(){
+		var doc = getCompatElement(this), min = this.getSize();
+		return {x: Math.max(doc.scrollWidth, min.x), y: Math.max(doc.scrollHeight, min.y)};
+	},
+
+	getPosition: function(){
+		return {x: 0, y: 0};
+	},
+
+	getCoordinates: function(){
+		var size = this.getSize();
+		return {top: 0, left: 0, bottom: size.y, right: size.x, height: size.y, width: size.x};
+	}
+
+});
+
+// private methods
+
+var styleString = Element.getComputedStyle;
+
+function styleNumber(element, style){
+	return styleString(element, style).toInt() || 0;
+};
+
+function borderBox(element){
+	return styleString(element, '-moz-box-sizing') == 'border-box';
+};
+
+function topBorder(element){
+	return styleNumber(element, 'border-top-width');
+};
+
+function leftBorder(element){
+	return styleNumber(element, 'border-left-width');
+};
+
+function isBody(element){
+	return (/^(?:body|html)$/i).test(element.tagName);
+};
+
+function getCompatElement(element){
+	var doc = element.getDocument();
+	return (!doc.compatMode || doc.compatMode == 'CSS1Compat') ? doc.html : doc.body;
+};
+
+})();
+
+//aliases
+Element.alias('setPosition', 'position'); //compatability
+
+Native.implement([Window, Document, Element], {
+
+	getHeight: function(){
+		return this.getSize().y;
+	},
+
+	getWidth: function(){
+		return this.getSize().x;
+	},
+
+	getScrollTop: function(){
+		return this.getScroll().y;
+	},
+
+	getScrollLeft: function(){
+		return this.getScroll().x;
+	},
+
+	getScrollHeight: function(){
+		return this.getScrollSize().y;
+	},
+
+	getScrollWidth: function(){
+		return this.getScrollSize().x;
+	},
+
+	getTop: function(){
+		return this.getPosition().y;
+	},
+
+	getLeft: function(){
+		return this.getPosition().x;
+	}
+
+});
+
+
+/*
+---
+
+name: Event
+
+description: Contains the Event Class, to make the event object cross-browser.
+
+license: MIT-style license.
+
+requires: [Window, Document, Hash, Array, Function, String]
+
+provides: Event
+
+...
+*/
+
+var Event = new Native({
+
+	name: 'Event',
+
+	initialize: function(event, win){
+		win = win || window;
+		var doc = win.document;
+		event = event || win.event;
+		if (event.$extended) return event;
+		this.$extended = true;
+		var type = event.type;
+		var target = event.target || event.srcElement;
+		while (target && target.nodeType == 3) target = target.parentNode;
+
+		if (type.test(/key/)){
+			var code = event.which || event.keyCode;
+			var key = Event.Keys.keyOf(code);
+			if (type == 'keydown'){
+				var fKey = code - 111;
+				if (fKey > 0 && fKey < 13) key = 'f' + fKey;
+			}
+			key = key || String.fromCharCode(code).toLowerCase();
+		} else if (type.match(/(click|mouse|menu)/i)){
+			doc = (!doc.compatMode || doc.compatMode == 'CSS1Compat') ? doc.html : doc.body;
+			var page = {
+				x: event.pageX || event.clientX + doc.scrollLeft,
+				y: event.pageY || event.clientY + doc.scrollTop
+			};
+			var client = {
+				x: (event.pageX) ? event.pageX - win.pageXOffset : event.clientX,
+				y: (event.pageY) ? event.pageY - win.pageYOffset : event.clientY
+			};
+			if (type.match(/DOMMouseScroll|mousewheel/)){
+				var wheel = (event.wheelDelta) ? event.wheelDelta / 120 : -(event.detail || 0) / 3;
+			}
+			var rightClick = (event.which == 3) || (event.button == 2);
+			var related = null;
+			if (type.match(/over|out/)){
+				switch (type){
+					case 'mouseover': related = event.relatedTarget || event.fromElement; break;
+					case 'mouseout': related = event.relatedTarget || event.toElement;
+				}
+				if (!(function(){
+					while (related && related.nodeType == 3) related = related.parentNode;
+					return true;
+				}).create({attempt: Browser.Engine.gecko})()) related = false;
+			}
+		}
+
+		return $extend(this, {
+			event: event,
+			type: type,
+
+			page: page,
+			client: client,
+			rightClick: rightClick,
+
+			wheel: wheel,
+
+			relatedTarget: related,
+			target: target,
+
+			code: code,
+			key: key,
+
+			shift: event.shiftKey,
+			control: event.ctrlKey,
+			alt: event.altKey,
+			meta: event.metaKey
+		});
+	}
+
+});
+
+Event.Keys = new Hash({
+	'enter': 13,
+	'up': 38,
+	'down': 40,
+	'left': 37,
+	'right': 39,
+	'esc': 27,
+	'space': 32,
+	'backspace': 8,
+	'tab': 9,
+	'delete': 46
+});
+
+Event.implement({
+
+	stop: function(){
+		return this.stopPropagation().preventDefault();
+	},
+
+	stopPropagation: function(){
+		if (this.event.stopPropagation) this.event.stopPropagation();
+		else this.event.cancelBubble = true;
+		return this;
+	},
+
+	preventDefault: function(){
+		if (this.event.preventDefault) this.event.preventDefault();
+		else this.event.returnValue = false;
+		return this;
+	}
+
+});
+
+
+/*
+---
+
+name: Element.Event
+
+description: Contains Element methods for dealing with events. This file also includes mouseenter and mouseleave custom Element Events.
+
+license: MIT-style license.
+
+requires: [Element, Event]
+
+provides: Element.Event
+
+...
+*/
+
+Element.Properties.events = {set: function(events){
+	this.addEvents(events);
+}};
+
+Native.implement([Element, Window, Document], {
+
+	addEvent: function(type, fn){
+		var events = this.retrieve('events', {});
+		events[type] = events[type] || {'keys': [], 'values': []};
+		if (events[type].keys.contains(fn)) return this;
+		events[type].keys.push(fn);
+		var realType = type, custom = Element.Events.get(type), condition = fn, self = this;
+		if (custom){
+			if (custom.onAdd) custom.onAdd.call(this, fn);
+			if (custom.condition){
+				condition = function(event){
+					if (custom.condition.call(this, event)) return fn.call(this, event);
+					return true;
+				};
+			}
+			realType = custom.base || realType;
+		}
+		var defn = function(){
+			return fn.call(self);
+		};
+		var nativeEvent = Element.NativeEvents[realType];
+		if (nativeEvent){
+			if (nativeEvent == 2){
+				defn = function(event){
+					event = new Event(event, self.getWindow());
+					if (condition.call(self, event) === false) event.stop();
+				};
+			}
+			this.addListener(realType, defn);
+		}
+		events[type].values.push(defn);
+		return this;
+	},
+
+	removeEvent: function(type, fn){
+		var events = this.retrieve('events');
+		if (!events || !events[type]) return this;
+		var pos = events[type].keys.indexOf(fn);
+		if (pos == -1) return this;
+		events[type].keys.splice(pos, 1);
+		var value = events[type].values.splice(pos, 1)[0];
+		var custom = Element.Events.get(type);
+		if (custom){
+			if (custom.onRemove) custom.onRemove.call(this, fn);
+			type = custom.base || type;
+		}
+		return (Element.NativeEvents[type]) ? this.removeListener(type, value) : this;
+	},
+
+	addEvents: function(events){
+		for (var event in events) this.addEvent(event, events[event]);
+		return this;
+	},
+
+	removeEvents: function(events){
+		var type;
+		if ($type(events) == 'object'){
+			for (type in events) this.removeEvent(type, events[type]);
+			return this;
+		}
+		var attached = this.retrieve('events');
+		if (!attached) return this;
+		if (!events){
+			for (type in attached) this.removeEvents(type);
+			this.eliminate('events');
+		} else if (attached[events]){
+			while (attached[events].keys[0]) this.removeEvent(events, attached[events].keys[0]);
+			attached[events] = null;
+		}
+		return this;
+	},
+
+	fireEvent: function(type, args, delay){
+		var events = this.retrieve('events');
+		if (!events || !events[type]) return this;
+		events[type].keys.each(function(fn){
+			fn.create({'bind': this, 'delay': delay, 'arguments': args})();
+		}, this);
+		return this;
+	},
+
+	cloneEvents: function(from, type){
+		from = document.id(from);
+		var fevents = from.retrieve('events');
+		if (!fevents) return this;
+		if (!type){
+			for (var evType in fevents) this.cloneEvents(from, evType);
+		} else if (fevents[type]){
+			fevents[type].keys.each(function(fn){
+				this.addEvent(type, fn);
+			}, this);
+		}
+		return this;
+	}
+
+});
+
+// IE9
+try {
+	if (typeof HTMLElement != 'undefined')
+		HTMLElement.prototype.fireEvent = Element.prototype.fireEvent;
+} catch(e){}
+
+Element.NativeEvents = {
+	click: 2, dblclick: 2, mouseup: 2, mousedown: 2, contextmenu: 2, //mouse buttons
+	mousewheel: 2, DOMMouseScroll: 2, //mouse wheel
+	mouseover: 2, mouseout: 2, mousemove: 2, selectstart: 2, selectend: 2, //mouse movement
+	keydown: 2, keypress: 2, keyup: 2, //keyboard
+	focus: 2, blur: 2, change: 2, reset: 2, select: 2, submit: 2, //form elements
+	load: 1, unload: 1, beforeunload: 2, resize: 1, move: 1, DOMContentLoaded: 1, readystatechange: 1, //window
+	error: 1, abort: 1, scroll: 1 //misc
+};
+
+(function(){
+
+var $check = function(event){
+	var related = event.relatedTarget;
+	if (related == undefined) return true;
+	if (related === false) return false;
+	return ($type(this) != 'document' && related != this && related.prefix != 'xul' && !this.hasChild(related));
+};
+
+Element.Events = new Hash({
+
+	mouseenter: {
+		base: 'mouseover',
+		condition: $check
+	},
+
+	mouseleave: {
+		base: 'mouseout',
+		condition: $check
+	},
+
+	mousewheel: {
+		base: (Browser.Engine.gecko) ? 'DOMMouseScroll' : 'mousewheel'
+	}
+
+});
+
+})();
+
+
+/*
+---
+
+name: Element.Style
+
+description: Contains methods for interacting with the styles of Elements in a fashionable way.
+
+license: MIT-style license.
+
+requires: Element
+
+provides: Element.Style
+
+...
+*/
+
+Element.Properties.styles = {set: function(styles){
+	this.setStyles(styles);
+}};
+
+Element.Properties.opacity = {
+
+	set: function(opacity, novisibility){
+		if (!novisibility){
+			if (opacity == 0){
+				if (this.style.visibility != 'hidden') this.style.visibility = 'hidden';
+			} else {
+				if (this.style.visibility != 'visible') this.style.visibility = 'visible';
+			}
+		}
+		if (!this.currentStyle || !this.currentStyle.hasLayout) this.style.zoom = 1;
+		if (Browser.Engine.trident) this.style.filter = (opacity == 1) ? '' : 'alpha(opacity=' + opacity * 100 + ')';
+		this.style.opacity = opacity;
+		this.store('opacity', opacity);
+	},
+
+	get: function(){
+		return this.retrieve('opacity', 1);
+	}
+
+};
+
+Element.implement({
+
+	setOpacity: function(value){
+		return this.set('opacity', value, true);
+	},
+
+	getOpacity: function(){
+		return this.get('opacity');
+	},
+
+	setStyle: function(property, value){
+		switch (property){
+			case 'opacity': return this.set('opacity', parseFloat(value));
+			case 'float': property = (Browser.Engine.trident) ? 'styleFloat' : 'cssFloat';
+		}
+		property = property.camelCase();
+		if ($type(value) != 'string'){
+			var map = (Element.Styles.get(property) || '@').split(' ');
+			value = $splat(value).map(function(val, i){
+				if (!map[i]) return '';
+				return ($type(val) == 'number') ? map[i].replace('@', Math.round(val)) : val;
+			}).join(' ');
+		} else if (value == String(Number(value))){
+			value = Math.round(value);
+		}
+		this.style[property] = value;
+		return this;
+	},
+
+	getStyle: function(property){
+		switch (property){
+			case 'opacity': return this.get('opacity');
+			case 'float': property = (Browser.Engine.trident) ? 'styleFloat' : 'cssFloat';
+		}
+		property = property.camelCase();
+		var result = this.style[property];
+		if (!$chk(result)){
+			result = [];
+			for (var style in Element.ShortStyles){
+				if (property != style) continue;
+				for (var s in Element.ShortStyles[style]) result.push(this.getStyle(s));
+				return result.join(' ');
+			}
+			result = this.getComputedStyle(property);
+		}
+		if (result){
+			result = String(result);
+			var color = result.match(/rgba?\([\d\s,]+\)/);
+			if (color) result = result.replace(color[0], color[0].rgbToHex());
+		}
+		if (Browser.Engine.presto || (Browser.Engine.trident && !$chk(parseInt(result, 10)))){
+			if (property.test(/^(height|width)$/)){
+				var values = (property == 'width') ? ['left', 'right'] : ['top', 'bottom'], size = 0;
+				values.each(function(value){
+					size += this.getStyle('border-' + value + '-width').toInt() + this.getStyle('padding-' + value).toInt();
+				}, this);
+				return this['offset' + property.capitalize()] - size + 'px';
+			}
+			if ((Browser.Engine.presto) && String(result).test('px')) return result;
+			if (property.test(/(border(.+)Width|margin|padding)/)) return '0px';
+		}
+		return result;
+	},
+
+	setStyles: function(styles){
+		for (var style in styles) this.setStyle(style, styles[style]);
+		return this;
+	},
+
+	getStyles: function(){
+		var result = {};
+		Array.flatten(arguments).each(function(key){
+			result[key] = this.getStyle(key);
+		}, this);
+		return result;
+	}
+
+});
+
+Element.Styles = new Hash({
+	left: '@px', top: '@px', bottom: '@px', right: '@px',
+	width: '@px', height: '@px', maxWidth: '@px', maxHeight: '@px', minWidth: '@px', minHeight: '@px',
+	backgroundColor: 'rgb(@, @, @)', backgroundPosition: '@px @px', color: 'rgb(@, @, @)',
+	fontSize: '@px', letterSpacing: '@px', lineHeight: '@px', clip: 'rect(@px @px @px @px)',
+	margin: '@px @px @px @px', padding: '@px @px @px @px', border: '@px @ rgb(@, @, @) @px @ rgb(@, @, @) @px @ rgb(@, @, @)',
+	borderWidth: '@px @px @px @px', borderStyle: '@ @ @ @', borderColor: 'rgb(@, @, @) rgb(@, @, @) rgb(@, @, @) rgb(@, @, @)',
+	zIndex: '@', 'zoom': '@', fontWeight: '@', textIndent: '@px', opacity: '@'
+});
+
+Element.ShortStyles = {margin: {}, padding: {}, border: {}, borderWidth: {}, borderStyle: {}, borderColor: {}};
+
+['Top', 'Right', 'Bottom', 'Left'].each(function(direction){
+	var Short = Element.ShortStyles;
+	var All = Element.Styles;
+	['margin', 'padding'].each(function(style){
+		var sd = style + direction;
+		Short[style][sd] = All[sd] = '@px';
+	});
+	var bd = 'border' + direction;
+	Short.border[bd] = All[bd] = '@px @ rgb(@, @, @)';
+	var bdw = bd + 'Width', bds = bd + 'Style', bdc = bd + 'Color';
+	Short[bd] = {};
+	Short.borderWidth[bdw] = Short[bd][bdw] = All[bdw] = '@px';
+	Short.borderStyle[bds] = Short[bd][bds] = All[bds] = '@';
+	Short.borderColor[bdc] = Short[bd][bdc] = All[bdc] = 'rgb(@, @, @)';
+});
+
+
+/*
+---
+
+name: Fx
+
+description: Contains the basic animation logic to be extended by all other Fx Classes.
+
+license: MIT-style license.
+
+requires: [Chain, Events, Options]
+
+provides: Fx
+
+...
+*/
+
+var Fx = new Class({
+
+	Implements: [Chain, Events, Options],
+
+	options: {
+		/*
+		onStart: $empty,
+		onCancel: $empty,
+		onComplete: $empty,
+		*/
+		fps: 50,
+		unit: false,
+		duration: 500,
+		link: 'ignore'
+	},
+
+	initialize: function(options){
+		this.subject = this.subject || this;
+		this.setOptions(options);
+		this.options.duration = Fx.Durations[this.options.duration] || this.options.duration.toInt();
+		var wait = this.options.wait;
+		if (wait === false) this.options.link = 'cancel';
+	},
+
+	getTransition: function(){
+		return function(p){
+			return -(Math.cos(Math.PI * p) - 1) / 2;
+		};
+	},
+
+	step: function(){
+		var time = $time();
+		if (time < this.time + this.options.duration){
+			var delta = this.transition((time - this.time) / this.options.duration);
+			this.set(this.compute(this.from, this.to, delta));
+		} else {
+			this.set(this.compute(this.from, this.to, 1));
+			this.complete();
+		}
+	},
+
+	set: function(now){
+		return now;
+	},
+
+	compute: function(from, to, delta){
+		return Fx.compute(from, to, delta);
+	},
+
+	check: function(){
+		if (!this.timer) return true;
+		switch (this.options.link){
+			case 'cancel': this.cancel(); return true;
+			case 'chain': this.chain(this.caller.bind(this, arguments)); return false;
+		}
+		return false;
+	},
+
+	start: function(from, to){
+		if (!this.check(from, to)) return this;
+		this.from = from;
+		this.to = to;
+		this.time = 0;
+		this.transition = this.getTransition();
+		this.startTimer();
+		this.onStart();
+		return this;
+	},
+
+	complete: function(){
+		if (this.stopTimer()) this.onComplete();
+		return this;
+	},
+
+	cancel: function(){
+		if (this.stopTimer()) this.onCancel();
+		return this;
+	},
+
+	onStart: function(){
+		this.fireEvent('start', this.subject);
+	},
+
+	onComplete: function(){
+		this.fireEvent('complete', this.subject);
+		if (!this.callChain()) this.fireEvent('chainComplete', this.subject);
+	},
+
+	onCancel: function(){
+		this.fireEvent('cancel', this.subject).clearChain();
+	},
+
+	pause: function(){
+		this.stopTimer();
+		return this;
+	},
+
+	resume: function(){
+		this.startTimer();
+		return this;
+	},
+
+	stopTimer: function(){
+		if (!this.timer) return false;
+		this.time = $time() - this.time;
+		this.timer = $clear(this.timer);
+		return true;
+	},
+
+	startTimer: function(){
+		if (this.timer) return false;
+		this.time = $time() - this.time;
+		this.timer = this.step.periodical(Math.round(1000 / this.options.fps), this);
+		return true;
+	}
+
+});
+
+Fx.compute = function(from, to, delta){
+	return (to - from) * delta + from;
+};
+
+Fx.Durations = {'short': 250, 'normal': 500, 'long': 1000};
+
+
+/*
+---
+
+name: Fx.CSS
+
+description: Contains the CSS animation logic. Used by Fx.Tween, Fx.Morph, Fx.Elements.
+
+license: MIT-style license.
+
+requires: [Fx, Element.Style]
+
+provides: Fx.CSS
+
+...
+*/
+
+Fx.CSS = new Class({
+
+	Extends: Fx,
+
+	//prepares the base from/to object
+
+	prepare: function(element, property, values){
+		values = $splat(values);
+		var values1 = values[1];
+		if (!$chk(values1)){
+			values[1] = values[0];
+			values[0] = element.getStyle(property);
+		}
+		var parsed = values.map(this.parse);
+		return {from: parsed[0], to: parsed[1]};
+	},
+
+	//parses a value into an array
+
+	parse: function(value){
+		value = $lambda(value)();
+		value = (typeof value == 'string') ? value.split(' ') : $splat(value);
+		return value.map(function(val){
+			val = String(val);
+			var found = false;
+			Fx.CSS.Parsers.each(function(parser, key){
+				if (found) return;
+				var parsed = parser.parse(val);
+				if ($chk(parsed)) found = {value: parsed, parser: parser};
+			});
+			found = found || {value: val, parser: Fx.CSS.Parsers.String};
+			return found;
+		});
+	},
+
+	//computes by a from and to prepared objects, using their parsers.
+
+	compute: function(from, to, delta){
+		var computed = [];
+		(Math.min(from.length, to.length)).times(function(i){
+			computed.push({value: from[i].parser.compute(from[i].value, to[i].value, delta), parser: from[i].parser});
+		});
+		computed.$family = {name: 'fx:css:value'};
+		return computed;
+	},
+
+	//serves the value as settable
+
+	serve: function(value, unit){
+		if ($type(value) != 'fx:css:value') value = this.parse(value);
+		var returned = [];
+		value.each(function(bit){
+			returned = returned.concat(bit.parser.serve(bit.value, unit));
+		});
+		return returned;
+	},
+
+	//renders the change to an element
+
+	render: function(element, property, value, unit){
+		element.setStyle(property, this.serve(value, unit));
+	},
+
+	//searches inside the page css to find the values for a selector
+
+	search: function(selector){
+		if (Fx.CSS.Cache[selector]) return Fx.CSS.Cache[selector];
+		var to = {};
+		Array.each(document.styleSheets, function(sheet, j){
+			var href = sheet.href;
+			if (href && href.contains('://') && !href.contains(document.domain)) return;
+			var rules = sheet.rules || sheet.cssRules;
+			Array.each(rules, function(rule, i){
+				if (!rule.style) return;
+				var selectorText = (rule.selectorText) ? rule.selectorText.replace(/^\w+/, function(m){
+					return m.toLowerCase();
+				}) : null;
+				if (!selectorText || !selectorText.test('^' + selector + '$')) return;
+				Element.Styles.each(function(value, style){
+					if (!rule.style[style] || Element.ShortStyles[style]) return;
+					value = String(rule.style[style]);
+					to[style] = (value.test(/^rgb/)) ? value.rgbToHex() : value;
+				});
+			});
+		});
+		return Fx.CSS.Cache[selector] = to;
+	}
+
+});
+
+Fx.CSS.Cache = {};
+
+Fx.CSS.Parsers = new Hash({
+
+	Color: {
+		parse: function(value){
+			if (value.match(/^#[0-9a-f]{3,6}$/i)) return value.hexToRgb(true);
+			return ((value = value.match(/(\d+),\s*(\d+),\s*(\d+)/))) ? [value[1], value[2], value[3]] : false;
+		},
+		compute: function(from, to, delta){
+			return from.map(function(value, i){
+				return Math.round(Fx.compute(from[i], to[i], delta));
+			});
+		},
+		serve: function(value){
+			return value.map(Number);
+		}
+	},
+
+	Number: {
+		parse: parseFloat,
+		compute: Fx.compute,
+		serve: function(value, unit){
+			return (unit) ? value + unit : value;
+		}
+	},
+
+	String: {
+		parse: $lambda(false),
+		compute: $arguments(1),
+		serve: $arguments(0)
+	}
+
+});
+
+
+/*
+---
+
+name: Fx.Morph
+
+description: Formerly Fx.Styles, effect to transition any number of CSS properties for an element using an object of rules, or CSS based selector rules.
+
+license: MIT-style license.
+
+requires: Fx.CSS
+
+provides: Fx.Morph
+
+...
+*/
+
+Fx.Morph = new Class({
+
+	Extends: Fx.CSS,
+
+	initialize: function(element, options){
+		this.element = this.subject = document.id(element);
+		this.parent(options);
+	},
+
+	set: function(now){
+		if (typeof now == 'string') now = this.search(now);
+		for (var p in now) this.render(this.element, p, now[p], this.options.unit);
+		return this;
+	},
+
+	compute: function(from, to, delta){
+		var now = {};
+		for (var p in from) now[p] = this.parent(from[p], to[p], delta);
+		return now;
+	},
+
+	start: function(properties){
+		if (!this.check(properties)) return this;
+		if (typeof properties == 'string') properties = this.search(properties);
+		var from = {}, to = {};
+		for (var p in properties){
+			var parsed = this.prepare(this.element, p, properties[p]);
+			from[p] = parsed.from;
+			to[p] = parsed.to;
+		}
+		return this.parent(from, to);
+	}
+
+});
+
+Element.Properties.morph = {
+
+	set: function(options){
+		var morph = this.retrieve('morph');
+		if (morph) morph.cancel();
+		return this.eliminate('morph').store('morph:options', $extend({link: 'cancel'}, options));
+	},
+
+	get: function(options){
+		if (options || !this.retrieve('morph')){
+			if (options || !this.retrieve('morph:options')) this.set('morph', options);
+			this.store('morph', new Fx.Morph(this, this.retrieve('morph:options')));
+		}
+		return this.retrieve('morph');
+	}
+
+};
+
+Element.implement({
+
+	morph: function(props){
+		this.get('morph').start(props);
+		return this;
+	}
+
+});
+
+
+/*
+---
+
+name: Fx.Transitions
+
+description: Contains a set of advanced transitions to be used with any of the Fx Classes.
+
+license: MIT-style license.
+
+credits: Easing Equations by Robert Penner, <http://www.robertpenner.com/easing/>, modified and optimized to be used with MooTools.
+
+requires: Fx
+
+provides: Fx.Transitions
+
+...
+*/
+
+Fx.implement({
+
+	getTransition: function(){
+		var trans = this.options.transition || Fx.Transitions.Sine.easeInOut;
+		if (typeof trans == 'string'){
+			var data = trans.split(':');
+			trans = Fx.Transitions;
+			trans = trans[data[0]] || trans[data[0].capitalize()];
+			if (data[1]) trans = trans['ease' + data[1].capitalize() + (data[2] ? data[2].capitalize() : '')];
+		}
+		return trans;
+	}
+
+});
+
+Fx.Transition = function(transition, params){
+	params = $splat(params);
+	return $extend(transition, {
+		easeIn: function(pos){
+			return transition(pos, params);
+		},
+		easeOut: function(pos){
+			return 1 - transition(1 - pos, params);
+		},
+		easeInOut: function(pos){
+			return (pos <= 0.5) ? transition(2 * pos, params) / 2 : (2 - transition(2 * (1 - pos), params)) / 2;
+		}
+	});
+};
+
+Fx.Transitions = new Hash({
+
+	linear: $arguments(0)
+
+});
+
+Fx.Transitions.extend = function(transitions){
+	for (var transition in transitions) Fx.Transitions[transition] = new Fx.Transition(transitions[transition]);
+};
+
+Fx.Transitions.extend({
+
+	Pow: function(p, x){
+		return Math.pow(p, x[0] || 6);
+	},
+
+	Expo: function(p){
+		return Math.pow(2, 8 * (p - 1));
+	},
+
+	Circ: function(p){
+		return 1 - Math.sin(Math.acos(p));
+	},
+
+	Sine: function(p){
+		return 1 - Math.sin((1 - p) * Math.PI / 2);
+	},
+
+	Back: function(p, x){
+		x = x[0] || 1.618;
+		return Math.pow(p, 2) * ((x + 1) * p - x);
+	},
+
+	Bounce: function(p){
+		var value;
+		for (var a = 0, b = 1; 1; a += b, b /= 2){
+			if (p >= (7 - 4 * a) / 11){
+				value = b * b - Math.pow((11 - 6 * a - 11 * p) / 4, 2);
+				break;
+			}
+		}
+		return value;
+	},
+
+	Elastic: function(p, x){
+		return Math.pow(2, 10 * --p) * Math.cos(20 * p * Math.PI * (x[0] || 1) / 3);
+	}
+
+});
+
+['Quad', 'Cubic', 'Quart', 'Quint'].each(function(transition, i){
+	Fx.Transitions[transition] = new Fx.Transition(function(p){
+		return Math.pow(p, [i + 2]);
+	});
+});
+
+
+/*
+---
+
+name: Fx.Tween
+
+description: Formerly Fx.Style, effect to transition any CSS property for an element.
+
+license: MIT-style license.
+
+requires: Fx.CSS
+
+provides: [Fx.Tween, Element.fade, Element.highlight]
+
+...
+*/
+
+Fx.Tween = new Class({
+
+	Extends: Fx.CSS,
+
+	initialize: function(element, options){
+		this.element = this.subject = document.id(element);
+		this.parent(options);
+	},
+
+	set: function(property, now){
+		if (arguments.length == 1){
+			now = property;
+			property = this.property || this.options.property;
+		}
+		this.render(this.element, property, now, this.options.unit);
+		return this;
+	},
+
+	start: function(property, from, to){
+		if (!this.check(property, from, to)) return this;
+		var args = Array.flatten(arguments);
+		this.property = this.options.property || args.shift();
+		var parsed = this.prepare(this.element, this.property, args);
+		return this.parent(parsed.from, parsed.to);
+	}
+
+});
+
+Element.Properties.tween = {
+
+	set: function(options){
+		var tween = this.retrieve('tween');
+		if (tween) tween.cancel();
+		return this.eliminate('tween').store('tween:options', $extend({link: 'cancel'}, options));
+	},
+
+	get: function(options){
+		if (options || !this.retrieve('tween')){
+			if (options || !this.retrieve('tween:options')) this.set('tween', options);
+			this.store('tween', new Fx.Tween(this, this.retrieve('tween:options')));
+		}
+		return this.retrieve('tween');
+	}
+
+};
+
+Element.implement({
+
+	tween: function(property, from, to){
+		this.get('tween').start(arguments);
+		return this;
+	},
+
+	fade: function(how){
+		var fade = this.get('tween'), o = 'opacity', toggle;
+		how = $pick(how, 'toggle');
+		switch (how){
+			case 'in': fade.start(o, 1); break;
+			case 'out': fade.start(o, 0); break;
+			case 'show': fade.set(o, 1); break;
+			case 'hide': fade.set(o, 0); break;
+			case 'toggle':
+				var flag = this.retrieve('fade:flag', this.get('opacity') == 1);
+				fade.start(o, (flag) ? 0 : 1);
+				this.store('fade:flag', !flag);
+				toggle = true;
+			break;
+			default: fade.start(o, arguments);
+		}
+		if (!toggle) this.eliminate('fade:flag');
+		return this;
+	},
+
+	highlight: function(start, end){
+		if (!end){
+			end = this.retrieve('highlight:original', this.getStyle('background-color'));
+			end = (end == 'transparent') ? '#fff' : end;
+		}
+		var tween = this.get('tween');
+		tween.start('background-color', start || '#ffff88', end).chain(function(){
+			this.setStyle('background-color', this.retrieve('highlight:original'));
+			tween.callChain();
+		}.bind(this));
+		return this;
+	}
+
+});
+
+
+/*
+---
+
+name: Request
+
+description: Powerful all purpose Request Class. Uses XMLHTTPRequest.
+
+license: MIT-style license.
+
+requires: [Element, Chain, Events, Options, Browser]
+
+provides: Request
+
+...
+*/
+
+var Request = new Class({
+
+	Implements: [Chain, Events, Options],
+
+	options: {/*
+		onRequest: $empty,
+		onComplete: $empty,
+		onCancel: $empty,
+		onSuccess: $empty,
+		onFailure: $empty,
+		onException: $empty,*/
+		url: '',
+		data: '',
+		headers: {
+			'X-Requested-With': 'XMLHttpRequest',
+			'Accept': 'text/javascript, text/html, application/xml, text/xml, */*'
+		},
+		async: true,
+		format: false,
+		method: 'post',
+		link: 'ignore',
+		isSuccess: null,
+		emulation: true,
+		urlEncoded: true,
+		encoding: 'utf-8',
+		evalScripts: false,
+		evalResponse: false,
+		noCache: false
+	},
+
+	initialize: function(options){
+		this.xhr = new Browser.Request();
+		this.setOptions(options);
+		this.options.isSuccess = this.options.isSuccess || this.isSuccess;
+		this.headers = new Hash(this.options.headers);
+	},
+
+	onStateChange: function(){
+		if (this.xhr.readyState != 4 || !this.running) return;
+		this.running = false;
+		this.status = 0;
+		$try(function(){
+			this.status = this.xhr.status;
+		}.bind(this));
+		this.xhr.onreadystatechange = $empty;
+		if (this.options.isSuccess.call(this, this.status)){
+			this.response = {text: this.xhr.responseText, xml: this.xhr.responseXML};
+			this.success(this.response.text, this.response.xml);
+		} else {
+			this.response = {text: null, xml: null};
+			this.failure();
+		}
+	},
+
+	isSuccess: function(){
+		return ((this.status >= 200) && (this.status < 300));
+	},
+
+	processScripts: function(text){
+		if (this.options.evalResponse || (/(ecma|java)script/).test(this.getHeader('Content-type'))) return $exec(text);
+		return text.stripScripts(this.options.evalScripts);
+	},
+
+	success: function(text, xml){
+		this.onSuccess(this.processScripts(text), xml);
+	},
+
+	onSuccess: function(){
+		this.fireEvent('complete', arguments).fireEvent('success', arguments).callChain();
+	},
+
+	failure: function(){
+		this.onFailure();
+	},
+
+	onFailure: function(){
+		this.fireEvent('complete').fireEvent('failure', this.xhr);
+	},
+
+	setHeader: function(name, value){
+		this.headers.set(name, value);
+		return this;
+	},
+
+	getHeader: function(name){
+		return $try(function(){
+			return this.xhr.getResponseHeader(name);
+		}.bind(this));
+	},
+
+	check: function(){
+		if (!this.running) return true;
+		switch (this.options.link){
+			case 'cancel': this.cancel(); return true;
+			case 'chain': this.chain(this.caller.bind(this, arguments)); return false;
+		}
+		return false;
+	},
+
+	send: function(options){
+		if (!this.check(options)) return this;
+		this.running = true;
+
+		var type = $type(options);
+		if (type == 'string' || type == 'element') options = {data: options};
+
+		var old = this.options;
+		options = $extend({data: old.data, url: old.url, method: old.method}, options);
+		var data = options.data, url = String(options.url), method = options.method.toLowerCase();
+
+		switch ($type(data)){
+			case 'element': data = document.id(data).toQueryString(); break;
+			case 'object': case 'hash': data = Hash.toQueryString(data);
+		}
+
+		if (this.options.format){
+			var format = 'format=' + this.options.format;
+			data = (data) ? format + '&' + data : format;
+		}
+
+		if (this.options.emulation && !['get', 'post'].contains(method)){
+			var _method = '_method=' + method;
+			data = (data) ? _method + '&' + data : _method;
+			method = 'post';
+		}
+
+		if (this.options.urlEncoded && method == 'post'){
+			var encoding = (this.options.encoding) ? '; charset=' + this.options.encoding : '';
+			this.headers.set('Content-type', 'application/x-www-form-urlencoded' + encoding);
+		}
+
+		if (this.options.noCache){
+			var noCache = 'noCache=' + new Date().getTime();
+			data = (data) ? noCache + '&' + data : noCache;
+		}
+
+		var trimPosition = url.lastIndexOf('/');
+		if (trimPosition > -1 && (trimPosition = url.indexOf('#')) > -1) url = url.substr(0, trimPosition);
+
+		if (data && method == 'get'){
+			url = url + (url.contains('?') ? '&' : '?') + data;
+			data = null;
+		}
+
+		this.xhr.open(method.toUpperCase(), url, this.options.async);
+
+		this.xhr.onreadystatechange = this.onStateChange.bind(this);
+
+		this.headers.each(function(value, key){
+			try {
+				this.xhr.setRequestHeader(key, value);
+			} catch (e){
+				this.fireEvent('exception', [key, value]);
+			}
+		}, this);
+
+		this.fireEvent('request');
+		this.xhr.send(data);
+		if (!this.options.async) this.onStateChange();
+		return this;
+	},
+
+	cancel: function(){
+		if (!this.running) return this;
+		this.running = false;
+		this.xhr.abort();
+		this.xhr.onreadystatechange = $empty;
+		this.xhr = new Browser.Request();
+		this.fireEvent('cancel');
+		return this;
+	}
+
+});
+
+(function(){
+
+var methods = {};
+['get', 'post', 'put', 'delete', 'GET', 'POST', 'PUT', 'DELETE'].each(function(method){
+	methods[method] = function(){
+		var params = Array.link(arguments, {url: String.type, data: $defined});
+		return this.send($extend(params, {method: method}));
+	};
+});
+
+Request.implement(methods);
+
+})();
+
+Element.Properties.send = {
+
+	set: function(options){
+		var send = this.retrieve('send');
+		if (send) send.cancel();
+		return this.eliminate('send').store('send:options', $extend({
+			data: this, link: 'cancel', method: this.get('method') || 'post', url: this.get('action')
+		}, options));
+	},
+
+	get: function(options){
+		if (options || !this.retrieve('send')){
+			if (options || !this.retrieve('send:options')) this.set('send', options);
+			this.store('send', new Request(this.retrieve('send:options')));
+		}
+		return this.retrieve('send');
+	}
+
+};
+
+Element.implement({
+
+	send: function(url){
+		var sender = this.get('send');
+		sender.send({data: this, url: url || sender.options.url});
+		return this;
+	}
+
+});
+
+
+/*
+---
+
+name: Request.HTML
+
+description: Extends the basic Request Class with additional methods for interacting with HTML responses.
+
+license: MIT-style license.
+
+requires: [Request, Element]
+
+provides: Request.HTML
+
+...
+*/
+
+Request.HTML = new Class({
+
+	Extends: Request,
+
+	options: {
+		update: false,
+		append: false,
+		evalScripts: true,
+		filter: false
+	},
+
+	processHTML: function(text){
+		var match = text.match(/<body[^>]*>([\s\S]*?)<\/body>/i);
+		text = (match) ? match[1] : text;
+
+		var container = new Element('div');
+
+		return $try(function(){
+			var root = '<root>' + text + '</root>', doc;
+			if (Browser.Engine.trident){
+				doc = new ActiveXObject('Microsoft.XMLDOM');
+				doc.async = false;
+				doc.loadXML(root);
+			} else {
+				doc = new DOMParser().parseFromString(root, 'text/xml');
+			}
+			root = doc.getElementsByTagName('root')[0];
+			if (!root) return null;
+			for (var i = 0, k = root.childNodes.length; i < k; i++){
+				var child = Element.clone(root.childNodes[i], true, true);
+				if (child) container.grab(child);
+			}
+			return container;
+		}) || container.set('html', text);
+	},
+
+	success: function(text){
+		var options = this.options, response = this.response;
+
+		response.html = text.stripScripts(function(script){
+			response.javascript = script;
+		});
+
+		var temp = this.processHTML(response.html);
+
+		response.tree = temp.childNodes;
+		response.elements = temp.getElements('*');
+
+		if (options.filter) response.tree = response.elements.filter(options.filter);
+		if (options.update) document.id(options.update).empty().set('html', response.html);
+		else if (options.append) document.id(options.append).adopt(temp.getChildren());
+		if (options.evalScripts) $exec(response.javascript);
+
+		this.onSuccess(response.tree, response.elements, response.html, response.javascript);
+	}
+
+});
+
+Element.Properties.load = {
+
+	set: function(options){
+		var load = this.retrieve('load');
+		if (load) load.cancel();
+		return this.eliminate('load').store('load:options', $extend({data: this, link: 'cancel', update: this, method: 'get'}, options));
+	},
+
+	get: function(options){
+		if (options || ! this.retrieve('load')){
+			if (options || !this.retrieve('load:options')) this.set('load', options);
+			this.store('load', new Request.HTML(this.retrieve('load:options')));
+		}
+		return this.retrieve('load');
+	}
+
+};
+
+Element.implement({
+
+	load: function(){
+		this.get('load').send(Array.link(arguments, {data: Object.type, url: String.type}));
+		return this;
+	}
+
+});
+
+
+/*
+---
+
+name: JSON
+
+description: JSON encoder and decoder.
+
+license: MIT-style license.
+
+see: <http://www.json.org/>
+
+requires: [Array, String, Number, Function, Hash]
+
+provides: JSON
+
+...
+*/
+
+var JSON = new Hash(this.JSON && {
+	stringify: JSON.stringify,
+	parse: JSON.parse
+}).extend({
+	
+	$specialChars: {'\b': '\\b', '\t': '\\t', '\n': '\\n', '\f': '\\f', '\r': '\\r', '"' : '\\"', '\\': '\\\\'},
+
+	$replaceChars: function(chr){
+		return JSON.$specialChars[chr] || '\\u00' + Math.floor(chr.charCodeAt() / 16).toString(16) + (chr.charCodeAt() % 16).toString(16);
+	},
+
+	encode: function(obj){
+		switch ($type(obj)){
+			case 'string':
+				return '"' + obj.replace(/[\x00-\x1f\\"]/g, JSON.$replaceChars) + '"';
+			case 'array':
+				return '[' + String(obj.map(JSON.encode).clean()) + ']';
+			case 'object': case 'hash':
+				var string = [];
+				Hash.each(obj, function(value, key){
+					var json = JSON.encode(value);
+					if (json) string.push(JSON.encode(key) + ':' + json);
+				});
+				return '{' + string + '}';
+			case 'number': case 'boolean': return String(obj);
+			case false: return 'null';
+		}
+		return null;
+	},
+
+	decode: function(string, secure){
+		if ($type(string) != 'string' || !string.length) return null;
+		if (secure && !(/^[,:{}\[\]0-9.\-+Eaeflnr-u \n\r\t]*$/).test(string.replace(/\\./g, '@').replace(/"[^"\\\n\r]*"/g, ''))) return null;
+		return eval('(' + string + ')');
+	}
+
+});
+
+
+/*
+---
+
+name: Request.JSON
+
+description: Extends the basic Request Class with additional methods for sending and receiving JSON data.
+
+license: MIT-style license.
+
+requires: [Request, JSON]
+
+provides: [Request.JSON]
+
+...
+*/
+
+Request.JSON = new Class({
+
+	Extends: Request,
+
+	options: {
+		secure: true
+	},
+
+	initialize: function(options){
+		this.parent(options);
+		this.headers.extend({'Accept': 'application/json', 'X-Request': 'JSON'});
+	},
+
+	success: function(text){
+		this.response.json = JSON.decode(text, this.options.secure);
+		this.onSuccess(this.response.json, text);
+	}
+
+});
+
+
+/*
+---
+
+name: Cookie
+
+description: Class for creating, reading, and deleting browser Cookies.
+
+license: MIT-style license.
+
+credits: Based on the functions by Peter-Paul Koch (http://quirksmode.org).
+
+requires: Options
+
+provides: Cookie
+
+...
+*/
+
+var Cookie = new Class({
+
+	Implements: Options,
+
+	options: {
+		path: false,
+		domain: false,
+		duration: false,
+		secure: false,
+		document: document
+	},
+
+	initialize: function(key, options){
+		this.key = key;
+		this.setOptions(options);
+	},
+
+	write: function(value){
+		value = encodeURIComponent(value);
+		if (this.options.domain) value += '; domain=' + this.options.domain;
+		if (this.options.path) value += '; path=' + this.options.path;
+		if (this.options.duration){
+			var date = new Date();
+			date.setTime(date.getTime() + this.options.duration * 24 * 60 * 60 * 1000);
+			value += '; expires=' + date.toGMTString();
+		}
+		if (this.options.secure) value += '; secure';
+		this.options.document.cookie = this.key + '=' + value;
+		return this;
+	},
+
+	read: function(){
+		var value = this.options.document.cookie.match('(?:^|;)\\s*' + this.key.escapeRegExp() + '=([^;]*)');
+		return (value) ? decodeURIComponent(value[1]) : null;
+	},
+
+	dispose: function(){
+		new Cookie(this.key, $merge(this.options, {duration: -1})).write('');
+		return this;
+	}
+
+});
+
+Cookie.write = function(key, value, options){
+	return new Cookie(key, options).write(value);
+};
+
+Cookie.read = function(key){
+	return new Cookie(key).read();
+};
+
+Cookie.dispose = function(key, options){
+	return new Cookie(key, options).dispose();
+};
+
+
+/*
+---
+
+name: DomReady
+
+description: Contains the custom event domready.
+
+license: MIT-style license.
+
+requires: Element.Event
+
+provides: DomReady
+
+...
+*/
+
+Element.Events.domready = {
+
+	onAdd: function(fn){
+		if (Browser.loaded) fn.call(this);
+	}
+
+};
+
+(function(){
+
+	var domready = function(){
+		if (Browser.loaded) return;
+		Browser.loaded = true;
+		window.fireEvent('domready');
+		document.fireEvent('domready');
+	};
+	
+	window.addEvent('load', domready);
+
+	if (Browser.Engine.trident){
+		var temp = document.createElement('div');
+		(function(){
+			($try(function(){
+				temp.doScroll(); // Technique by Diego Perini
+				return document.id(temp).inject(document.body).set('html', 'temp').dispose();
+			})) ? domready() : arguments.callee.delay(50);
+		})();
+	} else if (Browser.Engine.webkit && Browser.Engine.version < 525){
+		(function(){
+			(['loaded', 'complete'].contains(document.readyState)) ? domready() : arguments.callee.delay(50);
+		})();
+	} else {
+		document.addEvent('DOMContentLoaded', domready);
+	}
+
+})();
+
+
+/*
+---
+
+name: Selectors
+
+description: Adds advanced CSS-style querying capabilities for targeting HTML Elements. Includes pseudo selectors.
+
+license: MIT-style license.
+
+requires: Element
+
+provides: Selectors
+
+...
+*/
+
+Native.implement([Document, Element], {
+
+	getElements: function(expression, nocash){
+		expression = expression.split(',');
+		var items, local = {};
+		for (var i = 0, l = expression.length; i < l; i++){
+			var selector = expression[i], elements = Selectors.Utils.search(this, selector, local);
+			if (i != 0 && elements.item) elements = $A(elements);
+			items = (i == 0) ? elements : (items.item) ? $A(items).concat(elements) : items.concat(elements);
+		}
+		return new Elements(items, {ddup: (expression.length > 1), cash: !nocash});
+	}
+
+});
+
+Element.implement({
+
+	match: function(selector){
+		if (!selector || (selector == this)) return true;
+		var tagid = Selectors.Utils.parseTagAndID(selector);
+		var tag = tagid[0], id = tagid[1];
+		if (!Selectors.Filters.byID(this, id) || !Selectors.Filters.byTag(this, tag)) return false;
+		var parsed = Selectors.Utils.parseSelector(selector);
+		return (parsed) ? Selectors.Utils.filter(this, parsed, {}) : true;
+	}
+
+});
+
+var Selectors = {Cache: {nth: {}, parsed: {}}};
+
+Selectors.RegExps = {
+	id: (/#([\w-]+)/),
+	tag: (/^(\w+|\*)/),
+	quick: (/^(\w+|\*)$/),
+	splitter: (/\s*([+>~\s])\s*([a-zA-Z#.*:\[])/g),
+	combined: (/\.([\w-]+)|\[(\w+)(?:([!*^$~|]?=)(["']?)([^\4]*?)\4)?\]|:([\w-]+)(?:\(["']?(.*?)?["']?\)|$)/g)
+};
+
+Selectors.Utils = {
+
+	chk: function(item, uniques){
+		if (!uniques) return true;
+		var uid = $uid(item);
+		if (!uniques[uid]) return uniques[uid] = true;
+		return false;
+	},
+
+	parseNthArgument: function(argument){
+		if (Selectors.Cache.nth[argument]) return Selectors.Cache.nth[argument];
+		var parsed = argument.match(/^([+-]?\d*)?([a-z]+)?([+-]?\d*)?$/);
+		if (!parsed) return false;
+		var inta = parseInt(parsed[1], 10);
+		var a = (inta || inta === 0) ? inta : 1;
+		var special = parsed[2] || false;
+		var b = parseInt(parsed[3], 10) || 0;
+		if (a != 0){
+			b--;
+			while (b < 1) b += a;
+			while (b >= a) b -= a;
+		} else {
+			a = b;
+			special = 'index';
+		}
+		switch (special){
+			case 'n': parsed = {a: a, b: b, special: 'n'}; break;
+			case 'odd': parsed = {a: 2, b: 0, special: 'n'}; break;
+			case 'even': parsed = {a: 2, b: 1, special: 'n'}; break;
+			case 'first': parsed = {a: 0, special: 'index'}; break;
+			case 'last': parsed = {special: 'last-child'}; break;
+			case 'only': parsed = {special: 'only-child'}; break;
+			default: parsed = {a: (a - 1), special: 'index'};
+		}
+
+		return Selectors.Cache.nth[argument] = parsed;
+	},
+
+	parseSelector: function(selector){
+		if (Selectors.Cache.parsed[selector]) return Selectors.Cache.parsed[selector];
+		var m, parsed = {classes: [], pseudos: [], attributes: []};
+		while ((m = Selectors.RegExps.combined.exec(selector))){
+			var cn = m[1], an = m[2], ao = m[3], av = m[5], pn = m[6], pa = m[7];
+			if (cn){
+				parsed.classes.push(cn);
+			} else if (pn){
+				var parser = Selectors.Pseudo.get(pn);
+				if (parser) parsed.pseudos.push({parser: parser, argument: pa});
+				else parsed.attributes.push({name: pn, operator: '=', value: pa});
+			} else if (an){
+				parsed.attributes.push({name: an, operator: ao, value: av});
+			}
+		}
+		if (!parsed.classes.length) delete parsed.classes;
+		if (!parsed.attributes.length) delete parsed.attributes;
+		if (!parsed.pseudos.length) delete parsed.pseudos;
+		if (!parsed.classes && !parsed.attributes && !parsed.pseudos) parsed = null;
+		return Selectors.Cache.parsed[selector] = parsed;
+	},
+
+	parseTagAndID: function(selector){
+		var tag = selector.match(Selectors.RegExps.tag);
+		var id = selector.match(Selectors.RegExps.id);
+		return [(tag) ? tag[1] : '*', (id) ? id[1] : false];
+	},
+
+	filter: function(item, parsed, local){
+		var i;
+		if (parsed.classes){
+			for (i = parsed.classes.length; i--; i){
+				var cn = parsed.classes[i];
+				if (!Selectors.Filters.byClass(item, cn)) return false;
+			}
+		}
+		if (parsed.attributes){
+			for (i = parsed.attributes.length; i--; i){
+				var att = parsed.attributes[i];
+				if (!Selectors.Filters.byAttribute(item, att.name, att.operator, att.value)) return false;
+			}
+		}
+		if (parsed.pseudos){
+			for (i = parsed.pseudos.length; i--; i){
+				var psd = parsed.pseudos[i];
+				if (!Selectors.Filters.byPseudo(item, psd.parser, psd.argument, local)) return false;
+			}
+		}
+		return true;
+	},
+
+	getByTagAndID: function(ctx, tag, id){
+		if (id){
+			var item = (ctx.getElementById) ? ctx.getElementById(id, true) : Element.getElementById(ctx, id, true);
+			return (item && Selectors.Filters.byTag(item, tag)) ? [item] : [];
+		} else {
+			return ctx.getElementsByTagName(tag);
+		}
+	},
+
+	search: function(self, expression, local){
+		var splitters = [];
+
+		var selectors = expression.trim().replace(Selectors.RegExps.splitter, function(m0, m1, m2){
+			splitters.push(m1);
+			return ':)' + m2;
+		}).split(':)');
+
+		var items, filtered, item;
+
+		for (var i = 0, l = selectors.length; i < l; i++){
+
+			var selector = selectors[i];
+
+			if (i == 0 && Selectors.RegExps.quick.test(selector)){
+				items = self.getElementsByTagName(selector);
+				continue;
+			}
+
+			var splitter = splitters[i - 1];
+
+			var tagid = Selectors.Utils.parseTagAndID(selector);
+			var tag = tagid[0], id = tagid[1];
+
+			if (i == 0){
+				items = Selectors.Utils.getByTagAndID(self, tag, id);
+			} else {
+				var uniques = {}, found = [];
+				for (var j = 0, k = items.length; j < k; j++) found = Selectors.Getters[splitter](found, items[j], tag, id, uniques);
+				items = found;
+			}
+
+			var parsed = Selectors.Utils.parseSelector(selector);
+
+			if (parsed){
+				filtered = [];
+				for (var m = 0, n = items.length; m < n; m++){
+					item = items[m];
+					if (Selectors.Utils.filter(item, parsed, local)) filtered.push(item);
+				}
+				items = filtered;
+			}
+
+		}
+
+		return items;
+
+	}
+
+};
+
+Selectors.Getters = {
+
+	' ': function(found, self, tag, id, uniques){
+		var items = Selectors.Utils.getByTagAndID(self, tag, id);
+		for (var i = 0, l = items.length; i < l; i++){
+			var item = items[i];
+			if (Selectors.Utils.chk(item, uniques)) found.push(item);
+		}
+		return found;
+	},
+
+	'>': function(found, self, tag, id, uniques){
+		var children = Selectors.Utils.getByTagAndID(self, tag, id);
+		for (var i = 0, l = children.length; i < l; i++){
+			var child = children[i];
+			if (child.parentNode == self && Selectors.Utils.chk(child, uniques)) found.push(child);
+		}
+		return found;
+	},
+
+	'+': function(found, self, tag, id, uniques){
+		while ((self = self.nextSibling)){
+			if (self.nodeType == 1){
+				if (Selectors.Utils.chk(self, uniques) && Selectors.Filters.byTag(self, tag) && Selectors.Filters.byID(self, id)) found.push(self);
+				break;
+			}
+		}
+		return found;
+	},
+
+	'~': function(found, self, tag, id, uniques){
+		while ((self = self.nextSibling)){
+			if (self.nodeType == 1){
+				if (!Selectors.Utils.chk(self, uniques)) break;
+				if (Selectors.Filters.byTag(self, tag) && Selectors.Filters.byID(self, id)) found.push(self);
+			}
+		}
+		return found;
+	}
+
+};
+
+Selectors.Filters = {
+
+	byTag: function(self, tag){
+		return (tag == '*' || (self.tagName && self.tagName.toLowerCase() == tag));
+	},
+
+	byID: function(self, id){
+		return (!id || (self.id && self.id == id));
+	},
+
+	byClass: function(self, klass){
+		return (self.className && self.className.contains && self.className.contains(klass, ' '));
+	},
+
+	byPseudo: function(self, parser, argument, local){
+		return parser.call(self, argument, local);
+	},
+
+	byAttribute: function(self, name, operator, value){
+		var result = Element.prototype.getProperty.call(self, name);
+		if (!result) return (operator == '!=');
+		if (!operator || value == undefined) return true;
+		switch (operator){
+			case '=': return (result == value);
+			case '*=': return (result.contains(value));
+			case '^=': return (result.substr(0, value.length) == value);
+			case '$=': return (result.substr(result.length - value.length) == value);
+			case '!=': return (result != value);
+			case '~=': return result.contains(value, ' ');
+			case '|=': return result.contains(value, '-');
+		}
+		return false;
+	}
+
+};
+
+Selectors.Pseudo = new Hash({
+
+	// w3c pseudo selectors
+
+	checked: function(){
+		return this.checked;
+	},
+	
+	empty: function(){
+		return !(this.innerText || this.textContent || '').length;
+	},
+
+	not: function(selector){
+		return !Element.match(this, selector);
+	},
+
+	contains: function(text){
+		return (this.innerText || this.textContent || '').contains(text);
+	},
+
+	'first-child': function(){
+		return Selectors.Pseudo.index.call(this, 0);
+	},
+
+	'last-child': function(){
+		var element = this;
+		while ((element = element.nextSibling)){
+			if (element.nodeType == 1) return false;
+		}
+		return true;
+	},
+
+	'only-child': function(){
+		var prev = this;
+		while ((prev = prev.previousSibling)){
+			if (prev.nodeType == 1) return false;
+		}
+		var next = this;
+		while ((next = next.nextSibling)){
+			if (next.nodeType == 1) return false;
+		}
+		return true;
+	},
+
+	'nth-child': function(argument, local){
+		argument = (argument == undefined) ? 'n' : argument;
+		var parsed = Selectors.Utils.parseNthArgument(argument);
+		if (parsed.special != 'n') return Selectors.Pseudo[parsed.special].call(this, parsed.a, local);
+		var count = 0;
+		local.positions = local.positions || {};
+		var uid = $uid(this);
+		if (!local.positions[uid]){
+			var self = this;
+			while ((self = self.previousSibling)){
+				if (self.nodeType != 1) continue;
+				count ++;
+				var position = local.positions[$uid(self)];
+				if (position != undefined){
+					count = position + count;
+					break;
+				}
+			}
+			local.positions[uid] = count;
+		}
+		return (local.positions[uid] % parsed.a == parsed.b);
+	},
+
+	// custom pseudo selectors
+
+	index: function(index){
+		var element = this, count = 0;
+		while ((element = element.previousSibling)){
+			if (element.nodeType == 1 && ++count > index) return false;
+		}
+		return (count == index);
+	},
+
+	even: function(argument, local){
+		return Selectors.Pseudo['nth-child'].call(this, '2n+1', local);
+	},
+
+	odd: function(argument, local){
+		return Selectors.Pseudo['nth-child'].call(this, '2n', local);
+	},
+	
+	selected: function(){
+		return this.selected;
+	},
+	
+	enabled: function(){
+		return (this.disabled === false);
+	}
+
+});
+
+
+/*
+---
+
+name: Swiff
+
+description: Wrapper for embedding SWF movies. Supports External Interface Communication.
+
+license: MIT-style license.
+
+credits: Flash detection & Internet Explorer + Flash Player 9 fix inspired by SWFObject.
+
+requires: [Options, $util]
+
+provides: Swiff
+
+...
+*/
+
+var Swiff = new Class({
+
+	Implements: [Options],
+
+	options: {
+		id: null,
+		height: 1,
+		width: 1,
+		container: null,
+		properties: {},
+		params: {
+			quality: 'high',
+			allowScriptAccess: 'always',
+			wMode: 'transparent',
+			swLiveConnect: true
+		},
+		callBacks: {},
+		vars: {}
+	},
+
+	toElement: function(){
+		return this.object;
+	},
+
+	initialize: function(path, options){
+		this.instance = 'Swiff_' + $time();
+
+		this.setOptions(options);
+		options = this.options;
+		var id = this.id = options.id || this.instance;
+		var container = document.id(options.container);
+
+		Swiff.CallBacks[this.instance] = {};
+
+		var params = options.params, vars = options.vars, callBacks = options.callBacks;
+		var properties = $extend({height: options.height, width: options.width}, options.properties);
+
+		var self = this;
+
+		for (var callBack in callBacks){
+			Swiff.CallBacks[this.instance][callBack] = (function(option){
+				return function(){
+					return option.apply(self.object, arguments);
+				};
+			})(callBacks[callBack]);
+			vars[callBack] = 'Swiff.CallBacks.' + this.instance + '.' + callBack;
+		}
+
+		params.flashVars = Hash.toQueryString(vars);
+		if (Browser.Engine.trident){
+			properties.classid = 'clsid:D27CDB6E-AE6D-11cf-96B8-444553540000';
+			params.movie = path;
+		} else {
+			properties.type = 'application/x-shockwave-flash';
+			properties.data = path;
+		}
+		var build = '<object id="' + id + '"';
+		for (var property in properties) build += ' ' + property + '="' + properties[property] + '"';
+		build += '>';
+		for (var param in params){
+			if (params[param]) build += '<param name="' + param + '" value="' + params[param] + '" />';
+		}
+		build += '</object>';
+		this.object = ((container) ? container.empty() : new Element('div')).set('html', build).firstChild;
+	},
+
+	replaces: function(element){
+		element = document.id(element, true);
+		element.parentNode.replaceChild(this.toElement(), element);
+		return this;
+	},
+
+	inject: function(element){
+		document.id(element, true).appendChild(this.toElement());
+		return this;
+	},
+
+	remote: function(){
+		return Swiff.remote.apply(Swiff, [this.toElement()].extend(arguments));
+	}
+
+});
+
+Swiff.CallBacks = {};
+
+Swiff.remote = function(obj, fn){
+	var rs = obj.CallFunction('<invoke name="' + fn + '" returntype="javascript">' + __flash__argumentsToXML(arguments, 2) + '</invoke>');
+	return eval(rs);
+};
+
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/info.jsp
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/info.jsp	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/info.jsp	(revision 47450)
@@ -0,0 +1,25 @@
+<%@ page contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<%@ taglib prefix="s" uri="/struts-tags"%>
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<link href="jsps/style.css" rel="stylesheet" type="text/css" media="screen" />
+<link href="jsps/favicon.ico" rel="shortcut icon" type="image/x-icon" />
+<title><s:text name="info.title"/></title>
+</head>
+<body>
+<div id="wrapper">
+	<jsp:include page="menu.jsp"/>
+	<div id="page">
+	<div id="page-bgtop">
+		<div id="content">
+			<s:actionerror escape="false"/> 
+			<s:actionmessage escape="false"/> 
+		</div>
+		<div style="clear: both;">&nbsp;</div>
+	</div>
+	</div>
+</div>
+</body>
+</html>
\ No newline at end of file
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/table-images/pattern.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/table-images/pattern.png
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/table-images/pattern.png	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/table-images/pattern.png	(revision 47450)

Property changes on: modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/table-images/pattern.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/table-images/botleft.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/table-images/botleft.png
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/table-images/botleft.png	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/table-images/botleft.png	(revision 47450)

Property changes on: modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/table-images/botleft.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/table-images/gradhover.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/table-images/gradhover.png
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/table-images/gradhover.png	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/table-images/gradhover.png	(revision 47450)

Property changes on: modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/table-images/gradhover.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/table-images/blurry.jpg
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/table-images/blurry.jpg
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/table-images/blurry.jpg	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/table-images/blurry.jpg	(revision 47450)

Property changes on: modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/table-images/blurry.jpg
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/manuals/example_record.txt
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/manuals/example_record.txt	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/manuals/example_record.txt	(revision 47450)
@@ -0,0 +1,25 @@
+<header>
+	<identifier>oai:openaire.cern.ch:1</identifier>
+	<datestamp>2011-01-18T14:26:14Z</datestamp>
+	<setSpec>EC_fundedresources</setSpec>
+</header>
+<metadata>
+	<oai_dc:dc xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:oai_dc="http://www.openarchives.org/OAI/2.0/oai_dc/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.openarchives.org/OAI/2.0/oai_dc/ http://www.openarchives.org/OAI/2.0/oai_dc.xsd">
+		<dc:language>eng</dc:language>
+		<dc:creator>Berchum, Marnix</dc:creator>
+		<dc:creator>Rodrigues, Eloy</dc:creator>
+		<dc:contributor>Brown, John</dc:contributor>
+		<dc:title>OpenAIRE Guidelines</dc:title>
+		<dc:date>2010-09-01</dc:date>
+		<dc:identifier>http://openaire.cern.ch/record/1</dc:identifier>
+		<dc:description>
+			The OpenAIRE Guidelines will provide orientation for repository managers to define and implement their local data management policies in compliance with the Open Access demands of the European Commission. Furthermore they will comply with the technical requirements of the OpenAIRE infrastructure that is being established to support and monitor the implementation of the FP7 OA pilot. By implementing these Guidelines repository managers are facilitating the authors who deposit their publications in the repository, in complying with the EC Open Access requirements. For developers of repository platforms the Guidelines provide guidance to add supportive functionalities for authors of EC funded research in future versions.
+		</dc:description>
+		<dc:relation>info:eu-repo/grantAgreement/EC/FP7/246686</dc:relation>
+		<dc:rights>info:eu-repo/semantics/openAccess</dc:rights>
+		<dc:audience>Librarians</dc:audience>
+		<dc:type>info:eu-repo/semantics/article</dc:type>
+		<dc:format>application/pdf</dc:format>
+		<dc:source>ISSN:0165-0505</dc:source>
+	</oai_dc:dc>
+</metadata>
\ No newline at end of file
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/WEB-INF/applicationContext.xml
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/WEB-INF/applicationContext.xml	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/WEB-INF/applicationContext.xml	(revision 47450)
@@ -0,0 +1,44 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<beans xmlns="http://www.springframework.org/schema/beans"
+	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p"
+	xmlns:context="http://www.springframework.org/schema/context"
+
+	xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.0.xsd
+	http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.0.xsd">
+
+
+	
+<!-- 	<import resource="classpath*:/eu/dnetlib/validator/admin/**/springContext-*.xml" /> -->
+<!-- 	<import resource="classpath*:/eu/dnetlib/validator/commons/**/springContext-*.xml" /> -->
+
+	<context:annotation-config />
+
+<bean class="eu.dnetlib.validator.web.config.CascadingPropertyLoader"
+		id="propertyLoader">
+		<property name="order" value="2" />
+		<property name="properties">
+			<bean class="eu.dnetlib.conf.WebappContextProperyFactory">
+				<property name="propertyFetcher">
+					<bean class="eu.dnetlib.conf.PropertyFetcher" />
+				</property>
+			</bean>
+		</property>
+		<property name="ignoreUnresolvablePlaceholders" value="true" />
+		<property name="locations">			<list>
+				<value>classpath*:/gr/**/springContext-*.properties</value>
+				<value>classpath*:/eu/**/springContext-*.properties</value>
+
+				<value>classpath*:dnet-site-wizard.properties</value>
+				<value>classpath*:dnet-site-override.properties</value>
+				<value>classpath*:dnet-wizard.properties</value>
+				<value>classpath*:dnet-override.properties</value>
+				<value>classpath*:dnet-validator-wizard.properties</value>
+				<value>classpath*:dnet-validator-override.properties</value>
+				<value>classpath*:dnet-site-force-override.properties</value>
+				<value>classpath*:dnet-force-override.properties</value>
+			</list>
+		</property>
+	</bean>
+
+</beans>
\ No newline at end of file
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/favicon.ico
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/favicon.ico
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/favicon.ico	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/favicon.ico	(revision 47450)

Property changes on: modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/favicon.ico
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/registration.jsp
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/registration.jsp	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/registration.jsp	(revision 47450)
@@ -0,0 +1,44 @@
+<%@ page contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<%@ taglib prefix="s" uri="/struts-tags"%>
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title><s:text name="registration.title"/></title>
+<link href="jsps/favicon.ico" rel="shortcut icon" type="image/x-icon" />
+<link href="jsps/style.css" rel="stylesheet" type="text/css" media="screen" />
+</head>
+<body>
+<div id="wrapper">
+	<jsp:include page="menu.jsp"/>
+	<div id="page">
+	<div id="page-bgtop">
+		<div class="content">
+			<div class="main">
+				<h2 class="title"><s:text name="registration.title"/></h2>
+				<s:text name="registration.description"/>
+				<%--<p class="meta"><a href='<s:url value="/jsps/help.jsp#registration"/>' target="_blank"><s:text name="help"/></a></p>--%>
+				<div class="entry">
+					<%-- <s:if test="%{@gr.uoa.di.validatorweb.configs.Constants@isModeLdap()}">
+						<s:text name="registration.ldap.message"/>
+					</s:if> --%>
+					<s:form action="Register">
+						<s:if test="%{repoMode.trim().toLowerCase().equals(\"dnet\")}">
+							<s:textfield name="username" key="registration.username"/>
+							<s:textfield name="firstName" key="registration.firstName"/>
+							<s:textfield name="lastName" key="registration.lastName"/>
+						</s:if>
+						<s:textfield name="email" key="registration.email"/>
+						<s:password name="password" key="registration.password"/>
+						<s:password name="repassword" key="registration.repassword"/>
+						<s:submit value="Register" cssClass="button-default"/>
+					</s:form>
+				</div>
+			</div>
+		</div>
+		
+	</div>
+	</div>
+</div>
+</body>
+</html>
\ No newline at end of file
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/js/mootools-1.2.5.1-more.js
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/js/mootools-1.2.5.1-more.js	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/js/mootools-1.2.5.1-more.js	(revision 47450)
@@ -0,0 +1,2192 @@
+//MooTools More, <http://mootools.net/more>. Copyright (c) 2006-2009 Aaron Newton <http://clientcide.com/>, Valerio Proietti <http://mad4milk.net> & the MooTools team <http://mootools.net/developers>, MIT Style License.
+
+/*
+---
+
+script: More.js
+
+name: More
+
+description: MooTools More
+
+license: MIT-style license
+
+requires:
+  - Core/MooTools
+
+provides: [MooTools.More]
+
+...
+*/
+
+MooTools.More = {
+	'version': '1.2.5.1',
+	'build': '254884f2b83651bf95260eed5c6cceb838e22d8e'
+};
+
+
+/*
+---
+
+script: MooTools.Lang.js
+
+name: MooTools.Lang
+
+description: Provides methods for localization.
+
+license: MIT-style license
+
+authors:
+  - Aaron Newton
+
+requires:
+  - Core/Events
+  - /MooTools.More
+
+provides: [Lang]
+
+...
+*/
+
+(function(){
+
+	var data = {
+		language: 'en-US',
+		languages: {
+			'en-US': {}
+		},
+		cascades: ['en-US']
+	};
+	
+	var cascaded;
+
+	MooTools.lang = new Events();
+
+	$extend(MooTools.lang, {
+
+		setLanguage: function(lang){
+			if (!data.languages[lang]) return this;
+			data.language = lang;
+			this.load();
+			this.fireEvent('langChange', lang);
+			return this;
+		},
+
+		load: function() {
+			var langs = this.cascade(this.getCurrentLanguage());
+			cascaded = {};
+			$each(langs, function(set, setName){
+				cascaded[setName] = this.lambda(set);
+			}, this);
+		},
+
+		getCurrentLanguage: function(){
+			return data.language;
+		},
+
+		addLanguage: function(lang){
+			data.languages[lang] = data.languages[lang] || {};
+			return this;
+		},
+
+		cascade: function(lang){
+			var cascades = (data.languages[lang] || {}).cascades || [];
+			cascades.combine(data.cascades);
+			cascades.erase(lang).push(lang);
+			var langs = cascades.map(function(lng){
+				return data.languages[lng];
+			}, this);
+			return $merge.apply(this, langs);
+		},
+
+		lambda: function(set) {
+			(set || {}).get = function(key, args){
+				return $lambda(set[key]).apply(this, $splat(args));
+			};
+			return set;
+		},
+
+		get: function(set, key, args){
+			if (cascaded && cascaded[set]) return (key ? cascaded[set].get(key, args) : cascaded[set]);
+		},
+
+		set: function(lang, set, members){
+			this.addLanguage(lang);
+			langData = data.languages[lang];
+			if (!langData[set]) langData[set] = {};
+			$extend(langData[set], members);
+			if (lang == this.getCurrentLanguage()){
+				this.load();
+				this.fireEvent('langChange', lang);
+			}
+			return this;
+		},
+
+		list: function(){
+			return Hash.getKeys(data.languages);
+		}
+
+	});
+
+})();
+
+
+/*
+---
+
+script: Log.js
+
+name: Log
+
+description: Provides basic logging functionality for plugins to implement.
+
+license: MIT-style license
+
+authors:
+  - Guillermo Rauch
+  - Thomas Aylott
+  - Scott Kyle
+
+requires:
+  - Core/Class
+  - /MooTools.More
+
+provides: [Log]
+
+...
+*/
+
+(function(){
+
+var global = this;
+
+var log = function(){
+	if (global.console && console.log){
+		try {
+			console.log.apply(console, arguments);
+		} catch(e) {
+			console.log(Array.slice(arguments));
+		}
+	} else {
+		Log.logged.push(arguments);
+	}
+	return this;
+};
+
+var disabled = function(){
+	this.logged.push(arguments);
+	return this;
+};
+
+this.Log = new Class({
+	
+	logged: [],
+	
+	log: disabled,
+	
+	resetLog: function(){
+		this.logged.empty();
+		return this;
+	},
+
+	enableLog: function(){
+		this.log = log;
+		this.logged.each(function(args){
+			this.log.apply(this, args);
+		}, this);
+		return this.resetLog();
+	},
+
+	disableLog: function(){
+		this.log = disabled;
+		return this;
+	}
+	
+});
+
+Log.extend(new Log).enableLog();
+
+// legacy
+Log.logger = function(){
+	return this.log.apply(this, arguments);
+};
+
+})();
+
+
+/*
+---
+
+script: Class.Refactor.js
+
+name: Class.Refactor
+
+description: Extends a class onto itself with new property, preserving any items attached to the class's namespace.
+
+license: MIT-style license
+
+authors:
+  - Aaron Newton
+
+requires:
+  - Core/Class
+  - /MooTools.More
+
+# Some modules declare themselves dependent on Class.Refactor
+provides: [Class.refactor, Class.Refactor]
+
+...
+*/
+
+Class.refactor = function(original, refactors){
+
+	$each(refactors, function(item, name){
+		var origin = original.prototype[name];
+		if (origin && (origin = origin._origin ? origin._origin: origin) && typeof item == 'function') original.implement(name, function(){
+			var old = this.previous;
+			this.previous = origin;
+			var value = item.apply(this, arguments);
+			this.previous = old;
+			return value;
+		}); else original.implement(name, item);
+	});
+
+	return original;
+
+};
+
+
+/*
+---
+
+script: Class.Binds.js
+
+name: Class.Binds
+
+description: Automagically binds specified methods in a class to the instance of the class.
+
+license: MIT-style license
+
+authors:
+  - Aaron Newton
+
+requires:
+  - Core/Class
+  - /MooTools.More
+
+provides: [Class.Binds]
+
+...
+*/
+
+Class.Mutators.Binds = function(binds){
+    return binds;
+};
+
+Class.Mutators.initialize = function(initialize){
+	return function(){
+		$splat(this.Binds).each(function(name){
+			var original = this[name];
+			if (original) this[name] = original.bind(this);
+		}, this);
+		return initialize.apply(this, arguments);
+	};
+};
+
+
+/*
+---
+
+script: Class.Occlude.js
+
+name: Class.Occlude
+
+description: Prevents a class from being applied to a DOM element twice.
+
+license: MIT-style license.
+
+authors:
+  - Aaron Newton
+
+requires: 
+  - Core/Class
+  - Core/Element
+  - /MooTools.More
+
+provides: [Class.Occlude]
+
+...
+*/
+
+Class.Occlude = new Class({
+
+	occlude: function(property, element){
+		element = document.id(element || this.element);
+		var instance = element.retrieve(property || this.property);
+		if (instance && !$defined(this.occluded))
+			return this.occluded = instance;
+
+		this.occluded = false;
+		element.store(property || this.property, this);
+		return this.occluded;
+	}
+
+});
+
+
+/*
+---
+
+script: Chain.Wait.js
+
+name: Chain.Wait
+
+description: value, Adds a method to inject pauses between chained events.
+
+license: MIT-style license.
+
+authors:
+  - Aaron Newton
+
+requires: 
+  - Core/Chain
+  - Core/Element
+  - Core/Fx
+  - /MooTools.More
+
+provides: [Chain.Wait]
+
+...
+*/
+
+(function(){
+
+	var wait = {
+		wait: function(duration){
+			return this.chain(function(){
+				this.callChain.delay($pick(duration, 500), this);
+			}.bind(this));
+		}
+	};
+
+	Chain.implement(wait);
+
+	if (window.Fx){
+		Fx.implement(wait);
+		['Css', 'Tween', 'Elements'].each(function(cls){
+			if (Fx[cls]) Fx[cls].implement(wait);
+		});
+	}
+
+	Element.implement({
+		chains: function(effects){
+			$splat($pick(effects, ['tween', 'morph', 'reveal'])).each(function(effect){
+				effect = this.get(effect);
+				if (!effect) return;
+				effect.setOptions({
+					link:'chain'
+				});
+			}, this);
+			return this;
+		},
+		pauseFx: function(duration, effect){
+			this.chains(effect).get($pick(effect, 'tween')).wait(duration);
+			return this;
+		}
+	});
+
+})();
+
+
+/*
+---
+
+script: Element.Measure.js
+
+name: Element.Measure
+
+description: Extends the Element native object to include methods useful in measuring dimensions.
+
+credits: "Element.measure / .expose methods by Daniel Steigerwald License: MIT-style license. Copyright: Copyright (c) 2008 Daniel Steigerwald, daniel.steigerwald.cz"
+
+license: MIT-style license
+
+authors:
+  - Aaron Newton
+
+requires:
+  - Core/Element.Style
+  - Core/Element.Dimensions
+  - /MooTools.More
+
+provides: [Element.Measure]
+
+...
+*/
+
+Element.implement({
+
+	measure: function(fn){
+		var vis = function(el) {
+			return !!(!el || el.offsetHeight || el.offsetWidth);
+		};
+		if (vis(this)) return fn.apply(this);
+		var parent = this.getParent(),
+			restorers = [],
+			toMeasure = []; 
+		while (!vis(parent) && parent != document.body) {
+			toMeasure.push(parent.expose());
+			parent = parent.getParent();
+		}
+		var restore = this.expose();
+		var result = fn.apply(this);
+		restore();
+		toMeasure.each(function(restore){
+			restore();
+		});
+		return result;
+	},
+
+	expose: function(){
+		if (this.getStyle('display') != 'none') return $empty;
+		var before = this.style.cssText;
+		this.setStyles({
+			display: 'block',
+			position: 'absolute',
+			visibility: 'hidden'
+		});
+		return function(){
+			this.style.cssText = before;
+		}.bind(this);
+	},
+
+	getDimensions: function(options){
+		options = $merge({computeSize: false},options);
+		var dim = {};
+		var getSize = function(el, options){
+			return (options.computeSize)?el.getComputedSize(options):el.getSize();
+		};
+		var parent = this.getParent('body');
+		if (parent && this.getStyle('display') == 'none'){
+			dim = this.measure(function(){
+				return getSize(this, options);
+			});
+		} else if (parent){
+			try { //safari sometimes crashes here, so catch it
+				dim = getSize(this, options);
+			}catch(e){}
+		} else {
+			dim = {x: 0, y: 0};
+		}
+		return $chk(dim.x) ? $extend(dim, {width: dim.x, height: dim.y}) : $extend(dim, {x: dim.width, y: dim.height});
+	},
+
+	getComputedSize: function(options){
+		//legacy support for my stupid spelling error
+		if (options && options.plains) options.planes = options.plains;
+		
+		options = $merge({
+			styles: ['padding','border'],
+			planes: {
+				height: ['top','bottom'],
+				width: ['left','right']
+			},
+			mode: 'both'
+		}, options);
+		
+		var size = {width: 0,height: 0};
+		switch (options.mode){
+			case 'vertical':
+				delete size.width;
+				delete options.planes.width;
+				break;
+			case 'horizontal':
+				delete size.height;
+				delete options.planes.height;
+				break;
+		}
+		var getStyles = [];
+		//this function might be useful in other places; perhaps it should be outside this function?
+		$each(options.planes, function(plane, key){
+			plane.each(function(edge){
+				options.styles.each(function(style){
+					getStyles.push((style == 'border') ? style + '-' + edge + '-' + 'width' : style + '-' + edge);
+				});
+			});
+		});
+		var styles = {};
+		getStyles.each(function(style){ styles[style] = this.getComputedStyle(style); }, this);
+		var subtracted = [];
+		$each(options.planes, function(plane, key){ //keys: width, height, planes: ['left', 'right'], ['top','bottom']
+			var capitalized = key.capitalize();
+			size['total' + capitalized] = size['computed' + capitalized] = 0;
+			plane.each(function(edge){ //top, left, right, bottom
+				size['computed' + edge.capitalize()] = 0;
+				getStyles.each(function(style, i){ //padding, border, etc.
+					//'padding-left'.test('left') size['totalWidth'] = size['width'] + [padding-left]
+					if (style.test(edge)){
+						styles[style] = styles[style].toInt() || 0; //styles['padding-left'] = 5;
+						size['total' + capitalized] = size['total' + capitalized] + styles[style];
+						size['computed' + edge.capitalize()] = size['computed' + edge.capitalize()] + styles[style];
+					}
+					//if width != width (so, padding-left, for instance), then subtract that from the total
+					if (style.test(edge) && key != style &&
+						(style.test('border') || style.test('padding')) && !subtracted.contains(style)){
+						subtracted.push(style);
+						size['computed' + capitalized] = size['computed' + capitalized]-styles[style];
+					}
+				});
+			});
+		});
+
+		['Width', 'Height'].each(function(value){
+			var lower = value.toLowerCase();
+			if(!$chk(size[lower])) return;
+
+			size[lower] = size[lower] + this['offset' + value] + size['computed' + value];
+			size['total' + value] = size[lower] + size['total' + value];
+			delete size['computed' + value];
+		}, this);
+
+		return $extend(styles, size);
+	}
+
+});
+
+/*
+---
+
+script: Element.Position.js
+
+name: Element.Position
+
+description: Extends the Element native object to include methods useful positioning elements relative to others.
+
+license: MIT-style license
+
+authors:
+  - Aaron Newton
+
+requires:
+  - Core/Element.Dimensions
+  - /Element.Measure
+
+provides: [Element.Position]
+
+...
+*/
+
+(function(){
+
+var original = Element.prototype.position;
+
+Element.implement({
+
+	position: function(options){
+		//call original position if the options are x/y values
+		if (options && ($defined(options.x) || $defined(options.y))) return original ? original.apply(this, arguments) : this;
+		$each(options||{}, function(v, k){ if (!$defined(v)) delete options[k]; });
+		options = $merge({
+			// minimum: { x: 0, y: 0 },
+			// maximum: { x: 0, y: 0},
+			relativeTo: document.body,
+			position: {
+				x: 'center', //left, center, right
+				y: 'center' //top, center, bottom
+			},
+			edge: false,
+			offset: {x: 0, y: 0},
+			returnPos: false,
+			relFixedPosition: false,
+			ignoreMargins: false,
+			ignoreScroll: false,
+			allowNegative: false
+		}, options);
+		//compute the offset of the parent positioned element if this element is in one
+		var parentOffset = {x: 0, y: 0}, 
+				parentPositioned = false;
+		/* dollar around getOffsetParent should not be necessary, but as it does not return
+		 * a mootools extended element in IE, an error occurs on the call to expose. See:
+		 * http://mootools.lighthouseapp.com/projects/2706/tickets/333-element-getoffsetparent-inconsistency-between-ie-and-other-browsers */
+		var offsetParent = this.measure(function(){
+			return document.id(this.getOffsetParent());
+		});
+		if (offsetParent && offsetParent != this.getDocument().body){
+			parentOffset = offsetParent.measure(function(){
+				return this.getPosition();
+			});
+			parentPositioned = offsetParent != document.id(options.relativeTo);
+			options.offset.x = options.offset.x - parentOffset.x;
+			options.offset.y = options.offset.y - parentOffset.y;
+		}
+		//upperRight, bottomRight, centerRight, upperLeft, bottomLeft, centerLeft
+		//topRight, topLeft, centerTop, centerBottom, center
+		var fixValue = function(option){
+			if ($type(option) != 'string') return option;
+			option = option.toLowerCase();
+			var val = {};
+			
+			if (option.test('left')) val.x = 'left';
+			else if (option.test('right')) val.x = 'right';
+			else val.x = 'center';
+			
+			if (option.test('upper') || option.test('top')) val.y = 'top';
+			else if (option.test('bottom')) val.y = 'bottom';
+			else val.y = 'center';
+			
+			return val;
+		};
+		options.edge = fixValue(options.edge);
+		options.position = fixValue(options.position);
+		if (!options.edge){
+			if (options.position.x == 'center' && options.position.y == 'center') options.edge = {x:'center', y:'center'};
+			else options.edge = {x:'left', y:'top'};
+		}
+
+		this.setStyle('position', 'absolute');
+		var rel = document.id(options.relativeTo) || document.body,
+				calc = rel == document.body ? window.getScroll() : rel.getPosition(),
+				top = calc.y, left = calc.x;
+
+		var dim = this.getDimensions({computeSize: true, styles:['padding', 'border','margin']});
+		var pos = {},
+				prefY = options.offset.y,
+				prefX = options.offset.x,
+				winSize = window.getSize();
+		switch(options.position.x){
+			case 'left':
+				pos.x = left + prefX;
+				break;
+			case 'right':
+				pos.x = left + prefX + rel.offsetWidth;
+				break;
+			default: //center
+				pos.x = left + ((rel == document.body ? winSize.x : rel.offsetWidth)/2) + prefX;
+				break;
+		}
+		switch(options.position.y){
+			case 'top':
+				pos.y = top + prefY;
+				break;
+			case 'bottom':
+				pos.y = top + prefY + rel.offsetHeight;
+				break;
+			default: //center
+				pos.y = top + ((rel == document.body ? winSize.y : rel.offsetHeight)/2) + prefY;
+				break;
+		}
+		if (options.edge){
+			var edgeOffset = {};
+
+			switch(options.edge.x){
+				case 'left':
+					edgeOffset.x = 0;
+					break;
+				case 'right':
+					edgeOffset.x = -dim.x-dim.computedRight-dim.computedLeft;
+					break;
+				default: //center
+					edgeOffset.x = -(dim.totalWidth/2);
+					break;
+			}
+			switch(options.edge.y){
+				case 'top':
+					edgeOffset.y = 0;
+					break;
+				case 'bottom':
+					edgeOffset.y = -dim.y-dim.computedTop-dim.computedBottom;
+					break;
+				default: //center
+					edgeOffset.y = -(dim.totalHeight/2);
+					break;
+			}
+			pos.x += edgeOffset.x;
+			pos.y += edgeOffset.y;
+		}
+		pos = {
+			left: ((pos.x >= 0 || parentPositioned || options.allowNegative) ? pos.x : 0).toInt(),
+			top: ((pos.y >= 0 || parentPositioned || options.allowNegative) ? pos.y : 0).toInt()
+		};
+		var xy = {left: 'x', top: 'y'};
+		['minimum', 'maximum'].each(function(minmax) {
+			['left', 'top'].each(function(lr) {
+				var val = options[minmax] ? options[minmax][xy[lr]] : null;
+				if (val != null && ((minmax == 'minimum') ? pos[lr] < val: pos[lr] > val)) pos[lr] = val;
+			});
+		});
+		if (rel.getStyle('position') == 'fixed' || options.relFixedPosition){
+			var winScroll = window.getScroll();
+			pos.top+= winScroll.y;
+			pos.left+= winScroll.x;
+		}
+		var relScroll = rel.getScroll();
+		if (options.ignoreScroll) {
+			pos.top -= relScroll.y;
+			pos.left -= relScroll.x;
+		} else {
+			pos.top += relScroll.y;
+			pos.left += relScroll.x;
+		}
+		if (options.ignoreMargins) {
+			pos.left += (
+				options.edge.x == 'right' ? dim['margin-right'] : 
+				options.edge.x == 'center' ? -dim['margin-left'] + ((dim['margin-right'] + dim['margin-left'])/2) : 
+					- dim['margin-left']
+			);
+			pos.top += (
+				options.edge.y == 'bottom' ? dim['margin-bottom'] : 
+				options.edge.y == 'center' ? -dim['margin-top'] + ((dim['margin-bottom'] + dim['margin-top'])/2) : 
+					- dim['margin-top']
+			);
+		}
+		pos.left = Math.ceil(pos.left);
+		pos.top = Math.ceil(pos.top);
+		if (options.returnPos) return pos;
+		else this.setStyles(pos);
+		return this;
+	}
+
+});
+
+})();
+
+
+/*
+---
+
+script: Element.Shortcuts.js
+
+name: Element.Shortcuts
+
+description: Extends the Element native object to include some shortcut methods.
+
+license: MIT-style license
+
+authors:
+  - Aaron Newton
+
+requires:
+  - Core/Element.Style
+  - /MooTools.More
+
+provides: [Element.Shortcuts]
+
+...
+*/
+
+Element.implement({
+
+	isDisplayed: function(){
+		return this.getStyle('display') != 'none';
+	},
+
+	isVisible: function(){
+		var w = this.offsetWidth,
+			h = this.offsetHeight;
+		return (w == 0 && h == 0) ? false : (w > 0 && h > 0) ? true : this.style.display != 'none';
+	},
+
+	toggle: function(){
+		return this[this.isDisplayed() ? 'hide' : 'show']();
+	},
+
+	hide: function(){
+		var d;
+		try {
+			//IE fails here if the element is not in the dom
+			d = this.getStyle('display');
+		} catch(e){}
+		if (d == "none") return this;
+		return this.store('element:_originalDisplay', d || '').setStyle('display', 'none');
+	},
+
+	show: function(display){
+		if (!display && this.isDisplayed()) return this;
+		display = display || this.retrieve('element:_originalDisplay') || 'block';
+		return this.setStyle('display', (display == 'none') ? 'block' : display);
+	},
+
+	swapClass: function(remove, add){
+		return this.removeClass(remove).addClass(add);
+	}
+});
+
+Document.implement({
+	clearSelection: function(){
+		if (document.selection && document.selection.empty) {
+			document.selection.empty();
+		} else if (window.getSelection) {
+			var selection = window.getSelection();
+			if (selection && selection.removeAllRanges) selection.removeAllRanges();
+		}
+	}
+});
+
+/*
+---
+
+script: Fx.Elements.js
+
+name: Fx.Elements
+
+description: Effect to change any number of CSS properties of any number of Elements.
+
+license: MIT-style license
+
+authors:
+  - Valerio Proietti
+
+requires:
+  - Core/Fx.CSS
+  - /MooTools.More
+
+provides: [Fx.Elements]
+
+...
+*/
+
+Fx.Elements = new Class({
+
+	Extends: Fx.CSS,
+
+	initialize: function(elements, options){
+		this.elements = this.subject = $$(elements);
+		this.parent(options);
+	},
+
+	compute: function(from, to, delta){
+		var now = {};
+
+		for (var i in from){
+			var iFrom = from[i], iTo = to[i], iNow = now[i] = {};
+			for (var p in iFrom) iNow[p] = this.parent(iFrom[p], iTo[p], delta);
+		}
+
+		return now;
+	},
+
+	set: function(now){
+		for (var i in now){
+			if (!this.elements[i]) continue;
+
+			var iNow = now[i];
+			for (var p in iNow) this.render(this.elements[i], p, iNow[p], this.options.unit);
+		}
+
+		return this;
+	},
+
+	start: function(obj){
+		if (!this.check(obj)) return this;
+		var from = {}, to = {};
+
+		for (var i in obj){
+			if (!this.elements[i]) continue;
+
+			var iProps = obj[i], iFrom = from[i] = {}, iTo = to[i] = {};
+
+			for (var p in iProps){
+				var parsed = this.prepare(this.elements[i], p, iProps[p]);
+				iFrom[p] = parsed.from;
+				iTo[p] = parsed.to;
+			}
+		}
+
+		return this.parent(from, to);
+	}
+
+});
+
+
+/*
+---
+
+script: Fx.Accordion.js
+
+name: Fx.Accordion
+
+description: An Fx.Elements extension which allows you to easily create accordion type controls.
+
+license: MIT-style license
+
+authors:
+  - Valerio Proietti
+
+requires:
+  - Core/Element.Event
+  - /Fx.Elements
+
+provides: [Fx.Accordion]
+
+...
+*/
+
+Fx.Accordion = new Class({
+
+	Extends: Fx.Elements,
+
+	options: {/*
+		onActive: $empty(toggler, section),
+		onBackground: $empty(toggler, section),
+		*/
+		fixedHeight: false,
+		fixedWidth: false,
+		display: 0,
+		show: false,
+		height: true,
+		width: false,
+		opacity: true,
+		alwaysHide: false,
+		trigger: 'click',
+		initialDisplayFx: true,
+		returnHeightToAuto: true
+	},
+
+	initialize: function(){
+		var params = Array.link(arguments, {
+			'container': Element.type, //deprecated
+			'options': Object.type,
+			'togglers': $defined,
+			'elements': $defined
+		});
+		this.parent(params.elements, params.options);
+		this.togglers = $$(params.togglers);
+		this.previous = -1;
+		this.internalChain = new Chain();
+		if (this.options.alwaysHide) this.options.wait = true;
+		if ($chk(this.options.show)){
+			this.options.display = false;
+			this.previous = this.options.show;
+		}
+		if (this.options.start){
+			this.options.display = false;
+			this.options.show = false;
+		}
+		this.effects = {};
+		if (this.options.opacity) this.effects.opacity = 'fullOpacity';
+		if (this.options.width) this.effects.width = this.options.fixedWidth ? 'fullWidth' : 'offsetWidth';
+		if (this.options.height) this.effects.height = this.options.fixedHeight ? 'fullHeight' : 'scrollHeight';
+		for (var i = 0, l = this.togglers.length; i < l; i++) this.addSection(this.togglers[i], this.elements[i]);
+		this.elements.each(function(el, i){
+			if (this.options.show === i){
+				this.fireEvent('active', [this.togglers[i], el]);
+			} else {
+				for (var fx in this.effects) el.setStyle(fx, 0);
+			}
+		}, this);
+		if ($chk(this.options.display) || this.options.initialDisplayFx === false) this.display(this.options.display, this.options.initialDisplayFx);
+		if (this.options.fixedHeight !== false) this.options.returnHeightToAuto = false;
+		this.addEvent('complete', this.internalChain.callChain.bind(this.internalChain));
+	},
+
+	addSection: function(toggler, element){
+		toggler = document.id(toggler);
+		element = document.id(element);
+		var test = this.togglers.contains(toggler);
+		this.togglers.include(toggler);
+		this.elements.include(element);
+		var idx = this.togglers.indexOf(toggler);
+		var displayer = this.display.bind(this, idx);
+		toggler.store('accordion:display', displayer);
+		toggler.addEvent(this.options.trigger, displayer);
+		if (this.options.height) element.setStyles({'padding-top': 0, 'border-top': 'none', 'padding-bottom': 0, 'border-bottom': 'none'});
+		if (this.options.width) element.setStyles({'padding-left': 0, 'border-left': 'none', 'padding-right': 0, 'border-right': 'none'});
+		element.fullOpacity = 1;
+		if (this.options.fixedWidth) element.fullWidth = this.options.fixedWidth;
+		if (this.options.fixedHeight) element.fullHeight = this.options.fixedHeight;
+		element.setStyle('overflow', 'hidden');
+		if (!test){
+			for (var fx in this.effects) element.setStyle(fx, 0);
+		}
+		return this;
+	},
+
+	removeSection: function(toggler, displayIndex) {
+		var idx = this.togglers.indexOf(toggler);
+		var element = this.elements[idx];
+		var remover = function(){
+			this.togglers.erase(toggler);
+			this.elements.erase(element);
+			this.detach(toggler);
+		}.bind(this);
+		if (this.now == idx || displayIndex != undefined) this.display($pick(displayIndex, idx - 1 >= 0 ? idx - 1 : 0)).chain(remover);
+		else remover();
+		return this;
+	},
+
+	detach: function(toggler){
+		var remove = function(toggler) {
+			toggler.removeEvent(this.options.trigger, toggler.retrieve('accordion:display'));
+		}.bind(this);
+		if (!toggler) this.togglers.each(remove);
+		else remove(toggler);
+		return this;
+	},
+
+	display: function(index, useFx){
+		if (!this.check(index, useFx)) return this;
+		useFx = $pick(useFx, true);
+		index = ($type(index) == 'element') ? this.elements.indexOf(index) : index;
+		if (index == this.previous && !this.options.alwaysHide) return this;
+		if (this.options.returnHeightToAuto){
+			var prev = this.elements[this.previous];
+			if (prev && !this.selfHidden){
+				for (var fx in this.effects){
+					prev.setStyle(fx, prev[this.effects[fx]]);
+				}
+			}
+		}
+		if ((this.timer && this.options.wait) || (index === this.previous && !this.options.alwaysHide)) return this;
+		this.previous = index;
+		var obj = {};
+		this.elements.each(function(el, i){
+			obj[i] = {};
+			var hide;
+			if (i != index){
+				hide = true;
+			} else if (this.options.alwaysHide && ((el.offsetHeight > 0 && this.options.height) || el.offsetWidth > 0 && this.options.width)){
+				hide = true;
+				this.selfHidden = true;
+			}
+			this.fireEvent(hide ? 'background' : 'active', [this.togglers[i], el]);
+			for (var fx in this.effects) obj[i][fx] = hide ? 0 : el[this.effects[fx]];
+		}, this);
+		this.internalChain.clearChain();
+		this.internalChain.chain(function(){
+			if (this.options.returnHeightToAuto && !this.selfHidden){
+				var el = this.elements[index];
+				if (el) el.setStyle('height', 'auto');
+			};
+		}.bind(this));
+		return useFx ? this.start(obj) : this.set(obj);
+	}
+
+});
+
+/*
+	Compatibility with 1.2.0
+*/
+var Accordion = new Class({
+
+	Extends: Fx.Accordion,
+
+	initialize: function(){
+		this.parent.apply(this, arguments);
+		var params = Array.link(arguments, {'container': Element.type});
+		this.container = params.container;
+	},
+
+	addSection: function(toggler, element, pos){
+		toggler = document.id(toggler);
+		element = document.id(element);
+		var test = this.togglers.contains(toggler);
+		var len = this.togglers.length;
+		if (len && (!test || pos)){
+			pos = $pick(pos, len - 1);
+			toggler.inject(this.togglers[pos], 'before');
+			element.inject(toggler, 'after');
+		} else if (this.container && !test){
+			toggler.inject(this.container);
+			element.inject(this.container);
+		}
+		return this.parent.apply(this, arguments);
+	}
+
+});
+
+/*
+---
+
+script: Fx.Move.js
+
+name: Fx.Move
+
+description: Defines Fx.Move, a class that works with Element.Position.js to transition an element from one location to another.
+
+license: MIT-style license
+
+authors:
+  - Aaron Newton
+
+requires:
+  - Core/Fx.Morph
+  - /Element.Position
+
+provides: [Fx.Move]
+
+...
+*/
+
+Fx.Move = new Class({
+
+	Extends: Fx.Morph,
+
+	options: {
+		relativeTo: document.body,
+		position: 'center',
+		edge: false,
+		offset: {x: 0, y: 0}
+	},
+
+	start: function(destination){
+		var element = this.element,
+			topLeft = element.getStyles('top', 'left');
+		if (topLeft.top == 'auto' || topLeft.left == 'auto'){
+			element.setPosition(element.getPosition(element.getOffsetParent()));
+		}
+		return this.parent(element.position($merge(this.options, destination, {returnPos: true})));
+	}
+
+});
+
+Element.Properties.move = {
+
+	set: function(options){
+		var morph = this.retrieve('move');
+		if (morph) morph.cancel();
+		return this.eliminate('move').store('move:options', $extend({link: 'cancel'}, options));
+	},
+
+	get: function(options){
+		if (options || !this.retrieve('move')){
+			if (options || !this.retrieve('move:options')) this.set('move', options);
+			this.store('move', new Fx.Move(this, this.retrieve('move:options')));
+		}
+		return this.retrieve('move');
+	}
+
+};
+
+Element.implement({
+
+	move: function(options){
+		this.get('move').start(options);
+		return this;
+	}
+
+});
+
+
+/*
+---
+
+script: Fx.Reveal.js
+
+name: Fx.Reveal
+
+description: Defines Fx.Reveal, a class that shows and hides elements with a transition.
+
+license: MIT-style license
+
+authors:
+  - Aaron Newton
+
+requires:
+  - Core/Fx.Morph
+  - /Element.Shortcuts
+  - /Element.Measure
+
+provides: [Fx.Reveal]
+
+...
+*/
+
+Fx.Reveal = new Class({
+
+	Extends: Fx.Morph,
+
+	options: {/*	  
+		onShow: $empty(thisElement),
+		onHide: $empty(thisElement),
+		onComplete: $empty(thisElement),
+		heightOverride: null,
+		widthOverride: null, */
+		link: 'cancel',
+		styles: ['padding', 'border', 'margin'],
+		transitionOpacity: !Browser.Engine.trident4,
+		mode: 'vertical',
+		display: function(){
+			return this.element.get('tag') != 'tr' ? 'block' : 'table-row';
+		},
+		hideInputs: Browser.Engine.trident ? 'select, input, textarea, object, embed' : false,
+		opacity: 1
+	},
+
+	dissolve: function(){
+		try {
+			if (!this.hiding && !this.showing){
+				if (this.element.getStyle('display') != 'none'){
+					this.hiding = true;
+					this.showing = false;
+					this.hidden = true;
+					this.cssText = this.element.style.cssText;
+					var startStyles = this.element.getComputedSize({
+						styles: this.options.styles,
+						mode: this.options.mode
+					});
+					this.element.setStyle('display', $lambda(this.options.display).apply(this));
+					if (this.options.transitionOpacity) startStyles.opacity = this.options.opacity;
+					var zero = {};
+					$each(startStyles, function(style, name){
+						zero[name] = [style, 0];
+					}, this);
+					this.element.setStyle('overflow', 'hidden');
+					var hideThese = this.options.hideInputs ? this.element.getElements(this.options.hideInputs) : null;
+					this.$chain.unshift(function(){
+						if (this.hidden){
+							this.hiding = false;
+							$each(startStyles, function(style, name){
+								startStyles[name] = style;
+							}, this);
+							this.element.style.cssText = this.cssText;
+							this.element.setStyle('display', 'none');
+							if (hideThese) hideThese.setStyle('visibility', 'visible');
+						}
+						this.fireEvent('hide', this.element);
+						this.callChain();
+					}.bind(this));
+					if (hideThese) hideThese.setStyle('visibility', 'hidden');
+					this.start(zero);
+				} else {
+					this.callChain.delay(10, this);
+					this.fireEvent('complete', this.element);
+					this.fireEvent('hide', this.element);
+				}
+			} else if (this.options.link == 'chain'){
+				this.chain(this.dissolve.bind(this));
+			} else if (this.options.link == 'cancel' && !this.hiding){
+				this.cancel();
+				this.dissolve();
+			}
+		} catch(e){
+			this.hiding = false;
+			this.element.setStyle('display', 'none');
+			this.callChain.delay(10, this);
+			this.fireEvent('complete', this.element);
+			this.fireEvent('hide', this.element);
+		}
+		return this;
+	},
+
+	reveal: function(){
+		try {
+			if (!this.showing && !this.hiding){
+				if (this.element.getStyle('display') == 'none'){
+					this.showing = true;
+					this.hiding = this.hidden =  false;
+					var startStyles;
+					this.cssText = this.element.style.cssText;
+					//toggle display, but hide it
+					this.element.measure(function(){
+						//create the styles for the opened/visible state
+						startStyles = this.element.getComputedSize({
+							styles: this.options.styles,
+							mode: this.options.mode
+						});
+					}.bind(this));
+					$each(startStyles, function(style, name){
+						startStyles[name] = style;
+					});
+					//if we're overridding height/width
+					if ($chk(this.options.heightOverride)) startStyles.height = this.options.heightOverride.toInt();
+					if ($chk(this.options.widthOverride)) startStyles.width = this.options.widthOverride.toInt();
+					if (this.options.transitionOpacity) {
+						this.element.setStyle('opacity', 0);
+						startStyles.opacity = this.options.opacity;
+					}
+					//create the zero state for the beginning of the transition
+					var zero = {
+						height: 0,
+						display: $lambda(this.options.display).apply(this)
+					};
+					$each(startStyles, function(style, name){ zero[name] = 0; });
+					//set to zero
+					this.element.setStyles($merge(zero, {overflow: 'hidden'}));
+					//hide inputs
+					var hideThese = this.options.hideInputs ? this.element.getElements(this.options.hideInputs) : null;
+					if (hideThese) hideThese.setStyle('visibility', 'hidden');
+					//start the effect
+					this.start(startStyles);
+					this.$chain.unshift(function(){
+						this.element.style.cssText = this.cssText;
+						this.element.setStyle('display', $lambda(this.options.display).apply(this));
+						if (!this.hidden) this.showing = false;
+						if (hideThese) hideThese.setStyle('visibility', 'visible');
+						this.callChain();
+						this.fireEvent('show', this.element);
+					}.bind(this));
+				} else {
+					this.callChain();
+					this.fireEvent('complete', this.element);
+					this.fireEvent('show', this.element);
+				}
+			} else if (this.options.link == 'chain'){
+				this.chain(this.reveal.bind(this));
+			} else if (this.options.link == 'cancel' && !this.showing){
+				this.cancel();
+				this.reveal();
+			}
+		} catch(e){
+			this.element.setStyles({
+				display: $lambda(this.options.display).apply(this),
+				visiblity: 'visible',
+				opacity: this.options.opacity
+			});
+			this.showing = false;
+			this.callChain.delay(10, this);
+			this.fireEvent('complete', this.element);
+			this.fireEvent('show', this.element);
+		}
+		return this;
+	},
+
+	toggle: function(){
+		if (this.element.getStyle('display') == 'none'){
+			this.reveal();
+		} else {
+			this.dissolve();
+		}
+		return this;
+	},
+
+	cancel: function(){
+		this.parent.apply(this, arguments);
+		this.element.style.cssText = this.cssText;
+		this.hiding = false;
+		this.showing = false;
+		return this;
+	}
+
+});
+
+Element.Properties.reveal = {
+
+	set: function(options){
+		var reveal = this.retrieve('reveal');
+		if (reveal) reveal.cancel();
+		return this.eliminate('reveal').store('reveal:options', options);
+	},
+
+	get: function(options){
+		if (options || !this.retrieve('reveal')){
+			if (options || !this.retrieve('reveal:options')) this.set('reveal', options);
+			this.store('reveal', new Fx.Reveal(this, this.retrieve('reveal:options')));
+		}
+		return this.retrieve('reveal');
+	}
+
+};
+
+Element.Properties.dissolve = Element.Properties.reveal;
+
+Element.implement({
+
+	reveal: function(options){
+		this.get('reveal', options).reveal();
+		return this;
+	},
+
+	dissolve: function(options){
+		this.get('reveal', options).dissolve();
+		return this;
+	},
+
+	nix: function(){
+		var params = Array.link(arguments, {destroy: Boolean.type, options: Object.type});
+		this.get('reveal', params.options).dissolve().chain(function(){
+			this[params.destroy ? 'destroy' : 'dispose']();
+		}.bind(this));
+		return this;
+	},
+
+	wink: function(){
+		var params = Array.link(arguments, {duration: Number.type, options: Object.type});
+		var reveal = this.get('reveal', params.options);
+		reveal.reveal().chain(function(){
+			(function(){
+				reveal.dissolve();
+			}).delay(params.duration || 2000);
+		});
+	}
+
+
+});
+
+/*
+---
+
+script: Fx.Scroll.js
+
+name: Fx.Scroll
+
+description: Effect to smoothly scroll any element, including the window.
+
+license: MIT-style license
+
+authors:
+  - Valerio Proietti
+
+requires:
+  - Core/Fx
+  - Core/Element.Event
+  - Core/Element.Dimensions
+  - /MooTools.More
+
+provides: [Fx.Scroll]
+
+...
+*/
+
+Fx.Scroll = new Class({
+
+	Extends: Fx,
+
+	options: {
+		offset: {x: 0, y: 0},
+		wheelStops: true
+	},
+
+	initialize: function(element, options){
+		this.element = this.subject = document.id(element);
+		this.parent(options);
+		var cancel = this.cancel.bind(this, false);
+
+		if ($type(this.element) != 'element') this.element = document.id(this.element.getDocument().body);
+
+		var stopper = this.element;
+
+		if (this.options.wheelStops){
+			this.addEvent('start', function(){
+				stopper.addEvent('mousewheel', cancel);
+			}, true);
+			this.addEvent('complete', function(){
+				stopper.removeEvent('mousewheel', cancel);
+			}, true);
+		}
+	},
+
+	set: function(){
+		var now = Array.flatten(arguments);
+		if (Browser.Engine.gecko) now = [Math.round(now[0]), Math.round(now[1])];
+		this.element.scrollTo(now[0] + this.options.offset.x, now[1] + this.options.offset.y);
+	},
+
+	compute: function(from, to, delta){
+		return [0, 1].map(function(i){
+			return Fx.compute(from[i], to[i], delta);
+		});
+	},
+
+	start: function(x, y){
+		if (!this.check(x, y)) return this;
+		var scrollSize = this.element.getScrollSize(),
+			scroll = this.element.getScroll(), 
+			values = {x: x, y: y};
+		for (var z in values){
+			var max = scrollSize[z];
+			if ($chk(values[z])) values[z] = ($type(values[z]) == 'number') ? values[z] : max;
+			else values[z] = scroll[z];
+			values[z] += this.options.offset[z];
+		}
+		return this.parent([scroll.x, scroll.y], [values.x, values.y]);
+	},
+
+	toTop: function(){
+		return this.start(false, 0);
+	},
+
+	toLeft: function(){
+		return this.start(0, false);
+	},
+
+	toRight: function(){
+		return this.start('right', false);
+	},
+
+	toBottom: function(){
+		return this.start(false, 'bottom');
+	},
+
+	toElement: function(el){
+		var position = document.id(el).getPosition(this.element);
+		return this.start(position.x, position.y);
+	},
+
+	scrollIntoView: function(el, axes, offset){
+		axes = axes ? $splat(axes) : ['x','y'];
+		var to = {};
+		el = document.id(el);
+		var pos = el.getPosition(this.element);
+		var size = el.getSize();
+		var scroll = this.element.getScroll();
+		var containerSize = this.element.getSize();
+		var edge = {
+			x: pos.x + size.x,
+			y: pos.y + size.y
+		};
+		['x','y'].each(function(axis) {
+			if (axes.contains(axis)) {
+				if (edge[axis] > scroll[axis] + containerSize[axis]) to[axis] = edge[axis] - containerSize[axis];
+				if (pos[axis] < scroll[axis]) to[axis] = pos[axis];
+			}
+			if (to[axis] == null) to[axis] = scroll[axis];
+			if (offset && offset[axis]) to[axis] = to[axis] + offset[axis];
+		}, this);
+		if (to.x != scroll.x || to.y != scroll.y) this.start(to.x, to.y);
+		return this;
+	},
+
+	scrollToCenter: function(el, axes, offset){
+		axes = axes ? $splat(axes) : ['x', 'y'];
+		el = $(el);
+		var to = {},
+			pos = el.getPosition(this.element),
+			size = el.getSize(),
+			scroll = this.element.getScroll(),
+			containerSize = this.element.getSize(),
+			edge = {
+				x: pos.x + size.x,
+				y: pos.y + size.y
+			};
+
+		['x','y'].each(function(axis){
+			if(axes.contains(axis)){
+				to[axis] = pos[axis] - (containerSize[axis] - size[axis])/2;
+			}
+			if(to[axis] == null) to[axis] = scroll[axis];
+			if(offset && offset[axis]) to[axis] = to[axis] + offset[axis];
+		}, this);
+		if (to.x != scroll.x || to.y != scroll.y) this.start(to.x, to.y);
+		return this;
+	}
+
+});
+
+
+/*
+---
+
+script: Fx.Slide.js
+
+name: Fx.Slide
+
+description: Effect to slide an element in and out of view.
+
+license: MIT-style license
+
+authors:
+  - Valerio Proietti
+
+requires:
+  - Core/Fx
+  - Core/Element.Style
+  - /MooTools.More
+
+provides: [Fx.Slide]
+
+...
+*/
+
+Fx.Slide = new Class({
+
+	Extends: Fx,
+
+	options: {
+		mode: 'vertical',
+		wrapper: false,
+		hideOverflow: true,
+		resetHeight: false
+	},
+
+	initialize: function(element, options){
+		this.addEvent('complete', function(){
+			this.open = (this.wrapper['offset' + this.layout.capitalize()] != 0);
+			if (this.open && this.options.resetHeight) this.wrapper.setStyle('height', '');
+			if (this.open && Browser.Engine.webkit419) this.element.dispose().inject(this.wrapper);
+		}, true);
+		this.element = this.subject = document.id(element);
+		this.parent(options);
+		var wrapper = this.element.retrieve('wrapper');
+		var styles = this.element.getStyles('margin', 'position', 'overflow');
+		if (this.options.hideOverflow) styles = $extend(styles, {overflow: 'hidden'});
+		if (this.options.wrapper) wrapper = document.id(this.options.wrapper).setStyles(styles);
+		this.wrapper = wrapper || new Element('div', {
+			styles: styles
+		}).wraps(this.element);
+		this.element.store('wrapper', this.wrapper).setStyle('margin', 0);
+		this.now = [];
+		this.open = true;
+	},
+
+	vertical: function(){
+		this.margin = 'margin-top';
+		this.layout = 'height';
+		this.offset = this.element.offsetHeight;
+	},
+
+	horizontal: function(){
+		this.margin = 'margin-left';
+		this.layout = 'width';
+		this.offset = this.element.offsetWidth;
+	},
+
+	set: function(now){
+		this.element.setStyle(this.margin, now[0]);
+		this.wrapper.setStyle(this.layout, now[1]);
+		return this;
+	},
+
+	compute: function(from, to, delta){
+		return [0, 1].map(function(i){
+			return Fx.compute(from[i], to[i], delta);
+		});
+	},
+
+	start: function(how, mode){
+		if (!this.check(how, mode)) return this;
+		this[mode || this.options.mode]();
+		var margin = this.element.getStyle(this.margin).toInt();
+		var layout = this.wrapper.getStyle(this.layout).toInt();
+		var caseIn = [[margin, layout], [0, this.offset]];
+		var caseOut = [[margin, layout], [-this.offset, 0]];
+		var start;
+		switch (how){
+			case 'in': start = caseIn; break;
+			case 'out': start = caseOut; break;
+			case 'toggle': start = (layout == 0) ? caseIn : caseOut;
+		}
+		return this.parent(start[0], start[1]);
+	},
+
+	slideIn: function(mode){
+		return this.start('in', mode);
+	},
+
+	slideOut: function(mode){
+		return this.start('out', mode);
+	},
+
+	hide: function(mode){
+		this[mode || this.options.mode]();
+		this.open = false;
+		return this.set([-this.offset, 0]);
+	},
+
+	show: function(mode){
+		this[mode || this.options.mode]();
+		this.open = true;
+		return this.set([0, this.offset]);
+	},
+
+	toggle: function(mode){
+		return this.start('toggle', mode);
+	}
+
+});
+
+Element.Properties.slide = {
+
+	set: function(options){
+		var slide = this.retrieve('slide');
+		if (slide) slide.cancel();
+		return this.eliminate('slide').store('slide:options', $extend({link: 'cancel'}, options));
+	},
+
+	get: function(options){
+		if (options || !this.retrieve('slide')){
+			if (options || !this.retrieve('slide:options')) this.set('slide', options);
+			this.store('slide', new Fx.Slide(this, this.retrieve('slide:options')));
+		}
+		return this.retrieve('slide');
+	}
+
+};
+
+Element.implement({
+
+	slide: function(how, mode){
+		how = how || 'toggle';
+		var slide = this.get('slide'), toggle;
+		switch (how){
+			case 'hide': slide.hide(mode); break;
+			case 'show': slide.show(mode); break;
+			case 'toggle':
+				var flag = this.retrieve('slide:flag', slide.open);
+				slide[flag ? 'slideOut' : 'slideIn'](mode);
+				this.store('slide:flag', !flag);
+				toggle = true;
+			break;
+			default: slide.start(how, mode);
+		}
+		if (!toggle) this.eliminate('slide:flag');
+		return this;
+	}
+
+});
+
+
+/*
+---
+
+script: Fx.SmoothScroll.js
+
+name: Fx.SmoothScroll
+
+description: Class for creating a smooth scrolling effect to all internal links on the page.
+
+license: MIT-style license
+
+authors:
+  - Valerio Proietti
+
+requires:
+  - Core/Selectors
+  - /Fx.Scroll
+
+provides: [Fx.SmoothScroll]
+
+...
+*/
+
+var SmoothScroll = Fx.SmoothScroll = new Class({
+
+	Extends: Fx.Scroll,
+
+	initialize: function(options, context){
+		context = context || document;
+		this.doc = context.getDocument();
+		var win = context.getWindow();
+		this.parent(this.doc, options);
+		this.links = $$(this.options.links || this.doc.links);
+		var location = win.location.href.match(/^[^#]*/)[0] + '#';
+		this.links.each(function(link){
+			if (link.href.indexOf(location) != 0) {return;}
+			var anchor = link.href.substr(location.length);
+			if (anchor) this.useLink(link, anchor);
+		}, this);
+		if (!Browser.Engine.webkit419) {
+			this.addEvent('complete', function(){
+				win.location.hash = this.anchor;
+			}, true);
+		}
+	},
+
+	useLink: function(link, anchor){
+		var el;
+		link.addEvent('click', function(event){
+			if (el !== false && !el) el = document.id(anchor) || this.doc.getElement('a[name=' + anchor + ']');
+			if (el) {
+				event.preventDefault();
+				this.anchor = anchor;
+				this.toElement(el).chain(function(){
+					this.fireEvent('scrolledTo', [link, el]);
+				}.bind(this));
+				link.blur();
+			}
+		}.bind(this));
+	}
+});
+
+/*
+---
+
+script: Fx.Sort.js
+
+name: Fx.Sort
+
+description: Defines Fx.Sort, a class that reorders lists with a transition.
+
+license: MIT-style license
+
+authors:
+  - Aaron Newton
+
+requires:
+  - Core/Element.Dimensions
+  - /Fx.Elements
+  - /Element.Measure
+
+provides: [Fx.Sort]
+
+...
+*/
+
+Fx.Sort = new Class({
+
+	Extends: Fx.Elements,
+
+	options: {
+		mode: 'vertical'
+	},
+
+	initialize: function(elements, options){
+		this.parent(elements, options);
+		this.elements.each(function(el){
+			if (el.getStyle('position') == 'static') el.setStyle('position', 'relative');
+		});
+		this.setDefaultOrder();
+	},
+
+	setDefaultOrder: function(){
+		this.currentOrder = this.elements.map(function(el, index){
+			return index;
+		});
+	},
+
+	sort: function(newOrder){
+		if ($type(newOrder) != 'array') return false;
+		var top = 0,
+			left = 0,
+			next = {},
+			zero = {},
+			vert = this.options.mode == 'vertical';
+		var current = this.elements.map(function(el, index){
+			var size = el.getComputedSize({styles: ['border', 'padding', 'margin']});
+			var val;
+			if (vert){
+				val = {
+					top: top,
+					margin: size['margin-top'],
+					height: size.totalHeight
+				};
+				top += val.height - size['margin-top'];
+			} else {
+				val = {
+					left: left,
+					margin: size['margin-left'],
+					width: size.totalWidth
+				};
+				left += val.width;
+			}
+			var plane = vert ? 'top' : 'left';
+			zero[index] = {};
+			var start = el.getStyle(plane).toInt();
+			zero[index][plane] = start || 0;
+			return val;
+		}, this);
+		this.set(zero);
+		newOrder = newOrder.map(function(i){ return i.toInt(); });
+		if (newOrder.length != this.elements.length){
+			this.currentOrder.each(function(index){
+				if (!newOrder.contains(index)) newOrder.push(index);
+			});
+			if (newOrder.length > this.elements.length)
+				newOrder.splice(this.elements.length-1, newOrder.length - this.elements.length);
+		}
+		var margin = top = left = 0;
+		newOrder.each(function(item, index){
+			var newPos = {};
+			if (vert){
+				newPos.top = top - current[item].top - margin;
+				top += current[item].height;
+			} else {
+				newPos.left = left - current[item].left;
+				left += current[item].width;
+			}
+			margin = margin + current[item].margin;
+			next[item]=newPos;
+		}, this);
+		var mapped = {};
+		$A(newOrder).sort().each(function(index){
+			mapped[index] = next[index];
+		});
+		this.start(mapped);
+		this.currentOrder = newOrder;
+		return this;
+	},
+
+	rearrangeDOM: function(newOrder){
+		newOrder = newOrder || this.currentOrder;
+		var parent = this.elements[0].getParent();
+		var rearranged = [];
+		this.elements.setStyle('opacity', 0);
+		//move each element and store the new default order
+		newOrder.each(function(index){
+			rearranged.push(this.elements[index].inject(parent).setStyles({
+				top: 0,
+				left: 0
+			}));
+		}, this);
+		this.elements.setStyle('opacity', 1);
+		this.elements = $$(rearranged);
+		this.setDefaultOrder();
+		return this;
+	},
+
+	getDefaultOrder: function(){
+		return this.elements.map(function(el, index){
+			return index;
+		});
+	},
+
+	forward: function(){
+		return this.sort(this.getDefaultOrder());
+	},
+
+	backward: function(){
+		return this.sort(this.getDefaultOrder().reverse());
+	},
+
+	reverse: function(){
+		return this.sort(this.currentOrder.reverse());
+	},
+
+	sortByElements: function(elements){
+		return this.sort(elements.map(function(el){
+			return this.elements.indexOf(el);
+		}, this));
+	},
+
+	swap: function(one, two){
+		if ($type(one) == 'element') one = this.elements.indexOf(one);
+		if ($type(two) == 'element') two = this.elements.indexOf(two);
+		
+		var newOrder = $A(this.currentOrder);
+		newOrder[this.currentOrder.indexOf(one)] = two;
+		newOrder[this.currentOrder.indexOf(two)] = one;
+		return this.sort(newOrder);
+	}
+
+});
+
+/*
+---
+
+script: Request.JSONP.js
+
+name: Request.JSONP
+
+description: Defines Request.JSONP, a class for cross domain javascript via script injection.
+
+license: MIT-style license
+
+authors:
+  - Aaron Newton
+  - Guillermo Rauch
+
+requires:
+  - Core/Element
+  - Core/Request
+  - /Log
+
+provides: [Request.JSONP]
+
+...
+*/
+
+Request.JSONP = new Class({
+
+	Implements: [Chain, Events, Options, Log],
+
+	options: {/*
+		onRetry: $empty(intRetries),
+		onRequest: $empty(scriptElement),
+		onComplete: $empty(data),
+		onSuccess: $empty(data),
+		onCancel: $empty(),
+		log: false,
+		*/
+		url: '',
+		data: {},
+		retries: 0,
+		timeout: 0,
+		link: 'ignore',
+		callbackKey: 'callback',
+		injectScript: document.head
+	},
+
+	initialize: function(options){
+		this.setOptions(options);
+		if (this.options.log) this.enableLog();
+		this.running = false;
+		this.requests = 0;
+		this.triesRemaining = [];
+	},
+
+	check: function(){
+		if (!this.running) return true;
+		switch (this.options.link){
+			case 'cancel': this.cancel(); return true;
+			case 'chain': this.chain(this.caller.bind(this, arguments)); return false;
+		}
+		return false;
+	},
+
+	send: function(options){
+		if (!$chk(arguments[1]) && !this.check(options)) return this;
+
+		var type = $type(options), 
+				old = this.options, 
+				index = $chk(arguments[1]) ? arguments[1] : this.requests++;
+		if (type == 'string' || type == 'element') options = {data: options};
+
+		options = $extend({data: old.data, url: old.url}, options);
+
+		if (!$chk(this.triesRemaining[index])) this.triesRemaining[index] = this.options.retries;
+		var remaining = this.triesRemaining[index];
+
+		(function(){
+			var script = this.getScript(options);
+			this.log('JSONP retrieving script with url: ' + script.get('src'));
+			this.fireEvent('request', script);
+			this.running = true;
+
+			(function(){
+				if (remaining){
+					this.triesRemaining[index] = remaining - 1;
+					if (script){
+						script.destroy();
+						this.send(options, index).fireEvent('retry', this.triesRemaining[index]);
+					}
+				} else if(this.running && script && this.options.timeout){
+					script.destroy();
+					this.cancel().fireEvent('failure');
+				}
+			}).delay(this.options.timeout, this);
+		}).delay(Browser.Engine.trident ? 50 : 0, this);
+		return this;
+	},
+
+	cancel: function(){
+		if (!this.running) return this;
+		this.running = false;
+		this.fireEvent('cancel');
+		return this;
+	},
+
+	getScript: function(options){
+		var index = Request.JSONP.counter,
+				data;
+		Request.JSONP.counter++;
+
+		switch ($type(options.data)){
+			case 'element': data = document.id(options.data).toQueryString(); break;
+			case 'object': case 'hash': data = Hash.toQueryString(options.data);
+		}
+
+		var src = options.url + 
+			 (options.url.test('\\?') ? '&' :'?') + 
+			 (options.callbackKey || this.options.callbackKey) + 
+			 '=Request.JSONP.request_map.request_'+ index + 
+			 (data ? '&' + data : '');
+		if (src.length > 2083) this.log('JSONP '+ src +' will fail in Internet Explorer, which enforces a 2083 bytes length limit on URIs');
+
+		var script = new Element('script', {type: 'text/javascript', src: src});
+		Request.JSONP.request_map['request_' + index] = function(){ this.success(arguments, script); }.bind(this);
+		return script.inject(this.options.injectScript);
+	},
+
+	success: function(args, script){
+		if (!this.running) return false;
+		if (script) script.destroy();
+		this.running = false;
+		this.log('JSONP successfully retrieved: ', args);
+		this.fireEvent('complete', args).fireEvent('success', args).callChain();
+	}
+
+});
+
+Request.JSONP.counter = 0;
+Request.JSONP.request_map = {};
+
+
+/*
+---
+
+script: Form.Validator.Swedish.js
+
+name: Form.Validator.Swedish
+
+description: Form Validator messages for Swedish.
+
+license: MIT-style license
+
+authors:
+  - Martin Lundgren
+
+requires:
+  - /Lang
+
+provides: [Form.Validator.Swedish]
+
+...
+*/
+
+MooTools.lang.set('sv-SE', 'Form.Validator', {
+
+	required: 'Fältet är obligatoriskt.',
+	minLength: 'Ange minst {minLength} tecken (du angav {length} tecken).',
+	maxLength: 'Ange högst {maxLength} tecken (du angav {length} tecken). ',
+	integer: 'Ange ett heltal i fältet. Tal med decimaler (t.ex. 1,25) är inte tillåtna.',
+	numeric: 'Ange endast numeriska värden i detta fält (t.ex. "1" eller "1.1" eller "-1" eller "-1,1").',
+	digits: 'Använd endast siffror och skiljetecken i detta fält (till exempel ett telefonnummer med bindestreck tillåtet).',
+	alpha: 'Använd endast bokstäver (a-ö) i detta fält. Inga mellanslag eller andra tecken är tillåtna.',
+	alphanum: 'Använd endast bokstäver (a-ö) och siffror (0-9) i detta fält. Inga mellanslag eller andra tecken är tillåtna.',
+	dateSuchAs: 'Ange ett giltigt datum som t.ex. {date}',
+	dateInFormatMDY: 'Ange ett giltigt datum som t.ex. YYYY-MM-DD (i.e. "1999-12-31")',
+	email: 'Ange en giltig e-postadress. Till exempel "erik@domain.com".',
+	url: 'Ange en giltig webbadress som http://www.google.com.',
+	currencyDollar: 'Ange en giltig belopp. Exempelvis 100,00.',
+	oneRequired: 'Vänligen ange minst ett av dessa alternativ.',
+	errorPrefix: 'Fel: ',
+	warningPrefix: 'Varning: ',
+
+	// Form.Validator.Extras
+	noSpace: 'Det får inte finnas några mellanslag i detta fält.',
+	reqChkByNode: 'Inga objekt är valda.',
+	requiredChk: 'Detta är ett obligatoriskt fält.',
+	reqChkByName: 'Välj en {label}.',
+	match: 'Detta fält måste matcha {matchName}',
+	startDate: 'startdatumet',
+	endDate: 'slutdatum',
+	currendDate: 'dagens datum',
+	afterDate: 'Datumet bör vara samma eller senare än {label}.',
+	beforeDate: 'Datumet bör vara samma eller tidigare än {label}.',
+	startMonth: 'Välj en start månad',
+	sameMonth: 'Dessa två datum måste vara i samma månad - du måste ändra det ena eller det andra.'
+
+});
+
+
+/*
+---
+
+script: Form.Validator.Ukrainian.js
+
+name: Form.Validator.Ukrainian
+
+description: Form Validator messages in Ukrainian (utf-8).
+
+license: MIT-style license
+
+authors:
+  - Slik
+
+requires:
+  - /Lang
+
+provides: [Form.Validator.Ukrainian]
+
+...
+*/
+
+MooTools.lang.set('uk-UA', 'Form.Validator', {
+
+	required: 'Це поле повинне бути заповненим.',
+	minLength: 'Введіть хоча б {minLength} символів (Ви ввели {length}).',
+	maxLength: 'Кількість символів не може бути більше {maxLength} (Ви ввели {length}).',
+	integer: 'Введіть в це поле число. Дробові числа (наприклад 1.25) не дозволені.',
+	numeric: 'Введіть в це поле число (наприклад "1" або "1.1", або "-1", або "-1.1").',
+	digits: 'В цьому полі ви можете використовувати лише цифри і знаки пунктіації (наприклад, телефонний номер з знаками дефізу або з крапками).',
+	alpha: 'В цьому полі можна використовувати лише латинські літери (a-z). Пробіли і інші символи заборонені.',
+	alphanum: 'В цьому полі можна використовувати лише латинські літери (a-z) і цифри (0-9). Пробіли і інші символи заборонені.',
+	dateSuchAs: 'Введіть коректну дату {date}.',
+	dateInFormatMDY: 'Введіть дату в форматі ММ/ДД/РРРР (наприклад "12/31/2009").',
+	email: 'Введіть коректну адресу електронної пошти (наприклад "name@domain.com").',
+	url: 'Введіть коректне інтернет-посилання (наприклад http://www.google.com).',
+	currencyDollar: 'Введіть суму в доларах (наприклад "$100.00").',
+	oneRequired: 'Заповніть одне з полів.',
+	errorPrefix: 'Помилка: ',
+	warningPrefix: 'Увага: '
+
+});
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/corneeded.jsp
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/corneeded.jsp	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/corneeded.jsp	(revision 47450)
@@ -0,0 +1,25 @@
+<%@ page contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<%@ taglib prefix="s" uri="/struts-tags"%>
+<html>
+<head>
+<link href="jsps/style.css" rel="stylesheet" type="text/css" media="screen" />
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title><s:text name="corneeded.title"/></title>
+</head>
+<body>
+<div id="wrapper">
+	<jsp:include page="menu.jsp"/>
+	<div id="page">
+	<div id="page-bgtop">
+		<div id="content">
+			<s:actionerror/>
+			<br>
+			<s:text name="corneeded.back"/>
+		</div>
+		<div style="clear: both;">&nbsp;</div>
+	</div>
+	</div>
+</div>
+</body>
+</html>
\ No newline at end of file
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/table-images/right.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/table-images/right.png
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/table-images/right.png	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/table-images/right.png	(revision 47450)

Property changes on: modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/table-images/right.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/table-images/pattern.gif
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/table-images/pattern.gif
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/table-images/pattern.gif	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/table-images/pattern.gif	(revision 47450)

Property changes on: modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/table-images/pattern.gif
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/table-images/back.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/table-images/back.png
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/table-images/back.png	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/table-images/back.png	(revision 47450)

Property changes on: modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/table-images/back.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/table-images/left.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/table-images/left.png
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/table-images/left.png	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/table-images/left.png	(revision 47450)

Property changes on: modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/table-images/left.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/images/img07.jpg
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/images/img07.jpg
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/images/img07.jpg	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/images/img07.jpg	(revision 47450)

Property changes on: modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/images/img07.jpg
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/images/img02.jpg
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/images/img02.jpg
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/images/img02.jpg	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/images/img02.jpg	(revision 47450)

Property changes on: modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/images/img02.jpg
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/feedback.jsp
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/feedback.jsp	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/feedback.jsp	(revision 47450)
@@ -0,0 +1,45 @@
+<%@ page contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<%@ taglib prefix="s" uri="/struts-tags"%>
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<link href="jsps/style.css" rel="stylesheet" type="text/css" media="screen" />
+<title><s:text name="feedback.title"/></title>
+<link href="jsps/favicon.ico" rel="shortcut icon" type="image/x-icon" />
+</head>
+<body>
+<div id="wrapper">
+	<jsp:include page="menu.jsp"/>
+	<div id="page">
+		<div id="page-bgtop">
+			<div id="middle">
+                <div class="middle-b">
+                    <div class="background">
+                        <div class="main">
+                        <div id="main_container" class="clearfix">
+                                <div id="mainmiddle" class="floatbox">
+                                    <h2 class="title"><s:text name="feedback.title"/></h2>
+                                    <s:actionerror/>
+                                    <s:text name="feedback.loggedin"/>
+                                    <div class="entry">
+                                        <s:form action="sendFeedback">
+                                            <s:select name="reason" list="#{'validator form: feedback':'Feedback', 'validator form: bug':'Report a Bug', 'validator form: other':'Other'}" key="feedback.reason"/>
+                                            <s:textarea name="message" cols="50" rows="10" key="feedback.message"/>
+                                            <s:submit/>
+                                        </s:form>
+                                    </div>
+								</div>
+                            </div>
+                        </div>
+                    </div>
+                </div>
+            </div>
+		</div>
+		  <div id="footer"> 
+           <jsp:include page="footer.jsp"/>
+        </div>
+	</div>
+</div>
+</body>
+</html>
\ No newline at end of file
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/fonts/kreon-regular-webfont.woff
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/fonts/kreon-regular-webfont.woff
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/fonts/kreon-regular-webfont.woff	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/fonts/kreon-regular-webfont.woff	(revision 47450)

Property changes on: modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/fonts/kreon-regular-webfont.woff
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/fonts/DroidSans-webfont.svg
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/fonts/DroidSans-webfont.svg	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/fonts/DroidSans-webfont.svg	(revision 47450)
@@ -0,0 +1,251 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" >
+<svg xmlns="http://www.w3.org/2000/svg">
+<metadata>
+This is a custom SVG webfont generated by Font Squirrel.
+Copyright   : Digitized data copyright  2007 Google Corporation
+Foundry     : Ascender Corporation
+Foundry URL : httpwwwascendercorpcom
+</metadata>
+<defs>
+<font id="DroidSansRegular" horiz-adv-x="1128" >
+<font-face units-per-em="2048" ascent="1638" descent="-410" />
+<missing-glyph horiz-adv-x="532" />
+<glyph unicode=" "  horiz-adv-x="532" />
+<glyph unicode="&#x09;" horiz-adv-x="532" />
+<glyph unicode="&#xa0;" horiz-adv-x="532" />
+<glyph unicode="!" horiz-adv-x="551" d="M147 111q0 38 10 64.5t27 43t40 24t50 7.5q26 0 49.5 -7.5t40.5 -24t27 -43t10 -64.5q0 -37 -10 -63.5t-27 -43.5t-40.5 -25t-49.5 -8q-27 0 -50 8t-40 25t-27 43.5t-10 63.5zM164 1462h223l-51 -1048h-121z" />
+<glyph unicode="&#x22;" horiz-adv-x="823" d="M133 1462h197l-41 -528h-115zM494 1462h196l-41 -528h-114z" />
+<glyph unicode="#" horiz-adv-x="1323" d="M51 428v137h285l65 328h-274v137h299l82 432h147l-82 -432h293l84 432h144l-84 -432h262v-137h-289l-63 -328h280v-137h-307l-82 -428h-147l84 428h-291l-82 -428h-144l78 428h-258zM483 565h291l64 328h-291z" />
+<glyph unicode="$" d="M123 172v172q33 -16 76.5 -32.5t91.5 -29.5t98.5 -21.5t97.5 -8.5v434q-89 30 -154.5 63t-108.5 75.5t-64 97.5t-21 129q0 67 24.5 122.5t70 97t110 68t143.5 35.5v180h138v-176q100 -5 184.5 -26t151.5 -52l-66 -145q-56 25 -126 45.5t-144 26.5v-422q88 -31 155.5 -64 t113 -74.5t68.5 -95t23 -125.5q0 -70 -25 -127t-71.5 -99t-113 -69.5t-150.5 -39.5v-230h-138v221q-50 0 -101 4.5t-99 13.5t-90 22t-74 30zM315 1049q0 -36 8.5 -64.5t28.5 -52t53 -42.5t82 -36v369q-89 -16 -130.5 -60.5t-41.5 -113.5zM625 262q93 14 138.5 63t45.5 121 q0 33 -10 60.5t-31.5 50t-56.5 41.5t-86 37v-373z" />
+<glyph unicode="%" horiz-adv-x="1690" d="M102 1026q0 108 17.5 193t54 143.5t93 89.5t134.5 31q75 0 131.5 -31t95 -89.5t58 -143.5t19.5 -193t-18 -194t-55 -145t-94.5 -90.5t-136.5 -31.5q-73 0 -129 31.5t-94 90.5t-57 145t-19 194zM250 1026q0 -165 35.5 -247.5t115.5 -82.5q156 0 156 330q0 328 -156 328 q-80 0 -115.5 -81.5t-35.5 -246.5zM362 0l812 1462h157l-811 -1462h-158zM985 440q0 108 17.5 193t54 143.5t93 89.5t134.5 31q75 0 131.5 -31t94.5 -89.5t57.5 -143.5t19.5 -193t-17.5 -193.5t-54.5 -144.5t-94.5 -90.5t-136.5 -31.5q-74 0 -130 31.5t-93.5 90.5 t-56.5 144.5t-19 193.5zM1133 440q0 -165 35.5 -247t115.5 -82q156 0 156 329q0 328 -156 328q-80 0 -115.5 -81.5t-35.5 -246.5z" />
+<glyph unicode="&#x26;" horiz-adv-x="1438" d="M109 381q0 78 20 139t58.5 111t94 93t126.5 85q-31 36 -61 74.5t-52.5 82t-36.5 93t-14 106.5q0 75 25 134.5t72 101t116 63t157 21.5q83 0 148.5 -21.5t111 -63t69.5 -101t24 -134.5q0 -64 -25 -118.5t-67 -101t-96.5 -86t-114.5 -75.5l352 -372q27 29 48.5 59t38.5 64 t30.5 73t23.5 86h184q-15 -66 -35.5 -121.5t-47 -104.5t-59 -91.5t-71.5 -83.5l277 -293h-225l-168 172q-49 -45 -97 -80.5t-102 -60t-116 -38t-140 -13.5q-105 0 -188.5 26.5t-141 78t-88 126t-30.5 170.5zM299 387q0 -54 17.5 -99.5t50.5 -78t81 -50.5t109 -18 q58 0 107 11.5t91 31.5t78 47t68 58l-387 407q-52 -33 -92 -64.5t-67.5 -67.5t-41.5 -78.5t-14 -98.5zM422 1165q0 -34 8 -66.5t24.5 -65t42.5 -66t62 -70.5q59 35 102 66t71 63t42 67t14 76q0 36 -12.5 66.5t-36 52.5t-56.5 34.5t-75 12.5q-86 0 -136 -44.5t-50 -125.5z " />
+<glyph unicode="'" horiz-adv-x="463" d="M133 1462h197l-41 -528h-115z" />
+<glyph unicode="(" horiz-adv-x="616" d="M82 561q0 125 18 246.5t55 236t93.5 220t134.5 198.5h172q-140 -193 -212.5 -424t-72.5 -475q0 -119 18.5 -237t54 -231t88.5 -219t122 -200h-170q-78 90 -134.5 193t-93.5 215.5t-55 232.5t-18 244z" />
+<glyph unicode=")" horiz-adv-x="616" d="M61 1462h172q78 -93 134.5 -198.5t94 -220t55.5 -236t18 -246.5q0 -124 -18 -244t-55.5 -232.5t-94 -215.5t-134.5 -193h-170q69 94 122 200t89 219t54 231t18 237q0 244 -72 475t-213 424z" />
+<glyph unicode="*" d="M82 1081l29 193l391 -111l-43 393h205l-43 -393l397 111l26 -193l-378 -28l245 -326l-178 -96l-176 358l-158 -358l-184 96l242 326z" />
+<glyph unicode="+" d="M102 647v150h387v389h150v-389h387v-150h-387v-385h-150v385h-387z" />
+<glyph unicode="," horiz-adv-x="512" d="M63 -264q15 61 29.5 127t28 131.5t24.5 128t19 115.5h198l15 -23q-14 -54 -33.5 -115t-43 -123t-49 -123.5t-50.5 -117.5h-138z" />
+<glyph unicode="-" horiz-adv-x="659" d="M82 465v168h496v-168h-496z" />
+<glyph unicode="." horiz-adv-x="549" d="M147 111q0 38 10 64.5t27 43t40 24t50 7.5q26 0 49.5 -7.5t40.5 -24t27 -43t10 -64.5q0 -37 -10 -63.5t-27 -43.5t-40.5 -25t-49.5 -8q-27 0 -50 8t-40 25t-27 43.5t-10 63.5z" />
+<glyph unicode="/" horiz-adv-x="764" d="M20 0l545 1462h178l-544 -1462h-179z" />
+<glyph unicode="0" d="M98 733q0 177 25.5 317t81 236.5t144 147.5t214.5 51q119 0 207 -50.5t146 -147t87 -236.5t29 -318q0 -177 -25.5 -317t-82 -237t-145.5 -148t-216 -51q-118 0 -205.5 51t-145 148t-86 237t-28.5 317zM283 733q0 -150 15 -262t48 -186.5t86.5 -112t130.5 -37.5t131 37 t88.5 111t50 186.5t15.5 263.5q0 150 -15.5 262t-50 186t-88.5 111t-131 37t-130.5 -37t-86.5 -111t-48 -186t-15 -262z" />
+<glyph unicode="1" d="M178 1163l383 299h150v-1462h-176v913q0 43 0.5 92t2 97.5t3 93t2.5 78.5q-17 -18 -30 -31t-26.5 -25t-28.5 -25.5t-36 -31.5l-148 -121z" />
+<glyph unicode="2" d="M96 0v156l350 381q75 81 134 148t100.5 131t63.5 128.5t22 140.5q0 59 -17 104t-48.5 76.5t-74.5 47.5t-96 16q-95 0 -171.5 -38.5t-145.5 -98.5l-102 119q40 36 86 67.5t99 54.5t112 36.5t124 13.5q96 0 173.5 -27t131.5 -77.5t83.5 -123t29.5 -163.5q0 -85 -26.5 -162 t-73 -151.5t-111 -149.5t-139.5 -156l-281 -299v-8h689v-166h-912z" />
+<glyph unicode="3" d="M82 59v170q87 -46 188.5 -71t194.5 -25q92 0 159 20t110.5 57t64 91t20.5 121q0 68 -26.5 116.5t-75.5 80t-119.5 46.5t-159.5 15h-133v151h133q81 0 144 20t105.5 57t64.5 88t22 112q0 52 -18 93t-51 69.5t-79 43.5t-102 15q-107 0 -188.5 -33.5t-155.5 -87.5l-92 125 q38 31 84.5 58t101.5 47.5t117.5 32.5t132.5 12q108 0 189.5 -27t136.5 -75.5t83 -115t28 -145.5q0 -73 -23 -133t-64.5 -104t-99.5 -72.5t-129 -40.5v-6q177 -22 269 -112.5t92 -235.5q0 -96 -32.5 -176t-98.5 -138t-167 -90t-239 -32q-109 0 -205.5 17t-181.5 62z" />
+<glyph unicode="4" d="M23 328v159l663 983h188v-976h213v-166h-213v-328h-176v328h-675zM201 494h497v356q0 56 1.5 117.5t3.5 120t4.5 109.5t3.5 85h-9q-7 -20 -17.5 -44.5t-23 -49t-25.5 -47.5t-24 -39z" />
+<glyph unicode="5" d="M131 59v172q33 -23 77.5 -41t93.5 -30t98.5 -18.5t91.5 -6.5q79 0 141 18.5t105 57.5t66 98t23 140q0 143 -88 218.5t-256 75.5q-27 0 -58.5 -2.5t-63 -6.5t-60 -8.5t-49.5 -8.5l-90 57l55 688h690v-166h-532l-39 -419q32 6 84.5 13t124.5 7q99 0 184.5 -27.5t149 -81.5 t99.5 -134t36 -185q0 -114 -34 -205t-101 -154t-165.5 -96.5t-226.5 -33.5q-51 0 -100.5 5t-95 14.5t-86.5 24.5t-74 35z" />
+<glyph unicode="6" d="M113 625q0 105 10.5 209t37 199.5t72.5 177.5t117 142.5t170 95t232 34.5q19 0 42 -1t46.5 -3.5t45 -6t38.5 -8.5v-155q-35 12 -79 18t-87 6q-90 0 -158.5 -21.5t-118.5 -60.5t-83.5 -93t-54.5 -119.5t-31 -139.5t-13 -154h12q20 36 48.5 67.5t66.5 54t85.5 35.5 t106.5 13q95 0 172 -29.5t131 -86.5t83.5 -139.5t29.5 -188.5q0 -114 -31 -205t-89 -154.5t-140 -97.5t-184 -34q-100 0 -187.5 39t-151.5 119t-101 201t-37 286zM295 506q0 -67 18.5 -133.5t55 -119.5t91.5 -86.5t128 -33.5q60 0 109.5 20.5t85.5 62t55.5 105t19.5 150.5 q0 70 -16.5 125.5t-49.5 94.5t-82.5 60t-115.5 21q-67 0 -122.5 -23.5t-94.5 -61t-60.5 -85.5t-21.5 -96z" />
+<glyph unicode="7" d="M90 1296v166h940v-145l-555 -1317h-194l563 1296h-754z" />
+<glyph unicode="8" d="M106 373q0 75 22.5 135t60.5 108t90 85t110 65q-49 31 -92 67.5t-74.5 81.5t-50 99.5t-18.5 120.5q0 87 33.5 152.5t90.5 109.5t131.5 66t155.5 22q84 0 158.5 -22t131 -66t89.5 -110t33 -154q0 -67 -20 -121t-55 -97.5t-83 -78t-104 -62.5q58 -31 113.5 -69t99 -85.5 t70 -106.5t26.5 -132q0 -92 -33.5 -166.5t-94 -126.5t-145 -80t-186.5 -28q-110 0 -195.5 27t-144 77.5t-89 123.5t-30.5 165zM285 371q0 -53 16 -97.5t50 -76t86 -49t124 -17.5q70 0 123.5 17.5t89.5 50t54 78.5t18 102q0 52 -19.5 94t-56 78t-87.5 68t-114 63l-30 14 q-126 -60 -190 -137.5t-64 -187.5zM332 1126q0 -57 17.5 -98t48.5 -73t74.5 -57.5t94.5 -49.5q48 22 90.5 48t74 59t49.5 75t18 96q0 101 -63 154t-173 53q-106 0 -168.5 -53t-62.5 -154z" />
+<glyph unicode="9" d="M106 991q0 114 31.5 205.5t89 155t140 97.5t184.5 34q101 0 188 -39t151 -119t101 -201.5t37 -285.5q0 -105 -10.5 -209.5t-37 -199.5t-72.5 -177.5t-117 -142.5t-170 -94.5t-232 -34.5q-19 0 -42 1t-46 3.5t-45 5.5t-39 8v156q35 -13 79 -19t87 -6q135 0 222 47 t138 127.5t72.5 187.5t26.5 226h-13q-20 -36 -48 -67t-66 -54t-86 -36t-107 -13q-95 0 -172 29.5t-131 86.5t-83.5 139.5t-29.5 188.5zM283 991q0 -70 16.5 -125.5t49.5 -94.5t82.5 -60t115.5 -21q68 0 123 23.5t94 61t60.5 85.5t21.5 96q0 67 -18.5 133.5t-55 120 t-91.5 86.5t-128 33q-60 0 -109.5 -20t-85.5 -62t-55.5 -105.5t-19.5 -150.5z" />
+<glyph unicode=":" horiz-adv-x="549" d="M147 111q0 38 10 64.5t27 43t40 24t50 7.5q26 0 49.5 -7.5t40.5 -24t27 -43t10 -64.5q0 -37 -10 -63.5t-27 -43.5t-40.5 -25t-49.5 -8q-27 0 -50 8t-40 25t-27 43.5t-10 63.5zM147 987q0 39 10 65.5t27 43t40 23.5t50 7q26 0 49.5 -7t40.5 -23.5t27 -43t10 -65.5 q0 -37 -10 -63t-27 -43t-40.5 -25t-49.5 -8q-27 0 -50 8t-40 25t-27 43t-10 63z" />
+<glyph unicode=";" horiz-adv-x="549" d="M63 -264q15 61 29.5 127t28 131.5t24.5 128t19 115.5h198l15 -23q-14 -54 -33.5 -115t-43 -123t-49 -123.5t-50.5 -117.5h-138zM147 987q0 39 10 65.5t27 43t40 23.5t50 7q26 0 49.5 -7t40.5 -23.5t27 -43t10 -65.5q0 -37 -10 -63t-27 -43t-40.5 -25t-49.5 -8 q-27 0 -50 8t-40 25t-27 43t-10 63z" />
+<glyph unicode="&#x3c;" d="M102 662v102l924 481v-160l-735 -364l735 -322v-161z" />
+<glyph unicode="=" d="M102 442v150h924v-150h-924zM102 852v149h924v-149h-924z" />
+<glyph unicode="&#x3e;" d="M102 238v161l736 322l-736 364v160l924 -481v-102z" />
+<glyph unicode="?" horiz-adv-x="872" d="M37 1382q81 42 175 71.5t191 29.5q93 0 167.5 -25.5t126.5 -73.5t80 -117.5t28 -156.5q0 -67 -13.5 -119.5t-40.5 -97.5t-67 -87t-94 -89q-52 -45 -85 -78.5t-52 -65t-26 -64.5t-7 -77v-18h-139v37q0 57 7.5 103t27 86t52.5 78.5t83 80.5q48 41 82 74.5t55.5 68t32 74 t10.5 92.5q0 48 -15 87.5t-43.5 68t-71 44t-98.5 15.5q-83 0 -158 -26t-145 -60zM233 111q0 38 10 64.5t27 43t40 24t50 7.5q26 0 49.5 -7.5t40.5 -24t27 -43t10 -64.5q0 -37 -10 -63.5t-27 -43.5t-40.5 -25t-49.5 -8q-27 0 -50 8t-40 25t-27 43.5t-10 63.5z" />
+<glyph unicode="@" horiz-adv-x="1774" d="M109 575q0 188 59 350.5t168.5 281.5t265 187t348.5 68q156 0 287 -50.5t226.5 -145t148.5 -230t53 -305.5q0 -62 -9.5 -124.5t-28 -119t-47 -105t-66.5 -84.5t-86.5 -56.5t-106.5 -20.5q-45 0 -81.5 15t-62.5 40t-42.5 57.5t-22.5 67.5h-4q-18 -37 -45 -70t-62.5 -57.5 t-80 -38.5t-97.5 -14q-77 0 -136.5 28t-100.5 78.5t-62.5 121.5t-21.5 157q0 101 29.5 185t85 145t134.5 95t177 34q45 0 90 -4t86 -11t75.5 -15.5t57.5 -16.5l-23 -416q-1 -22 -1.5 -35.5t-0.5 -21.5v-12v-7q0 -53 10.5 -87t27.5 -54t38.5 -27.5t44.5 -7.5q46 0 81 30.5 t58.5 82.5t35.5 122t12 148q0 142 -43 252.5t-119 186.5t-180.5 115.5t-227.5 39.5q-169 0 -298 -55.5t-216.5 -155t-132.5 -236t-45 -298.5q0 -151 39.5 -268t116 -197t190 -121t260.5 -41q61 0 120.5 7t115 19t105.5 27.5t93 32.5v-141q-86 -38 -194 -60t-238 -22 q-179 0 -319.5 51t-238 148.5t-148.5 238t-51 319.5zM662 602q0 -133 50.5 -192.5t135.5 -59.5q55 0 94 22.5t64 64t38 99t17 126.5l14 253q-28 8 -66.5 14.5t-80.5 6.5q-74 0 -124.5 -29t-82 -76t-45.5 -107t-14 -122z" />
+<glyph unicode="A" horiz-adv-x="1245" d="M0 0l537 1468h170l538 -1468h-190l-160 453h-545l-162 -453h-188zM410 618h426l-148 424q-6 18 -14.5 44t-17.5 56t-18 62.5t-17 63.5q-7 -31 -16 -64t-18 -63.5t-17.5 -56t-14.5 -42.5z" />
+<glyph unicode="B" horiz-adv-x="1272" d="M199 0v1462h399q128 0 225.5 -19.5t163 -63t98.5 -114t33 -173.5q0 -62 -19.5 -116t-56.5 -95t-91.5 -68.5t-123.5 -36.5v-10q69 -12 129.5 -34.5t105.5 -62t71 -99.5t26 -146q0 -100 -32.5 -178.5t-94 -133t-149.5 -83.5t-199 -29h-485zM385 158h266q88 0 147.5 20 t96 56t52.5 86.5t16 111.5q0 56 -16.5 103t-54 80.5t-99.5 52t-154 18.5h-254v-528zM385 842h244q84 0 141 15t92 44.5t50.5 74t15.5 103.5q0 120 -77 172t-243 52h-223v-461z" />
+<glyph unicode="C" horiz-adv-x="1235" d="M125 733q0 166 43.5 304t128 237t209.5 154t287 55q108 0 206 -22t177 -64l-78 -156q-63 32 -137 55t-168 23q-107 0 -194 -40.5t-148.5 -116.5t-95 -185t-33.5 -246q0 -141 29.5 -250.5t88.5 -184.5t147 -114t206 -39q89 0 169 17.5t158 40.5v-162q-39 -15 -78 -26.5 t-81.5 -18.5t-91 -10.5t-107.5 -3.5q-164 0 -284 54t-198.5 153t-116.5 238t-38 308z" />
+<glyph unicode="D" horiz-adv-x="1401" d="M199 0v1462h407q153 0 277 -46t211 -136.5t134.5 -224.5t47.5 -310q0 -185 -48 -324.5t-139 -233t-223.5 -140.5t-300.5 -47h-366zM385 160h162q264 0 398 146t134 433q0 146 -33 252.5t-96 175.5t-155 102.5t-209 33.5h-201v-1143z" />
+<glyph unicode="E" horiz-adv-x="1081" d="M199 0v1462h759v-164h-573v-452h535v-162h-535v-520h573v-164h-759z" />
+<glyph unicode="F" horiz-adv-x="1006" d="M199 0v1462h759v-164h-573v-516h535v-164h-535v-618h-186z" />
+<glyph unicode="G" horiz-adv-x="1413" d="M125 733q0 172 47.5 311t138.5 236.5t224.5 150t304.5 52.5q111 0 213 -22t190 -64l-72 -162q-36 17 -77.5 32t-85.5 26.5t-90.5 18.5t-92.5 7q-122 0 -216 -40.5t-157.5 -116.5t-96.5 -185t-33 -246q0 -130 27.5 -238t87.5 -186t155 -121t229 -43q44 0 80.5 2.5 t67.5 6.5t58.5 9.5t53.5 10.5v436h-299v164h484v-717q-55 -18 -111 -32t-115 -23.5t-124 -14.5t-140 -5q-157 0 -278 52.5t-204 150t-126 237t-43 313.5z" />
+<glyph unicode="H" horiz-adv-x="1436" d="M199 0v1462h186v-616h666v616h186v-1462h-186v682h-666v-682h-186z" />
+<glyph unicode="I" horiz-adv-x="694" d="M82 0v102l172 41v1176l-172 41v102h530v-102l-172 -41v-1176l172 -41v-102h-530z" />
+<glyph unicode="J" horiz-adv-x="555" d="M-184 -205q34 -9 73 -14.5t84 -5.5q37 0 74.5 9.5t68 34.5t49.5 69t19 112v1462h187v-1442q0 -105 -29.5 -182t-82 -127.5t-126 -75t-162.5 -24.5q-51 0 -89 6.5t-66 17.5v160z" />
+<glyph unicode="K" horiz-adv-x="1186" d="M199 0v1462h186v-731l121 168l452 563h209l-520 -637l539 -825h-211l-451 698l-139 -114v-584h-186z" />
+<glyph unicode="L" horiz-adv-x="1006" d="M199 0v1462h186v-1296h573v-166h-759z" />
+<glyph unicode="M" horiz-adv-x="1782" d="M199 0v1462h276l412 -1192h6l414 1192h276v-1462h-186v887q0 52 2 119t5 128q4 71 7 144h-8l-447 -1278h-153l-443 1280h-8q6 -74 10 -147q4 -63 6.5 -132.5t2.5 -126.5v-874h-172z" />
+<glyph unicode="N" horiz-adv-x="1493" d="M199 0v1462h213l716 -1204h7q-3 76 -7 150q0 32 -2 66l-4 66q-2 34 -2 65v57v800h174v-1462h-215l-719 1210h-8q6 -77 10 -153q4 -65 6.5 -136t2.5 -128v-793h-172z" />
+<glyph unicode="O" horiz-adv-x="1520" d="M125 735q0 170 38 308.5t117 236.5t199 151.5t283 53.5q155 0 272.5 -53.5t197.5 -152t120.5 -237t40.5 -309.5q0 -169 -40.5 -308t-120.5 -238t-198.5 -153t-273.5 -54q-163 0 -282.5 54t-198 153t-116.5 238.5t-38 309.5zM322 733q0 -137 26 -246.5t79.5 -186t136 -117 t196.5 -40.5t196.5 40.5t136 117t78.5 186t25 246.5q0 138 -25 247t-78 184.5t-135 116t-196 40.5t-197 -40.5t-137 -116t-80 -184.5t-26 -247z" />
+<glyph unicode="P" horiz-adv-x="1180" d="M199 0v1462h362q134 0 231 -28.5t160 -83t93 -134.5t30 -182q0 -91 -27.5 -175t-90.5 -148.5t-166.5 -103t-255.5 -38.5h-150v-569h-186zM385 727h129q93 0 162.5 16t115 51.5t68.5 92t23 137.5q0 142 -82 210.5t-256 68.5h-160v-576z" />
+<glyph unicode="Q" horiz-adv-x="1518" d="M125 735q0 170 38 308.5t117 236.5t199 151.5t283 53.5q155 0 272.5 -53.5t197.5 -152t120.5 -237t40.5 -309.5q0 -131 -24.5 -244t-72 -203.5t-118.5 -156.5t-164 -104q43 -94 111.5 -165.5t158.5 -131.5l-121 -142q-103 73 -189.5 172t-137.5 226q-17 -2 -37.5 -3 t-38.5 -1q-163 0 -282.5 54t-198 153t-116.5 238.5t-38 309.5zM322 733q0 -137 26 -246.5t79.5 -186t136 -117t196.5 -40.5t196.5 40.5t136 117t78.5 186t25 246.5q0 138 -25 247t-78 184.5t-135 116t-196 40.5t-197 -40.5t-137 -116t-80 -184.5t-26 -247z" />
+<glyph unicode="R" horiz-adv-x="1208" d="M199 0v1462h356q266 0 393 -103t127 -312q0 -87 -24.5 -152t-65 -111.5t-92.5 -77.5t-107 -51l398 -655h-219l-351 604h-229v-604h-186zM385 762h164q90 0 153 17.5t103.5 52t59 86t18.5 120.5q0 72 -20.5 122t-62 82t-105 46.5t-150.5 14.5h-160v-541z" />
+<glyph unicode="S" horiz-adv-x="1063" d="M104 49v178q34 -16 77.5 -31.5t91.5 -27.5t99 -19.5t101 -7.5q160 0 236.5 60t76.5 172q0 54 -14.5 94t-51 73.5t-97.5 65t-154 68.5q-89 35 -154.5 76.5t-108 93.5t-63 118t-20.5 150q0 88 32 157t90 116.5t138.5 72.5t177.5 25q119 0 214 -22.5t169 -57.5l-67 -156 q-65 29 -147.5 50.5t-170.5 21.5q-122 0 -189 -56.5t-67 -152.5q0 -57 15 -98.5t50 -75t92.5 -63t141.5 -62.5q91 -36 159.5 -74t114.5 -86t69.5 -111t23.5 -149q0 -97 -34.5 -173.5t-98.5 -129.5t-156 -80.5t-207 -27.5q-111 0 -207.5 17.5t-161.5 51.5z" />
+<glyph unicode="T" horiz-adv-x="1063" d="M20 1298v164h1022v-164h-417v-1298h-187v1298h-418z" />
+<glyph unicode="U" horiz-adv-x="1430" d="M184 520v942h187v-952q0 -175 86.5 -271t261.5 -96q89 0 153 27t105 76t61 117t21 149v952h186v-948q0 -114 -33 -212t-99.5 -170t-167 -113t-236.5 -41q-128 0 -226 38.5t-164.5 109.5t-100.5 170.5t-34 221.5z" />
+<glyph unicode="V" horiz-adv-x="1163" d="M0 1462h197l295 -927q29 -91 50 -175.5t38 -158.5q15 74 38 158.5t54 181.5l293 921h198l-489 -1462h-187z" />
+<glyph unicode="W" horiz-adv-x="1810" d="M20 1462h197l223 -889q12 -46 22 -95.5t18.5 -98.5t15.5 -94.5t12 -83.5q5 37 12.5 86t17.5 103t21.5 109.5t24.5 104.5l225 858h197l229 -856q15 -56 29.5 -112t27 -108.5t22 -99.5t15.5 -85q4 38 10 83t14 94.5t17.5 101t20.5 100.5l200 882h199l-367 -1462h-188 l-254 938q-14 51 -27 105t-24 101q-12 55 -23 107q-11 -51 -22 -106q-10 -47 -22.5 -103t-26.5 -110l-242 -932h-188z" />
+<glyph unicode="X" horiz-adv-x="1120" d="M0 0l453 764l-422 698h198l332 -559l334 559h190l-421 -692l456 -770h-211l-354 635l-367 -635h-188z" />
+<glyph unicode="Y" horiz-adv-x="1079" d="M0 1462h203l336 -739l340 739h200l-446 -893v-569h-187v559z" />
+<glyph unicode="Z" horiz-adv-x="1104" d="M82 0v145l711 1151h-691v166h899v-145l-710 -1151h731v-166h-940z" />
+<glyph unicode="[" horiz-adv-x="621" d="M164 -324v1786h405v-149h-223v-1487h223v-150h-405z" />
+<glyph unicode="\" horiz-adv-x="764" d="M23 1462h178l544 -1462h-178z" />
+<glyph unicode="]" horiz-adv-x="621" d="M51 -174h223v1487h-223v149h406v-1786h-406v150z" />
+<glyph unicode="^" horiz-adv-x="1090" d="M41 549l459 924h102l447 -924h-161l-337 735l-349 -735h-161z" />
+<glyph unicode="_" horiz-adv-x="842" d="M-4 -184h850v-140h-850v140z" />
+<glyph unicode="`" horiz-adv-x="1182" d="M393 1548v21h219q16 -34 37.5 -74.5t44.5 -81t47 -78.5t45 -67v-27h-120q-35 28 -76 69.5t-79.5 85.5t-70 84.5t-47.5 67.5z" />
+<glyph unicode="a" horiz-adv-x="1087" d="M94 307q0 164 115.5 252t351.5 96l184 7v69q0 67 -14.5 112t-42 72.5t-68 39.5t-92.5 12q-83 0 -154.5 -24t-137.5 -58l-64 137q74 40 165 68t191 28q102 0 176.5 -20.5t123 -65t72.5 -113.5t24 -167v-752h-131l-37 152h-8q-33 -45 -66 -77.5t-72 -53.5t-87 -31t-111 -10 q-69 0 -127 19.5t-100.5 60t-66.5 102t-24 145.5zM283 305q0 -92 48.5 -135t127.5 -43q61 0 113 19t90 57.5t59.5 97t21.5 137.5v99l-143 -7q-90 -4 -151 -20t-97.5 -44.5t-52.5 -69t-16 -91.5z" />
+<glyph unicode="b" horiz-adv-x="1200" d="M174 0v1556h182v-376q0 -35 -1 -74.5t-3 -73.5q-2 -40 -4 -78h8q23 35 52 65t67.5 52t86.5 34.5t108 12.5q94 0 171 -36t131.5 -107.5t84.5 -177.5t30 -246q0 -141 -30 -247.5t-84.5 -178.5t-131.5 -108.5t-171 -36.5q-59 0 -107 13t-86.5 34.5t-68 50.5t-52.5 61h-12 l-37 -139h-133zM356 551q0 -101 13.5 -179.5t46 -132t86.5 -81t135 -27.5q135 0 198.5 109t63.5 313q0 208 -63.5 311t-200.5 103q-80 0 -133.5 -25.5t-86 -77.5t-46 -130t-13.5 -183z" />
+<glyph unicode="c" horiz-adv-x="948" d="M113 543q0 157 38 266.5t104.5 178t155.5 99.5t191 31q78 0 152.5 -17t124.5 -42l-54 -154q-23 10 -51 19.5t-58 17t-59 12t-55 4.5q-157 0 -229 -100.5t-72 -312.5q0 -211 72.5 -308.5t220.5 -97.5q81 0 146.5 18.5t119.5 43.5v-162q-54 -29 -115.5 -44t-150.5 -15 q-101 0 -189 31.5t-153 100t-102 175t-37 256.5z" />
+<glyph unicode="d" horiz-adv-x="1200" d="M113 547q0 141 30 247.5t85 178.5t132 108.5t170 36.5q59 0 107 -13t86.5 -35t68.5 -51t52 -61h12q-3 34 -6 65q-2 26 -4 53.5t-2 43.5v436h182v-1556h-147l-27 147h-8q-22 -34 -51.5 -64.5t-68 -53.5t-86.5 -36t-108 -13q-93 0 -170 36t-132 107.5t-85 177.5t-30 246z M301 545q0 -209 63.5 -311.5t200.5 -102.5q76 0 128.5 23t85 70t48 117.5t17.5 164.5v41q0 101 -13.5 179.5t-46 132t-86.5 81t-135 27.5q-135 0 -198.5 -109t-63.5 -313z" />
+<glyph unicode="e" horiz-adv-x="1096" d="M113 541q0 136 33 243t93 181.5t143.5 113.5t184.5 39q99 0 178 -35.5t134 -100t84.5 -155t29.5 -200.5v-113h-692q5 -193 81.5 -284t227.5 -91q51 0 94.5 5t84 14.5t78.5 24t77 32.5v-162q-40 -19 -78.5 -33t-79 -23t-84 -13t-94.5 -4q-110 0 -201 37t-156.5 108 t-101.5 176t-36 240zM305 662h492q0 68 -13.5 124.5t-42 96.5t-72.5 62t-106 22q-114 0 -180.5 -78t-77.5 -227z" />
+<glyph unicode="f" horiz-adv-x="674" d="M29 961v75l194 68v96q0 107 22.5 177.5t65 112.5t104.5 59.5t140 17.5q59 0 108.5 -11.5t88.5 -25.5l-47 -141q-31 11 -67.5 19.5t-76.5 8.5t-69 -9.5t-48 -33.5t-28.5 -65.5t-9.5 -106.5v-104h245v-137h-245v-961h-183v961h-194z" />
+<glyph unicode="g" horiz-adv-x="1061" d="M37 -186q0 60 19.5 105.5t52.5 78.5t76.5 54t90.5 32q-42 19 -69 60t-27 94q0 61 32 105.5t101 86.5q-43 18 -78.5 49.5t-60 72t-38 88.5t-13.5 99q0 89 25 159t74 119t122 75t170 26q37 0 76.5 -5.5t66.5 -14.5h363v-113l-197 -27q28 -35 47 -89.5t19 -123.5 q0 -76 -23.5 -140.5t-71 -111.5t-117.5 -73.5t-163 -26.5q-22 0 -44 0.5t-36 3.5q-17 -10 -33.5 -22.5t-30 -28.5t-22 -36t-8.5 -44q0 -27 12 -43.5t32.5 -25.5t48.5 -12t59 -3h176q93 0 157 -23.5t104.5 -63.5t58.5 -94.5t18 -115.5q0 -88 -32.5 -158t-99.5 -118.5 t-169.5 -74.5t-241.5 -26q-107 0 -187 21t-133 61t-79.5 96.5t-26.5 127.5zM209 -180q0 -37 13 -69t42.5 -55t78 -36.5t120.5 -13.5q186 0 278.5 57.5t92.5 165.5q0 46 -12 75t-39.5 45.5t-72.5 22.5t-110 6h-176q-35 0 -73 -8t-69.5 -30t-52 -60.5t-20.5 -99.5zM301 745 q0 -115 54 -171t153 -56q100 0 151.5 55.5t51.5 174.5q0 123 -52.5 181t-152.5 58q-99 0 -152 -60t-53 -182z" />
+<glyph unicode="h" horiz-adv-x="1206" d="M174 0v1556h182v-462l-8 -144h10q25 43 59.5 74.5t75.5 52.5t87 31t94 10q183 0 275.5 -95.5t92.5 -305.5v-717h-182v707q0 130 -52.5 195t-164.5 65q-81 0 -136 -26t-88.5 -77t-48 -125t-14.5 -170v-569h-182z" />
+<glyph unicode="i" horiz-adv-x="530" d="M160 1395q0 60 30.5 87t75.5 27q22 0 41.5 -6.5t34 -20.5t23 -35.5t8.5 -51.5q0 -58 -31.5 -86.5t-75.5 -28.5q-45 0 -75.5 28t-30.5 87zM174 0v1098h182v-1098h-182z" />
+<glyph unicode="j" horiz-adv-x="530" d="M-68 -319q26 -10 53 -15.5t62 -5.5q27 0 50 7.5t40.5 27t27 52t9.5 83.5v1268h182v-1256q0 -77 -17 -138.5t-53 -105t-90.5 -67t-129.5 -23.5q-48 0 -79.5 7t-54.5 18v148zM160 1395q0 60 30.5 87t75.5 27q22 0 41.5 -6.5t34 -20.5t23 -35.5t8.5 -51.5q0 -58 -31.5 -86.5 t-75.5 -28.5q-45 0 -75.5 28t-30.5 87z" />
+<glyph unicode="k" horiz-adv-x="1016" d="M174 0v1556h180v-714l-16 -275h4l135 170l293 361h211l-401 -475l428 -623h-209l-336 504l-109 -82v-422h-180z" />
+<glyph unicode="l" horiz-adv-x="530" d="M174 0v1556h182v-1556h-182z" />
+<glyph unicode="m" horiz-adv-x="1835" d="M174 0v1098h148l26 -148h10q24 43 57 74.5t72.5 52.5t84 31t90.5 10q120 0 199.5 -44t117.5 -138h8q26 47 62.5 81t80 56.5t91.5 33.5t98 11q175 0 263.5 -95.5t88.5 -305.5v-717h-182v707q0 130 -50 195t-155 65q-73 0 -124 -23.5t-83.5 -69t-47.5 -113t-15 -155.5v-606 h-183v707q0 130 -49.5 195t-154.5 65q-77 0 -129 -26t-83.5 -77t-45 -125t-13.5 -170v-569h-182z" />
+<glyph unicode="n" horiz-adv-x="1206" d="M174 0v1098h148l26 -148h10q25 43 59.5 74.5t75.5 52.5t87 31t94 10q183 0 275.5 -95.5t92.5 -305.5v-717h-182v707q0 130 -52.5 195t-164.5 65q-81 0 -136 -26t-88.5 -77t-48 -125t-14.5 -170v-569h-182z" />
+<glyph unicode="o" horiz-adv-x="1182" d="M113 551q0 136 33.5 241.5t95.5 178t151.5 110t200.5 37.5q103 0 190 -37.5t150.5 -110t99 -178t35.5 -241.5q0 -137 -33.5 -243.5t-96 -179t-151.5 -110.5t-200 -38q-103 0 -190 38t-150.5 110.5t-99 179t-35.5 243.5zM301 551q0 -209 68.5 -314.5t222.5 -105.5 t221.5 105.5t67.5 314.5t-68.5 312.5t-222.5 103.5t-221.5 -103.5t-67.5 -312.5z" />
+<glyph unicode="p" horiz-adv-x="1200" d="M174 -492v1590h148l26 -148h8q23 35 52 65.5t67.5 53t86.5 36t108 13.5q94 0 171 -36t131.5 -107.5t84.5 -177.5t30 -246q0 -141 -30 -247.5t-84.5 -178.5t-131.5 -108.5t-171 -36.5q-59 0 -107 13t-86.5 34.5t-68 50.5t-52.5 61h-12q3 -34 6 -65q2 -26 4 -53.5t2 -43.5 v-469h-182zM356 551q0 -101 13.5 -179.5t46 -132t86.5 -81t135 -27.5q135 0 198.5 109t63.5 313q0 208 -63.5 311t-200.5 103q-76 0 -128.5 -23t-85 -70t-48 -117t-17.5 -165v-41z" />
+<glyph unicode="q" horiz-adv-x="1200" d="M113 547q0 141 30 247.5t85 178.5t132 108.5t170 36.5q59 0 107 -13.5t86 -36t68 -53t53 -65.5h8l27 148h147v-1590h-182v469q0 19 2 48t4 56q3 32 6 66h-12q-22 -34 -51.5 -64.5t-68 -53.5t-86.5 -36t-108 -13q-93 0 -170 36t-132 107.5t-85 177.5t-30 246zM301 545 q0 -209 63.5 -311.5t200.5 -102.5q76 0 128.5 23t85 70t48 117.5t17.5 164.5v41q0 101 -13.5 179.5t-46 132t-86.5 81t-135 27.5q-135 0 -198.5 -109t-63.5 -313z" />
+<glyph unicode="r" horiz-adv-x="817" d="M174 0v1098h148l22 -201h8q25 43 53.5 83t64 70.5t79.5 49t100 18.5q29 0 65 -2.5t62 -7.5l-24 -168q-28 5 -57.5 8.5t-55.5 3.5q-63 0 -115 -25.5t-89.5 -73t-58 -114t-20.5 -147.5v-592h-182z" />
+<glyph unicode="s" horiz-adv-x="924" d="M90 49v166q31 -16 69 -31.5t80 -27.5t86.5 -19.5t88.5 -7.5q65 0 110.5 11t74 31.5t41.5 50t13 65.5q0 31 -10 56t-36.5 49.5t-72.5 49.5t-118 56t-129.5 61t-97.5 67t-61.5 85.5t-21.5 115.5q0 70 27.5 124.5t77.5 91.5t120 56t156 19q97 0 177.5 -21t152.5 -55 l-63 -147q-65 29 -133.5 50.5t-139.5 21.5q-102 0 -151 -33.5t-49 -95.5q0 -35 11.5 -61t39.5 -49t75 -46.5t117 -52.5q72 -30 128.5 -60t96.5 -67.5t61 -85.5t21 -115q0 -80 -29 -140t-83.5 -100.5t-131.5 -60.5t-173 -20q-109 0 -187 17.5t-137 51.5z" />
+<glyph unicode="t" horiz-adv-x="694" d="M33 961v81l155 78l78 230h105v-252h276v-137h-276v-637q0 -97 31.5 -146t103.5 -49q18 0 40.5 2t43.5 5t38.5 7t26.5 7v-138q-13 -6 -33 -12t-44 -10.5t-50 -7t-51 -2.5q-62 0 -115 16t-91.5 55t-60.5 105.5t-22 167.5v637h-155z" />
+<glyph unicode="u" horiz-adv-x="1206" d="M164 381v717h182v-707q0 -130 53 -195t164 -65q81 0 136 26t88.5 76.5t48 124.5t14.5 170v570h182v-1098h-147l-27 147h-10q-25 -43 -59.5 -74.5t-75.5 -52t-87 -30.5t-94 -10q-91 0 -160 23t-115 72t-69.5 125t-23.5 181z" />
+<glyph unicode="v" horiz-adv-x="981" d="M0 1098h188l199 -611q11 -33 26 -85t30 -106t27.5 -102t16.5 -73h7q5 25 17 73t27 102t30 106t26 85l199 611h188l-375 -1098h-231z" />
+<glyph unicode="w" horiz-adv-x="1528" d="M20 1098h191l131 -584q10 -45 20 -97.5t19 -104t16 -97t11 -74.5h6q5 26 13.5 69.5t19 92t21.5 96t21 80.5l179 619h196l172 -619q9 -34 20.5 -80t22.5 -93.5t20 -91.5t13 -73h6q3 26 9.5 69.5t15.5 95.5t19.5 106.5t21.5 101.5l137 584h186l-284 -1098h-215l-168 616 q-4 18 -10 40.5t-12 47.5t-12.5 51t-12.5 51q-14 58 -29 120h-6q-14 -63 -27 -121q-11 -50 -23.5 -103t-23.5 -90l-172 -612h-211z" />
+<glyph unicode="x" horiz-adv-x="1024" d="M35 0l373 563l-353 535h207l250 -410l250 410h207l-355 -535l373 -563h-207l-268 436l-270 -436h-207z" />
+<glyph unicode="y" horiz-adv-x="1001" d="M10 1098h189l215 -613q14 -40 28.5 -84t27 -88t21.5 -85t13 -76h6q5 25 16 68t24.5 91.5t28 95.5t25.5 80l199 611h188l-434 -1241q-28 -81 -60.5 -145.5t-75.5 -109.5t-101 -69.5t-138 -24.5q-52 0 -90 5.5t-65 11.5v145q21 -5 53 -8.5t67 -3.5q48 0 83 11.5t61 33.5 t44.5 54t33.5 73l57 160z" />
+<glyph unicode="z" horiz-adv-x="903" d="M82 0v125l536 836h-503v137h688v-146l-524 -815h542v-137h-739z" />
+<glyph unicode="{" horiz-adv-x="725" d="M61 492v155q125 0 190.5 43t65.5 146v333q0 78 27 133t74.5 90.5t113 52t142.5 17.5v-149q-40 -1 -72.5 -7.5t-55 -24t-34.5 -48t-12 -78.5v-332q0 -105 -59.5 -166.5t-174.5 -81.5v-12q115 -20 174.5 -81t59.5 -167v-331q0 -48 12 -78.5t34.5 -48t55 -24t72.5 -7.5v-150 q-77 1 -142.5 17.5t-113 52t-74.5 90.5t-27 133v334q0 103 -65.5 146t-190.5 43z" />
+<glyph unicode="|" d="M489 -492v2048h150v-2048h-150z" />
+<glyph unicode="}" horiz-adv-x="725" d="M51 -174q40 1 72.5 7.5t55 24t34.5 48t12 78.5v331q0 106 59.5 167t174.5 81v12q-115 20 -174.5 81.5t-59.5 166.5v332q0 48 -12 78.5t-34.5 48t-55 24t-72.5 7.5v149q77 -1 142.5 -17.5t113 -52t74.5 -90.5t27 -133v-333q0 -52 16.5 -88t49 -58.5t80.5 -32.5t110 -10 v-155q-125 0 -190.5 -43t-65.5 -146v-334q0 -78 -27 -133t-74.5 -90.5t-113 -52t-142.5 -17.5v150z" />
+<glyph unicode="~" d="M102 586v162q100 108 248 108q29 0 54 -2.5t52.5 -9t61 -19t80.5 -32.5q37 -16 64.5 -27t51 -17.5t43.5 -9t42 -2.5q28 0 58 9.5t59.5 26t57.5 38.5t52 47v-162q-99 -108 -248 -108q-29 0 -54 2.5t-52.5 9t-61 19t-80.5 32.5q-37 16 -64.5 27t-50 17.5t-43 9t-42.5 2.5 q-28 0 -58 -9.5t-59.5 -26t-57.5 -38.5t-53 -47z" />
+<glyph unicode="&#xa1;" horiz-adv-x="551" d="M147 979q0 37 10 63t27.5 43t40.5 25t49 8q27 0 50 -8t40.5 -25t27 -43t9.5 -63q0 -38 -9.5 -64.5t-27 -43t-40.5 -24t-50 -7.5q-26 0 -49 7.5t-40.5 24t-27.5 43t-10 64.5zM162 -373l51 1049h121l51 -1049h-223z" />
+<glyph unicode="&#xa2;" d="M188 743q0 141 26.5 242.5t75 169.5t118 105.5t155.5 50.5v172h137v-164q72 -3 140 -19.5t114 -39.5l-53 -154q-23 10 -51 19.5t-58 17t-59.5 12t-54.5 4.5q-157 0 -229 -101t-72 -313q0 -210 72.5 -307.5t220.5 -97.5q81 0 146.5 18.5t119.5 42.5v-161q-50 -28 -105 -43 t-131 -17v-200h-137v206q-87 13 -156 50.5t-118 104t-75 166t-26 236.5z" />
+<glyph unicode="&#xa3;" d="M68 0v154q44 11 80.5 31.5t63 54.5t41.5 82.5t15 115.5v213h-198v137h198v324q0 87 29.5 155.5t82 116t125.5 72.5t161 25q106 0 193 -22.5t153 -57.5l-66 -144q-56 29 -126.5 50.5t-145.5 21.5q-48 0 -89 -13.5t-71 -43t-46.5 -76.5t-16.5 -113v-295h376v-137h-376v-211 q0 -62 -11.5 -106.5t-31 -76.5t-45 -53.5t-52.5 -37.5h748v-166h-991z" />
+<glyph unicode="&#xa4;" d="M123 1065l98 98l127 -129q47 32 101 50t114 18t113.5 -18t99.5 -50l129 129l99 -96l-130 -129q31 -46 49.5 -100.5t18.5 -114.5t-17.5 -115t-50.5 -100l127 -127l-96 -96l-129 127q-46 -31 -99.5 -48.5t-113.5 -17.5t-115 18t-100 50l-127 -127l-96 96l127 127 q-31 45 -48.5 99t-17.5 114q0 59 17.5 112.5t48.5 100.5zM324 723q0 -50 18.5 -93.5t51 -76t76 -51.5t93.5 -19q51 0 95.5 19t77.5 51.5t52 76t19 93.5q0 51 -19 95.5t-52 77.5t-77.5 52t-95.5 19q-50 0 -93.5 -19t-76 -52t-51 -77.5t-18.5 -95.5z" />
+<glyph unicode="&#xa5;" d="M29 1462h192l342 -739l346 739h191l-385 -768h239v-137h-301v-158h301v-137h-301v-262h-178v262h-301v137h301v158h-301v137h234z" />
+<glyph unicode="&#xa6;" d="M489 289h150v-781h-150v781zM489 776v780h150v-780h-150z" />
+<glyph unicode="&#xa7;" horiz-adv-x="995" d="M121 55v158q31 -15 69 -30t80 -26.5t86.5 -18.5t87.5 -7q69 0 115.5 12t74 31.5t39 45t11.5 52.5q0 29 -8.5 51.5t-34 45t-72.5 47t-123 55.5q-73 31 -130.5 62t-97.5 70t-60.5 89t-20.5 117q0 51 13 92.5t35.5 73.5t51.5 54.5t60 37.5q-75 38 -117.5 95t-42.5 141 q0 61 27.5 110t77.5 83t120 52.5t156 18.5q97 0 175.5 -20t150.5 -52l-56 -139q-65 28 -135 47.5t-141 19.5q-99 0 -150 -29.5t-51 -86.5q0 -27 12 -50t40.5 -45t76 -45.5t117.5 -52.5q72 -28 128.5 -60.5t95.5 -71.5t60 -87.5t21 -110.5q0 -52 -12 -94.5t-32.5 -76.5 t-46.5 -58.5t-54 -40.5q69 -38 107 -92.5t38 -132.5q0 -71 -29.5 -126.5t-83.5 -94t-131.5 -58.5t-173.5 -20q-108 0 -186 16.5t-137 48.5zM291 831q0 -37 14 -68.5t45.5 -60.5t82 -56.5t122.5 -57.5l35 -15q20 13 40.5 31t37 41t27 51t10.5 62q0 38 -13 70t-45.5 61.5 t-86.5 58t-136 58.5q-25 -8 -48.5 -23.5t-42.5 -38t-30.5 -51.5t-11.5 -62z" />
+<glyph unicode="&#xa8;" horiz-adv-x="1182" d="M307 1395q0 54 28 78t68 24q39 0 68 -24.5t29 -77.5t-29 -78t-68 -25q-40 0 -68 25t-28 78zM682 1395q0 54 28 78t68 24q19 0 36.5 -6t30.5 -18.5t21 -31.5t8 -46q0 -53 -29 -78t-67 -25q-40 0 -68 25t-28 78z" />
+<glyph unicode="&#xa9;" horiz-adv-x="1704" d="M100 731q0 104 27 200t75.5 179.5t117.5 152.5t152.5 117.5t179.5 75.5t200 27t200 -27t179.5 -75.5t152.5 -117.5t117.5 -152.5t75.5 -179.5t27 -200t-27 -200t-75.5 -179.5t-117.5 -152t-152.5 -117.5t-179.5 -75.5t-200 -26.5t-200 26.5t-179.5 75.5t-152.5 117.5 t-117.5 152t-75.5 179.5t-27 200zM209 731q0 -133 50.5 -250t138 -204.5t204.5 -138t250 -50.5t250 50.5t204.5 138t138 204.5t50.5 250t-50.5 250t-138 204.5t-204.5 138t-250 50.5t-250 -50.5t-204.5 -138t-138 -204.5t-50.5 -250zM479 733q0 101 27 184.5t79.5 143.5 t129 93.5t176.5 33.5q63 0 129 -16.5t125 -45.5l-62 -127q-52 26 -100.5 40t-91.5 14q-61 0 -108 -22t-79 -63.5t-48.5 -101.5t-16.5 -135q0 -78 14.5 -138t45 -101t78 -62.5t114.5 -21.5q23 0 50 3.5t55.5 9.5t56.5 14.5t53 17.5v-131q-24 -11 -48.5 -20t-51 -16 t-56.5 -10.5t-65 -3.5q-102 0 -178 33t-126.5 94t-76 146t-25.5 188z" />
+<glyph unicode="&#xaa;" horiz-adv-x="678" d="M68 989q0 102 70.5 156t213.5 59l99 4v31q0 72 -30.5 100.5t-86.5 28.5q-48 0 -93 -14.5t-87 -36.5l-48 100q51 26 109.5 44t118.5 18q125 0 184.5 -53t59.5 -175v-454h-91l-28 82q-18 -22 -37.5 -39.5t-43 -30t-51.5 -19t-63 -6.5q-43 0 -79 13t-62 38.5t-40.5 64 t-14.5 89.5zM199 987q0 -51 25 -73.5t67 -22.5q34 0 63 10.5t50.5 32.5t34 54.5t12.5 76.5v49l-74 -4q-51 -3 -85 -12t-54.5 -24t-29.5 -36.5t-9 -50.5z" />
+<glyph unicode="&#xab;" horiz-adv-x="997" d="M82 526v27l309 414l117 -78l-238 -348l238 -348l-117 -78zM489 526v27l310 414l116 -78l-237 -348l237 -348l-116 -78z" />
+<glyph unicode="&#xac;" d="M102 647v150h924v-535h-149v385h-775z" />
+<glyph unicode="&#xad;" horiz-adv-x="659" d="M82 465v168h496v-168h-496z" />
+<glyph unicode="&#xae;" horiz-adv-x="1704" d="M100 731q0 104 27 200t75.5 179.5t117.5 152.5t152.5 117.5t179.5 75.5t200 27t200 -27t179.5 -75.5t152.5 -117.5t117.5 -152.5t75.5 -179.5t27 -200t-27 -200t-75.5 -179.5t-117.5 -152t-152.5 -117.5t-179.5 -75.5t-200 -26.5t-200 26.5t-179.5 75.5t-152.5 117.5 t-117.5 152t-75.5 179.5t-27 200zM209 731q0 -133 50.5 -250t138 -204.5t204.5 -138t250 -50.5t250 50.5t204.5 138t138 204.5t50.5 250t-50.5 250t-138 204.5t-204.5 138t-250 50.5t-250 -50.5t-204.5 -138t-138 -204.5t-50.5 -250zM586 285v893h233q168 0 247 -65t79 -200 q0 -48 -13.5 -85.5t-36 -66t-51 -48.5t-59.5 -33q67 -110 120 -197q23 -37 44 -72.5t37.5 -63.5t26.5 -45l10 -17h-179l-206 352h-95v-352h-157zM743 768h72q91 0 130.5 36t39.5 105q0 74 -41.5 103.5t-130.5 29.5h-70v-274z" />
+<glyph unicode="&#xaf;" horiz-adv-x="1024" d="M-6 1556v140h1036v-140h-1036z" />
+<glyph unicode="&#xb0;" horiz-adv-x="877" d="M123 1167q0 65 25 122.5t67.5 100.5t100 68t122.5 25t122.5 -25t100.5 -68t68 -100.5t25 -122.5t-25 -122t-68 -99.5t-100.5 -67t-122.5 -24.5t-122.5 24.5t-100 67t-67.5 99.5t-25 122zM246 1167q0 -39 15 -73.5t41 -60.5t61 -41t75 -15t75 15t61.5 41t41.5 60.5 t15 73.5q0 40 -15 75.5t-41.5 62t-61.5 42t-75 15.5t-75 -15.5t-61 -42t-41 -62t-15 -75.5z" />
+<glyph unicode="&#xb1;" d="M102 0v150h924v-150h-924zM102 647v150h387v389h150v-389h387v-150h-387v-385h-150v385h-387z" />
+<glyph unicode="&#xb2;" horiz-adv-x="678" d="M49 586v112l209 228q57 62 93 104.5t56 76t27.5 63t7.5 63.5q0 65 -33 97t-87 32q-51 0 -97.5 -25t-91.5 -63l-78 94q54 48 120.5 80.5t148.5 32.5q60 0 108.5 -16.5t82.5 -48t52.5 -77t18.5 -102.5q0 -50 -14.5 -93t-41.5 -85.5t-66.5 -88t-90.5 -100.5l-148 -157h396 v-127h-572z" />
+<glyph unicode="&#xb3;" horiz-adv-x="678" d="M31 625v133q63 -34 129 -53t119 -19q98 0 142 41.5t44 114.5q0 74 -53.5 107.5t-149.5 33.5h-98v113h98q92 0 134 39.5t42 103.5q0 32 -10 55.5t-27.5 38.5t-41 22t-50.5 7q-59 0 -107.5 -20.5t-99.5 -57.5l-69 96q29 23 59.5 41.5t64.5 31.5t72 20.5t82 7.5 q69 0 121.5 -17t87.5 -47t52.5 -71.5t17.5 -90.5q0 -78 -40.5 -131t-109.5 -77q88 -23 132 -76t44 -131q0 -60 -20 -110t-61.5 -85.5t-104.5 -55.5t-149 -20q-70 0 -131.5 12.5t-118.5 43.5z" />
+<glyph unicode="&#xb4;" horiz-adv-x="1182" d="M393 1241v27q22 29 45.5 67t47 78.5t44.5 81t37 74.5h219v-21q-16 -27 -47.5 -67.5t-70 -84.5t-79 -85.5t-75.5 -69.5h-121z" />
+<glyph unicode="&#xb5;" horiz-adv-x="1217" d="M174 -492v1590h182v-707q0 -130 53 -195t164 -65q82 0 137 26t88.5 76.5t47.5 124.5t14 170v570h182v-1098h-147l-27 147h-10q-48 -83 -120 -125t-175 -42q-72 0 -125 23t-88 65q1 -38 3 -78q2 -35 2.5 -77.5t0.5 -84.5v-320h-182z" />
+<glyph unicode="&#xb6;" horiz-adv-x="1341" d="M113 1042q0 147 32.5 245.5t92 158.5t142.5 85t183 25h563v-1816h-120v1657h-207v-1657h-121v819q-61 -18 -146 -18q-95 0 -172.5 25.5t-132 84.5t-84.5 155t-30 236z" />
+<glyph unicode="&#xb7;" horiz-adv-x="549" d="M147 723q0 38 10 64.5t27 43t40 24t50 7.5q26 0 49.5 -7.5t40.5 -24t27 -43t10 -64.5q0 -37 -10 -63t-27 -43t-40.5 -25t-49.5 -8q-27 0 -50 8t-40 25t-27 43t-10 63z" />
+<glyph unicode="&#xb8;" horiz-adv-x="420" d="M35 -375q15 -3 39.5 -4.5t40.5 -1.5q71 0 111 21.5t40 70.5q0 24 -13 41.5t-36 30.5t-54.5 22.5t-68.5 18.5l90 176h121l-57 -115q34 -8 63 -21t50.5 -33.5t34 -49.5t12.5 -68q0 -97 -70.5 -151t-220.5 -54q-22 0 -44.5 3t-37.5 6v108z" />
+<glyph unicode="&#xb9;" horiz-adv-x="678" d="M63 1274l244 188h135v-876h-145v516q0 25 0.5 55t2 60t3 58t2.5 50q-14 -17 -33 -37t-41 -37l-94 -73z" />
+<glyph unicode="&#xba;" horiz-adv-x="717" d="M66 1133q0 83 20.5 147.5t58.5 108.5t92.5 67t122.5 23q62 0 115.5 -23t92.5 -67t61 -108.5t22 -147.5t-20.5 -148t-59 -109.5t-93 -68t-122.5 -23.5q-63 0 -116 23.5t-92 68t-60.5 109.5t-21.5 148zM197 1133q0 -119 37.5 -179.5t123.5 -60.5q85 0 122.5 60.5 t37.5 179.5q0 120 -37.5 177.5t-122.5 57.5q-86 0 -123.5 -57.5t-37.5 -177.5z" />
+<glyph unicode="&#xbb;" horiz-adv-x="997" d="M84 193l238 348l-238 348l117 78l309 -414v-27l-309 -411zM492 193l237 348l-237 348l116 78l310 -414v-27l-310 -411z" />
+<glyph unicode="&#xbc;" horiz-adv-x="1509" d="M63 1274l244 188h135v-876h-145v516q0 25 0.5 55t2 60t3 58t2.5 50q-14 -17 -33 -37t-41 -37l-94 -73zM234 0l811 1462h157l-811 -1462h-157zM776 193v111l377 579h141v-563h125v-127h-125v-192h-143v192h-375zM922 320h229v195q0 42 1.5 91.5t4.5 98.5q-5 -11 -15 -29.5 t-21 -39.5t-23 -41l-21 -35z" />
+<glyph unicode="&#xbd;" horiz-adv-x="1509" d="M44 1274l244 188h135v-876h-145v516q0 25 0.5 55t2 60t3 58t2.5 50q-14 -17 -33 -37t-41 -37l-94 -73zM213 0l811 1462h157l-811 -1462h-157zM868 1v112l209 228q57 62 93 104.5t56 76t27.5 63t7.5 63.5q0 65 -33 97t-87 32q-51 0 -97.5 -25t-91.5 -63l-78 94 q54 48 120.5 80.5t148.5 32.5q60 0 108.5 -16.5t82.5 -48t52.5 -77t18.5 -102.5q0 -50 -14.5 -93t-41.5 -85.5t-66.5 -88t-90.5 -100.5l-148 -157h396v-127h-572z" />
+<glyph unicode="&#xbe;" horiz-adv-x="1509" d="M31 625v133q63 -34 129 -53t119 -19q98 0 142 41.5t44 114.5q0 74 -53.5 107.5t-149.5 33.5h-98v113h98q92 0 134 39.5t42 103.5q0 32 -10 55.5t-27.5 38.5t-41 22t-50.5 7q-59 0 -107.5 -20.5t-99.5 -57.5l-69 96q29 23 59.5 41.5t64.5 31.5t72 20.5t82 7.5 q69 0 121.5 -17t87.5 -47t52.5 -71.5t17.5 -90.5q0 -78 -40.5 -131t-109.5 -77q88 -23 132 -76t44 -131q0 -60 -20 -110t-61.5 -85.5t-104.5 -55.5t-149 -20q-70 0 -131.5 12.5t-118.5 43.5zM328 0l811 1462h157l-811 -1462h-157zM843 193v111l377 579h141v-563h125v-127 h-125v-192h-143v192h-375zM989 320h229v195q0 42 1.5 91.5t4.5 98.5q-5 -11 -15 -29.5t-21 -39.5t-23 -41l-21 -35z" />
+<glyph unicode="&#xbf;" horiz-adv-x="872" d="M68 -20q0 68 13.5 120t40 97t67 87t94.5 89q52 45 85 78.5t52 64.5t26 64.5t7 76.5v19h139v-37q0 -58 -8 -103.5t-27.5 -86t-52 -78.5t-82.5 -80q-48 -41 -82 -74.5t-55.5 -68t-32 -74t-10.5 -92.5q0 -48 15 -87.5t43.5 -68t71 -44t97.5 -15.5q84 0 159 25.5t144 60.5 l64 -146q-82 -42 -176 -71t-191 -29q-93 0 -167.5 25.5t-126 73.5t-79.5 117t-28 157zM385 979q0 37 10 63t27.5 43t40.5 25t49 8q27 0 50 -8t40.5 -25t27 -43t9.5 -63q0 -38 -9.5 -64.5t-27 -43t-40.5 -24t-50 -7.5q-26 0 -49 7.5t-40.5 24t-27.5 43t-10 64.5z" />
+<glyph unicode="&#xc0;" horiz-adv-x="1245" d="M0 0l537 1468h170l538 -1468h-190l-160 453h-545l-162 -453h-188zM410 618h426l-148 424q-6 18 -14.5 44t-17.5 56t-18 62.5t-17 63.5q-7 -31 -16 -64t-18 -63.5t-17.5 -56t-14.5 -42.5zM326 1886v21h219q16 -34 37.5 -74.5t44.5 -81t47 -78.5t45 -67v-27h-120 q-35 28 -76 69.5t-79.5 85.5t-70 84.5t-47.5 67.5z" />
+<glyph unicode="&#xc1;" horiz-adv-x="1245" d="M0 0l537 1468h170l538 -1468h-190l-160 453h-545l-162 -453h-188zM410 618h426l-148 424q-6 18 -14.5 44t-17.5 56t-18 62.5t-17 63.5q-7 -31 -16 -64t-18 -63.5t-17.5 -56t-14.5 -42.5zM534 1579v27q22 29 45.5 67t47 78.5t44.5 81t37 74.5h219v-21q-16 -27 -47.5 -67.5 t-70 -84.5t-79 -85.5t-75.5 -69.5h-121z" />
+<glyph unicode="&#xc2;" horiz-adv-x="1245" d="M0 0l537 1468h170l538 -1468h-190l-160 453h-545l-162 -453h-188zM410 618h426l-148 424q-6 18 -14.5 44t-17.5 56t-18 62.5t-17 63.5q-7 -31 -16 -64t-18 -63.5t-17.5 -56t-14.5 -42.5zM289 1579v27q26 29 60 67t67.5 78.5t63 81t45.5 74.5h192q16 -34 45.5 -74.5 t63 -81t68 -78.5t59.5 -67v-27h-121q-51 34 -105 82.5t-106 103.5q-54 -55 -107 -103.5t-104 -82.5h-121z" />
+<glyph unicode="&#xc3;" horiz-adv-x="1245" d="M0 0l537 1468h170l538 -1468h-190l-160 453h-545l-162 -453h-188zM410 618h426l-148 424q-6 18 -14.5 44t-17.5 56t-18 62.5t-17 63.5q-7 -31 -16 -64t-18 -63.5t-17.5 -56t-14.5 -42.5zM264 1579q5 60 21.5 109t43 83.5t63.5 53t83 18.5q42 0 82.5 -17.5t78.5 -38.5 t72.5 -38.5t63.5 -17.5q45 0 68 26t38 88h105q-5 -60 -21.5 -108.5t-43 -83t-63.5 -53.5t-83 -19q-40 0 -79.5 17.5t-77.5 39t-73 39t-67 17.5q-45 0 -69 -26.5t-38 -88.5h-104z" />
+<glyph unicode="&#xc4;" horiz-adv-x="1245" d="M0 0l537 1468h170l538 -1468h-190l-160 453h-545l-162 -453h-188zM410 618h426l-148 424q-6 18 -14.5 44t-17.5 56t-18 62.5t-17 63.5q-7 -31 -16 -64t-18 -63.5t-17.5 -56t-14.5 -42.5zM340 1733q0 54 28 78t68 24q39 0 68 -24.5t29 -77.5t-29 -78t-68 -25q-40 0 -68 25 t-28 78zM715 1733q0 54 28 78t68 24q19 0 36.5 -6t30.5 -18.5t21 -31.5t8 -46q0 -53 -29 -78t-67 -25q-40 0 -68 25t-28 78z" />
+<glyph unicode="&#xc5;" horiz-adv-x="1245" d="M0 0l537 1468h170l538 -1468h-190l-160 453h-545l-162 -453h-188zM410 618h426l-148 424q-6 18 -14.5 44t-17.5 56t-18 62.5t-17 63.5q-7 -31 -16 -64t-18 -63.5t-17.5 -56t-14.5 -42.5zM396 1581q0 51 16 90.5t45.5 67.5t70.5 42.5t91 14.5q48 0 90 -14.5t73 -42 t48.5 -67t17.5 -89.5q0 -51 -17.5 -91.5t-48 -68.5t-72.5 -42.5t-91 -14.5q-50 0 -91 14.5t-70.5 42.5t-45.5 67.5t-16 90.5zM506 1581q0 -53 28.5 -83t84.5 -30q49 0 80.5 30t31.5 83t-31.5 83t-80.5 30q-50 0 -81.5 -30t-31.5 -83z" />
+<glyph unicode="&#xc6;" horiz-adv-x="1745" d="M-2 0l655 1462h969v-164h-573v-452h534v-162h-534v-520h573v-164h-760v453h-475l-203 -453h-186zM459 618h403v680h-108z" />
+<glyph unicode="&#xc7;" horiz-adv-x="1235" d="M125 733q0 166 43.5 304t128 237t209.5 154t287 55q108 0 206 -22t177 -64l-78 -156q-63 32 -137 55t-168 23q-107 0 -194 -40.5t-148.5 -116.5t-95 -185t-33.5 -246q0 -141 29.5 -250.5t88.5 -184.5t147 -114t206 -39q89 0 169 17.5t158 40.5v-162q-39 -15 -78 -26.5 t-81.5 -18.5t-91 -10.5t-107.5 -3.5q-164 0 -284 54t-198.5 153t-116.5 238t-38 308zM543 -375q15 -3 39.5 -4.5t40.5 -1.5q71 0 111 21.5t40 70.5q0 24 -13 41.5t-36 30.5t-54.5 22.5t-68.5 18.5l90 176h121l-57 -115q34 -8 63 -21t50.5 -33.5t34 -49.5t12.5 -68 q0 -97 -70.5 -151t-220.5 -54q-22 0 -44.5 3t-37.5 6v108z" />
+<glyph unicode="&#xc8;" horiz-adv-x="1081" d="M199 0v1462h759v-164h-573v-452h535v-162h-535v-520h573v-164h-759zM320 1886v21h219q16 -34 37.5 -74.5t44.5 -81t47 -78.5t45 -67v-27h-120q-35 28 -76 69.5t-79.5 85.5t-70 84.5t-47.5 67.5z" />
+<glyph unicode="&#xc9;" horiz-adv-x="1081" d="M199 0v1462h759v-164h-573v-452h535v-162h-535v-520h573v-164h-759zM456 1579v27q22 29 45.5 67t47 78.5t44.5 81t37 74.5h219v-21q-16 -27 -47.5 -67.5t-70 -84.5t-79 -85.5t-75.5 -69.5h-121z" />
+<glyph unicode="&#xca;" horiz-adv-x="1081" d="M199 0v1462h759v-164h-573v-452h535v-162h-535v-520h573v-164h-759zM243 1579v27q26 29 60 67t67.5 78.5t63 81t45.5 74.5h192q16 -34 45.5 -74.5t63 -81t68 -78.5t59.5 -67v-27h-121q-51 34 -105 82.5t-106 103.5q-54 -55 -107 -103.5t-104 -82.5h-121z" />
+<glyph unicode="&#xcb;" horiz-adv-x="1081" d="M199 0v1462h759v-164h-573v-452h535v-162h-535v-520h573v-164h-759zM296 1733q0 54 28 78t68 24q39 0 68 -24.5t29 -77.5t-29 -78t-68 -25q-40 0 -68 25t-28 78zM671 1733q0 54 28 78t68 24q19 0 36.5 -6t30.5 -18.5t21 -31.5t8 -46q0 -53 -29 -78t-67 -25q-40 0 -68 25 t-28 78z" />
+<glyph unicode="&#xcc;" horiz-adv-x="694" d="M82 0v102l172 41v1176l-172 41v102h530v-102l-172 -41v-1176l172 -41v-102h-530zM62 1886v21h219q16 -34 37.5 -74.5t44.5 -81t47 -78.5t45 -67v-27h-120q-35 28 -76 69.5t-79.5 85.5t-70 84.5t-47.5 67.5z" />
+<glyph unicode="&#xcd;" horiz-adv-x="694" d="M82 0v102l172 41v1176l-172 41v102h530v-102l-172 -41v-1176l172 -41v-102h-530zM257 1579v27q22 29 45.5 67t47 78.5t44.5 81t37 74.5h219v-21q-16 -27 -47.5 -67.5t-70 -84.5t-79 -85.5t-75.5 -69.5h-121z" />
+<glyph unicode="&#xce;" horiz-adv-x="694" d="M82 0v102l172 41v1176l-172 41v102h530v-102l-172 -41v-1176l172 -41v-102h-530zM17 1579v27q26 29 60 67t67.5 78.5t63 81t45.5 74.5h192q16 -34 45.5 -74.5t63 -81t68 -78.5t59.5 -67v-27h-121q-51 34 -105 82.5t-106 103.5q-54 -55 -107 -103.5t-104 -82.5h-121z" />
+<glyph unicode="&#xcf;" horiz-adv-x="694" d="M82 0v102l172 41v1176l-172 41v102h530v-102l-172 -41v-1176l172 -41v-102h-530zM64 1733q0 54 28 78t68 24q39 0 68 -24.5t29 -77.5t-29 -78t-68 -25q-40 0 -68 25t-28 78zM439 1733q0 54 28 78t68 24q19 0 36.5 -6t30.5 -18.5t21 -31.5t8 -46q0 -53 -29 -78t-67 -25 q-40 0 -68 25t-28 78z" />
+<glyph unicode="&#xd0;" horiz-adv-x="1401" d="M47 643v162h152v657h407q153 0 277 -46t211 -136.5t134.5 -224.5t47.5 -310q0 -185 -48 -324.5t-139 -233t-223.5 -140.5t-300.5 -47h-366v643h-152zM385 160h162q264 0 398 146t134 433q0 146 -33 252.5t-96 175.5t-155 102.5t-209 33.5h-201v-498h336v-162h-336v-483z " />
+<glyph unicode="&#xd1;" horiz-adv-x="1493" d="M199 0v1462h213l716 -1204h7q-3 76 -7 150q0 32 -2 66l-4 66q-2 34 -2 65v57v800h174v-1462h-215l-719 1210h-8q6 -77 10 -153q4 -65 6.5 -136t2.5 -128v-793h-172zM397 1579q5 60 21.5 109t43 83.5t63.5 53t83 18.5q42 0 82.5 -17.5t78.5 -38.5t72.5 -38.5t63.5 -17.5 q45 0 68 26t38 88h105q-5 -60 -21.5 -108.5t-43 -83t-63.5 -53.5t-83 -19q-40 0 -79.5 17.5t-77.5 39t-73 39t-67 17.5q-45 0 -69 -26.5t-38 -88.5h-104z" />
+<glyph unicode="&#xd2;" horiz-adv-x="1520" d="M125 735q0 170 38 308.5t117 236.5t199 151.5t283 53.5q155 0 272.5 -53.5t197.5 -152t120.5 -237t40.5 -309.5q0 -169 -40.5 -308t-120.5 -238t-198.5 -153t-273.5 -54q-163 0 -282.5 54t-198 153t-116.5 238.5t-38 309.5zM322 733q0 -137 26 -246.5t79.5 -186t136 -117 t196.5 -40.5t196.5 40.5t136 117t78.5 186t25 246.5q0 138 -25 247t-78 184.5t-135 116t-196 40.5t-197 -40.5t-137 -116t-80 -184.5t-26 -247zM477 1886v21h219q16 -34 37.5 -74.5t44.5 -81t47 -78.5t45 -67v-27h-120q-35 28 -76 69.5t-79.5 85.5t-70 84.5t-47.5 67.5z" />
+<glyph unicode="&#xd3;" horiz-adv-x="1520" d="M125 735q0 170 38 308.5t117 236.5t199 151.5t283 53.5q155 0 272.5 -53.5t197.5 -152t120.5 -237t40.5 -309.5q0 -169 -40.5 -308t-120.5 -238t-198.5 -153t-273.5 -54q-163 0 -282.5 54t-198 153t-116.5 238.5t-38 309.5zM322 733q0 -137 26 -246.5t79.5 -186t136 -117 t196.5 -40.5t196.5 40.5t136 117t78.5 186t25 246.5q0 138 -25 247t-78 184.5t-135 116t-196 40.5t-197 -40.5t-137 -116t-80 -184.5t-26 -247zM651 1579v27q22 29 45.5 67t47 78.5t44.5 81t37 74.5h219v-21q-16 -27 -47.5 -67.5t-70 -84.5t-79 -85.5t-75.5 -69.5h-121z" />
+<glyph unicode="&#xd4;" horiz-adv-x="1520" d="M125 735q0 170 38 308.5t117 236.5t199 151.5t283 53.5q155 0 272.5 -53.5t197.5 -152t120.5 -237t40.5 -309.5q0 -169 -40.5 -308t-120.5 -238t-198.5 -153t-273.5 -54q-163 0 -282.5 54t-198 153t-116.5 238.5t-38 309.5zM322 733q0 -137 26 -246.5t79.5 -186t136 -117 t196.5 -40.5t196.5 40.5t136 117t78.5 186t25 246.5q0 138 -25 247t-78 184.5t-135 116t-196 40.5t-197 -40.5t-137 -116t-80 -184.5t-26 -247zM432 1579v27q26 29 60 67t67.5 78.5t63 81t45.5 74.5h192q16 -34 45.5 -74.5t63 -81t68 -78.5t59.5 -67v-27h-121 q-51 34 -105 82.5t-106 103.5q-54 -55 -107 -103.5t-104 -82.5h-121z" />
+<glyph unicode="&#xd5;" horiz-adv-x="1520" d="M125 735q0 170 38 308.5t117 236.5t199 151.5t283 53.5q155 0 272.5 -53.5t197.5 -152t120.5 -237t40.5 -309.5q0 -169 -40.5 -308t-120.5 -238t-198.5 -153t-273.5 -54q-163 0 -282.5 54t-198 153t-116.5 238.5t-38 309.5zM322 733q0 -137 26 -246.5t79.5 -186t136 -117 t196.5 -40.5t196.5 40.5t136 117t78.5 186t25 246.5q0 138 -25 247t-78 184.5t-135 116t-196 40.5t-197 -40.5t-137 -116t-80 -184.5t-26 -247zM383 1579q5 60 21.5 109t43 83.5t63.5 53t83 18.5q42 0 82.5 -17.5t78.5 -38.5t72.5 -38.5t63.5 -17.5q45 0 68 26t38 88h105 q-5 -60 -21.5 -108.5t-43 -83t-63.5 -53.5t-83 -19q-40 0 -79.5 17.5t-77.5 39t-73 39t-67 17.5q-45 0 -69 -26.5t-38 -88.5h-104z" />
+<glyph unicode="&#xd6;" horiz-adv-x="1520" d="M125 735q0 170 38 308.5t117 236.5t199 151.5t283 53.5q155 0 272.5 -53.5t197.5 -152t120.5 -237t40.5 -309.5q0 -169 -40.5 -308t-120.5 -238t-198.5 -153t-273.5 -54q-163 0 -282.5 54t-198 153t-116.5 238.5t-38 309.5zM322 733q0 -137 26 -246.5t79.5 -186t136 -117 t196.5 -40.5t196.5 40.5t136 117t78.5 186t25 246.5q0 138 -25 247t-78 184.5t-135 116t-196 40.5t-197 -40.5t-137 -116t-80 -184.5t-26 -247zM477 1733q0 54 28 78t68 24q39 0 68 -24.5t29 -77.5t-29 -78t-68 -25q-40 0 -68 25t-28 78zM852 1733q0 54 28 78t68 24 q19 0 36.5 -6t30.5 -18.5t21 -31.5t8 -46q0 -53 -29 -78t-67 -25q-40 0 -68 25t-28 78z" />
+<glyph unicode="&#xd7;" d="M141 1042l105 105l317 -318l322 318l104 -103l-321 -321l319 -320l-102 -102l-322 317l-317 -315l-103 103l316 317z" />
+<glyph unicode="&#xd8;" horiz-adv-x="1520" d="M125 735q0 170 38 308.5t117 236.5t199 151.5t283 53.5q94 0 174.5 -21t146.5 -59l80 127l137 -78l-92 -149q91 -99 138 -244t47 -328q0 -169 -40.5 -308t-120.5 -238t-198.5 -153t-273.5 -54q-189 0 -322 71l-78 -127l-137 78l90 145q-97 100 -142.5 249t-45.5 339z M322 733q0 -131 23 -235.5t71 -182.5l579 945q-48 29 -105 45t-128 16q-114 0 -197 -40.5t-137 -116t-80 -184.5t-26 -247zM530 201q47 -28 104 -43t126 -15q114 0 196.5 40.5t136 117t78.5 186t25 246.5q0 257 -88 408z" />
+<glyph unicode="&#xd9;" horiz-adv-x="1430" d="M184 520v942h187v-952q0 -175 86.5 -271t261.5 -96q89 0 153 27t105 76t61 117t21 149v952h186v-948q0 -114 -33 -212t-99.5 -170t-167 -113t-236.5 -41q-128 0 -226 38.5t-164.5 109.5t-100.5 170.5t-34 221.5zM454 1886v21h219q16 -34 37.5 -74.5t44.5 -81t47 -78.5 t45 -67v-27h-120q-35 28 -76 69.5t-79.5 85.5t-70 84.5t-47.5 67.5z" />
+<glyph unicode="&#xda;" horiz-adv-x="1430" d="M184 520v942h187v-952q0 -175 86.5 -271t261.5 -96q89 0 153 27t105 76t61 117t21 149v952h186v-948q0 -114 -33 -212t-99.5 -170t-167 -113t-236.5 -41q-128 0 -226 38.5t-164.5 109.5t-100.5 170.5t-34 221.5zM590 1579v27q22 29 45.5 67t47 78.5t44.5 81t37 74.5h219 v-21q-16 -27 -47.5 -67.5t-70 -84.5t-79 -85.5t-75.5 -69.5h-121z" />
+<glyph unicode="&#xdb;" horiz-adv-x="1430" d="M184 520v942h187v-952q0 -175 86.5 -271t261.5 -96q89 0 153 27t105 76t61 117t21 149v952h186v-948q0 -114 -33 -212t-99.5 -170t-167 -113t-236.5 -41q-128 0 -226 38.5t-164.5 109.5t-100.5 170.5t-34 221.5zM379 1579v27q26 29 60 67t67.5 78.5t63 81t45.5 74.5h192 q16 -34 45.5 -74.5t63 -81t68 -78.5t59.5 -67v-27h-121q-51 34 -105 82.5t-106 103.5q-54 -55 -107 -103.5t-104 -82.5h-121z" />
+<glyph unicode="&#xdc;" horiz-adv-x="1430" d="M184 520v942h187v-952q0 -175 86.5 -271t261.5 -96q89 0 153 27t105 76t61 117t21 149v952h186v-948q0 -114 -33 -212t-99.5 -170t-167 -113t-236.5 -41q-128 0 -226 38.5t-164.5 109.5t-100.5 170.5t-34 221.5zM432 1733q0 54 28 78t68 24q39 0 68 -24.5t29 -77.5 t-29 -78t-68 -25q-40 0 -68 25t-28 78zM807 1733q0 54 28 78t68 24q19 0 36.5 -6t30.5 -18.5t21 -31.5t8 -46q0 -53 -29 -78t-67 -25q-40 0 -68 25t-28 78z" />
+<glyph unicode="&#xdd;" horiz-adv-x="1079" d="M0 1462h203l336 -739l340 739h200l-446 -893v-569h-187v559zM442 1579v27q22 29 45.5 67t47 78.5t44.5 81t37 74.5h219v-21q-16 -27 -47.5 -67.5t-70 -84.5t-79 -85.5t-75.5 -69.5h-121z" />
+<glyph unicode="&#xde;" horiz-adv-x="1180" d="M199 0v1462h186v-252h176q134 0 231 -28.5t160 -83t93 -134.5t30 -182q0 -91 -27.5 -175t-90.5 -148.5t-166.5 -103t-255.5 -38.5h-150v-317h-186zM385 475h129q93 0 162.5 16t115 51.5t68.5 92t23 137.5q0 143 -82 211t-256 68h-160v-576z" />
+<glyph unicode="&#xdf;" horiz-adv-x="1233" d="M174 0v1200q0 104 31.5 174.5t88 113t134.5 61t170 18.5t168 -19t130 -57t84 -96t30 -135q0 -57 -21.5 -101.5t-53 -81t-69 -66.5t-69 -57.5t-53 -54.5t-21.5 -57q0 -21 7 -37.5t26.5 -36t54.5 -44t92 -62.5q56 -37 100 -73t74.5 -77t47 -89t16.5 -110q0 -87 -28 -150 t-78.5 -103.5t-121 -60t-155.5 -19.5q-97 0 -166.5 17.5t-122.5 51.5v166q26 -16 58.5 -31.5t68.5 -27.5t74 -19.5t75 -7.5q56 0 96.5 12.5t66.5 35t38 54.5t12 72q0 36 -8.5 65.5t-30 57.5t-57.5 57t-92 64q-63 40 -105.5 74t-69 67.5t-37.5 68.5t-11 77q0 54 20.5 93.5 t51.5 71t67 58.5t67 56t51.5 62.5t20.5 77.5q0 42 -16.5 73t-46.5 51.5t-71.5 30t-92.5 9.5q-49 0 -93 -9.5t-77 -33.5t-52.5 -65.5t-19.5 -106.5v-1202h-182z" />
+<glyph unicode="&#xe0;" horiz-adv-x="1087" d="M94 307q0 164 115.5 252t351.5 96l184 7v69q0 67 -14.5 112t-42 72.5t-68 39.5t-92.5 12q-83 0 -154.5 -24t-137.5 -58l-64 137q74 40 165 68t191 28q102 0 176.5 -20.5t123 -65t72.5 -113.5t24 -167v-752h-131l-37 152h-8q-33 -45 -66 -77.5t-72 -53.5t-87 -31t-111 -10 q-69 0 -127 19.5t-100.5 60t-66.5 102t-24 145.5zM283 305q0 -92 48.5 -135t127.5 -43q61 0 113 19t90 57.5t59.5 97t21.5 137.5v99l-143 -7q-90 -4 -151 -20t-97.5 -44.5t-52.5 -69t-16 -91.5zM285 1548v21h219q16 -34 37.5 -74.5t44.5 -81t47 -78.5t45 -67v-27h-120 q-35 28 -76 69.5t-79.5 85.5t-70 84.5t-47.5 67.5z" />
+<glyph unicode="&#xe1;" horiz-adv-x="1087" d="M94 307q0 164 115.5 252t351.5 96l184 7v69q0 67 -14.5 112t-42 72.5t-68 39.5t-92.5 12q-83 0 -154.5 -24t-137.5 -58l-64 137q74 40 165 68t191 28q102 0 176.5 -20.5t123 -65t72.5 -113.5t24 -167v-752h-131l-37 152h-8q-33 -45 -66 -77.5t-72 -53.5t-87 -31t-111 -10 q-69 0 -127 19.5t-100.5 60t-66.5 102t-24 145.5zM283 305q0 -92 48.5 -135t127.5 -43q61 0 113 19t90 57.5t59.5 97t21.5 137.5v99l-143 -7q-90 -4 -151 -20t-97.5 -44.5t-52.5 -69t-16 -91.5zM446 1241v27q22 29 45.5 67t47 78.5t44.5 81t37 74.5h219v-21 q-16 -27 -47.5 -67.5t-70 -84.5t-79 -85.5t-75.5 -69.5h-121z" />
+<glyph unicode="&#xe2;" horiz-adv-x="1087" d="M94 307q0 164 115.5 252t351.5 96l184 7v69q0 67 -14.5 112t-42 72.5t-68 39.5t-92.5 12q-83 0 -154.5 -24t-137.5 -58l-64 137q74 40 165 68t191 28q102 0 176.5 -20.5t123 -65t72.5 -113.5t24 -167v-752h-131l-37 152h-8q-33 -45 -66 -77.5t-72 -53.5t-87 -31t-111 -10 q-69 0 -127 19.5t-100.5 60t-66.5 102t-24 145.5zM283 305q0 -92 48.5 -135t127.5 -43q61 0 113 19t90 57.5t59.5 97t21.5 137.5v99l-143 -7q-90 -4 -151 -20t-97.5 -44.5t-52.5 -69t-16 -91.5zM228 1241v27q26 29 60 67t67.5 78.5t63 81t45.5 74.5h192q16 -34 45.5 -74.5 t63 -81t68 -78.5t59.5 -67v-27h-121q-51 34 -105 82.5t-106 103.5q-54 -55 -107 -103.5t-104 -82.5h-121z" />
+<glyph unicode="&#xe3;" horiz-adv-x="1087" d="M94 307q0 164 115.5 252t351.5 96l184 7v69q0 67 -14.5 112t-42 72.5t-68 39.5t-92.5 12q-83 0 -154.5 -24t-137.5 -58l-64 137q74 40 165 68t191 28q102 0 176.5 -20.5t123 -65t72.5 -113.5t24 -167v-752h-131l-37 152h-8q-33 -45 -66 -77.5t-72 -53.5t-87 -31t-111 -10 q-69 0 -127 19.5t-100.5 60t-66.5 102t-24 145.5zM283 305q0 -92 48.5 -135t127.5 -43q61 0 113 19t90 57.5t59.5 97t21.5 137.5v99l-143 -7q-90 -4 -151 -20t-97.5 -44.5t-52.5 -69t-16 -91.5zM191 1241q5 60 21.5 109t43 83.5t63.5 53t83 18.5q42 0 82.5 -17.5t78.5 -38.5 t72.5 -38.5t63.5 -17.5q45 0 68 26t38 88h105q-5 -60 -21.5 -108.5t-43 -83t-63.5 -53.5t-83 -19q-40 0 -79.5 17.5t-77.5 39t-73 39t-67 17.5q-45 0 -69 -26.5t-38 -88.5h-104z" />
+<glyph unicode="&#xe4;" horiz-adv-x="1087" d="M94 307q0 164 115.5 252t351.5 96l184 7v69q0 67 -14.5 112t-42 72.5t-68 39.5t-92.5 12q-83 0 -154.5 -24t-137.5 -58l-64 137q74 40 165 68t191 28q102 0 176.5 -20.5t123 -65t72.5 -113.5t24 -167v-752h-131l-37 152h-8q-33 -45 -66 -77.5t-72 -53.5t-87 -31t-111 -10 q-69 0 -127 19.5t-100.5 60t-66.5 102t-24 145.5zM283 305q0 -92 48.5 -135t127.5 -43q61 0 113 19t90 57.5t59.5 97t21.5 137.5v99l-143 -7q-90 -4 -151 -20t-97.5 -44.5t-52.5 -69t-16 -91.5zM273 1395q0 54 28 78t68 24q39 0 68 -24.5t29 -77.5t-29 -78t-68 -25 q-40 0 -68 25t-28 78zM648 1395q0 54 28 78t68 24q19 0 36.5 -6t30.5 -18.5t21 -31.5t8 -46q0 -53 -29 -78t-67 -25q-40 0 -68 25t-28 78z" />
+<glyph unicode="&#xe5;" horiz-adv-x="1087" d="M94 307q0 164 115.5 252t351.5 96l184 7v69q0 67 -14.5 112t-42 72.5t-68 39.5t-92.5 12q-83 0 -154.5 -24t-137.5 -58l-64 137q74 40 165 68t191 28q102 0 176.5 -20.5t123 -65t72.5 -113.5t24 -167v-752h-131l-37 152h-8q-33 -45 -66 -77.5t-72 -53.5t-87 -31t-111 -10 q-69 0 -127 19.5t-100.5 60t-66.5 102t-24 145.5zM283 305q0 -92 48.5 -135t127.5 -43q61 0 113 19t90 57.5t59.5 97t21.5 137.5v99l-143 -7q-90 -4 -151 -20t-97.5 -44.5t-52.5 -69t-16 -91.5zM331 1456q0 51 16 90.5t45.5 67.5t70.5 42.5t91 14.5q48 0 90 -14.5t73 -42 t48.5 -67t17.5 -89.5q0 -51 -17.5 -91.5t-48 -68.5t-72.5 -42.5t-91 -14.5q-50 0 -91 14.5t-70.5 42.5t-45.5 67.5t-16 90.5zM441 1456q0 -53 28.5 -83t84.5 -30q49 0 80.5 30t31.5 83t-31.5 83t-80.5 30q-50 0 -81.5 -30t-31.5 -83z" />
+<glyph unicode="&#xe6;" horiz-adv-x="1706" d="M94 307q0 164 115.5 252t351.5 96l184 7v69q0 67 -14.5 112t-42 72.5t-68 39.5t-92.5 12q-83 0 -154.5 -24t-137.5 -58l-64 137q74 40 165 68t191 28q131 0 214 -42.5t126 -135.5q51 85 134 131.5t186 46.5q97 0 174 -35.5t131 -100t82.5 -155t28.5 -200.5v-113h-672 q5 -193 78.5 -284t220.5 -91q49 0 91.5 5t81.5 14.5t76 24t74 32.5v-162q-39 -19 -76.5 -33t-77 -23t-82 -13t-91.5 -4q-138 0 -239 57t-163 172q-34 -54 -72 -96.5t-85.5 -72t-105.5 -45t-132 -15.5q-71 0 -132.5 19.5t-106.5 60t-71 102t-26 145.5zM283 305 q0 -92 48.5 -135t127.5 -43q61 0 113 19t90 57.5t59.5 97t21.5 137.5v99l-143 -7q-90 -4 -151 -20t-97.5 -44.5t-52.5 -69t-16 -91.5zM936 662h471q0 68 -13 124.5t-40.5 96.5t-69.5 62t-100 22q-110 0 -173.5 -78t-74.5 -227z" />
+<glyph unicode="&#xe7;" horiz-adv-x="948" d="M113 543q0 157 38 266.5t104.5 178t155.5 99.5t191 31q78 0 152.5 -17t124.5 -42l-54 -154q-23 10 -51 19.5t-58 17t-59 12t-55 4.5q-157 0 -229 -100.5t-72 -312.5q0 -211 72.5 -308.5t220.5 -97.5q81 0 146.5 18.5t119.5 43.5v-162q-54 -29 -115.5 -44t-150.5 -15 q-101 0 -189 31.5t-153 100t-102 175t-37 256.5zM357 -375q15 -3 39.5 -4.5t40.5 -1.5q71 0 111 21.5t40 70.5q0 24 -13 41.5t-36 30.5t-54.5 22.5t-68.5 18.5l90 176h121l-57 -115q34 -8 63 -21t50.5 -33.5t34 -49.5t12.5 -68q0 -97 -70.5 -151t-220.5 -54q-22 0 -44.5 3 t-37.5 6v108z" />
+<glyph unicode="&#xe8;" horiz-adv-x="1096" d="M113 541q0 136 33 243t93 181.5t143.5 113.5t184.5 39q99 0 178 -35.5t134 -100t84.5 -155t29.5 -200.5v-113h-692q5 -193 81.5 -284t227.5 -91q51 0 94.5 5t84 14.5t78.5 24t77 32.5v-162q-40 -19 -78.5 -33t-79 -23t-84 -13t-94.5 -4q-110 0 -201 37t-156.5 108 t-101.5 176t-36 240zM305 662h492q0 68 -13.5 124.5t-42 96.5t-72.5 62t-106 22q-114 0 -180.5 -78t-77.5 -227zM285 1548v21h219q16 -34 37.5 -74.5t44.5 -81t47 -78.5t45 -67v-27h-120q-35 28 -76 69.5t-79.5 85.5t-70 84.5t-47.5 67.5z" />
+<glyph unicode="&#xe9;" horiz-adv-x="1096" d="M113 541q0 136 33 243t93 181.5t143.5 113.5t184.5 39q99 0 178 -35.5t134 -100t84.5 -155t29.5 -200.5v-113h-692q5 -193 81.5 -284t227.5 -91q51 0 94.5 5t84 14.5t78.5 24t77 32.5v-162q-40 -19 -78.5 -33t-79 -23t-84 -13t-94.5 -4q-110 0 -201 37t-156.5 108 t-101.5 176t-36 240zM305 662h492q0 68 -13.5 124.5t-42 96.5t-72.5 62t-106 22q-114 0 -180.5 -78t-77.5 -227zM475 1241v27q22 29 45.5 67t47 78.5t44.5 81t37 74.5h219v-21q-16 -27 -47.5 -67.5t-70 -84.5t-79 -85.5t-75.5 -69.5h-121z" />
+<glyph unicode="&#xea;" horiz-adv-x="1096" d="M113 541q0 136 33 243t93 181.5t143.5 113.5t184.5 39q99 0 178 -35.5t134 -100t84.5 -155t29.5 -200.5v-113h-692q5 -193 81.5 -284t227.5 -91q51 0 94.5 5t84 14.5t78.5 24t77 32.5v-162q-40 -19 -78.5 -33t-79 -23t-84 -13t-94.5 -4q-110 0 -201 37t-156.5 108 t-101.5 176t-36 240zM305 662h492q0 68 -13.5 124.5t-42 96.5t-72.5 62t-106 22q-114 0 -180.5 -78t-77.5 -227zM224 1241v27q26 29 60 67t67.5 78.5t63 81t45.5 74.5h192q16 -34 45.5 -74.5t63 -81t68 -78.5t59.5 -67v-27h-121q-51 34 -105 82.5t-106 103.5 q-54 -55 -107 -103.5t-104 -82.5h-121z" />
+<glyph unicode="&#xeb;" horiz-adv-x="1096" d="M113 541q0 136 33 243t93 181.5t143.5 113.5t184.5 39q99 0 178 -35.5t134 -100t84.5 -155t29.5 -200.5v-113h-692q5 -193 81.5 -284t227.5 -91q51 0 94.5 5t84 14.5t78.5 24t77 32.5v-162q-40 -19 -78.5 -33t-79 -23t-84 -13t-94.5 -4q-110 0 -201 37t-156.5 108 t-101.5 176t-36 240zM305 662h492q0 68 -13.5 124.5t-42 96.5t-72.5 62t-106 22q-114 0 -180.5 -78t-77.5 -227zM269 1395q0 54 28 78t68 24q39 0 68 -24.5t29 -77.5t-29 -78t-68 -25q-40 0 -68 25t-28 78zM644 1395q0 54 28 78t68 24q19 0 36.5 -6t30.5 -18.5t21 -31.5 t8 -46q0 -53 -29 -78t-67 -25q-40 0 -68 25t-28 78z" />
+<glyph unicode="&#xec;" horiz-adv-x="530" d="M174 0v1098h182v-1098h-182zM-34 1548v21h219q16 -34 37.5 -74.5t44.5 -81t47 -78.5t45 -67v-27h-120q-35 28 -76 69.5t-79.5 85.5t-70 84.5t-47.5 67.5z" />
+<glyph unicode="&#xed;" horiz-adv-x="530" d="M174 0v1098h182v-1098h-182zM185 1241v27q22 29 45.5 67t47 78.5t44.5 81t37 74.5h219v-21q-16 -27 -47.5 -67.5t-70 -84.5t-79 -85.5t-75.5 -69.5h-121z" />
+<glyph unicode="&#xee;" horiz-adv-x="530" d="M174 0v1098h182v-1098h-182zM-67 1241v27q26 29 60 67t67.5 78.5t63 81t45.5 74.5h192q16 -34 45.5 -74.5t63 -81t68 -78.5t59.5 -67v-27h-121q-51 34 -105 82.5t-106 103.5q-54 -55 -107 -103.5t-104 -82.5h-121z" />
+<glyph unicode="&#xef;" horiz-adv-x="530" d="M174 0v1098h182v-1098h-182zM-18 1395q0 54 28 78t68 24q39 0 68 -24.5t29 -77.5t-29 -78t-68 -25q-40 0 -68 25t-28 78zM357 1395q0 54 28 78t68 24q19 0 36.5 -6t30.5 -18.5t21 -31.5t8 -46q0 -53 -29 -78t-67 -25q-40 0 -68 25t-28 78z" />
+<glyph unicode="&#xf0;" horiz-adv-x="1182" d="M111 477q0 119 31.5 211t90.5 155t143 95.5t189 32.5q102 0 179 -29.5t120 -89.5l8 4q-31 118 -91 214t-150 177l-256 -153l-74 114l217 131q-40 28 -82.5 55.5t-89.5 53.5l70 123q65 -32 126 -68t120 -80l227 138l74 -113l-195 -117q67 -65 122.5 -143t95 -171.5 t61.5 -204t22 -239.5q0 -142 -33.5 -252t-96 -186t-151.5 -115.5t-200 -39.5q-104 0 -191.5 33t-151 96.5t-99 156t-35.5 211.5zM303 471q0 -76 16.5 -138.5t52 -107.5t90 -69.5t130.5 -24.5q154 0 221.5 99.5t67.5 295.5q0 56 -17 109.5t-52 94.5t-90 66t-130 25 q-77 0 -131.5 -23t-89.5 -67t-51.5 -109.5t-16.5 -150.5z" />
+<glyph unicode="&#xf1;" horiz-adv-x="1206" d="M174 0v1098h148l26 -148h10q25 43 59.5 74.5t75.5 52.5t87 31t94 10q183 0 275.5 -95.5t92.5 -305.5v-717h-182v707q0 130 -52.5 195t-164.5 65q-81 0 -136 -26t-88.5 -77t-48 -125t-14.5 -170v-569h-182zM251 1241q5 60 21.5 109t43 83.5t63.5 53t83 18.5 q42 0 82.5 -17.5t78.5 -38.5t72.5 -38.5t63.5 -17.5q45 0 68 26t38 88h105q-5 -60 -21.5 -108.5t-43 -83t-63.5 -53.5t-83 -19q-40 0 -79.5 17.5t-77.5 39t-73 39t-67 17.5q-45 0 -69 -26.5t-38 -88.5h-104z" />
+<glyph unicode="&#xf2;" horiz-adv-x="1182" d="M113 551q0 136 33.5 241.5t95.5 178t151.5 110t200.5 37.5q103 0 190 -37.5t150.5 -110t99 -178t35.5 -241.5q0 -137 -33.5 -243.5t-96 -179t-151.5 -110.5t-200 -38q-103 0 -190 38t-150.5 110.5t-99 179t-35.5 243.5zM301 551q0 -209 68.5 -314.5t222.5 -105.5 t221.5 105.5t67.5 314.5t-68.5 312.5t-222.5 103.5t-221.5 -103.5t-67.5 -312.5zM353 1548v21h219q16 -34 37.5 -74.5t44.5 -81t47 -78.5t45 -67v-27h-120q-35 28 -76 69.5t-79.5 85.5t-70 84.5t-47.5 67.5z" />
+<glyph unicode="&#xf3;" horiz-adv-x="1182" d="M113 551q0 136 33.5 241.5t95.5 178t151.5 110t200.5 37.5q103 0 190 -37.5t150.5 -110t99 -178t35.5 -241.5q0 -137 -33.5 -243.5t-96 -179t-151.5 -110.5t-200 -38q-103 0 -190 38t-150.5 110.5t-99 179t-35.5 243.5zM301 551q0 -209 68.5 -314.5t222.5 -105.5 t221.5 105.5t67.5 314.5t-68.5 312.5t-222.5 103.5t-221.5 -103.5t-67.5 -312.5zM473 1241v27q22 29 45.5 67t47 78.5t44.5 81t37 74.5h219v-21q-16 -27 -47.5 -67.5t-70 -84.5t-79 -85.5t-75.5 -69.5h-121z" />
+<glyph unicode="&#xf4;" horiz-adv-x="1182" d="M113 551q0 136 33.5 241.5t95.5 178t151.5 110t200.5 37.5q103 0 190 -37.5t150.5 -110t99 -178t35.5 -241.5q0 -137 -33.5 -243.5t-96 -179t-151.5 -110.5t-200 -38q-103 0 -190 38t-150.5 110.5t-99 179t-35.5 243.5zM301 551q0 -209 68.5 -314.5t222.5 -105.5 t221.5 105.5t67.5 314.5t-68.5 312.5t-222.5 103.5t-221.5 -103.5t-67.5 -312.5zM253 1241v27q26 29 60 67t67.5 78.5t63 81t45.5 74.5h192q16 -34 45.5 -74.5t63 -81t68 -78.5t59.5 -67v-27h-121q-51 34 -105 82.5t-106 103.5q-54 -55 -107 -103.5t-104 -82.5h-121z" />
+<glyph unicode="&#xf5;" horiz-adv-x="1182" d="M113 551q0 136 33.5 241.5t95.5 178t151.5 110t200.5 37.5q103 0 190 -37.5t150.5 -110t99 -178t35.5 -241.5q0 -137 -33.5 -243.5t-96 -179t-151.5 -110.5t-200 -38q-103 0 -190 38t-150.5 110.5t-99 179t-35.5 243.5zM301 551q0 -209 68.5 -314.5t222.5 -105.5 t221.5 105.5t67.5 314.5t-68.5 312.5t-222.5 103.5t-221.5 -103.5t-67.5 -312.5zM228 1241q5 60 21.5 109t43 83.5t63.5 53t83 18.5q42 0 82.5 -17.5t78.5 -38.5t72.5 -38.5t63.5 -17.5q45 0 68 26t38 88h105q-5 -60 -21.5 -108.5t-43 -83t-63.5 -53.5t-83 -19 q-40 0 -79.5 17.5t-77.5 39t-73 39t-67 17.5q-45 0 -69 -26.5t-38 -88.5h-104z" />
+<glyph unicode="&#xf6;" horiz-adv-x="1182" d="M113 551q0 136 33.5 241.5t95.5 178t151.5 110t200.5 37.5q103 0 190 -37.5t150.5 -110t99 -178t35.5 -241.5q0 -137 -33.5 -243.5t-96 -179t-151.5 -110.5t-200 -38q-103 0 -190 38t-150.5 110.5t-99 179t-35.5 243.5zM301 551q0 -209 68.5 -314.5t222.5 -105.5 t221.5 105.5t67.5 314.5t-68.5 312.5t-222.5 103.5t-221.5 -103.5t-67.5 -312.5zM300 1395q0 54 28 78t68 24q39 0 68 -24.5t29 -77.5t-29 -78t-68 -25q-40 0 -68 25t-28 78zM675 1395q0 54 28 78t68 24q19 0 36.5 -6t30.5 -18.5t21 -31.5t8 -46q0 -53 -29 -78t-67 -25 q-40 0 -68 25t-28 78z" />
+<glyph unicode="&#xf7;" d="M102 647v150h924v-150h-924zM449 373q0 35 9 58.5t24.5 38.5t36 21.5t44.5 6.5q23 0 44 -6.5t37 -21.5t25 -38.5t9 -58.5q0 -33 -9 -56.5t-25 -39t-37 -22.5t-44 -7q-24 0 -44.5 7t-36 22.5t-24.5 39t-9 56.5zM449 1071q0 35 9 58.5t24.5 38.5t36 21.5t44.5 6.5 q23 0 44 -6.5t37 -21.5t25 -38.5t9 -58.5q0 -33 -9 -56.5t-25 -39t-37 -22.5t-44 -7q-24 0 -44.5 7t-36 22.5t-24.5 39t-9 56.5z" />
+<glyph unicode="&#xf8;" horiz-adv-x="1182" d="M115 551q0 136 33.5 241.5t95.5 178t151.5 110t200.5 37.5q63 0 119.5 -14.5t105.5 -42.5l68 108l131 -73l-80 -129q62 -73 96.5 -177.5t34.5 -238.5q0 -137 -33.5 -243.5t-96 -179t-151.5 -110.5t-200 -38q-125 0 -223 53l-68 -109l-131 74l80 131q-63 72 -98 178.5 t-35 243.5zM303 551q0 -84 9.5 -149.5t31.5 -116.5l397 647q-29 17 -66.5 26t-82.5 9q-154 0 -221.5 -103.5t-67.5 -312.5zM446 164q31 -17 67 -25t81 -8q154 0 221.5 105.5t67.5 314.5q0 159 -39 258z" />
+<glyph unicode="&#xf9;" horiz-adv-x="1206" d="M164 381v717h182v-707q0 -130 53 -195t164 -65q81 0 136 26t88.5 76.5t48 124.5t14.5 170v570h182v-1098h-147l-27 147h-10q-25 -43 -59.5 -74.5t-75.5 -52t-87 -30.5t-94 -10q-91 0 -160 23t-115 72t-69.5 125t-23.5 181zM300 1548v21h219q16 -34 37.5 -74.5t44.5 -81 t47 -78.5t45 -67v-27h-120q-35 28 -76 69.5t-79.5 85.5t-70 84.5t-47.5 67.5z" />
+<glyph unicode="&#xfa;" horiz-adv-x="1206" d="M164 381v717h182v-707q0 -130 53 -195t164 -65q81 0 136 26t88.5 76.5t48 124.5t14.5 170v570h182v-1098h-147l-27 147h-10q-25 -43 -59.5 -74.5t-75.5 -52t-87 -30.5t-94 -10q-91 0 -160 23t-115 72t-69.5 125t-23.5 181zM489 1241v27q22 29 45.5 67t47 78.5t44.5 81 t37 74.5h219v-21q-16 -27 -47.5 -67.5t-70 -84.5t-79 -85.5t-75.5 -69.5h-121z" />
+<glyph unicode="&#xfb;" horiz-adv-x="1206" d="M164 381v717h182v-707q0 -130 53 -195t164 -65q81 0 136 26t88.5 76.5t48 124.5t14.5 170v570h182v-1098h-147l-27 147h-10q-25 -43 -59.5 -74.5t-75.5 -52t-87 -30.5t-94 -10q-91 0 -160 23t-115 72t-69.5 125t-23.5 181zM266 1241v27q26 29 60 67t67.5 78.5t63 81 t45.5 74.5h192q16 -34 45.5 -74.5t63 -81t68 -78.5t59.5 -67v-27h-121q-51 34 -105 82.5t-106 103.5q-54 -55 -107 -103.5t-104 -82.5h-121z" />
+<glyph unicode="&#xfc;" horiz-adv-x="1206" d="M164 381v717h182v-707q0 -130 53 -195t164 -65q81 0 136 26t88.5 76.5t48 124.5t14.5 170v570h182v-1098h-147l-27 147h-10q-25 -43 -59.5 -74.5t-75.5 -52t-87 -30.5t-94 -10q-91 0 -160 23t-115 72t-69.5 125t-23.5 181zM309 1395q0 54 28 78t68 24q39 0 68 -24.5 t29 -77.5t-29 -78t-68 -25q-40 0 -68 25t-28 78zM684 1395q0 54 28 78t68 24q19 0 36.5 -6t30.5 -18.5t21 -31.5t8 -46q0 -53 -29 -78t-67 -25q-40 0 -68 25t-28 78z" />
+<glyph unicode="&#xfd;" horiz-adv-x="1001" d="M10 1098h189l215 -613q14 -40 28.5 -84t27 -88t21.5 -85t13 -76h6q5 25 16 68t24.5 91.5t28 95.5t25.5 80l199 611h188l-434 -1241q-28 -81 -60.5 -145.5t-75.5 -109.5t-101 -69.5t-138 -24.5q-52 0 -90 5.5t-65 11.5v145q21 -5 53 -8.5t67 -3.5q48 0 83 11.5t61 33.5 t44.5 54t33.5 73l57 160zM407 1241v27q22 29 45.5 67t47 78.5t44.5 81t37 74.5h219v-21q-16 -27 -47.5 -67.5t-70 -84.5t-79 -85.5t-75.5 -69.5h-121z" />
+<glyph unicode="&#xfe;" horiz-adv-x="1200" d="M174 -492v2048h182v-458l-8 -148h8q23 35 52 65.5t67.5 53t86.5 36t108 13.5q94 0 171 -36t131.5 -107.5t84.5 -177.5t30 -246q0 -141 -30 -247.5t-84.5 -178.5t-131.5 -108.5t-171 -36.5q-59 0 -107 13t-86.5 34.5t-68 50.5t-52.5 61h-12q3 -34 6 -65q2 -26 4 -53.5 t2 -43.5v-469h-182zM356 551q0 -101 13.5 -179.5t46 -132t86.5 -81t135 -27.5q135 0 198.5 109t63.5 313q0 208 -63.5 311t-200.5 103q-76 0 -128.5 -23t-85 -70t-48 -117t-17.5 -165v-41z" />
+<glyph unicode="&#xff;" horiz-adv-x="1001" d="M10 1098h189l215 -613q14 -40 28.5 -84t27 -88t21.5 -85t13 -76h6q5 25 16 68t24.5 91.5t28 95.5t25.5 80l199 611h188l-434 -1241q-28 -81 -60.5 -145.5t-75.5 -109.5t-101 -69.5t-138 -24.5q-52 0 -90 5.5t-65 11.5v145q21 -5 53 -8.5t67 -3.5q48 0 83 11.5t61 33.5 t44.5 54t33.5 73l57 160zM228 1395q0 54 28 78t68 24q39 0 68 -24.5t29 -77.5t-29 -78t-68 -25q-40 0 -68 25t-28 78zM603 1395q0 54 28 78t68 24q19 0 36.5 -6t30.5 -18.5t21 -31.5t8 -46q0 -53 -29 -78t-67 -25q-40 0 -68 25t-28 78z" />
+<glyph unicode="&#x131;" horiz-adv-x="530" d="M174 0v1098h182v-1098h-182z" />
+<glyph unicode="&#x152;" horiz-adv-x="1823" d="M125 735q0 170 38 308.5t117 236.5t199 151.5t283 53.5q98 0 182 -23h756v-164h-574v-452h535v-162h-535v-520h574v-164h-758q-43 -9 -88.5 -14.5t-93.5 -5.5q-163 0 -282.5 54t-198 153t-116.5 238.5t-38 309.5zM322 733q0 -137 26 -246.5t79.5 -186t136 -117 t196.5 -40.5q52 0 97 9t83 24v1112q-38 16 -82.5 24.5t-95.5 8.5q-114 0 -197 -40.5t-137 -116t-80 -184.5t-26 -247z" />
+<glyph unicode="&#x153;" horiz-adv-x="1864" d="M113 551q0 136 33.5 241.5t95.5 178t151.5 110t200.5 37.5q121 0 218.5 -55.5t160.5 -161.5q60 105 152.5 161t209.5 56q99 0 178 -35.5t134 -100t84.5 -155t29.5 -200.5v-113h-692q5 -193 81.5 -284t227.5 -91q51 0 94.5 5t84 14.5t78.5 24t77 32.5v-162 q-40 -19 -78.5 -33t-79 -23t-84 -13t-94.5 -4q-130 0 -232 56t-167 165q-63 -109 -162 -165t-227 -56q-103 0 -190 38t-150.5 110.5t-99 179t-35.5 243.5zM301 551q0 -209 68.5 -314.5t222.5 -105.5q150 0 219.5 100.5t69.5 309.5q0 220 -70 323t-221 103 q-154 0 -221.5 -103.5t-67.5 -312.5zM1073 662h492q0 68 -13.5 124.5t-42 96.5t-72.5 62t-106 22q-114 0 -180.5 -78t-77.5 -227z" />
+<glyph unicode="&#x178;" horiz-adv-x="1079" d="M0 1462h203l336 -739l340 739h200l-446 -893v-569h-187v559zM257 1733q0 54 28 78t68 24q39 0 68 -24.5t29 -77.5t-29 -78t-68 -25q-40 0 -68 25t-28 78zM632 1733q0 54 28 78t68 24q19 0 36.5 -6t30.5 -18.5t21 -31.5t8 -46q0 -53 -29 -78t-67 -25q-40 0 -68 25t-28 78z " />
+<glyph unicode="&#x2c6;" horiz-adv-x="1182" d="M258 1241v27q26 29 60 67t67.5 78.5t63 81t45.5 74.5h192q16 -34 45.5 -74.5t63 -81t68 -78.5t59.5 -67v-27h-121q-51 34 -105 82.5t-106 103.5q-54 -55 -107 -103.5t-104 -82.5h-121z" />
+<glyph unicode="&#x2da;" horiz-adv-x="1182" d="M365 1456q0 51 16 90.5t45.5 67.5t70.5 42.5t91 14.5q48 0 90 -14.5t73 -42t48.5 -67t17.5 -89.5q0 -51 -17.5 -91.5t-48 -68.5t-72.5 -42.5t-91 -14.5q-50 0 -91 14.5t-70.5 42.5t-45.5 67.5t-16 90.5zM475 1456q0 -53 28.5 -83t84.5 -30q49 0 80.5 30t31.5 83t-31.5 83 t-80.5 30q-50 0 -81.5 -30t-31.5 -83z" />
+<glyph unicode="&#x2dc;" horiz-adv-x="1182" d="M258 1241q5 60 21.5 109t43 83.5t63.5 53t83 18.5q42 0 82.5 -17.5t78.5 -38.5t72.5 -38.5t63.5 -17.5q45 0 68 26t38 88h105q-5 -60 -21.5 -108.5t-43 -83t-63.5 -53.5t-83 -19q-40 0 -79.5 17.5t-77.5 39t-73 39t-67 17.5q-45 0 -69 -26.5t-38 -88.5h-104z" />
+<glyph unicode="&#x2000;" horiz-adv-x="953" />
+<glyph unicode="&#x2001;" horiz-adv-x="1907" />
+<glyph unicode="&#x2002;" horiz-adv-x="953" />
+<glyph unicode="&#x2003;" horiz-adv-x="1907" />
+<glyph unicode="&#x2004;" horiz-adv-x="635" />
+<glyph unicode="&#x2005;" horiz-adv-x="476" />
+<glyph unicode="&#x2006;" horiz-adv-x="317" />
+<glyph unicode="&#x2007;" horiz-adv-x="317" />
+<glyph unicode="&#x2008;" horiz-adv-x="238" />
+<glyph unicode="&#x2009;" horiz-adv-x="381" />
+<glyph unicode="&#x200a;" horiz-adv-x="105" />
+<glyph unicode="&#x2010;" horiz-adv-x="659" d="M82 465v168h496v-168h-496z" />
+<glyph unicode="&#x2011;" horiz-adv-x="659" d="M82 465v168h496v-168h-496z" />
+<glyph unicode="&#x2012;" horiz-adv-x="659" d="M82 465v168h496v-168h-496z" />
+<glyph unicode="&#x2013;" horiz-adv-x="1024" d="M82 465v168h860v-168h-860z" />
+<glyph unicode="&#x2014;" horiz-adv-x="2048" d="M82 465v168h1884v-168h-1884z" />
+<glyph unicode="&#x2018;" horiz-adv-x="358" d="M23 983q14 54 33.5 115t42.5 123t49 123.5t51 117.5h137q-15 -61 -29.5 -127t-27.5 -131.5t-24 -127.5t-19 -115h-199z" />
+<glyph unicode="&#x2019;" horiz-adv-x="358" d="M23 961q14 60 28.5 126t28 132t24.5 128t19 115h199l14 -22q-14 -55 -33.5 -115.5t-43 -123t-49 -123.5t-50.5 -117h-137z" />
+<glyph unicode="&#x201a;" horiz-adv-x="512" d="M63 -264q15 61 29.5 127t28 131.5t24.5 128t19 115.5h198l15 -23q-14 -54 -33.5 -115t-43 -123t-49 -123.5t-50.5 -117.5h-138z" />
+<glyph unicode="&#x201c;" horiz-adv-x="743" d="M23 983q14 54 33.5 115t42.5 123t49 123.5t51 117.5h137q-15 -61 -29.5 -127t-27.5 -131.5t-24 -127.5t-19 -115h-199zM408 983q14 54 33.5 115t42.5 123t49 123.5t51 117.5h137q-15 -61 -29.5 -127t-27.5 -131.5t-24 -127.5t-19 -115h-199z" />
+<glyph unicode="&#x201d;" horiz-adv-x="743" d="M23 961q14 60 28.5 126t28 132t24.5 128t19 115h199l14 -22q-14 -55 -33.5 -115.5t-43 -123t-49 -123.5t-50.5 -117h-137zM408 961q14 60 28.5 126t28 132t24.5 128t19 115h199l14 -22q-14 -55 -33.5 -115.5t-43 -123t-49 -123.5t-50.5 -117h-137z" />
+<glyph unicode="&#x201e;" horiz-adv-x="897" d="M63 -264q15 61 29.5 127t28 131.5t24.5 128t19 115.5h198l15 -23q-14 -54 -33.5 -115t-43 -123t-49 -123.5t-50.5 -117.5h-138zM449 -264q14 61 28.5 127t28 131.5t24.5 128t19 115.5h199l14 -23q-14 -54 -33.5 -115t-43 -123t-49 -123.5t-50.5 -117.5h-137z" />
+<glyph unicode="&#x2022;" horiz-adv-x="770" d="M150 748q0 71 18 121t49.5 81.5t74.5 45.5t93 14q49 0 92 -14t75 -45.5t50.5 -81.5t18.5 -121q0 -70 -18.5 -120t-50.5 -81.5t-75 -46.5t-92 -15q-50 0 -93 15t-74.5 46.5t-49.5 81.5t-18 120z" />
+<glyph unicode="&#x2026;" horiz-adv-x="1647" d="M147 111q0 38 10 64.5t27 43t40 24t50 7.5q26 0 49.5 -7.5t40.5 -24t27 -43t10 -64.5q0 -37 -10 -63.5t-27 -43.5t-40.5 -25t-49.5 -8q-27 0 -50 8t-40 25t-27 43.5t-10 63.5zM696 111q0 38 10 64.5t27 43t40 24t50 7.5q26 0 49.5 -7.5t40.5 -24t27 -43t10 -64.5 q0 -37 -10 -63.5t-27 -43.5t-40.5 -25t-49.5 -8q-27 0 -50 8t-40 25t-27 43.5t-10 63.5zM1245 111q0 38 9.5 64.5t27 43t40.5 24t50 7.5q26 0 49.5 -7.5t40.5 -24t27 -43t10 -64.5q0 -37 -10 -63.5t-27 -43.5t-40.5 -25t-49.5 -8q-54 0 -90.5 33t-36.5 107z" />
+<glyph unicode="&#x202f;" horiz-adv-x="381" />
+<glyph unicode="&#x2039;" horiz-adv-x="590" d="M82 526v27l309 414l117 -78l-238 -348l238 -348l-117 -78z" />
+<glyph unicode="&#x203a;" horiz-adv-x="590" d="M82 193l237 348l-237 348l117 78l309 -414v-27l-309 -411z" />
+<glyph unicode="&#x2044;" horiz-adv-x="266" d="M-352 0l811 1462h157l-811 -1462h-157z" />
+<glyph unicode="&#x205f;" horiz-adv-x="476" />
+<glyph unicode="&#x20ac;" d="M63 502v137h148q-2 23 -2 38v44q0 22 1 45t1 31h-148v137h160q18 125 62 226t111.5 173t159.5 111t206 39q97 0 177 -21.5t159 -70.5l-80 -146q-51 31 -110.5 52.5t-131.5 21.5q-69 0 -128 -26t-106 -75.5t-80.5 -121t-51.5 -162.5h432v-137h-447q0 -15 -1 -29 q-1 -12 -1 -25v-22v-39q0 -21 2 -43h385v-137h-366q34 -175 126.5 -267t241.5 -92q75 0 142.5 16t126.5 42v-162q-59 -28 -125.5 -43.5t-157.5 -15.5q-115 0 -206 36.5t-158.5 104t-111.5 164t-65 217.5h-164z" />
+<glyph unicode="&#x2122;" horiz-adv-x="1534" d="M37 1354v108h522v-108h-199v-613h-127v613h-196zM625 741v721h186l180 -551l191 551h178v-721h-127v428q0 9 0.5 24t0.5 33l2 34q0 18 1 30h-6l-195 -549h-100l-186 549h-7q1 -16 2 -33t1.5 -32t1 -27t0.5 -18v-439h-123z" />
+<glyph unicode="&#xe000;" horiz-adv-x="1100" d="M0 1100h1100v-1100h-1100v1100z" />
+<glyph unicode="&#xfb01;" horiz-adv-x="1204" d="M29 961v75l194 68v96q0 107 22.5 177.5t65 112.5t104.5 59.5t140 17.5q59 0 108.5 -11.5t88.5 -25.5l-47 -141q-31 11 -67.5 19.5t-76.5 8.5t-69 -9.5t-48 -33.5t-28.5 -65.5t-9.5 -106.5v-104h245v-137h-245v-961h-183v961h-194zM834 1395q0 60 30.5 87t75.5 27 q22 0 41.5 -6.5t34 -20.5t23 -35.5t8.5 -51.5q0 -58 -31.5 -86.5t-75.5 -28.5q-45 0 -75.5 28t-30.5 87zM848 0v1098h182v-1098h-182z" />
+<glyph unicode="&#xfb02;" horiz-adv-x="1204" d="M29 961v75l194 68v96q0 107 22.5 177.5t65 112.5t104.5 59.5t140 17.5q59 0 108.5 -11.5t88.5 -25.5l-47 -141q-31 11 -67.5 19.5t-76.5 8.5t-69 -9.5t-48 -33.5t-28.5 -65.5t-9.5 -106.5v-104h245v-137h-245v-961h-183v961h-194zM848 0v1556h182v-1556h-182z" />
+<glyph unicode="&#xfb03;" horiz-adv-x="1878" d="M29 961v75l194 68v96q0 107 22.5 177.5t65 112.5t104.5 59.5t140 17.5q59 0 108.5 -11.5t88.5 -25.5l-47 -141q-31 11 -67.5 19.5t-76.5 8.5t-69 -9.5t-48 -33.5t-28.5 -65.5t-9.5 -106.5v-104h245v-137h-245v-961h-183v961h-194zM703 961v75l194 68v96q0 107 22.5 177.5 t65 112.5t104.5 59.5t140 17.5q59 0 108.5 -11.5t88.5 -25.5l-47 -141q-31 11 -67.5 19.5t-76.5 8.5t-69 -9.5t-48 -33.5t-28.5 -65.5t-9.5 -106.5v-104h245v-137h-245v-961h-183v961h-194zM1508 1395q0 60 30.5 87t75.5 27q22 0 41.5 -6.5t34 -20.5t23 -35.5t8.5 -51.5 q0 -58 -31.5 -86.5t-75.5 -28.5q-45 0 -75.5 28t-30.5 87zM1522 0v1098h182v-1098h-182z" />
+<glyph unicode="&#xfb04;" horiz-adv-x="1878" d="M29 961v75l194 68v96q0 107 22.5 177.5t65 112.5t104.5 59.5t140 17.5q59 0 108.5 -11.5t88.5 -25.5l-47 -141q-31 11 -67.5 19.5t-76.5 8.5t-69 -9.5t-48 -33.5t-28.5 -65.5t-9.5 -106.5v-104h245v-137h-245v-961h-183v961h-194zM703 961v75l194 68v96q0 107 22.5 177.5 t65 112.5t104.5 59.5t140 17.5q59 0 108.5 -11.5t88.5 -25.5l-47 -141q-31 11 -67.5 19.5t-76.5 8.5t-69 -9.5t-48 -33.5t-28.5 -65.5t-9.5 -106.5v-104h245v-137h-245v-961h-183v961h-194zM1522 0v1556h182v-1556h-182z" />
+<glyph horiz-adv-x="678" d="M12 778v111l377 579h141v-563h125v-127h-125v-192h-143v192h-375zM158 905h229v195q0 42 1.5 91.5t4.5 98.5q-5 -11 -15 -29.5t-21 -39.5t-23 -41l-21 -35z" />
+</font>
+</defs></svg> 
\ No newline at end of file
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/fonts/OpenSans-Light-webfont.svg
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/fonts/OpenSans-Light-webfont.svg	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/fonts/OpenSans-Light-webfont.svg	(revision 47450)
@@ -0,0 +1,252 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" >
+<svg xmlns="http://www.w3.org/2000/svg">
+<metadata>
+This is a custom SVG webfont generated by Font Squirrel.
+Copyright   : Digitized data copyright  20102011 Google Corporation
+Foundry     : Ascender Corporation
+Foundry URL : httpwwwascendercorpcom
+</metadata>
+<defs>
+<font id="OpenSansLight" horiz-adv-x="1169" >
+<font-face units-per-em="2048" ascent="1638" descent="-410" />
+<missing-glyph horiz-adv-x="532" />
+<glyph unicode=" "  horiz-adv-x="532" />
+<glyph unicode="&#x09;" horiz-adv-x="532" />
+<glyph unicode="&#xa0;" horiz-adv-x="532" />
+<glyph unicode="!" horiz-adv-x="492" d="M164 78q0 98 80 98q82 0 82 -98t-82 -98q-80 0 -80 98zM186 1462h119l-29 -1085h-61z" />
+<glyph unicode="&#x22;" horiz-adv-x="723" d="M133 1462h127l-33 -528h-61zM463 1462h127l-33 -528h-61z" />
+<glyph unicode="#" horiz-adv-x="1323" d="M55 451v79h299l76 398h-297v80h311l86 454h91l-89 -454h365l88 454h86l-88 -454h285v-80h-301l-76 -398h303v-79h-320l-86 -451h-90l88 451h-360l-86 -451h-88l86 451h-283zM440 530h363l78 398h-363z" />
+<glyph unicode="$" d="M164 186v103q75 -36 179.5 -61t193.5 -25v508q-145 44 -215 88t-102 104t-32 146q0 124 94.5 208.5t254.5 104.5v192h81v-190q197 -9 351 -72l-33 -90q-141 62 -318 72v-486q213 -66 293 -144t80 -204q0 -133 -99 -217t-274 -106v-236h-81v232q-92 2 -200.5 22.5 t-172.5 50.5zM297 1049q0 -86 57 -141t183 -93v453q-119 -16 -179.5 -76t-60.5 -143zM618 209q122 13 192.5 75t70.5 160q0 85 -63 140.5t-200 95.5v-471z" />
+<glyph unicode="%" horiz-adv-x="1653" d="M113 1026q0 223 72 340t212 117q139 0 215 -120.5t76 -336.5q0 -226 -75 -343.5t-216 -117.5q-133 0 -208.5 120.5t-75.5 340.5zM211 1026q0 -186 45 -279.5t141 -93.5q193 0 193 373q0 184 -49.5 276.5t-143.5 92.5q-96 0 -141 -92.5t-45 -276.5zM373 0l811 1462h96 l-811 -1462h-96zM965 438q0 225 73.5 341t212.5 116q137 0 213 -120t76 -337q0 -226 -74 -343.5t-215 -117.5q-136 0 -211 121.5t-75 339.5zM1063 438q0 -185 45 -277.5t141 -92.5q193 0 193 370q0 369 -193 369q-96 0 -141 -91.5t-45 -277.5z" />
+<glyph unicode="&#x26;" horiz-adv-x="1460" d="M123 371q0 138 73.5 235t274.5 205l-75 82q-66 71 -98 139t-32 142q0 143 95.5 227t256.5 84q155 0 245.5 -81t90.5 -224q0 -105 -70 -192.5t-253 -194.5l452 -457q61 72 104 157t75 201h96q-63 -246 -209 -426l266 -268h-135l-193 197q-92 -90 -164 -131.5t-157.5 -63.5 t-194.5 -22q-209 0 -328.5 103t-119.5 288zM227 375q0 -143 93 -224t258 -81q128 0 234.5 43.5t209.5 146.5l-483 485q-136 -72 -196.5 -122.5t-88 -109.5t-27.5 -138zM373 1176q0 -79 40 -146t152 -174q159 85 221 159t62 169q0 94 -62 152.5t-168 58.5q-114 0 -179.5 -58 t-65.5 -161z" />
+<glyph unicode="'" horiz-adv-x="393" d="M133 1462h127l-33 -528h-61z" />
+<glyph unicode="(" horiz-adv-x="557" d="M82 561q0 265 77.5 496t223.5 405h113q-148 -182 -227 -412.5t-79 -486.5q0 -483 304 -887h-111q-147 170 -224 397t-77 488z" />
+<glyph unicode=")" horiz-adv-x="557" d="M61 1462h113q147 -175 224 -406.5t77 -494.5t-77.5 -490t-223.5 -395h-111q304 404 304 887q0 257 -79 487.5t-227 411.5z" />
+<glyph unicode="*" horiz-adv-x="1128" d="M104 1124l19 131l401 -104l-39 405h146l-37 -405l405 104l21 -131l-395 -39l247 -340l-124 -71l-191 379l-180 -379l-125 71l242 340z" />
+<glyph unicode="+" d="M111 682v82h432v434h82v-434h434v-82h-434v-432h-82v432h-432z" />
+<glyph unicode="," horiz-adv-x="440" d="M68 -264q77 275 110 502h117l12 -21q-75 -265 -174 -481h-65z" />
+<glyph unicode="-" horiz-adv-x="659" d="M92 512v82h475v-82h-475z" />
+<glyph unicode="." horiz-adv-x="487" d="M162 78q0 98 80 98q82 0 82 -98t-82 -98q-80 0 -80 98z" />
+<glyph unicode="/" horiz-adv-x="698" d="M25 0l544 1462h105l-545 -1462h-104z" />
+<glyph unicode="0" d="M115 735q0 382 115.5 566t351.5 184q231 0 352 -190.5t121 -559.5q0 -385 -117.5 -570t-355.5 -185q-229 0 -348 190.5t-119 564.5zM223 735q0 -340 89 -502.5t270 -162.5q189 0 275.5 168t86.5 497q0 324 -86.5 492t-275.5 168t-274 -168t-85 -492z" />
+<glyph unicode="1" d="M199 1165l397 297h86v-1462h-98v1065q0 145 12 301q-15 -15 -31 -29t-309 -243z" />
+<glyph unicode="2" d="M113 0v88l389 406q164 170 230 260t97 172t31 172q0 131 -86 213t-223 82q-183 0 -350 -133l-54 69q183 154 406 154q191 0 300.5 -102t109.5 -281q0 -145 -73.5 -280.5t-268.5 -334.5l-375 -385v-4h782v-96h-915z" />
+<glyph unicode="3" d="M94 63v99q84 -44 188.5 -69t196.5 -25q221 0 332 89.5t111 252.5q0 145 -113.5 223t-333.5 78h-158v96h160q182 0 288.5 86.5t106.5 234.5q0 122 -86.5 195.5t-226.5 73.5q-109 0 -199 -30.5t-202 -104.5l-49 67q85 71 205 112.5t243 41.5q202 0 312 -95.5t110 -269.5 q0 -136 -85.5 -229t-229.5 -119v-6q176 -22 268 -112t92 -242q0 -205 -139.5 -317.5t-401.5 -112.5q-223 0 -389 83z" />
+<glyph unicode="4" d="M43 373v67l725 1030h121v-1011h252v-86h-252v-373h-94v373h-752zM162 459h633v418q0 302 14 507h-8q-20 -37 -123 -188z" />
+<glyph unicode="5" d="M143 63v103q108 -55 192 -76.5t179 -21.5q192 0 308 101.5t116 274.5q0 163 -113 256t-307 93q-130 0 -272 -39l-60 39l58 669h704v-96h-610l-45 -516q156 29 244 29q234 0 368.5 -113t134.5 -311q0 -225 -140 -350t-386 -125q-109 0 -207 21.5t-164 61.5z" />
+<glyph unicode="6" d="M131 623q0 285 77.5 479.5t220 288.5t343.5 94q94 0 172 -23v-88q-73 27 -176 27q-247 0 -384.5 -178t-154.5 -518h13q76 98 174 148t207 50q205 0 320.5 -117t115.5 -323q0 -224 -121.5 -353.5t-327.5 -129.5q-222 0 -350.5 169.5t-128.5 473.5zM240 504 q0 -111 49.5 -213.5t134 -162.5t186.5 -60q164 0 255 103t91 294q0 168 -90 262t-245 94q-102 0 -189.5 -45t-139.5 -119.5t-52 -152.5z" />
+<glyph unicode="7" d="M109 1366v96h946v-73l-604 -1389h-117l602 1366h-827z" />
+<glyph unicode="8" d="M121 375q0 131 83 230t257 169q-161 76 -227 160.5t-66 202.5q0 105 53 184.5t148.5 122.5t212.5 43q186 0 299.5 -95t113.5 -257q0 -112 -70.5 -198t-228.5 -159q192 -79 270 -173t78 -228q0 -181 -126.5 -289t-339.5 -108q-221 0 -339 101t-118 294zM223 360 q0 -138 93.5 -214t261.5 -76q164 0 264 80.5t100 218.5q0 124 -78.5 201.5t-302.5 162.5q-184 -71 -261 -157t-77 -216zM268 1137q0 -70 31.5 -123.5t91 -97t199.5 -101.5q163 63 234 139t71 183q0 120 -84.5 190t-230.5 70q-141 0 -226.5 -69.5t-85.5 -190.5z" />
+<glyph unicode="9" d="M111 993q0 220 124.5 356t323.5 136q144 0 252 -75.5t166.5 -221.5t58.5 -346q0 -288 -75.5 -482t-220 -287t-349.5 -93q-104 0 -192 26v86q43 -14 103.5 -21.5t92.5 -7.5q247 0 387 178.5t156 520.5h-12q-73 -96 -174 -147.5t-211 -51.5q-203 0 -316.5 112t-113.5 318z M213 999q0 -174 87 -264t249 -90q101 0 188.5 45t139 119.5t51.5 151.5q0 117 -46.5 219t-130 159.5t-192.5 57.5q-158 0 -252 -106.5t-94 -291.5z" />
+<glyph unicode=":" horiz-adv-x="487" d="M162 78q0 98 80 98q82 0 82 -98t-82 -98q-80 0 -80 98zM162 971q0 98 80 98q82 0 82 -98q0 -53 -23.5 -76t-58.5 -23q-34 0 -57 23t-23 76z" />
+<glyph unicode=";" horiz-adv-x="487" d="M76 -264q29 97 62 245.5t48 256.5h117l12 -21q-75 -265 -174 -481h-65zM162 971q0 98 80 98q82 0 82 -98q0 -53 -23.5 -76t-58.5 -23q-34 0 -57 23t-23 76z" />
+<glyph unicode="&#x3c;" d="M111 682v61l948 474v-95l-823 -405l823 -355v-96z" />
+<glyph unicode="=" d="M111 477v82h948v-82h-948zM111 885v82h948v-82h-948z" />
+<glyph unicode="&#x3e;" d="M111 266v96l823 355l-823 405v95l948 -474v-61z" />
+<glyph unicode="?" horiz-adv-x="862" d="M57 1403q110 48 184.5 64t153.5 16q183 0 288 -98.5t105 -270.5q0 -68 -18 -119t-50.5 -94.5t-78.5 -84t-102 -87.5q-64 -54 -98.5 -98.5t-50 -93.5t-15.5 -146v-14h-82v37q0 123 37.5 201t138.5 167l91 79q72 61 103 121t31 138q0 127 -83.5 202t-219.5 75 q-79 0 -148 -17.5t-149 -56.5zM260 78q0 98 80 98q82 0 82 -98t-82 -98q-80 0 -80 98z" />
+<glyph unicode="@" horiz-adv-x="1815" d="M113 561q0 256 108.5 460.5t307 317.5t448.5 113q215 0 380.5 -89t255 -254.5t89.5 -383.5q0 -228 -90.5 -366t-245.5 -138q-89 0 -144.5 54t-64.5 147h-4q-43 -100 -124 -150.5t-189 -50.5q-148 0 -229 96.5t-81 270.5q0 202 120.5 330.5t314.5 128.5q138 0 286 -41 l-22 -464v-30q0 -104 35 -156.5t116 -52.5q103 0 168.5 116.5t65.5 303.5q0 194 -79 340t-225.5 224.5t-334.5 78.5q-230 0 -405.5 -99.5t-270 -281.5t-94.5 -418q0 -322 167 -497.5t474 -175.5q93 0 188.5 18t231.5 70v-99q-203 -80 -414 -80q-349 0 -544 200.5t-195 557.5 zM633 590q0 -143 55 -215t174 -72q255 0 273 346l16 291q-79 27 -193 27q-149 0 -237 -102.5t-88 -274.5z" />
+<glyph unicode="A" horiz-adv-x="1229" d="M0 0l588 1468h65l576 -1468h-115l-203 516h-594l-204 -516h-113zM354 608h523l-199 527q-25 62 -60 172q-27 -96 -59 -174z" />
+<glyph unicode="B" horiz-adv-x="1284" d="M207 0v1462h401q271 0 398 -92t127 -278q0 -127 -77.5 -211.5t-226.5 -108.5v-6q175 -26 257.5 -110.5t82.5 -235.5q0 -202 -134 -311t-380 -109h-448zM309 90h344q406 0 406 330q0 301 -428 301h-322v-631zM309 811h322q206 0 299.5 68.5t93.5 214.5t-105.5 212 t-314.5 66h-295v-561z" />
+<glyph unicode="C" horiz-adv-x="1272" d="M129 735q0 223 84.5 393t243 262.5t368.5 92.5q214 0 383 -80l-41 -92q-160 80 -336 80q-275 0 -433 -176t-158 -482q0 -313 149 -486t426 -173q184 0 338 47v-90q-145 -51 -362 -51q-308 0 -485 199t-177 556z" />
+<glyph unicode="D" horiz-adv-x="1446" d="M207 0v1462h395q350 0 532.5 -183t182.5 -534q0 -368 -193 -556.5t-567 -188.5h-350zM309 90h242q655 0 655 651q0 314 -159.5 472.5t-468.5 158.5h-269v-1282z" />
+<glyph unicode="E" horiz-adv-x="1130" d="M207 0v1462h799v-94h-697v-553h658v-94h-658v-627h697v-94h-799z" />
+<glyph unicode="F" horiz-adv-x="1028" d="M207 0v1462h801v-94h-699v-620h660v-95h-660v-653h-102z" />
+<glyph unicode="G" horiz-adv-x="1481" d="M129 729q0 223 91.5 395.5t262 266.5t391.5 94q239 0 429 -88l-41 -92q-190 88 -394 88q-289 0 -458.5 -178.5t-169.5 -481.5q0 -330 161 -496.5t473 -166.5q202 0 343 57v514h-435v96h539v-667q-212 -90 -477 -90q-346 0 -530.5 195.5t-184.5 553.5z" />
+<glyph unicode="H" horiz-adv-x="1473" d="M207 0v1462h102v-649h854v649h103v-1462h-103v719h-854v-719h-102z" />
+<glyph unicode="I" horiz-adv-x="516" d="M207 0v1462h102v-1462h-102z" />
+<glyph unicode="J" horiz-adv-x="506" d="M-184 -254q78 -20 149 -20q242 0 242 264v1472h102v-1462q0 -369 -342 -369q-92 0 -151 27v88z" />
+<glyph unicode="K" horiz-adv-x="1190" d="M207 0v1462h102v-760l162 162l573 598h130l-599 -618l615 -844h-125l-561 772l-195 -172v-600h-102z" />
+<glyph unicode="L" horiz-adv-x="1051" d="M207 0v1462h102v-1366h697v-96h-799z" />
+<glyph unicode="M" horiz-adv-x="1767" d="M207 0v1462h158l518 -1286h6l518 1286h154v-1462h-103v1108q0 116 12 240h-8l-547 -1348h-65l-545 1350h-8q8 -124 8 -254v-1096h-98z" />
+<glyph unicode="N" horiz-adv-x="1477" d="M207 0v1462h102l865 -1296h6q-9 180 -9 342v954h99v-1462h-103l-866 1298h-8q12 -232 12 -350v-948h-98z" />
+<glyph unicode="O" horiz-adv-x="1565" d="M129 735q0 349 175.5 549.5t479.5 200.5q306 0 479 -201.5t173 -550.5q0 -348 -174 -550.5t-480 -202.5q-305 0 -479 202.5t-174 552.5zM240 733q0 -314 140 -485.5t402 -171.5q264 0 403.5 170t139.5 487q0 316 -139.5 484.5t-401.5 168.5q-261 0 -402.5 -170 t-141.5 -483z" />
+<glyph unicode="P" horiz-adv-x="1198" d="M207 0v1462h358q522 0 522 -420q0 -212 -144 -325t-408 -113h-226v-604h-102zM309 692h201q247 0 357 81.5t110 264.5q0 169 -104 250.5t-322 81.5h-242v-678z" />
+<glyph unicode="Q" horiz-adv-x="1565" d="M129 735q0 349 175.5 549.5t479.5 200.5q306 0 479 -201.5t173 -550.5q0 -294 -126 -486.5t-349 -246.5l333 -348h-166l-282 330l-33 -2h-31q-305 0 -479 202.5t-174 552.5zM240 733q0 -314 140 -485.5t402 -171.5q264 0 403.5 170t139.5 487q0 316 -139.5 484.5 t-401.5 168.5q-261 0 -402.5 -170t-141.5 -483z" />
+<glyph unicode="R" horiz-adv-x="1217" d="M207 0v1462h348q272 0 402 -100.5t130 -302.5q0 -147 -77.5 -248t-235.5 -145l397 -666h-122l-377 637h-363v-637h-102zM309 725h279q185 0 287 82.5t102 243.5q0 167 -100 243t-326 76h-242v-645z" />
+<glyph unicode="S" horiz-adv-x="1116" d="M111 39v102q158 -67 403 -67q180 0 285.5 82.5t105.5 216.5q0 83 -35 137.5t-114 99.5t-232 97q-224 77 -309.5 166.5t-85.5 238.5q0 164 128.5 267.5t330.5 103.5q206 0 387 -78l-37 -88q-182 76 -348 76q-162 0 -258 -75t-96 -204q0 -81 29.5 -133t96.5 -93.5 t230 -99.5q171 -59 257 -114.5t125.5 -126t39.5 -170.5q0 -183 -134.5 -290t-357.5 -107q-268 0 -411 59z" />
+<glyph unicode="T" horiz-adv-x="1073" d="M10 1366v96h1053v-96h-475v-1366h-103v1366h-475z" />
+<glyph unicode="U" horiz-adv-x="1473" d="M190 520v942h103v-946q0 -211 117 -328.5t331 -117.5q209 0 324 115.5t115 320.5v956h102v-946q0 -252 -146 -394t-407 -142q-254 0 -396.5 142.5t-142.5 397.5z" />
+<glyph unicode="V" horiz-adv-x="1182" d="M0 1462h109l368 -995q84 -225 113 -338q20 75 79 233l402 1100h111l-547 -1462h-90z" />
+<glyph unicode="W" horiz-adv-x="1827" d="M51 1462h107l256 -942q15 -57 28 -105.5t23.5 -91t19 -82t15.5 -79.5q24 136 102 413l250 887h113l293 -1018q51 -176 73 -284q13 72 33.5 153t308.5 1149h103l-404 -1462h-84l-321 1128q-40 139 -60 228q-16 -87 -45.5 -200t-322.5 -1156h-86z" />
+<glyph unicode="X" horiz-adv-x="1102" d="M0 0l492 762l-447 700h115l395 -626l401 626h109l-453 -698l490 -764h-117l-432 682l-440 -682h-113z" />
+<glyph unicode="Y" horiz-adv-x="1081" d="M0 1462h117l426 -800l428 800h110l-487 -897v-565h-105v557z" />
+<glyph unicode="Z" horiz-adv-x="1180" d="M82 0v76l856 1290h-817v96h954v-76l-858 -1290h881v-96h-1016z" />
+<glyph unicode="[" horiz-adv-x="653" d="M174 -324v1786h428v-94h-330v-1597h330v-95h-428z" />
+<glyph unicode="\" horiz-adv-x="698" d="M25 1462h102l547 -1462h-103z" />
+<glyph unicode="]" horiz-adv-x="653" d="M51 -229h330v1597h-330v94h428v-1786h-428v95z" />
+<glyph unicode="^" d="M88 561l465 912h68l460 -912h-100l-395 791l-398 -791h-100z" />
+<glyph unicode="_" horiz-adv-x="842" d="M-4 -184h850v-82h-850v82z" />
+<glyph unicode="`" horiz-adv-x="1182" d="M393 1552v17h142q26 -48 98.5 -142t142.5 -170v-16h-69q-96 79 -188.5 171.5t-125.5 139.5z" />
+<glyph unicode="a" horiz-adv-x="1085" d="M98 289q0 159 132.5 247t383.5 93l207 6v72q0 155 -63 234t-203 79q-151 0 -313 -84l-37 86q179 84 354 84q179 0 267.5 -93t88.5 -290v-723h-73l-25 172h-8q-82 -105 -168.5 -148.5t-204.5 -43.5q-160 0 -249 82t-89 227zM203 285q0 -102 62.5 -158.5t176.5 -56.5 q174 0 274.5 99.5t100.5 276.5v107l-190 -8q-229 -11 -326.5 -71.5t-97.5 -188.5z" />
+<glyph unicode="b" horiz-adv-x="1219" d="M182 0v1556h99v-391q0 -88 -4 -162l-3 -85h7q62 98 149.5 144t210.5 46q228 0 343.5 -143.5t115.5 -419.5q0 -271 -121.5 -418t-341.5 -147q-116 0 -209 48t-147 136h-9l-28 -164h-62zM281 528q0 -246 86.5 -353t269.5 -107q178 0 268 124.5t90 354.5q0 471 -356 471 q-192 0 -275 -110t-83 -363v-17z" />
+<glyph unicode="c" horiz-adv-x="973" d="M119 537q0 270 137 420.5t375 150.5q141 0 270 -49l-27 -88q-141 47 -245 47q-200 0 -303 -123.5t-103 -355.5q0 -220 103 -344.5t288 -124.5q148 0 275 53v-92q-104 -51 -273 -51q-233 0 -365 147t-132 410z" />
+<glyph unicode="d" horiz-adv-x="1219" d="M119 528q0 282 118 431t343 149q118 0 204 -43t154 -147h6q-6 126 -6 247v391h98v-1556h-65l-25 166h-8q-124 -186 -356 -186q-225 0 -344 140t-119 408zM223 530q0 -462 359 -462q184 0 270 107t86 353v17q0 252 -84.5 362.5t-273.5 110.5q-178 0 -267.5 -125 t-89.5 -363z" />
+<glyph unicode="e" horiz-adv-x="1124" d="M119 535q0 260 128 416.5t345 156.5q192 0 303 -134t111 -364v-80h-783q2 -224 104.5 -342t293.5 -118q93 0 163.5 13t178.5 56v-90q-92 -40 -170 -54.5t-172 -14.5q-237 0 -369.5 146t-132.5 409zM229 618h672q0 189 -82 295.5t-227 106.5q-157 0 -252 -103.5 t-111 -298.5z" />
+<glyph unicode="f" horiz-adv-x="614" d="M29 1001v58l202 37v84q0 200 73.5 293.5t240.5 93.5q90 0 180 -27l-23 -86q-80 25 -159 25q-116 0 -164.5 -68.5t-48.5 -222.5v-101h256v-86h-256v-1001h-99v1001h-202z" />
+<glyph unicode="g" horiz-adv-x="1071" d="M45 -193q0 112 69.5 186t188.5 101q-49 21 -78.5 59.5t-29.5 88.5q0 109 139 192q-95 39 -148 122.5t-53 191.5q0 163 103.5 261.5t279.5 98.5q107 0 166 -21h348v-69l-225 -14q90 -112 90 -246q0 -157 -104.5 -254.5t-280.5 -97.5q-74 0 -104 6q-59 -31 -90 -73t-31 -89 q0 -52 39.5 -76t132.5 -24h190q177 0 271 -71.5t94 -211.5q0 -172 -139.5 -265.5t-397.5 -93.5q-205 0 -317.5 79t-112.5 220zM150 -184q0 -224 333 -224q428 0 428 273q0 98 -67 142t-217 44h-178q-299 0 -299 -235zM233 748q0 -126 76.5 -195.5t204.5 -69.5 q136 0 208.5 69t72.5 200q0 139 -74.5 208.5t-208.5 69.5q-130 0 -204.5 -74.5t-74.5 -207.5z" />
+<glyph unicode="h" horiz-adv-x="1208" d="M182 0v1556h99v-495l-5 -139h7q61 98 154 142t231 44q370 0 370 -397v-711h-98v705q0 164 -69 238.5t-214 74.5q-195 0 -285.5 -98.5t-90.5 -319.5v-600h-99z" />
+<glyph unicode="i" horiz-adv-x="463" d="M168 1389q0 96 63 96q31 0 48.5 -25t17.5 -71q0 -45 -17.5 -71t-48.5 -26q-63 0 -63 97zM182 0v1087h99v-1087h-99z" />
+<glyph unicode="j" horiz-adv-x="463" d="M-98 -381q69 -20 129 -20q151 0 151 176v1312h99v-1298q0 -135 -63.5 -208t-180.5 -73q-80 0 -135 25v86zM168 1389q0 96 63 96q31 0 48.5 -25t17.5 -71q0 -45 -17.5 -71t-48.5 -26q-63 0 -63 97z" />
+<glyph unicode="k" horiz-adv-x="991" d="M182 0v1556h99v-780l-7 -299h5l555 610h120l-428 -464l465 -623h-119l-413 549l-178 -162v-387h-99z" />
+<glyph unicode="l" horiz-adv-x="463" d="M182 0v1556h99v-1556h-99z" />
+<glyph unicode="m" horiz-adv-x="1808" d="M182 0v1087h82l21 -149h6q45 81 128 125.5t183 44.5q257 0 330 -193h4q53 93 142.5 143t203.5 50q178 0 267 -95t89 -302v-711h-98v713q0 159 -62 232t-190 73q-167 0 -247 -92t-80 -289v-637h-101v743q0 275 -252 275q-171 0 -249 -99.5t-78 -318.5v-600h-99z" />
+<glyph unicode="n" horiz-adv-x="1208" d="M182 0v1087h84l19 -149h6q106 170 377 170q370 0 370 -397v-711h-98v705q0 164 -69 238.5t-214 74.5q-195 0 -285.5 -98.5t-90.5 -319.5v-600h-99z" />
+<glyph unicode="o" horiz-adv-x="1200" d="M119 545q0 266 129 414.5t354 148.5q224 0 351.5 -150.5t127.5 -412.5q0 -266 -129 -415.5t-356 -149.5q-143 0 -252 69t-167 198t-58 298zM223 545q0 -224 98.5 -349.5t278.5 -125.5t278.5 125.5t98.5 349.5q0 225 -99.5 349t-279.5 124t-277.5 -123.5t-97.5 -349.5z " />
+<glyph unicode="p" horiz-adv-x="1219" d="M182 -492v1579h84l19 -155h6q112 176 358 176q220 0 335.5 -144.5t115.5 -420.5q0 -268 -121.5 -415.5t-331.5 -147.5q-251 0 -366 188h-7l3 -84q4 -74 4 -162v-414h-99zM281 541q0 -255 85.5 -364t278.5 -109q167 0 258.5 124t91.5 347q0 479 -346 479 q-190 0 -279 -104.5t-89 -340.5v-32z" />
+<glyph unicode="q" horiz-adv-x="1219" d="M119 532q0 275 118 425.5t338 150.5q236 0 353 -174h6l18 153h84v-1579h-98v414q0 122 6 248h-6q-118 -190 -369 -190q-214 0 -332 142t-118 410zM223 530q0 -229 89.5 -345.5t258.5 -116.5q198 0 282.5 109t84.5 366v12q0 245 -85 354t-271 109q-176 0 -267.5 -124 t-91.5 -364z" />
+<glyph unicode="r" horiz-adv-x="797" d="M182 0v1087h84l10 -196h7q67 120 143 168.5t184 48.5q69 0 148 -14l-19 -95q-68 17 -141 17q-139 0 -228 -118t-89 -298v-600h-99z" />
+<glyph unicode="s" horiz-adv-x="954" d="M84 47v107q164 -82 346 -82q161 0 244.5 53.5t83.5 142.5q0 82 -66.5 138t-218.5 110q-163 59 -229 101.5t-99.5 96t-33.5 130.5q0 122 102.5 193t286.5 71q176 0 334 -66l-37 -90q-160 66 -297 66q-133 0 -211 -44t-78 -122q0 -85 60.5 -136t236.5 -114 q147 -53 214 -95.5t100.5 -96.5t33.5 -127q0 -146 -111 -224.5t-315 -78.5q-218 0 -346 67z" />
+<glyph unicode="t" horiz-adv-x="686" d="M25 1001v58l161 45l50 246h51v-263h319v-86h-319v-688q0 -125 44 -185t138 -60t164 16v-80q-72 -24 -166 -24q-144 0 -212.5 77t-68.5 242v702h-161z" />
+<glyph unicode="u" horiz-adv-x="1208" d="M170 377v710h98v-704q0 -164 69 -238.5t214 -74.5q194 0 285.5 98t91.5 319v600h98v-1087h-84l-18 150h-6q-106 -170 -377 -170q-371 0 -371 397z" />
+<glyph unicode="v" horiz-adv-x="940" d="M0 1087h102l281 -739q56 -142 84 -248h6q41 136 84 250l281 737h102l-420 -1087h-100z" />
+<glyph unicode="w" horiz-adv-x="1481" d="M31 1087h106l174 -630q61 -234 80 -344h6q59 234 86 311l224 663h90l213 -661q72 -235 88 -311h6q8 65 80 348l166 624h100l-295 -1087h-104l-238 727q-23 74 -59 217h-6l-21 -74l-45 -145l-242 -725h-98z" />
+<glyph unicode="x" horiz-adv-x="1020" d="M55 0l394 559l-379 528h114l324 -458l321 458h109l-373 -528l400 -559h-115l-342 485l-344 -485h-109z" />
+<glyph unicode="y" horiz-adv-x="940" d="M0 1087h102l230 -610q105 -281 133 -379h6q42 129 137 385l230 604h102l-487 -1263q-59 -154 -99 -208t-93.5 -81t-129.5 -27q-57 0 -127 21v86q58 -16 125 -16q51 0 90 24t70.5 74.5t73 160t53.5 142.5z" />
+<glyph unicode="z" horiz-adv-x="944" d="M82 0v63l645 936h-598v88h727v-63l-649 -936h651v-88h-776z" />
+<glyph unicode="{" horiz-adv-x="723" d="M61 528v80q122 2 176 51t54 148v350q0 299 360 305v-90q-138 -5 -200 -58t-62 -157v-305q0 -130 -44 -194t-142 -85v-8q97 -20 141.5 -83.5t44.5 -186.5v-322q0 -102 59.5 -152.5t202.5 -53.5v-91q-195 0 -277.5 75t-82.5 231v337q0 205 -230 209z" />
+<glyph unicode="|" horiz-adv-x="1108" d="M508 -506v2067h92v-2067h-92z" />
+<glyph unicode="}" horiz-adv-x="723" d="M72 -233q141 2 201.5 52.5t60.5 153.5v322q0 123 44.5 186.5t141.5 83.5v8q-97 20 -141.5 84t-44.5 195v305q0 103 -61.5 156.5t-200.5 58.5v90q174 0 267 -77.5t93 -227.5v-350q0 -100 54.5 -148.5t175.5 -50.5v-80q-230 -4 -230 -209v-337q0 -155 -82.5 -230.5 t-277.5 -75.5v91z" />
+<glyph unicode="~" d="M111 625v94q108 110 233 110q61 0 115 -13.5t155 -57.5q126 -58 220 -58q56 0 109.5 30.5t115.5 94.5v-96q-48 -49 -104.5 -81t-129.5 -32q-116 0 -270 72q-124 57 -221 57q-49 0 -108 -30.5t-115 -89.5z" />
+<glyph unicode="&#xa1;" horiz-adv-x="492" d="M166 1010q0 98 80 98q82 0 82 -98q0 -53 -23.5 -76t-58.5 -23q-34 0 -57 23t-23 76zM186 -375l29 1086h61l29 -1086h-119z" />
+<glyph unicode="&#xa2;" d="M211 745q0 232 102.5 381.5t288.5 182.5v174h82v-166h14q131 0 275 -55l-31 -84q-134 51 -237 51q-187 0 -288.5 -122.5t-101.5 -358.5q0 -225 100.5 -349.5t280.5 -124.5q131 0 267 58v-92q-110 -56 -267 -56h-12v-204h-82v210q-186 30 -288.5 175t-102.5 380z" />
+<glyph unicode="&#xa3;" d="M78 0v84q110 21 171.5 110t61.5 224v258h-211v82h211v297q0 204 98 315t281 111q175 0 330 -68l-35 -86q-157 66 -295 66q-141 0 -209.5 -81t-68.5 -253v-301h411v-82h-411v-256q0 -116 -35 -196t-113 -128h809v-96h-995z" />
+<glyph unicode="&#xa4;" d="M127 326l139 141q-90 106 -90 256q0 147 90 258l-139 141l59 60l138 -142q103 93 260 93q155 0 260 -93l137 142l59 -60l-139 -141q90 -111 90 -258q0 -151 -90 -256l139 -141l-59 -60l-137 142q-110 -93 -260 -93q-153 0 -260 93l-138 -142zM260 723q0 -136 94.5 -232 t229.5 -96q134 0 228.5 95.5t94.5 232.5q0 136 -95 233t-228 97q-134 0 -229 -97t-95 -233z" />
+<glyph unicode="&#xa5;" d="M43 1462h117l426 -796l428 796h110l-432 -788h283v-82h-338v-205h338v-82h-338v-305h-105v305h-337v82h337v205h-337v82h278z" />
+<glyph unicode="&#xa6;" horiz-adv-x="1108" d="M508 258h92v-764h-92v764zM508 797v764h92v-764h-92z" />
+<glyph unicode="&#xa7;" horiz-adv-x="1057" d="M129 63v95q182 -78 332 -78q162 0 247 49.5t85 140.5q0 55 -25 87.5t-88.5 65.5t-190.5 79q-200 73 -272 141.5t-72 169.5q0 83 50.5 152.5t138.5 107.5q-86 47 -125 102t-39 136q0 117 101.5 183.5t275.5 66.5q175 0 336 -64l-35 -80q-91 34 -158.5 47t-144.5 13 q-134 0 -205.5 -44.5t-71.5 -119.5q0 -54 25.5 -88.5t85.5 -65.5t188 -74q192 -64 264 -132.5t72 -170.5q0 -173 -186 -274q86 -42 129 -96t43 -136q0 -135 -113 -207.5t-311 -72.5q-92 0 -171 15t-165 52zM246 825q0 -65 31.5 -104t105.5 -75t250 -99q82 41 126 98t44 121 q0 62 -32 102t-108.5 77t-236.5 87q-81 -23 -130.5 -79t-49.5 -128z" />
+<glyph unicode="&#xa8;" horiz-adv-x="1182" d="M336 1389q0 46 15.5 66t47.5 20q64 0 64 -86t-64 -86q-63 0 -63 86zM717 1389q0 46 15.5 66t47.5 20q64 0 64 -86t-64 -86q-63 0 -63 86z" />
+<glyph unicode="&#xa9;" horiz-adv-x="1704" d="M100 731q0 200 100 375t275 276t377 101q200 0 375 -100t276 -275t101 -377q0 -197 -97 -370t-272 -277t-383 -104q-207 0 -382 103.5t-272.5 276.5t-97.5 371zM193 731q0 -178 88.5 -329.5t240.5 -240.5t330 -89t329.5 88.5t240.5 240.5t89 330q0 174 -85.5 325 t-239 243t-334.5 92q-176 0 -328.5 -88.5t-241.5 -242.5t-89 -329zM489 725q0 208 111 332.5t297 124.5q119 0 227 -52l-37 -83q-98 45 -190 45q-142 0 -222.5 -94.5t-80.5 -264.5q0 -186 74.5 -275t220.5 -89q84 0 198 43v-88q-102 -45 -208 -45q-187 0 -288.5 115 t-101.5 331z" />
+<glyph unicode="&#xaa;" horiz-adv-x="686" d="M78 989q0 100 80 151.5t241 59.5l95 4v43q0 77 -38 114.5t-106 37.5q-87 0 -196 -49l-33 73q117 56 231 56q228 0 228 -215v-451h-68l-25 72q-84 -84 -202 -84q-95 0 -151 49t-56 139zM168 993q0 -54 35 -85t96 -31q90 0 142.5 50t52.5 142v64l-88 -5q-116 -6 -177 -36.5 t-61 -98.5z" />
+<glyph unicode="&#xab;" horiz-adv-x="885" d="M82 516v27l309 393l62 -43l-254 -363l254 -362l-62 -43zM442 516v27l310 393l61 -43l-254 -363l254 -362l-61 -43z" />
+<glyph unicode="&#xac;" d="M111 682v82h927v-494h-82v412h-845z" />
+<glyph unicode="&#xad;" horiz-adv-x="659" d="M92 512v82h475v-82h-475z" />
+<glyph unicode="&#xae;" horiz-adv-x="1704" d="M100 731q0 200 100 375t275 276t377 101q200 0 375 -100t276 -275t101 -377q0 -197 -97 -370t-272 -277t-383 -104q-207 0 -382 103.5t-272.5 276.5t-97.5 371zM193 731q0 -178 88.5 -329.5t240.5 -240.5t330 -89t329.5 88.5t240.5 240.5t89 330q0 174 -85.5 325 t-239 243t-334.5 92q-176 0 -328.5 -88.5t-241.5 -242.5t-89 -329zM608 291v880h211q143 0 222 -62t79 -191q0 -79 -38.5 -139.5t-110.5 -94.5l237 -393h-121l-210 360h-168v-360h-101zM709 731h112q91 0 143 46.5t52 135.5q0 172 -197 172h-110v-354z" />
+<glyph unicode="&#xaf;" horiz-adv-x="1024" d="M-6 1556v82h1036v-82h-1036z" />
+<glyph unicode="&#xb0;" horiz-adv-x="877" d="M139 1184q0 132 86.5 215.5t212.5 83.5t212.5 -83.5t86.5 -215.5t-86.5 -215.5t-212.5 -83.5q-130 0 -214.5 83t-84.5 216zM229 1184q0 -91 61 -154t148 -63q86 0 147.5 62t61.5 155q0 92 -60 154.5t-149 62.5q-90 0 -149.5 -64t-59.5 -153z" />
+<glyph unicode="&#xb1;" d="M111 1v82h948v-82h-948zM111 682v82h432v434h82v-434h434v-82h-434v-432h-82v432h-432z" />
+<glyph unicode="&#xb2;" horiz-adv-x="688" d="M53 586v78l242 237q125 121 172 193t47 149q0 71 -46.5 112.5t-123.5 41.5q-108 0 -217 -82l-49 65q119 103 270 103q124 0 194 -63.5t70 -174.5q0 -47 -13 -89t-40 -85.5t-68.5 -90t-308.5 -306.5h447v-88h-576z" />
+<glyph unicode="&#xb3;" horiz-adv-x="688" d="M41 629v88q136 -62 266 -62q115 0 174.5 49t59.5 136q0 83 -59.5 122t-178.5 39h-131v84h135q105 0 158 43.5t53 120.5q0 67 -47 107.5t-127 40.5q-128 0 -246 -78l-47 70q130 94 293 94q127 0 199.5 -60t72.5 -163q0 -78 -44 -131.5t-117 -75.5q186 -45 186 -211 q0 -130 -88.5 -201.5t-247.5 -71.5q-144 0 -264 60z" />
+<glyph unicode="&#xb4;" horiz-adv-x="1182" d="M393 1241v16q73 79 144.5 171.5t97.5 140.5h141v-17q-36 -52 -122.5 -138t-190.5 -173h-70z" />
+<glyph unicode="&#xb5;" horiz-adv-x="1221" d="M182 -492v1579h99v-704q0 -164 69 -238.5t213 -74.5q194 0 285.5 98t91.5 319v600h98v-1087h-84l-18 150h-6q-50 -77 -150 -123.5t-217 -46.5q-99 0 -167.5 27.5t-119.5 84.5q5 -92 5 -170v-414h-99z" />
+<glyph unicode="&#xb6;" horiz-adv-x="1341" d="M113 1042q0 260 109 387t341 127h543v-1816h-100v1722h-228v-1722h-100v819q-64 -18 -146 -18q-216 0 -317.5 125t-101.5 376z" />
+<glyph unicode="&#xb7;" horiz-adv-x="487" d="M162 721q0 98 80 98q82 0 82 -98t-82 -98q-80 0 -80 98z" />
+<glyph unicode="&#xb8;" horiz-adv-x="420" d="M43 -393q30 -10 92 -10q78 0 119 28t41 80q0 94 -193 121l93 174h96l-66 -117q168 -37 168 -174q0 -100 -67.5 -150.5t-188.5 -50.5q-68 0 -94 11v88z" />
+<glyph unicode="&#xb9;" horiz-adv-x="688" d="M76 1298l274 164h92v-876h-98v547q0 99 12 233q-26 -23 -233 -145z" />
+<glyph unicode="&#xba;" horiz-adv-x="739" d="M70 1141q0 162 78 250t223 88q142 0 220.5 -87t78.5 -251q0 -161 -80 -250.5t-223 -89.5t-220 86t-77 254zM160 1141q0 -264 209 -264t209 264q0 131 -50 194.5t-159 63.5t-159 -63.5t-50 -194.5z" />
+<glyph unicode="&#xbb;" horiz-adv-x="885" d="M72 168l254 362l-254 363l61 43l309 -391v-27l-309 -393zM432 168l254 362l-254 363l62 43l309 -391v-27l-309 -393z" />
+<glyph unicode="&#xbc;" horiz-adv-x="1516" d="M59 1298l274 164h92v-876h-98v547q0 99 12 233q-26 -23 -233 -145zM243 0l811 1462h94l-811 -1462h-94zM760 242v60l407 581h96v-563h129v-78h-129v-241h-90v241h-413zM864 320h309v221q0 132 8 232q-6 -12 -21.5 -35.5t-295.5 -417.5z" />
+<glyph unicode="&#xbd;" horiz-adv-x="1516" d="M11 1298l274 164h92v-876h-98v547q0 99 12 233q-26 -23 -233 -145zM168 0l811 1462h94l-811 -1462h-94zM827 1v78l242 237q125 121 172 193t47 149q0 71 -46.5 112.5t-123.5 41.5q-108 0 -217 -82l-49 65q119 103 270 103q124 0 194 -63.5t70 -174.5q0 -47 -13 -89 t-40 -85.5t-68.5 -90t-308.5 -306.5h447v-88h-576z" />
+<glyph unicode="&#xbe;" horiz-adv-x="1516" d="M41 629v88q136 -62 266 -62q115 0 174.5 49t59.5 136q0 83 -59.5 122t-178.5 39h-131v84h135q105 0 158 43.5t53 120.5q0 67 -47 107.5t-127 40.5q-128 0 -246 -78l-47 70q130 94 293 94q127 0 199.5 -60t72.5 -163q0 -78 -44 -131.5t-117 -75.5q186 -45 186 -211 q0 -130 -88.5 -201.5t-247.5 -71.5q-144 0 -264 60zM395 0l811 1462h94l-811 -1462h-94zM863 242v60l407 581h96v-563h129v-78h-129v-241h-90v241h-413zM967 320h309v221q0 132 8 232q-6 -12 -21.5 -35.5t-295.5 -417.5z" />
+<glyph unicode="&#xbf;" horiz-adv-x="862" d="M74 -27q0 70 20 124t58.5 102t171.5 159q64 53 98.5 98.5t49.5 94t15 145.5v15h82v-37q0 -125 -39.5 -204.5t-136.5 -164.5l-90 -79q-73 -61 -104 -120.5t-31 -138.5q0 -124 82 -200t221 -76q125 0 233 46l64 27l37 -79q-111 -48 -185.5 -64t-152.5 -16q-184 0 -288.5 99 t-104.5 269zM440 1010q0 98 80 98q82 0 82 -98q0 -53 -23.5 -76t-58.5 -23q-34 0 -57 23t-23 76z" />
+<glyph unicode="&#xc0;" horiz-adv-x="1229" d="M0 0l588 1468h65l576 -1468h-115l-203 516h-594l-204 -516h-113zM354 608h523l-199 527q-25 62 -60 172q-27 -96 -59 -174zM337 1890v17h142q26 -48 98.5 -142t142.5 -170v-16h-69q-96 79 -188.5 171.5t-125.5 139.5z" />
+<glyph unicode="&#xc1;" horiz-adv-x="1229" d="M0 0l588 1468h65l576 -1468h-115l-203 516h-594l-204 -516h-113zM354 608h523l-199 527q-25 62 -60 172q-27 -96 -59 -174zM504 1579v16q73 79 144.5 171.5t97.5 140.5h141v-17q-36 -52 -122.5 -138t-190.5 -173h-70z" />
+<glyph unicode="&#xc2;" horiz-adv-x="1229" d="M0 0l588 1468h65l576 -1468h-115l-203 516h-594l-204 -516h-113zM354 608h523l-199 527q-25 62 -60 172q-27 -96 -59 -174zM328 1579v16q62 67 131.5 156t110.5 156h98q68 -120 242 -312v-16h-70q-122 101 -221 207q-108 -114 -221 -207h-70z" />
+<glyph unicode="&#xc3;" horiz-adv-x="1229" d="M0 0l588 1468h65l576 -1468h-115l-203 516h-594l-204 -516h-113zM354 608h523l-199 527q-25 62 -60 172q-27 -96 -59 -174zM287 1581q10 111 63 174.5t137 63.5q48 0 88 -25t82 -59q34 -28 66 -50t61 -22q46 0 77 36.5t48 119.5h76q-16 -116 -69 -177t-132 -61 q-36 0 -75 18.5t-101 71.5q-32 26 -62.5 46t-62.5 20q-45 0 -75 -34.5t-48 -121.5h-73z" />
+<glyph unicode="&#xc4;" horiz-adv-x="1229" d="M0 0l588 1468h65l576 -1468h-115l-203 516h-594l-204 -516h-113zM354 608h523l-199 527q-25 62 -60 172q-27 -96 -59 -174zM367 1727q0 46 15.5 66t47.5 20q64 0 64 -86t-64 -86q-63 0 -63 86zM748 1727q0 46 15.5 66t47.5 20q64 0 64 -86t-64 -86q-63 0 -63 86z" />
+<glyph unicode="&#xc5;" horiz-adv-x="1229" d="M0 0l588 1468h65l576 -1468h-115l-203 516h-594l-204 -516h-113zM354 608h523l-199 527q-25 62 -60 172q-27 -96 -59 -174zM402 1610q0 94 60 152.5t157 58.5t157 -59t60 -152q0 -97 -60 -155t-157 -58t-157 58t-60 155zM482 1610q0 -66 37.5 -103.5t99.5 -37.5 t99.5 37.5t37.5 103.5q0 64 -39 101.5t-98 37.5q-62 0 -99.5 -38t-37.5 -101z" />
+<glyph unicode="&#xc6;" horiz-adv-x="1653" d="M-2 0l653 1462h877v-94h-615v-553h576v-94h-576v-627h615v-94h-717v516h-475l-227 -516h-111zM377 608h434v760h-100z" />
+<glyph unicode="&#xc7;" horiz-adv-x="1272" d="M129 735q0 223 84.5 393t243 262.5t368.5 92.5q214 0 383 -80l-41 -92q-160 80 -336 80q-275 0 -433 -176t-158 -482q0 -313 149 -486t426 -173q184 0 338 47v-90q-145 -51 -362 -51q-308 0 -485 199t-177 556zM561 -393q30 -10 92 -10q78 0 119 28t41 80q0 94 -193 121 l93 174h96l-66 -117q168 -37 168 -174q0 -100 -67.5 -150.5t-188.5 -50.5q-68 0 -94 11v88z" />
+<glyph unicode="&#xc8;" horiz-adv-x="1130" d="M207 0v1462h799v-94h-697v-553h658v-94h-658v-627h697v-94h-799zM314 1890v17h142q26 -48 98.5 -142t142.5 -170v-16h-69q-96 79 -188.5 171.5t-125.5 139.5z" />
+<glyph unicode="&#xc9;" horiz-adv-x="1130" d="M207 0v1462h799v-94h-697v-553h658v-94h-658v-627h697v-94h-799zM463 1579v16q73 79 144.5 171.5t97.5 140.5h141v-17q-36 -52 -122.5 -138t-190.5 -173h-70z" />
+<glyph unicode="&#xca;" horiz-adv-x="1130" d="M207 0v1462h799v-94h-697v-553h658v-94h-658v-627h697v-94h-799zM315 1579v16q62 67 131.5 156t110.5 156h98q68 -120 242 -312v-16h-70q-122 101 -221 207q-108 -114 -221 -207h-70z" />
+<glyph unicode="&#xcb;" horiz-adv-x="1130" d="M207 0v1462h799v-94h-697v-553h658v-94h-658v-627h697v-94h-799zM354 1727q0 46 15.5 66t47.5 20q64 0 64 -86t-64 -86q-63 0 -63 86zM735 1727q0 46 15.5 66t47.5 20q64 0 64 -86t-64 -86q-63 0 -63 86z" />
+<glyph unicode="&#xcc;" horiz-adv-x="516" d="M207 0v1462h102v-1462h-102zM-63 1890v17h142q26 -48 98.5 -142t142.5 -170v-16h-69q-96 79 -188.5 171.5t-125.5 139.5z" />
+<glyph unicode="&#xcd;" horiz-adv-x="516" d="M207 0v1462h102v-1462h-102zM191 1579v16q73 79 144.5 171.5t97.5 140.5h141v-17q-36 -52 -122.5 -138t-190.5 -173h-70z" />
+<glyph unicode="&#xce;" horiz-adv-x="516" d="M207 0v1462h102v-1462h-102zM-32 1579v16q62 67 131.5 156t110.5 156h98q68 -120 242 -312v-16h-70q-122 101 -221 207q-108 -114 -221 -207h-70z" />
+<glyph unicode="&#xcf;" horiz-adv-x="516" d="M207 0v1462h102v-1462h-102zM5 1727q0 46 15.5 66t47.5 20q64 0 64 -86t-64 -86q-63 0 -63 86zM386 1727q0 46 15.5 66t47.5 20q64 0 64 -86t-64 -86q-63 0 -63 86z" />
+<glyph unicode="&#xd0;" horiz-adv-x="1466" d="M47 678v94h160v690h395q350 0 532.5 -183t182.5 -534q0 -368 -193 -556.5t-567 -188.5h-350v678h-160zM309 90h242q655 0 655 651q0 314 -159.5 472.5t-468.5 158.5h-269v-600h406v-94h-406v-588z" />
+<glyph unicode="&#xd1;" horiz-adv-x="1477" d="M207 0v1462h102l865 -1296h6q-9 180 -9 342v954h99v-1462h-103l-866 1298h-8q12 -232 12 -350v-948h-98zM400 1581q10 111 63 174.5t137 63.5q48 0 88 -25t82 -59q34 -28 66 -50t61 -22q46 0 77 36.5t48 119.5h76q-16 -116 -69 -177t-132 -61q-36 0 -75 18.5t-101 71.5 q-32 26 -62.5 46t-62.5 20q-45 0 -75 -34.5t-48 -121.5h-73z" />
+<glyph unicode="&#xd2;" horiz-adv-x="1565" d="M129 735q0 349 175.5 549.5t479.5 200.5q306 0 479 -201.5t173 -550.5q0 -348 -174 -550.5t-480 -202.5q-305 0 -479 202.5t-174 552.5zM240 733q0 -314 140 -485.5t402 -171.5q264 0 403.5 170t139.5 487q0 316 -139.5 484.5t-401.5 168.5q-261 0 -402.5 -170 t-141.5 -483zM502 1890v17h142q26 -48 98.5 -142t142.5 -170v-16h-69q-96 79 -188.5 171.5t-125.5 139.5z" />
+<glyph unicode="&#xd3;" horiz-adv-x="1565" d="M129 735q0 349 175.5 549.5t479.5 200.5q306 0 479 -201.5t173 -550.5q0 -348 -174 -550.5t-480 -202.5q-305 0 -479 202.5t-174 552.5zM240 733q0 -314 140 -485.5t402 -171.5q264 0 403.5 170t139.5 487q0 316 -139.5 484.5t-401.5 168.5q-261 0 -402.5 -170 t-141.5 -483zM686 1579v16q73 79 144.5 171.5t97.5 140.5h141v-17q-36 -52 -122.5 -138t-190.5 -173h-70z" />
+<glyph unicode="&#xd4;" horiz-adv-x="1565" d="M129 735q0 349 175.5 549.5t479.5 200.5q306 0 479 -201.5t173 -550.5q0 -348 -174 -550.5t-480 -202.5q-305 0 -479 202.5t-174 552.5zM240 733q0 -314 140 -485.5t402 -171.5q264 0 403.5 170t139.5 487q0 316 -139.5 484.5t-401.5 168.5q-261 0 -402.5 -170 t-141.5 -483zM492 1579v16q62 67 131.5 156t110.5 156h98q68 -120 242 -312v-16h-70q-122 101 -221 207q-108 -114 -221 -207h-70z" />
+<glyph unicode="&#xd5;" horiz-adv-x="1565" d="M129 735q0 349 175.5 549.5t479.5 200.5q306 0 479 -201.5t173 -550.5q0 -348 -174 -550.5t-480 -202.5q-305 0 -479 202.5t-174 552.5zM240 733q0 -314 140 -485.5t402 -171.5q264 0 403.5 170t139.5 487q0 316 -139.5 484.5t-401.5 168.5q-261 0 -402.5 -170 t-141.5 -483zM443 1581q10 111 63 174.5t137 63.5q48 0 88 -25t82 -59q34 -28 66 -50t61 -22q46 0 77 36.5t48 119.5h76q-16 -116 -69 -177t-132 -61q-36 0 -75 18.5t-101 71.5q-32 26 -62.5 46t-62.5 20q-45 0 -75 -34.5t-48 -121.5h-73z" />
+<glyph unicode="&#xd6;" horiz-adv-x="1565" d="M129 735q0 349 175.5 549.5t479.5 200.5q306 0 479 -201.5t173 -550.5q0 -348 -174 -550.5t-480 -202.5q-305 0 -479 202.5t-174 552.5zM240 733q0 -314 140 -485.5t402 -171.5q264 0 403.5 170t139.5 487q0 316 -139.5 484.5t-401.5 168.5q-261 0 -402.5 -170 t-141.5 -483zM529 1727q0 46 15.5 66t47.5 20q64 0 64 -86t-64 -86q-63 0 -63 86zM910 1727q0 46 15.5 66t47.5 20q64 0 64 -86t-64 -86q-63 0 -63 86z" />
+<glyph unicode="&#xd7;" d="M119 1130l57 58l408 -408l409 408l58 -58l-408 -407l406 -408l-58 -57l-407 408l-406 -408l-57 57l405 408z" />
+<glyph unicode="&#xd8;" horiz-adv-x="1565" d="M129 735q0 349 175.5 549.5t479.5 200.5q232 0 392 -121l108 152l72 -60l-111 -153q191 -207 191 -570q0 -348 -174 -550.5t-480 -202.5q-236 0 -395 120l-86 -120l-74 59l90 127q-188 200 -188 569zM240 733q0 -312 139 -483l739 1034q-133 102 -334 102 q-261 0 -402.5 -170t-141.5 -483zM444 182q133 -106 338 -106q264 0 403.5 170t139.5 487q0 315 -139 486z" />
+<glyph unicode="&#xd9;" horiz-adv-x="1473" d="M190 520v942h103v-946q0 -211 117 -328.5t331 -117.5q209 0 324 115.5t115 320.5v956h102v-946q0 -252 -146 -394t-407 -142q-254 0 -396.5 142.5t-142.5 397.5zM450 1890v17h142q26 -48 98.5 -142t142.5 -170v-16h-69q-96 79 -188.5 171.5t-125.5 139.5z" />
+<glyph unicode="&#xda;" horiz-adv-x="1473" d="M190 520v942h103v-946q0 -211 117 -328.5t331 -117.5q209 0 324 115.5t115 320.5v956h102v-946q0 -252 -146 -394t-407 -142q-254 0 -396.5 142.5t-142.5 397.5zM633 1579v16q73 79 144.5 171.5t97.5 140.5h141v-17q-36 -52 -122.5 -138t-190.5 -173h-70z" />
+<glyph unicode="&#xdb;" horiz-adv-x="1473" d="M190 520v942h103v-946q0 -211 117 -328.5t331 -117.5q209 0 324 115.5t115 320.5v956h102v-946q0 -252 -146 -394t-407 -142q-254 0 -396.5 142.5t-142.5 397.5zM444 1579v16q62 67 131.5 156t110.5 156h98q68 -120 242 -312v-16h-70q-122 101 -221 207 q-108 -114 -221 -207h-70z" />
+<glyph unicode="&#xdc;" horiz-adv-x="1473" d="M190 520v942h103v-946q0 -211 117 -328.5t331 -117.5q209 0 324 115.5t115 320.5v956h102v-946q0 -252 -146 -394t-407 -142q-254 0 -396.5 142.5t-142.5 397.5zM481 1727q0 46 15.5 66t47.5 20q64 0 64 -86t-64 -86q-63 0 -63 86zM862 1727q0 46 15.5 66t47.5 20 q64 0 64 -86t-64 -86q-63 0 -63 86z" />
+<glyph unicode="&#xdd;" horiz-adv-x="1081" d="M0 1462h117l426 -800l428 800h110l-487 -897v-565h-105v557zM434 1579v16q73 79 144.5 171.5t97.5 140.5h141v-17q-36 -52 -122.5 -138t-190.5 -173h-70z" />
+<glyph unicode="&#xde;" horiz-adv-x="1198" d="M207 0v1462h102v-264h256q522 0 522 -420q0 -212 -144 -325t-408 -113h-226v-340h-102zM309 428h201q247 0 357 81.5t110 264.5q0 169 -104 250.5t-322 81.5h-242v-678z" />
+<glyph unicode="&#xdf;" horiz-adv-x="1194" d="M182 0v1206q0 173 103.5 267t292.5 94q188 0 285.5 -72.5t97.5 -210.5q0 -139 -139 -250q-81 -64 -110.5 -100.5t-29.5 -75.5q0 -44 14.5 -68t51.5 -57t102 -78q106 -75 151.5 -124.5t68 -103t22.5 -120.5q0 -156 -88 -241.5t-246 -85.5q-95 0 -174.5 18.5t-126.5 48.5 v107q65 -38 148.5 -62t152.5 -24q114 0 174.5 54.5t60.5 160.5q0 83 -39 144t-149 136q-127 87 -175 147t-48 146q0 60 32.5 110t106.5 108q74 57 106.5 105.5t32.5 106.5q0 93 -70 143t-202 50q-145 0 -226 -69t-81 -196v-1214h-99z" />
+<glyph unicode="&#xe0;" horiz-adv-x="1085" d="M98 289q0 159 132.5 247t383.5 93l207 6v72q0 155 -63 234t-203 79q-151 0 -313 -84l-37 86q179 84 354 84q179 0 267.5 -93t88.5 -290v-723h-73l-25 172h-8q-82 -105 -168.5 -148.5t-204.5 -43.5q-160 0 -249 82t-89 227zM203 285q0 -102 62.5 -158.5t176.5 -56.5 q174 0 274.5 99.5t100.5 276.5v107l-190 -8q-229 -11 -326.5 -71.5t-97.5 -188.5zM255 1552v17h142q26 -48 98.5 -142t142.5 -170v-16h-69q-96 79 -188.5 171.5t-125.5 139.5z" />
+<glyph unicode="&#xe1;" horiz-adv-x="1085" d="M98 289q0 159 132.5 247t383.5 93l207 6v72q0 155 -63 234t-203 79q-151 0 -313 -84l-37 86q179 84 354 84q179 0 267.5 -93t88.5 -290v-723h-73l-25 172h-8q-82 -105 -168.5 -148.5t-204.5 -43.5q-160 0 -249 82t-89 227zM203 285q0 -102 62.5 -158.5t176.5 -56.5 q174 0 274.5 99.5t100.5 276.5v107l-190 -8q-229 -11 -326.5 -71.5t-97.5 -188.5zM422 1241v16q73 79 144.5 171.5t97.5 140.5h141v-17q-36 -52 -122.5 -138t-190.5 -173h-70z" />
+<glyph unicode="&#xe2;" horiz-adv-x="1085" d="M98 289q0 159 132.5 247t383.5 93l207 6v72q0 155 -63 234t-203 79q-151 0 -313 -84l-37 86q179 84 354 84q179 0 267.5 -93t88.5 -290v-723h-73l-25 172h-8q-82 -105 -168.5 -148.5t-204.5 -43.5q-160 0 -249 82t-89 227zM203 285q0 -102 62.5 -158.5t176.5 -56.5 q174 0 274.5 99.5t100.5 276.5v107l-190 -8q-229 -11 -326.5 -71.5t-97.5 -188.5zM251 1241v16q62 67 131.5 156t110.5 156h98q68 -120 242 -312v-16h-70q-122 101 -221 207q-108 -114 -221 -207h-70z" />
+<glyph unicode="&#xe3;" horiz-adv-x="1085" d="M98 289q0 159 132.5 247t383.5 93l207 6v72q0 155 -63 234t-203 79q-151 0 -313 -84l-37 86q179 84 354 84q179 0 267.5 -93t88.5 -290v-723h-73l-25 172h-8q-82 -105 -168.5 -148.5t-204.5 -43.5q-160 0 -249 82t-89 227zM203 285q0 -102 62.5 -158.5t176.5 -56.5 q174 0 274.5 99.5t100.5 276.5v107l-190 -8q-229 -11 -326.5 -71.5t-97.5 -188.5zM200 1243q10 111 63 174.5t137 63.5q48 0 88 -25t82 -59q34 -28 66 -50t61 -22q46 0 77 36.5t48 119.5h76q-16 -116 -69 -177t-132 -61q-36 0 -75 18.5t-101 71.5q-32 26 -62.5 46t-62.5 20 q-45 0 -75 -34.5t-48 -121.5h-73z" />
+<glyph unicode="&#xe4;" horiz-adv-x="1085" d="M98 289q0 159 132.5 247t383.5 93l207 6v72q0 155 -63 234t-203 79q-151 0 -313 -84l-37 86q179 84 354 84q179 0 267.5 -93t88.5 -290v-723h-73l-25 172h-8q-82 -105 -168.5 -148.5t-204.5 -43.5q-160 0 -249 82t-89 227zM203 285q0 -102 62.5 -158.5t176.5 -56.5 q174 0 274.5 99.5t100.5 276.5v107l-190 -8q-229 -11 -326.5 -71.5t-97.5 -188.5zM282 1389q0 46 15.5 66t47.5 20q64 0 64 -86t-64 -86q-63 0 -63 86zM663 1389q0 46 15.5 66t47.5 20q64 0 64 -86t-64 -86q-63 0 -63 86z" />
+<glyph unicode="&#xe5;" horiz-adv-x="1085" d="M98 289q0 159 132.5 247t383.5 93l207 6v72q0 155 -63 234t-203 79q-151 0 -313 -84l-37 86q179 84 354 84q179 0 267.5 -93t88.5 -290v-723h-73l-25 172h-8q-82 -105 -168.5 -148.5t-204.5 -43.5q-160 0 -249 82t-89 227zM203 285q0 -102 62.5 -158.5t176.5 -56.5 q174 0 274.5 99.5t100.5 276.5v107l-190 -8q-229 -11 -326.5 -71.5t-97.5 -188.5zM325 1456q0 94 60 152.5t157 58.5t157 -59t60 -152q0 -97 -60 -155t-157 -58t-157 58t-60 155zM405 1456q0 -66 37.5 -103.5t99.5 -37.5t99.5 37.5t37.5 103.5q0 64 -39 101.5t-98 37.5 q-62 0 -99.5 -38t-37.5 -101z" />
+<glyph unicode="&#xe6;" horiz-adv-x="1731" d="M98 289q0 154 125 243t377 97l201 6v72q0 155 -61.5 234t-198.5 79q-148 0 -305 -84l-37 86q173 84 346 84q261 0 325 -211q111 213 347 213q184 0 289.5 -134.5t105.5 -363.5v-80h-715q0 -460 348 -460q85 0 150 12t174 57v-90q-92 -41 -165 -55t-161 -14 q-295 0 -397 256q-68 -133 -168 -194.5t-252 -61.5q-156 0 -242 82.5t-86 226.5zM203 285q0 -102 61 -158.5t170 -56.5q169 0 266 99.5t97 276.5v107l-187 -8q-219 -11 -313 -71.5t-94 -188.5zM903 618h604q0 188 -77.5 295t-212.5 107q-284 0 -314 -402z" />
+<glyph unicode="&#xe7;" horiz-adv-x="973" d="M119 537q0 270 137 420.5t375 150.5q141 0 270 -49l-27 -88q-141 47 -245 47q-200 0 -303 -123.5t-103 -355.5q0 -220 103 -344.5t288 -124.5q148 0 275 53v-92q-104 -51 -273 -51q-233 0 -365 147t-132 410zM373 -393q30 -10 92 -10q78 0 119 28t41 80q0 94 -193 121 l93 174h96l-66 -117q168 -37 168 -174q0 -100 -67.5 -150.5t-188.5 -50.5q-68 0 -94 11v88z" />
+<glyph unicode="&#xe8;" horiz-adv-x="1124" d="M119 535q0 260 128 416.5t345 156.5q192 0 303 -134t111 -364v-80h-783q2 -224 104.5 -342t293.5 -118q93 0 163.5 13t178.5 56v-90q-92 -40 -170 -54.5t-172 -14.5q-237 0 -369.5 146t-132.5 409zM229 618h672q0 189 -82 295.5t-227 106.5q-157 0 -252 -103.5 t-111 -298.5zM302 1552v17h142q26 -48 98.5 -142t142.5 -170v-16h-69q-96 79 -188.5 171.5t-125.5 139.5z" />
+<glyph unicode="&#xe9;" horiz-adv-x="1124" d="M119 535q0 260 128 416.5t345 156.5q192 0 303 -134t111 -364v-80h-783q2 -224 104.5 -342t293.5 -118q93 0 163.5 13t178.5 56v-90q-92 -40 -170 -54.5t-172 -14.5q-237 0 -369.5 146t-132.5 409zM229 618h672q0 189 -82 295.5t-227 106.5q-157 0 -252 -103.5 t-111 -298.5zM452 1241v16q73 79 144.5 171.5t97.5 140.5h141v-17q-36 -52 -122.5 -138t-190.5 -173h-70z" />
+<glyph unicode="&#xea;" horiz-adv-x="1124" d="M119 535q0 260 128 416.5t345 156.5q192 0 303 -134t111 -364v-80h-783q2 -224 104.5 -342t293.5 -118q93 0 163.5 13t178.5 56v-90q-92 -40 -170 -54.5t-172 -14.5q-237 0 -369.5 146t-132.5 409zM229 618h672q0 189 -82 295.5t-227 106.5q-157 0 -252 -103.5 t-111 -298.5zM290 1241v16q62 67 131.5 156t110.5 156h98q68 -120 242 -312v-16h-70q-122 101 -221 207q-108 -114 -221 -207h-70z" />
+<glyph unicode="&#xeb;" horiz-adv-x="1124" d="M119 535q0 260 128 416.5t345 156.5q192 0 303 -134t111 -364v-80h-783q2 -224 104.5 -342t293.5 -118q93 0 163.5 13t178.5 56v-90q-92 -40 -170 -54.5t-172 -14.5q-237 0 -369.5 146t-132.5 409zM229 618h672q0 189 -82 295.5t-227 106.5q-157 0 -252 -103.5 t-111 -298.5zM331 1389q0 46 15.5 66t47.5 20q64 0 64 -86t-64 -86q-63 0 -63 86zM712 1389q0 46 15.5 66t47.5 20q64 0 64 -86t-64 -86q-63 0 -63 86z" />
+<glyph unicode="&#xec;" horiz-adv-x="463" d="M182 0v1087h99v-1087h-99zM-34 1552v17h142q26 -48 98.5 -142t142.5 -170v-16h-69q-96 79 -188.5 171.5t-125.5 139.5z" />
+<glyph unicode="&#xed;" horiz-adv-x="463" d="M182 0v1087h99v-1087h-99zM107 1241v16q73 79 144.5 171.5t97.5 140.5h141v-17q-36 -52 -122.5 -138t-190.5 -173h-70z" />
+<glyph unicode="&#xee;" horiz-adv-x="463" d="M182 0v1087h99v-1087h-99zM-58 1241v16q62 67 131.5 156t110.5 156h98q68 -120 242 -312v-16h-70q-122 101 -221 207q-108 -114 -221 -207h-70z" />
+<glyph unicode="&#xef;" horiz-adv-x="463" d="M182 0v1087h99v-1087h-99zM-21 1389q0 46 15.5 66t47.5 20q64 0 64 -86t-64 -86q-63 0 -63 86zM360 1389q0 46 15.5 66t47.5 20q64 0 64 -86t-64 -86q-63 0 -63 86z" />
+<glyph unicode="&#xf0;" horiz-adv-x="1174" d="M117 471q0 228 126.5 357.5t342.5 129.5q108 0 187.5 -33t148.5 -96l4 2q-64 270 -269 459l-270 -157l-49 77l244 146q-86 62 -199 119l45 81q147 -69 248 -145l225 137l49 -84l-202 -121q154 -151 230.5 -353t76.5 -431q0 -276 -124 -427.5t-349 -151.5 q-214 0 -339.5 130t-125.5 361zM221 463q0 -186 94.5 -289.5t268.5 -103.5q179 0 272.5 123t93.5 364q0 146 -97 228.5t-267 82.5q-185 0 -275 -100.5t-90 -304.5z" />
+<glyph unicode="&#xf1;" horiz-adv-x="1208" d="M182 0v1087h84l19 -149h6q106 170 377 170q370 0 370 -397v-711h-98v705q0 164 -69 238.5t-214 74.5q-195 0 -285.5 -98.5t-90.5 -319.5v-600h-99zM282 1243q10 111 63 174.5t137 63.5q48 0 88 -25t82 -59q34 -28 66 -50t61 -22q46 0 77 36.5t48 119.5h76 q-16 -116 -69 -177t-132 -61q-36 0 -75 18.5t-101 71.5q-32 26 -62.5 46t-62.5 20q-45 0 -75 -34.5t-48 -121.5h-73z" />
+<glyph unicode="&#xf2;" horiz-adv-x="1200" d="M119 545q0 266 129 414.5t354 148.5q224 0 351.5 -150.5t127.5 -412.5q0 -266 -129 -415.5t-356 -149.5q-143 0 -252 69t-167 198t-58 298zM223 545q0 -224 98.5 -349.5t278.5 -125.5t278.5 125.5t98.5 349.5q0 225 -99.5 349t-279.5 124t-277.5 -123.5t-97.5 -349.5z M335 1552v17h142q26 -48 98.5 -142t142.5 -170v-16h-69q-96 79 -188.5 171.5t-125.5 139.5z" />
+<glyph unicode="&#xf3;" horiz-adv-x="1200" d="M119 545q0 266 129 414.5t354 148.5q224 0 351.5 -150.5t127.5 -412.5q0 -266 -129 -415.5t-356 -149.5q-143 0 -252 69t-167 198t-58 298zM223 545q0 -224 98.5 -349.5t278.5 -125.5t278.5 125.5t98.5 349.5q0 225 -99.5 349t-279.5 124t-277.5 -123.5t-97.5 -349.5z M499 1241v16q73 79 144.5 171.5t97.5 140.5h141v-17q-36 -52 -122.5 -138t-190.5 -173h-70z" />
+<glyph unicode="&#xf4;" horiz-adv-x="1200" d="M119 545q0 266 129 414.5t354 148.5q224 0 351.5 -150.5t127.5 -412.5q0 -266 -129 -415.5t-356 -149.5q-143 0 -252 69t-167 198t-58 298zM223 545q0 -224 98.5 -349.5t278.5 -125.5t278.5 125.5t98.5 349.5q0 225 -99.5 349t-279.5 124t-277.5 -123.5t-97.5 -349.5z M309 1241v16q62 67 131.5 156t110.5 156h98q68 -120 242 -312v-16h-70q-122 101 -221 207q-108 -114 -221 -207h-70z" />
+<glyph unicode="&#xf5;" horiz-adv-x="1200" d="M119 545q0 266 129 414.5t354 148.5q224 0 351.5 -150.5t127.5 -412.5q0 -266 -129 -415.5t-356 -149.5q-143 0 -252 69t-167 198t-58 298zM223 545q0 -224 98.5 -349.5t278.5 -125.5t278.5 125.5t98.5 349.5q0 225 -99.5 349t-279.5 124t-277.5 -123.5t-97.5 -349.5z M264 1243q10 111 63 174.5t137 63.5q48 0 88 -25t82 -59q34 -28 66 -50t61 -22q46 0 77 36.5t48 119.5h76q-16 -116 -69 -177t-132 -61q-36 0 -75 18.5t-101 71.5q-32 26 -62.5 46t-62.5 20q-45 0 -75 -34.5t-48 -121.5h-73z" />
+<glyph unicode="&#xf6;" horiz-adv-x="1200" d="M119 545q0 266 129 414.5t354 148.5q224 0 351.5 -150.5t127.5 -412.5q0 -266 -129 -415.5t-356 -149.5q-143 0 -252 69t-167 198t-58 298zM223 545q0 -224 98.5 -349.5t278.5 -125.5t278.5 125.5t98.5 349.5q0 225 -99.5 349t-279.5 124t-277.5 -123.5t-97.5 -349.5z M346 1389q0 46 15.5 66t47.5 20q64 0 64 -86t-64 -86q-63 0 -63 86zM727 1389q0 46 15.5 66t47.5 20q64 0 64 -86t-64 -86q-63 0 -63 86z" />
+<glyph unicode="&#xf7;" d="M111 682v82h948v-82h-948zM504 371q0 98 80 98q82 0 82 -98q0 -53 -23.5 -76t-58.5 -23q-34 0 -57 23t-23 76zM504 1075q0 99 80 99q82 0 82 -99q0 -52 -23.5 -75t-58.5 -23q-34 0 -57 23t-23 75z" />
+<glyph unicode="&#xf8;" horiz-adv-x="1200" d="M119 545q0 266 129 414.5t354 148.5q179 0 301 -104l96 124l74 -55l-104 -137q112 -147 112 -391q0 -266 -129 -415.5t-356 -149.5q-173 0 -291 98l-86 -113l-72 58l93 120q-121 153 -121 402zM223 545q0 -200 78 -322l543 705q-98 90 -246 90q-180 0 -277.5 -123.5 t-97.5 -349.5zM362 152q94 -82 238 -82q180 0 278.5 125.5t98.5 349.5q0 190 -72 309z" />
+<glyph unicode="&#xf9;" horiz-adv-x="1208" d="M170 377v710h98v-704q0 -164 69 -238.5t214 -74.5q194 0 285.5 98t91.5 319v600h98v-1087h-84l-18 150h-6q-106 -170 -377 -170q-371 0 -371 397zM304 1552v17h142q26 -48 98.5 -142t142.5 -170v-16h-69q-96 79 -188.5 171.5t-125.5 139.5z" />
+<glyph unicode="&#xfa;" horiz-adv-x="1208" d="M170 377v710h98v-704q0 -164 69 -238.5t214 -74.5q194 0 285.5 98t91.5 319v600h98v-1087h-84l-18 150h-6q-106 -170 -377 -170q-371 0 -371 397zM495 1241v16q73 79 144.5 171.5t97.5 140.5h141v-17q-36 -52 -122.5 -138t-190.5 -173h-70z" />
+<glyph unicode="&#xfb;" horiz-adv-x="1208" d="M170 377v710h98v-704q0 -164 69 -238.5t214 -74.5q194 0 285.5 98t91.5 319v600h98v-1087h-84l-18 150h-6q-106 -170 -377 -170q-371 0 -371 397zM313 1241v16q62 67 131.5 156t110.5 156h98q68 -120 242 -312v-16h-70q-122 101 -221 207q-108 -114 -221 -207h-70z" />
+<glyph unicode="&#xfc;" horiz-adv-x="1208" d="M170 377v710h98v-704q0 -164 69 -238.5t214 -74.5q194 0 285.5 98t91.5 319v600h98v-1087h-84l-18 150h-6q-106 -170 -377 -170q-371 0 -371 397zM350 1389q0 46 15.5 66t47.5 20q64 0 64 -86t-64 -86q-63 0 -63 86zM731 1389q0 46 15.5 66t47.5 20q64 0 64 -86t-64 -86 q-63 0 -63 86z" />
+<glyph unicode="&#xfd;" horiz-adv-x="940" d="M0 1087h102l230 -610q105 -281 133 -379h6q42 129 137 385l230 604h102l-487 -1263q-59 -154 -99 -208t-93.5 -81t-129.5 -27q-57 0 -127 21v86q58 -16 125 -16q51 0 90 24t70.5 74.5t73 160t53.5 142.5zM361 1241v16q73 79 144.5 171.5t97.5 140.5h141v-17 q-36 -52 -122.5 -138t-190.5 -173h-70z" />
+<glyph unicode="&#xfe;" horiz-adv-x="1219" d="M182 -492v2048h99v-391l-7 -247h7q114 190 368 190q220 0 335.5 -144.5t115.5 -420.5q0 -268 -121.5 -415.5t-331.5 -147.5q-251 0 -366 188h-7l3 -84q4 -74 4 -162v-414h-99zM281 541q0 -255 85.5 -364t278.5 -109q167 0 258.5 124t91.5 347q0 479 -348 479 q-193 0 -279.5 -105t-86.5 -354v-18z" />
+<glyph unicode="&#xff;" horiz-adv-x="940" d="M0 1087h102l230 -610q105 -281 133 -379h6q42 129 137 385l230 604h102l-487 -1263q-59 -154 -99 -208t-93.5 -81t-129.5 -27q-57 0 -127 21v86q58 -16 125 -16q51 0 90 24t70.5 74.5t73 160t53.5 142.5zM214 1389q0 46 15.5 66t47.5 20q64 0 64 -86t-64 -86 q-63 0 -63 86zM595 1389q0 46 15.5 66t47.5 20q64 0 64 -86t-64 -86q-63 0 -63 86z" />
+<glyph unicode="&#x131;" horiz-adv-x="463" d="M182 0v1087h99v-1087h-99z" />
+<glyph unicode="&#x152;" horiz-adv-x="1839" d="M129 735q0 347 174.5 545.5t480.5 198.5q78 0 183 -17h747v-94h-655v-553h616v-94h-616v-627h655v-94h-756q-76 -16 -176 -16q-305 0 -479 200t-174 551zM240 733q0 -315 140.5 -484t401.5 -169q109 0 174 18v1266q-62 16 -172 16q-262 0 -403 -167.5t-141 -479.5z" />
+<glyph unicode="&#x153;" horiz-adv-x="1942" d="M119 545q0 266 129 414.5t354 148.5q151 0 251 -70t157 -209q110 279 399 279q192 0 303 -134t111 -364v-80h-762q2 -230 100.5 -345t276.5 -115q93 0 163.5 13t178.5 56v-90q-92 -40 -170 -54.5t-172 -14.5q-156 0 -266.5 67.5t-165.5 198.5q-59 -128 -158 -197 t-252 -69q-143 0 -252 69t-167 198t-58 298zM223 545q0 -224 98.5 -349.5t278.5 -125.5q174 0 265 122.5t91 352.5q0 224 -93 348.5t-265 124.5q-180 0 -277.5 -123.5t-97.5 -349.5zM1065 618h653q0 189 -82 295.5t-227 106.5q-155 0 -242 -104t-102 -298z" />
+<glyph unicode="&#x178;" horiz-adv-x="1081" d="M0 1462h117l426 -800l428 800h110l-487 -897v-565h-105v557zM288 1727q0 46 15.5 66t47.5 20q64 0 64 -86t-64 -86q-63 0 -63 86zM669 1727q0 46 15.5 66t47.5 20q64 0 64 -86t-64 -86q-63 0 -63 86z" />
+<glyph unicode="&#x2c6;" horiz-adv-x="1182" d="M299 1241v16q62 67 131.5 156t110.5 156h98q68 -120 242 -312v-16h-70q-122 101 -221 207q-108 -114 -221 -207h-70z" />
+<glyph unicode="&#x2da;" horiz-adv-x="1182" d="M371 1456q0 94 60 152.5t157 58.5t157 -59t60 -152q0 -97 -60 -155t-157 -58t-157 58t-60 155zM451 1456q0 -66 37.5 -103.5t99.5 -37.5t99.5 37.5t37.5 103.5q0 64 -39 101.5t-98 37.5q-62 0 -99.5 -38t-37.5 -101z" />
+<glyph unicode="&#x2dc;" horiz-adv-x="1182" d="M283 1243q10 111 63 174.5t137 63.5q48 0 88 -25t82 -59q34 -28 66 -50t61 -22q46 0 77 36.5t48 119.5h76q-16 -116 -69 -177t-132 -61q-36 0 -75 18.5t-101 71.5q-32 26 -62.5 46t-62.5 20q-45 0 -75 -34.5t-48 -121.5h-73z" />
+<glyph unicode="&#x2000;" horiz-adv-x="953" />
+<glyph unicode="&#x2001;" horiz-adv-x="1907" />
+<glyph unicode="&#x2002;" horiz-adv-x="953" />
+<glyph unicode="&#x2003;" horiz-adv-x="1907" />
+<glyph unicode="&#x2004;" horiz-adv-x="635" />
+<glyph unicode="&#x2005;" horiz-adv-x="476" />
+<glyph unicode="&#x2006;" horiz-adv-x="317" />
+<glyph unicode="&#x2007;" horiz-adv-x="317" />
+<glyph unicode="&#x2008;" horiz-adv-x="238" />
+<glyph unicode="&#x2009;" horiz-adv-x="381" />
+<glyph unicode="&#x200a;" horiz-adv-x="105" />
+<glyph unicode="&#x2010;" horiz-adv-x="659" d="M92 512v82h475v-82h-475z" />
+<glyph unicode="&#x2011;" horiz-adv-x="659" d="M92 512v82h475v-82h-475z" />
+<glyph unicode="&#x2012;" horiz-adv-x="659" d="M92 512v82h475v-82h-475z" />
+<glyph unicode="&#x2013;" horiz-adv-x="1024" d="M82 512v82h860v-82h-860z" />
+<glyph unicode="&#x2014;" horiz-adv-x="2048" d="M82 512v82h1884v-82h-1884z" />
+<glyph unicode="&#x2018;" horiz-adv-x="297" d="M29 981q32 112 81.5 251t92.5 230h65q-30 -101 -64.5 -257t-45.5 -244h-117z" />
+<glyph unicode="&#x2019;" horiz-adv-x="297" d="M29 961q29 96 61 241.5t49 259.5h117l12 -20q-75 -265 -174 -481h-65z" />
+<glyph unicode="&#x201a;" horiz-adv-x="451" d="M68 -263q29 96 61 241.5t49 259.5h117l12 -20q-75 -265 -174 -481h-65z" />
+<glyph unicode="&#x201c;" horiz-adv-x="614" d="M29 981q32 112 81.5 251t92.5 230h65q-30 -101 -64.5 -257t-45.5 -244h-117zM346 981q34 120 83 255t91 226h66q-30 -98 -63 -248.5t-48 -252.5h-117z" />
+<glyph unicode="&#x201d;" horiz-adv-x="614" d="M29 961q29 96 61 241.5t49 259.5h117l12 -20q-75 -265 -174 -481h-65zM346 961q30 98 63 248.5t48 252.5h116l13 -20q-36 -128 -85 -261t-89 -220h-66z" />
+<glyph unicode="&#x201e;" horiz-adv-x="768" d="M68 -263q29 96 61 241.5t49 259.5h117l12 -20q-75 -265 -174 -481h-65zM385 -263q30 98 63 248.5t48 252.5h116l13 -20q-36 -128 -85 -261t-89 -220h-66z" />
+<glyph unicode="&#x2022;" horiz-adv-x="770" d="M231 748q0 89 40.5 134.5t113.5 45.5t113.5 -47t40.5 -133q0 -85 -41 -133t-113 -48t-113 47t-41 134z" />
+<glyph unicode="&#x2026;" horiz-adv-x="1466" d="M162 78q0 98 80 98q82 0 82 -98t-82 -98q-80 0 -80 98zM651 78q0 98 80 98q82 0 82 -98t-82 -98q-80 0 -80 98zM1141 78q0 98 80 98q82 0 82 -98t-82 -98q-80 0 -80 98z" />
+<glyph unicode="&#x202f;" horiz-adv-x="381" />
+<glyph unicode="&#x2039;" horiz-adv-x="524" d="M82 516v27l309 393l62 -43l-254 -363l254 -362l-62 -43z" />
+<glyph unicode="&#x203a;" horiz-adv-x="524" d="M72 168l254 362l-254 363l61 43l309 -391v-27l-309 -393z" />
+<glyph unicode="&#x2044;" horiz-adv-x="246" d="M-332 0l811 1462h94l-811 -1462h-94z" />
+<glyph unicode="&#x205f;" horiz-adv-x="476" />
+<glyph unicode="&#x2074;" horiz-adv-x="688" d="M25 827v60l407 581h96v-563h129v-78h-129v-241h-90v241h-413zM129 905h309v221q0 132 8 232q-6 -12 -21.5 -35.5t-295.5 -417.5z" />
+<glyph unicode="&#x20ac;" d="M74 528v82h172q-4 38 -4 113l4 102h-172v82h184q39 272 183 425t362 153q88 0 161 -17t148 -57l-39 -86q-132 72 -270 72q-174 0 -288 -125.5t-155 -364.5h502v-82h-510l-4 -104v-24q0 -65 4 -87h449v-82h-443q30 -217 147.5 -338.5t301.5 -121.5q148 0 287 65v-94 q-81 -34 -150.5 -46.5t-140.5 -12.5q-228 0 -367.5 140t-181.5 408h-180z" />
+<glyph unicode="&#x2122;" horiz-adv-x="1485" d="M10 1384v78h522v-78h-219v-643h-86v643h-217zM608 741v721h125l221 -606l224 606h125v-721h-86v398l4 207h-7l-227 -605h-74l-221 609h-6l4 -201v-408h-82z" />
+<glyph unicode="&#x2212;" d="M111 682v82h948v-82h-948z" />
+<glyph unicode="&#xe000;" horiz-adv-x="1085" d="M0 1085h1085v-1085h-1085v1085z" />
+<glyph unicode="&#xfb01;" horiz-adv-x="1077" d="M29 1001v58l202 37v84q0 200 73.5 293.5t240.5 93.5q90 0 180 -27l-23 -86q-80 25 -159 25q-116 0 -164.5 -68.5t-48.5 -222.5v-101h256v-86h-256v-1001h-99v1001h-202zM782 1389q0 96 63 96q31 0 48.5 -25t17.5 -71q0 -45 -17.5 -71t-48.5 -26q-63 0 -63 97zM796 0v1087 h99v-1087h-99z" />
+<glyph unicode="&#xfb02;" horiz-adv-x="1077" d="M29 1001v58l202 37v84q0 200 73.5 293.5t240.5 93.5q90 0 180 -27l-23 -86q-80 25 -159 25q-116 0 -164.5 -68.5t-48.5 -222.5v-101h256v-86h-256v-1001h-99v1001h-202zM796 0v1556h99v-1556h-99z" />
+<glyph unicode="&#xfb03;" horiz-adv-x="1692" d="M29 1001v58l202 37v84q0 200 73.5 293.5t240.5 93.5q90 0 180 -27l-23 -86q-80 25 -159 25q-116 0 -164.5 -68.5t-48.5 -222.5v-101h256v-86h-256v-1001h-99v1001h-202zM643 1001v58l202 37v84q0 200 73.5 293.5t240.5 93.5q90 0 180 -27l-23 -86q-80 25 -159 25 q-116 0 -164.5 -68.5t-48.5 -222.5v-101h256v-86h-256v-1001h-99v1001h-202zM1397 1389q0 96 63 96q31 0 48.5 -25t17.5 -71q0 -45 -17.5 -71t-48.5 -26q-63 0 -63 97zM1411 0v1087h99v-1087h-99z" />
+<glyph unicode="&#xfb04;" horiz-adv-x="1692" d="M29 1001v58l202 37v84q0 200 73.5 293.5t240.5 93.5q90 0 180 -27l-23 -86q-80 25 -159 25q-116 0 -164.5 -68.5t-48.5 -222.5v-101h256v-86h-256v-1001h-99v1001h-202zM643 1001v58l202 37v84q0 200 73.5 293.5t240.5 93.5q90 0 180 -27l-23 -86q-80 25 -159 25 q-116 0 -164.5 -68.5t-48.5 -222.5v-101h256v-86h-256v-1001h-99v1001h-202zM1411 0v1556h99v-1556h-99z" />
+</font>
+</defs></svg> 
\ No newline at end of file
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/fonts/YanoneKaffeesatz-Light-webfont.svg
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/fonts/YanoneKaffeesatz-Light-webfont.svg	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/fonts/YanoneKaffeesatz-Light-webfont.svg	(revision 47450)
@@ -0,0 +1,299 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" >
+<svg xmlns="http://www.w3.org/2000/svg">
+<metadata>
+This is a custom SVG webfont generated by Font Squirrel.
+Copyright   : Copyright c 2010 Yanone httpyanonedetypedesign All rights reservedThis Font Software is licensed under the SIL Open Font License Version 11This license is available with a FAQ at httpscriptssilorgOFL
+Designer    : Yanone
+Foundry     : Yanone
+Foundry URL : httpyanonedetypedesign
+</metadata>
+<defs>
+<font id="webfont6ZqOUGp9" horiz-adv-x="882" >
+<font-face units-per-em="2048" ascent="1638" descent="-410" />
+<missing-glyph horiz-adv-x="350" />
+<glyph unicode="&#xfb01;" horiz-adv-x="811" d="M23 926q0 63 4 84q2 14 28 14h123v129q0 92 23 164q20 66 55 106q29 35 82 58q45 20 90 26q39 6 96 6q209 0 209 -73q0 -33 -14 -68q-80 39 -193 39q-52 0 -86 -6q-31 -6 -71 -33q-39 -27 -58 -80q-20 -61 -20 -141v-127h172q0 -63 -4 -84q-2 -14 -25 -14h-143v-899 q0 -27 -29 -27h-84v926h-155zM584 0v969q0 39 20 47q18 8 94 8v-997q0 -20 -14 -23q-20 -4 -100 -4z" />
+<glyph unicode="&#xfb02;" horiz-adv-x="831" d="M20 926q0 63 5 84q2 14 28 14h123v129q0 117 31 194.5t82 110.5q53 35 94 43q47 10 98 10q133 0 236 -57v-1427q0 -27 -29 -27h-84v1397q-55 18 -117 18q-41 0 -65.5 -6t-59.5 -27q-37 -20 -55 -77q-18 -55 -18 -140v-141h205q0 -63 -5 -84q-2 -14 -24 -14h-176v-899 q0 -27 -27 -27h-86v926h-156z" />
+<glyph horiz-adv-x="518" />
+<glyph horiz-adv-x="518" />
+<glyph unicode=" "  horiz-adv-x="350" />
+<glyph unicode="&#x09;" horiz-adv-x="350" />
+<glyph unicode="&#xa0;" horiz-adv-x="350" />
+<glyph unicode="!" horiz-adv-x="385" d="M104 82q0 41 23 65q25 27 66 27q46 0 67 -24q23 -27 23 -68t-25 -66q-27 -27 -65 -26q-89 0 -89 92zM125 1415q0 20 29 27q28 6 116 6l-18 -1006q-3 -34 -25 -43q-18 -8 -88 -8z" />
+<glyph unicode="&#x22;" horiz-adv-x="495" d="M72 1544q0 57 6 60q27 12 110 2q2 -72 -10 -240q-12 -158 -22 -168q-63 -2 -64 -2q-3 22 -12 147q-8 113 -8 201zM307 1544q0 57 6 60q27 12 111 2q2 -72 -10 -240q-12 -158 -23 -168l-63 -2q-3 22 -13 147q-8 113 -8 201z" />
+<glyph unicode="#" d="M78 408q0 83 12 92q4 2 14 2h109l14 254h-149q0 83 12 92q4 2 14 2h127l9 147q4 20 20 23q25 4 82 4l-10 -174h231l8 147q4 20 21 23q25 4 84 4l-10 -174h143q0 -57 -4 -78q-4 -16 -25 -16h-118l-15 -254h162q0 -57 -4 -78q-4 -16 -25 -16h-137l-8 -162q-4 -20 -21 -23 q-25 -4 -84 -4l11 189h-232l-8 -162q-4 -20 -20 -23q-25 -4 -82 -4l10 189h-131zM313 502h232l14 254h-231z" />
+<glyph unicode="$" d="M135 72q0 12 12 43q14 35 25 45q76 -63 227 -64q233 0 234 221q0 66 -31 121q-29 51 -106 129l-230 215q-127 123 -127 236q0 100 72 166q70 63 201 76v198q0 31 22 41q25 10 80 10v-247q70 -2 125 -19q53 -14 73.5 -26.5t20.5 -20.5q0 -51 -33 -82q-72 47 -213 47 q-227 0 -227 -145q0 -80 107 -180l251 -234q133 -127 134 -287q0 -287 -271 -323v-193q0 -29 -22 -39q-25 -10 -78 -10v236q-82 4 -139.5 18t-83.5 35q-23 17 -23 33z" />
+<glyph unicode="%" horiz-adv-x="1456" d="M125 1073q0 377 289 377q143 0 207 -82q66 -84 65 -293q0 -379 -283 -379q-76 0 -118 15q-49 16 -86 53t-56 115q-18 75 -18 194zM233 1065q0 -164 39 -221.5t129 -57.5q178 0 179 289q0 166 -39 223q-41 59 -127 60q-181 0 -181 -293zM256 29l862 1421q66 -18 66 -51 q0 -10 -858 -1415q-70 14 -70 45zM772 360q0 377 289 377q143 0 207 -82q66 -84 65 -293q0 -379 -282 -378q-76 0 -119 14q-49 16 -86 53q-39 39 -58 115q-16 67 -16 194zM879 350q0 -162 41 -221q39 -57 129 -57q178 0 178 288q0 166 -39 224q-41 59 -127 59 q-182 0 -182 -293z" />
+<glyph unicode="&#x26;" horiz-adv-x="1048" d="M74 352q0 120 67 221q66 98 168 158q-168 279 -168 432q0 145 92 213q94 70 250 70q119 0 209 -29q86 -28 86 -61q0 -47 -26 -80q-100 70 -258 70q-109 0 -172 -41q-61 -39 -62 -156q0 -121 148 -361q139 -227 340 -462q35 115 34 249q0 154 -49 269q-49 117 -123 174 q80 12 215 12q106 0 181 -4q4 -16 4 -45q0 -27 -17 -39q-12 -10 -67 -10l-148 2q113 -131 113 -375q0 -190 -60 -328q113 -127 173 -159q-2 -25 -27 -60q-23 -31 -45 -30q-33 0 -162 143q-115 -145 -321 -145q-375 -1 -375 372zM190 346q0 -109 57.5 -184.5t194.5 -75.5 q162 0 250 125q-172 195 -330 436q-172 -98 -172 -301z" />
+<glyph unicode="'" horiz-adv-x="260" d="M72 1544q0 57 6 60q27 12 110 2q2 -72 -10 -240q-12 -158 -22 -168q-63 -2 -64 -2q-3 22 -12 147q-8 113 -8 201z" />
+<glyph unicode="(" horiz-adv-x="600" d="M141 659q0 180 35 359q35 176 82 282q45 102 102 193q53 84 89 119q37 37 45 37q43 0 61 -74q-295 -350 -299 -911q0 -344 98 -607q100 -266 201 -381q-18 -82 -63 -82q-14 0 -50 41q-31 37 -88 134q-55 96 -100 211q-47 121 -80 299q-33 175 -33 380z" />
+<glyph unicode=")" horiz-adv-x="600" d="M47 -324q45 57 90 136q51 90 96 200q53 133 82 295q31 172 31 357q-3 316 -92 546q-90 231 -207 365q18 74 62 74q12 0 45 -35q37 -39 86 -119q57 -90 102 -192q51 -117 84 -281q33 -166 33 -363q0 -201 -33 -372q-35 -180 -80 -299q-47 -123 -98 -213q-57 -102 -88 -137 q-37 -43 -49 -44q-46 0 -64 82z" />
+<glyph unicode="*" horiz-adv-x="964" d="M43 1051q-4 49 26.5 79.5t55.5 18.5l287 -158q2 -25 -8.5 -39t-28.5 -4zM154 602l243 272q27 27 58 -12l-199 -319q-25 -25 -55 -2q-33 22 -47 61zM424 1372q-2 14 8 20.5t33 8.5q45 4 78 -17l-31 -337q-3 -34 -55 -25zM508 870.5q8 12.5 35 20.5l229 -295 q18 -25 -12 -51q-29 -27 -74 -33l-178 332q-8 14 0 26.5zM563 940q-33 45 4 66l320 151q33 -23 39 -67q6 -41 -23 -52z" />
+<glyph unicode="+" d="M86 526v49q0 20 2 31q4 16 8 19q8 4 17 4h280v278q0 22 19 25q25 4 84 4v-307h307q0 -53 -4 -82q-2 -20 -25 -21h-278v-280q0 -20 -19 -23q-25 -4 -84 -4v307h-307z" />
+<glyph unicode="," horiz-adv-x="366" d="M92 -184q55 92 62 190q-41 25 -41 82q0 35 22 62q20 23 58 22q84 0 83 -96q0 -86 -53 -193q-51 -104 -84 -104q-37 0 -47 37z" />
+<glyph unicode="-" horiz-adv-x="591" d="M88 526v49q0 20 2 31q4 16 8 19q8 4 17 4h391q0 -53 -4 -82q-2 -20 -25 -21h-389z" />
+<glyph unicode="." horiz-adv-x="366" d="M100 82q0 41 23 65q25 27 63 27q90 0 90 -92q0 -37 -24 -66q-25 -27 -66 -26q-86 0 -86 92z" />
+<glyph unicode="/" horiz-adv-x="626" d="M20 -41l463 1573q10 25 27 31q12 4 98 4l-461 -1577q-10 -23 -28 -27q-25 -4 -99 -4z" />
+<glyph unicode="0" d="M74 606q0 309 90 467q88 156 289 156q195 0 276.5 -143.5t81.5 -452.5q0 -330 -86 -489.5t-287 -159.5q-199 0 -280 149q-84 151 -84 473zM195 592q0 -272 57 -387q59 -119 186 -119q139 0 197 133q59 137 59 420q0 252 -53 371q-51 117 -182 116q-141 0 -202.5 -135 t-61.5 -399z" />
+<glyph unicode="1" d="M74 84q0 23 323 22l29 1006q-39 -2 -266 -49q-16 23 -17 82q0 12 166 49t201 37q16 0 33 -8l-25 -1117h180l113 7q0 -113 -18 -113h-717q-2 12 -2 84z" />
+<glyph unicode="2" d="M74 43q0 4 1 11t1 9q0 10 6 23l8 16l16 25q8 12 17 29q61 100 158 211l174 196q74 80 133 187q57 102 57 202q0 80 -41 125q-39 43 -145 43q-206 0 -326 -80q-14 35 -14 86q0 16 43 41t129 43.5t184 18.5q170 0 232 -64q63 -68 63 -204q0 -111 -59 -226 q-57 -111 -136 -198l-182 -209q-111 -127 -170 -222h379l209 9q0 -115 -20 -115h-709q-8 14 -8 43z" />
+<glyph unicode="3" d="M100 -115q0 45 15 88q82 -70 217 -69q152 0 244 116.5t92 292.5q0 57 -19 101q-16 41 -51 67q-33 27 -76 41q-39 14 -90 21q-10 2 -100 6l-2 76q287 160 286 342q0 154 -182 153q-199 0 -317 -82q-12 27 -13 84q0 23 39 47.5t125 42.5q74 16 189 17q285 0 284 -238 q0 -199 -245 -370q131 -12 211 -84q82 -74 81 -224q0 -233 -126 -376q-125 -141 -334 -142q-106 0 -168 29q-60 28 -60 61z" />
+<glyph unicode="4" d="M78 403q0 102 155 394q160 297 299 422q20 18 54 18q27 0 61 -14l-6 -801l176 4l4 -43q0 -68 -37 -68h-143v-274q0 -29 -14 -37q-8 -4 -99 -4v315h-419q-31 31 -31 88zM180 422h348l19 661q-104 -115 -217 -307q-109 -186 -150 -354z" />
+<glyph unicode="5" d="M80 -123q0 53 14 94q76 -70 221 -69q186 0 272.5 133t86.5 348q0 311 -361 311q-39 0 -77 -6q-10 -2 -32 -4t-30 -4l-49 -12q-25 -6 -27 -6l58 567h626q0 -66 -10 -86q-8 -16 -53 -17l-465 4l-39 -354q55 14 143 15q70 2 140 -11q55 -10 137 -53q72 -37 115 -123t43 -207 q0 -602 -474 -602q-78 0 -133 14.5t-82 34.5q-24 19 -24 33z" />
+<glyph unicode="6" d="M78 608q0 224 37 387q37 160 102 258q63 94 150 140q84 43 182 43q223 0 223 -62q0 -39 -10 -80q-92 35 -213 35q-152 0 -252 -155q-98 -154 -111 -463q100 186 320 186q141 0 225 -98q84 -100 84 -299q0 -518 -389 -518q-86 0 -151.5 30.5t-102.5 79.5t-59 135 q-20 78 -27 170q-8 115 -8 211zM186 588q-3 -249 50 -375q53 -127 194 -127q131 0 203 106.5t72 280.5q0 317 -230 318q-181 0 -289 -203z" />
+<glyph unicode="7" d="M106 1229h738q-436 -717 -557 -1403q-115 0 -115 29q71 372 215 718q147 354 289 555q-111 -4 -535 -4q-35 1 -35 105z" />
+<glyph unicode="8" d="M82 371q0 132 74 239q72 106 184 162q-86 49 -131 90q-113 82 -113 238q0 170 100.5 258t252.5 88q356 0 356 -330q0 -207 -246 -354q76 -49 127 -92q133 -123 133 -299q0 -178 -92 -282.5t-264 -104.5q-190 0 -287 106q-94 103 -94 281zM188 377q0 -129 70 -207 q70 -80 199 -80q119 0 186 78q68 77 68 203q0 141 -121 245q-49 43 -141 97q-113 -41 -187 -133t-74 -203zM207 1106q0 -123 112 -201q25 -18 140 -86q240 117 239 293q0 127 -71 176q-74 51 -168 51q-109 0 -180.5 -59t-71.5 -174z" />
+<glyph unicode="9" d="M74 729q0 520 389 520q209 0 276 -139q70 -141 72 -485q-2 -424 -129 -631q-125 -205 -387 -205q-172 0 -172 49q0 51 8 76q68 -18 154 -18q385 0 415 616q-100 -186 -311 -186q-139 0 -227 102t-88 301zM184 748q0 -156 61.5 -236t174.5 -80q170 0 285 203v4 q0 131 -9 205q-10 86 -32 155q-25 76 -72 111t-127 35q-281 0 -281 -397z" />
+<glyph unicode=":" horiz-adv-x="366" d="M100 82q0 41 23 65q25 27 63 27q90 0 90 -92q0 -37 -24 -66q-25 -27 -66 -26q-86 0 -86 92zM100 791q0 41 23 65q25 27 63 27q90 0 90 -92q0 -37 -24 -66q-25 -27 -66 -27q-86 1 -86 93z" />
+<glyph unicode=";" horiz-adv-x="366" d="M86 -184q58 95 61 190q-41 25 -41 82q0 35 23 62q20 23 59 22q84 0 84 -96q0 -88 -55 -192.5t-84 -104.5q-39 0 -47 37zM102 791q0 37 25 65q25 27 61 27q90 0 91 -92q0 -37 -25 -66q-25 -27 -66 -27q-86 1 -86 93z" />
+<glyph unicode="&#x3c;" horiz-adv-x="817" d="M90 532q0 43 39 64l549 268q39 -37 39 -76q0 -27 -21 -34l-458 -226l487 -213q-4 -41 -18.5 -65.5t-34.5 -24.5q-10 0 -47 15l-514 225q-21 26 -21 67z" />
+<glyph unicode="=" d="M86 348v49q0 18 2 29q4 18 8 20q8 4 17 5h690q0 -59 -4 -84q-3 -18 -25 -19h-688zM86 705v49q0 20 2 30q4 16 8 19q8 4 17 4h690q0 -59 -4 -84q-3 -18 -25 -18h-688z" />
+<glyph unicode="&#x3e;" horiz-adv-x="817" d="M98 762q0 35 17 63q14 27 35 27q12 0 49 -14l514 -226q18 -31 18 -67q0 -45 -39 -64l-549 -270q-39 39 -39 76q0 29 21 37l459 225z" />
+<glyph unicode="?" horiz-adv-x="602" d="M51 1370q0 31 76 57q74 27 166 27q127 0 207 -67.5t80 -223.5q0 -80 -29 -159q-27 -72 -64 -127q-12 -18 -42.5 -58.5l-38.5 -50.5q-47 -63 -66 -96q-39 -59 -39 -140q0 -37 4 -57q6 -37 8 -39q4 -10 0 -20q-18 -23 -102 -13q-23 55 -23 125q0 96 48 179q20 37 90 131 q66 88 98 155q35 74 35 152q0 197 -197 196q-120 0 -196 -61q-15 31 -15 90zM178 82q0 41 23 65q25 27 63 27q90 0 90 -92q0 -37 -24 -66q-25 -27 -66 -26q-86 0 -86 92z" />
+<glyph unicode="@" horiz-adv-x="1542" d="M109 541q0 451 190 655q190 207 528 207q311 0 463 -160q150 -158 150 -518q0 -199 -27 -334q-29 -145 -63 -213q-37 -72 -86 -115q-43 -39 -84 -49q-37 -10 -68 -10q-78 0 -129 51q-78 -53 -227 -53q-123 -2 -195 61q-66 61 -63 248q2 180 86 254q83 74 221 74 q80 0 125 -16q0 23 1 66.5t3 62.5q2 90 -39 124.5t-125 34.5q-133 0 -219 -49q-12 25 -12 64q0 23 18 35q78 49 250 49q120 0 178 -56q57 -53 53 -186l-12 -440l-4 -94.5t-4 -73t-2 -31.5q40 -25 86 -25q25 0 49 13q20 10 57 53q31 37 58 102q25 61 43 174q18 114 18 259 q0 326 -113 458q-115 137 -389 137q-297 0 -450.5 -178t-153.5 -594q0 -215 27 -356q29 -152 74 -235q47 -88 120 -136q80 -51 154 -65q72 -14 188 -15q260 0 480 107q31 -52 30 -86q0 -25 -57 -51q-61 -29 -180 -53.5t-262 -24.5q-94 0 -158 6q-61 6 -143 29 q-77 22 -129 61q-53 41 -104.5 106.5t-82.5 166.5q-35 111 -51 237q-18 142 -18 322zM604 307q-4 -133 37 -174q43 -43 127 -43q55 0 100 25q43 23 47 65l13 367q-51 10 -101 10q-106 0 -163 -55q-56 -54 -60 -195z" />
+<glyph unicode="A" horiz-adv-x="890" d="M14 2l387 1421q4 18 39 19q31 0 49 -6l388 -1409q4 -16 -6.5 -22.5t-41.5 -6.5q-49 0 -67 2l-103 395h-426l-94 -372q-3 -25 -55 -25q-33 0 -70 4zM260 500h371l-99 379q-78 305 -86 401q-16 -137 -88 -401z" />
+<glyph unicode="B" horiz-adv-x="800" d="M113 0v1399q0 35 51 35h205q342 0 342 -312q0 -162 -62 -241q-59 -78 -139 -90q43 -4 76 -15q35 -12 78 -45q45 -35 67 -92q25 -61 25 -150q0 -121 -27 -206q-28 -89 -67 -142q-41 -53 -95 -86q-47 -29 -104 -43q-49 -12 -101 -12h-249zM225 102h137q117 0 191 88 q74 89 74 289q0 86 -19 139q-18 49 -59 76q-40 25 -80 31q-39 6 -107 6h-137v-629zM225 829h154q211 0 211 273q0 231 -219 231h-146v-504z" />
+<glyph unicode="C" horiz-adv-x="720" d="M80 649q0 205 24 359q25 156 62 237q37 84 92 133q53 47 107 64q45 14 112 14q94 0 141 -33q49 -35 50 -69q0 -37 -21 -70q-70 63 -153 64q-49 0 -86 -13q-39 -12 -80 -57q-43 -47 -70 -116.5t-45 -205.5q-16 -117 -16 -309q0 -156 20 -282q18 -113 55 -168.5t76 -76 t92 -20.5q70 0 125 27q59 29 88 63q20 -35 21 -71q0 -49 -76 -96q-72 -45 -178 -46q-55 0 -101 11q-41 10 -90 49q-51 41 -79 108q-27 61 -50 197q-20 123 -20 307z" />
+<glyph unicode="D" horiz-adv-x="845" d="M115 0v1399q0 35 51 35h205q203 0 301 -148q96 -143 96 -493q0 -244 -29 -394q-33 -166 -88 -245q-61 -86 -125 -119q-70 -35 -164 -35h-247zM227 109h138q41 0 84 14q35 12 75 55q39 41 64 117q27 78 41 203q16 137 16 303q0 287 -65.5 407.5t-210.5 120.5h-142v-1220z " />
+<glyph unicode="E" horiz-adv-x="688" d="M117 0v1405q0 29 26 29h490q0 -98 -10 -103q-2 -2 -11 -2h-385v-493h361q0 -76 -2 -88q-2 -16 -23 -17h-336v-627h404q0 -80 -2 -90q-2 -14 -23 -14h-489z" />
+<glyph unicode="F" horiz-adv-x="667" d="M117 0v1405q0 29 26 29h490q0 -92 -10 -99q-2 -2 -11 -2h-385v-495h361q0 -78 -2 -90q-2 -16 -23 -17h-336v-704q2 -27 -24 -27h-86z" />
+<glyph unicode="G" horiz-adv-x="815" d="M74 694q0 229 30 383q33 162 89 234q63 82 135 112q74 31 178 31q90 0 153 -29q61 -29 62 -65q0 -31 -16 -70q-71 55 -179 56q-113 0 -182.5 -51.5t-110 -199t-40.5 -395.5q0 -184 20 -323q18 -131 57 -187q41 -59 82 -79.5t109 -20.5q65 0 110 25q45 23 58 53v551h-201 v69q0 27 31 27h276v-721q-109 -115 -278 -114q-74 0 -133 16q-57 16 -107 61q-45 43 -78 127q-27 70 -47 207q-18 125 -18 303z" />
+<glyph unicode="H" d="M113 0v1405q0 23 14 25q20 4 98 4v-600h434v571q0 23 15 25q20 4 98 4v-1407q0 -20 -14 -23q-20 -4 -99 -4v727h-434v-700q0 -20 -14 -23q-20 -4 -98 -4z" />
+<glyph unicode="I" horiz-adv-x="335" d="M111 0v1376q0 45 16 51q15 6 98 7v-1407q0 -20 -14 -23q-20 -4 -100 -4z" />
+<glyph unicode="J" horiz-adv-x="616" d="M43 88q0 37 20 70q72 -74 173 -74q53 0 85.5 20.5t47.5 65.5q18 53 20 90q4 57 4 117v1001q0 43 15 49t98 7v-1090q0 -78 -4 -108q-8 -57 -21 -99q-14 -47 -43 -82q-27 -31 -76 -53q-51 -23 -114 -22q-100 0 -152 32q-53 35 -53 76z" />
+<glyph unicode="K" horiz-adv-x="802" d="M111 0v1405q0 23 14 25q20 4 98 4v-625l412 618q29 6 72 7q50 0 49 -21q0 -8 -6 -18l-412 -586q52 -33 118.5 -105.5t135.5 -174.5t115.5 -238t46.5 -268q0 -12 -6 -17q-12 -8 -37 -8q-57 0 -74 2q-83 280 -153.5 430.5t-159.5 239.5q-35 35 -101 65v-708q0 -20 -14 -23 q-20 -4 -98 -4z" />
+<glyph unicode="L" horiz-adv-x="671" d="M113 0v1393q0 31 14 37q10 4 100 4v-1328h406v-79q0 -27 -29 -27h-491z" />
+<glyph unicode="M" horiz-adv-x="1017" d="M113 0v1405q0 29 26 29h76l223 -719l72 -246l70 240l215 696q10 29 28 29h86v-1407q0 -20 -14 -23q-20 -4 -100 -4l4 592l18 577l-153 -512l-119 -348q-6 -18 -23 -18h-53l-115 366l-30 97l-66 215l-57 192q16 -377 20 -555l2 -579q0 -20 -14 -23q-20 -4 -96 -4z" />
+<glyph unicode="N" horiz-adv-x="931" d="M113 0v1405q0 29 26 29h80l246 -566q63 -172 254 -647q-10 170 -10 699v485q0 23 14 25q20 4 98 4v-1407q0 -27 -26 -27h-78l-252 575q-45 102 -250 642q8 -270 8 -689v-501q0 -18 -12 -23q-16 -4 -98 -4z" />
+<glyph unicode="O" horiz-adv-x="911" d="M78 727q0 391 94 559t299 168q200 0 283 -160q82 -158 82 -565q0 -414 -91 -579q-92 -170 -296.5 -170t-286.5 161q-84 164 -84 586zM203 692q0 -326 55 -461t195 -135q141 0 202 144q59 139 60 491q0 338 -55.5 473t-192.5 135q-135 0 -201 -149q-63 -146 -63 -498z" />
+<glyph unicode="P" horiz-adv-x="755" d="M113 0v1405q0 29 26 29h213q358 0 359 -390q0 -224 -99 -331q-98 -106 -268 -107h-121v-579q0 -18 -12 -23q-16 -4 -98 -4zM223 713h129q236 0 236 340q0 279 -226 278h-139v-618z" />
+<glyph unicode="Q" horiz-adv-x="911" d="M78 727q0 391 94 559t299 168q200 0 283 -160q82 -158 82 -565q0 -356 -68 -528q-70 -176 -219 -209q14 -90 45 -131q29 -39 80 -39q74 0 133 35q18 -25 18 -62q0 -33 -55 -51t-117 -18q-90 0 -145 59q-55 57 -86 195q-127 6 -199 75q-72 68 -108 230q-37 159 -37 442z M203 692q0 -326 55 -461t195 -135q141 0 202 144q59 139 60 491q0 338 -55.5 473t-192.5 135q-135 0 -201 -149q-63 -146 -63 -498z" />
+<glyph unicode="R" horiz-adv-x="774" d="M113 0v1405q0 29 26 29h213q358 0 359 -390q0 -326 -211 -411q172 -225 207 -602q2 -16 -9 -25q-8 -4 -47 -8q-47 0 -63 2q-43 414 -199 608q-10 -2 -45 -2h-121v-579q0 -18 -12 -23q-16 -4 -98 -4zM223 713h129q236 0 236 336q0 283 -226 282h-139v-618z" />
+<glyph unicode="S" horiz-adv-x="753" d="M68 88q0 43 32 80q76 -74 230 -74q246 0 245 250q0 80 -32 156q-31 70 -111 155l-221 232q-139 158 -139 291q0 125 92 200q90 76 252 76q131 0 192 -27q66 -29 66 -63q0 -37 -31 -68q-74 55 -219 56q-104 0 -170 -47q-63 -45 -64 -125q0 -94 113 -222l244 -251 q86 -92 115 -168q33 -86 32 -185q0 -170 -86 -272t-270 -102q-125 0 -199 34q-71 35 -71 74z" />
+<glyph unicode="T" horiz-adv-x="749" d="M14 1327v78q0 29 27 29h696v-80q0 -27 -26 -27h-283v-1300q0 -20 -14 -23q-20 -4 -99 -4v1327h-301z" />
+<glyph unicode="U" horiz-adv-x="935" d="M113 440v965q0 23 14 25q20 4 100 4v-998q0 -51 4 -112q2 -35 21 -93q15 -49 43 -79q25 -27 74 -48q45 -18 114 -18q143 0 230 43v1278q0 20 14 23q20 4 100 4v-1383q-47 -31 -141 -51t-203 -20q-92 0 -168 26q-70 25 -108 64q-37 37 -60 104q-23 70 -28 123 q-6 59 -6 143z" />
+<glyph unicode="V" horiz-adv-x="860" d="M12 1425q2 8 25 9h90l227 -897q35 -152 86 -435q45 279 80 435l207 856q6 41 33 41h92l-350 -1446q-74 -6 -88 -6q-43 0 -74 120l-326 1293q-3 12 -3 21q0 5 1 9z" />
+<glyph unicode="W" horiz-adv-x="1314" d="M12 1395q-1 7 -1 12q0 27 26 27h90l188 -899q35 -186 62 -398h8q12 160 55 398l158 784q6 39 33 39h80l180 -823q23 -117 27 -140l6 -42.5t8 -53.5t6 -47q2 -25 7 -62.5t7 -50.5h9q23 205 55 396l168 858q6 41 33 41h92l-289 -1446q-49 -6 -88 -6q-37 0 -62 104l-153 664 q-16 72 -62 389l-57 -387l-160 -764q-70 -4 -94 -4q-37 0 -61 122z" />
+<glyph unicode="X" horiz-adv-x="870" d="M20 0l345 743l-289 670q-6 16 10 19q12 2 119 2l104 -248q70 -162 137 -346q92 233 142 346l98 227q6 16 21 19q10 2 106 2l-297 -691l332 -720q3 -6 3 -11q0 -12 -20 -12h-116l-140 307l-143 338q-68 -170 -145 -336l-140 -295q-8 -14 -28 -14h-99z" />
+<glyph unicode="Y" horiz-adv-x="737" d="M12 1415q-2 4 -1 7q0 7 14 10q10 2 114 2l99 -293q43 -115 86 -262q49 -166 53 -193q14 106 139 457l90 270q2 12 21 17q20 4 102 4l-299 -848v-559q0 -18 -14 -23q-16 -4 -99 -4v582z" />
+<glyph unicode="Z" horiz-adv-x="802" d="M47 45q0 29 10 55l564 1231h-435q-55 0 -84 -4v78q0 29 29 29h610q12 -16 13 -39q0 -27 -13 -58l-569 -1235h461q78 0 108 13v-88q0 -27 -26 -27h-649q-19 16 -19 45z" />
+<glyph unicode="[" horiz-adv-x="847" d="M305 -406v2046q0 27 14 33q20 8 74 8h436q0 -66 -8 -86q-6 -16 -39 -16h-364v-1878h409q0 -74 -10 -90.5t-39 -16.5h-473z" />
+<glyph unicode="\" horiz-adv-x="618" d="M23 1532q-6 25 12 31q12 4 96 4l467 -1598q6 -23 -12 -26q-25 -4 -97 -4z" />
+<glyph unicode="]" horiz-adv-x="847" d="M20 -410q0 71 7 86q6 16 41 17h364v1884h-409q0 74 10 90t39 16h473v-2052q0 -29 -14.5 -35t-75.5 -6h-435z" />
+<glyph unicode="^" horiz-adv-x="878" d="M117 494l329 299l291 -267q20 -18 21 -37q0 -23 -17 -38q-14 -14 -41 -19l-264 215l-221 -190q-33 -23 -45 -23q-23 0 -37 17q-12 16 -16 43z" />
+<glyph unicode="_" horiz-adv-x="782" d="M33 -193q0 59 4 84q3 18 24 19h689v-49q0 -20 -2 -31q-2 -14 -10.5 -18.5t-14.5 -4.5h-690z" />
+<glyph unicode="`" horiz-adv-x="329" d="M0 1411q2 20 20 57q16 31 33 31q2 0 133 -108q117 -96 146 -131q-23 -66 -43 -66q-2 0 -139 102q-140 105 -150 115z" />
+<glyph unicode="a" horiz-adv-x="749" d="M74 285q0 104 24 174q23 68 72 102q45 33 94 45t115 12q109 0 168 -24v180q0 92 -41 127t-121 35q-184 0 -295 -51q-16 33 -16 65q0 29 16 41q35 23 125 37q98 16 197 16q125 0 186 -57q59 -55 59 -190v-123q0 -324 -10 -621q-119 -74 -278 -73q-39 0 -88 4 q-31 2 -78 22.5t-68 48.5q-27 35 -43 90q-18 60 -18 140zM190 289q0 -72 15 -115q16 -47 45 -65q31 -18 59 -25q27 -6 76 -6q104 0 152 45q10 160 10 387q-53 20 -133 20q-104 0 -164 -47t-60 -194z" />
+<glyph unicode="b" horiz-adv-x="819" d="M119 41v1409q0 37 20 47q16 8 92 8v-544q106 84 254 83q131 -2 199 -92q70 -92 70 -301q0 -178 -27 -299q-29 -131 -65 -196q-39 -70 -95 -113q-47 -37 -104 -51q-49 -12 -109 -12q-157 0 -235 61zM231 119q39 -37 138 -37q262 0 262 539q0 180 -45 249.5t-150 69.5 q-125 0 -205 -80v-741z" />
+<glyph unicode="c" horiz-adv-x="675" d="M82 489q0 141 24 246q25 106 58 162q34 58 86 92q57 37 96 45q51 10 105 10q74 0 123 -24.5t49 -56.5q0 -37 -15 -68q-70 47 -159 47q-43 0 -70 -8q-31 -9 -68 -37q-33 -25 -59 -74q-23 -41 -39 -135q-16 -92 -16 -205q0 -237 55 -319t168 -82q121 0 188 61 q14 -31 15 -65q0 -37 -68 -67.5t-166 -30.5q-74 0 -127 18q-51 18 -94 70q-45 53 -66 157q-20 100 -20 264z" />
+<glyph unicode="d" horiz-adv-x="821" d="M84 483q0 281 94 420q95 141 246 141q104 0 168 -45v451q0 39 20 47q18 8 95 8v-1464q-121 -61 -291 -61q-76 0 -131 16q-51 16 -103 65q-49 49 -73 152q-25 104 -25 270zM205 494q0 -174 31 -267q31 -94 73 -118q41 -23 117 -27q102 0 168 41l-2 780q-53 41 -135 41 q-109 0 -180.5 -108.5t-71.5 -341.5z" />
+<glyph unicode="e" horiz-adv-x="768" d="M78 457q0 145 22 262q22 111 56 172q33 57 86 96t98 47q51 10 104 10q258 0 258 -323q0 -156 -20 -246q-182 -37 -489 -37q0 -137 32 -223q31 -78 78 -102q45 -23 129 -23q150 0 246 70q14 -35 14 -80q0 -37 -84 -68q-88 -33 -194 -32q-80 0 -135 18q-57 18 -104.5 65.5 t-72 145.5t-24.5 248zM195 532q270 0 389 29q8 57 8 137q-2 127 -37 187q-33 57 -121 57q-49 0 -80 -14q-39 -18 -71 -54q-35 -37 -60 -124q-26 -91 -28 -218z" />
+<glyph unicode="f" horiz-adv-x="505" d="M31 926q0 63 4 84q2 14 26 14h125v129q0 96 21 160q20 66 53 104q25 31 80 60q45 25 88 30q40 6 92 6q176 0 176 -63q0 -25 -12 -64q-68 25 -152 25q-51 0 -83 -8q-45 -10 -74 -31q-37 -25 -56 -78q-20 -61 -20 -137v-133h213q0 -63 -4 -84q-2 -14 -25 -14h-184v-899 q0 -27 -29 -27h-84v926h-155z" />
+<glyph unicode="g" horiz-adv-x="823" d="M68 -186q0 72 49 139t119 119q-68 20 -103 45q-37 27 -33 63q0 78 129 180q-129 80 -129 314q0 184 93 276q94 94 245 94q43 0 92 -12h254q12 -31 13 -53q0 -45 -47 -45q-52 0 -111 12q113 -74 113 -254q0 -170 -80 -274q-78 -102 -252 -103q-74 0 -117 15 q-86 -71 -86 -117q0 -47 297 -84q135 -18 203 -66q72 -49 71 -159q0 -127 -102 -217t-295 -90q-323 0 -323 217zM182 -164q0 -68 45 -100q47 -35 174 -35q131 0 201 57q72 59 72 131q0 78 -53 109q-47 29 -177 41q-102 12 -114 14q-59 -41 -103 -102q-45 -64 -45 -115z M217 676q0 -131 43 -199q45 -70 168 -69q104 0 158 86q53 88 53 221q0 242 -205 241q-96 0 -158 -71q-59 -68 -59 -209z" />
+<glyph unicode="h" horiz-adv-x="808" d="M111 0v1450q0 37 20 47q16 8 92 8v-549q109 88 260 88q137 0 186.5 -67.5t49.5 -206.5v-743q0 -20 -14 -23q-20 -4 -101 -4v745q0 92 -35 144q-34 49 -129 49q-129 0 -217 -82v-829q0 -20 -14 -23q-20 -4 -98 -4z" />
+<glyph unicode="i" horiz-adv-x="348" d="M113 1370q0 94 67 94q63 0 64 -92q-4 -96 -70 -96q-63 0 -61 94zM117 0v969q0 39 20 47q18 8 96 8v-997q0 -18 -16 -23q-20 -4 -100 -4z" />
+<glyph unicode="j" horiz-adv-x="370" d="M-231 -305q0 39 18 63q90 -53 197 -53q94 0 120 55q27 53 27 187v1022q0 39 19 47q16 8 94 8v-1100q0 -156 -53.5 -239.5t-198.5 -83.5q-102 0 -164 28q-59 29 -59 66zM127 1370q0 94 68 94q63 0 63 -92q-4 -96 -70 -96q-63 0 -61 94z" />
+<glyph unicode="k" horiz-adv-x="800" d="M117 0v1450q0 37 20 47q16 8 92 8v-585q59 59 139.5 91.5t149.5 32.5q180 0 180 -180q0 -61 -24.5 -120.5t-65.5 -100.5q-40 -40 -67 -61q-33 -25 -58 -39q82 -14 156 -92q72 -76 94 -220q6 -43 6 -94t-6 -108q-4 -25 -20 -27q-10 -2 -107 -2q8 57 8 127q0 98 -18 162 q-35 117 -104 157q-50 29 -101 30q-20 0 -41 -5l-121 -45v-399q0 -18 -14 -23q-16 -4 -98 -4zM229 514q346 119 346 322q0 104 -104 104q-131 0 -242 -131v-295z" />
+<glyph unicode="l" horiz-adv-x="346" d="M117 0v1450q0 37 18 47q16 8 94 8v-1478q0 -20 -14 -23q-20 -4 -98 -4z" />
+<glyph unicode="m" horiz-adv-x="1210" d="M117 0v977q154 68 303 67q141 0 196 -73q113 74 261 73q141 0 186 -69q43 -68 43 -227v-721q0 -20 -14 -23q-20 -4 -99 -4v754q0 109 -26 147q-29 41 -109 41q-104 0 -188 -55v-860q0 -18 -11 -23h-2q-16 -4 -100 -4v801q-3 77 -31 110q-27 33 -108 33q-92 0 -189 -45 v-872q0 -18 -16 -23q-20 -4 -96 -4z" />
+<glyph unicode="n" horiz-adv-x="819" d="M113 0v973q168 72 331 71q158 0 220 -65q61 -65 61 -215v-737q0 -20 -14 -23q-20 -4 -101 -4v733q0 117 -34.5 164t-135.5 47q-125 0 -215 -47v-870q0 -20 -14 -23q-20 -4 -98 -4z" />
+<glyph unicode="o" horiz-adv-x="782" d="M63 510q0 535 343 534q164 0 241 -114q76 -113 76 -418q0 -532 -340 -532q-83 0 -135 18q-55 18 -98 72q-43 51 -66 163q-21 103 -21 277zM184 502q0 -164 27 -266q25 -96 65 -127t111 -31q215 0 215 438q0 254 -47 340q-49 88 -154 88q-106 0 -161.5 -98t-55.5 -344z " />
+<glyph unicode="p" horiz-adv-x="817" d="M117 -356v1319q131 82 295 81q168 0 254 -96q84 -92 84 -336q0 -154 -23 -278q-20 -115 -57 -184q-35 -66 -82 -107q-43 -37 -88 -51q-40 -12 -86 -12q-126 0 -185 73v-448q-33 -8 -59 -8q-53 0 -53 47zM229 176q55 -94 154 -94q244 6 244 508q0 209 -52 280 q-51 74 -169 74q-100 0 -177 -51v-717z" />
+<glyph unicode="q" horiz-adv-x="833" d="M82 453q0 301 110.5 446t303.5 145q135 0 223 -63v-1337q0 -33 -12 -41q-10 -8 -58 -9h-24q-6 0 -12.5 1.5t-8.5 1.5v491q-74 -109 -229 -108q-293 0 -293 473zM205 451q0 -369 209 -369h9q53 0 101 31q52 34 80 98v696q-47 37 -133 37q-266 1 -266 -493z" />
+<glyph unicode="r" horiz-adv-x="561" d="M113 0v954q133 90 274 90q147 0 148 -71q0 -37 -17 -68q-51 31 -115 31q-100 0 -176 -57v-852q0 -20 -14 -23q-20 -4 -100 -4z" />
+<glyph unicode="s" horiz-adv-x="751" d="M80 68q0 35 24 69q90 -53 224 -53q221 0 221 158q0 113 -115 198l-215 156q-82 57 -108.5 104.5t-26.5 110.5q0 109 88 170q92 63 246 63q80 0 151 -20q63 -18 86 -40.5t23 -41.5q0 -35 -27 -63q-102 66 -223 65q-96 0 -155.5 -35t-59.5 -98q0 -76 100 -143l222 -158 q139 -115 139 -254q0 -135 -88 -205q-90 -72 -248 -71q-113 0 -188 26q-70 25 -70 62z" />
+<glyph unicode="t" horiz-adv-x="608" d="M55 924q0 63 4 84q4 16 23 16h125v324q0 33 18.5 39t93.5 6v-369h248q0 -63 -4 -84q-4 -16 -20 -16h-224v-629q0 -59 5 -113q2 -37 26 -71q23 -31 64 -31q66 0 133 33q8 -31 8 -60q0 -37 -47 -55q-49 -18 -119 -18q-59 0 -98 22q-37 23 -55 70q-16 43 -23 96 q-6 49 -6 129v627h-152z" />
+<glyph unicode="u" horiz-adv-x="849" d="M119 346v649q0 25 14 27q10 2 100 2v-692q0 -147 39 -199q41 -53 158 -53q111 0 188 47v868q0 23 15 25q20 4 98 4v-973q-139 -72 -311 -71.5t-238 83.5q-63 82 -63 283z" />
+<glyph unicode="v" horiz-adv-x="727" d="M53 987q-3 9 -3 15q0 13 11 18q10 4 107 4l88 -356q37 -143 57 -244l43 -215l17 -82h2q47 281 108 543l80 325q3 22 19 25q20 4 98 4l-262 -1036q-45 -4 -76 -4q-23 0 -51 102z" />
+<glyph unicode="w" horiz-adv-x="1130" d="M49 995q-3 22 12 25q20 4 107 4l82 -373q57 -283 96 -510h6q16 94 88 445l72 375q4 29 39 28h74l88 -407q4 -14 21.5 -87t25.5 -116l19.5 -96.5l15.5 -77.5l10 -64h8q15 163 86 510l70 344q2 20 20 25q20 4 94 4q-227 -1036 -233 -1036q-45 -4 -70 -4q-14 0 -32 30 q-16 27 -29 82l-33 142q-70 287 -119 571q-57 -346 -110 -573l-56 -248q-78 -4 -88 -4q-29 0 -49 100z" />
+<glyph unicode="x" horiz-adv-x="892" d="M45 0l332 537l-285 467q-6 16 10 18q12 2 109 2l104 -164l140 -244l143 248l92 140q10 16 23 18q10 2 106 2l-297 -479l320 -516q7 -10 7 -17t-9 -8q-20 -4 -121 -4l-107 164q-71 114 -172 295q-20 -39 -170 -297l-92 -139q-8 -14 -28 -19q-25 -4 -105 -4z" />
+<glyph unicode="y" horiz-adv-x="755" d="M2 -334q0 39 21 66q61 -29 124 -29q127 0 187 264l-266 1022q-6 29 8 31q20 4 100 4l154 -602l59 -318q18 141 55 320l138 565q3 28 18 31q20 4 102 4l-270 -1087q-47 -182 -110 -256q-66 -76 -170 -76q-150 0 -150 61z" />
+<glyph unicode="z" horiz-adv-x="743" d="M59 57q0 25 13 45l481 824h-248q-166 0 -231 -11q-4 37 -4 56q0 53 36 53h566q12 -12 12 -37q0 -33 -14 -59l-477 -822h237q184 0 248 17q2 -8 2 -53q0 -70 -43 -70h-557q-21 18 -21 57z" />
+<glyph unicode="{" horiz-adv-x="581" d="M106 606q0 43 31 62q39 23 53 37q18 18 33 55t15 104q0 90 -14.5 219t-14.5 201q0 240 317 240q23 -35 23 -70q0 -37 -29 -41q-94 -2 -145 -45q-51 -41 -51 -133q0 -43 12 -174q12 -132 12 -221q0 -174 -121 -224q57 -20 90 -65q31 -43 31 -127q0 -90 -12 -225.5 t-12 -188.5q0 -131 47 -168q47 -39 164 -47q6 -28 6 -43q0 -59 -43 -59q-156 0 -222 63q-68 63 -67 211q0 78 14.5 205t14.5 219q0 80 -31 117q-29 35 -92 47q-9 22 -9 51z" />
+<glyph unicode="|" horiz-adv-x="722" d="M305 -410v2044q0 23 17 29q14 6 96 6v-2048q0 -23 -17 -27q-20 -4 -96 -4z" />
+<glyph unicode="}" horiz-adv-x="581" d="M37 -240q0 37 26 41q98 3 148 43q51 41 51 136q0 46 -12 178q-12 133 -12 219q0 98 30 147q29 47 90 76q-61 23 -90 64q-31 43 -30 129q0 90 12 225t12 188q0 127 -47 164q-49 39 -166 51q0 8 -1 18.5t-2 16.5t-1 8q0 59 41 60q156 0 221 -64q68 -63 68 -211 q0 -80 -14.5 -207t-14.5 -219q0 -80 31 -116q29 -35 92 -48q10 -25 10 -49q0 -41 -30 -63q-40 -22 -56 -37q-16 -16 -31 -53q-16 -43 -16 -107q0 -90 14.5 -219t14.5 -201q0 -238 -318 -237q-20 26 -20 67z" />
+<glyph unicode="~" horiz-adv-x="817" d="M25 535q33 49 96 88t151 39q71 0 148 -50q80 -51 139 -51q92 0 160 82q25 20 49 2q23 -16 29 -55q-90 -133 -248 -133q-76 0 -160 51q-80 49 -127 49q-41 0 -72 -14q-39 -18 -67 -41l-19.5 -15.5t-14.5 -10.5l-5 -3q-18 -8 -37 10q-20 21 -22 52z" />
+<glyph unicode="&#xa1;" horiz-adv-x="385" d="M111 948q0 41 24 66q27 27 66 26q86 0 86 -92q0 -41 -23 -65q-25 -27 -63 -27q-90 0 -90 92zM123 -406l18 1002q3 34 25 43q25 10 86 10l16 -1022q0 -20 -28 -26q-28 -7 -117 -7z" />
+<glyph unicode="&#xa2;" d="M186 461q0 524 291 575v217q0 31 25 43q20 10 78 11v-267q57 -4 102 -24.5t45 -38.5q0 -55 -14 -84q-70 45 -148 45q-51 0 -94 -16q-41 -16 -84 -62q-41 -45 -63 -147q-23 -106 -23 -252q0 -135 14 -207q16 -82 47 -115q33 -37 70 -45q41 -10 103 -10q96 0 178 63 q14 -27 14 -73q0 -29 -59 -60q-59 -33 -133 -34v-218q0 -31 -21 -38q-25 -10 -80 -11v271q-84 10 -133 43q-47 33 -82 141q-33 105 -33 293z" />
+<glyph unicode="&#xa3;" horiz-adv-x="782" d="M31 569v49q0 10 4 31q4 16 8 19q8 4 14 4h123q0 301 84 426q82 121 240 121q86 0 145.5 -27t59.5 -70q0 -37 -21 -71q-74 55 -168 55q-74 0 -119 -31q-47 -31 -77.5 -129t-30.5 -266v-8h301q0 -53 -4 -82q-2 -20 -25 -21h-272q0 -264 14 -456l375 -9q10 -37 10 -53 q0 -51 -112 -51h-381q-18 313 -19 569h-149z" />
+<glyph unicode="&#xa5;" d="M78 1415q-6 14 12 17q10 2 115 2l98 -293q37 -104 88 -267q47 -147 49 -167q4 53 138 436l94 270q2 12 20 17q20 4 103 4l-228 -641h201q0 -55 -8 -74q-8 -20 -39 -21h-189l-36 -108v-127h274q0 -57 -8 -74q-10 -20 -39 -20h-227v-342q0 -20 -15 -23q-20 -4 -98 -4v369 h-279q0 59 9 75q10 18 39 19h231v119l-43 116h-236q0 55 9 74q8 20 39 21h153z" />
+<glyph unicode="&#xa6;" horiz-adv-x="460" d="M174 -397v809q0 25 14.5 35t45 10t53.5 -8v-814q0 -29 -11 -32q-12 -6 -47 -6q-37 0 -55 6zM174 682v793q0 47 59 47q31 0 54 -9v-798q0 -25 -10.5 -33t-47.5 -8q-32 0 -55 8z" />
+<glyph unicode="&#xa7;" horiz-adv-x="749" d="M96 805q0 135 127 209l-20 22q-49 55 -66 92q-20 45 -20 93q0 100 82 161q80 59 219 60q86 0 149 -29q61 -27 74 -59q4 -12 4 -23q0 -39 -24 -69q-80 61 -197 61q-86 0 -133 -33q-49 -33 -49 -88q0 -51 69 -131q18 -20 121 -110q98 -86 135 -130q88 -94 88 -204 q0 -51 -32 -113q-31 -57 -95 -94l21 -23q53 -59 67 -92q18 -40 19 -92q0 -98 -82 -159.5t-217 -61.5q-88 0 -152 28q-61 29 -73 60q-4 8 -5 22q0 39 25 70q77 -61 197 -61q88 0 135 32.5t47 87.5q0 61 -70 131q-37 37 -118.5 109t-137.5 131q-88 101 -88 203zM203 799 q0 -74 69 -156q20 -27 174 -151q39 16 74 63q31 43 31 78q0 74 -72 158q-37 41 -174 149q-45 -14 -73.5 -59t-28.5 -82z" />
+<glyph unicode="&#xa8;" horiz-adv-x="448" d="M0 1329q0 37 20 60q20 25 60 24q40 0 61 -24q20 -23 21 -60q0 -35 -23 -61q-20 -23 -59 -23q-80 0 -80 84zM289 1329q0 33 22 60q20 25 58 24q40 0 61 -24q20 -23 21 -60q0 -35 -23 -61q-20 -23 -59 -23q-80 0 -80 84z" />
+<glyph unicode="&#xa9;" horiz-adv-x="948" d="M78 1106q0 451 409 450q197 0 293 -102q94 -100 94 -346q0 -219 -104 -336t-295 -117q-203 0 -301 99q-96 96 -96 352zM168 1100q0 -197 73.5 -277t225.5 -80q145 0 231 92.5t86 276.5q0 195 -73 279q-74 82 -222 82q-321 0 -321 -373zM311 1081q0 184 54 240 q55 59 139 59q31 0 61.5 -12t30.5 -22q0 -31 -14 -54q-35 20 -68 21q-59 0 -92 -45q-35 -47 -35 -189q0 -113 24.5 -143.5t82.5 -30.5q41 0 88 27q14 -27 14 -49q0 -14 -37 -29q-39 -16 -74 -16q-96 0 -135 44.5t-39 198.5z" />
+<glyph unicode="&#xaa;" horiz-adv-x="684" d="M100 838q0 143 64 194q66 53 178 53q76 0 143 -22v160q0 129 -147 129q-109 0 -207 -49q-15 15 -18 43q-4 29 10 43q76 66 248 65q213 0 213 -197v-608q-113 -57 -252 -57q-113 0 -172.5 47t-59.5 199zM195 831q0 -92 41 -122q40 -31 116 -31q86 0 133 31v268 q-49 20 -114 20q-90 0 -133 -31t-43 -135z" />
+<glyph unicode="&#xab;" horiz-adv-x="851" d="M57 522q0 25 76 150q63 104 154 237l75 115q18 0 35 -14q23 -18 27 -29l6 -14q0 -23 -65 -136q-59 -100 -134 -208l-65 -101q272 -403 272 -452q-27 -70 -65 -70q-316 463 -316 522zM391 512q0 20 76 141q41 66 149 224l76 104q12 0 35 -14q18 -12 27 -27l6 -14 q0 -27 -64 -129q-39 -61 -131 -195l-65 -90q266 -352 266 -399q-25 -68 -64 -68q-311 416 -311 467z" />
+<glyph unicode="&#xac;" horiz-adv-x="817" d="M68 553q0 25 12 39q12 16 29 16h622v-381q-18 -8 -55 -8q-53 0 -53 39v242h-545q-10 26 -10 53z" />
+<glyph unicode="&#xad;" horiz-adv-x="591" d="M88 526v49q0 20 2 31q4 16 8 19q8 4 17 4h391q0 -53 -4 -82q-2 -20 -25 -21h-389z" />
+<glyph unicode="&#xae;" horiz-adv-x="948" d="M78 1106q0 451 409 450q197 0 293 -102q94 -100 94 -346q0 -219 -104 -336t-295 -117q-203 0 -301 99q-96 96 -96 352zM168 1100q0 -197 73.5 -277t225.5 -80q145 0 231 92.5t86 276.5q0 195 -73 279q-74 82 -222 82q-321 0 -321 -373zM352 844v530q0 10 13 10h100 q170 0 170 -147q0 -111 -84 -152q80 -82 96 -225q0 -14 -22 -18l-3 1q-3 1 -7.5 1h-10.5h-24q-23 166 -97 225h-67v-209q0 -10 -10 -14q-6 -2 -41 -2h-13zM416 1128h47q104 0 104 109q0 90 -102 90h-49v-199z" />
+<glyph unicode="&#xaf;" horiz-adv-x="522" d="M0 1313q4 55 47 55h467q10 -25 10 -51q-2 -57 -45 -57h-473q-6 22 -6 53z" />
+<glyph unicode="&#xb0;" horiz-adv-x="757" d="M199 1335q0 186 192 187q88 0 133 -41q43 -39 43 -144q0 -92 -49 -139q-51 -47 -141 -47q-92 0 -133 39q-45 41 -45 145zM283 1331q0 -100 96 -100q106 0 106 106q0 104 -94 105q-108 0 -108 -111z" />
+<glyph unicode="&#xb1;" horiz-adv-x="884" d="M86 27v49q0 20 2 30q4 16 8 19q8 4 17 4h690q0 -57 -4 -82q-4 -20 -25 -20h-688zM88 573v50q0 20 2 30q4 16 8 19q8 4 17 4h280v278q0 22 19 25q25 4 84 4v-307h307q0 -59 -4 -84q-3 -18 -25 -19h-278v-280q0 -18 -19 -23q-25 -4 -84 -4v307h-307z" />
+<glyph unicode="&#xb2;" horiz-adv-x="819" d="M106 633q0 43 19 65q53 59 180 170q131 115 184 183q59 76 60 153q0 59 -35 99q-34 37 -123 36q-115 0 -235 -90q-25 33 -25 70q0 43 96 90q92 45 205 45q137 0 192.5 -59.5t55.5 -161.5q0 -74 -45 -150q-46 -77 -98 -129l-140 -133q-104 -98 -127 -123h439q8 -33 8 -49 q0 -57 -39 -57h-563q-9 14 -9 41z" />
+<glyph unicode="&#xb3;" horiz-adv-x="845" d="M125 672q0 39 31 63q78 -59 215 -59q111 0 174 45t63 125q0 55 -39 92q-41 39 -100 47q-41 8 -168 8q-12 14 -12 51q0 41 37 41q61 0 135 -8q106 70 106 162q0 43 -37 78q-39 35 -127 35q-138 0 -239 -80q-25 25 -25 55q0 33 17 41q90 86 284 86q131 0 189 -51 q59 -53 59 -133q0 -125 -115 -215q70 -25 109 -76q41 -53 41 -123q0 -139 -96 -213q-92 -72 -258 -72q-164 0 -228 58q-16 16 -16 43z" />
+<glyph unicode="&#xb4;" horiz-adv-x="329" d="M0 1249q74 74 119 113q94 82 110 94q45 35 50 35q18 0 34 -33q14 -31 19 -57q-14 -18 -111 -90q-102 -78 -176 -127q-10 0 -22 16q-6 8 -17 33z" />
+<glyph unicode="&#xb5;" horiz-adv-x="856" d="M119 -391v1376q0 49 55 49q37 0 55 -8v-760q0 -180 195 -180q106 0 201 41v856q0 27 12 39t43 12q37 0 55 -8v-979q-158 -68 -311 -67q-137 0 -195 73v-407q0 -45 -61 -45q-26 0 -49 8z" />
+<glyph unicode="&#x3bc;" horiz-adv-x="856" d="M119 -391v1376q0 49 55 49q37 0 55 -8v-760q0 -180 195 -180q106 0 201 41v856q0 27 12 39t43 12q37 0 55 -8v-979q-158 -68 -311 -67q-137 0 -195 73v-407q0 -45 -61 -45q-26 0 -49 8z" />
+<glyph unicode="&#xb6;" horiz-adv-x="1116" d="M88 864q0 293 107 439q109 150 299 149q135 0 237 -53v-1364q0 -41 -57 -41q-35 0 -53 8v422q-70 -35 -187 -35q-152 0 -250 109q-96 104 -96 366zM203 874q0 -387 258 -391q90 -4 157 37v805q-41 29 -139 29q-135 0 -205 -123q-71 -126 -71 -357zM885 2v1364q0 47 59 47 q18 0 53 -10v-1368q0 -22 -12 -31q-10 -8 -45 -8q-37 0 -55 6z" />
+<glyph unicode="&#xb7;" horiz-adv-x="423" d="M121 551q0 39 24.5 65.5t61.5 26.5q90 0 90 -92q0 -39 -24.5 -65.5t-65.5 -26.5q-86 0 -86 92z" />
+<glyph unicode="&#xb8;" horiz-adv-x="256" d="M0 -375q10 53 20 68q9 3 19 0q2 0 12 -5t19 -7q20 -6 41 -7q70 0 69 74q0 72 -67 72l-80 -13l39 199h73l-26 -129q4 4 37 4q41 0 71 -31q29 -29 29 -88q0 -78 -43 -118q-41 -39 -104 -39q-62 0 -109 20z" />
+<glyph unicode="&#xb9;" horiz-adv-x="833" d="M125 639q0 59 39 59h231v631l-250 -51q-14 20 -14 53q0 41 39 53q229 70 301 70q25 0 39 -6v-750h195q6 -27 6 -51q0 -55 -37 -55h-543q-6 27 -6 47z" />
+<glyph unicode="&#xba;" horiz-adv-x="710" d="M86 1020q0 217 76 328q74 106 207 106q135 0 196.5 -92t61.5 -340q0 -428 -279 -428q-133 0 -198 90q-64 88 -64 336zM184 1012q0 -186 39 -252q41 -70 125 -70q182 0 182 334q0 186 -38 256q-41 72 -121 72q-187 0 -187 -340z" />
+<glyph unicode="&#xbb;" horiz-adv-x="847" d="M88 111q0 49 266 401l-63 90q-82 117 -131 195q-66 100 -66 129q0 39 64 57q305 -420 305 -471q0 -25 -78 -143q-70 -106 -158 -222l-77 -104q-4 2 -17 6q-10 4 -27 21q-18 18 -18 41zM412 68q0 18 69 135l135 217l68 102q-264 391 -264 445q0 16 18 32q16 14 33 21l16 4 q305 -449 306 -502q0 -31 -78 -155q-92 -150 -160 -248l-78 -119l-18 6q-12 4 -29 21q-18 18 -18 41z" />
+<glyph unicode="&#xbc;" horiz-adv-x="1794" d="M125 639q0 59 39 59h231v631l-250 -51q-14 20 -14 53q0 41 39 53q229 70 301 70q25 0 39 -6v-750h195q6 -27 6 -51q0 -55 -37 -55h-543q-6 27 -6 47zM485 29l818 1401q8 27 36 26q41 0 76 -43l-819 -1411q-10 -18 -33 -18q-51 0 -78 45zM1012 205q0 27 14 63 q41 127 148 293q111 172 204 262q37 39 92 39q10 0 48 -6v-596h143q10 -27 10 -55q0 -53 -35 -53h-118v-123q0 -39 -62 -39q-20 0 -45 6v156h-383q-16 20 -16 53zM1122 254h291l4 467q-82 -76 -168 -209q-90 -141 -127 -258z" />
+<glyph unicode="&#xbd;" horiz-adv-x="1863" d="M125 639q0 59 39 59h231v631l-250 -51q-14 20 -14 53q0 41 39 53q229 70 301 70q25 0 39 -6v-750h195q6 -27 6 -51q0 -55 -37 -55h-543q-6 27 -6 47zM485 29l818 1401q8 27 36 26q41 0 76 -43l-819 -1411q-10 -18 -33 -18q-51 0 -78 45zM1133 41q0 45 18 65 q53 59 180 170q125 109 184.5 185t59.5 151q0 59 -35 99q-34 37 -123 37q-115 0 -235 -91q-25 35 -25 70q0 41 96 88q98 47 205 47q137 0 193 -59q55 -57 55 -162q0 -74 -45 -149q-46 -77 -98 -130q-53 -53 -140 -131q-96 -88 -127 -125h439q8 -33 8 -49q0 -57 -39 -57h-563 q-8 14 -8 41z" />
+<glyph unicode="&#xbe;" horiz-adv-x="1787" d="M125 672q0 39 31 63q78 -59 215 -59q111 0 174 45t63 125q0 55 -39 92q-41 39 -100 47q-41 8 -168 8q-12 14 -12 51q0 41 37 41q61 0 135 -8q106 70 106 162q0 43 -37 78q-39 35 -127 35q-138 0 -239 -80q-25 25 -25 55q0 33 17 41q90 86 284 86q131 0 189 -51 q59 -53 59 -133q0 -125 -115 -215q70 -25 109 -76q41 -53 41 -123q0 -139 -96 -213q-92 -72 -258 -72q-164 0 -228 58q-16 16 -16 43zM498 29l817 1401q8 27 37 26q41 0 75 -43l-819 -1411q-10 -18 -33 -18q-50 0 -77 45zM1006 205q0 27 14 63q41 127 147 293 q111 172 205 262q37 39 92 39q10 0 47 -6v-596h144q10 -27 10 -55q0 -53 -35 -53h-119v-123q0 -39 -61 -39q-20 0 -45 6v156h-383q-16 20 -16 53zM1116 254h291l4 467q-82 -76 -168 -209q-90 -141 -127 -258z" />
+<glyph unicode="&#xbf;" horiz-adv-x="616" d="M29 -109q0 78 28 160q25 70 64 127l82 111q51 70 65 94q37 63 37 139q0 14 -4 56q-4 33 -6 40q-4 10 0 21q18 29 102 12q23 -55 23 -125q0 -94 -47 -178q-41 -66 -90 -131q-61 -80 -101 -154q-35 -68 -35 -151q0 -199 199 -199q117 0 197 62q14 -37 14 -88q0 -29 -78 -58 q-80 -29 -164 -28q-125 0 -206 69q-80 67 -80 221zM254 946q0 37 25 66q25 27 65 26q86 0 86 -92q0 -37 -24 -65q-25 -27 -62 -27q-90 0 -90 92z" />
+<glyph unicode="&#xc0;" horiz-adv-x="890" d="M14 2l387 1421q4 18 39 19q31 0 49 -6l388 -1409q4 -16 -6.5 -22.5t-41.5 -6.5q-49 0 -67 2l-103 395h-426l-94 -372q-3 -25 -55 -25q-33 0 -70 4zM209 1821q2 20 20 57q16 31 33 31q2 0 133 -109q117 -96 146 -131q-23 -66 -43 -65q-2 0 -140 102q-139 105 -149 115z M260 500h371l-99 379q-78 305 -86 401q-16 -137 -88 -401z" />
+<glyph unicode="&#xc1;" horiz-adv-x="890" d="M14 2l387 1421q4 18 39 19q31 0 49 -6l388 -1409q4 -16 -6.5 -22.5t-41.5 -6.5q-49 0 -67 2l-103 395h-426l-94 -372q-3 -25 -55 -25q-33 0 -70 4zM260 500h371l-99 379q-78 305 -86 401q-16 -137 -88 -401zM362 1659q74 74 119 113l113 94q45 35 47 35q18 0 33 -31 q18 -35 20 -60q-18 -23 -110 -92l-176 -125q-8 0 -21 17q-10 12 -18 32z" />
+<glyph unicode="&#xc2;" horiz-adv-x="890" d="M14 2l387 1421q4 18 39 19q31 0 49 -6l388 -1409q4 -16 -6.5 -22.5t-41.5 -6.5q-49 0 -67 2l-103 395h-426l-94 -372q-3 -25 -55 -25q-33 0 -70 4zM195 1636l227 234q16 4 27 4q27 0 40 -19q199 -199 199 -219q0 -12 -26.5 -26.5t-57.5 -14.5q-141 147 -158 177 q-150 -174 -174 -175q-50 0 -77 39zM260 500h371l-99 379q-78 305 -86 401q-16 -137 -88 -401z" />
+<glyph unicode="&#xc3;" horiz-adv-x="890" d="M14 2l387 1421q4 18 39 19q31 0 49 -6l388 -1409q4 -16 -6.5 -22.5t-41.5 -6.5q-49 0 -67 2l-103 395h-426l-94 -372q-3 -25 -55 -25q-33 0 -70 4zM152 1688q84 139 208 139q45 0 95 -53q49 -51 92 -52q47 0 76 23q27 20 45 47q16 23 22 23q10 0 23 -17q10 -12 16 -33 l6 -16q-12 -27 -33 -53q-16 -20 -69 -54q-47 -29 -101 -28q-70 0 -114 53q-45 55 -78 55q-34 0 -61 -24q-29 -27 -43 -45q-16 -23 -25 -23q-32 1 -59 58zM260 500h371l-99 379q-78 305 -86 401q-16 -137 -88 -401z" />
+<glyph unicode="&#xc4;" horiz-adv-x="890" d="M14 2l387 1421q4 18 39 19q31 0 49 -6l388 -1409q4 -16 -6.5 -22.5t-41.5 -6.5q-49 0 -67 2l-103 395h-426l-94 -372q-3 -25 -55 -25q-33 0 -70 4zM223 1739q0 37 21 59q23 25 59 25q39 0 59 -23q23 -27 23 -61q0 -33 -23 -60q-23 -25 -59 -24q-80 0 -80 84zM260 500h371 l-99 379q-78 305 -86 401q-16 -137 -88 -401zM512 1739q0 37 20 59q20 25 60 25q41 0 61.5 -22.5t20.5 -61.5q0 -33 -23 -60q-20 -25 -59 -24q-80 0 -80 84z" />
+<glyph unicode="&#xc5;" horiz-adv-x="890" d="M14 2l387 1421q4 18 39 19q31 0 49 -6l388 -1409q4 -16 -6.5 -22.5t-41.5 -6.5q-49 0 -67 2l-103 395h-426l-94 -372q-3 -25 -55 -25q-33 0 -70 4zM260 500h371l-99 379q-78 305 -86 401q-16 -137 -88 -401zM260 1769q0 186 193 187q90 0 135 -41q41 -39 41 -143 q0 -186 -191 -187q-90 0 -133 41q-45 43 -45 143zM348 1765q0 -98 92 -98q102 0 103 105q0 100 -90 100q-53 0 -78 -25q-27 -27 -27 -82z" />
+<glyph unicode="&#xc6;" horiz-adv-x="1312" d="M37 2l672 1409q6 23 36 23h515q0 -78 -3 -88q-4 -16 -20 -17h-383v-493h358q0 -63 -4 -88q-2 -16 -18 -17h-336v-627h403q0 -70 -4 -90q-2 -14 -20 -14h-492v395h-401l-178 -372q-9 -25 -56 -25q-32 0 -69 4zM389 500h352v800q-78 -215 -174 -430z" />
+<glyph unicode="&#xc7;" horiz-adv-x="720" d="M80 649q0 205 24 359q25 156 62 237q37 84 92 133q53 47 107 64q45 14 112 14q94 0 141 -33q49 -35 50 -69q0 -37 -21 -70q-70 63 -153 64q-49 0 -86 -13q-39 -12 -80 -57q-43 -47 -70 -116.5t-45 -205.5q-16 -117 -16 -309q0 -156 20 -282q18 -113 55 -168.5t76 -76 t92 -20.5q70 0 125 27q59 29 88 63q20 -35 21 -71q0 -47 -66 -90q-65 -43 -159 -49l-21 -103q4 4 37 4q39 0 69.5 -30.5t30.5 -88.5q0 -78 -43 -118q-41 -39 -104 -39q-61 0 -109 20q10 53 21 68q9 3 18 0q2 0 12.5 -5t18.5 -7q23 -6 41 -7q70 0 69 74q0 72 -67 72l-80 -13 l33 173q-43 2 -90 20q-39 14 -78 57t-68 115q-27 70 -43 193q-16 126 -16 284z" />
+<glyph unicode="&#xc8;" horiz-adv-x="688" d="M117 0v1405q0 29 26 29h490q0 -98 -10 -103q-2 -2 -11 -2h-385v-493h361q0 -76 -2 -88q-2 -16 -23 -17h-336v-627h404q0 -80 -2 -90q-2 -14 -23 -14h-489zM162 1821q2 20 20 57q14 31 33 31q2 0 133 -109q115 -96 146 -131q-23 -66 -43 -65q-2 0 -140 102 q-139 105 -149 115z" />
+<glyph unicode="&#xc9;" horiz-adv-x="688" d="M117 0v1405q0 29 26 29h490q0 -98 -10 -103q-2 -2 -11 -2h-385v-493h361q0 -76 -2 -88q-2 -16 -23 -17h-336v-627h404q0 -80 -2 -90q-2 -14 -23 -14h-489zM313 1659q74 74 119 113l113 94q45 35 47 35q18 0 33 -31q18 -35 20 -60q-18 -23 -110 -92q-74 -55 -177 -125 q-8 0 -20 17q-10 12 -19 32z" />
+<glyph unicode="&#xca;" horiz-adv-x="688" d="M117 0v1405q0 29 26 29h490q0 -98 -10 -103q-2 -2 -11 -2h-385v-493h361q0 -76 -2 -88q-2 -16 -23 -17h-336v-627h404q0 -80 -2 -90q-2 -14 -23 -14h-489zM145 1636l228 234q16 4 26 4q27 0 41 -19q199 -199 199 -219q0 -12 -26.5 -26.5t-57.5 -14.5q-141 147 -158 177 q-150 -174 -174 -175q-51 0 -78 39z" />
+<glyph unicode="&#xcb;" horiz-adv-x="688" d="M117 0v1405q0 29 26 29h490q0 -98 -10 -103q-2 -2 -11 -2h-385v-493h361q0 -76 -2 -88q-2 -16 -23 -17h-336v-627h404q0 -80 -2 -90q-2 -14 -23 -14h-489zM174 1739q0 37 21 59q23 25 59 25q41 0 61.5 -22.5t20.5 -61.5q0 -33 -23 -60q-23 -25 -59 -24q-80 0 -80 84z M463 1739q0 33 22 59q23 25 58 25q41 0 61.5 -22.5t20.5 -61.5q0 -33 -23 -60q-20 -25 -59 -24q-80 0 -80 84z" />
+<glyph unicode="&#xcc;" horiz-adv-x="335" d="M-68 1821q2 27 18.5 57.5t35.5 30.5q4 0 135 -109q123 -102 143 -131q-23 -66 -43 -65q-2 0 -139 102q-140 105 -150 115zM111 0v1376q0 45 16 51q15 6 98 7v-1407q0 -20 -14 -23q-20 -4 -100 -4z" />
+<glyph unicode="&#xcd;" horiz-adv-x="335" d="M84 1659q74 74 119 113q94 82 110 94q45 35 49 35q18 0 33 -31q18 -35 21 -60q-18 -23 -111 -92l-176 -125q-10 0 -23 17q-6 8 -16 32zM111 0v1376q0 45 16 51q15 6 98 7v-1407q0 -20 -14 -23q-20 -4 -100 -4z" />
+<glyph unicode="&#xce;" horiz-adv-x="335" d="M-82 1636l227 234q16 4 27 4q25 0 41 -19q199 -199 199 -219q0 -12 -27 -26.5t-57 -14.5q-141 147 -158 177q-150 -174 -174 -175q-51 0 -78 39zM111 0v1376q0 45 16 51q15 6 98 7v-1407q0 -20 -14 -23q-20 -4 -100 -4z" />
+<glyph unicode="&#xcf;" horiz-adv-x="335" d="M-53 1739q0 33 22 59q23 25 58 25q41 0 61.5 -22.5t20.5 -61.5q0 -33 -23 -60q-20 -25 -59 -24q-80 0 -80 84zM111 0v1376q0 45 16 51q15 6 98 7v-1407q0 -20 -14 -23q-20 -4 -100 -4zM236 1739q0 33 22 59q20 25 57 25q39 0 60 -23q23 -27 22 -61q0 -33 -22 -60 q-23 -25 -60 -24q-79 0 -79 84z" />
+<glyph unicode="&#xd0;" horiz-adv-x="845" d="M25 705v49q0 8 4 28q4 16 8 19q8 4 14 4h64v594q0 35 51 35h205q203 0 301 -146q96 -141 96 -487q0 -248 -29 -400q-31 -160 -88 -245q-59 -88 -125 -121q-70 -35 -164 -35h-247v705h-90zM227 109h138q41 0 84 14q35 12 75 55q39 41 64 117q27 78 41 203q16 137 16 303 q0 287 -65.5 407.5t-210.5 120.5h-142v-524h213q0 -57 -4 -82q-3 -18 -24 -18h-185v-596z" />
+<glyph unicode="&#xd1;" horiz-adv-x="931" d="M113 0v1405q0 29 26 29h80l246 -566q63 -172 254 -647q-10 170 -10 699v485q0 23 14 25q20 4 98 4v-1407q0 -27 -26 -27h-78l-252 575q-45 102 -250 642q8 -270 8 -689v-501q0 -18 -12 -23q-16 -4 -98 -4zM190 1688q84 139 209 139q45 0 95 -53q49 -51 92 -52q47 0 76 23 q27 20 45 47q16 23 22 23q10 0 23 -17q10 -12 16 -33l6 -16q-12 -27 -33 -53q-16 -20 -69 -54q-47 -29 -101 -28q-70 0 -114 53q-47 55 -78 55q-34 0 -62 -24q-29 -27 -43 -45q-16 -23 -24 -23q-33 1 -60 58z" />
+<glyph unicode="&#xd2;" horiz-adv-x="911" d="M78 727q0 391 94 559t299 168q200 0 283 -160q82 -158 82 -565q0 -414 -91 -579q-92 -170 -296.5 -170t-286.5 161q-84 164 -84 586zM203 692q0 -326 55 -461t195 -135q141 0 202 144q59 139 60 491q0 338 -55.5 473t-192.5 135q-135 0 -201 -149q-63 -146 -63 -498z M240 1821q2 27 18 57.5t35 30.5q2 0 133 -109q127 -106 145 -131q-23 -66 -43 -65q-4 0 -141 102q-131 99 -147 115z" />
+<glyph unicode="&#xd3;" horiz-adv-x="911" d="M78 727q0 391 94 559t299 168q200 0 283 -160q82 -158 82 -565q0 -414 -91 -579q-92 -170 -296.5 -170t-286.5 161q-84 164 -84 586zM203 692q0 -326 55 -461t195 -135q141 0 202 144q59 139 60 491q0 338 -55.5 473t-192.5 135q-135 0 -201 -149q-63 -146 -63 -498z M391 1659q74 74 119 113l113 94q45 35 47 35q18 0 35 -31q14 -31 18 -60q-18 -23 -111 -92l-176 -125q-10 0 -22 17q-6 8 -17 32z" />
+<glyph unicode="&#xd4;" horiz-adv-x="911" d="M78 727q0 391 94 559t299 168q200 0 283 -160q82 -158 82 -565q0 -414 -91 -579q-92 -170 -296.5 -170t-286.5 161q-84 164 -84 586zM203 692q0 -326 55 -461t195 -135q141 0 202 144q59 139 60 491q0 338 -55.5 473t-192.5 135q-135 0 -201 -149q-63 -146 -63 -498z M223 1636l228 234q16 4 26 4q27 0 41 -19q199 -199 199 -219q0 -12 -26.5 -26.5t-57.5 -14.5q-141 147 -158 177q-150 -174 -174 -175q-51 0 -78 39z" />
+<glyph unicode="&#xd5;" horiz-adv-x="911" d="M78 727q0 391 94 559t299 168q200 0 283 -160q82 -158 82 -565q0 -414 -91 -579q-92 -170 -296.5 -170t-286.5 161q-84 164 -84 586zM180 1688q84 139 209 139q45 0 94 -53q49 -51 92 -52q47 0 76 23q27 20 45 47q16 23 23 23q12 0 24 -17q10 -12 17 -33l4 -16 q-12 -27 -33 -53q-16 -20 -69 -54q-47 -29 -101 -28q-68 0 -115 53q-49 55 -77 55q-34 0 -62 -24q-29 -27 -43 -45q-16 -23 -24 -23q-33 1 -60 58zM203 692q0 -326 55 -461t195 -135q141 0 202 144q59 139 60 491q0 338 -55.5 473t-192.5 135q-135 0 -201 -149 q-63 -146 -63 -498z" />
+<glyph unicode="&#xd6;" horiz-adv-x="911" d="M78 727q0 391 94 559t299 168q200 0 283 -160q82 -158 82 -565q0 -414 -91 -579q-92 -170 -296.5 -170t-286.5 161q-84 164 -84 586zM203 692q0 -326 55 -461t195 -135q141 0 202 144q59 139 60 491q0 338 -55.5 473t-192.5 135q-135 0 -201 -149q-63 -146 -63 -498z M252 1739q0 33 22 59q20 25 58 25q41 0 61.5 -22.5t20.5 -61.5q0 -33 -23 -60q-23 -25 -59 -24q-80 0 -80 84zM541 1739q0 33 22 59q23 25 58 25q41 0 61 -22.5t20 -61.5q0 -33 -22 -60q-20 -25 -59 -24q-80 0 -80 84z" />
+<glyph unicode="&#xd7;" d="M178 795q66 61 80 59q6 0 12 -6l170 -193l172 193q18 10 29 2q25 -18 53 -45q10 -10 11 -10l-195 -220l192 -215q-49 -49 -57 -55q-10 -8 -35 2l-170 191l-168 -191q-8 -8 -16 -8q-10 0 -18.5 6t-22.5 21l-35 34l191 215z" />
+<glyph unicode="&#xd8;" horiz-adv-x="948" d="M96 727q0 387 94 559q92 168 295 168q154 0 238 -90l43 109q70 -2 76 -37q0 -18 -58 -172q70 -166 70 -535q0 -410 -90 -579.5t-295 -169.5q-162 0 -244 92l-43 -105q-14 -2 -42.5 8.5t-30.5 28.5l2 7l8 22l26 67l25 62q-74 166 -74 565zM221 692q0 -297 43 -432 l379 1008q-55 72 -156 71q-138 0 -202 -147q-64 -146 -64 -500zM309 166q53 -72 156 -72q94 0 151 53q55 51 86 195q31 141 31 389q0 305 -43 440z" />
+<glyph unicode="&#xd9;" horiz-adv-x="935" d="M113 440v965q0 23 14 25q20 4 100 4v-998q0 -51 4 -112q2 -35 21 -93q15 -49 43 -79q25 -27 74 -48q45 -18 114 -18q143 0 230 43v1278q0 20 14 23q20 4 100 4v-1383q-47 -31 -141 -51t-203 -20q-92 0 -168 26q-70 25 -108 64q-37 37 -60 104q-23 70 -28 123 q-6 59 -6 143zM246 1821q2 20 20 57q16 31 33 31q2 0 133 -109q117 -96 146 -131q-23 -66 -43 -65q-2 0 -140 102q-139 105 -149 115z" />
+<glyph unicode="&#xda;" horiz-adv-x="935" d="M113 440v965q0 23 14 25q20 4 100 4v-998q0 -51 4 -112q2 -35 21 -93q15 -49 43 -79q25 -27 74 -48q45 -18 114 -18q143 0 230 43v1278q0 20 14 23q20 4 100 4v-1383q-47 -31 -141 -51t-203 -20q-92 0 -168 26q-70 25 -108 64q-37 37 -60 104q-23 70 -28 123 q-6 59 -6 143zM397 1659q74 74 119 113l113 94q45 35 47 35q16 0 33 -31q18 -35 20 -60q-18 -23 -111 -92l-176 -125q-8 0 -20 17q-10 12 -19 32z" />
+<glyph unicode="&#xdb;" horiz-adv-x="935" d="M113 440v965q0 23 14 25q20 4 100 4v-998q0 -51 4 -112q2 -35 21 -93q15 -49 43 -79q25 -27 74 -48q45 -18 114 -18q143 0 230 43v1278q0 20 14 23q20 4 100 4v-1383q-47 -31 -141 -51t-203 -20q-92 0 -168 26q-70 25 -108 64q-37 37 -60 104q-23 70 -28 123 q-6 59 -6 143zM229 1636l228 234q16 4 26 4q25 0 41 -19q199 -199 199 -219q0 -12 -26.5 -26.5t-57.5 -14.5q-141 147 -158 177q-150 -174 -174 -175q-51 0 -78 39z" />
+<glyph unicode="&#xdc;" horiz-adv-x="935" d="M113 440v965q0 23 14 25q20 4 100 4v-998q0 -51 4 -112q2 -35 21 -93q15 -49 43 -79q25 -27 74 -48q45 -18 114 -18q143 0 230 43v1278q0 20 14 23q20 4 100 4v-1383q-47 -31 -141 -51t-203 -20q-92 0 -168 26q-70 25 -108 64q-37 37 -60 104q-23 70 -28 123 q-6 59 -6 143zM258 1739q0 37 21 59q20 25 59 25q41 0 61.5 -22.5t20.5 -61.5q0 -33 -23 -60q-20 -25 -59 -24q-80 0 -80 84zM547 1739q0 33 22 59q20 25 58 25q41 0 61.5 -22.5t20.5 -61.5q0 -33 -23 -60q-23 -25 -59 -24q-80 0 -80 84z" />
+<glyph unicode="&#xdd;" horiz-adv-x="737" d="M12 1415q-6 14 13 17q10 2 114 2l99 -293q43 -115 86 -262q49 -166 53 -193q14 106 139 457l90 270q2 12 21 17q20 4 102 4l-299 -848v-559q0 -18 -14 -23q-16 -4 -99 -4v582zM293 1659q74 74 119 113q94 82 110 94q45 35 49 35q18 0 33 -31q18 -35 21 -60 q-18 -23 -111 -92l-176 -125q-8 0 -21 17q-10 12 -18 32z" />
+<glyph unicode="&#xde;" horiz-adv-x="755" d="M113 0v1403q0 20 14 27q10 4 61 4h35v-265h129q358 0 359 -391q0 -221 -99 -329q-98 -106 -268 -107h-121v-315q0 -20 -14 -23q-20 -4 -96 -4zM223 451h66h20h17.5t13.5 -1t9 -1h3q236 0 236 339q0 279 -226 279h-71q-12 0 -28.5 -1t-20.5 -1h-19v-614z" />
+<glyph unicode="&#xdf;" horiz-adv-x="960" d="M100 2q18 39 19 109l-2 1013q0 317 321 318q199 0 299 -90q98 -90 99 -201q0 -61 -41 -113q-43 -51 -90 -75q-49 -25 -90.5 -66t-41.5 -86q0 -39 37 -82q29 -33 90 -84l107 -90q55 -53 90 -121q37 -74 37 -155q0 -143 -82 -220q-84 -78 -225 -77q-70 0 -131 16 q-57 14 -84 32.5t-27 39.5q0 41 31 77q70 -63 190 -63q94 0 150 47q57 49 57 143q0 80 -57 156q-59 78 -123 125q-72 51 -123 115q-57 70 -57 135q0 61 41 113q39 47 92 77q51 29 90 68q41 41 41 88q0 72 -69.5 129t-201.5 57q-113 0 -165 -65q-51 -63 -52 -213l2 -1002 q0 -37 -14 -57q-12 -18 -51 -18q-18 0 -35 6q-20 8 -22 10z" />
+<glyph unicode="&#xe0;" horiz-adv-x="749" d="M74 285q0 104 24 174q23 68 72 102q45 33 94 45t115 12q109 0 168 -24v180q0 92 -41 127t-121 35q-184 0 -295 -51q-16 33 -16 65q0 29 16 41q35 23 125 37q98 16 197 16q125 0 186 -57q59 -55 59 -190v-123q0 -324 -10 -621q-119 -74 -278 -73q-39 0 -88 4 q-31 2 -78 22.5t-68 48.5q-27 35 -43 90q-18 60 -18 140zM143 1411q2 27 19 57q14 31 35 31q4 0 135 -108q123 -102 143 -131q-23 -66 -43 -66q-2 0 -139 102q-140 105 -150 115zM190 289q0 -72 15 -115q16 -47 45 -65q31 -18 59 -25q27 -6 76 -6q104 0 152 45 q10 160 10 387q-53 20 -133 20q-104 0 -164 -47t-60 -194z" />
+<glyph unicode="&#xe1;" horiz-adv-x="749" d="M74 285q0 104 24 174q23 68 72 102q45 33 94 45t115 12q109 0 168 -24v180q0 92 -41 127t-121 35q-184 0 -295 -51q-16 33 -16 65q0 29 16 41q35 23 125 37q98 16 197 16q125 0 186 -57q59 -55 59 -190v-123q0 -324 -10 -621q-119 -74 -278 -73q-39 0 -88 4 q-31 2 -78 22.5t-68 48.5q-27 35 -43 90q-18 60 -18 140zM190 289q0 -72 15 -115q16 -47 45 -65q31 -18 59 -25q27 -6 76 -6q104 0 152 45q10 160 10 387q-53 20 -133 20q-104 0 -164 -47t-60 -194zM297 1249q74 74 119 113q94 82 110 94q45 35 49 35q16 0 33 -33 q18 -35 21 -57q-14 -18 -111 -90q-102 -78 -176 -127q-10 0 -23 16q-6 8 -16 33z" />
+<glyph unicode="&#xe2;" horiz-adv-x="749" d="M74 285q0 104 24 174q23 68 72 102q45 33 94 45t115 12q109 0 168 -24v180q0 92 -41 127t-121 35q-184 0 -295 -51q-16 33 -16 65q0 29 16 41q35 23 125 37q98 16 197 16q125 0 186 -57q59 -55 59 -190v-123q0 -324 -10 -621q-119 -74 -278 -73q-39 0 -88 4 q-31 2 -78 22.5t-68 48.5q-27 35 -43 90q-18 60 -18 140zM129 1227l227 233q16 4 27 4q27 0 41 -18q199 -199 199 -219q0 -12 -27 -26.5t-57 -14.5q-137 143 -158 176q-150 -174 -174 -174q-51 0 -78 39zM190 289q0 -72 15 -115q16 -47 45 -65q31 -18 59 -25q27 -6 76 -6 q104 0 152 45q10 160 10 387q-53 20 -133 20q-104 0 -164 -47t-60 -194z" />
+<glyph unicode="&#xe3;" horiz-adv-x="749" d="M74 285q0 104 24 174q23 68 72 102q45 33 94 45t115 12q109 0 168 -24v180q0 92 -41 127t-121 35q-184 0 -295 -51q-16 33 -16 65q0 29 16 41q35 23 125 37q98 16 197 16q125 0 186 -57q59 -55 59 -190v-123q0 -324 -10 -621q-119 -74 -278 -73q-39 0 -88 4 q-31 2 -78 22.5t-68 48.5q-27 35 -43 90q-18 60 -18 140zM86 1278q84 139 209 139q45 0 94 -51q49 -53 92 -53q45 0 76 24.5t45 44.5q16 23 23 23q10 0 22 -16q10 -12 19 -33l4 -17q-14 -33 -33 -53q-20 -25 -70 -53q-47 -29 -100 -29q-66 0 -115 56q-47 53 -78 53 q-37 0 -61 -23q-27 -23 -43 -47q-16 -23 -25 -22q-32 0 -59 57zM190 289q0 -72 15 -115q16 -47 45 -65q31 -18 59 -25q27 -6 76 -6q104 0 152 45q10 160 10 387q-53 20 -133 20q-104 0 -164 -47t-60 -194z" />
+<glyph unicode="&#xe4;" horiz-adv-x="749" d="M74 285q0 104 24 174q23 68 72 102q45 33 94 45t115 12q109 0 168 -24v180q0 92 -41 127t-121 35q-184 0 -295 -51q-16 33 -16 65q0 29 16 41q35 23 125 37q98 16 197 16q125 0 186 -57q59 -55 59 -190v-123q0 -324 -10 -621q-119 -74 -278 -73q-39 0 -88 4 q-31 2 -78 22.5t-68 48.5q-27 35 -43 90q-18 60 -18 140zM158 1329q0 33 22 60q20 25 58 24q40 0 61 -24q20 -23 20 -60q0 -35 -22 -61q-20 -23 -59 -23q-80 0 -80 84zM190 289q0 -72 15 -115q16 -47 45 -65q31 -18 59 -25q27 -6 76 -6q104 0 152 45q10 160 10 387 q-53 20 -133 20q-104 0 -164 -47t-60 -194zM446 1329q0 37 21 60q20 25 59 24.5t60 -24.5q23 -27 22 -60q0 -35 -22 -61q-20 -23 -60 -23q-80 0 -80 84z" />
+<glyph unicode="&#xe5;" horiz-adv-x="749" d="M74 285q0 104 24 174q23 68 72 102q45 33 94 45t115 12q109 0 168 -24v180q0 92 -41 127t-121 35q-184 0 -295 -51q-16 33 -16 65q0 29 16 41q35 23 125 37q98 16 197 16q125 0 186 -57q59 -55 59 -190v-123q0 -324 -10 -621q-119 -74 -278 -73q-39 0 -88 4 q-31 2 -78 22.5t-68 48.5q-27 35 -43 90q-18 60 -18 140zM190 289q0 -72 15 -115q16 -47 45 -65q31 -18 59 -25q27 -6 76 -6q104 0 152 45q10 160 10 387q-53 20 -133 20q-104 0 -164 -47t-60 -194zM195 1360q0 186 192 186q88 0 133 -41q43 -39 43 -143q0 -186 -190 -186 q-86 0 -133 43q-45 43 -45 141zM283 1356q0 -98 92 -99q102 0 102 105q0 100 -90 100q-53 0 -78 -24q-26 -27 -26 -82z" />
+<glyph unicode="&#xe6;" horiz-adv-x="1267" d="M74 291q0 197 84 270q80 72 219 72q111 0 170 -25v172q0 94 -45 127q-47 35 -129 35q-170 0 -277 -59q-14 23 -14 67q0 29 18 39q86 55 312 55q96 0 155 -38q51 -35 68 -123q46 95 117 129q68 33 168 32q258 0 258 -317q0 -162 -21 -252q-86 -14 -190 -14q-156 0 -299 31 v-35q0 -125 14 -197q14 -74 49 -110.5t72 -47.5q41 -10 96 -10q154 0 254 70q14 -31 14 -103q0 -12 -37 -30q-25 -12 -104 -31q-63 -14 -137 -14q-182 0 -246 94v-35q-104 -61 -274 -61q-72 0 -111 8q-49 10 -90 35q-45 27 -69.5 94.5t-24.5 171.5zM190 289 q0 -133 47.5 -172t145.5 -39q121 0 164 43v403q-53 20 -133 21q-100 0 -164 -53q-60 -51 -60 -203zM672 586q152 -33 280 -33q68 0 107 8q8 57 8 144q-4 127 -37 182q-35 55 -121 55q-94 0 -157 -72q-66 -73 -80 -284z" />
+<glyph unicode="&#xe7;" horiz-adv-x="675" d="M82 489q0 141 24 246q25 106 58 162q34 58 86 92q57 37 96 45q51 10 105 10q74 0 123 -24.5t49 -56.5q0 -37 -15 -68q-70 47 -159 47q-43 0 -70 -8q-31 -9 -68 -37q-33 -25 -59 -74q-23 -41 -39 -135q-16 -92 -16 -205q0 -237 55 -319t168 -82q121 0 188 61 q14 -31 15 -65q0 -34 -56 -62q-57 -29 -143 -34l-21 -105q4 4 37 4q41 0 72 -31q29 -29 29 -88q0 -78 -43 -118q-41 -39 -105 -39q-61 0 -108 20q10 53 20 68q9 3 19 0l12 -5q12 -5 20 -7q20 -6 39 -7q70 0 70 74q0 72 -68 72l-80 -13l33 175q-135 8 -200 114 q-68 107 -68 393z" />
+<glyph unicode="&#xe8;" horiz-adv-x="768" d="M78 457q0 145 22 262q22 111 56 172q33 57 86 96t98 47q51 10 104 10q258 0 258 -323q0 -156 -20 -246q-182 -37 -489 -37q0 -137 32 -223q31 -78 78 -102q45 -23 129 -23q150 0 246 70q14 -35 14 -80q0 -37 -84 -68q-88 -33 -194 -32q-80 0 -135 18q-57 18 -104.5 65.5 t-72 145.5t-24.5 248zM193 1411q2 20 20 57q16 31 33 31q4 0 135 -108q123 -102 143 -131q-23 -66 -43 -66q-2 0 -139 102q-139 105 -149 115zM195 532q270 0 389 29q8 57 8 137q-2 127 -37 187q-33 57 -121 57q-49 0 -80 -14q-39 -18 -71 -54q-35 -37 -60 -124 q-26 -91 -28 -218z" />
+<glyph unicode="&#xe9;" horiz-adv-x="768" d="M78 457q0 145 22 262q22 111 56 172q33 57 86 96t98 47q51 10 104 10q258 0 258 -323q0 -156 -20 -246q-182 -37 -489 -37q0 -137 32 -223q31 -78 78 -102q45 -23 129 -23q150 0 246 70q14 -35 14 -80q0 -37 -84 -68q-88 -33 -194 -32q-80 0 -135 18q-57 18 -104.5 65.5 t-72 145.5t-24.5 248zM195 532q270 0 389 29q8 57 8 137q-2 127 -37 187q-33 57 -121 57q-49 0 -80 -14q-39 -18 -71 -54q-35 -37 -60 -124q-26 -91 -28 -218zM346 1249q74 74 119 113q94 82 110 94q45 35 50 35q18 0 34 -33q14 -31 19 -57q-14 -18 -111 -90 q-102 -78 -176 -127q-10 0 -22 16q-6 8 -17 33z" />
+<glyph unicode="&#xea;" horiz-adv-x="768" d="M78 457q0 145 22 262q22 111 56 172q33 57 86 96t98 47q51 10 104 10q258 0 258 -323q0 -156 -20 -246q-182 -37 -489 -37q0 -137 32 -223q31 -78 78 -102q45 -23 129 -23q150 0 246 70q14 -35 14 -80q0 -37 -84 -68q-88 -33 -194 -32q-80 0 -135 18q-57 18 -104.5 65.5 t-72 145.5t-24.5 248zM178 1227l228 233q16 4 26 4q27 0 41 -18q199 -199 199 -219q0 -12 -27 -26.5t-57 -14.5q-137 143 -158 176q-150 -174 -174 -174q-51 0 -78 39zM195 532q270 0 389 29q8 57 8 137q-2 127 -37 187q-33 57 -121 57q-49 0 -80 -14q-39 -18 -71 -54 q-35 -37 -60 -124q-26 -91 -28 -218z" />
+<glyph unicode="&#xeb;" horiz-adv-x="768" d="M78 457q0 145 22 262q22 111 56 172q33 57 86 96t98 47q51 10 104 10q258 0 258 -323q0 -156 -20 -246q-182 -37 -489 -37q0 -137 32 -223q31 -78 78 -102q45 -23 129 -23q150 0 246 70q14 -35 14 -80q0 -37 -84 -68q-88 -33 -194 -32q-80 0 -135 18q-57 18 -104.5 65.5 t-72 145.5t-24.5 248zM195 532q270 0 389 29q8 57 8 137q-2 127 -37 187q-33 57 -121 57q-49 0 -80 -14q-39 -18 -71 -54q-35 -37 -60 -124q-26 -91 -28 -218zM207 1329q0 33 22 60q20 25 58 24q40 0 61 -24q20 -23 21 -60q0 -35 -23 -61q-20 -23 -59 -23q-80 0 -80 84z M496 1329q0 33 22 60q23 25 57 24q39 0 60 -24q23 -27 22 -60q0 -35 -22 -61q-20 -23 -60 -23q-79 0 -79 84z" />
+<glyph unicode="&#xec;" horiz-adv-x="348" d="M-59 1411q2 27 18 57.5t35 30.5q2 0 133 -108q127 -106 145 -131q-23 -66 -43 -66q-4 0 -141 102q-131 99 -147 115zM117 0v969q0 39 20 47q18 8 96 8v-997q0 -18 -16 -23q-20 -4 -100 -4z" />
+<glyph unicode="&#xed;" horiz-adv-x="348" d="M92 1249q74 74 119 113l113 94q45 35 47 35q18 0 35 -33q14 -31 18 -57q-14 -18 -111 -90q-102 -78 -176 -127q-10 0 -22 16q-6 8 -17 33zM117 0v969q0 39 20 47q18 8 96 8v-997q0 -18 -16 -23q-20 -4 -100 -4z" />
+<glyph unicode="&#xee;" horiz-adv-x="348" d="M-76 1227l228 233q16 4 26 4q27 0 41 -18q199 -199 199 -219q0 -12 -26.5 -26.5t-57.5 -14.5q-137 143 -158 176q-150 -174 -174 -174q-51 0 -78 39zM117 0v969q0 39 20 47q18 8 96 8v-997q0 -18 -16 -23q-20 -4 -100 -4z" />
+<glyph unicode="&#xef;" horiz-adv-x="348" d="M-47 1329q0 33 22 60q20 25 58 24q40 0 61 -24q20 -23 21 -60q0 -35 -23 -61q-20 -23 -59 -23q-80 0 -80 84zM117 0v969q0 39 20 47q18 8 96 8v-997q0 -18 -16 -23q-20 -4 -100 -4zM242 1329q0 33 22 60q23 25 58 24q40 0 61 -24q20 -23 20 -60q0 -35 -22 -61 q-20 -23 -59 -23q-80 0 -80 84z" />
+<glyph unicode="&#xf0;" horiz-adv-x="892" d="M94 526q0 252 92 383q92 133 258 133q139 0 226 -92q-47 186 -158 328l-197 -78q-31 84 -20 96q2 4 10 9l135 53q-46 46 -129 110q29 55 78 56q27 0 47 -21q78 -63 113 -102l158 63q31 -84 22 -96q-2 -4 -12 -8l-99 -39q201 -268 201 -729q0 -135 -12 -234 q-12 -90 -51 -190q-35 -90 -111 -139q-74 -49 -182 -49q-188 0 -279 129q-90 130 -90 417zM207 510q0 -432 254 -432q78 0 131 41q47 37 74 121q23 74 32 159q8 72 9 199q0 111 -11 197q-86 143 -227 143q-127 0 -194.5 -112.5t-67.5 -315.5z" />
+<glyph unicode="&#xf1;" horiz-adv-x="819" d="M113 0v973q168 72 331 71q158 0 220 -65q61 -65 61 -215v-737q0 -20 -14 -23q-20 -4 -101 -4v733q0 117 -34.5 164t-135.5 47q-125 0 -215 -47v-870q0 -20 -14 -23q-20 -4 -98 -4zM141 1278q84 139 209 139q47 0 96 -51q49 -53 91 -53q47 0 77 24q25 20 43 45 q16 23 23 23q12 0 25 -16q6 -8 16 -33l4 -17q-14 -33 -33 -53q-20 -25 -69 -53q-47 -29 -101 -29q-66 0 -114 56q-47 53 -78 53q-37 0 -62 -23q-27 -23 -43 -47q-16 -23 -24 -22q-33 0 -60 57z" />
+<glyph unicode="&#xf2;" horiz-adv-x="782" d="M63 510q0 535 343 534q164 0 241 -114q76 -113 76 -418q0 -532 -340 -532q-83 0 -135 18q-55 18 -98 72q-43 51 -66 163q-21 103 -21 277zM168 1411q2 20 20 57q16 31 33 31q2 0 133 -108q117 -96 146 -131q-23 -66 -43 -66q-2 0 -140 102q-139 105 -149 115zM184 502 q0 -164 27 -266q25 -96 65 -127t111 -31q215 0 215 438q0 254 -47 340q-49 88 -154 88q-106 0 -161.5 -98t-55.5 -344z" />
+<glyph unicode="&#xf3;" horiz-adv-x="782" d="M63 510q0 535 343 534q164 0 241 -114q76 -113 76 -418q0 -532 -340 -532q-83 0 -135 18q-55 18 -98 72q-43 51 -66 163q-21 103 -21 277zM184 502q0 -164 27 -266q25 -96 65 -127t111 -31q215 0 215 438q0 254 -47 340q-49 88 -154 88q-106 0 -161.5 -98t-55.5 -344z M319 1249q74 74 119 113l113 94q45 35 47 35q16 0 33 -33q18 -35 20 -57q-14 -18 -110 -90q-102 -78 -176 -127q-8 0 -21 16q-10 12 -18 33z" />
+<glyph unicode="&#xf4;" horiz-adv-x="782" d="M63 510q0 535 343 534q164 0 241 -114q76 -113 76 -418q0 -532 -340 -532q-83 0 -135 18q-55 18 -98 72q-43 51 -66 163q-21 103 -21 277zM152 1227l227 233q16 4 27 4q25 0 40 -18q199 -199 199 -219q0 -12 -26.5 -26.5t-57.5 -14.5q-137 143 -158 176 q-150 -174 -174 -174q-50 0 -77 39zM184 502q0 -164 27 -266q25 -96 65 -127t111 -31q215 0 215 438q0 254 -47 340q-49 88 -154 88q-106 0 -161.5 -98t-55.5 -344z" />
+<glyph unicode="&#xf5;" horiz-adv-x="782" d="M63 510q0 535 343 534q164 0 241 -114q76 -113 76 -418q0 -532 -340 -532q-83 0 -135 18q-55 18 -98 72q-43 51 -66 163q-21 103 -21 277zM109 1278q84 139 208 139q45 0 95 -51q49 -53 92 -53q45 0 75.5 24.5t45.5 44.5q16 23 22 23q10 0 23 -16q6 -8 16 -33l6 -17 q-14 -33 -33 -53q-20 -25 -69 -53q-47 -29 -101 -29q-68 0 -114 56q-45 53 -78 53q-37 0 -61 -23q-27 -23 -43 -47q-16 -23 -25 -22q-32 0 -59 57zM184 502q0 -164 27 -266q25 -96 65 -127t111 -31q215 0 215 438q0 254 -47 340q-49 88 -154 88q-106 0 -161.5 -98 t-55.5 -344z" />
+<glyph unicode="&#xf6;" horiz-adv-x="782" d="M63 510q0 535 343 534q164 0 241 -114q76 -113 76 -418q0 -532 -340 -532q-83 0 -135 18q-55 18 -98 72q-43 51 -66 163q-21 103 -21 277zM180 1329q0 37 21 60q20 25 59 24.5t59 -24.5q23 -27 23 -60q0 -35 -23 -61q-20 -23 -59 -23q-80 0 -80 84zM184 502 q0 -164 27 -266q25 -96 65 -127t111 -31q215 0 215 438q0 254 -47 340q-49 88 -154 88q-106 0 -161.5 -98t-55.5 -344zM469 1329q0 33 23 60q20 25 57 24q40 0 61 -24q20 -23 21 -60q0 -35 -23 -61q-20 -23 -59 -23q-80 0 -80 84z" />
+<glyph unicode="&#xf7;" d="M86 526v49q0 20 2 31q4 16 8 19q8 4 17 4h690q0 -53 -4 -82q-2 -20 -25 -21h-688zM358 287q0 39 21 61q23 25 59 25q82 0 82 -86q0 -33 -22 -60q-23 -25 -60 -24q-80 0 -80 84zM358 856q0 37 21 59q23 25 59 25q82 0 82 -84q0 -35 -22 -61q-23 -25 -60 -25q-80 0 -80 86z " />
+<glyph unicode="&#xf8;" horiz-adv-x="866" d="M57 4q0 10 95 166q-37 117 -37 340q0 535 338 534q158 0 227 -94q59 104 74 119q68 -15 67 -49q0 -16 -92 -164q43 -123 43 -344q0 -532 -330 -532q-178 0 -245 98l-32 -52.5t-27 -46t-15 -24.5q-12 2 -41 16q-25 13 -25 33zM233 502q0 -147 17 -232l348 592 q-43 82 -147 82q-106 0 -162 -98t-56 -344zM279 174q47 -96 157 -96q215 0 215 438q0 156 -20 252z" />
+<glyph unicode="&#xf9;" horiz-adv-x="849" d="M119 346v649q0 25 14 27q10 2 100 2v-692q0 -147 39 -199q41 -53 158 -53q111 0 188 47v868q0 23 15 25q20 4 98 4v-973q-139 -72 -311 -71.5t-238 83.5q-63 82 -63 283zM197 1411q2 27 18 57q14 31 35 31q4 0 135 -108q123 -102 143 -131q-23 -66 -43 -66q-4 0 -141 102 q-131 99 -147 115z" />
+<glyph unicode="&#xfa;" horiz-adv-x="849" d="M119 346v649q0 25 14 27q10 2 100 2v-692q0 -147 39 -199q41 -53 158 -53q111 0 188 47v868q0 23 15 25q20 4 98 4v-973q-139 -72 -311 -71.5t-238 83.5q-63 82 -63 283zM348 1249q74 74 119 113l113 94q45 35 47 35q18 0 35 -33q14 -31 18 -57q-14 -18 -111 -90 q-102 -78 -176 -127q-10 0 -22 16q-6 8 -17 33z" />
+<glyph unicode="&#xfb;" horiz-adv-x="849" d="M119 346v649q0 25 14 27q10 2 100 2v-692q0 -147 39 -199q41 -53 158 -53q111 0 188 47v868q0 23 15 25q20 4 98 4v-973q-139 -72 -311 -71.5t-238 83.5q-63 82 -63 283zM180 1227l228 233q16 4 26 4q25 0 41 -18q199 -199 199 -219q0 -12 -26.5 -26.5t-57.5 -14.5 q-137 143 -158 176q-150 -174 -174 -174q-51 0 -78 39z" />
+<glyph unicode="&#xfc;" horiz-adv-x="849" d="M119 346v649q0 25 14 27q10 2 100 2v-692q0 -147 39 -199q41 -53 158 -53q111 0 188 47v868q0 23 15 25q20 4 98 4v-973q-139 -72 -311 -71.5t-238 83.5q-63 82 -63 283zM209 1329q0 33 22 60q23 25 58 24q40 0 61 -24q20 -23 21 -60q0 -35 -23 -61q-20 -23 -59 -23 q-80 0 -80 84zM498 1329q0 33 22 60q20 25 58 24q40 0 61 -24q20 -23 20 -60q0 -35 -22 -61q-20 -23 -59 -23q-80 0 -80 84z" />
+<glyph unicode="&#xfd;" horiz-adv-x="755" d="M2 -334q0 39 21 66q61 -29 124 -29q127 0 187 264l-266 1022q-6 29 8 31q20 4 100 4l154 -602l59 -318q18 141 55 320l138 565q3 28 18 31q20 4 102 4l-270 -1087q-47 -182 -110 -256q-66 -76 -170 -76q-150 0 -150 61zM309 1249q74 74 119 113l113 94q45 35 47 35 q16 0 33 -33q18 -35 20 -57q-14 -18 -111 -90q-102 -78 -176 -127q-8 0 -20 16q-10 12 -19 33z" />
+<glyph unicode="&#xfe;" horiz-adv-x="817" d="M117 -365v1815q0 37 18 47q16 8 94 8v-489q78 27 183 26q168 0 254 -98q84 -96 84 -342q0 -158 -25 -274q-25 -115 -61 -181q-35 -61 -89 -104q-43 -35 -90 -49q-39 -12 -82 -12q-117 0 -174 63v-446q-23 -8 -65 -9q-29 0 -37 9q-10 9 -10 36zM229 158q47 -78 144 -78 q29 0 59 10q29 10 66 43q41 37 65.5 84t44.5 150q18 96 19 223q0 203 -54 278q-53 74 -163 74q-102 0 -181 -53v-731z" />
+<glyph unicode="&#xff;" horiz-adv-x="755" d="M2 -334q0 39 21 66q61 -29 124 -29q127 0 187 264l-266 1022q-6 29 8 31q20 4 100 4l154 -602l59 -318q18 141 55 320l138 565q3 28 18 31q20 4 102 4l-270 -1087q-47 -182 -110 -256q-66 -76 -170 -76q-150 0 -150 61zM170 1329q0 33 23 60q20 25 57 24q40 0 61 -24 q20 -23 21 -60q0 -35 -23 -61q-20 -23 -59 -23q-80 0 -80 84zM459 1329q0 33 22 60q23 25 58 24q40 0 61 -24q20 -23 21 -60q0 -35 -23 -61q-20 -23 -59 -23q-80 0 -80 84z" />
+<glyph unicode="&#x131;" horiz-adv-x="348" d="M117 0v969q0 39 20 47q18 8 96 8v-997q0 -18 -16 -23q-20 -4 -100 -4z" />
+<glyph unicode="&#x141;" horiz-adv-x="671" d="M12 721q0 20 17 31l84 26v615q0 31 14 37q10 4 100 4v-617l209 68q18 -57 18.5 -78t-16.5 -29l-211 -69v-603h406v-79q0 -27 -29 -27h-491v670l-84 -27q-17 66 -17 78z" />
+<glyph unicode="&#x142;" horiz-adv-x="346" d="M-2 694q0 18 2 22.5t14 8.5l103 33v692q0 37 18 47q16 8 94 8v-708l105 34l12 -47q4 -20 4 -30q0 -16 -2 -20.5t-14 -8.5l-105 -35v-663q0 -18 -14 -23q-16 -4 -98 -4v651l-103 -33q-4 16 -7 26.5t-5 19.5q-4 20 -4 30z" />
+<glyph unicode="&#x152;" horiz-adv-x="1282" d="M74 725q0 391 94 559q96 170 295 170q178 0 262 -133v84q0 29 27 29h477q0 -78 -2 -88q-4 -16 -21 -17h-383v-493h359q0 -76 -2 -88q-2 -16 -23 -17h-334v-627h404q0 -80 -2 -90q-2 -14 -25 -14h-475v133q-84 -152 -279 -151q-201 0 -288 161q-84 156 -84 582zM199 692 q0 -322 57 -465q55 -137 193 -137q139 0 194 145.5t55 495.5q0 338 -51 479q-49 135 -182 136q-137 0 -203 -152q-63 -148 -63 -502z" />
+<glyph unicode="&#x153;" horiz-adv-x="1314" d="M76 510q0 535 340 534q203 0 270 -170q47 102 125 138q72 33 176 32q258 0 258 -317q0 -162 -20 -252q-180 -37 -490 -37q0 -111 17 -188q14 -68 51 -104.5t69 -45.5q41 -10 95 -10q158 0 254 70q14 -35 14 -105q0 -12 -37 -30q-27 -12 -104 -31q-63 -14 -138 -14 q-113 0 -180 32q-70 33 -108 127q-82 -160 -262 -159q-86 0 -141.5 18t-100.5 72q-45 55 -68 163q-20 103 -20 277zM197 502q0 -164 26 -266q25 -96 66 -127q39 -31 110 -31q215 0 215 438q0 252 -49 338q-51 88 -151 88q-106 0 -161.5 -98t-55.5 -342zM735 532 q272 0 391 29q8 57 9 144q-4 133 -35 184q-33 53 -123 53q-46 0 -80 -12q-39 -14 -74 -51q-37 -41 -61 -125q-23 -83 -27 -222z" />
+<glyph unicode="&#x160;" horiz-adv-x="753" d="M68 88q0 43 32 80q76 -74 230 -74q246 0 245 250q0 80 -32 156q-31 70 -111 155l-221 232q-139 158 -139 291q0 125 92 200q90 76 252 76q131 0 192 -27q66 -29 66 -63q0 -37 -31 -68q-74 55 -219 56q-104 0 -170 -47q-63 -45 -64 -125q0 -94 113 -222l244 -251 q86 -92 115 -168q33 -86 32 -185q0 -170 -86 -272t-270 -102q-125 0 -199 34q-71 35 -71 74zM166 1829q14 33 27 47q18 23 30.5 22.5t61.5 -49.5q63 -63 92 -96l43 -47l80 96q57 66 67 76l27 25q47 -29 47 -56q0 -23 -102 -137q-100 -113 -121 -113t-127 103 q-100 98 -125 129z" />
+<glyph unicode="&#x161;" horiz-adv-x="751" d="M80 68q0 35 24 69q90 -53 224 -53q221 0 221 158q0 113 -115 198l-215 156q-82 57 -108.5 104.5t-26.5 110.5q0 109 88 170q92 63 246 63q80 0 151 -20q63 -18 86 -40.5t23 -41.5q0 -35 -27 -63q-102 66 -223 65q-96 0 -155.5 -35t-59.5 -98q0 -76 100 -143l222 -158 q139 -115 139 -254q0 -135 -88 -205q-90 -72 -248 -71q-113 0 -188 26q-70 25 -70 62zM170 1419q14 33 25 47q16 23 32 23q14 0 62 -47q63 -63 92 -96l43 -50l80 97q43 49 67 73l27 27q47 -29 47 -55q0 -23 -102 -138q-100 -113 -121 -112.5t-127 102.5q-80 78 -125 129z " />
+<glyph unicode="&#x178;" horiz-adv-x="737" d="M12 1415q-6 14 13 17q10 2 114 2l99 -293q43 -115 86 -262q49 -166 53 -193q14 106 139 457l90 270q2 12 21 17q20 4 102 4l-299 -848v-559q0 -18 -14 -23q-16 -4 -99 -4v582zM156 1739q0 33 22 59q23 25 58 25q41 0 61 -22.5t20 -61.5q0 -33 -22 -60q-20 -25 -59 -24 q-80 0 -80 84zM444 1739q0 37 21 59q23 25 59 25q39 0 60 -23q23 -27 22 -61q0 -33 -22 -60q-23 -25 -60 -24q-80 0 -80 84z" />
+<glyph unicode="&#x17d;" horiz-adv-x="802" d="M47 45q0 29 10 55l564 1231h-435q-55 0 -84 -4v78q0 29 29 29h610q12 -16 13 -39q0 -27 -13 -58l-569 -1235h461q78 0 108 13v-88q0 -27 -26 -27h-649q-19 16 -19 45zM195 1829q14 33 26 47q18 23 30.5 22.5t61.5 -49.5q63 -63 93 -96l43 -47l79 96q43 49 70 76l25 25 q47 -29 47 -56q0 -25 -100.5 -137.5t-123.5 -112.5q-20 0 -127 103q-99 98 -124 129z" />
+<glyph unicode="&#x17e;" horiz-adv-x="743" d="M59 57q0 25 13 45l481 824h-248q-166 0 -231 -11q-4 37 -4 56q0 53 36 53h566q12 -12 12 -37q0 -33 -14 -59l-477 -822h237q184 0 248 17q2 -8 2 -53q0 -70 -43 -70h-557q-21 18 -21 57zM139 1419q14 33 25 47q16 23 33 23q14 0 61 -47q63 -63 92 -96l43 -50l80 97 q29 33 70 73l24 27q47 -29 47 -55q0 -23 -102 -138q-100 -113 -121 -112q-18 0 -125 102q-94 90 -127 129z" />
+<glyph unicode="&#x17f;" horiz-adv-x="354" d="M106 2q14 43 15 119v1081q0 166 86 238q88 72 252 71q98 0 167.5 -30.5t69.5 -59.5q0 -43 -28 -78q-86 68 -211 68q-119 0 -172 -57q-51 -53 -52 -195v-1122q0 -33 -14 -43t-51 -10q-44 0 -62 18z" />
+<glyph unicode="&#x192;" horiz-adv-x="974" d="M33 -338q0 35 14 66q63 -25 152 -25q53 0 84 6q35 6 71 27q39 20 58 74q20 57 20 133v979h-278v49q0 10 4 30q4 16 8 19q8 4 14 4h252v139q0 98 21 162q20 68 53 102.5t80 53.5q59 23 88 24q49 4 92 4q86 0 131 -18t45 -45q0 -33 -12 -64q-68 25 -152 25q-52 0 -86 -6 q-33 -6 -71.5 -26.5t-57.5 -74.5q-18 -52 -18 -135v-141h325q0 -59 -4 -84q-3 -18 -24 -18h-297v-975q0 -100 -21 -164q-20 -68 -53 -102.5t-80 -53.5q-59 -23 -88 -24q-49 -4 -92 -4q-80 0 -131 20q-47 18 -47 43z" />
+<glyph unicode="&#x237;" horiz-adv-x="370" d="M-231 -305q0 39 18 63q90 -53 197 -53q94 0 120 55q27 53 27 187v1022q0 39 19 47q16 8 94 8v-1100q0 -156 -53.5 -239.5t-198.5 -83.5q-102 0 -164 28q-59 29 -59 66z" />
+<glyph unicode="&#x2c6;" horiz-adv-x="491" d="M0 1227l227 233q16 4 27 4q25 0 41 -18q199 -199 199 -219q0 -12 -27 -26.5t-57 -14.5q-137 143 -158 176q-150 -174 -174 -174q-51 0 -78 39z" />
+<glyph unicode="&#x2c7;" horiz-adv-x="473" d="M0 1419q14 33 25 47q16 23 32 23q14 0 62 -47q63 -63 92 -96l43 -50l80 97q43 49 67 73l27 27q47 -29 47 -55q0 -23 -102 -138q-100 -113 -121 -112.5t-127 102.5q-80 78 -125 129z" />
+<glyph unicode="&#x2d8;" horiz-adv-x="497" d="M0 1413q0 43 63 62q63 -178 183 -179q49 0 84 27t51 55q2 4 35 74q18 31 49 12q33 -18 35 -51q-72 -225 -256 -225q-102 0 -172 82q-72 84 -72 143z" />
+<glyph unicode="&#x2d9;" horiz-adv-x="131" d="M2 1370q0 94 68 94q63 0 63 -92q-4 -96 -70 -96q-63 0 -61 94z" />
+<glyph unicode="&#x2da;" horiz-adv-x="366" d="M0 1360q0 186 193 186q90 0 135 -41q41 -39 41 -143q0 -186 -191 -186q-88 0 -133 43t-45 141zM88 1356q0 -98 92 -99q102 0 103 105q0 100 -90 100q-53 0 -78 -24q-27 -27 -27 -82z" />
+<glyph unicode="&#x2db;" horiz-adv-x="260" d="M0 -233q0 90 57 167q55 76 127 99q20 12 39 8q27 -6 37 -41q-63 -35 -110.5 -96.5t-47.5 -124.5q0 -90 82 -90q29 0 62 16q12 -25 14 -41q0 -20 -2 -24q-8 -39 -100 -39q-158 0 -158 166z" />
+<glyph unicode="&#x2dc;" horiz-adv-x="581" d="M0 1278q84 139 209 139q45 0 94 -51q49 -53 92 -53q45 0 76 24.5t45 44.5q16 23 23 23q10 0 22 -16q10 -12 19 -33l4 -17q-14 -33 -33 -53q-20 -25 -70 -53q-47 -29 -100 -29q-66 0 -115 56q-47 53 -78 53q-37 0 -61 -23q-27 -23 -43 -47q-16 -23 -25 -22q-32 0 -59 57z " />
+<glyph unicode="&#x2dd;" horiz-adv-x="604" d="M106 1212l205 304q12 23 41 22q12 0 25 -6q12 12 33 12q28 0 49 -18.5t24 -48.5l-229 -297q-10 -16 -31 -17q-18 0 -33 13l-2 -5q-10 -10 -26 -10q-20 0 -37 15q-15 11 -19 36z" />
+<glyph unicode="&#x394;" horiz-adv-x="899" d="M57 0l328 1366q16 74 82 74q39 0 55 -15l338 -1425h-803zM188 106h545l-270 1164h-6z" />
+<glyph unicode="&#x2206;" horiz-adv-x="899" d="M57 0l328 1366q16 74 82 74q39 0 55 -15l338 -1425h-803zM188 106h545l-270 1164h-6z" />
+<glyph unicode="&#x3a9;" horiz-adv-x="942" d="M94 49q0 57 39 57h133q-168 248 -168 666q0 356 95 518q96 164 301 164q193 0 272 -154q78 -150 78 -520q0 -240 -56 -415q-55 -178 -118 -259h168q10 -35 10 -51q0 -55 -43 -55h-273q80 121 140 315q59 197 59 410q0 334 -59 475q-57 137 -191 137q-137 0 -202 -133 q-66 -135 -66 -461q0 -223 57.5 -427.5t132.5 -315.5h-301q-8 22 -8 49z" />
+<glyph unicode="&#x2126;" horiz-adv-x="942" d="M94 49q0 57 39 57h133q-168 248 -168 666q0 356 95 518q96 164 301 164q193 0 272 -154q78 -150 78 -520q0 -240 -56 -415q-55 -178 -118 -259h168q10 -35 10 -51q0 -55 -43 -55h-273q80 121 140 315q59 197 59 410q0 334 -59 475q-57 137 -191 137q-137 0 -202 -133 q-66 -135 -66 -461q0 -223 57.5 -427.5t132.5 -315.5h-301q-8 22 -8 49z" />
+<glyph unicode="&#x3c0;" horiz-adv-x="903" d="M70 963q0 61 41 61h710q10 -27 10 -53q0 -55 -43 -56h-81v-882q0 -41 -60 -41q-31 0 -53 8v915h-295v-882q0 -41 -59 -41q-23 0 -54 8v915h-106q-10 25 -10 48z" />
+<glyph unicode="&#x2000;" horiz-adv-x="976" />
+<glyph unicode="&#x2001;" horiz-adv-x="1955" />
+<glyph unicode="&#x2002;" horiz-adv-x="976" />
+<glyph unicode="&#x2003;" horiz-adv-x="1955" />
+<glyph unicode="&#x2004;" horiz-adv-x="651" />
+<glyph unicode="&#x2005;" horiz-adv-x="487" />
+<glyph unicode="&#x2006;" horiz-adv-x="325" />
+<glyph unicode="&#x2007;" horiz-adv-x="325" />
+<glyph unicode="&#x2008;" horiz-adv-x="243" />
+<glyph unicode="&#x2009;" horiz-adv-x="389" />
+<glyph unicode="&#x200a;" horiz-adv-x="106" />
+<glyph unicode="&#x2010;" horiz-adv-x="591" d="M88 526v49q0 20 2 31q4 16 8 19q8 4 17 4h391q0 -53 -4 -82q-2 -20 -25 -21h-389z" />
+<glyph unicode="&#x2011;" horiz-adv-x="591" d="M88 526v49q0 20 2 31q4 16 8 19q8 4 17 4h391q0 -53 -4 -82q-2 -20 -25 -21h-389z" />
+<glyph unicode="&#x2012;" horiz-adv-x="591" d="M88 526v49q0 20 2 31q4 16 8 19q8 4 17 4h391q0 -53 -4 -82q-2 -20 -25 -21h-389z" />
+<glyph unicode="&#x2013;" horiz-adv-x="890" d="M88 526v49q0 20 2 31q4 16 8 19q8 4 17 4h690q0 -53 -4 -82q-2 -20 -25 -21h-688z" />
+<glyph unicode="&#x2014;" horiz-adv-x="1431" d="M12 526v49q0 20 2 31q4 16 9 19q8 4 16 4h1382q0 -53 -4 -82q-2 -20 -24 -21h-1381z" />
+<glyph unicode="&#x2018;" horiz-adv-x="323" d="M76 1284q0 90 49 213t76 123q41 0 47 -37q-45 -88 -47 -231q41 -25 41 -82q0 -33 -23 -60q-23 -25 -57 -24q-86 0 -86 98z" />
+<glyph unicode="&#x2019;" horiz-adv-x="323" d="M78 1212q45 92 47 232q-41 25 -41 82q0 35 22 61q20 23 60 23q84 0 84 -99q0 -90 -49 -212.5t-76 -122.5q-39 -1 -47 36z" />
+<glyph unicode="&#x201a;" horiz-adv-x="319" d="M78 -193q45 92 47 232q-41 25 -41 82q0 35 22 61q20 23 60 23q84 0 84 -99q0 -90 -49 -212.5t-76 -122.5q-39 -1 -47 36z" />
+<glyph unicode="&#x201c;" horiz-adv-x="608" d="M76 1284q0 90 49 213t76 123q41 0 47 -37q-45 -88 -47 -231q41 -25 41 -82q0 -33 -23 -60q-23 -25 -57 -24q-86 0 -86 98zM360 1284q0 96 48 213q49 123 77 123q39 0 47 -37q-45 -88 -47 -231q39 -25 39 -82q0 -33 -22 -60q-23 -25 -58 -24q-84 0 -84 98z" />
+<glyph unicode="&#x201d;" horiz-adv-x="608" d="M78 1212q45 92 47 232q-41 25 -41 82q0 35 22 61q20 23 60 23q84 0 84 -99q0 -90 -49 -212.5t-76 -122.5q-39 -1 -47 36zM360 1212q43 80 50 232q-41 25 -41 82q0 33 22 59q23 25 58 25q84 0 83 -99q0 -90 -49 -212.5t-73 -122.5q-41 -1 -50 36z" />
+<glyph unicode="&#x201e;" horiz-adv-x="604" d="M78 -193q45 92 47 232q-41 25 -41 82q0 35 22 61q20 23 60 23q84 0 84 -99q0 -90 -49 -212.5t-76 -122.5q-39 -1 -47 36zM360 -193q43 82 50 232q-41 25 -41 82q0 35 22 61q20 23 58 23q84 0 83 -99q0 -90 -49 -212.5t-73 -122.5q-41 -1 -50 36z" />
+<glyph unicode="&#x2020;" horiz-adv-x="880" d="M76 985q0 37 26 64l260 -31q20 -6 24.5 -28.5t-9.5 -37.5l-248 -28q-23 -4 -39 16q-14 16 -14 45zM381 16l29 889q4 16 14 23q16 8 27 6q15 -3 24 -12l29 -879q4 -25 -17 -41q-16 -14 -45 -14q-43 -1 -61 28zM381 1395q-4 25 16.5 39t48.5 14q39 0 60 -27l-29 -366 q-6 -23 -28.5 -27t-36.5 10zM500 976.5q-4 24.5 8 39.5l246 31q25 8 39 -12.5t14 -51.5q0 -41 -27 -61l-258 28q-18 2 -22 26.5z" />
+<glyph unicode="&#x2021;" horiz-adv-x="880" d="M76 449q0 39 26 61l258 -29q18 -6 22.5 -28.5t-7.5 -36.5l-246 -31q-25 -8 -39 12.5t-14 51.5zM76 985q0 37 26 64l260 -31q20 -6 24.5 -28.5t-9.5 -37.5l-248 -28q-23 -4 -39 16q-14 16 -14 45zM377 20l31 357q4 23 26.5 27t36.5 -11l31 -344q2 -27 -14.5 -41t-51.5 -14 q-36 -1 -59 26zM381 1395q-4 25 16.5 39t48.5 14q39 0 60 -27l-29 -366q-6 -23 -28.5 -27t-36.5 10zM403 504v393q0 29 23 35q27 6 55 -8v-392q0 -29 -22 -34q-22 -6 -56 6zM494 440q-3 22 12 37l248 29q25 4 39 -14q14 -16 14 -48q0 -39 -27 -63l-258 31q-24 5 -28 28z M500 976.5q-4 24.5 8 39.5l246 31q25 8 39 -12.5t14 -51.5q0 -41 -27 -61l-258 28q-18 2 -22 26.5z" />
+<glyph unicode="&#x2022;" horiz-adv-x="436" d="M104 578q0 55 33 94t90 39q59 0 95 -37q35 -39 34 -96q0 -53 -34 -95q-33 -39 -95 -39q-123 1 -123 134z" />
+<glyph unicode="&#x2026;" horiz-adv-x="997" d="M90 82q0 41 23 65q25 27 63 27q90 0 90 -92q0 -37 -24 -66q-25 -27 -66 -26q-86 0 -86 92zM412 82q0 37 24 65q25 27 62 27q90 0 90 -92q0 -37 -25 -66q-25 -27 -65 -26q-86 0 -86 92zM733 82q0 41 23 65q25 27 63 27q90 0 90 -92q0 -37 -24 -66q-25 -27 -66 -26 q-86 0 -86 92z" />
+<glyph unicode="&#x202f;" horiz-adv-x="389" />
+<glyph unicode="&#x2030;" horiz-adv-x="2050" d="M125 1075q0 377 289 377q143 0 207 -82q66 -84 65 -293q0 -379 -283 -379q-76 0 -118 15q-49 16 -86 53t-55.5 114.5t-18.5 194.5zM229 25l865 1427q66 -18 65 -51q0 -4 -215 -361l-430 -708l-215 -352q-70 14 -70 45zM233 1067q0 -164 39 -221.5t129 -57.5 q178 0 179 289q0 166 -39 223q-41 59 -127 60q-181 0 -181 -293zM748 360q0 377 288 377q141 0 207 -84t66 -293q0 -379 -281 -378q-145 0 -213 75q-67 78 -67 303zM856 352q0 -164 41 -223q39 -57 127 -57q180 0 180 288q0 160 -41 224q-41 61 -125 61q-182 0 -182 -293z M1364 360q0 377 291 377q141 0 206.5 -84t65.5 -293q0 -379 -282 -378q-76 0 -119 14q-49 16 -86 53q-39 39 -58 115q-18 76 -18 196zM1473 352q0 -162 40.5 -221t128.5 -59q178 0 179 288q0 164 -39 224q-41 61 -127 61q-182 0 -182 -293z" />
+<glyph unicode="&#x2039;" horiz-adv-x="522" d="M57 512q0 53 305 512q18 0 35 -14q23 -18 27 -29l6 -14q0 -23 -65 -138q-66 -117 -134 -217l-65 -100q272 -395 272 -442q-27 -70 -65 -70q-316 453 -316 512z" />
+<glyph unicode="&#x203a;" horiz-adv-x="522" d="M88 67.5q0 22.5 68 133.5q37 61 137 211l67 100q-266 397 -266 455q0 39 70 57q303 -457 303 -512q0 -23 -78 -154q-68 -113 -158 -241l-77 -117l-19 6q-12 4 -29 21q-18 18 -18 40.5z" />
+<glyph unicode="&#x2044;" horiz-adv-x="399" d="M-250 27l817 1400q8 27 37 27q43 0 76 -43l-819 -1411q-8 -18 -33 -18q-51 0 -78 45z" />
+<glyph unicode="&#x205f;" horiz-adv-x="487" />
+<glyph unicode="&#x2074;" horiz-adv-x="837" d="M106 797q0 27 15 63q41 127 147 293q111 172 205 262q37 39 92 39q10 0 47 -6v-596h144q10 -27 10 -55q0 -53 -35 -54h-119v-122q0 -39 -61 -39q-20 0 -45 6v155h-383q-17 21 -17 54zM217 846h291l4 467q-86 -78 -168 -207q-90 -139 -127 -260z" />
+<glyph unicode="&#x20ac;" d="M45 430q0 57 8 74q10 20 39 20h135v29q0 94 6 170h-188q0 57 8 74q10 20 39 20h152q23 135 59 219q39 86 96 131q53 41 107 58q55 16 114.5 16t108.5 -16.5t66 -32.5q20 -20 20 -31q0 -53 -22 -76q-10 8 -60 31q-43 18 -90 19q-41 0 -82 -11q-37 -8 -78 -40.5t-71 -98.5 q-33 -72 -47 -168h333q0 -53 -10 -73.5t-37 -20.5h-299q-6 -76 -6 -170v-29h277q0 -59 -9 -75q-8 -18 -39 -19h-225q10 -113 30.5 -182.5t59.5 -104.5q37 -33 72 -43q37 -10 86 -10q125 0 199 74q18 -37 18 -76q0 -31 -71.5 -69.5t-163.5 -38.5q-72 0 -127.5 16t-102.5 57 q-49 43 -80 140q-29 92 -39 237h-186z" />
+<glyph unicode="&#x2122;" horiz-adv-x="1083" d="M70 1368v45q0 16 20 21h414v-45q0 -20 -19 -21h-155v-565q0 -12 -11 -17q-6 -2 -59 -2v584h-190zM553 784v629q0 20 20 21h43l103 -285l49 -125l41 123l98 266q6 20 21 21h49v-629q0 -12 -10 -17q-12 -4 -60 -4l2 234q0 35 6 237l-22 -65q-6 -20 -12.5 -35.5t-10.5 -26.5 q-2 -6 -4 -13t-4 -11l-2 -4l-67 -176q-4 -10 -11 -11h-43l-71 187l-56 151q8 -182 9 -235l2 -211q0 -14 -9 -17q-12 -4 -61 -4z" />
+<glyph unicode="&#x2202;" horiz-adv-x="892" d="M94 526q0 252 92 383q92 133 258 133q139 0 226 -92q-77 304 -357 516q23 55 78 56q27 0 45 -19q197 -151 289 -368q94 -223 94 -543q0 -135 -12 -234q-12 -90 -51 -190q-35 -90 -111 -139q-74 -49 -182 -49q-188 0 -279 129q-90 130 -90 417zM207 510q0 -432 254 -432 q78 0 131 41q47 37 74 121q23 74 32 159q8 72 9 199q0 111 -11 197q-86 143 -227 143q-127 0 -194.5 -112.5t-67.5 -315.5z" />
+<glyph unicode="&#x220f;" horiz-adv-x="903" d="M70 1372q0 61 41 62h710q10 -27 10 -54q0 -55 -43 -55h-81v-1679q0 -41 -60 -41q-20 0 -53 8v1712h-295v-1679q0 -41 -59 -41q-23 0 -54 8v1712h-106q-10 24 -10 47z" />
+<glyph unicode="&#x2211;" horiz-adv-x="829" d="M119 -389l334 821l-332 1002h555q6 -31 6 -43q0 -63 -39 -64h-360l286 -903l-293 -707h410q6 -25 6 -49q0 -57 -39 -57h-534z" />
+<glyph unicode="&#x2212;" d="M86 526v49q0 20 2 31q4 16 8 19q8 4 17 4h690q0 -53 -4 -82q-2 -20 -25 -21h-688z" />
+<glyph unicode="&#x221a;" horiz-adv-x="952" d="M113 453q20 27 65 26q43 0 49 -30l162 -605l209 1590h305q8 -23 8 -54q0 -53 -39 -53h-174l-225 -1665q-8 -57 -76 -57q-27 0 -61 10z" />
+<glyph unicode="&#x221e;" horiz-adv-x="1273" d="M106 547q0 121 62 207q59 84 211 84q104 0 162 -50q59 -51 108 -135q55 90 111 135q61 49 153 50q119 0 187 -76q70 -80 69 -215q0 -291 -247 -301q-27 -2 -76 8q-141 29 -215 186q-119 -184 -262 -184q-127 0 -195 82q-68 83 -68 209zM217 547q0 -78 41 -131.5 t117 -53.5q68 0 119 48q47 45 94 135l-2 8q-25 72 -70 119q-45 49 -106 51q-53 4 -91 -12q-102 -37 -102 -164zM692 543q78 -188 199 -189q77 0 123 49q45 47 45 144q0 137 -105 174q-23 8 -63 4q-31 0 -60 -12q-27 -12 -38 -25l-33 -39q-5 -6 -68 -106z" />
+<glyph unicode="&#x222b;" horiz-adv-x="974" d="M33 -338q0 35 14 66q63 -25 152 -25q53 0 84 6q35 6 71 27q39 20 58 74q20 57 20 133v1220q0 98 21 162q20 68 53 102.5t80 53.5q59 23 88 24q49 4 92 4q86 0 131 -18t45 -45q0 -33 -12 -64q-68 25 -152 25q-52 0 -86 -6q-33 -6 -71.5 -26.5t-57.5 -74.5 q-18 -52 -18 -135v-1218q0 -100 -21 -164q-20 -68 -53 -102.5t-80 -53.5q-59 -23 -88 -24q-49 -4 -92 -4q-80 0 -131 20q-47 18 -47 43z" />
+<glyph unicode="&#x2248;" horiz-adv-x="817" d="M31 393q37 49 94 84q66 39 141 39q71 0 148 -49q78 -49 139 -49q84 0 182 80q18 10 35 -6q14 -14 21 -48q-90 -133 -246 -133q-84 0 -156 51.5t-123 51.5q-90 0 -160 -82q-27 -18 -49 4q-24 24 -26 57zM31 657q96 127 241 127q68 0 146 -51q74 -49 135 -49q96 0 160 82 q16 16 35 10q20 -6 28 -24q6 -31 -2 -62q-80 -111 -225 -110q-78 0 -156 49q-77 49 -129 49q-31 0 -65 -10q-27 -8 -47 -21q-14 -8 -41 -29q-6 -6 -13.5 -10l-11.5 -6l-4 -2q-14 -8 -31 8q-18 18 -20 49z" />
+<glyph unicode="&#x2260;" horiz-adv-x="817" d="M49 281v49q0 20 2 30q2 14 10.5 18.5t14.5 4.5h221l94 254h-342v49q0 18 2 29q4 16 10 20q8 4 15 4h352l100 271q10 29 39 28q33 0 74 -39l-96 -260h221q0 -57 -4 -82q-4 -20 -25 -20h-229l-92 -254h350q0 -57 -4 -82q-4 -20 -25 -20h-360l-98 -271q-10 -23 -39 -22 q-41 0 -74 39l92 254h-209z" />
+<glyph unicode="&#x2264;" horiz-adv-x="851" d="M104 578q0 43 39 63l549 270q37 -37 41 -75q0 -25 -22 -37l-459 -226l487 -211q-4 -41 -18 -65q-16 -25 -33 -25q-20 0 -49 15l-514 225q-21 27 -21 66zM119 0q0 57 4 82q4 20 24 20h603q0 -59 -5 -84q-3 -18 -24 -18h-602z" />
+<glyph unicode="&#x2265;" horiz-adv-x="841" d="M104 815q2 39 19 64q16 27 35 26q10 0 47 -14l514 -225q20 -27 20 -68q0 -43 -39 -63l-550 -271q-37 39 -37 76q0 29 20 37l459 225zM119 0q0 57 4 82q4 20 24 20h586q0 -59 -4 -84q-3 -18 -24 -18h-586z" />
+<glyph unicode="&#x25ca;" horiz-adv-x="958" d="M74 717l409 727l410 -727l-410 -727zM197 717l286 -504l285 504l-285 506z" />
+<glyph unicode="&#xe000;" horiz-adv-x="1025" d="M0 1025h1025v-1025h-1025v1025z" />
+<glyph unicode="&#xfb00;" horiz-adv-x="940" d="M31 926q0 63 4 84q2 14 26 14h125v152q0 113 33 180t90 100q51 29 101 39q47 10 96 10q113 0 213 -65q80 74 237 73q176 0 177 -71q0 -25 -13 -56q-63 25 -151 25q-53 0 -84 -8q-47 -12 -74 -31q-41 -27 -57 -78q-18 -55 -19 -137v-133h213q0 -63 -4 -84q-2 -14 -22 -14 h-187v-899q0 -27 -28 -27h-84v926h-324v-899q0 -27 -29 -27h-84v926h-155zM299 1024h324v129q0 125 36 207q-63 45 -161 45q-31 0 -60 -6q-23 -4 -61 -25q-35 -16 -58 -69q-20 -47 -20 -125v-156z" />
+<glyph unicode="&#xfb03;" horiz-adv-x="1257" d="M29 926q0 63 4 84q2 14 28 14h123v152q0 113 33 180q33 70 88 100q51 29 101 39q47 10 98 10q113 0 213 -65q80 74 252 73q207 0 207 -73q0 -37 -13 -68q-80 39 -192 39q-52 0 -86 -6q-33 -6 -74 -33q-39 -27 -57 -80q-18 -55 -19 -141v-127h172q0 -63 -4 -84 q-2 -14 -24 -14h-144v-899q0 -27 -28 -27h-84v926h-326v-899q0 -27 -27 -27h-86v926h-155zM297 1024h326v129q0 129 36 207q-63 45 -161 45q-34 0 -62 -6q-23 -4 -61 -25q-35 -16 -58 -69q-20 -47 -20 -125v-156zM1028 0v969q0 39 21 47q18 8 92 8v-997q0 -18 -13 -23 q-16 -4 -100 -4z" />
+<glyph unicode="&#xfb04;" horiz-adv-x="1280" d="M29 926q0 63 4 84q2 14 28 14h123v152q0 113 33 180q33 70 88 100q51 29 101 39q47 10 98 10q109 0 207 -61q70 70 217 69q138 0 233 -55l-2 -2h2v-1429q0 -18 -12 -23q-16 -4 -98 -4v1391q-55 18 -117 18q-53 0 -72 -4q-31 -6 -61 -27q-33 -20 -49.5 -75.5t-16.5 -133.5 v-145h172q0 -63 -4 -84q-2 -14 -24 -14h-144v-899q0 -27 -28 -27h-84v926h-326v-899q0 -27 -27 -27h-86v926h-155zM297 1024h326v129q0 125 34 207q-63 45 -159 45q-34 0 -62 -6q-23 -4 -61 -25q-35 -16 -58 -69q-20 -47 -20 -125v-156z" />
+<glyph horiz-adv-x="1351" d="M55 924q0 63 4 84q4 16 23 16h125v324q0 33 18.5 39t93.5 6v-369h248q0 -63 -4 -84q-4 -16 -20 -16h-224v-629q0 -59 5 -113q2 -37 26 -71q23 -31 64 -31q66 0 133 33q8 -31 8 -60q0 -37 -47 -55q-49 -18 -119 -18q-59 0 -98 22q-37 23 -55 70q-16 43 -23 96 q-6 49 -6 129v627h-152zM670 57q0 25 12 45l481 824h-248q-166 0 -231 -11q-4 37 -4 56q0 53 37 53h565q12 -12 12 -37q0 -33 -14 -59l-477 -822h237q184 0 248 17q2 -8 2 -53q0 -70 -43 -70h-557q-20 18 -20 57z" />
+<glyph horiz-adv-x="835" d="M92 479q0 158 35 279q33 115 98 176q61 59 131 84q74 27 150 26q133 0 217 -73v-1069q0 -160 -92 -236q-90 -76 -250 -76q-115 0 -188.5 31t-73.5 70q0 37 24 67q111 -61 242 -61q90 0 157.5 49t67.5 172v160q-35 -41 -96 -68q-68 -29 -137 -28q-137 0 -211 108 q-74 106 -74 389zM213 479q0 -395 195 -395q145 0 204 141v676q-43 47 -135 47q-45 0 -92 -20q-39 -16 -84 -68q-41 -47 -65 -145q-23 -91 -23 -236z" />
+<glyph horiz-adv-x="503" d="M27 926q0 63 4 84q2 14 28 14h123v248q0 240 221 239q135 0 136 -59q0 -33 -13 -57q-37 18 -104 18q-61 0 -94 -30.5t-33 -122.5v-236h213q0 -63 -4 -84q-2 -14 -25 -14h-184v-899q0 -27 -29 -27h-84v926h-155z" />
+<glyph horiz-adv-x="921" d="M94 436q0 125 64 203q66 82 166 111q-76 8 -137.5 67.5t-61.5 175.5q0 141 92 232q90 88 248 100v197q0 29 22 39q18 8 80 8v-246q86 -8 158 -43q70 -35 100 -63q29 -29 29 -52q0 -41 -41 -94q-102 145 -293 146q-127 0 -201 -60q-78 -61 -77 -170q0 -172 213 -172 q68 0 135 10l-17 -110q-178 -6 -268 -82t-90 -189q0 -94 67.5 -155.5t200.5 -61.5q215 0 326 162q47 -47 47 -90q0 -14 -18 -39q-25 -33 -50 -55q-35 -33 -96 -55q-70 -27 -143 -35v-187q0 -29 -23 -39q-25 -10 -80 -10v234q-352 12 -352 323z" />
+<glyph horiz-adv-x="1351" d="M88 815q0 304 86 449t287 145q100 0 170 -68q72 -68 71 -233q0 -47 -12 -119q-12 -70 -31 -76l259 33v205q0 61 24 80q27 20 90 20v-290l234 34q0 -66 -9 -84q-10 -23 -40 -26q-104 -15 -185 -25v-553q0 -135 19 -180q18 -47 79 -47q92 0 144 22q8 -27 8 -63 q0 -55 -178 -55q-104 0 -146 61q-41 63 -40 262v541q-455 -53 -713 -53q0 -119 16 -205q14 -78 53 -113q35 -33 68 -41q31 -8 90 -8q158 0 248 154q33 -39 33 -86q0 -27 -31 -64q-33 -39 -100 -72q-74 -35 -162 -34q-78 0 -139 20q-57 18 -103 70q-49 55 -69.5 149 t-20.5 250zM205 885q66 0 151.5 6t141.5 12l53 6q27 6 35 70q10 72 10 104q0 129 -37 181q-37 53 -106 53q-94 0 -166 -96q-74 -98 -82 -336z" />
+<glyph horiz-adv-x="987" d="M106 2q14 43 15 119v1083q0 166 86 234q88 70 258 69q59 0 119 -16q57 -16 84 -37q29 -23 28 -35q0 -27 -28 -80q-84 66 -211 66q-119 0 -172 -59q-51 -57 -52 -207v-115h676q16 -33 -14 -98l-270 -410q133 -18 227 -102q92 -82 92 -232q0 -203 -104 -332 q-102 -127 -295 -126q-78 0 -133 16q-51 14 -72 35q-18 18 -18 37q0 41 26 79q84 -59 191 -59q132 0 209 92q76 90 75 250q0 186 -166 242q-74 27 -202 28l315 482h-537v-860q0 -47 -14 -64q-14 -18 -51 -18q-44 0 -62 18z" />
+<glyph horiz-adv-x="735" d="M51 926q0 90 10 96q2 2 11 2h575q18 -34 -12 -98l-273 -410q137 -18 228 -100q92 -83 92 -234q0 -203 -104 -332q-102 -127 -293 -126q-80 0 -135 18q-59 20 -74 35q-16 16 -17 35q0 45 27 79q90 -59 190 -59q132 0 209 92q78 94 78 250q0 182 -166 242q-74 25 -202 28 l313 482h-457z" />
+<glyph horiz-adv-x="1058" d="M6 924q0 63 4 84q4 16 23 16h168v324q0 33 18.5 39t91.5 6v-369h662q20 -31 -12 -98l-271 -410q133 -18 228 -102q90 -82 90 -232q0 -207 -101 -332q-102 -127 -289 -126q-70 0 -124 16q-51 14 -68 31q-18 18 -18 32q0 33 26 82q84 -53 180 -53q127 0 201 92t74 250 q0 182 -166 242q-74 27 -203 28l314 480h-523v-883q0 -31 -14 -37q-10 -4 -96 -4v924h-195z" />
+<glyph horiz-adv-x="1675" d="M100 717q0 338 201 536q205 201 537 201q330 0 534 -201q203 -201 203 -536.5t-203 -536.5q-205 -201 -534 -200q-332 0 -537 200q-201 199 -201 537zM371 637q0 -37 43 -37h10q2 0 6 1l4 1q8 0 10 -2l119 -192v-70q0 -16 -12 -16q-6 0 -14 4q-4 2 -13 2q-37 0 -37 -39 q0 -35 43 -35q8 0 37 4t35 4q4 0 37 -4t37 -4q45 0 45 37t-33 37q-14 0 -20 -2q-4 -2 -7 -3q-2 -1 -4 -1q-12 0 -12 16v74l119 186q2 6 8 6q4 0 8 -1t6 -1h13q27 0 32 19q16 -18 31 -19h17q4 0 7 1l3 1q12 0 12 -26v-232q0 -25 -12 -24q-6 0 -12.5 2t-14.5 2q-35 0 -35 -35 q0 -37 41 -37q2 0 7.5 1t12.5 2t15 1q37 4 41 4q8 0 37 -4t31 -4q43 0 43 35q0 37 -35 37q-8 0 -14.5 -2t-12.5 -2q-12 0 -12 26v199l139 -252q27 -49 64 -49q55 0 55 90v242q0 25 14 24h11q39 0 39 35q0 39 -41 39q-18 0 -33 -2q-29 -4 -33 -4q-6 0 -35 4q-14 2 -31 2 q-23 0 -34 -12q-10 -10 -11 -27q0 -35 37 -35h17q23 0 22 -24v-201l-143 262l-4 12q-2 25 -39 25q-14 0 -24.5 -2t-29 -2t-30.5 2t-23 2q-29 0 -34 -23q-10 23 -35 23q-18 0 -35 -2q-33 -4 -39 -4t-35 4q-14 2 -31 2q-39 0 -38 -39q0 -37 38 -37q6 0 11 2q-2 -4 -13.5 -23.5 t-19.5 -35.5q-27 -45 -29 -54l-69 113h4q45 0 45 35q0 39 -41 39q-8 0 -33 -4t-31 -4q-2 0 -34.5 4t-36.5 4q-41 0 -41 -39zM461 795q0 -41 43 -41q25 0 45 6q14 4 34.5 4t32.5 -4q18 -6 35 -6q43 0 43 41q0 35 -35 34l-5 -1q-5 -1 -9 -1h-14q-10 0 -10 25v229q0 25 10 25 h14q4 0 9 -1l5 -1q8 0 23 10q12 9 12 25q0 37 -43 37q-18 0 -33 -2l-36 -5q-10 0 -39 5q-14 2 -35 2q-47 0 -47 -37q0 -12 10 -23q12 -12 27 -12q2 0 6 1t8 1h14q10 0 11 -25v-229q0 -25 -11 -25h-14q-4 0 -8 1t-6 1q-37 1 -37 -34zM731 1057q0 -63 39 -111q47 -59 111 -108 q76 -59 112 -109q37 49 113 109q68 53 111 106q41 51 40.5 112.5t-36.5 94.5q-39 35 -91 35q-88 0 -137 -90q-49 90 -137 90q-49 0 -88 -35q-37 -33 -37 -94z" />
+<glyph horiz-adv-x="350" />
+</font>
+</defs></svg> 
\ No newline at end of file
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/fonts/kreon-regular-webfont.eot
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/fonts/kreon-regular-webfont.eot
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/fonts/kreon-regular-webfont.eot	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/fonts/kreon-regular-webfont.eot	(revision 47450)

Property changes on: modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/fonts/kreon-regular-webfont.eot
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/fonts/kreon-regular-webfont.svg
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/fonts/kreon-regular-webfont.svg	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/fonts/kreon-regular-webfont.svg	(revision 47450)
@@ -0,0 +1,234 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" >
+<svg xmlns="http://www.w3.org/2000/svg">
+<metadata></metadata>
+<defs>
+<font id="KreonRegular" horiz-adv-x="1333" >
+<font-face units-per-em="2048" ascent="1638" descent="-410" />
+<missing-glyph horiz-adv-x="491" />
+<glyph horiz-adv-x="0" />
+<glyph horiz-adv-x="2048" />
+<glyph unicode=" "  horiz-adv-x="491" />
+<glyph unicode="&#x09;" horiz-adv-x="491" />
+<glyph unicode="&#xa0;" horiz-adv-x="491" />
+<glyph unicode="!" horiz-adv-x="548" d="M135 1386l240 27l43 -78l-76 -850h-141zM152 112.5q0 51.5 34.5 86t85 34.5t87 -35.5t36.5 -85t-36.5 -85t-87 -35.5t-85 34.5t-34.5 86z" />
+<glyph unicode="&#x22;" horiz-adv-x="661" d="M74 1411l190 21l35 -62l-59 -414h-113zM362 1411l191 21l35 -62l-60 -414h-112z" />
+<glyph unicode="#" horiz-adv-x="1323" d="M59 602l27 47h281l86 234h-283l-27 106l27 47h338l141 379h135l23 -29l-131 -350h207l137 379h135l23 -29l-127 -350h192q12 0 12 -16v-137h-262l-84 -234h250q12 0 12 -16v-137h-319l-143 -398h-136l-22 27l135 371h-209l-145 -398h-135l-23 27l135 371h-223zM535 649 h206l84 234h-204z" />
+<glyph unicode="$" horiz-adv-x="987" d="M68 1028q0 92 25.5 151.5t70.5 104.5q90 90 242 121v385h184v-377q137 -12 272 -59l29 -353h-141l-91 222q-61 20 -154 20t-157.5 -43t-64.5 -131q0 -102 102 -168q45 -31 100.5 -54.5t128 -56t136 -77.5t102.5 -95q74 -92 74 -200.5t-27 -175t-72 -115.5 q-90 -92 -237 -123v-397h-184v387q-182 8 -318 76v346h148l36 -219q88 -33 177 -33q176 0 241 115q23 39 23 101t-38 112.5t-125 93.5t-172 77.5t-153.5 83t-112.5 119t-44 162.5z" />
+<glyph unicode="%" horiz-adv-x="1472" d="M63 1059q0 61 17.5 123.5t52.5 113.5q80 117 219 117t217 -106q72 -100 72 -246q0 -154 -80 -256q-80 -104 -209 -105q-143 0 -221 119q-68 101 -68 240zM180 27l907 1388h173l8 -29l-897 -1386h-178zM215 1058q0 -93 38 -157.5t99 -64.5t98 65.5t37 158.5t-35.5 156.5 t-100 63.5t-100.5 -64.5t-36 -157.5zM836 348q0 139 69 238q80 117 217 116q139 0 217 -108q72 -96 72 -246q0 -152 -78 -254q-80 -102 -211 -102q-139 0 -219 117q-67 100 -67 239zM989 346q0 -94 37 -157.5t98.5 -63.5t97 64.5t35.5 158.5t-35.5 157.5t-100 63.5 t-98.5 -64.5t-34 -158.5z" />
+<glyph unicode="&#x26;" horiz-adv-x="1376" d="M66 412q0 217 258 422q-111 188 -111 319q0 150 94 244q100 100 244.5 100t226.5 -81t82 -206q0 -186 -262 -407q88 -121 182 -230l107 -127q53 111 78 226h-93l-32 143h319l23 -29q-45 -268 -150 -456l-16 -27q123 -127 158 -137q8 2 25.5 15.5t37.5 27.5l59 39l86 -189 q-78 -66 -209 -65.5t-290 137.5q-150 -139 -365 -139q-197 0 -325 123q-127 119 -127 297zM279 402.5q0 -97.5 68.5 -166t187.5 -68.5t217 94q-170 199 -336 428q-63 -61 -100 -125.5t-37 -162zM408 1194q0 -98 98 -258q160 145 160 274q0 66 -36 99.5t-96.5 33.5t-93 -46 t-32.5 -103z" />
+<glyph unicode="'" horiz-adv-x="372" d="M74 1391l190 20l35 -61l-59 -414h-113z" />
+<glyph unicode="(" horiz-adv-x="565" d="M104 600q0 160 23 302t55 259q57 201 146 359h172q-133 -266 -183 -633q-18 -137 -18 -293t21.5 -296t52.5 -257q43 -166 127 -373h-172l-15 31q-129 260 -186 604q-23 137 -23 297z" />
+<glyph unicode=")" horiz-adv-x="565" d="M66 -332q84 207 120 348q80 307 80 580q0 522 -200 924h172q223 -418 223 -926q0 -266 -76 -543q-47 -168 -133 -352l-14 -31h-172z" />
+<glyph unicode="*" horiz-adv-x="741" d="M72 1038l12 47l231 86l-243 78l32 115l50 12l188 -153l-47 247l115 25l32 -35l-41 -237l187 170l82 -88l-13 -48l-231 -86l244 -77l-33 -115l-49 -12l-189 153l47 -248l-114 -24l-33 35l41 237l-186 -170zM336 1169l18 -26h35l14 28l-16 29h-37z" />
+<glyph unicode="+" horiz-adv-x="821" d="M70 645v125l26 29h242v262h154v-262h256v-154h-256v-307h-127l-27 24v283h-268z" />
+<glyph unicode="," horiz-adv-x="438" d="M45 -211l102 209l-53 235l215 39q23 -90 23 -156.5t-17.5 -130t-44.5 -116.5q-49 -100 -118 -170l-107 61v29z" />
+<glyph unicode="-" horiz-adv-x="817" d="M119 500v125l24 28h543q12 0 12 -16v-137h-579z" />
+<glyph unicode="." horiz-adv-x="425" d="M92 112.5q0 51.5 35 86t85 34.5t87 -35.5t37 -85t-36 -85t-87 -35.5t-86 34.5t-35 86z" />
+<glyph unicode="/" horiz-adv-x="944" d="M45 27l672 1386h184l-2 -29l-672 -1384h-176z" />
+<glyph unicode="0" horiz-adv-x="1193" d="M94 702q0 483 260 650q96 61 242 61q266 0 395 -221q109 -184 109 -490q0 -481 -262 -649q-96 -61 -242 -61q-266 0 -395 223q-107 182 -107 487zM309 702q0 -371 158 -493q53 -41 129 -41q145 0 221 156q68 139 68 378q0 373 -158 494q-55 41 -132 41t-131 -42t-87 -114 q-68 -141 -68 -379z" />
+<glyph unicode="1" horiz-adv-x="741" d="M51 1286l428 133l41 -18v-1239l191 -25v-137h-605l-22 135l231 35v1016l-233 -47z" />
+<glyph unicode="2" horiz-adv-x="1060" d="M45 1135q72 131 189.5 204.5t265.5 73.5q180 0 295 -86q131 -96 131 -283q0 -190 -226 -477q-119 -154 -212 -250t-132 -141h412l80 219h135l-43 -395h-834l-24 141q41 45 102.5 109.5t130 141.5t138 161t125.5 168q125 182 133 303v14q0 98 -68 154q-59 45 -131 45 q-102 0 -182 -53l-56 -172z" />
+<glyph unicode="3" horiz-adv-x="1071" d="M55 1139q72 131 196 202.5t296 71.5q162 0 280 -90q129 -100 129 -272q0 -117 -62.5 -202t-166.5 -122q92 -31 160 -106q86 -96 86 -212t-42 -193t-108 -126q-131 -98 -301 -98q-287 0 -456 139l108 164q150 -127 320 -127q135 0 199.5 63.5t64.5 140.5t-28 122t-75 75 q-86 55 -235 56h-105v176q213 0 308 41q119 53 118 196q0 100 -67 154q-59 47 -139 47t-124 -17.5t-73 -33.5l-76 -168z" />
+<glyph unicode="4" horiz-adv-x="1060" d="M4 557l590 858h221v-835h168v-177h-168v-235l166 -27v-139h-651v139l282 33v229h-540zM205 580h407v583z" />
+<glyph unicode="5" horiz-adv-x="1028" d="M39 133l100 158q133 -123 301 -123q131 0 219 86q86 82 86 213q0 164 -116 240q-94 61 -287 61q-94 0 -180 -12v592l65 65h654v-176h-525v-295h50q35 0 99 -3t150 -31.5t154 -84.5q152 -127 152 -342q0 -213 -160 -354q-156 -135 -373 -135q-125 0 -224.5 41t-164.5 100z " />
+<glyph unicode="6" horiz-adv-x="1140" d="M88 694q0 311 148 514q71 101 174.5 159t211 58t174 -21.5t115.5 -51.5q76 -47 131 -127l-194 -138l-103 146q-49 16 -107 16t-118.5 -37.5t-105.5 -105.5q-96 -141 -109 -344q47 53 126 93t179.5 40t182 -29.5t141.5 -87.5q127 -123 127 -327q0 -190 -123 -320 q-131 -139 -326 -139q-264 0 -407 227q-117 188 -117 475zM336 430q70 -262 266 -262q121 0 184 84q59 76 60 192q0 121 -70 199t-174 78q-113 0 -188 -84q-74 -82 -78 -207z" />
+<glyph unicode="7" horiz-adv-x="909" d="M55 989v424h807l37 -53l-428 -1360h-211l-10 55l448 1182h-462l-52 -248h-129z" />
+<glyph unicode="8" horiz-adv-x="1089" d="M84 377q0 242 250 381q-78 51 -132.5 125.5t-54.5 172t36 162t93 109.5q121 98 273 98q158 0 274 -90q125 -100 125 -254q0 -143 -125 -245q-35 -31 -73 -58q127 -76 170 -133q86 -111 86 -248q0 -176 -142 -295q-131 -113 -317 -112q-190 0 -322 96q-141 107 -141 291z M299 383q0 -104 86 -166q72 -51 143.5 -51t116.5 17.5t76 45.5q70 66 70 152q0 139 -185 233q-51 27 -108 56q-199 -109 -199 -287zM362 1100.5q0 -56.5 19.5 -91t50.5 -59.5q47 -39 150 -86q65 41 108 91.5t43 123t-51 121.5t-133 49t-134.5 -46t-52.5 -102.5z" />
+<glyph unicode="9" horiz-adv-x="1112" d="M86 133l115 160q143 -125 297 -125q274 0 303 446q-61 -59 -140 -85.5t-155 -26.5t-156 28.5t-137 83.5q-125 117 -125 324q0 203 117 340q125 143 344 143q248 0 371 -233q100 -190 100 -496q0 -293 -127 -487q-61 -96 -157.5 -154.5t-203 -58.5t-174 15.5t-120.5 37.5 q-74 31 -152 88zM303 956q0 -137 70 -211q64 -67 164 -67q43 0 86 15.5t77 45.5q80 72 88 176q-35 229 -153 304q-43 27 -100 26q-100 0 -166 -73.5t-66 -215.5z" />
+<glyph unicode=":" horiz-adv-x="481" d="M119 399.5q0 51.5 35.5 86t86 34.5t86 -35.5t35.5 -85t-35.5 -85t-86 -35.5t-86 34.5t-35.5 86zM119 884q0 50 35.5 86t86 36t86 -37t35.5 -87.5t-35.5 -85t-87 -34.5t-86 36t-34.5 86z" />
+<glyph unicode=";" horiz-adv-x="499" d="M90 -211l103 209l-54 235l215 39q23 -90 23 -156.5t-17.5 -130t-44.5 -116.5q-49 -100 -118 -170l-107 61v29zM117 679q0 50 35.5 86t86 36t86 -37t35.5 -87t-35.5 -85t-87 -35t-86 36t-34.5 86z" />
+<glyph unicode="&#x3c;" horiz-adv-x="866" d="M59 627v139l670 405v-192l-473 -285l473 -282v-199z" />
+<glyph unicode="=" horiz-adv-x="923" d="M125 475v156h674v-156h-674zM125 733v156h674v-156h-674z" />
+<glyph unicode="&#x3e;" horiz-adv-x="866" d="M137 213v199l473 282l-473 285v192l670 -405v-139z" />
+<glyph unicode="?" horiz-adv-x="835" d="M80 1028l35 326q174 61 282.5 61t177 -25.5t113.5 -68.5q88 -84 88 -215q0 -174 -129 -293q-39 -35 -78 -63l-75 -54q-94 -68 -103 -168q-2 -25 -2 -43l-162 -2l-4 21q-8 29 -8 89t25.5 105t64.5 80t84 65.5t84 65.5q90 78 90 181q0 61 -44 107t-130 46q-88 0 -129 -18 l-55 -197h-125zM193 113.5q0 50.5 34.5 85t84.5 34.5t87 -35.5t37 -85t-37 -85t-87 -35.5t-84.5 35.5t-34.5 86z" />
+<glyph unicode="@" horiz-adv-x="1701" d="M63 553q0 184 67 329.5t177 247.5q229 207 567 207q326 0 539 -207q102 -96 160.5 -229t58.5 -261t-27.5 -221t-78.5 -165q-113 -156 -289 -156q-119 0 -174 64q-98 -63 -221 -64q-166 0 -275 103q-121 115 -121 319q0 231 152 348q117 88 272 88q109 0 203 -45l74 29 l55 -18v-586q0 -43 16.5 -55.5t43 -12.5t59.5 24.5t59 72.5q59 102 59.5 235t-38.5 234.5t-111 173.5q-156 156 -413 155q-266 0 -443 -172q-176 -172 -176 -442q0 -313 184 -486q168 -159 455 -159q143 0 240 39l37 -9l-58 -176q-100 -31 -261 -30.5t-307.5 56.5 t-252.5 163q-231 225 -232 606zM643 528q0 -141 74 -217q59 -61 176 -61q61 0 119 47q-2 20 -2 39v440q-61 31 -118.5 31t-100.5 -16.5t-76 -49.5q-72 -76 -72 -213z" />
+<glyph unicode="A" horiz-adv-x="1245" d="M-2 127l106 37l414 1251h197l436 -1251l94 -37l-22 -127h-482v121l181 43l-99 303h-438l-94 -303l176 -41v-123h-442zM438 643h328l-168 514z" />
+<glyph unicode="B" horiz-adv-x="1181" d="M94 1262v153h473q221 0 353 -104q124 -99 124 -264q0 -120 -65 -211q-59 -84 -145 -111q111 -23 186 -102q82 -86 82 -213t-44 -205t-116 -123q-123 -82 -332 -82h-489l-21 143l125 29v1077zM430 176h160q201 0 270 115q27 45 27 110.5t-25.5 108.5t-68.5 68 q-80 45 -207 45h-156v-447zM430 799h90q158 0 233.5 54t75.5 171q0 215 -274 215h-125v-440z" />
+<glyph unicode="C" horiz-adv-x="1191" d="M70 692q0 340 209 541q190 182 483 182q131 0 303 -39l39 -372h-139l-80 221q-39 14 -135.5 14t-185.5 -43t-150 -115q-129 -152 -129 -368q0 -236 141 -389q143 -156 381 -156q88 0 161.5 26.5t106.5 51.5l60 -162q-129 -92 -363 -92q-283 0 -483 180q-219 199 -219 520 z" />
+<glyph unicode="D" horiz-adv-x="1296" d="M100 145l125 29v1077l-123 13v151h387q334 0 531 -178q203 -182 203 -520t-195 -529q-193 -188 -530 -188h-377zM428 176l16 -2q563 0 564 545q0 246 -148 387q-143 135 -383 135l-49 -2v-1063z" />
+<glyph unicode="E" horiz-adv-x="1103" d="M98 145l125 27v1079l-123 11v153h873l41 -385h-129l-78 209h-381v-430h324v-176h-324v-457h401l72 207h129l-41 -383h-868z" />
+<glyph unicode="F" horiz-adv-x="1046" d="M98 145l125 27v1079l-123 11v153h873l43 -385h-127l-82 209h-381v-430h324v-176h-324v-453l332 -47l-13 -133h-626z" />
+<glyph unicode="G" horiz-adv-x="1259" d="M68 690q0 328 198 527q198 198 511 198h3q154 0 320 -43l30 -371h-149l-74 228q-61 10 -151 10t-180.5 -41t-153.5 -113q-139 -158 -139 -389q0 -240 147 -383q150 -145 399 -145q70 0 111 8l2 301l-233 29l36 145h400v-622q-147 -37 -321.5 -37t-308.5 47t-234 137 q-213 190 -213 514z" />
+<glyph unicode="H" horiz-adv-x="1376" d="M100 147l123 23v1079l-123 11v155h430l21 -153l-123 -21v-424h520v432l-117 11v155h424l21 -153l-123 -21v-1075l123 -16v-150h-424l-21 147l117 23v471h-520v-475l125 -16v-150h-432z" />
+<glyph unicode="I" horiz-adv-x="653" d="M94 147l129 23v1079l-129 11v155h447l20 -153l-133 -21v-1075l133 -16v-150h-448z" />
+<glyph unicode="J" horiz-adv-x="751" d="M16 96l109 162q90 -84 149 -84q76 0 76 113v954l-157 21l20 153h469v-155l-127 -11v-944q0 -182 -109 -262q-70 -51 -161 -51q-160 0 -269 104z" />
+<glyph unicode="K" horiz-adv-x="1255" d="M94 147l129 23v1079l-129 8v158h438l19 -151l-123 -23v-577l477 581l-145 23v147h452v-149l-67 -15l-393 -473l354 -612l113 -21v-145h-285l-324 608l-182 -219v-223l125 -16v-150h-440z" />
+<glyph unicode="L" horiz-adv-x="1046" d="M98 145l125 23v1083l-123 11v153h441l18 -151l-133 -23v-1065h401l72 207h129l-41 -383h-868z" />
+<glyph unicode="M" horiz-adv-x="1748" d="M92 145l129 27v1075l-102 10v158h422l331 -1147l345 1147h399l20 -158l-106 -16v-1075l112 -23l-8 -143h-397l-16 147l118 27v1053l-362 -1196h-236l-350 1206v-1069l121 -23v-145h-395z" />
+<glyph unicode="N" horiz-adv-x="1425" d="M96 145l129 27v1075l-123 13v155h428l517 -1218v1050l-127 17v151h403l27 -153l-131 -25v-1237h-304l-518 1221v-891l2 -146q0 -12 2 -18l117 -21v-145h-397z" />
+<glyph unicode="O" d="M88 705q0 303 143 499q156 213 435 213t436 -213q145 -199 145 -499q0 -301 -145 -500q-157 -213 -436 -213t-435 213q-143 197 -143 500zM303 700q0 -221 90 -370q96 -162 273 -162q178 0 276 162q90 147 90 370q0 225 -90 377q-100 164 -276 164t-273 -164 q-90 -152 -90 -377z" />
+<glyph unicode="P" horiz-adv-x="1132" d="M94 143l131 29v1077l-129 11v155h432q285 0 430 -129q131 -119 132 -323q0 -240 -162 -359q-143 -104 -404 -104h-94v-322q51 -10 297 -41l-6 -137h-606zM430 676h86q188 0 279 86q79 76 79 203q0 274 -372 274h-72v-563z" />
+<glyph unicode="Q" d="M88 705q0 303 143 499q156 213 435 213t436 -213q145 -199 145 -499q0 -301 -145 -500q-157 -213 -436 -213t-435 213q-143 197 -143 500zM303 700q0 -221 90 -370q96 -162 273 -162q178 0 276 162q90 147 90 370q0 225 -90 377q-100 164 -276 164t-273 -164 q-90 -152 -90 -377zM530 -131l80 86l430 -154l13 -67l-183 -162q-88 72 -171 146.5t-169 150.5z" />
+<glyph unicode="R" horiz-adv-x="1196" d="M94 143l131 29v1077l-129 11v155h432q285 0 430 -129q131 -119 132 -323q0 -141 -72 -239.5t-195 -150.5l199 -407l117 -25v-141h-285l-229 524q-49 -6 -101 -6h-94v-348l162 -29v-141h-477zM430 694h86q182 0 279 88q79 70 79 183q0 274 -372 274h-72v-545z" />
+<glyph unicode="S" horiz-adv-x="1038" d="M96 1035.5q0 99.5 36 167t97 114.5q129 98 316 98q180 0 346 -61l29 -353h-142l-90 222q-61 20 -154.5 20t-158 -43t-64.5 -131q0 -102 103 -168q45 -31 100 -54.5t128 -56t136.5 -77.5t102.5 -95q74 -91 74 -209q0 -119 -41 -197q-40 -77 -107 -126q-127 -94 -336 -94 t-365 78l15 346h143l37 -219q88 -33 176 -33q176 0 242 115q23 38 23 98q0 63 -38 115q-38 50 -125 93.5t-172 78t-154 83t-113 119t-44 170z" />
+<glyph unicode="T" horiz-adv-x="1187" d="M29 1036l43 379h1044l45 -379h-125l-86 203h-256v-1063l238 -41l-19 -135h-630l-27 135l233 41v1063h-251l-84 -203h-125z" />
+<glyph unicode="U" horiz-adv-x="1325" d="M61 1262v153h474v-151l-142 -19v-768q0 -145 72 -227t219 -82q190 0 258 164q25 59 25 147v768l-125 19v149h413v-151l-116 -21v-772q0 -238 -144 -365q-124 -114 -314 -114h-3q-236 0 -363 126t-127 353v778z" />
+<glyph unicode="V" horiz-adv-x="1185" d="M14 1276v139h463l17 -127l-187 -39l301 -930l305 934l-184 35v127h449v-139l-78 -27l-414 -1249h-188l-410 1249z" />
+<glyph unicode="W" horiz-adv-x="1830" d="M31 1274v141h440l18 -127l-149 -33l186 -1024l305 1147h205l307 -1155l193 1037l-168 30l12 125h441v-139l-121 -39l-242 -1237h-270l-275 1047l-276 -1047h-272l-232 1243z" />
+<glyph unicode="X" horiz-adv-x="1175" d="M41 0v127l90 14l334 545l-338 561l-86 25v143h457l16 -125l-145 -30l239 -392l230 389l-121 29v129h416v-149l-89 -15l-333 -549l331 -542l91 -25v-135h-463v127l129 10l-232 383l-225 -385l115 -14v-121h-416z" />
+<glyph unicode="Y" horiz-adv-x="1153" d="M8 1262v153h436l15 -135l-131 -25l278 -512l250 514l-117 23v135h400v-153l-88 -21l-369 -737v-334l238 -41l-21 -129h-635l-20 129l235 41v346l-389 727z" />
+<glyph unicode="Z" horiz-adv-x="1132" d="M76 158l727 1081h-531l-41 -219h-129v395h906l24 -190q-66 -100 -151.5 -233.5t-179 -276t-186.5 -282.5t-169 -257h522l39 217h131v-393h-929z" />
+<glyph unicode="[" horiz-adv-x="657" d="M160 -338v1751l16 25h475q12 0 13 -15v-137h-310v-1501h310v-135q0 -16 -13 -17h-469z" />
+<glyph unicode="\" horiz-adv-x="942" d="M43 1391v24h182l674 -1388l-16 -27h-166z" />
+<glyph unicode="]" horiz-adv-x="657" d="M-6 -215h309v1501h-309v137q0 14 12 15h475l17 -25v-1751l-23 -29h-469q-12 0 -12 17v135z" />
+<glyph unicode="^" horiz-adv-x="907" d="M106 1151l322 332h53l320 -334l-4 -10h-166l-178 121l-177 -121h-163z" />
+<glyph unicode="_" horiz-adv-x="1153" d="M10 -27l29 27h1091q12 0 13 -14v-140h-1133v127z" />
+<glyph unicode="`" horiz-adv-x="618" d="M106 1294l123 146l64 -17l219 -323l-76 -76z" />
+<glyph unicode="a" horiz-adv-x="942" d="M74 253.5q0 108.5 44 172t115 100.5q125 63 367 68v145q0 41 -38 75t-118 34q-76 0 -112 -33l-41 -133l-215 63q47 170 231 230q66 20 148 20q160 0 244.5 -79.5t84.5 -208.5v-525q0 -43 29 -43q14 0 43 15l45 -109q-63 -53 -141 -53q-117 0 -148 92q-90 -94 -229 -94 t-224 77.5t-85 186zM268 283.5q0 -50.5 15.5 -76t38 -40.5t47 -20.5t55.5 -5.5t62.5 13.5t54.5 31.5q43 33 59 82v176q-135 0 -198.5 -21.5t-98.5 -55t-35 -84z" />
+<glyph unicode="b" horiz-adv-x="1003" d="M4 1458l260 39l62 -65v-492q86 55 188 55t176 -34.5t127 -98.5q113 -135 113 -356q0 -279 -152 -412q-117 -102 -286 -102q-113 0 -197 47q-98 -49 -107 -51l-47 28v1327l-118 -8zM326 199q16 -20 62 -37t91 -17t88 15.5t80 56.5q88 90 88 277q0 176 -76 266 q-65 80 -167 80q-49 0 -95.5 -19.5t-70.5 -48.5v-573z" />
+<glyph unicode="c" horiz-adv-x="884" d="M74 477q0 268 143 408q114 110 294 110h3q133 0 231 -69q80 -55 107 -117l-203 -96l-65 118q-41 10 -68 11q-248 0 -248 -361q0 -154 75 -245t198 -91q57 0 120.5 21.5t104.5 62.5l45 -143q-123 -94 -299 -94q-184 0 -303 119q-135 131 -135 366z" />
+<glyph unicode="d" horiz-adv-x="1028" d="M74 481q0 279 151 412q117 102 287 102q86 0 164 -32v380l-117 -8l-18 123l256 43l63 -69v-1250q0 -43 29 -43q14 0 43 15l45 -109q-63 -53 -153 -53q-1 0 -2 -1q-89 0 -124 68q-95 -68 -202 -68l-2 1q-108 0 -181 34.5t-127 98.5q-113 135 -112 356zM268 494 q0 -176 76 -267q66 -80 168.5 -80t163.5 66v578q-18 18 -62.5 34.5t-89.5 16.5t-88 -15.5t-80 -56.5q-88 -90 -88 -276z" />
+<glyph unicode="e" horiz-adv-x="909" d="M108 706q36 96 99 158q123 131 307 131q135 0 227 -71q95 -76 95 -199q0 -63 -21.5 -123.5t-83.5 -109.5q-139 -111 -455 -115q33 -162 166 -213q46 -18 102 -18q3 0 6 -1q52 -1 89 9q39 10 68 22q55 27 77 49l45 -143q-23 -23 -75 -45q-112 -46 -221 -46q-91 0 -181 32 q-178 63 -246 247q-35 91 -35 213q0 126 37 223zM266 528q150 0 223.5 23.5t112.5 61.5t39 95.5t-30.5 94.5t-89 37t-98.5 -18.5t-73 -55.5q-72 -84 -84 -238z" />
+<glyph unicode="f" horiz-adv-x="690" d="M35 975l14 20h154v187q0 156 84 239q74 74 196 74q141 0 262 -86q25 -16 31 -23l-145 -169l-131 120q-12 4 -29 4q-82 0 -82 -135v-211h232q10 0 10 -12v-141h-242v-697l234 -34v-111h-512l-25 111l117 24v707h-140z" />
+<glyph unicode="g" horiz-adv-x="999" d="M37 -258q0 193 170 276q-49 41 -49 130t80 169q-158 104 -158 301q0 164 113 271q109 106 265 106t267 -90l203 103l43 -7l20 -170l-184 -22q49 -90 49 -185.5t-34 -163t-89 -112.5q-109 -90 -266 -90q-51 0 -90 8l-51 -80l8 -34q20 -4 87.5 -13.5t156 -30t151 -52 t98.5 -68.5q62 -69 62 -173q0 -101 -37 -169q-37 -70 -96 -117q-121 -92 -295 -92q-184 0 -299 78q-125 84 -125 227zM217 -229q0 -68 76 -113q70 -41 180 -41q109 0 182 47q78 47 78 111.5t-56 90t-157.5 47t-157.5 38.5q-145 -59 -145 -180zM274 644q0 -75 16.5 -116 t43.5 -65q51 -51 134 -51t138.5 55t55.5 160q0 104 -58.5 159.5t-136.5 55.5h-8q-84 -4 -134.5 -63.5t-50.5 -134.5z" />
+<glyph unicode="h" horiz-adv-x="1067" d="M37 1458l256 43l63 -69v-510q101 73 238 73h4q213 0 279 -155q24 -51 24 -125v-6v-566l123 -32v-111h-408l-24 111l125 28v539q0 92 -43 126t-91 34t-80 -8.5t-61 -20.5q-57 -25 -86 -53v-613l121 -32v-111h-407l-25 111l127 28v1204l-117 -8z" />
+<glyph unicode="i" horiz-adv-x="548" d="M59 950l252 45l66 -65v-787l121 -32v-111h-410l-22 111l127 28v697l-113 -9zM127 1364q0 53 37 90t90 37t90 -39t37 -90t-37 -88t-90 -37t-90 37t-37 90z" />
+<glyph unicode="j" horiz-adv-x="497" d="M-76 -504l78 150q14 -10 39.5 -28.5t60.5 -18.5q72 0 72 125v1112l-108 -9l-19 123l248 45l63 -65v-1184q0 -162 -66.5 -232.5t-178.5 -70.5q-104 0 -189 53zM106 1364q0 53 37 90t90 37t90 -39t37 -90t-36.5 -88t-91 -37t-90.5 37t-36 90z" />
+<glyph unicode="k" horiz-adv-x="993" d="M37 1458l256 43l63 -69v-891l314 325h-101l-16 129h326l49 -94l-318 -307l236 -455l108 -24v-115h-256l-233 453l-109 -105v-213l121 -24v-111h-407l-25 111l127 28v1204l-117 -8z" />
+<glyph unicode="l" horiz-adv-x="532" d="M35 1458l256 43l65 -69v-1289l129 -32v-111h-417l-25 111l129 28v1204l-117 -8z" />
+<glyph unicode="m" horiz-adv-x="1632" d="M59 950q27 4 62 11.5t69.5 13.5t67.5 11t53 9l60 -75q97 76 254 76h3q158 0 234 -99q133 98 299 98q213 0 283 -155q24 -51 24 -125v-6v-566l121 -32v-111h-409l-23 111l127 28v539q0 86 -51 127q-43 33 -108.5 33t-122 -25t-84.5 -49v-21l2 -59v-541l122 -32v-111h-407 l-25 111l125 28v539q0 92 -43 126t-106.5 34t-123 -27t-85.5 -53v-615l119 -32v-111h-408l-25 111l130 28v697l-113 -9z" />
+<glyph unicode="n" horiz-adv-x="1085" d="M59 950q27 4 62 11.5t69.5 13.5t67.5 11t53 9l60 -75q97 75 241 75h4q213 0 281 -155q23 -53 23 -131v-564l122 -34v-111h-407l-25 111l125 28v539q0 92 -43 126t-106.5 34t-123 -27t-85.5 -53v-615l119 -32v-111h-408l-25 111l130 28v697l-113 -9z" />
+<glyph unicode="o" horiz-adv-x="1013" d="M74 502q0 119 34.5 211t96.5 155q119 127 303 127q188 0 311 -135t123 -362q0 -238 -131 -375q-121 -131 -303 -131q-190 0 -311 139q-123 138 -123 371zM268 478q0 -163 66 -248t172 -85t174 83t68 253t-65 265.5t-175 95.5q-117 0 -180 -101q-60 -96 -60 -263z" />
+<glyph unicode="p" horiz-adv-x="1034" d="M39 952l256 43l55 -59q92 59 194.5 59t176.5 -34.5t127 -98.5q113 -135 113 -356q0 -279 -152 -412q-117 -102 -287 -102q-94 0 -164 31v-431l250 -45v-108h-536l-25 108l127 31v1260l-117 -9zM358 197q18 -20 62.5 -36t89.5 -16t88 15.5t82 56.5q86 90 86 277 q0 176 -74 266q-68 80 -168 80t-166 -66v-577z" />
+<glyph unicode="q" horiz-adv-x="1001" d="M74 481q0 279 151 412q117 102 287 102q102 0 184 -41l117 43l47 -39v-1331l113 -39v-149h-527l-22 129l252 49v428q-82 -53 -185.5 -53t-177 34.5t-127.5 98.5q-113 135 -112 356zM268 494q0 -176 76 -267q66 -80 168.5 -80t163.5 66v578q-18 18 -62.5 34.5t-89.5 16.5 t-88 -15.5t-80 -56.5q-88 -90 -88 -276z" />
+<glyph unicode="r" horiz-adv-x="829" d="M59 950q115 18 242 43l64 -94q82 94 213 94q90 0 152.5 -45t92.5 -110l-202 -103l-64 99q-70 0 -125 -60q-57 -59 -57 -158v-442q0 -8 35 -14l231 -49v-111h-553l-25 111l127 28v690h-112z" />
+<glyph unicode="s" horiz-adv-x="827" d="M49 207l211 80l49 -119q47 -20 87 -20q3 0 6 -1q36 1 58 7q24 6 46 18q47 31 47 90q0 76 -93 116t-160 72.5t-112 69.5q-92 78 -92 205q0 125 101 201q94 69 225 69q66 0 121 -18.5t96 -46.5q78 -53 121 -137l-209 -80l-47 104q-41 21 -88 21h-2q-46 0 -84 -28 q-39 -28 -39 -81t51 -87t141 -70.5t138.5 -69.5t74.5 -70q52 -69 52 -153q0 -81 -31 -133q-31 -54 -80 -89q-95 -65 -230 -65h-4q-115 0 -223 63q-100 61 -131 152z" />
+<glyph unicode="t" horiz-adv-x="665" d="M8 975l15 20h182v342l164 39l10 -30v-351h213q10 0 10 -12v-141h-223v-588q0 -66 19.5 -85t49 -19t50 6t39.5 16q38 17 61 35q4 -14 43 -135q-29 -27 -84 -53.5t-143 -26.5t-148.5 53t-60.5 174v623h-168z" />
+<glyph unicode="u" horiz-adv-x="1044" d="M25 950l254 45l63 -67v-555q0 -193 113 -217q31 -8 58.5 -8t55 7t54.5 21q59 33 77 80v575h-106l-19 119l250 47l60 -69v-723q0 -68 37 -68l36 4l29 -92q-57 -57 -133 -57q-106 0 -139 92q-96 -92 -230 -92q-225 0 -301 184q-26 61 -26 148v6v501h-113z" />
+<glyph unicode="v" horiz-adv-x="956" d="M0 977l248 18l260 -755l252 620h-111l-14 117l248 18l65 -77l-381 -928h-161l-310 870h-80z" />
+<glyph unicode="w" horiz-adv-x="1441" d="M10 979l273 20l159 -784l193 758h223l209 -760l158 639h-92l-15 127l228 18l45 -71l-224 -932h-241l-195 731l-188 -731h-244l-184 858h-90z" />
+<glyph unicode="x" horiz-adv-x="950" d="M57 129h86l213 367l-215 364h-84v135h230l217 -360l196 360h185v-129h-78l-219 -372l217 -361h88v-133h-240l-207 346l-198 -346h-182z" />
+<glyph unicode="y" horiz-adv-x="983" d="M2 979l254 16l276 -829l259 686h-107l-14 125l248 18l53 -69q-184 -522 -329.5 -896t-169 -422t-54.5 -87q-72 -84 -185 -84q-90 0 -182 82l76 141q57 -70 121 -70q66 0 112 123q14 35 27 66l45 121l-332 952h-82z" />
+<glyph unicode="z" horiz-adv-x="866" d="M88 0v158l469 682q-160 4 -321 4l-29 -160h-119v311h690v-159l-471 -682h326l29 168h116v-322h-690z" />
+<glyph unicode="{" horiz-adv-x="690" d="M14 477v170q98 0 163 57.5t65 167.5l-2 78l-2 92q0 205 53 293q66 111 252 111q53 0 101 -9.5t50 -10.5t6 -1l-61 -196l-145 49q-63 -35 -64 -201l2 -205q0 -297 -215 -313q215 -8 215 -311l-2 -180q0 -143 29 -197q12 -23 35 -33l145 49l61 -196q-121 -23 -157 -23 q-182 0 -254 127q-51 90 -51 283l4 198q0 141 -142 187q-41 14 -86 14z" />
+<glyph unicode="|" horiz-adv-x="505" d="M160 -438v1859h186v-1859h-186z" />
+<glyph unicode="}" horiz-adv-x="690" d="M-10 -309l61 196l146 -49q63 29 63 230l-2 180q0 305 217 317q-217 0 -217 307l2 205q0 166 -63 201l-146 -49l-61 196q123 20 190.5 20.5t127 -28t91.5 -82.5q53 -86 54 -293l-2 -92l-2 -78q0 -111 64.5 -168t162.5 -57v-170q-92 0 -160 -51q-68 -53 -67 -150l4 -198 q0 -193 -52 -283q-72 -127 -254 -127q-43 0 -83.5 8.5t-73.5 14.5z" />
+<glyph unicode="~" horiz-adv-x="839" d="M51 1186l2 26q35 74 76 107q80 63 164 63q70 0 158 -47l63 -30q29 -14 53 -15l113 101l121 -140q-109 -121 -213 -121q-55 0 -116.5 29t-96.5 42t-80 13t-77 -31.5t-46 -68.5z" />
+<glyph unicode="&#xa1;" horiz-adv-x="520" d="M121 -387l65 901h142l75 -850l-43 -78zM137 887q0 51 35 86t85 35t87 -36t37 -85t-37 -85t-87 -36t-85 35t-35 86z" />
+<glyph unicode="&#xa2;" horiz-adv-x="894" d="M63 477q0 233 105 367q92 115 242 141v420h184v-420q96 -18 168 -80q47 -39 80 -96l-203 -96l-66 118q-41 10 -67 11q-248 0 -248 -361q0 -154 75 -245t197 -91q57 0 121 21.5t105 62.5l45 -143q-90 -68 -207 -86v-430h-184v430q-150 31 -242 145q-104 127 -105 332z" />
+<glyph unicode="&#xa3;" horiz-adv-x="1079" d="M61 42q0 32 21.5 78t64.5 83q82 82 114 213t40 276h-182v135l16 19h172l-4 192q0 289 205 355q59 20 123.5 20t115 -12t91.5 -29q66 -29 114 -65l-145 -187l-164 140q-96 -4 -125 -82q-18 -49 -18 -226v-106h286q14 0 15 -17v-137h-307q-14 -276 -82 -413q113 -8 315 -82 q39 -14 61 -15l156 105l80 -217q-72 -78 -231 -78q-100 0 -197.5 31.5t-145 46t-102.5 14.5t-89 -28.5t-44 -61.5h-149q-2 4 -3 10q-2 6 -2 38z" />
+<glyph unicode="&#xa4;" horiz-adv-x="1232" d="M104 317l138 138q-78 113 -78 254q0 143 82 260l-142 143l142 145l153 -153q98 55 216 55t216 -57l156 155l143 -145l-147 -145q82 -117 82 -258q0 -139 -78 -252l143 -140l-143 -145l-149 147q-102 -59 -222 -59t-223 57l-147 -145zM358 709q0 -113 72 -186.5t184 -73.5 q113 0 184.5 73.5t71.5 186.5t-71.5 186.5t-184.5 73.5t-184.5 -73.5t-71.5 -186.5z" />
+<glyph unicode="&#xa5;" horiz-adv-x="1249" d="M51 1266v149h424l14 -129l-124 -26l284 -451l281 453l-121 22v131h389v-149l-78 -21l-385 -612h223v-158h-225v-43h225v-158h-225v-104l234 -41l-17 -129h-631l-18 129l227 41v104h-243v158h243v43h-243v158h229l-381 614z" />
+<glyph unicode="&#xa6;" horiz-adv-x="528" d="M166 -381v778h196v-778h-196zM166 635v778h196v-778h-196z" />
+<glyph unicode="&#xa7;" horiz-adv-x="1030" d="M98 -254l17 346h139l29 -231q98 -29 165.5 -29t110.5 9t76 32q76 47 76 122t-44 118t-112 78.5t-144.5 69.5t-144.5 79q-156 100 -156 244.5t113 246.5q-117 98 -117 240q0 147 119 244q123 100 305 100q176 0 357 -61l26 -353h-141l-88 232q-57 20 -150.5 20t-154 -45 t-60.5 -104.5t32 -96t80 -66.5t104.5 -52.5t123 -55t124 -72.5t91.5 -81q66 -80 66 -197.5t-111 -228.5q94 -90 95 -219q0 -178 -142 -279q-125 -86 -321 -86q-113 0 -196 21.5t-167 54.5zM324 622.5q0 -63.5 61 -106.5t131 -74q117 -55 162 -80q47 63 47 110.5t-31.5 83.5 t-82 65.5t-113 57.5t-123.5 58q-51 -51 -51 -114.5z" />
+<glyph unicode="&#xa8;" horiz-adv-x="790" d="M106 1246q0 48 34 85t84 37t86 -37t36 -86t-37 -84t-85 -35t-83 36t-35 84zM442 1247q0 47 36 84t86 37t85 -37t35 -85t-36 -84t-84 -36t-85 37t-37 84z" />
+<glyph unicode="&#xa9;" horiz-adv-x="1466" d="M66 765q0 138 52 260t142 213t212 143.5t260 52.5t260 -52.5t213 -143.5t143.5 -213t52.5 -260t-52.5 -260t-143.5 -212t-213 -142.5t-260 -52.5t-260 52.5t-212 142.5t-142 212t-52 260zM246 766q0 -102 38 -190.5t105 -153.5q141 -143 344 -143t345.5 142t142.5 345 t-142.5 345t-345.5 142t-345 -142t-142 -345zM375 752q0 182 112 290q106 104 273 105q57 0 94 -4l53 -10l19 -248h-97l-28 104l-37 2q-104 0 -168 -57t-64 -166t61.5 -173.5t153 -64.5t164.5 45l54 -133q-98 -63 -192.5 -63t-164 26.5t-121.5 73.5q-113 104 -112 273z" />
+<glyph unicode="&#xaa;" horiz-adv-x="700" d="M78 1019.5q0 67.5 27.5 106.5t72.5 60q76 35 219 35v18q0 47 -23.5 61.5t-45.5 14.5q-31 0 -62 -6l-8 -49l-178 34q18 78 92 123q63 37 150.5 37t137.5 -27.5t72.5 -74.5t26.5 -110.5t4 -138.5t3 -93.5t14 -18.5l26 6l31 -94q-59 -45 -121.5 -45t-93.5 49 q-53 -53 -143.5 -53t-145.5 49t-55 116.5zM242 1038q0 -20 13 -39.5t50 -19.5q70 0 92 51v88q-156 0 -155 -80z" />
+<glyph unicode="&#xab;" horiz-adv-x="944" d="M12 694l437 439l110 -111l-330 -330l330 -332l-110 -108zM360 694l394 396l110 -111l-286 -287l286 -289l-110 -108z" />
+<glyph unicode="&#xac;" horiz-adv-x="1204" d="M100 778v131l23 23h928l22 -23v-413q0 -14 -16 -15h-144v297h-813z" />
+<glyph unicode="&#xad;" horiz-adv-x="825" d="M-57 639v176h938v-176h-938z" />
+<glyph unicode="&#xae;" horiz-adv-x="1466" d="M66 765q0 138 52 260t142 213t212 143.5t260 52.5t260 -52.5t213 -143.5t143.5 -213t52.5 -260t-52.5 -260t-143.5 -212t-213 -142.5t-260 -52.5t-260 52.5t-212 142.5t-142 212t-52 260zM246 766q0 -102 38 -190.5t105 -153.5q141 -143 344 -143t345.5 142t142.5 345 t-142.5 345t-345.5 142t-345 -142t-142 -345zM467 1026v119h205q174 0 262 -74q80 -65 80 -178q0 -147 -133 -211l94 -172l63 -12v-103h-180l-117 252q-23 -4 -43 -4h-41v-131l95 -23v-94h-275l-8 99l47 16v506zM657 776h29q178 0 178 116t-170 116h-37v-232z" />
+<glyph unicode="&#xaf;" horiz-adv-x="905" d="M117 1257v156h671v-156h-671z" />
+<glyph unicode="&#xb0;" horiz-adv-x="624" d="M68 1220.5q0 118.5 63 194.5q66 78 180 78q113 0 181 -78q66 -78 65.5 -195.5t-65 -194.5t-182 -77t-180 77t-62.5 195.5zM229 1221q0 -82 41 -119q14 -14 40 -14.5t41.5 13t25.5 34.5q18 37 18 86q0 78 -43 114q-16 14 -41.5 14.5t-41 -13t-23.5 -33.5q-17 -35 -17 -82z " />
+<glyph unicode="&#xb1;" horiz-adv-x="931" d="M129 346v156h674v-156h-674zM129 842v155h258v240h156v-240h260v-155h-260v-264h-156v264h-258z" />
+<glyph unicode="&#xb2;" horiz-adv-x="614" d="M72 1286q29 86 96.5 126t123.5 40t92 -11t65 -34q66 -51 65.5 -123t-25 -119t-58.5 -82.5t-69.5 -62.5t-56.5 -45h107l30 69h86l-22 -188h-391l-21 88l72 64q131 121 158.5 169.5t27.5 79.5q0 68 -67 68q-23 0 -43 -8l-31 -74z" />
+<glyph unicode="&#xb3;" horiz-adv-x="604" d="M72 934l63 108q35 -29 68 -50t78 -21t66.5 21.5t21.5 56.5q0 59 -146 59v98q125 0 125 72q0 16 -14.5 32.5t-34.5 16.5q-53 0 -57 -10l-29 -62l-135 45q59 152 233 152q72 0 115 -31q82 -59 82 -127q0 -106 -100 -129q45 -10 82.5 -40.5t37.5 -87t-20.5 -90.5t-52.5 -56 q-66 -43 -154 -43q-143 0 -229 86z" />
+<glyph unicode="&#xb4;" horiz-adv-x="641" d="M106 1124l238 310l66 16l125 -166l-345 -250z" />
+<glyph unicode="&#xb6;" horiz-adv-x="1196" d="M57 1024q0 154 95 258q123 133 354 133h575v-164h-98v-1251h-174v1251h-92v-979l-2 -67q0 -82 -187 -232l-135 185l139 88v366q-225 10 -350 121t-125 291z" />
+<glyph unicode="&#xb7;" horiz-adv-x="485" d="M121 489v328h219l27 -31l-2 -297h-244z" />
+<glyph unicode="&#xb8;" horiz-adv-x="831" d="M147 -510l89 176l145 -96q78 0 117 55q14 20 14 58t-37 73t-125 35l-26 2l-35 39l71 199h203l-47 -119q76 -20 132.5 -74.5t56.5 -158t-83 -174t-229 -70.5q-147 0 -246 55z" />
+<glyph unicode="&#xb9;" horiz-adv-x="485" d="M70 1399l241 69l23 -32v-478l74 -16v-86h-302l-6 82l78 14v367l-90 -16z" />
+<glyph unicode="&#xba;" horiz-adv-x="684" d="M70 1152q0 77 21.5 134t58.5 94q74 76 192 76q121 0 195 -76q78 -82 77 -227q0 -221 -163 -285q-51 -20 -109 -20q-186 0 -252 170q-20 57 -20 134zM233 1146.5q0 -65.5 28 -106.5t81 -41t82 40t29 107.5t-28 112t-82 44.5t-82 -45.5t-28 -111z" />
+<glyph unicode="&#xbb;" horiz-adv-x="946" d="M82 403l285 289l-285 287l111 111l393 -400l-393 -395zM387 1022l113 111l436 -443l-436 -438l-111 108l328 330z" />
+<glyph unicode="&#xbc;" horiz-adv-x="1343" d="M63 1362l273 78l24 -17v-114q0 -12 -2 -25v-524q0 -18 74 -19v-96h-338v92l92 15v522l-106 -17zM193 4l684 1411h182l-2 -29l-682 -1409l-176 23zM686 221v150l318 420h180v-435h96v-135h-96v-108l86 -13v-100h-422l-8 90l172 25v106h-326zM827 356h185v238z" />
+<glyph unicode="&#xbd;" horiz-adv-x="1435" d="M68 1362l272 78l25 -17v-114q0 -12 -3 -25v-524q0 -18 74 -19v-96h-338v92l92 15v522l-106 -17zM197 4l684 1411h182l-2 -29l-682 -1409l-176 23zM776 608q45 92 110.5 139.5t151.5 47.5t135.5 -18.5t79.5 -51.5q63 -63 64 -164q0 -141 -154 -311q-43 -49 -84 -94 l-20 -23h182l43 115h92l-26 -248h-514l-27 100q37 39 93 93.5t110 117.5q127 156 127 264q0 47 -29 63.5t-53 16.5q-27 0 -58 -12l-49 -117z" />
+<glyph unicode="&#xbe;" horiz-adv-x="1445" d="M59 1251q45 121 187 168q49 16 105.5 16.5t103.5 -13t82 -38.5q78 -55 77 -159q0 -61 -32.5 -109.5t-92.5 -66.5q66 -18 102 -63.5t36 -108.5q0 -119 -97 -185q-84 -59 -186 -59q-166 0 -262 72l111 114q59 -47 133 -47t112 55q13 18 13 47q0 113 -172 113h-27v119h27 q80 0 108 14q57 29 57 79t-36.5 73.5t-69.5 23.5q-35 0 -76 -16l-47 -100zM305 4l682 1411h184l-2 -29l-682 -1409l-176 23zM784 221v150l318 420h180v-435h96v-135h-96v-108l86 -13v-100h-422l-8 90l172 25v106h-326zM926 356h184v238z" />
+<glyph unicode="&#xbf;" horiz-adv-x="800" d="M47 -126q0 128 57.5 212t144.5 148.5t135 116.5t48 130v25l162 2l4 -21q6 -31 6 -88t-25.5 -106t-63.5 -87t-82 -67.5t-81 -64.5q-90 -78 -90 -172q0 -98 86 -140q31 -14 70 -14q84 0 135 19l53 194h125l-35 -323q-66 -23 -136.5 -41.5t-160.5 -18.5q-170 0 -261 84 t-91 212zM385 876.5q0 51.5 35 86t86 34.5t87 -35.5t36 -86t-37 -85t-88 -34.5t-85 34.5t-34 86z" />
+<glyph unicode="&#xc0;" horiz-adv-x="1245" d="M-2 127l106 37l414 1251h197l436 -1251l94 -37l-22 -127h-482v121l181 43l-99 307h-438l-94 -307l176 -41v-123h-442zM387 1726l115 168l69 -12l287 -317l-76 -90zM438 643h328l-168 514z" />
+<glyph unicode="&#xc1;" horiz-adv-x="1245" d="M-2 127l106 37l414 1251h197l436 -1251l94 -37l-22 -127h-482v121l181 43l-99 303h-438l-94 -303l176 -41v-123h-442zM387 1597l293 304l68 8l118 -187l-399 -229zM438 643h328l-168 514z" />
+<glyph unicode="&#xc2;" horiz-adv-x="1245" d="M-2 127l106 37l414 1251h197l436 -1251l94 -37l-22 -127h-482v121l181 43l-99 303h-438l-94 -303l176 -41v-123h-442zM274 1499l322 332h53l320 -334l-4 -10h-166l-178 121l-177 -121h-163zM438 643h328l-168 514z" />
+<glyph unicode="&#xc3;" horiz-adv-x="1245" d="M-2 127l106 37l414 1251h197l436 -1251l94 -37l-22 -127h-482v121l181 43l-99 303h-438l-94 -303l176 -41v-123h-442zM274 1559v34q45 100 148 144q45 18 113.5 18t127 -32.5t105.5 -67.5l18 -13l125 115l121 -137q-113 -125 -205 -125q-49 0 -83.5 15.5t-66.5 34 t-64.5 33.5t-87 15t-87 -34.5t-49.5 -69.5zM438 643h328l-168 514z" />
+<glyph unicode="&#xc4;" horiz-adv-x="1245" d="M-2 127l106 37l414 1251h197l436 -1251l94 -37l-22 -127h-482v121l181 43l-99 303h-438l-94 -303l176 -41v-123h-442zM311 1788q0 53 37 92t91.5 39t92 -39t37.5 -93t-40 -92t-91 -38t-89 39t-38 92zM438 643h328l-168 514zM674 1789q0 52 39 91t93 39t92 -39t38 -92 t-39 -92t-91 -39t-92 40t-40 92z" />
+<glyph unicode="&#xc5;" horiz-adv-x="1236" d="M-6 127l106 37l394 1192q-86 59 -86 170q0 86 59 145t145 60q86 0 146.5 -60.5t60.5 -157t-88 -157.5l416 -1192l94 -37l-22 -127h-482v121l181 43l-99 303h-438l-94 -303l176 -41v-123h-443zM434 643h328l-168 514zM535 1526q0 -37 21.5 -57.5t57 -20.5t57 20.5 t21.5 57.5t-21.5 57.5t-57 20.5t-57 -20.5t-21.5 -57.5z" />
+<glyph unicode="&#xc6;" horiz-adv-x="1609" d="M-25 127l107 37l524 1251h873l41 -385h-129l-78 209h-381v-430h323v-176h-323v-457h401l72 207h129l-41 -383h-868l-21 145l125 27v356h-319l-146 -364l180 -41v-123h-442zM481 705h248v546l-29 2z" />
+<glyph unicode="&#xc7;" horiz-adv-x="1193" d="M72 692q0 340 207 541q193 182 485 182q131 0 303 -39l39 -372h-139l-80 221q-39 14 -134.5 14t-185.5 -43t-153 -115q-127 -147 -127 -368q0 -236 141 -389q143 -156 381 -156q88 0 161.5 26.5t106.5 51.5l60 -162q-113 -80 -320 -90l-29 -74q72 -18 124.5 -69.5 t52.5 -148.5t-78 -163.5t-213 -66.5q-100 0 -219 49l-13 4l84 164l136 -88q72 0 108 51q14 18 14 53t-33.5 68.5t-117.5 33.5l-25 3l-33 34l58 160q-238 43 -391 217q-170 193 -170 471z" />
+<glyph unicode="&#xc8;" horiz-adv-x="1103" d="M98 145l125 27v1079l-123 11v153h873l41 -385h-129l-78 209h-381v-430h324v-176h-324v-457h401l72 207h129l-41 -383h-868zM301 1726l117 168l69 -12l285 -317l-74 -90z" />
+<glyph unicode="&#xc9;" horiz-adv-x="1103" d="M98 145l125 27v1079l-123 11v153h873l41 -385h-129l-78 209h-381v-430h324v-176h-324v-457h401l72 207h129l-41 -383h-868zM387 1597l295 304l70 8l116 -187l-399 -229z" />
+<glyph unicode="&#xca;" horiz-adv-x="1103" d="M98 145l125 27v1079l-123 11v153h873l41 -385h-129l-78 209h-381v-430h324v-176h-324v-457h401l72 207h129l-41 -383h-868zM207 1499l321 332h54l319 -334l-4 -10h-166l-178 121l-176 -121h-164z" />
+<glyph unicode="&#xcb;" horiz-adv-x="1103" d="M98 145l125 27v1079l-123 11v153h873l41 -385h-129l-78 209h-381v-430h324v-176h-324v-457h401l72 207h129l-41 -383h-868zM258 1810q0 53 37 92.5t91 39.5t92 -39t38 -93.5t-40 -92.5t-91 -38t-89 39t-38 92zM621 1811.5q0 52.5 38.5 91.5t93 39t92.5 -39t38 -93 q0 -53 -39 -92t-91.5 -39t-92 40t-39.5 92.5z" />
+<glyph unicode="&#xcc;" horiz-adv-x="655" d="M78 147l147 23v1079l-129 11v155h447l20 -153l-133 -21v-1075l133 -16v-150h-448zM78 1726l117 168l65 -12l287 -317l-74 -90z" />
+<glyph unicode="&#xcd;" horiz-adv-x="653" d="M94 147l129 23v1079l-129 11v155h447l20 -153l-133 -21v-1075l133 -16v-150h-448zM96 1597l293 304l70 8l116 -187l-399 -229z" />
+<glyph unicode="&#xce;" horiz-adv-x="653" d="M-20 1499l321 332h53l320 -334l-4 -10h-166l-178 121l-176 -121h-164zM94 147l129 23v1079l-129 11v155h447l20 -153l-133 -21v-1075l133 -16v-150h-448z" />
+<glyph unicode="&#xcf;" horiz-adv-x="653" d="M43 1634q0 53 37 91t88 38t91 -37.5t40 -91.5q0 -53 -40 -91t-91 -38t-88 38t-37 91zM94 147l129 23v1079l-129 11v155h447l20 -153l-133 -21v-1075l133 -16v-150h-448zM371 1633.5q0 54.5 39 92t92 37.5t89 -38.5t36 -91t-37 -90.5t-89 -38t-91 37t-39 91.5z" />
+<glyph unicode="&#xd0;" horiz-adv-x="1294" d="M76 637v139l20 23h127v452l-123 13v151h387q334 0 531 -178q203 -182 203 -520t-195 -529q-193 -188 -530 -188h-377l-21 145l125 29v463h-147zM426 176h49q264 0 399 148q132 139 132 401q0 129 -42 227.5t-120 161.5q-152 129 -418 129v-444h340q14 0 14 -17v-145h-354 v-461z" />
+<glyph unicode="&#xd1;" horiz-adv-x="1425" d="M96 145l129 27v1075l-123 13v155h428l517 -1218v1050l-127 17v151h403l27 -153l-131 -25v-1237h-240l-582 1223v-893l2 -146q0 -12 2 -18l117 -21v-145h-397zM342 1559v34q45 100 150 144q43 18 111.5 18t126.5 -32.5t106 -67.5l18 -13l125 115l121 -137 q-113 -125 -205 -125q-49 0 -84 15.5t-66.5 34t-64.5 33.5t-87 15t-87 -34.5t-49 -69.5z" />
+<glyph unicode="&#xd2;" d="M88 705q0 303 143 499q156 213 435 213t436 -213q145 -199 145 -499q0 -301 -145 -500q-157 -213 -436 -213t-435 213q-143 197 -143 500zM303 700q0 -221 90 -370q96 -162 273 -162q178 0 276 162q90 147 90 370q0 225 -90 377q-100 164 -276 164t-273 -164 q-90 -152 -90 -377zM428 1726l115 168l67 -12l287 -317l-74 -90z" />
+<glyph unicode="&#xd3;" d="M88 705q0 303 143 499q156 213 435 213t436 -213q145 -199 145 -499q0 -301 -145 -500q-157 -213 -436 -213t-435 213q-143 197 -143 500zM303 700q0 -221 90 -370q96 -162 273 -162q178 0 276 162q90 147 90 370q0 225 -90 377q-100 164 -276 164t-273 -164 q-90 -152 -90 -377zM449 1597l292 304l70 8l117 -187l-400 -229z" />
+<glyph unicode="&#xd4;" d="M88 705q0 303 143 499q156 213 435 213t436 -213q145 -199 145 -499q0 -301 -145 -500q-157 -213 -436 -213t-435 213q-143 197 -143 500zM303 700q0 -221 90 -370q96 -162 273 -162q178 0 276 162q90 147 90 370q0 225 -90 377q-100 164 -276 164t-273 -164 q-90 -152 -90 -377zM319 1499l322 332h53l320 -334l-2 -10h-168l-178 121l-177 -121h-167z" />
+<glyph unicode="&#xd5;" d="M88 705q0 303 143 499q156 213 435 213t436 -213q145 -199 145 -499q0 -301 -145 -500q-157 -213 -436 -213t-435 213q-143 197 -143 500zM297 1559v34q45 100 145 144q45 18 117 18t135.5 -38t110.5 -75l125 115l121 -137q-66 -82 -148 -113q-29 -12 -66.5 -12 t-73.5 15.5t-66.5 34t-63.5 33.5t-86 15q-84 0 -139 -104zM303 700q0 -221 90 -370q96 -162 273 -162q178 0 276 162q90 147 90 370q0 225 -90 377q-100 164 -276 164t-273 -164q-90 -152 -90 -377z" />
+<glyph unicode="&#xd6;" d="M88 705q0 303 143 499q156 213 435 213t436 -213q145 -199 145 -499q0 -301 -145 -500q-157 -213 -436 -213t-435 213q-143 197 -143 500zM303 700q0 -221 90 -370q96 -162 273 -162q178 0 276 162q90 147 90 370q0 225 -90 377q-100 164 -276 164t-273 -164 q-90 -152 -90 -377zM371 1810q0 53 36.5 92.5t91 39.5t92.5 -39t38 -93.5t-40 -92.5t-91.5 -38t-89 39t-37.5 92zM733 1811.5q0 52.5 39 91.5t93.5 39t92 -39t37.5 -93q0 -53 -38.5 -92t-91 -39t-92.5 40t-40 92.5z" />
+<glyph unicode="&#xd7;" horiz-adv-x="978" d="M100 1008l109 108l283 -282l274 274l111 -109l-277 -276l272 -270l-108 -109l-272 270l-277 -276l-109 111l277 276z" />
+<glyph unicode="&#xd8;" d="M88 691.5q0 156.5 36 285.5t107 227q156 213 435 213q104 0 194 -33l70 154h200l-2 -39l-100 -217q111 -98 165 -250.5t54 -311.5t-36.5 -288t-108.5 -227q-158 -213 -436 -213q-123 0 -215 39l-64 -140h-192l-7 37l99 213q-100 98 -149.5 246t-49.5 304.5zM303 704.5 q0 -221.5 78 -358.5l401 873q-55 23 -132 22.5t-145.5 -45.5t-111.5 -119q-90 -151 -90 -372.5zM528 199q61 -31 145.5 -31t154 44t114.5 118q90 147 90 372t-96 381z" />
+<glyph unicode="&#xd9;" horiz-adv-x="1306" d="M61 1262v153h474v-151l-142 -19v-768q0 -309 283 -309q188 0 250 164q23 59 22 147v768l-125 19v149h414v-151l-117 -21v-772q0 -238 -137 -365q-121 -115 -313 -114q-236 0 -359 126t-123 353v778zM420 1726l115 168l69 -12l287 -317l-76 -90z" />
+<glyph unicode="&#xda;" horiz-adv-x="1306" d="M61 1262v153h474v-151l-142 -19v-768q0 -309 283 -309q188 0 250 164q23 59 22 147v768l-125 19v149h414v-151l-117 -21v-772q0 -238 -137 -365q-121 -115 -313 -114q-236 0 -359 126t-123 353v778zM485 1597l295 304l70 8l115 -187l-398 -229z" />
+<glyph unicode="&#xdb;" horiz-adv-x="1306" d="M61 1262v153h474v-151l-142 -19v-768q0 -309 283 -309q188 0 250 164q23 59 22 147v768l-125 19v149h414v-151l-117 -21v-772q0 -238 -137 -365q-121 -115 -313 -114q-236 0 -359 126t-123 353v778zM326 1499l321 332h53l320 -334l-2 -10h-168l-178 121l-176 -121h-168z " />
+<glyph unicode="&#xdc;" horiz-adv-x="1325" d="M61 1262v153h474v-151l-142 -19v-768q0 -145 72 -227t219 -82q190 0 258 164q25 59 25 147v768l-125 19v149h413v-151l-116 -21v-772q0 -238 -144 -365q-125 -115 -317 -114q-236 0 -363 126t-127 353v778zM395 1810q0 53 37 92.5t91.5 39.5t92 -39t37.5 -93.5t-40 -92.5 t-91 -38t-89 39t-38 92zM758 1811.5q0 52.5 39 91.5t93 39t92 -39t38 -93q0 -53 -39 -92t-91 -39t-92 40t-40 92.5z" />
+<glyph unicode="&#xdd;" horiz-adv-x="1153" d="M8 1262v153h436l15 -135l-137 -25l284 -524l258 526l-125 23v135h400v-153l-88 -21l-369 -737v-334l238 -41l-21 -129h-635l-20 129l235 41v346l-389 727zM412 1597l295 304l69 8l115 -187l-397 -229z" />
+<glyph unicode="&#xde;" horiz-adv-x="1075" d="M94 147l129 23v1079l-129 11v155h447l20 -153l-133 -21l4 -76q301 0 451.5 -103.5t150.5 -320.5q0 -219 -162 -331q-143 -98 -403 -99h-41v-145l236 -37v-129h-551zM428 487h33q199 0 278.5 64.5t79.5 173.5q0 141 -94 197.5t-281 56.5h-16v-492z" />
+<glyph unicode="&#xdf;" horiz-adv-x="1079" d="M66 0v119l104 20v948q0 203 106 314q96 96 263 96q143 0 243 -80q111 -88 111 -233q0 -94 -34 -154.5t-75 -103.5t-74.5 -76t-33.5 -70q8 -45 92 -88q268 -139 268 -358q0 -160 -114 -260q-102 -90 -244 -90q-119 0 -229 49l110 192q27 -23 53.5 -48t49.5 -40 q72 0 126 53.5t54 147.5q0 88 -90 162q-39 31 -84 58.5t-84 59.5q-90 72 -90 158q0 59 32.5 100.5t72.5 82t73 92t33 133.5q-4 66 -52 112.5t-118 46.5q-176 0 -177 -217v-1126h-292z" />
+<glyph unicode="&#xe0;" horiz-adv-x="942" d="M74 253.5q0 108.5 44 172t115 100.5q125 63 367 68v145q0 41 -38 75t-118 34q-76 0 -112 -33l-41 -133l-215 63q47 170 231 230q66 20 148 20q160 0 244.5 -79.5t84.5 -208.5v-525q0 -43 29 -43q14 0 43 15l45 -109q-63 -53 -141 -53q-117 0 -148 92q-90 -94 -229 -94 t-224 77.5t-85 186zM256 1294l123 146l63 -17l220 -323l-76 -76zM268 283.5q0 -50.5 15.5 -76t38 -40.5t47 -20.5t55.5 -5.5t62.5 13.5t54.5 31.5q43 33 59 82v176q-135 0 -198.5 -21.5t-98.5 -55t-35 -84z" />
+<glyph unicode="&#xe1;" horiz-adv-x="942" d="M74 253.5q0 108.5 44 172t115 100.5q125 63 367 68v145q0 41 -38 75t-118 34q-76 0 -112 -33l-41 -133l-215 63q47 170 231 230q66 20 148 20q160 0 244.5 -79.5t84.5 -208.5v-525q0 -43 29 -43q14 0 43 15l45 -109q-63 -53 -141 -53q-117 0 -148 92q-90 -94 -229 -94 t-224 77.5t-85 186zM268 283.5q0 -50.5 15.5 -76t38 -40.5t47 -20.5t55.5 -5.5t62.5 13.5t54.5 31.5q43 33 59 82v176q-135 0 -198.5 -21.5t-98.5 -55t-35 -84zM270 1174l236 305l65 16l123 -164l-340 -248z" />
+<glyph unicode="&#xe2;" horiz-adv-x="942" d="M74 253.5q0 108.5 44 172t115 100.5q125 63 367 68v145q0 41 -38 75t-118 34q-76 0 -112 -33l-41 -133l-215 63q47 170 231 230q66 20 148 20q160 0 244.5 -79.5t84.5 -208.5v-525q0 -43 29 -43q14 0 43 15l45 -109q-63 -53 -141 -53q-117 0 -148 92q-90 -94 -229 -94 t-224 77.5t-85 186zM123 1108l272 326h68l274 -328l-12 -23h-160l-137 107l-137 -107h-158zM268 283.5q0 -50.5 15.5 -76t38 -40.5t47 -20.5t55.5 -5.5t62.5 13.5t54.5 31.5q43 33 59 82v176q-135 0 -198.5 -21.5t-98.5 -55t-35 -84z" />
+<glyph unicode="&#xe3;" horiz-adv-x="942" d="M74 253.5q0 108.5 44 172t115 100.5q125 63 367 68v145q0 41 -38 75t-118 34q-76 0 -112 -33l-41 -133l-215 63q47 170 231 230q66 20 148 20q160 0 244.5 -79.5t84.5 -208.5v-525q0 -43 29 -43q14 0 43 15l45 -109q-63 -53 -141 -53q-117 0 -148 92q-90 -94 -229 -94 t-224 77.5t-85 186zM143 1198q0 57 54 115q66 72 163 71q74 0 177 -59q25 -14 47 -22l2 -7l94 97l115 -136q-43 -47 -89.5 -79.5t-94.5 -32.5t-77.5 12t-57 25.5t-54 26t-57.5 12.5q-74 0 -113 -93zM268 283.5q0 -50.5 15.5 -76t38 -40.5t47 -20.5t55.5 -5.5t62.5 13.5 t54.5 31.5q43 33 59 82v176q-135 0 -198.5 -21.5t-98.5 -55t-35 -84z" />
+<glyph unicode="&#xe4;" horiz-adv-x="942" d="M74 253.5q0 108.5 44 172t115 100.5q125 63 367 68v145q0 41 -38 75t-118 34q-76 0 -112 -33l-41 -133l-215 63q47 170 231 230q66 20 148 20q160 0 244.5 -79.5t84.5 -208.5v-525q0 -43 29 -43q14 0 43 15l45 -109q-63 -53 -141 -53q-117 0 -148 92q-90 -94 -229 -94 t-224 77.5t-85 186zM141 1278q0 53 37 90t90 37t90 -37t37 -90t-36.5 -90t-90.5 -37q-53 0 -90 37t-37 90zM268 283.5q0 -50.5 15.5 -76t38 -40.5t47 -20.5t55.5 -5.5t62.5 13.5t54.5 31.5q43 33 59 82v176q-135 0 -198.5 -21.5t-98.5 -55t-35 -84zM471 1278q0 53 37 90 t90 37t90 -37t37 -90t-37 -90t-90 -37t-90 37t-37 90z" />
+<glyph unicode="&#xe5;" horiz-adv-x="942" d="M74 253.5q0 108.5 44 172t115 100.5q125 63 367 68v145q0 41 -38 75t-118 34q-76 0 -112 -33l-41 -133l-215 63q47 170 231 230q66 20 148 20q160 0 244.5 -79.5t84.5 -208.5v-525q0 -43 29 -43q14 0 43 15l45 -109q-63 -53 -141 -53q-117 0 -148 92q-90 -94 -229 -94 t-224 77.5t-85 186zM268 283.5q0 -50.5 15.5 -76t38 -40.5t47 -20.5t55.5 -5.5t62.5 13.5t54.5 31.5q43 33 59 82v176q-135 0 -198.5 -21.5t-98.5 -55t-35 -84zM268 1290q0 82 56.5 138.5t139.5 56.5t139 -56.5t56 -138.5t-56 -138t-139 -56t-139.5 56t-56.5 138zM389 1290 q0 -31 21.5 -52t52.5 -21t53.5 21.5t22.5 51.5q0 31 -22.5 52.5t-53.5 21.5t-52.5 -21.5t-21.5 -52.5z" />
+<glyph unicode="&#xe6;" horiz-adv-x="1441" d="M74 252.5q0 107.5 46 171t122 100.5q135 70 358 70v145q0 41 -38 75t-118 34q-76 0 -112 -33l-41 -133l-215 63q47 170 231 230q66 20 148 20q198 0 286 -131q131 131 318 131q137 0 229 -69q96 -72 96 -199q0 -213 -278 -283q-98 -25 -236 -24h-36q-18 0 -39 2 q20 -193 163 -254q51 -23 124 -23t131.5 29t80.5 47l39 -139q-25 -27 -98.5 -58.5t-182 -31.5t-210 46t-166.5 144q-53 -127 -182 -174q-47 -18 -107 -18q-143 0 -228 77.5t-85 185zM268 274q0 -72 54 -106q37 -27 85 -27t79.5 13.5t54.5 31.5q43 33 59 82v176 q-332 0 -332 -170zM795 573h75q135 0 196.5 19.5t92.5 49.5t31 63.5t-6 55t-21.5 39t-43 30t-68.5 12.5t-83 -16.5t-77 -51.5q-82 -78 -96 -201z" />
+<glyph unicode="&#xe7;" horiz-adv-x="882" d="M74 477q0 268 143 408q115 111 297 110q133 0 231 -69q80 -55 107 -117l-203 -96l-65 118q-41 10 -68 11q-248 0 -248 -361q0 -154 75 -245t198 -91q57 0 120.5 21.5t104.5 62.5l45 -143q-92 -74 -227 -90l-25 -72q53 -14 96 -52t43 -116t-62.5 -130t-172.5 -52 q-84 0 -180 39l67 135l111 -76q61 0 92 43q10 16 10 39q0 90 -145 90l-25 31l43 123q-156 27 -252 141q-111 129 -110 338z" />
+<glyph unicode="&#xe8;" horiz-adv-x="927" d="M72 485q0 -242 133 -370q125 -123 334 -123q141 0 258 67q25 14 32 23l-45 143q-47 -47 -145 -69q-39 -10 -94.5 -10.5t-102.5 18t-82 49.5q-61 57 -84 164q315 4 455 115q105 83 105 233q0 61 -26 112.5t-69 86.5q-92 72 -227 71q-184 0 -307 -131q-135 -141 -135 -379z M266 528q12 154 84 238q66 74 170 74q59 0 90 -37t31 -94.5t-39 -95.5t-96 -56q-90 -29 -240 -29zM317 1378l121 162l66 -16l233 -303l-84 -88z" />
+<glyph unicode="&#xe9;" horiz-adv-x="909" d="M71.5 486q0.5 124 37 219.5t98.5 158.5q123 131 307 131q135 0 227 -71q95 -76 95 -199q0 -63 -21.5 -123.5t-83.5 -109.5q-139 -111 -455 -115q33 -162 166 -213q47 -18 102.5 -18.5t94.5 9t68 21.5q55 27 77 49l45 -143q-23 -23 -75 -45q-205 -84 -402 -14 q-178 63 -246 247q-35 92 -34.5 216zM266 528q150 0 223.5 23.5t112.5 61.5t39 95.5t-30.5 94.5t-89 37t-98.5 -18.5t-73 -55.5q-72 -84 -84 -238zM319 1174l236 305l66 16l122 -164l-340 -248z" />
+<glyph unicode="&#xea;" horiz-adv-x="927" d="M71.5 486q0.5 124 37 219.5t98.5 158.5q123 131 307 131q135 0 227 -71q95 -76 95 -199q0 -63 -21.5 -123.5t-83.5 -109.5q-139 -111 -455 -115q33 -162 166 -213q47 -18 102.5 -18.5t94.5 9t68 21.5q55 27 77 49l45 -143q-23 -23 -75 -45q-205 -84 -402 -14 q-178 63 -246 247q-35 92 -34.5 216zM199 1108l272 326h68l274 -328l-12 -23h-160l-137 107l-137 -107h-158zM266 528q150 0 223.5 23.5t112.5 61.5t39 95.5t-30.5 94.5t-89 37t-98.5 -18.5t-73 -55.5q-72 -84 -84 -238z" />
+<glyph unicode="&#xeb;" horiz-adv-x="927" d="M71.5 486q0.5 124 37 219.5t98.5 158.5q123 131 307 131q135 0 227 -71q95 -76 95 -199q0 -63 -21.5 -123.5t-83.5 -109.5q-139 -111 -455 -115q33 -162 166 -213q47 -18 102.5 -18.5t94.5 9t68 21.5q55 27 77 49l45 -143q-23 -23 -75 -45q-205 -84 -402 -14 q-178 63 -246 247q-35 92 -34.5 216zM217 1282q0 47 32 80t80 33t80.5 -34t32.5 -80t-33.5 -79t-80.5 -33t-79 33t-32 80zM266 528q150 0 223.5 23.5t112.5 61.5t39 95.5t-30.5 94.5t-89 37t-98.5 -18.5t-73 -55.5q-72 -84 -84 -238zM524 1283q0 46 32 79t80 33t81 -34 t33 -80t-34 -79t-81 -33t-79 34t-32 80z" />
+<glyph unicode="&#xec;" horiz-adv-x="548" d="M59 950l21 -123l113 9v-697l-127 -28l22 -111h410v111l-121 32v787l-66 65zM59 1333l123 164l66 -16l233 -305l-82 -89z" />
+<glyph unicode="&#xed;" horiz-adv-x="548" d="M59 950l252 45l66 -65v-787l121 -32v-111h-410l-22 111l127 28v697l-113 -9zM66 1174l235 305l66 16l120 -164l-337 -246z" />
+<glyph unicode="&#xee;" horiz-adv-x="548" d="M-23 1114l256 309h50l256 -307l-11 -16h-137l-135 110l-137 -110h-133zM59 950l252 45l66 -65v-787l121 -32v-111h-410l-22 111l127 28v697l-113 -9z" />
+<glyph unicode="&#xef;" horiz-adv-x="548" d="M-2 1282q0 47 31.5 80t80 33t81 -34t32.5 -80t-33.5 -79t-81 -33t-79 33t-31.5 80zM59 950l252 45l66 -65v-787l121 -32v-111h-410l-22 111l127 28v697l-113 -9zM283 1283q0 46 32.5 79t79.5 33t81 -34t34 -80t-35 -79t-81 -33t-78.5 34t-32.5 80z" />
+<glyph unicode="&#xf0;" horiz-adv-x="1046" d="M72 438q0 190 108 328q115 139 293 139q170 0 260 -94q-45 156 -155 274l-218 -122l-65 116l166 113q-84 63 -207 121l76 182q154 -59 303 -184l219 149l100 -164l-198 -112q188 -229 207 -529v-41q0 -256 -107 -426q-123 -197 -348 -196q-213 0 -330 143 q-104 125 -104 303zM266 438q0 -125 68 -197.5t174 -72.5q195 0 244 274q0 141 -80 222q-68 68 -178 67q-115 0 -175 -90q-53 -78 -53 -203z" />
+<glyph unicode="&#xf1;" horiz-adv-x="1085" d="M59 950q27 4 62 11.5t69.5 13.5t67.5 11t53 9l60 -75q98 76 245 75q213 0 281 -155q23 -53 23 -131v-564l122 -34v-111h-407l-25 111l125 28v539q0 92 -43 126t-106.5 34t-123 -27t-85.5 -53v-615l119 -32v-111h-408l-25 111l130 28v697l-113 -9zM246 1198q0 57 53 115 q66 72 164 71q74 0 176 -59q25 -14 47 -22l2 -7l94 97l115 -136q-43 -47 -89 -79.5t-94 -32.5t-78 12t-57.5 25.5t-54 26t-57.5 12.5q-74 0 -113 -93z" />
+<glyph unicode="&#xf2;" horiz-adv-x="1013" d="M74 502q0 -119 31.5 -212t91.5 -159q121 -139 311 -139q182 0 303 131q131 137 131 375q0 227 -123 362t-311 135q-184 0 -303 -127q-131 -137 -131 -366zM268 485q0 250 135 330q45 27 105 27q111 0 175.5 -95.5t64.5 -265.5t-68 -253t-174.5 -83t-172 85t-65.5 255z M319 1333l123 164l66 -16l233 -307l-82 -89z" />
+<glyph unicode="&#xf3;" horiz-adv-x="1013" d="M74 502q0 119 34.5 211t96.5 155q119 127 303 127q188 0 311 -135t123 -362q0 -238 -131 -375q-121 -131 -303 -131q-190 0 -311 139q-123 138 -123 371zM268.5 480q-0.5 -165 65 -250t172 -85t174.5 83t68 253t-65 265.5t-175 95.5q-117 0 -180 -101q-59 -96 -59.5 -261 zM326 1174l235 305l66 16l123 -164l-340 -248z" />
+<glyph unicode="&#xf4;" horiz-adv-x="1011" d="M74 502q0 119 34.5 211t96.5 155q119 127 303 127q188 0 311 -135t123 -362q0 -238 -131 -375q-121 -131 -303 -131q-190 0 -311 139q-123 138 -123 371zM223 1114l256 309h49l256 -307l-8 -16h-135l-137 110l-137 -110h-134zM268.5 480q-0.5 -165 65 -250t172 -85 t174.5 83t68 253t-65 265.5t-175 95.5q-117 0 -180 -101q-59 -96 -59.5 -261z" />
+<glyph unicode="&#xf5;" horiz-adv-x="1011" d="M74 502q0 119 34.5 211t96.5 155q119 127 303 127q188 0 311 -135t123 -362q0 -238 -131 -375q-121 -131 -303 -131q-190 0 -311 139q-123 138 -123 371zM193 1196q0 57 53 115q70 74 164 73q72 0 176 -59q27 -14 49 -22l2 -7l94 95l115 -136q-45 -47 -89 -78.5 t-94.5 -31.5t-80 11t-56.5 26q-68 37 -112.5 37t-72.5 -29t-38 -64zM268.5 480q-0.5 -165 65 -250t172 -85t174.5 83t68 253t-65 265.5t-175 95.5q-117 0 -180 -101q-59 -96 -59.5 -261z" />
+<glyph unicode="&#xf6;" horiz-adv-x="1011" d="M74 502q0 119 34.5 211t96.5 155q119 127 303 127q188 0 311 -135t123 -362q0 -238 -131 -375q-121 -131 -303 -131q-190 0 -311 139q-123 138 -123 371zM246 1282q0 47 31.5 80t80 33t81 -34t32.5 -80t-34 -79t-81 -33t-78.5 33t-31.5 80zM268.5 480q-0.5 -165 65 -250 t172 -85t174.5 83t68 253t-65 265.5t-175 95.5q-117 0 -180 -101q-59 -96 -59.5 -261zM553 1283q0 46 31.5 79t80 33t81 -34t32.5 -80t-33.5 -79t-81 -33t-79 34t-31.5 80z" />
+<glyph unicode="&#xf7;" horiz-adv-x="858" d="M92 520v156h674v-156h-674zM328 284q0 46 31.5 78.5t79.5 32.5t81 -33.5t33 -79.5t-34 -79t-81 -33t-78.5 34t-31.5 80zM328 915.5q0 47.5 31.5 80t79.5 32.5t81 -33.5t33 -80t-34 -79t-81 -32.5t-78.5 32.5t-31.5 80z" />
+<glyph unicode="&#xf8;" horiz-adv-x="1011" d="M74 498q0 231 131 370q119 127 303 127q61 0 125 -18l108 237h174l-2 -26l-131 -291q158 -139 158 -399q0 -238 -129 -375q-123 -131 -303 -131q-61 0 -127 18l-94 -211h-168l-6 27l120 266q-160 137 -159 406zM268 493.5q0 -147.5 43 -227.5l256 563q-29 8 -59 9 q-119 0 -179.5 -98.5t-60.5 -246zM446 154q25 -8 62 -9q104 0 170.5 83t66.5 240t-47 245z" />
+<glyph unicode="&#xf9;" horiz-adv-x="1044" d="M25 950l20 -119h113v-501q0 -170 98 -260q86 -78 229 -78q133 0 230 92q33 -92 139 -92q76 0 133 57l-29 92l-36 -4q-37 0 -37 68v723l-60 69l-250 -47l19 -119h106v-575q-18 -47 -77 -80q-53 -29 -95.5 -29t-74 7.5t-56.5 29.5q-55 53 -55 189v555l-63 67zM236 1333 l120 164l66 -16l235 -307l-84 -89z" />
+<glyph unicode="&#xfa;" horiz-adv-x="1044" d="M25 950l254 45l63 -67v-555q0 -193 113 -217q31 -8 58.5 -8.5t55 7t54.5 21.5q59 33 77 80v575h-106l-19 119l250 47l60 -69v-723q0 -68 37 -68l36 4l29 -92q-57 -57 -133 -57q-106 0 -139 92q-96 -92 -230 -92q-225 0 -301 184q-27 63 -26 154v501h-113zM305 1174 l236 305l65 16l123 -164l-340 -248z" />
+<glyph unicode="&#xfb;" horiz-adv-x="1044" d="M25 950l254 45l63 -67v-555q0 -193 113 -217q31 -8 58.5 -8.5t55 7t54.5 21.5q59 33 77 80v575h-106l-19 119l250 47l60 -69v-723q0 -68 37 -68l36 4l29 -92q-57 -57 -133 -57q-106 0 -139 92q-96 -92 -230 -92q-225 0 -301 184q-27 63 -26 154v501h-113zM201 1114 l256 309h49l256 -307l-10 -16h-138l-135 110l-137 -110h-133z" />
+<glyph unicode="&#xfc;" horiz-adv-x="1044" d="M25 950l254 45l63 -67v-555q0 -193 113 -217q31 -8 58.5 -8.5t55 7t54.5 21.5q59 33 77 80v575h-106l-19 119l250 47l60 -69v-723q0 -68 37 -68l36 4l29 -92q-57 -57 -133 -57q-106 0 -139 92q-96 -92 -230 -92q-225 0 -301 184q-27 63 -26 154v501h-113zM256 1282 q0 47 31.5 80t80 33t81 -34t32.5 -80t-33.5 -79t-81 -33t-79 33t-31.5 80zM563 1283q0 46 32 79t80 33t80.5 -34t32.5 -80t-33.5 -79t-80.5 -33t-79 34t-32 80z" />
+<glyph unicode="&#xfd;" horiz-adv-x="983" d="M2 979l254 16l276 -829l259 686h-107l-14 125l248 18l53 -69q-184 -522 -329.5 -896t-169 -422t-54.5 -87q-72 -84 -185 -84q-90 0 -182 82l76 141q57 -70 121 -70q66 0 112 123q14 35 27 66l45 121l-332 952h-82zM283 1174l235 305l66 16l123 -164l-340 -248z" />
+<glyph unicode="&#xfe;" horiz-adv-x="1007" d="M8 1466l260 39l62 -65v-500q86 55 188.5 55t176 -34.5t126.5 -98.5q113 -135 113 -356q0 -279 -152 -412q-117 -102 -286 -102q-102 0 -170 33q4 -66 4 -93v-329l245 -49v-113h-530l-14 110l112 27v1774l-116 -9zM330 197q18 -20 63 -36t90 -16t88 15.5t80 56.5 q88 90 88 277q0 172 -75 264q-62 80 -168 80q-49 0 -95.5 -19.5t-70.5 -48.5v-573z" />
+<glyph unicode="&#xff;" horiz-adv-x="978" d="M0 979l248 16l276 -829l264 694h-108l-14 117l249 18l52 -69q-164 -463 -284 -769.5t-158 -403.5t-61.5 -145t-53.5 -87q-72 -84 -185 -84q-90 0 -182 82l76 141q57 -70 121 -70q66 0 112 123q14 35 27 66l45 121l-332 960h-76zM215 1282q0 47 32 80t80 33t80.5 -34 t32.5 -80t-33.5 -79t-80.5 -33t-79 33t-32 80zM522 1283q0 46 32 79t80 33t81 -34t33 -80t-34 -79t-81 -33t-79 34t-32 80z" />
+<glyph unicode="&#x152;" horiz-adv-x="1787" d="M88 705q0 303 143 499q156 213 435 213l55 -2h936l41 -385h-129l-78 209h-381v-430h324v-176h-324v-457h401l72 207h129l-41 -383h-872q-70 -8 -133 -8q-279 0 -435 213q-143 197 -143 500zM303 700q0 -215 111 -370q113 -162 293 -162q133 0 200 72v923 q-96 78 -199.5 78t-178 -45t-123.5 -119q-102 -152 -103 -377z" />
+<glyph unicode="&#x153;" horiz-adv-x="1587" d="M74 498q0 233 131 370q119 127 303 127q219 0 342 -174q63 86 153.5 130t172 44t140 -18.5t101.5 -52.5q96 -76 96 -203q0 -145 -104 -229q-139 -111 -455 -115q33 -162 166 -213q47 -18 102.5 -18.5t94.5 9t67 21.5q55 27 78 49l45 -143q-23 -23 -75 -45 q-109 -45 -215 -45q-248 0 -373 168q-61 -84 -149.5 -126t-185.5 -42t-176 35.5t-136 103.5q-123 137 -123 367zM268.5 480q-0.5 -165 65 -250t172 -85t174.5 83t68 253t-65 265.5t-175 95.5q-117 0 -180 -101q-59 -96 -59.5 -261zM944 528q150 0 223.5 23.5t112.5 61.5 t39 95.5t-31 94.5t-89 37t-98 -18.5t-73 -55.5q-72 -84 -84 -238z" />
+<glyph unicode="&#x2000;" horiz-adv-x="971" />
+<glyph unicode="&#x2001;" horiz-adv-x="1942" />
+<glyph unicode="&#x2002;" horiz-adv-x="971" />
+<glyph unicode="&#x2003;" horiz-adv-x="1942" />
+<glyph unicode="&#x2004;" horiz-adv-x="647" />
+<glyph unicode="&#x2005;" horiz-adv-x="485" />
+<glyph unicode="&#x2006;" horiz-adv-x="323" />
+<glyph unicode="&#x2007;" horiz-adv-x="323" />
+<glyph unicode="&#x2008;" horiz-adv-x="242" />
+<glyph unicode="&#x2009;" horiz-adv-x="388" />
+<glyph unicode="&#x200a;" horiz-adv-x="107" />
+<glyph unicode="&#x2010;" horiz-adv-x="817" d="M119 500v125l24 28h543q12 0 12 -16v-137h-579z" />
+<glyph unicode="&#x2011;" horiz-adv-x="817" d="M119 500v125l24 28h543q12 0 12 -16v-137h-579z" />
+<glyph unicode="&#x2012;" horiz-adv-x="817" d="M119 500v125l24 28h543q12 0 12 -16v-137h-579z" />
+<glyph unicode="&#x2013;" horiz-adv-x="987" d="M111 616v154h759v-154h-759z" />
+<glyph unicode="&#x2014;" horiz-adv-x="1294" d="M111 616v154h1067v-154h-1067z" />
+<glyph unicode="&#x2018;" horiz-adv-x="411" d="M78 1196q0 68 26.5 151t73.5 152l113 -33l8 -28l-49 -234l110 -209l-198 -92q-84 135 -84 293z" />
+<glyph unicode="&#x2019;" horiz-adv-x="407" d="M61 985v29l103 209l-53 235l215 39q23 -90 22.5 -156.5t-18 -130t-43.5 -116.5q-49 -100 -119 -170z" />
+<glyph unicode="&#x201a;" horiz-adv-x="434" d="M74 -199l84 213l-76 230l203 59q10 -16 29.5 -72.5t19.5 -126t-16.5 -128t-43.5 -107.5q-45 -92 -108 -156l-92 64v24z" />
+<glyph unicode="&#x201c;" horiz-adv-x="684" d="M90 1083q0 207 121 418l125 -61v-29l-62 -209l54 -276l-215 -43q-2 8 -5.5 31.5t-7.5 52.5q-10 76 -10 116zM364.5 1084.5q0.5 66.5 14.5 130t35 116.5q35 92 90 170l106 -61v-29l-61 -209l53 -235l-215 -39q-23 90 -22.5 156.5z" />
+<glyph unicode="&#x201d;" horiz-adv-x="673" d="M80 924v28l61 209l-53 236l215 39q23 -90 23 -157t-14.5 -130.5t-35.5 -116.5q-35 -92 -90 -170zM354 924v28l62 209l-54 277l216 43q2 -8 5 -32t7 -52q10 -76 10 -117q0 -207 -121 -418z" />
+<glyph unicode="&#x201e;" horiz-adv-x="708" d="M68 -223l84 192l-76 230l194 59q8 -18 26.5 -83.5t18.5 -131.5t-15 -115t-40 -94q-45 -82 -108 -145l-84 63v25zM330 -246l104 215l-76 291l203 59q47 -141 47 -272q0 -150 -104 -305q-31 -45 -62 -74l-112 62v24z" />
+<glyph unicode="&#x2022;" horiz-adv-x="530" d="M88 784q0 74 51 126.5t125 52.5t126 -52.5t52 -126.5t-52 -125t-126 -51t-125 51t-51 125z" />
+<glyph unicode="&#x202f;" horiz-adv-x="388" />
+<glyph unicode="&#x2039;" horiz-adv-x="714" d="M23 590v53l579 442l10 -4v-186l-366 -281l366 -278v-186l-12 -7z" />
+<glyph unicode="&#x203a;" horiz-adv-x="716" d="M102 150v186l367 278l-367 281v186l11 4l579 -442v-53l-577 -447z" />
+<glyph unicode="&#x205f;" horiz-adv-x="485" />
+<glyph unicode="&#x20ac;" horiz-adv-x="1165" d="M63 455v155h117q-2 20 -2 39v64h-115v155h125q35 283 179.5 417t375.5 134q188 0 306 -35l38 -360h-139l-80 201q-49 18 -126.5 18t-141 -28.5t-104.5 -79.5q-76 -96 -95 -267h521v-155h-529l2 -103h527v-155h-510q27 -141 102 -209q86 -78 244 -78q88 0 154.5 26.5 t99.5 51.5l59 -162q-129 -92 -348 -92q-432 0 -524 463h-136z" />
+<glyph unicode="&#xe000;" horiz-adv-x="993" d="M0 0v993h993v-993h-993z" />
+</font>
+</defs></svg> 
\ No newline at end of file
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/fonts/mavenpro.css
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/fonts/mavenpro.css	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/fonts/mavenpro.css	(revision 47450)
@@ -0,0 +1,12 @@
+/* Copyright (C) YOOtheme GmbH, YOOtheme Proprietary Use License (http://www.yootheme.com/license) */
+
+@font-face {
+	font-family: 'MavenProRegular';
+	src: url('maven_pro_regular-webfont.eot');
+	src: url('maven_pro_regular-webfont.eot?#iefix') format('embedded-opentype'),
+		 url('maven_pro_regular-webfont.woff') format('woff'),
+		 url('maven_pro_regular-webfont.ttf') format('truetype'),
+		 url('maven_pro_regular-webfont.svg#MavenProRegular') format('svg');
+	font-weight: normal;
+	font-style: normal;
+}
\ No newline at end of file
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/index.jsp
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/index.jsp	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/index.jsp	(revision 47450)
@@ -0,0 +1,4 @@
+
+<% 
+response.sendRedirect("welcome");
+%>
\ No newline at end of file
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/js/ddmenu.js
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/js/ddmenu.js	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/js/ddmenu.js	(revision 47450)
@@ -0,0 +1,16 @@
+var ddmenuOptions=
+{
+	menuId: "ddmenu",
+	linkIdToMenuHtml: null,
+	effect: "slide",
+	delay: 50,
+	//dl114
+/*	license: "2c7u1" */
+	//production
+	license: "2c1o2"
+};
+
+var ddmenu=new McDdMenu(ddmenuOptions);
+
+/* Menucool Drop Down Menu v2013.3.18 Copyright www.menucool.com */
+function McDdMenu(d){var o=function(a,b){return a.getElementsByTagName(b)},k=function(b,d){if(window.getComputedStyle)var c=window.getComputedStyle(b,null);else if(b.currentStyle)c=b.currentStyle;else c=b[a];return c[d]},e=function(a,c,b){if(a.addEventListener)a.addEventListener(c,b,false);else a.attachEvent&&a.attachEvent("on"+c,b)},t=function(a){if(a&&a.stopPropagation)a.stopPropagation();else window.event.cancelBubble=true},F=function(b){var a=b?b:window.event;a.preventDefault&&a.preventDefault();a.returnValue=false;return false},b,l,y,a,c,i,g,f,n,x=document,L=["$1$2$3","$1$2$3","$1$24","$1$23","$1$22"];mcDdl=0;var K=[/(?:.*\.)?(\w)([\w\-])[^.]*(\w)\.[^.]+$/,/.*([\w\-])\.(\w)(\w)\.[^.]+$/,/^(?:.*\.)?(\w)(\w)\.[^.]+$/,/.*([\w\-])([\w\-])\.com\.[^.]+$/,/^(\w)[^.]*(\w)+$/],D=function(){var c=50,b=navigator.userAgent,a;if((a=b.indexOf("MSIE "))!=-1)c=parseInt(b.substring(a+5,b.indexOf(".",a)));return c},B=function(){b={a:d.license,b:d.menuId,c:d.effect=="none"?0:1,d:d.delay,e:d.linkIdToMenuHtml}},j=D(),m=function(d){var a=d.childNodes,c=[];if(a)for(var b=0,e=a.length;b<e;b++)a[b].nodeType==1&&c.push(a[b]);return c},C=function(b){var a=[],c=b.length;while(c--)a.push(String.fromCharCode(b[c]));return a.join("")},z=function(a){return a.replace(/(?:.*\.)?(\w)([\w\-])?[^.]*(\w)\.[^.]*$/,"$1$3$2")},L_1=function(e,c){var d=function(a){for(var c=a.substr(0,a.length-1),e=a.substr(a.length-1,1),d="",b=0;b<c.length;b++)d+=c.charCodeAt(b)-e;return unescape(d)},a=z(document.domain)+Math.random(),b=d(a);l="%66%75%6E%63%74%69%6F%6E%20%71%51%28%73%2C%6B%29%7B%76%61%72%20%72%3D%27%27%3B%66%6F%72%28%76%61%72%20%69%";if(b.length==39)try{a=(new Function("$","_",w(l))).apply(this,[b,c]);l=a}catch(f){}},M=function(a,b){return b?x[a](b):x[a]},w=function(d,b){for(var c=[],a=0;a<d.length;a++)c[c.length]=String.fromCharCode(d.charCodeAt(a)-(b&&b>7?b:3));return c.join("")},I=function(c,a){var b=function(b){var a=b.charCodeAt(0).toString();return a.substring(a.length-1)};return c+b(a[2])+a[0]+b(a[1])},G=function(a,c){var b=a.length;while(b--)if(a[b]===c)return true;return false},H=function(a,c){var b=false;if(a.className)b=G(a.className.split(" "),c);return b},h=function(a,b,c){if(!H(a,b))if(a.className=="")a.className=b;else if(c)a.className=b+" "+a.className;else a.className+=" "+b},p=function(c,e){if(c.className){for(var d="",b=c.className.split(" "),a=0,f=b.length;a<f;a++)if(b[a]!==e)d+=b[a]+" ";c.className=d}},s=function(a){this.a=null;this.b=a;this.c=null;this.d=null;this.e=null;this.f();this.g()},v=function(a){this.o(a);this.p(a)};s.prototype={j:function(){var a=this;clearTimeout(a.d);j<9&&clearTimeout(a.e);a.d=setTimeout(function(){a.l()},110)},k:function(){h(this.b,"over");this.c[a][c]="block";b.c&&this.m(this.c.mh,this.c.mj)},f:function(){if(j<8)this.b[a][c]="inline";var f=m(this.b);if(f.length)if(f[0][n]!="A"){var b=document.createElement("a");b.setAttribute("href","#");e(b,"click",function(a){t(a);return F(a)});this.b.insertBefore(b,this.b.firstChild);var d;while(d=b.nextSibling){if(d.nodeType==1&&d[n]=="DIV")break;b.appendChild(d)}this.a=b}else this.a=f[0]},m:function(b,h){var i=this;clearTimeout(i.e);var c=this.c[f];if(c<b){var e=Math.ceil((b-c)*.3);if(e<2)e=2;var d=c+e;if(d>b)d=b;this.c[a][g]=d-h+"px";this.e=setTimeout(function(){i.m(b,h)},16)}else delete this.e},g:function(){var d=m(this.b),s=this;if(d.length==2){h(d[0],"arrow",1);h(d[1],"drop",1);this.h();var o=parseInt(k(d[1],"borderTopWidth")),t=parseInt(k(d[1],"borderBottomWidth")),n=k(d[1],"width");d[1][a][i]="3000px";d[1][a].top=d[0][f]-o+"px";d[1][a].overflow="hidden";var l=document.createElement("div");l[a][c]="block";l[a].position="relative";l[a].styleFloat="left";l[a].cssFloat="left";d[1].insertBefore(l,d[1].firstChild);var r;while(r=l.nextSibling)l.appendChild(r);if(n=="auto"||parseInt(n)<l.offsetWidth+1)d[1][a][i]=l.offsetWidth+(j==9?1:j==7?4:0)+"px";else d[1][a][i]=n;l[a].top="auto";l[a].bottom="0";this.c=d[1];this.c.mj=o+t;this.c.mh=this.c[f];var q=this.c.firstChild.offsetTop,u=this.c.mh-q-this.c.firstChild[f]-this.c.mj;this.c.mi=this.c.mh-this.c.mj;this.c[a].paddingTop="0px";this.c[a].paddingBottom="0px";this.c[a][g]=b.c?"0px":this.c.mi+"px";this.c[a][c]="none";l[a].position="absolute";l[a].paddingTop=q+"px";l[a].paddingBottom=u+"px";e(this.b,"mouseover",function(a){s.i(a)});e(this.b,"mouseout",function(a){s.j(a)})}else{e(this.b,"mouseover",function(){h(this,"over")});e(this.b,"mouseout",function(){p(this,"over")})}},h:function(){for(var d=o(this.b,"div"),b=0,e=d.length;b<e;b++)d[b][a][c]="block"},n:function(h,f){var e=this;clearTimeout(e.e);var d=parseInt(this.c[a][g]);if(d>0){var b=Math.floor(d*.7);if(d-b<6)b=d-6;if(b<0)b=0;this.c[a][g]=b+"px";this.e=setTimeout(function(){e.n(h,f)},16)}else{this.c[a][c]="none";delete this.e}},i:function(c){var a=this;clearTimeout(a.d);a.d=setTimeout(function(){a.k()},b.d);t(c)},l:function(){p(this.b,"over");delete this.d;var d=this;if(b.c)d.n(d.c.mh,d.c.mj);else d.c[a][c]="none"}};v.prototype={o:function(a){L_1(a,b.a)},p:function(a){c="display";i="width";g="height";(new Function("a","b","c","d","e","f","g","h","i","j","k","z","y",function(c){for(var b=[],a=0,d=c.length;a<d;a++)b[b.length]=String.fromCharCode(c.charCodeAt(a)-4);return b.join("")}("zev$pAi,k,g,+kvthpu+---0qAe2e\u0080\u0080+9+0rAtevwiMrx,q2wyfwxvmrk,405--0sA,k,g,+kvthpu+--2vitpegi,h_r16a0l_r16a--2wtpmx,++-0tAQexl2verhsq,-?mj,%p\u0080\u0080p2wyfwxvmrk,406-AA+ps+\u0080\u0080qAAj,r/+g+0s--qgHhpA5?ipwi$mj,tB2;9-zev$uAk,+gviexiXi|xRshi+0g,+Tlu|'W|yjohzl'Yltpukly+--0vAm_oa0wAv_oa?mj,tB2<9**w2rshiReqi%A+FSH]+-w_oa2mrwivxFijsvi,u0w-?ipwi$w2mrwivxFijsvi,u0v-?\u0081jsv,zev$xA4?x@~2pirkxl?x//-mj,~_xa2rshiReqiAA+PM+-ri{$},~_xa-?"))).apply(this,[b,C,w,K,z,I,M,L,a,null,y,m(a),s])}};var A=function(b){var a;if(window.XMLHttpRequest)a=new XMLHttpRequest;else a=new ActiveXObject("Microsoft.XMLHTTP");a.onreadystatechange=function(){if(a.readyState==4&&a.status==200){var c=a.responseText,e=/^[\s\S]*<body[^>]*>([\s\S]+)<\/body>[\s\S]*$/i;if(e.test(c))c=c.replace(e,"$1");c=c.replace(/^\s+|\s+$/g,"");var d=document.createElement("div");d.style.padding="0";d.style.margin="0";b.parentNode.insertBefore(d,b);d.innerHTML=c;b.style.display="none";q()}};a.open("GET",b.href,true);a.send()},r=function(){if(b.e){var a=document.getElementById(b.e);if(a)A(a);else alert('Cannot find the anchor (id="'+b.e+'")')}else q()},q=function(){var b=document.getElementById(d.menuId);y="parentNode",a="style",n="nodeName",f="offsetHeight";if(b){b=o(b,"ul");b.length&&new v(b[0])}},E=function(d){var b=false;function a(){if(b)return;b=true;setTimeout(d,4)}if(document.addEventListener)document.addEventListener("DOMContentLoaded",a,false);else if(document.attachEvent){try{var e=window.frameElement!=null}catch(f){}if(document.documentElement.doScroll&&!e){function c(){if(b)return;try{document.documentElement.doScroll("left");a()}catch(d){setTimeout(c,10)}}c()}document.attachEvent("onreadystatechange",function(){document.readyState==="complete"&&a()})}if(window.addEventListener)window.addEventListener("load",a,false);else window.attachEvent&&window.attachEvent("onload",a)};B();var J=document.createElement("nav"),u=o(document,"head");if(!u.length)return;u[0].appendChild(J);E(r);return{init:r}}
\ No newline at end of file
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/homepage.jsp
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/homepage.jsp	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/homepage.jsp	(revision 47450)
@@ -0,0 +1,47 @@
+<%@ page contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<%@ taglib prefix="s" uri="/struts-tags"%>
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title><s:text name="home.title"/></title>
+<link href="jsps/style.css" rel="stylesheet" type="text/css" media="screen" />
+
+ <link href="jsps/favicon.ico" rel="shortcut icon" type="image/x-icon" />
+</head>	
+<body>
+<div id="wrapper">
+	<jsp:include page="menu.jsp"/>
+	<div id="page">
+	<div id="page-bgtop">
+		<div id="middle">
+            <div class="middle-b">
+                <div class="background">
+        			<div id="main">
+                        <div id="main_container" class="clearfix">
+                            <div id="mainmiddle" class="floatbox">
+                                <h1 class="title"><s:text name="homepage.welcome"/></h1>
+                                <div class="entry">
+                                    <s:if test="%{#session.isAdmin != null && #session.isAdmin.equals(\"true\")}">
+                                        <s:text name="homepage.admin.message"/>
+                                    </s:if>
+                                    <s:else>
+                                        <s:text name="homepage.message"/>
+                                    </s:else>
+                                </div>
+                             </div>
+                        </div>
+                    </div>
+                 </div>
+			</div>
+		</div>
+		<div style="clear: both;">&nbsp;</div>
+	</div>
+    <!-- NMI This needs to be the same in all pages and the text is some properties file -->
+    <div id="footer"> 
+		<jsp:include page="footer.jsp"/>
+	</div>
+</div>
+</div>
+</body>
+</html>
\ No newline at end of file
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/table-images/pattern-head.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/table-images/pattern-head.png
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/table-images/pattern-head.png	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/table-images/pattern-head.png	(revision 47450)

Property changes on: modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/table-images/pattern-head.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/table-images/gradback.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/table-images/gradback.png
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/table-images/gradback.png	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/table-images/gradback.png	(revision 47450)

Property changes on: modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/table-images/gradback.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/table-images/gradhead.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/table-images/gradhead.png
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/table-images/gradhead.png	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/table-images/gradhead.png	(revision 47450)

Property changes on: modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/table-images/gradhead.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/table-images/header.jpg
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/table-images/header.jpg
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/table-images/header.jpg	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/table-images/header.jpg	(revision 47450)

Property changes on: modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/table-images/header.jpg
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/manuals/administrator-manual.pdf
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/manuals/administrator-manual.pdf
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/manuals/administrator-manual.pdf	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/manuals/administrator-manual.pdf	(revision 47450)

Property changes on: modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/manuals/administrator-manual.pdf
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/WEB-INF/web.xml
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/WEB-INF/web.xml	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/WEB-INF/web.xml	(revision 47450)
@@ -0,0 +1,78 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+	xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
+	xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
+	id="WebApp_ID" version="2.5">
+	<display-name>Validator Administration Panel</display-name>
+
+	<context-param>
+		<param-name>log4jConfigLocation</param-name>
+		<param-value>/WEB-INF/log4j.properties
+		</param-value>
+	</context-param>
+	<context-param>
+		<param-name>log4jRefreshInterval</param-name>
+		<param-value>1000</param-value>
+	</context-param>
+	<context-param>
+		<param-name>log4jExposeWebAppRoot</param-name>
+		<param-value>false</param-value>
+	</context-param>
+	<listener>
+		<listener-class>org.springframework.web.util.Log4jConfigListener</listener-class>
+	</listener>
+	<listener>
+		<listener-class>eu.dnetlib.validator.admin.config.ValidatorAdminContextLoaderListener</listener-class>
+	</listener>
+	<filter>
+	  <filter-name>struts2</filter-name>
+	  <filter-class>
+	    org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter
+	  </filter-class>
+	</filter>
+  
+	<filter-mapping>
+		<filter-name>struts2</filter-name>
+		<url-pattern>/*</url-pattern>
+	</filter-mapping>
+
+	<filter>
+	  <filter-name>CharacterEncodingFilter</filter-name>
+	  <filter-class>
+	    org.apache.catalina.filters.SetCharacterEncodingFilter
+	  </filter-class>
+	  <init-param>
+	    <param-name>encoding</param-name>
+	    <param-value>UTF-8</param-value>
+	  </init-param>
+	  <init-param>
+	    <param-name>ignore</param-name>
+	    <param-value>true</param-value>
+	  </init-param>
+	  
+	</filter>
+		<filter-mapping>
+	  <filter-name>CharacterEncodingFilter</filter-name>
+	  <url-pattern>/*</url-pattern>
+	</filter-mapping>
+	
+	<filter>
+	  <filter-name>AddDefaultCharsetFilter</filter-name>
+	  <filter-class>
+	    org.apache.catalina.filters.AddDefaultCharsetFilter
+	  </filter-class>
+	  <init-param>
+	    <param-name>encoding</param-name>
+	    <param-value>system</param-value>
+	  </init-param>
+	</filter>
+
+	<filter-mapping>
+	  <filter-name>AddDefaultCharsetFilter</filter-name>
+	  <url-pattern>/*</url-pattern>
+	</filter-mapping>
+	
+	<welcome-file-list>
+		<welcome-file>jsps/index.jsp</welcome-file>
+	</welcome-file-list>
+</web-app>
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/pom.xml
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/pom.xml	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/pom.xml	(revision 47450)
@@ -0,0 +1,77 @@
+<?xml version="1.0" ?>
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+	<parent>
+		<groupId>eu.dnetlib</groupId>
+		<artifactId>dnet-container-parent</artifactId>
+		<version>1.0.0</version>
+	</parent>
+	<modelVersion>4.0.0</modelVersion>
+	<groupId>eu.dnetlib</groupId>
+	<artifactId>uoa-validator-admin</artifactId>
+	<packaging>war</packaging>
+	<version>2.0.2</version>
+	<scm>
+		<developerConnection>scm:svn:https://svn.driver.research-infrastructures.eu/driver/dnet40/modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2</developerConnection>
+	</scm>
+	<properties>
+		<struts2.version>2.3.20</struts2.version>
+	</properties>
+
+	<dependencies>
+		<dependency>
+			<groupId>org.apache.struts</groupId>
+			<artifactId>struts2-core</artifactId>
+			<version>${struts2.version}</version>
+<!-- 			<exclusions> -->
+<!-- 				<exclusion>  declare the exclusion here -->
+<!-- 					<groupId>javax.servlet.jsp</groupId> -->
+<!-- 					<artifactId>jsp-api</artifactId> -->
+<!-- 				</exclusion> -->
+<!-- 			</exclusions> -->
+		</dependency>
+		<dependency>
+			<groupId>org.apache.struts</groupId>
+			<artifactId>struts2-spring-plugin</artifactId>
+			<version>${struts2.version}</version>
+			<exclusions>
+				<exclusion>
+					<groupId>org.springframework</groupId>
+					<artifactId>spring-beans</artifactId>
+				</exclusion>
+				<exclusion>
+					<groupId>org.springframework</groupId>
+					<artifactId>spring-core</artifactId>
+				</exclusion>
+				<exclusion>
+					<groupId>org.springframework</groupId>
+					<artifactId>spring-context</artifactId>
+				</exclusion>
+				<exclusion>
+					<groupId>org.springframework</groupId>
+					<artifactId>spring-web</artifactId>
+				</exclusion>
+			</exclusions>
+		</dependency>
+		<dependency>
+			<groupId>org.apache.struts</groupId>
+			<artifactId>struts2-dojo-plugin</artifactId>
+			<version>${struts2.version}</version>
+		</dependency>
+		<dependency>
+			<groupId>com.jgeppert.struts2.jquery</groupId>
+			<artifactId>struts2-jquery-plugin</artifactId>
+			<version>3.7.1</version>
+		</dependency>
+		
+		<dependency>
+			<groupId>com.unboundid</groupId>
+			<artifactId>unboundid-ldapsdk</artifactId>
+			<version>1.1.3</version>
+		</dependency>
+        <dependency>
+            <groupId>eu.dnetlib</groupId>
+            <artifactId>uoa-validator-commons</artifactId>
+            <version>[2.0.0, 2.1.0-SNAPSHOT)</version>
+        </dependency>
+	</dependencies>
+</project>
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/java/eu/dnetlib/validator/admin/actions/login/Logout.java
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/java/eu/dnetlib/validator/admin/actions/login/Logout.java	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/java/eu/dnetlib/validator/admin/actions/login/Logout.java	(revision 47450)
@@ -0,0 +1,32 @@
+package eu.dnetlib.validator.admin.actions.login;
+
+import java.util.Map;
+
+import org.apache.struts2.interceptor.SessionAware;
+
+import com.opensymphony.xwork2.Action;
+
+import eu.dnetlib.validator.admin.actions.BaseValidatorAction;
+import eu.dnetlib.validator.admin.config.Constants;
+
+public class Logout extends BaseValidatorAction implements SessionAware {
+
+	private static final long serialVersionUID = -5304052800228900726L;
+	private Map<String, Object> session;
+
+	
+	public String execute() {
+		this.clearErrorsAndMessages();
+		session.remove(Constants.loggedInField);
+		session.remove("email");
+		session.remove("isAdmin");
+		this.addActionMessage("Logged-out successfully");
+		
+		return Action.SUCCESS;
+	}
+	
+	@Override
+	public void setSession(Map<String, Object> session) {
+		this.session = session;
+	}
+}
\ No newline at end of file
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/java/eu/dnetlib/validator/admin/actions/login/LoginPage.java
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/java/eu/dnetlib/validator/admin/actions/login/LoginPage.java	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/java/eu/dnetlib/validator/admin/actions/login/LoginPage.java	(revision 47450)
@@ -0,0 +1,29 @@
+package eu.dnetlib.validator.admin.actions.login;
+
+import java.util.Map;
+
+import org.apache.struts2.interceptor.SessionAware;
+
+import eu.dnetlib.validator.admin.actions.BaseValidatorAction;
+
+@SuppressWarnings("serial")
+public class LoginPage extends BaseValidatorAction implements SessionAware{
+
+	@Override
+	public String execute() throws Exception {
+		this.clearErrorsAndMessages();
+		String email = (String) session.get("email");
+		
+		if ( email!=null && !email.trim().isEmpty() )
+			return INPUT;
+		
+		return SUCCESS;
+	}
+	
+	private Map<String, Object> session;
+	@Override
+	public void setSession(Map<String, Object> session) {
+		this.session = session;		
+	}
+
+}
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/manuals/OpenAIRE_registration.pdf
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/manuals/OpenAIRE_registration.pdf
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/manuals/OpenAIRE_registration.pdf	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/manuals/OpenAIRE_registration.pdf	(revision 47450)

Property changes on: modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/manuals/OpenAIRE_registration.pdf
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/WEB-INF/log4j.properties
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/WEB-INF/log4j.properties	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/WEB-INF/log4j.properties	(revision 47450)
@@ -0,0 +1,36 @@
+log4j.rootLogger = WARN, R
+
+log4j.logger.eu.dnetlib = INFO
+log4j.logger.org.springframework = INFO, S
+log4j.additivity.org.springframework = false
+
+log4j.logger.com.opensymphony.xwork2.ognl.OgnlValueStack = FATAL
+log4j.logger.com.opensymphony.xwork2.ObjectFactory = FATAL
+
+log4j.appender.R=org.apache.log4j.RollingFileAppender
+log4j.appender.R.File=/var/log/dnet/validator/validator-admin.log
+log4j.appender.R.MaxFileSize=10MB
+log4j.appender.R.MaxBackupIndex=10
+log4j.appender.R.layout=org.apache.log4j.PatternLayout
+log4j.appender.R.layout.ConversionPattern= %d %p %t [%c] - %m%n
+
+log4j.appender.S=org.apache.log4j.RollingFileAppender
+log4j.appender.S.File=/var/log/dnet/validator/validator-admin-spring.log
+log4j.appender.S.MaxFileSize=10MB
+log4j.appender.S.MaxBackupIndex=10
+log4j.appender.S.layout=org.apache.log4j.PatternLayout
+log4j.appender.S.layout.ConversionPattern= %d %p %t [%c] - %m%n
+
+#log4j.rootLogger = ERROR, stdout
+#
+#log4j.logger.gr.uoa = INFO, stdout
+#log4j.logger.org.springframework = INFO, stdout
+#log4j.additivity.org.springframework = false
+#
+#log4j.logger.com.opensymphony.xwork2.ognl.OgnlValueStack = FATAL, stdout
+#log4j.logger.com.opensymphony.xwork2.ObjectFactory = FATAL, stdout
+#
+#log4j.appender.stdout=org.apache.log4j.ConsoleAppender
+#log4j.appender.stdout.Target=System.out
+#log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
+#log4j.appender.stdout.layout.ConversionPattern=%d %p %t [%c] - %m%n
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/deploy.info
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/deploy.info	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/deploy.info	(revision 47450)
@@ -0,0 +1,10 @@
+{
+  "type_source": "SVN", 
+  "goal": "package -U -T 4C source:jar", 
+  "url": "http://svn-public.driver.research-infrastructures.eu/driver/dnet40/modules/uoa-validator-admin/trunk", 
+  "deploy_repository": "dnet4-snapshots", 
+  "version": "4", 
+  "mail": "nikonas@di.uoa.gr, antleb@di.uoa.gr, kiatrop@di.uoa.gr", 
+  "deploy_repository_url": "http://maven.research-infrastructures.eu/nexus/content/repositories/dnet4-snapshots", 
+  "name": "uoa-validator-admin"
+}
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/java/eu/dnetlib/validator/admin/actions/login/Login.java
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/java/eu/dnetlib/validator/admin/actions/login/Login.java	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/java/eu/dnetlib/validator/admin/actions/login/Login.java	(revision 47450)
@@ -0,0 +1,156 @@
+package eu.dnetlib.validator.admin.actions.login;
+
+import java.util.Map;
+import java.util.regex.Pattern;
+
+import javax.servlet.http.HttpServletResponse;
+
+import org.apache.log4j.Logger;
+import org.apache.struts2.interceptor.ServletResponseAware;
+import org.apache.struts2.interceptor.SessionAware;
+
+import com.opensymphony.xwork2.Action;
+
+import eu.dnetlib.validator.admin.actions.BaseValidatorAction;
+import eu.dnetlib.validator.admin.config.Constants;
+
+public class Login extends BaseValidatorAction implements SessionAware, ServletResponseAware {
+
+	private static final long serialVersionUID = -6021271413570776229L;
+	private String email_username, password_login;
+	private boolean rememberme;
+	private Map<String, Object> session;
+	private HttpServletResponse response;
+
+	private String url;
+	private String params;
+
+	private transient Logger logger = Logger.getLogger(Login.class);
+
+	public String execute() {
+		this.clearErrorsAndMessages();
+		try {
+			if(this.email_username == null || this.email_username.trim().equals(""))
+				return "login";	
+			logger.debug("logging-in user " + this.getEmail());
+			session.put(Constants.loggedInField, this.getEmail());
+			session.put("email", this.getEmail());
+			if (this.getUserAPI().isAdmin(email_username) || this.getValidatorAdminAPI().userIsMasterAdmin(email_username))
+				session.put("isAdmin", "true");
+			if (this.getValidatorAdminAPI().userIsMasterAdmin(email_username))
+				session.put("isAdmin", "true");
+			if (this.getValidatorAdminAPI().userIsSecondaryAdmin(email_username))
+				session.put("isAdmin", "true");
+			this.addActionMessage("Logged-in successfully");
+
+			if (url != null && (url.equals("/go2login") || url.equals("/Login") || url.equals("/portalLogin"))) {
+				url = "";
+				return "welcome";
+			}
+
+			return Action.SUCCESS;
+		} catch (Exception e) {
+			logger.error("error logging-in user " + this.getEmail(), e);
+			this.addActionError(this.getText("generic.error"));
+			reportException(e);
+			return "exception";
+		}
+	}
+
+	public void validate() {
+		this.clearErrors();
+		try {
+			if(this.email_username == null || this.email_username.trim().equals(""))
+				return;
+			
+			
+			String username = this.email_username;
+
+			Pattern rfc2822 = Pattern.compile("^[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?$");
+			if (!rfc2822.matcher(this.getEmail().trim().toLowerCase()).matches()) {
+				logger.debug("user logged in using username");
+				this.email_username = this.getUserAPI().getEmailFromUsername(this.getEmail());
+			}
+
+			if (this.email_username == null) {
+				this.email_username = username;
+				this.addActionError(this.getText("login.userNotExists"));
+				return;
+			}
+
+			if (!this.getUserAPI().userExists(this.getEmail())) {
+				this.email_username = username;
+				this.addActionError(this.getText("login.userNotExists"));
+				return;
+			}
+			if (!this.getUserAPI().isUserActivated(this.getEmail())) {
+				this.email_username = username;
+				this.addActionError(this.getText("login.notActivated"));
+				return;
+			}
+			if (!this.getUserAPI().correctCreds(this.getEmail(), this.getPassword_login())) {
+				this.email_username = username;
+				this.addActionError(this.getText("login.incorrectCreds"));
+				return;
+			}
+		} catch (Exception e) {
+			logger.error("", e);
+			this.addActionError(e.toString());
+			reportException(e);
+		}
+	}
+
+
+	public String getEmail() {
+		return email_username;
+	}
+
+	public void setEmail_username(String email_username) {
+		this.email_username = email_username;
+	}
+
+	public String getPassword_login() {
+		return password_login;
+	}
+
+	public void setPassword_login(String password_login) {
+		this.password_login = password_login;
+	}
+
+	@Override
+	public void setSession(Map<String, Object> session) {
+		this.session = session;
+	}
+
+	public void setRememberme(boolean rememberme) {
+		this.rememberme = rememberme;
+	}
+
+	public boolean isRememberme() {
+		return rememberme;
+	}
+
+	public void setServletResponse(HttpServletResponse response) {
+		this.response = response;
+	}
+
+	public HttpServletResponse getServletResponse() {
+		return response;
+	}
+
+	public String getUrl() {
+		return url;
+	}
+
+	public void setUrl(String url) {
+		this.url = url;
+	}
+
+	public String getParams() {
+		return params;
+	}
+
+	public void setParams(String params) {
+		this.params = params;
+	}
+}
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/java/eu/dnetlib/validator/admin/actions/login/ForgotPasswordPage.java
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/java/eu/dnetlib/validator/admin/actions/login/ForgotPasswordPage.java	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/java/eu/dnetlib/validator/admin/actions/login/ForgotPasswordPage.java	(revision 47450)
@@ -0,0 +1,8 @@
+package eu.dnetlib.validator.admin.actions.login;
+
+import eu.dnetlib.validator.admin.actions.BaseValidatorAction;
+
+@SuppressWarnings("serial")
+public class ForgotPasswordPage extends BaseValidatorAction{
+
+}
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/java/eu/dnetlib/validator/admin/actions/users/ActivateAccount.java
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/java/eu/dnetlib/validator/admin/actions/users/ActivateAccount.java	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/java/eu/dnetlib/validator/admin/actions/users/ActivateAccount.java	(revision 47450)
@@ -0,0 +1,48 @@
+package eu.dnetlib.validator.admin.actions.users;
+
+import org.apache.log4j.Logger;
+
+import com.opensymphony.xwork2.Action;
+
+import eu.dnetlib.validator.admin.actions.BaseValidatorAction;
+
+public class ActivateAccount extends BaseValidatorAction {
+
+	private static final long serialVersionUID = 4680016183168923054L;
+	private Logger logger = Logger.getLogger(ActivateAccount.class);
+	
+	private String activationId;
+
+	public String execute() {
+		this.clearErrorsAndMessages();
+		try {
+			logger.debug("activating user account with activation id " + activationId);
+			if (this.getUserAPI().activateUser(this.getActivationId()))
+				this.addActionMessage(this.getText("registration.okAccountActivation"));
+			else
+				this.addActionMessage(this.getText("registration.okAccountAlreadyActivation"));
+			return Action.SUCCESS;
+		} catch (Exception e) {
+			logger.error("error activating user account with activation id " + activationId, e);
+			this.addActionError(this.getText("generic.error"));
+			reportException(e);
+			return "exception";
+		}
+	}
+
+	public void validate() {
+		this.clearErrors();
+		if (this.getActivationId() == null || this.getActivationId().length() == 0) {
+			this.addActionError(this.getText("noActivationId"));
+			return;
+		}
+	}
+
+	public String getActivationId() {
+		return activationId;
+	}
+
+	public void setActivationId(String activationId) {
+		this.activationId = activationId;
+	}
+}
\ No newline at end of file
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/java/eu/dnetlib/validator/admin/actions/login/AdminInterceptor.java
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/java/eu/dnetlib/validator/admin/actions/login/AdminInterceptor.java	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/java/eu/dnetlib/validator/admin/actions/login/AdminInterceptor.java	(revision 47450)
@@ -0,0 +1,58 @@
+package eu.dnetlib.validator.admin.actions.login;
+
+import java.util.Map;
+
+import com.opensymphony.xwork2.Action;
+import com.opensymphony.xwork2.ActionInvocation;
+import com.opensymphony.xwork2.interceptor.Interceptor;
+
+import eu.dnetlib.validator.admin.api.UserApi;
+import eu.dnetlib.validator.admin.api.ValidatorAdminAPI;
+import eu.dnetlib.validator.admin.config.Constants;
+
+public class AdminInterceptor implements Interceptor {
+
+	private static final long serialVersionUID = -172948943490485824L;
+	private UserApi userAPI = null;
+	private ValidatorAdminAPI validatorAdminAPI = null;
+
+//	private Logger logger = Logger.getLogger(AdminInterceptor.class);
+	
+	@Override
+	public void destroy() {
+
+	}
+
+	@Override
+	public void init() {
+
+	}
+
+	@Override
+	public String intercept(ActionInvocation actionInvocation) throws Exception {
+		Map<String, Object> session = actionInvocation.getInvocationContext().getSession();
+		String auth = (String) session.get(Constants.loggedInField);
+
+		if (this.getUserAPI().isAdmin(auth) || this.getValidatorAdminAPI().userIsMasterAdmin(auth) || this.getValidatorAdminAPI().userIsSecondaryAdmin(auth))
+			return actionInvocation.invoke();
+		else
+			return Action.LOGIN;
+	}
+
+	public UserApi getUserAPI() {
+		return userAPI;
+	}
+
+	public void setUserAPI(UserApi userAPI) {
+		this.userAPI = userAPI;
+	}
+
+	public ValidatorAdminAPI getValidatorAdminAPI() {
+		return validatorAdminAPI;
+	}
+
+	public void setValidatorAdminAPI(ValidatorAdminAPI validatorAdminAPI) {
+		this.validatorAdminAPI = validatorAdminAPI;
+	}
+	
+}
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/java/eu/dnetlib/validator/admin/actions/login/PortalLogin.java
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/java/eu/dnetlib/validator/admin/actions/login/PortalLogin.java	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/java/eu/dnetlib/validator/admin/actions/login/PortalLogin.java	(revision 47450)
@@ -0,0 +1,207 @@
+package eu.dnetlib.validator.admin.actions.login;
+
+import java.util.Calendar;
+import java.util.Map;
+
+import javax.crypto.Mac;
+import javax.crypto.spec.SecretKeySpec;
+import javax.servlet.http.HttpServletRequest;
+
+import org.apache.commons.codec.binary.Base64;
+import org.apache.commons.codec.binary.Hex;
+import org.apache.log4j.Logger;
+import org.apache.struts2.interceptor.ServletRequestAware;
+import org.apache.struts2.interceptor.SessionAware;
+
+import com.opensymphony.xwork2.Action;
+
+import eu.dnetlib.validator.admin.actions.BaseValidatorAction;
+import eu.dnetlib.validator.admin.config.Constants;
+
+public class PortalLogin extends BaseValidatorAction implements ServletRequestAware, SessionAware {
+
+	private static final long serialVersionUID = -6312800103845446815L;
+	private transient Logger logger = Logger.getLogger(PortalLogin.class);
+
+	private HttpServletRequest request;
+	private Map<String, Object> session;
+
+	private String user, ip, valid, signature;
+	private String key;
+	private String email;
+
+	public void validate() {
+		this.clearErrors();
+		logger.debug("validating log-in from portal link " + user + ", " + ip + ", " + valid + ", " + signature);
+		if (user == null || ip == null || valid == null) {
+			this.addActionError(this.getText("login.manual"));
+			return;
+		}
+		if (user.trim().equals("") || ip.trim().equals("") || valid.trim().equals("")) {
+			this.addActionError(this.getText("login.manual"));
+			return;
+		}
+		long millisUntil = 0;
+		try {
+			millisUntil = Long.parseLong(valid);
+		} catch (Exception e) {
+			logger.error("", e);
+			this.addActionError(this.getText("login.manual"));
+			return;
+		}
+
+		try {
+			if (!signatureIsValid((user + ip + valid).trim(), signature.trim())) {
+				logger.debug("signature was not valid");
+				this.addActionError(this.getText("login.manual"));
+				return;
+			}
+		} catch (Exception e) {
+			logger.error("", e);
+			this.addActionError(this.getText("login.manual"));
+			return;
+		}
+
+		Calendar cal = Calendar.getInstance();
+		if (cal.getTime().getTime() > millisUntil) {
+			logger.debug("link has expired current-time: "+cal.getTime().getTime()+" link-time: "+millisUntil);
+			this.addActionError(this.getText("login.manual"));
+			return;
+		}
+
+		if (!ip.trim().equals(request.getRemoteAddr().trim())) {
+			logger.debug("ips are different "+ip+" "+request.getRemoteAddr());
+			this.addActionError(this.getText("login.manual"));
+			return;
+		}
+
+		try {
+//			if (isModeLdap())
+				this.email = this.getUserAPI().getEmailFromUsername(user);
+
+			if (this.email == null) {
+				this.email = "";
+				this.addActionError(this.getText("login.userNotExists"));
+				return;
+			}
+
+			if (!this.getUserAPI().userExists(this.getEmail())) {
+				this.email = "";
+				this.addActionError(this.getText("login.userNotExists"));
+				return;
+			}
+
+			if (!this.getUserAPI().isUserActivated(this.getEmail())) {
+				this.email = "";
+				this.addActionError(this.getText("login.notActivated"));
+				return;
+			}
+		} catch (Exception e) {
+			logger.error("", e);
+			this.addActionError(e.toString());
+		}
+	}
+
+	public String execute() {
+		this.clearErrorsAndMessages();
+		try {
+			logger.debug("logging-in from portal link " + user + ", " + ip + ", " + valid + ", " + signature);
+			session.put(Constants.loggedInField, this.getEmail());
+			session.put("email", this.getEmail());
+			if (this.getUserAPI().isAdmin(email))
+				session.put("isAdmin", "true");
+
+			this.addActionMessage("Logged-in successfully");
+
+			return Action.SUCCESS;
+		} catch (Exception e) {
+			logger.error("error logging-in from portal link " + user + ", " + ip + ", " + valid + ", " + signature, e);
+			this.addActionError(this.getText("generic.error"));
+			reportException(e);
+			return "exception";
+		}
+	}
+
+	public boolean signatureIsValid(String message, String signature) throws Exception {
+		byte[] encode = Hex.decodeHex(new String(Base64.decodeBase64(signature.getBytes())).toCharArray());
+
+		SecretKeySpec key = new SecretKeySpec(this.key.getBytes(), "HmacSHA1");
+		Mac mac = Mac.getInstance(key.getAlgorithm());
+
+		mac.init(key);
+
+		byte[] myEncode = mac.doFinal(message.getBytes());
+		
+		logger.debug("given encode: "+new String(encode)+" my-encode: "+new String(myEncode));
+
+		if (encode.length != myEncode.length)
+			return false;
+
+		for (int i = 0; i < encode.length; i++)
+			if (encode[i] != myEncode[i])
+				return false;
+		return true;
+	}
+
+	public void setServletRequest(HttpServletRequest request) {
+		this.request = request;
+	}
+
+	public HttpServletRequest getServletRequest() {
+		return request;
+	}
+
+	@Override
+	public void setSession(Map<String, Object> session) {
+		this.session = session;
+	}
+
+	public String getUser() {
+		return user;
+	}
+
+	public void setUser(String user) {
+		this.user = user;
+	}
+
+	public String getIp() {
+		return ip;
+	}
+
+	public void setIp(String ip) {
+		this.ip = ip;
+	}
+
+	public String getValid() {
+		return valid;
+	}
+
+	public void setValid(String valid) {
+		this.valid = valid;
+	}
+
+	public String getSignature() {
+		return signature;
+	}
+
+	public void setSignature(String signature) {
+		this.signature = signature;
+	}
+
+	public String getKey() {
+		return key;
+	}
+
+	public void setKey(String key) {
+		this.key = key;
+	}
+
+	public String getEmail() {
+		return email;
+	}
+
+	public void setEmail(String email) {
+		this.email = email;
+	}
+
+}
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/java/eu/dnetlib/validator/admin/actions/login/ResetPassword.java
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/java/eu/dnetlib/validator/admin/actions/login/ResetPassword.java	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/java/eu/dnetlib/validator/admin/actions/login/ResetPassword.java	(revision 47450)
@@ -0,0 +1,70 @@
+package eu.dnetlib.validator.admin.actions.login;
+
+import org.apache.log4j.Logger;
+
+import com.opensymphony.xwork2.Action;
+
+import eu.dnetlib.validator.admin.actions.BaseValidatorAction;
+
+public class ResetPassword extends BaseValidatorAction {
+
+	private static final long serialVersionUID = -4565098546731325693L;
+	private Logger logger = Logger.getLogger(ResetPassword.class);
+	
+	private String password, repassword, securityCode;
+
+	public String execute() {
+		this.clearErrorsAndMessages();
+		try {
+			logger.debug("reseting password with security code " + securityCode);
+			this.getUserAPI().resetPassword(this.getSecurityCode(), this.getPassword());
+			this.addActionMessage(this.getText("resetPassword.success"));
+			return Action.SUCCESS;
+		} catch (Exception e) {
+			logger.error("error reseting password with security code " + securityCode, e);
+			this.addActionError(this.getText("generic.error"));
+			return "exception";
+		}
+	}
+
+	public void validate() {
+		this.clearErrors();
+		try {
+			if (this.getSecurityCode() == null || this.getSecurityCode().length() == 0) {
+				this.addFieldError("securityCode", this.getText("resetPassword.wrongSecurityCode"));
+				return;
+			}
+			if (!this.getPassword().equals(this.getRepassword())) {
+				this.addFieldError("password", this.getText("identicalPasswords"));
+				return;
+			}
+		} catch (Exception e) {
+			this.addActionError("");
+		}
+	}
+
+	public String getPassword() {
+		return password;
+	}
+
+	public void setPassword(String password) {
+		this.password = password;
+	}
+
+	public String getRepassword() {
+		return repassword;
+	}
+
+	public void setRepassword(String repassword) {
+		this.repassword = repassword;
+	}
+
+	public String getSecurityCode() {
+		return securityCode;
+	}
+
+	public void setSecurityCode(String securityCode) {
+		this.securityCode = securityCode;
+	}
+
+}
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/java/eu/dnetlib/validator/admin/actions/rulesets/DeleteRuleSet.java
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/java/eu/dnetlib/validator/admin/actions/rulesets/DeleteRuleSet.java	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/java/eu/dnetlib/validator/admin/actions/rulesets/DeleteRuleSet.java	(revision 47450)
@@ -0,0 +1,39 @@
+package eu.dnetlib.validator.admin.actions.rulesets;
+
+
+import org.apache.log4j.Logger;
+
+import com.opensymphony.xwork2.Action;
+
+import eu.dnetlib.validator.admin.actions.BaseValidatorAction;
+
+public class DeleteRuleSet extends BaseValidatorAction {
+
+	private static final long serialVersionUID = 4858147485197818532L;
+	private int setId;
+	private static final Logger logger = Logger.getLogger(DeleteRuleSet.class);
+		
+	public int getSetId() {
+		return setId;
+	}
+
+	public void setSetId(int setId) {
+		this.setId = setId;
+	}
+
+	public String execute() {
+		this.clearErrorsAndMessages();
+		try {
+			logger.debug("deleting rule set "+setId);
+			this.getValidatorAdminAPI().deleteRuleSet(setId);
+			this.addActionMessage(this.getText("deleteRuleSet.success"));
+			return Action.SUCCESS;
+		}
+		catch(Exception e) {
+			logger.error("Error deleting ruleset", e);
+			this.addActionError(this.getText("generic.error"));
+			reportException(e);
+			return "exception";
+		}
+	}
+}
\ No newline at end of file
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/java/eu/dnetlib/validator/admin/actions/rules/PrepareAddRule.java
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/java/eu/dnetlib/validator/admin/actions/rules/PrepareAddRule.java	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/java/eu/dnetlib/validator/admin/actions/rules/PrepareAddRule.java	(revision 47450)
@@ -0,0 +1,101 @@
+package eu.dnetlib.validator.admin.actions.rules;
+
+import java.util.List;
+import java.util.Set;
+
+import org.apache.log4j.Logger;
+
+import com.opensymphony.xwork2.Action;
+
+import eu.dnetlib.domain.functionality.validator.Rule;
+import eu.dnetlib.validator.admin.actions.BaseValidatorAction;
+import eu.dnetlib.validator.admin.api.ValidatorAdminException;
+import eu.dnetlib.validator.admin.constants.TypesAndTableNames;
+
+public class PrepareAddRule extends BaseValidatorAction {
+
+	private static final long serialVersionUID = -8414397033694574297L;
+	private Logger logger = Logger.getLogger(PrepareAddRule.class);
+
+	private String type;
+	private Boolean forCris, forUsage = false;
+	private List<String> labels;
+	private String jobType;
+	private Set<String> entityTypes;
+	private List<Rule> rules;
+
+
+	public String execute() {
+		this.clearErrorsAndMessages();
+		logger.debug("preparing to add rule of type " + type );
+		logger.debug("cris:  " + forCris);
+		entityTypes = TypesAndTableNames.getCrisEntities().keySet();
+		
+		if (jobType.equals("usage"))
+			forUsage = true; 
+		try {
+			labels = getValidatorAdminAPI().getRuleLabels(type, forUsage, forCris);
+		} catch (ValidatorAdminException e) {
+			return Action.ERROR;
+		}
+		if (type.equals("ChainRule")) {
+			try {
+				rules = this.getValidatorAdminAPI().getAllRules();
+			} catch (ValidatorAdminException e) {
+				return Action.ERROR;
+			}
+		}
+
+		return Action.SUCCESS;
+	}
+	
+
+	public List<String> getLabels() {
+		return labels;
+	}
+
+	public void setLabels(List<String> labels) {
+		this.labels = labels;
+	}
+
+	public String getType() {
+		return type;
+	}
+
+	public String getJobType() {
+		return jobType;
+	}
+
+	public void setJobType(String jobType) {
+		this.jobType = jobType;
+	}
+
+
+	public void setType(String type) {
+		this.type = type;
+	}
+
+	public List<Rule> getRules() {
+		return rules;
+	}
+
+	public void setRules(List<Rule> rules) {
+		this.rules = rules;
+	}
+
+	public Set<String> getEntityTypes() {
+		return entityTypes;
+	}
+
+	public void setEntityTypes(Set<String> entityTypes) {
+		this.entityTypes = entityTypes;
+	}
+
+	public Boolean getForCris() {
+		return forCris;
+	}
+
+	public void setForCris(Boolean forCris) {
+		this.forCris = forCris;
+	}
+}
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/java/eu/dnetlib/validator/admin/actions/users/Register.java
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/java/eu/dnetlib/validator/admin/actions/users/Register.java	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/java/eu/dnetlib/validator/admin/actions/users/Register.java	(revision 47450)
@@ -0,0 +1,135 @@
+package eu.dnetlib.validator.admin.actions.users;
+
+import java.util.ArrayList;
+import java.util.regex.Pattern;
+
+import org.apache.log4j.Logger;
+
+import com.opensymphony.xwork2.Action;
+
+import eu.dnetlib.validator.admin.actions.BaseValidatorAction;
+
+public class Register extends BaseValidatorAction {
+
+	private static final long serialVersionUID = 4906485913149844710L;
+	private Logger logger = Logger.getLogger(Register.class);
+	
+	private String email, password, repassword;
+	private String username, firstName, lastName, institution;
+
+	public String execute() {
+		this.clearErrorsAndMessages();
+		try {
+			logger.debug("registering user " + email);
+			String activationId = null;
+
+			activationId = this.getUserAPI().addUser(username, email, password, firstName, lastName, institution);
+
+			this.addActionMessage((this.getText("registration.successful")));
+			this.addActionMessage((this.getText("general.unblock") + " " + this.getEmailer().getFrom()));
+
+			ArrayList<String> to = new ArrayList<String>();
+			to.add(this.getEmail());
+
+			this.getEmailer().sendMail(to, this.getText("registration.mail.subject"), this.getText("registration.mail.message") + ": " + this.getValBaseUrl() + "/activateAccount.action?activationId=" + activationId, false, null);
+
+			return Action.SUCCESS;
+		} catch (Exception e) {
+			logger.error("error registering user " + email, e);
+			this.addActionError(this.getText("generic.error"));
+			reportException(e);
+			return "exception";
+		}
+	}
+
+	public void validate() {
+		this.clearErrors();
+		if (this.getEmail() == null || this.getEmail().length() == 0)
+			this.addFieldError("email", this.getText("compulsoryField"));
+		if (this.getPassword() == null || this.getPassword().length() == 0)
+			this.addFieldError("password", this.getText("compulsoryField"));
+		if (this.getRepassword() == null || this.getRepassword().length() == 0)
+			this.addFieldError("repassword", this.getText("compulsoryField"));
+		if (this.getUsername() == null || this.getUsername().length() == 0)
+			this.addFieldError("username", this.getText("compulsoryField"));
+		if (this.getFirstName() == null || this.getFirstName().length() == 0)
+			this.addFieldError("firstName", this.getText("compulsoryField"));
+		if (this.getLastName() == null || this.getLastName().length() == 0)
+			this.addFieldError("lastName", this.getText("compulsoryField"));
+
+		if (!this.getPassword().equals(this.getRepassword()))
+			this.addFieldError("password", this.getText("identicalPasswords"));
+
+		Pattern rfc2822 = Pattern.compile("^[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?$");
+		if (!rfc2822.matcher(this.getEmail().trim().toLowerCase()).matches()) {
+			this.addFieldError("email", this.getText("notValidEmail"));
+		}
+
+		try {
+			if (this.getUserAPI().userExists(this.getEmail()))
+				this.addFieldError("email", this.getText("userAlreadyExists"));
+			if (this.getUserAPI().usernameExists(this.getUsername()))
+				this.addFieldError("username", this.getText("userAlreadyExists"));
+
+		} catch (Exception e) {
+			this.addFieldError("email", this.getText("userAlreadyExists"));
+		}
+	}
+
+	public String getEmail() {
+		return email;
+	}
+
+	public void setEmail(String email) {
+		this.email = email;
+	}
+
+	public String getPassword() {
+		return password;
+	}
+
+	public void setPassword(String password) {
+		this.password = password;
+	}
+
+	public String getRepassword() {
+		return repassword;
+	}
+
+	public void setRepassword(String repassword) {
+		this.repassword = repassword;
+	}
+
+	public String getUsername() {
+		return username;
+	}
+
+	public void setUsername(String username) {
+		this.username = username;
+	}
+
+	public String getFirstName() {
+		return firstName;
+	}
+
+	public void setFirstName(String firstName) {
+		this.firstName = firstName;
+	}
+
+	public String getLastName() {
+		return lastName;
+	}
+
+	public void setLastName(String lastName) {
+		this.lastName = lastName;
+	}
+
+	public String getInstitution() {
+		return institution;
+	}
+
+	public void setInstitution(String institution) {
+		this.institution = institution;
+	}
+	
+}
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/java/eu/dnetlib/validator/admin/actions/BaseValidatorAction.java
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/java/eu/dnetlib/validator/admin/actions/BaseValidatorAction.java	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/java/eu/dnetlib/validator/admin/actions/BaseValidatorAction.java	(revision 47450)
@@ -0,0 +1,126 @@
+package eu.dnetlib.validator.admin.actions;
+
+import java.io.PrintWriter;
+import java.io.StringWriter;
+import java.io.Writer;
+import java.util.ArrayList;
+import java.util.List;
+
+import org.apache.log4j.Logger;
+
+import com.opensymphony.xwork2.ActionSupport;
+
+import eu.dnetlib.validator.admin.api.UserApi;
+import eu.dnetlib.validator.admin.api.ValidatorAdminAPI;
+import eu.dnetlib.validator.admin.config.Constants;
+import eu.dnetlib.validator.commons.email.Emailer;
+
+public class BaseValidatorAction extends ActionSupport {
+
+	/**
+	 * 
+	 */
+	private static final long serialVersionUID = -622158192564945303L;
+	private UserApi userAPI = null;
+	private ValidatorAdminAPI validatorAdminAPI = null;
+	private Emailer emailer = null;
+
+	public static String loggedInField = "LOGGED_IN_FIELD";
+	
+	private String valBaseUrl = null;
+	private String valAdminEmail = null;
+	private String userMode = null;
+	private String repoMode = null;
+	private String deployEnvironment = null;
+
+	public void reportException(Exception exception) {
+		Writer writer = new StringWriter();
+		PrintWriter printWriter = new PrintWriter(writer);
+		exception.printStackTrace(printWriter);
+		
+		List<String> recipients = new ArrayList<String>();
+		
+		try {
+			recipients.add(this.getValAdminEmail());
+			String message = "An exception has occurred:\n"+writer.toString();
+			String subject = "Automatic Bug Report";
+			this.getEmailer().sendMail(recipients, subject, message, false, null);
+		} catch (Exception e) {
+			Logger logger = Logger.getLogger(BaseValidatorAction.class);
+			logger.error("error sending error report", e);
+		}
+	}
+	
+	public boolean isModeLdap() {
+		return userMode.trim().toLowerCase().equals(Constants.MODE_LDAP);
+	}
+
+	public boolean isModeOpenAIRE() {
+		return repoMode.trim().toLowerCase().equals(Constants.MODE_DNET);
+	}
+
+	public UserApi getUserAPI() {
+		return userAPI;
+	}
+
+	public void setUserAPI(UserApi userAPI) {
+		this.userAPI = userAPI;
+	}
+
+	public ValidatorAdminAPI getValidatorAdminAPI() {
+		return validatorAdminAPI;
+	}
+
+	public void setValidatorAdminAPI(ValidatorAdminAPI validatorAdminAPI) {
+		this.validatorAdminAPI = validatorAdminAPI;
+	}
+
+	public Emailer getEmailer() {
+		return emailer;
+	}
+
+	public void setEmailer(Emailer emailer) {
+		this.emailer = emailer;
+	}
+
+	public String getUserMode() {
+		return userMode;
+	}
+
+	public void setUserMode(String userMode) {
+		this.userMode = userMode;
+	}
+
+	public String getRepoMode() {
+		return repoMode;
+	}
+
+	public void setRepoMode(String repoMode) {
+		this.repoMode = repoMode;
+	}
+
+	public void setValBaseUrl(String valBaseUrl) {
+		this.valBaseUrl = valBaseUrl;
+	}
+
+	public String getValBaseUrl() {
+		return valBaseUrl;
+	}
+
+	public void setValAdminEmail(String valAdminEmail) {
+		this.valAdminEmail = valAdminEmail;
+	}
+
+	public String getValAdminEmail() {
+		return valAdminEmail;
+	}
+
+	public String getDeployEnvironment() {
+		return deployEnvironment;
+	}
+
+	public void setDeployEnvironment(String deployEnvironment) {
+		this.deployEnvironment = deployEnvironment;
+	}
+
+}
\ No newline at end of file
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/java/eu/dnetlib/validator/admin/actions/rulesets/GetRules.java
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/java/eu/dnetlib/validator/admin/actions/rulesets/GetRules.java	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/java/eu/dnetlib/validator/admin/actions/rulesets/GetRules.java	(revision 47450)
@@ -0,0 +1,146 @@
+package eu.dnetlib.validator.admin.actions.rulesets;
+
+import java.util.ArrayList;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Set;
+
+import org.apache.log4j.Logger;
+
+import com.opensymphony.xwork2.Action;
+
+import eu.dnetlib.domain.functionality.validator.Rule;
+import eu.dnetlib.domain.functionality.validator.RuleSet;
+import eu.dnetlib.validator.admin.actions.BaseValidatorAction;
+import eu.dnetlib.validator.admin.constants.TypesAndTableNames;
+
+public class GetRules extends BaseValidatorAction {
+
+	private static final long serialVersionUID = 3336444896590055688L;
+	private int setId = -1;
+	private List<Rule> rulesContent;
+	private List<Rule> rulesUsage;
+	private Set<Integer> ruleIdsContent;
+	private Set<Integer> ruleIdsUsage;
+	private List<String> deployEnvironments;
+	private String funct = null;
+	private RuleSet ruleSet;
+	
+	private static final Logger logger = Logger.getLogger(GetRules.class);
+
+	public String execute() {
+		this.clearErrorsAndMessages();
+		try {
+			logger.debug("getting rules in rule set "+setId);
+			ruleIdsContent = new HashSet<Integer>();
+			ruleIdsUsage = new HashSet<Integer>();
+			rulesContent = new ArrayList<Rule>();
+			rulesUsage = new ArrayList<Rule>();
+			this.splitRules(this.getValidatorAdminAPI().getAllRules(),rulesContent, rulesUsage);
+			this.deployEnvironments = TypesAndTableNames.deployEnvironments;
+			if (setId == -1) {
+				ruleSet = new RuleSet();
+				ruleSet.setId(-1);
+				funct = "create";
+			} else {
+				funct = "edit";
+				ruleSet = this.getValidatorAdminAPI().getRuleSet(setId);
+				ruleIdsContent=ruleSet.getContentRulesIds();
+				ruleIdsUsage=ruleSet.getUsageRulesIds();
+//				visibility = Utilities.convertListToString(set.getVisibility());
+			}
+			return Action.SUCCESS;
+		}
+		catch(Exception e) {
+			logger.error("Error getting rules", e);
+			this.addActionError(this.getText("generic.error"));
+			reportException(e);
+			return "exception";
+		}
+	}
+
+	private void splitRules(List<Rule> totalRules, List<Rule> contentRules, List<Rule> usageRules) {
+		logger.debug("splitting rules..");
+		for (Rule rule : totalRules) {
+			if (rule.getJob_type().equals("content")) {
+				contentRules.add(rule);
+			} else if (rule.getJob_type().equals("usage")) {
+				usageRules.add(rule);
+			}
+		}
+	}
+
+	public String getFunct() {
+		return funct;
+	}
+
+	public void setFunct(String funct) {
+		this.funct = funct;
+	}
+		
+
+	public RuleSet getRuleSet() {
+		return ruleSet;
+	}
+
+	public void setRuleSet(RuleSet ruleSet) {
+		this.ruleSet = ruleSet;
+	}
+
+	public int getSetId() {
+		return setId;
+	}
+
+	public void setSetId(int setId) {
+		this.setId = setId;
+	}
+
+
+	public List<Rule> getRulesContent() {
+		return rulesContent;
+	}
+
+
+	public void setRulesContent(List<Rule> rulesContent) {
+		this.rulesContent = rulesContent;
+	}
+
+
+	public List<Rule> getRulesUsage() {
+		return rulesUsage;
+	}
+
+
+	public void setRulesUsage(List<Rule> rulesUsage) {
+		this.rulesUsage = rulesUsage;
+	}
+
+	public Set<Integer> getRuleIdsContent() {
+		return ruleIdsContent;
+	}
+
+	public void setRuleIdsContent(Set<Integer> ruleIdsContent) {
+		this.ruleIdsContent = ruleIdsContent;
+	}
+
+	public Set<Integer> getRuleIdsUsage() {
+		return ruleIdsUsage;
+	}
+
+	public void setRuleIdsUsage(Set<Integer> ruleIdsUsage) {
+		this.ruleIdsUsage = ruleIdsUsage;
+	}
+
+	public List<String> getDeployEnvironments() {
+		return deployEnvironments;
+	}
+
+	public void setDeployEnvironments(List<String> deployEnvironments) {
+		this.deployEnvironments = deployEnvironments;
+	}
+
+
+}
+
+	
+
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/java/eu/dnetlib/validator/admin/actions/rules/PrepareEditRule.java
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/java/eu/dnetlib/validator/admin/actions/rules/PrepareEditRule.java	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/java/eu/dnetlib/validator/admin/actions/rules/PrepareEditRule.java	(revision 47450)
@@ -0,0 +1,109 @@
+package eu.dnetlib.validator.admin.actions.rules;
+
+import java.util.List;
+import java.util.Set;
+
+import org.apache.log4j.Logger;
+
+import com.opensymphony.xwork2.Action;
+
+import eu.dnetlib.domain.functionality.validator.Rule;
+import eu.dnetlib.validator.admin.actions.BaseValidatorAction;
+import eu.dnetlib.validator.admin.api.ValidatorAdminException;
+import eu.dnetlib.validator.admin.constants.TypesAndTableNames;
+
+public class PrepareEditRule extends BaseValidatorAction {
+
+	private static final long serialVersionUID = 8825889540939707747L;
+	private int ruleId;
+
+	private Rule rule;
+	private List<Rule> rules;
+	private List<FieldPair> ruleValues;
+	private Set<String> entityTypes;
+	
+	private String funct = null;
+	private static final Logger logger = Logger.getLogger(PrepareEditRule.class);
+
+
+	public String execute() {
+		this.clearErrorsAndMessages();
+		try {
+//			logger.debug("preparing edit of rule");
+			entityTypes = TypesAndTableNames.getCrisEntities().keySet();
+			logger.debug("preparing edit of rule " + ruleId);
+			rule = this.getValidatorAdminAPI().getRule(ruleId);
+			this.ruleValues = this.getValidatorAdminAPI().getRuleValuePairs(rule);
+			if (rule.getType().equals("ChainRule")) {
+				try {
+					rules = this.getValidatorAdminAPI().getAllRules();
+				} catch (ValidatorAdminException e) {
+					return Action.ERROR;
+				}
+			}			
+			logger.debug("ruleType: " + rule.getType());
+			rule.setJob_type(TypesAndTableNames.jobTypes.get(rule.getJob_type()));
+			return Action.SUCCESS;
+		} catch (Exception e) {
+			logger.error("preparing edit of rule " + ruleId, e);
+			this.addActionError(this.getText("generic.error"));
+			reportException(e);
+			return "exception";
+		}
+	}
+
+	
+	public Rule getRule() {
+		return rule;
+	}
+
+	public void setRule(Rule rule) {
+		this.rule = rule;
+	}
+
+	public List<Rule> getRules() {
+		return rules;
+	}
+
+	public void setRules(List<Rule> rules) {
+		this.rules = rules;
+	}
+
+	public List<FieldPair> getRuleValues() {
+		return ruleValues;
+	}
+
+	public void setRuleValues(List<FieldPair> ruleValues) {
+		this.ruleValues = ruleValues;
+	}
+
+	public int getRuleId() {
+		return ruleId;
+	}
+
+	public void setRuleId(int ruleId) {
+		this.ruleId = ruleId;
+	}
+
+
+	public String getFunct() {
+		return funct;
+	}
+
+
+	public void setFunct(String funct) {
+		this.funct = funct;
+	}
+
+
+	public Set<String> getEntityTypes() {
+		return entityTypes;
+	}
+
+
+	public void setEntityTypes(Set<String> entityTypes) {
+		this.entityTypes = entityTypes;
+	}
+	
+	
+}
\ No newline at end of file
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/manuals/user-manual.pdf
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/manuals/user-manual.pdf
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/manuals/user-manual.pdf	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/manuals/user-manual.pdf	(revision 47450)

Property changes on: modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/manuals/user-manual.pdf
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/ddmenu.css
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/ddmenu.css	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/jsps/ddmenu.css	(revision 47450)
@@ -0,0 +1,159 @@
+
+/*  Generated by www.menucool.com/drop-down-menu  */
+
+/* main menu
+----------------------------*/
+#ddmenu
+{
+    display:block;
+    font-family: "YanoneKaffeesatzLight";
+    text-align:center;
+    letter-spacing:normal;
+	float: right;
+        position: absolute;
+        bottom: 0;
+        right: 0;
+}
+
+#ddmenu ul
+{ 
+    width:100%;
+    margin:0; /*If above width is not 100% and you want this menu to align in the center of its container, set it as { margin: 0 auto; }*/
+    padding:0;
+    display:inline-block;
+    list-style:none;
+    position:relative;
+    font-size:0;
+    *z-index:999;
+}
+
+#ddmenu li
+{
+    margin:0;
+    padding:0;
+    display:inline-block;
+    position:relative;
+ float: left;
+        font-size: 22px;
+        text-transform: uppercase;
+        line-height:50px
+}
+
+#ddmenu a
+{
+    padding:0 12px;
+    font-weight:normal;
+    text-decoration:none;
+    display:inline-block;
+    outline:0;
+    position:relative;
+    white-space:nowrap;
+	color:#3440B5;
+}
+
+#ddmenu li.over
+{
+    z-index:9999999998;
+}
+
+/* links without sub-menu */
+#ddmenu li.over a
+{
+        color: #2D72D6;
+        background: #D0D0D0;
+}
+
+/* links with sub-menu */
+#ddmenu a.arrow
+{
+}
+#ddmenu li.over a.arrow
+{
+background: #D0D0D0 url(images/menu_dropdown_level1_parent_blue.png) 50% 100% no-repeat;
+    z-index:9999999999;
+    /*text-decoration:underline;*/
+}
+
+#ddmenu div 
+{
+    padding:0;
+    margin:0;
+}              
+        
+/* sub-menu layout
+----------------------------*/
+     
+
+#ddmenu div.drop
+{
+    position:absolute;
+    text-align:left;
+    background:#3440B5;
+    color: #bcbcbc;
+	font-size:18px;
+    padding:20px;
+    line-height:30px;
+}
+  
+#ddmenu div
+{
+    display:none;
+}
+/* sub-menu offset
+----------------------------*/
+
+#ddmenu div.drop
+{
+    left:0px;/*Use this property to change offset of the sub-menu*/
+}
+#ddmenu div.dropToLeft
+{
+    left:auto; right:0px;
+}
+#ddmenu div.dropToLeft2
+{
+    left:auto; right:-120px;
+}
+  
+/* links in sub menu
+----------------------------*/
+
+#ddmenu div.drop a
+{
+    background:#3440B5;
+    color:#bcbcbc;
+    text-decoration:none;    
+    display:block;
+    text-align:left;    
+    position:static;
+    padding:0 0;
+}
+
+#ddmenu div.drop a:hover
+{
+    color:#00B5F0;
+}
+
+/* blocks within the sub-menu
+----------------------------*/
+
+#ddmenu div.drop div
+{
+    background:none;    
+}  
+
+#ddmenu div.column
+{
+    width:auto;
+    float:left; /*align each column in one row*/
+    padding:0 10px; /*padding of each column*/
+}
+
+#ddmenu div.column div
+{
+   padding:0px 10px; /*sub-div within div.column. 10px for indent.*/
+}
+
+/* useful when http://www.menucool.com/ddmenu/one-menu-for-all-pages
+----------------------------*/
+#ddmenuLink {display:none;}
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/META-INF/MANIFEST.MF
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/META-INF/MANIFEST.MF	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0/src/main/webapp/META-INF/MANIFEST.MF	(revision 47450)
@@ -0,0 +1,3 @@
+Manifest-Version: 1.0
+Class-Path: 
+
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0	(revision 47450)

Property changes on: modules/uoa-validator-admin/tags/uoa-validator-admin-2.1.0
___________________________________________________________________
Added: svn:ignore
## -0,0 +1,6 ##
+target
+.classpath
+.settings
+.project
+*.sh
+*.iml
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/java/eu/dnetlib/validator/admin/actions/login/SendPassword.java
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/java/eu/dnetlib/validator/admin/actions/login/SendPassword.java	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/java/eu/dnetlib/validator/admin/actions/login/SendPassword.java	(revision 47450)
@@ -0,0 +1,59 @@
+package eu.dnetlib.validator.admin.actions.login;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.apache.log4j.Logger;
+
+import com.opensymphony.xwork2.Action;
+
+import eu.dnetlib.validator.admin.actions.BaseValidatorAction;
+
+public class SendPassword extends BaseValidatorAction {
+
+	private static final long serialVersionUID = 7540821478579531671L;
+	private Logger logger = Logger.getLogger(SendPassword.class);
+	
+	private String email;
+
+	public String execute() {
+		this.clearErrorsAndMessages();
+		try {
+			logger.debug("sending password to user " + email);
+			List<String> to = new ArrayList<String>();
+			to.add(this.getEmail());
+			String securityCode = this.getUserAPI().prepareResetPassword(this.getEmail());
+			this.getEmailer().sendMail(to, this.getText("forgotPassword.mail.Subject"), this.getText("forgotPassword.mail.Body1") + ": " + this.getValBaseUrl() + "/resetPassword.action?securityCode=" + securityCode + "\n\n" + this.getText("forgotPassword.mail.Body2") + ": " + securityCode, false, null);
+			this.addActionMessage(this.getText("forgotPassword.message"));
+			return Action.SUCCESS;
+		} catch (Exception e) {
+			logger.error("error sending password to user " + email, e);
+			this.addActionError(this.getText("generic.error"));
+			return "exception";
+		}
+	}
+
+	public void validate() {
+		this.clearErrors();
+		try {
+			if (!this.getUserAPI().userExists(this.getEmail())) {
+				this.addActionError(this.getText("login.userNotExists"));
+				return;
+			}
+//			if (!this.getUserAPI().isUserActivated(this.getEmail())) {
+//				this.addActionError(this.getText("login.notActivated"));
+//				return;
+//			}
+		} catch (Exception e) {
+			this.addActionError(e.toString());
+		}
+	}
+
+	public String getEmail() {
+		return email;
+	}
+
+	public void setEmail(String email) {
+		this.email = email;
+	}
+}
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/java/eu/dnetlib/validator/admin/actions/rules/PopulateRuleCategories.java
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/java/eu/dnetlib/validator/admin/actions/rules/PopulateRuleCategories.java	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/java/eu/dnetlib/validator/admin/actions/rules/PopulateRuleCategories.java	(revision 47450)
@@ -0,0 +1,55 @@
+package eu.dnetlib.validator.admin.actions.rules;
+
+import java.util.Set;
+
+import org.apache.log4j.Logger;
+
+import com.opensymphony.xwork2.Action;
+
+import eu.dnetlib.validator.admin.actions.BaseValidatorAction;
+import eu.dnetlib.validator.admin.constants.TypesAndTableNames;
+
+public class PopulateRuleCategories extends BaseValidatorAction {
+
+	private static final long serialVersionUID = 3845749201114926778L;
+	private Logger logger = Logger.getLogger(PopulateRuleCategories.class);
+	
+	private Set<String> ruleTypes;
+//	private Set<String> jobTypes;
+	private String defaultJobType;
+	
+	public String execute() {
+		this.clearErrorsAndMessages();
+		logger.debug("populating rule categories");
+			defaultJobType="content";
+//			jobTypes = TypesAndTableNames.getJobTypes();
+			ruleTypes = TypesAndTableNames.getRuleTypes();
+
+		return Action.SUCCESS;
+	}
+
+	public Set<String> getRuleTypes() {
+		return ruleTypes;
+	}
+
+	public void setRuleTypes(Set<String> ruleTypes) {
+		this.ruleTypes = ruleTypes;
+	}
+
+//	public Set<String> getJobTypes() {
+//		return jobTypes;
+//	}
+//
+//	public void setJobTypes(Set<String> jobTypes) {
+//		this.jobTypes = jobTypes;
+//	}
+
+	public String getDefaultJobType() {
+		return defaultJobType;
+	}
+
+	public void setDefaultJobType(String defaultJobType) {
+		this.defaultJobType = defaultJobType;
+	}
+	
+}
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/java/eu/dnetlib/validator/admin/api/impls/EmailBuilder.java
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/java/eu/dnetlib/validator/admin/api/impls/EmailBuilder.java	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/java/eu/dnetlib/validator/admin/api/impls/EmailBuilder.java	(revision 47450)
@@ -0,0 +1,82 @@
+package eu.dnetlib.validator.admin.api.impls;
+
+import java.io.StringWriter;
+import java.util.List;
+import java.util.Map;
+
+import javax.xml.transform.TransformerConfigurationException;
+import javax.xml.transform.TransformerException;
+import javax.xml.transform.TransformerFactoryConfigurationError;
+
+import org.apache.log4j.Logger;
+import org.apache.velocity.Template;
+import org.apache.velocity.VelocityContext;
+import org.apache.velocity.app.VelocityEngine;
+import org.apache.velocity.exception.ParseErrorException;
+import org.apache.velocity.exception.ResourceNotFoundException;
+import org.apache.velocity.runtime.RuntimeConstants;
+import org.apache.velocity.runtime.resource.loader.ClasspathResourceLoader;
+
+public class EmailBuilder {
+
+	private static Logger logger = Logger.getLogger(EmailBuilder.class);
+	
+	private VelocityEngine ve = null;
+	
+	public void init() throws Exception {
+		this.ve = new VelocityEngine();
+		this.ve.setProperty(RuntimeConstants.RESOURCE_LOADER, "classpath");
+		this.ve.setProperty("classpath.resource.loader.class", ClasspathResourceLoader.class.getName());
+		this.ve.setProperty("runtime.log.logsystem.class", "org.apache.velocity.runtime.log.NullLogSystem");
+		this.ve.init();	
+	}
+	
+	public String buildXml(List<Map<String, String>> passedJobsList, List<Map<String, String>> failedJobsList, String month, boolean oldFormat) {
+		logger.debug("Building the registrations report Email");
+		String finalEmail = null;
+		
+		try {
+        
+			VelocityContext context = new VelocityContext();
+
+			context.put("passedJobs", passedJobsList);
+			context.put("failedJobs", failedJobsList);
+			context.put("month", month);
+			if (passedJobsList.isEmpty())
+				context.put("nonePassed", "There are no successful registration attempts.");
+			else
+				context.put("nonePassed", " ");
+			if (failedJobsList.isEmpty())
+				context.put("noneFailed", "There are no failed registration attempts.");
+			else
+				context.put("noneFailed", " ");
+			
+			Template t;
+			
+			if (oldFormat)
+				t = this.ve.getTemplate("/eu/dnetlib/validator/admin/api/emailTeplateOld.vm");
+			else
+				t = this.ve.getTemplate("/eu/dnetlib/validator/admin/api/emailTeplate.vm");
+			
+			StringWriter writer = new StringWriter();
+			
+			t.merge(context, writer);
+			finalEmail = writer.toString();
+			
+		} catch (TransformerConfigurationException e) {
+			logger.error("Error while building XML file", e);
+		} catch (TransformerFactoryConfigurationError e) {
+			logger.error("Error while building XML file", e);
+		} catch (TransformerException e) {
+			logger.error("Error while building XML file", e);
+		} catch (ResourceNotFoundException e) {
+			logger.error("Error while building XML file", e);
+		} catch (ParseErrorException e) {
+			logger.error("Error while building XML file", e);
+		} catch (Exception e) {
+			logger.error("Error while building XML file", e);
+		}
+		
+        return finalEmail;
+	}
+}
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/java/eu/dnetlib/validator/admin/actions/login/AuthenticationInterceptor.java
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/java/eu/dnetlib/validator/admin/actions/login/AuthenticationInterceptor.java	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/java/eu/dnetlib/validator/admin/actions/login/AuthenticationInterceptor.java	(revision 47450)
@@ -0,0 +1,35 @@
+package eu.dnetlib.validator.admin.actions.login;
+
+import java.util.Map;
+
+import com.opensymphony.xwork2.Action;
+import com.opensymphony.xwork2.ActionInvocation;
+import com.opensymphony.xwork2.interceptor.Interceptor;
+
+import eu.dnetlib.validator.admin.config.Constants;
+
+public class AuthenticationInterceptor implements Interceptor {
+
+	private static final long serialVersionUID = 977098762082596481L;
+
+	@Override
+	public void destroy() {
+
+	}
+
+	@Override
+	public void init() {
+
+	}
+
+	@Override
+	public String intercept(ActionInvocation actionInvocation) throws Exception {
+		Map<String, Object> session = actionInvocation.getInvocationContext().getSession();
+		String auth = (String) session.get(Constants.loggedInField);
+
+		if (auth == null) {
+			return Action.LOGIN;
+		}
+		return actionInvocation.invoke();
+	}
+}
\ No newline at end of file
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/java/eu/dnetlib/validator/admin/actions/users/EditUser.java
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/java/eu/dnetlib/validator/admin/actions/users/EditUser.java	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/java/eu/dnetlib/validator/admin/actions/users/EditUser.java	(revision 47450)
@@ -0,0 +1,66 @@
+package eu.dnetlib.validator.admin.actions.users;
+
+import java.util.Map;
+
+import org.apache.log4j.Logger;
+import org.apache.struts2.interceptor.SessionAware;
+
+import com.opensymphony.xwork2.Action;
+
+import eu.dnetlib.domain.functionality.UserProfile;
+import eu.dnetlib.validator.admin.actions.BaseValidatorAction;
+import eu.dnetlib.validator.admin.config.Constants;
+
+public class EditUser extends BaseValidatorAction implements SessionAware {
+
+	private static final long serialVersionUID = -362061491263257713L;
+	private Logger logger = Logger.getLogger(EditUser.class);
+
+	private UserProfile user;
+
+	private Map<String, Object> session;
+
+	public String execute() {
+		this.clearErrorsAndMessages();
+		try {
+			logger.debug("getting for edit user " + (String) session.get(Constants.loggedInField));
+				user = this.getUserAPI().getUser((String) session.get(Constants.loggedInField));
+			return Action.SUCCESS;
+		} catch (Exception e) {
+			logger.error("error getting for edit user " + (String) session.get(Constants.loggedInField), e);
+			this.addActionError(this.getText("generic.error"));
+			reportException(e);
+			return "exception";
+		}
+	}
+
+	public String edit() {
+		this.clearErrorsAndMessages();
+		try {
+			logger.debug("editing user " + (String) session.get(Constants.loggedInField));
+			this.getUserAPI().editUser(user);
+			this.addActionMessage(this.getText("editUser.success"));
+			return Action.SUCCESS;
+		} catch (Exception e) {
+			logger.error("error editing user " + (String) session.get(Constants.loggedInField), e);
+			this.addActionError(this.getText("generic.error"));
+			reportException(e);
+			return "exception";
+		}
+
+	}
+
+
+	public UserProfile getUser() {
+		return user;
+	}
+
+	public void setUser(UserProfile user) {
+		this.user = user;
+	}
+
+	@Override
+	public void setSession(Map<String, Object> session) {
+		this.session = session;
+	}
+}
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/java/eu/dnetlib/validator/admin/actions/jobs/DatabaseCurator.java
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/java/eu/dnetlib/validator/admin/actions/jobs/DatabaseCurator.java	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/java/eu/dnetlib/validator/admin/actions/jobs/DatabaseCurator.java	(revision 47450)
@@ -0,0 +1,83 @@
+package eu.dnetlib.validator.admin.actions.jobs;
+
+import java.text.ParseException;
+import java.text.SimpleDateFormat;
+
+import org.apache.log4j.Logger;
+
+import com.opensymphony.xwork2.Action;
+
+import eu.dnetlib.validator.admin.actions.BaseValidatorAction;
+import eu.dnetlib.validator.admin.api.ValidatorAdminException;
+
+public class DatabaseCurator extends BaseValidatorAction {
+
+	private static final long serialVersionUID = -1868055729316139461L;
+	private static final Logger logger = Logger.getLogger(DatabaseCurator.class);
+	private String inDate = null;
+	private String mode, period;
+
+	public String execute() {
+		this.clearErrorsAndMessages();
+		int jobsDeleted = 0;
+		try {
+			jobsDeleted = this.getValidatorAdminAPI().deleteOldJobs(inDate, period, mode);
+		} catch (ValidatorAdminException e) {
+			logger.error("Error deleting old jobs", e);
+			this.addActionError(this.getText("generic.error"));
+			reportException(e);
+			return "input-problem";
+		}
+		
+		this.addActionMessage(jobsDeleted + " " + this.getText("manageJobs.deleteJobs.success"));
+		return Action.SUCCESS;
+	}
+	
+
+	public void validate() {
+		this.clearErrors();
+		if (!mode.equalsIgnoreCase("uncompleted_only")){
+			if (inDate == null) {
+				this.addActionError(this.getText("wrongFieldValue"));
+				return;
+			}
+			SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
+			if (inDate.trim().length() != dateFormat.toPattern().length()) {
+				this.addActionError(this.getText("wrongFieldValue"));
+				return;
+			}
+			dateFormat.setLenient(false);
+			try {
+				dateFormat.parse(inDate.trim());
+			} catch (ParseException pe) {
+				this.addActionError(this.getText("wrongFieldValue"));
+				return;
+			}
+		}
+	}
+
+	public String getInDate() {
+		return inDate;
+	}
+
+	public void setInDate(String inDate) {
+		this.inDate = inDate;
+	}
+
+	public String getMode() {
+		return mode;
+	}
+
+	public void setMode(String mode) {
+		this.mode = mode;
+	}
+
+	public String getPeriod() {
+		return period;
+	}
+
+	public void setPeriod(String period) {
+		this.period = period;
+	}
+
+}
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/java/eu/dnetlib/validator/admin/api/UserApi.java
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/java/eu/dnetlib/validator/admin/api/UserApi.java	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/java/eu/dnetlib/validator/admin/api/UserApi.java	(revision 47450)
@@ -0,0 +1,32 @@
+package eu.dnetlib.validator.admin.api;
+
+import eu.dnetlib.domain.functionality.UserProfile;
+
+public interface UserApi {
+
+	public boolean activateUser(String activationId) throws Exception;
+
+	public boolean isUserActivated(String email) throws Exception;
+
+	public boolean userExists(String email) throws Exception;
+
+	public boolean usernameExists(String username) throws Exception;
+
+	public boolean correctCreds(String email, String password) throws Exception;
+
+	public String prepareResetPassword(String email) throws Exception;
+
+	public void resetPassword(String uuid, String password) throws Exception;
+
+	public boolean isAdmin(String email) throws Exception;
+
+	public void editUser(UserProfile user)
+			throws Exception;
+
+	public String addUser(String username, String email, String password,
+			String firstName, String lastName, String institution) throws Exception;
+
+	public String getEmailFromUsername(String username) throws Exception;
+
+	public UserProfile getUser(String userIdentifier) throws Exception;
+}
\ No newline at end of file
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/java/eu/dnetlib/validator/admin/actions/rulesets/CreateRuleSet.java
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/java/eu/dnetlib/validator/admin/actions/rulesets/CreateRuleSet.java	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/java/eu/dnetlib/validator/admin/actions/rulesets/CreateRuleSet.java	(revision 47450)
@@ -0,0 +1,87 @@
+package eu.dnetlib.validator.admin.actions.rulesets;
+
+import java.util.Set;
+
+import org.apache.log4j.Logger;
+
+import com.opensymphony.xwork2.Action;
+
+import eu.dnetlib.domain.functionality.validator.RuleSet;
+import eu.dnetlib.validator.admin.actions.BaseValidatorAction;
+
+public class CreateRuleSet extends BaseValidatorAction {
+
+	private static final long serialVersionUID = 5623461974078831740L;
+	
+	private Set<Integer> chosenContentRules = null;
+	private Set<Integer> chosenUsageRules = null;	
+	private String funct = null;
+	private RuleSet ruleSet;
+	private static final Logger logger = Logger.getLogger(CreateRuleSet.class);
+	
+	public String execute() {
+		this.clearErrorsAndMessages();
+		try {
+			logger.debug("creating a new rule set "+ruleSet.getName());
+			ruleSet.setUsageRulesIds(chosenUsageRules);
+			ruleSet.setContentRulesIds(chosenContentRules);
+			if(funct.equals("create")) {
+				this.getValidatorAdminAPI().storeRuleSet(ruleSet, false);
+				this.addActionMessage(this.getText("createRuleSet.success"));
+			}
+			else if(funct.equals("edit")) {
+				logger.debug("chosen content: " + chosenContentRules);
+				this.getValidatorAdminAPI().storeRuleSet(ruleSet, true);
+				this.addActionMessage(this.getText("createRuleSet.success"));
+			}
+			return Action.SUCCESS;
+		}
+		catch(Exception e) {
+			logger.error("Error creating/editing ruleset", e);
+			this.addActionError(this.getText("generic.error"));
+			reportException(e);
+			return "exception";
+		}
+	}
+	
+	public void validate() {
+		this.clearErrors();
+		if((chosenContentRules == null || chosenContentRules.isEmpty())||(chosenUsageRules == null || chosenUsageRules.isEmpty()))
+			this.addActionError(this.getText("createRuleSets.atLeastOneRule"));
+		if(funct == null)
+			this.addActionError(this.getText("uknownError"));
+	}
+	
+	public String getFunct() {
+		return funct;
+	}
+	public void setFunct(String funct) {
+		this.funct = funct;
+	}	
+
+	public Set<Integer> getChosenContentRules() {
+		return chosenContentRules;
+	}
+
+	public void setChosenContentRules(Set<Integer> chosenContentRules) {
+		this.chosenContentRules = chosenContentRules;
+	}
+
+	public Set<Integer> getChosenUsageRules() {
+		return chosenUsageRules;
+	}
+
+	public void setChosenUsageRules(Set<Integer> chosenUsageRules) {
+		this.chosenUsageRules = chosenUsageRules;
+	}
+
+	public RuleSet getRuleSet() {
+		return ruleSet;
+	}
+
+	public void setRuleSet(RuleSet ruleSet) {
+		this.ruleSet = ruleSet;
+	}
+	
+	
+}	
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/java/eu/dnetlib/validator/admin/config/Constants.java
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/java/eu/dnetlib/validator/admin/config/Constants.java	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/java/eu/dnetlib/validator/admin/config/Constants.java	(revision 47450)
@@ -0,0 +1,12 @@
+package eu.dnetlib.validator.admin.config;
+
+
+public class Constants {
+	
+	public static String loggedInField = "LOGGED_IN_FIELD";
+
+	public static final String MODE_LOCAL = "local";
+	public static final String MODE_DNET = "dnet";
+	public static final String MODE_LDAP = "ldap";
+
+}
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/java/eu/dnetlib/validator/admin/actions/rules/DeleteRule.java
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/java/eu/dnetlib/validator/admin/actions/rules/DeleteRule.java	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/java/eu/dnetlib/validator/admin/actions/rules/DeleteRule.java	(revision 47450)
@@ -0,0 +1,48 @@
+package eu.dnetlib.validator.admin.actions.rules;
+
+
+import org.apache.log4j.Logger;
+
+import com.opensymphony.xwork2.Action;
+
+import eu.dnetlib.validator.admin.actions.BaseValidatorAction;
+import eu.dnetlib.validator.admin.api.ValidatorAdminException;
+
+public class DeleteRule extends BaseValidatorAction {
+
+	private static final long serialVersionUID = -2888943921398211370L;
+	private static final Logger logger = Logger.getLogger(DeleteRule.class);
+	private int ruleId;
+	
+	public String execute() {
+		this.clearErrorsAndMessages();
+		logger.debug("deleting rule");
+		String ret = null;
+		try {
+			logger.debug("deleting rule with id "+ruleId);
+			ret = this.getValidatorAdminAPI().deleteRule(ruleId);
+		}
+		catch (ValidatorAdminException e) {
+			logger.error("Error deleting rule with id "+ruleId, e);
+			this.addActionError(this.getText("generic.error"));
+			reportException(e);
+			return "exception";
+		}
+		
+		if (ret != null) {
+			this.addActionError(this.getText(ret));
+			return "input-problem";
+		}
+		this.addActionMessage(this.getText("deleteRule.success"));
+		return Action.SUCCESS;
+	}
+
+	public int getRuleId() {
+		return ruleId;
+	}
+
+	public void setRuleId(int ruleId) {
+		this.ruleId = ruleId;
+	}
+	
+}
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/java/eu/dnetlib/validator/admin/constants/FieldsAndDetails.java
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/java/eu/dnetlib/validator/admin/constants/FieldsAndDetails.java	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/java/eu/dnetlib/validator/admin/constants/FieldsAndDetails.java	(revision 47450)
@@ -0,0 +1,61 @@
+package eu.dnetlib.validator.admin.constants;
+
+import java.io.BufferedReader;
+import java.io.InputStreamReader;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+import org.apache.log4j.Logger;
+
+import eu.dnetlib.validator.admin.constants.fielddetails.FieldDetails;
+
+public class FieldsAndDetails {
+
+	static private Map<String, List<FieldDetails>> map;
+	private static Logger logger = Logger.getLogger(FieldsAndDetails.class);
+
+	static {
+		logger.debug("initializing map of FieldsAndDetails");
+		map = new HashMap<String, List<FieldDetails>>();
+		BufferedReader br = new BufferedReader(
+				new InputStreamReader(
+						FieldsAndDetails.class
+								.getResourceAsStream("/eu/dnetlib/validator/admin/constants/fieldDetails.txt")));
+		String line;
+		try {
+			while ((line = br.readLine()) != null) {
+				List<FieldDetails> lfd = new ArrayList<FieldDetails>();
+				String tableName = line.trim();
+				while ((line = br.readLine()) != null) {
+					if (line.trim().equals(""))
+						break;
+					String[] args = line.split(" ");
+					FieldDetails details = new FieldDetails();
+					details.setTableName(tableName);
+					details.setFieldName(args[0].trim());
+					details.setForDet(Boolean.parseBoolean(args[1].trim()
+							.toLowerCase()));
+					lfd.add(details);
+				}
+				map.put(tableName.toLowerCase(), lfd);
+			}
+		} catch (Exception e) {
+			logger.error("Error initialiazing map of FieldsAndDetails", e);
+		}
+	}
+	
+	static public List<FieldDetails> getFieldsAndDetails(String tablename) {
+		logger.debug("getting fielddetails of table "+tablename);
+		if(tablename != null) {
+			tablename = tablename.toLowerCase();
+			List<FieldDetails> ret = map.get(tablename);
+			if(ret == null) {
+				ret = map.get(TypesAndTableNames.getTableNameOfType(tablename));
+			}
+			return ret;
+		}
+		return null;
+	}
+}
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/java/eu/dnetlib/validator/admin/actions/rules/FieldPair.java
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/java/eu/dnetlib/validator/admin/actions/rules/FieldPair.java	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/java/eu/dnetlib/validator/admin/actions/rules/FieldPair.java	(revision 47450)
@@ -0,0 +1,24 @@
+package eu.dnetlib.validator.admin.actions.rules;
+
+public class FieldPair {
+
+	private String fieldName, fieldValue;
+
+	public String getFieldName() {
+		return fieldName;
+	}
+
+	public void setFieldName(String fieldName) {
+		this.fieldName = fieldName;
+	}
+
+	public String getFieldValue() {
+		return fieldValue;
+	}
+
+	public void setFieldValue(String fieldValue) {
+		this.fieldValue = fieldValue;
+	}
+	
+	
+}
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/resources/eu/dnetlib/validator/admin/api/emailTeplate.vm
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/resources/eu/dnetlib/validator/admin/api/emailTeplate.vm	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/resources/eu/dnetlib/validator/admin/api/emailTeplate.vm	(revision 47450)
@@ -0,0 +1,20 @@
+Greetings,
+
+The unsuccessful registration attempts during $month
+were the following (datasource Name, base URL, contact mail, compliance level):
+
+#foreach( $datasource in $failedJobs )
+$datasource.name, $datasource.baseUrl, $datasource.email, $datasource.compliance
+#end
+$noneFailed
+
+The successful ones were the following:
+
+#foreach( $datasource in $passedJobs )
+$datasource.name, $datasource.baseUrl, $datasource.email, $datasource.compliance
+#end
+$nonePassed
+
+Regards,
+Validator's administrator
+
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/java/eu/dnetlib/validator/admin/api/impls/ValidatorAdminApiImpl.java
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/java/eu/dnetlib/validator/admin/api/impls/ValidatorAdminApiImpl.java	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/java/eu/dnetlib/validator/admin/api/impls/ValidatorAdminApiImpl.java	(revision 47450)
@@ -0,0 +1,499 @@
+package eu.dnetlib.validator.admin.api.impls;
+
+import java.io.BufferedReader;
+import java.io.StringReader;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.Properties;
+
+import org.apache.log4j.Logger;
+import org.springframework.transaction.annotation.Propagation;
+import org.springframework.transaction.annotation.Transactional;
+
+import eu.dnetlib.domain.functionality.validator.Rule;
+import eu.dnetlib.domain.functionality.validator.RuleSet;
+import eu.dnetlib.domain.functionality.validator.StoredJob;
+import eu.dnetlib.validator.admin.actions.rules.FieldPair;
+import eu.dnetlib.validator.admin.api.ValidatorAdminAPI;
+import eu.dnetlib.validator.admin.api.ValidatorAdminException;
+import eu.dnetlib.validator.admin.constants.FieldNames;
+import eu.dnetlib.validator.admin.constants.FieldsAndDetails;
+import eu.dnetlib.validator.admin.constants.TypesAndTableNames;
+import eu.dnetlib.validator.admin.constants.fielddetails.FieldDetails;
+import eu.dnetlib.validator.commons.dao.jobs.JobsDAO;
+import eu.dnetlib.validator.commons.dao.rules.RulesDAO;
+import eu.dnetlib.validator.commons.dao.rules.RulesetsDAO;
+import eu.dnetlib.validator.commons.dao.users.UsersDAO;
+import eu.dnetlib.validator.commons.email.Emailer;
+
+
+/**
+ * 
+ * @author Nikon Gasparis
+ *
+ */
+
+@Transactional(propagation = Propagation.REQUIRED)
+public class ValidatorAdminApiImpl implements ValidatorAdminAPI {
+	
+	private JobsDAO jobsDao;
+	private RulesetsDAO rulesetsDao;
+	private RulesDAO rulesDao;
+	private UsersDAO usersDao;
+
+	private EmailBuilder emailBuilder;
+	
+	private Emailer emailer = null;
+	private List<String> masterAdmins = new ArrayList<String>();
+	private List<String> secondaryAdmins = new ArrayList<String>();
+	private String registrationsReportEmail;
+	private static Logger logger = Logger.getLogger(ValidatorAdminApiImpl.class);
+
+	public void start(){
+	}
+
+	@Override
+	public Rule getRule(int ruleId) throws ValidatorAdminException {
+		try {
+			logger.debug("getting rule with id: "+ruleId);
+			return rulesDao.get(ruleId);
+		} catch (Exception e) {
+			logger.error("Error getting rule ", e);
+			throw new ValidatorAdminException(e);
+		}
+		
+	}
+		
+	@Override
+	public List<FieldPair> getRuleValuePairs(Rule rule) throws ValidatorAdminException {
+		try {
+			logger.debug("getting rule value pairs");
+			boolean forUsage = false;
+			if( rule.getJob_type().equals("usage"))
+				forUsage = true;
+			List<String> labels = this.getRuleLabels(rule.getType(), forUsage, rule.isFor_cris());
+
+			List<FieldPair> ruleValues = new ArrayList<FieldPair>();
+			for (String fieldName : labels) {
+				FieldPair pair = new FieldPair();
+//				String fieldValue=null;
+				pair.setFieldName(fieldName);
+				if (fieldName.split("\\.")[1].equals(FieldNames.RULE_NAME)) {
+					pair.setFieldValue(rule.getName());
+				}
+				else if (fieldName.split("\\.")[1].equals(FieldNames.RULE_DESCRIPTION)) {
+					pair.setFieldValue(rule.getDescription());
+				}
+				else if (fieldName.split("\\.")[1].equals(FieldNames.RULE_MANDATORY)) {
+					pair.setFieldValue(Boolean.toString(rule.isMandatory()));
+				}				
+				else if (fieldName.split("\\.")[1].equals(FieldNames.RULE_WEIGHT)) {
+					pair.setFieldValue(Integer.toString(rule.getWeight()));
+				}
+				else if (fieldName.split("\\.")[1].equals(FieldNames.RULE_PROVIDER_INFORMATION)) {
+					pair.setFieldValue(rule.getProvider_information());
+				}
+				else{
+					pair.setFieldValue(rule.getConfiguration().getProperty(fieldName.split("\\.")[1]));
+				}				
+				logger.debug("getting rule value pairs-addpair: "+fieldName+"-"+rule.getConfiguration().getProperty(fieldName.split("\\.")[1]));
+				ruleValues.add(pair);
+			}
+			return ruleValues;
+		} catch (Exception e) {
+			logger.error("Error getting ruleValue pairs", e);
+			throw new ValidatorAdminException(e);
+		}
+
+	}	
+
+	
+	@Override
+	public List<Rule> getAllRules() throws ValidatorAdminException {
+		try {
+			logger.debug("getting all rules ");
+			return rulesDao.getAllRules();
+		} catch (Exception e) {
+			logger.error("Error getting all rules  to rule pair", e);
+			throw new ValidatorAdminException(e);
+		}	
+	}	
+	
+	@Override
+	@Transactional(propagation = Propagation.REQUIRED)
+	public String storeRule(Rule rule, String[] inputs, Boolean updateExisting) throws ValidatorAdminException {
+		try {
+			logger.debug("edit rule using the inputs of the user");
+			List<String> fields = new ArrayList<String>();
+			List<FieldDetails> generalFields = FieldsAndDetails.getFieldsAndDetails("Rules");
+			List<FieldDetails> usageFields = FieldsAndDetails.getFieldsAndDetails("usage_rules");
+			List<FieldDetails> crisFields = FieldsAndDetails.getFieldsAndDetails("cris_rules");
+			List<FieldDetails> subFields = FieldsAndDetails.getFieldsAndDetails(TypesAndTableNames.getTableNameOfType(rule.getType()));
+			for (FieldDetails field : generalFields) {
+				if (field.isForDet() && !field.getFieldName().equals(FieldNames.RULE_TYPE) && !field.getFieldName().equals(FieldNames.RULE_JOBTYPE))
+					fields.add(field.getFieldName());
+			}
+			if (subFields != null) {
+				for (FieldDetails field : subFields) {
+					if (field.isForDet())
+						fields.add(field.getFieldName());
+				}
+			}
+			if (rule.getJob_type().toLowerCase().contains("usage")) {
+				for (FieldDetails field : usageFields) {
+					if (field.isForDet())
+						fields.add(field.getFieldName());
+				}
+			}
+			if (rule.isFor_cris()) {
+				for (FieldDetails field : crisFields) {
+					if (field.isForDet())
+						fields.add(field.getFieldName());
+				}
+			}
+			Properties pros = new Properties();
+			logger.debug("Fields: " + fields);
+			for (int i = 0; i < inputs.length; i++) {
+				logger.debug("input-" + i + " : "+ inputs[i]);
+			}
+			for (int i = 0; i < inputs.length; i++) {
+				logger.debug("Field: " + fields.get(i) + " - input: " + inputs[i]);
+				if (fields.get(i).equals(FieldNames.RULE_NAME)) {
+					rule.setName(inputs[i]);
+				}
+				else if (fields.get(i).equals(FieldNames.RULE_DESCRIPTION)) {
+					rule.setDescription(inputs[i]);
+				}
+				else if (fields.get(i).equals(FieldNames.RULE_MANDATORY)) {
+					rule.setMandatory(Boolean.parseBoolean(inputs[i]));
+				}				
+				else if (fields.get(i).equals(FieldNames.RULE_WEIGHT)) {
+					rule.setWeight(Integer.parseInt(inputs[i]));
+				}
+				else if (fields.get(i).equals(FieldNames.RULE_PROVIDER_INFORMATION)) {
+					rule.setProvider_information(inputs[i]);
+				}
+				else if (fields.get(i).equals(FieldNames.RULE_CRIS_ENTITY)) {
+					rule.setEntity_type(inputs[i]);
+				}
+				else{
+					if (fields.get(i).equals(FieldNames.RULE_VOCABULARY_WORDS)) {
+						String words = "";
+						BufferedReader bf = new BufferedReader(new StringReader(inputs[i]));
+						String line;
+						while ((line = bf.readLine()) != null) {
+							words += ",";
+							words += line;
+						}
+						words = words.substring(1);
+						pros.setProperty(fields.get(i), words);
+					} else if (fields.get(i).equals(FieldNames.RULE_NOTCONNFUSEDFIELDS)) {
+						String ncfields = "";
+						BufferedReader bf = new BufferedReader(new StringReader(inputs[i]));
+						String line;
+						while ((line = bf.readLine()) != null)
+							ncfields += line + "\n";
+						ncfields = ncfields.substring(0, ncfields.lastIndexOf('\n'));
+						pros.setProperty(fields.get(i), ncfields);
+					
+					}else  
+						pros.setProperty(fields.get(i), inputs[i]);
+				}
+			}
+			rule.setConfiguration(pros);
+			
+			if (!updateExisting)
+				rule.setId(-1);
+			rulesDao.save(rule);
+			return null;
+
+		} catch (Exception e) {
+			logger.error("Error storing rule", e);
+			throw new ValidatorAdminException(e);
+		}
+	}
+		
+	@Override
+	public List<String> getRuleLabels(String ruleType, Boolean forUsage, Boolean forCris) throws ValidatorAdminException {
+		try {
+			logger.debug("getting rule labels for type " + ruleType);
+			List<String> labels = new ArrayList<String>();
+			List<FieldDetails> generalFields = FieldsAndDetails.getFieldsAndDetails("Rules");
+			List<FieldDetails> usageFields = FieldsAndDetails.getFieldsAndDetails("usage_rules");
+			List<FieldDetails> crisFields = FieldsAndDetails.getFieldsAndDetails("cris_rules");
+			List<FieldDetails> subFields = FieldsAndDetails.getFieldsAndDetails(TypesAndTableNames.getTableNameOfType(ruleType));
+			for (FieldDetails field : generalFields) {
+				if (field.isForDet() && !field.getFieldName().equals(FieldNames.RULE_TYPE) && !field.getFieldName().equals(FieldNames.RULE_JOBTYPE))
+					labels.add(field.getTableName() + "." + field.getFieldName());
+			}
+			if (subFields != null) {
+				for (FieldDetails field : subFields) {
+					if (field.isForDet())
+						labels.add(field.getTableName() + "." + field.getFieldName());
+				}
+			}
+			if (forUsage) {
+				for (FieldDetails field : usageFields) {
+					if (field.isForDet())
+						labels.add(field.getTableName().split("_")[1] + "." + field.getFieldName());
+				}
+			}
+			if (forCris) {
+				for (FieldDetails field :crisFields) {
+					if (field.isForDet())
+						labels.add(field.getTableName().split("_")[1] + "." + field.getFieldName());
+				}
+			}
+			return labels;
+		}catch (Exception e) {
+			logger.error("getting rule labels for type " + ruleType, e);
+			throw new ValidatorAdminException(e);
+		}			
+	}
+	
+	@Override
+	public List<RuleSet> getRuleSets() throws ValidatorAdminException {
+		try {
+			logger.debug("Getting all rule sets");
+			return rulesetsDao.getRuleSets();
+		} catch (Exception e) {
+			logger.error("Error getting all rule sets", e);
+			throw new ValidatorAdminException(e);
+		}
+	}
+	
+	@Override
+	public String deleteRule(int ruleId) throws ValidatorAdminException {
+		try {
+			logger.debug("deleting rule with id "+ruleId);
+			return rulesDao.delete(ruleId);
+		}
+		catch (Exception e) {
+			logger.error("Error deleting rule with id "+ruleId, e);
+			throw new ValidatorAdminException(e);
+		}
+	}
+	
+	@Override
+	public RuleSet getRuleSet(int setId) throws ValidatorAdminException {
+		try {
+			logger.debug("getting ruleSet with id: " + setId);
+			return rulesetsDao.get(setId);
+		} catch (Exception e) {
+			logger.error("Error getting ruleSet with id: " + setId, e);
+			throw new ValidatorAdminException(e);
+		}
+	}
+	
+	@Override
+	public void storeRuleSet(RuleSet ruleSet, boolean updateExisting) throws ValidatorAdminException {
+		try {
+			if (updateExisting)
+				logger.debug("editing rule set " + ruleSet.getId());
+			else
+				logger.debug("creating rule set " + ruleSet.getName());
+			
+			rulesetsDao.save(ruleSet);
+			
+			} catch (Exception e) {
+				logger.error("Error storing ruleSet " + ruleSet.getName(), e);
+			throw new ValidatorAdminException(e);
+		}
+		
+	}
+	
+	@Override
+	public void deleteRuleSet(int setId) throws ValidatorAdminException {
+		try {
+			logger.debug("deleting rule set " + setId);
+			rulesetsDao.delete(setId);
+		} catch (Exception e) {
+			logger.error("Error deleting rule set " + setId, e);
+			throw new ValidatorAdminException(e);
+		}
+	}	
+	
+	@Override
+	@Transactional(propagation = Propagation.REQUIRED)
+	public int deleteOldJobs(String date, String period, String mode) throws ValidatorAdminException {
+		int jobsDeleted = 0;
+		try {
+			logger.debug("Deleting jobs " + period + " than "+date);
+			if (mode.equalsIgnoreCase("uncompleted_only")) {
+				jobsDeleted = jobsDao.deleteUncompletedJobs();
+			}
+			else if (mode.equalsIgnoreCase("compTest_only"))
+				jobsDeleted = jobsDao.deleteOld(date, period, "Compatibility Test");
+			else if (mode.equalsIgnoreCase("all"))
+				jobsDeleted = jobsDao.deleteOld(date, period, null);
+			else if (mode.equalsIgnoreCase("import"))
+				jobsDao.importOldJobs();;
+		} catch (Exception e) {
+			logger.error("Error deleting old jobs", e);
+			throw new ValidatorAdminException(e);
+		}
+		return jobsDeleted;
+	}
+
+	public Emailer getEmailer() {
+		return emailer;
+	}
+	public JobsDAO getJobsDao() {
+		return jobsDao;
+	}
+
+	public void setJobsDao(JobsDAO jobsDao) {
+		this.jobsDao = jobsDao;
+	}
+
+	public RulesetsDAO getRulesetsDao() {
+		return rulesetsDao;
+	}
+
+	public void setRulesetsDao(RulesetsDAO rulesetsDao) {
+		this.rulesetsDao = rulesetsDao;
+	}
+
+	public RulesDAO getRulesDao() {
+		return rulesDao;
+	}
+
+	public void setRulesDao(RulesDAO rulesDao) {
+		this.rulesDao = rulesDao;
+	}
+
+	public UsersDAO getUsersDao() {
+		return usersDao;
+	}
+
+	public void setUsersDao(UsersDAO usersDao) {
+		this.usersDao = usersDao;
+	}
+
+	public void setEmailer(Emailer emailer) {
+		this.emailer = emailer;
+	}
+
+	
+	public String getRegistrationsReportEmail() {
+		return registrationsReportEmail;
+	}
+
+	public void setRegistrationsReportEmail(String registrationsReportEmail) {
+		this.registrationsReportEmail = registrationsReportEmail;
+	}
+
+	public EmailBuilder getEmailBuilder() {
+		return emailBuilder;
+	}
+
+	public void setEmailBuilder(EmailBuilder emailBuilder) {
+		this.emailBuilder = emailBuilder;
+	}
+
+	@Override
+	public boolean userIsMasterAdmin(String user)
+			throws ValidatorAdminException {
+		logger.debug("checking if user " + user + " is master admin");
+		if (this.masterAdmins.contains(user)) {
+			logger.debug("is master admin");
+			return true;
+		} else {
+			logger.debug("isn't master admin");
+			return false;
+		}
+	}
+	
+	@Override
+	public boolean userIsSecondaryAdmin(String user)
+			throws ValidatorAdminException {
+		logger.debug("checking if user " + user + " is secondary admin");
+		if (this.secondaryAdmins.contains(user)) {
+			logger.debug("is secondary admin");
+			return true;
+		} else {
+			logger.debug("isn't secondary admin");
+			return false;
+		}
+	}
+	
+
+	public void setMasterAdmins(String masterAdmins) {
+		String[] recps = masterAdmins.split(",");
+
+		for (String recp : recps) {
+			recp = recp.trim();
+			this.masterAdmins.add(recp);
+		}
+	}
+
+	public void setSecondaryAdmins(String secondaryAdmins) {
+		String[] recps = secondaryAdmins.split(",");
+
+		for (String recp : recps) {
+			recp = recp.trim();
+			this.secondaryAdmins.add(recp);
+		}
+	}
+
+	@Override
+	public String sendRegistrationsReport(String dateFrom, String dateTo, String month, String year) throws ValidatorAdminException {
+		try {
+			List <StoredJob> jobs = null;
+			Map<String, String> jobInfo = null;
+			List<Map<String, String>> passedJobsList = new ArrayList<Map<String, String>>();
+			List<Map<String, String>> failedJobsList = new ArrayList<Map<String, String>>();
+			
+			Map<String, StoredJob> passedJobsMap = new HashMap<String, StoredJob>();
+			Map<String, StoredJob> failedJobsMap = new HashMap<String, StoredJob>();
+			
+			logger.debug("Sending registrations Report for period: " + dateFrom + " to: " + dateTo);
+			jobs = jobsDao.getJobs(null, "Registration Request", null, null, dateFrom, dateTo);
+			for (StoredJob job : jobs) {
+				String key = job.getBaseUrl()+"|"+job.getDesiredCompatibilityLevel();
+				if (job.getContentJobScore() >= 50 && job.getContentJobScore() >= 50) {
+					failedJobsMap.remove(key);
+					passedJobsMap.put (key, job);
+				} else {
+					if (!passedJobsMap.containsKey(key)) {
+						failedJobsMap.put (key, job);
+					}
+				}
+			}
+			boolean oldFormat = false;
+			for (StoredJob job : passedJobsMap.values()) {
+				jobInfo = new HashMap<String, String>();
+				jobInfo.put("name", job.getOfficialName());
+				jobInfo.put("baseUrl", job.getBaseUrl());
+				jobInfo.put("email", job.getUserEmail());
+				jobInfo.put("compliance", job.getDesiredCompatibilityLevel());
+				if (job.getOfficialName() == null)
+					oldFormat = true;
+				passedJobsList.add(jobInfo);
+			}
+			for (StoredJob job : failedJobsMap.values()) {
+				jobInfo = new HashMap<String, String>();
+				jobInfo.put("name", job.getOfficialName());
+				jobInfo.put("baseUrl", job.getBaseUrl());
+				jobInfo.put("email", job.getUserEmail());
+				jobInfo.put("compliance", job.getDesiredCompatibilityLevel());
+				if (job.getOfficialName() == null)
+					oldFormat = true;
+				failedJobsList.add(jobInfo);
+			}
+			String report = emailBuilder.buildXml(passedJobsList, failedJobsList, month, oldFormat);
+			ArrayList<String> recps = new ArrayList<String>();
+			recps.add(registrationsReportEmail);
+			emailer.sendMail(recps,"Datasource Registrations -- " + month + " " + year, report, true, null);
+			logger.debug("email : " + report);
+			return report;
+		} catch (Exception e) {
+			logger.error("Error deleting old jobs", e);
+			throw new ValidatorAdminException(e);
+		}
+	}
+
+}
+
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/java/eu/dnetlib/validator/admin/api/ValidatorAdminAPI.java
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/java/eu/dnetlib/validator/admin/api/ValidatorAdminAPI.java	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/java/eu/dnetlib/validator/admin/api/ValidatorAdminAPI.java	(revision 47450)
@@ -0,0 +1,136 @@
+package eu.dnetlib.validator.admin.api;
+
+import java.util.List;
+
+import eu.dnetlib.domain.functionality.validator.Rule;
+import eu.dnetlib.domain.functionality.validator.RuleSet;
+import eu.dnetlib.validator.admin.actions.rules.FieldPair;
+
+/**
+ * 
+ * @author Nikon Gasparis
+ * 
+ */
+public interface ValidatorAdminAPI {
+
+	public List<Rule> getAllRules() throws  ValidatorAdminException;
+
+	public List<FieldPair> getRuleValuePairs(Rule rule) throws  ValidatorAdminException;
+	
+	public Rule getRule(int ruleId) throws ValidatorAdminException;
+	
+	public List<String> getRuleLabels(String ruleType, Boolean forUsage, Boolean forCris) throws ValidatorAdminException;
+	
+	public String storeRule(Rule rule, String[] inputs, Boolean updateExisting) throws ValidatorAdminException;
+	
+	public void storeRuleSet(RuleSet ruleSet, boolean updateExisting) throws ValidatorAdminException;	
+	
+	public void deleteRuleSet(int setId) throws  ValidatorAdminException;
+	
+	public String deleteRule(int ruleId) throws  ValidatorAdminException;
+
+	public List<RuleSet> getRuleSets() throws  ValidatorAdminException;
+
+	public RuleSet getRuleSet(int setId) throws  ValidatorAdminException;
+
+	public boolean userIsSecondaryAdmin(String user)
+			throws ValidatorAdminException;
+	
+	public boolean userIsMasterAdmin(String user)
+			throws ValidatorAdminException;
+			
+	public int deleteOldJobs(String date, String period, String target) throws ValidatorAdminException;
+
+	public String sendRegistrationsReport(String dateFrom, String dateTo, String month, String year) throws ValidatorAdminException;
+	
+
+//	public List<String> getConstantRuleTypes() throws  AdminAPIException;
+	
+//	public String[] getJobTypesAsArray() throws  AdminAPIException;
+
+
+	/*
+	public String getRuleSetName(int setId) throws  AdminAPIException;
+	
+
+	
+
+	public List<String> getRuleSetRuleIdsByJobType(int setId, String jobType)
+			throws  AdminAPIException;
+
+	public List<RuleS> getAllRulesForPresentationByJobType(String jobType)
+			throws  AdminAPIException;
+
+	public List<RuleS> getAllRulesForPresentationByJobTypeByRuleSet(
+			List<String> ruleSetRuleIds, String jobType)
+			throws  AdminAPIException;
+
+	public List<RuleD> getRulesForJobValidationByJobType(String jobType)
+			throws  AdminAPIException;
+
+	public List<RuleD> getRulesForJobValidationByJobTypeByRuleSet(int setId,
+			String jobType) throws  AdminAPIException;
+
+	public List<RuleStored> getAllRulesByJobType(String jobType)
+			throws  AdminAPIException;
+
+	public List<RulePair> getAllRulesToRulePair() throws  AdminAPIException;
+
+	public Map<String, List<JobSubmitted>> getJobsOfUser(String userName)
+			throws  AdminAPIException;
+
+
+
+	public Properties getRuleProperties(String ruleId)
+			throws  AdminAPIException;
+
+
+
+	public Serializable getRuleClassInstanceByType(String type, Properties pros,int id) throws  AdminAPIException;
+
+	public List<String> getAllRuleIdsByJobType(String jobType)
+			throws  AdminAPIException;
+
+	public List<RuleD> convertRuleIdsListToRuleDList(List<String> ruleIds);
+
+	public List<String> getValidationErrors(int jobId, int ruleId)
+			throws  AdminAPIException;
+
+	public JobSubmitted getJobSubmitted(String jobId) throws  AdminAPIException;
+
+	public List<TaskStored> getJobTasks(String jobId, JobSubmitted job)
+			throws  AdminAPIException;
+
+	public List<Entry> getJobSummary(String jobId, String groupBy) throws AdminAPIException;
+
+
+	public Map<String, String> getRuleSetsMap() throws AdminAPIException;
+
+
+	public void restore();
+
+	public List<String> getDistinctGroupByValues(String jobId) throws  AdminAPIException;
+
+	public String getFilteredScore(String jobId, String groupBy) throws  AdminAPIException;
+
+	public void preRegistrationValidations(JobForRegistration job) throws AdminAPIException;
+
+	public void storeJobForRegistration(JobForRegistration job) throws AdminAPIException;
+
+	public JobForRegistration getJobForRegistration(String activationId) throws AdminAPIException;
+
+	public void deleteJobForRegistration(String activationId) throws AdminAPIException;
+
+	public void cleanUncompletedJobs() throws AdminAPIException;
+
+	public Map<String, Set<Integer>> prepareCrisJobs(Set<Integer> chosenContentRules, Boolean referential, String selectedEntities) throws AdminAPIException;
+
+	public Map<String, String> getRuleSetsMap(String deployEnvironment)
+			throws AdminAPIException;
+
+	public Boolean isRepoAdmin(String user) throws AdminAPIException;
+	
+	*
+	*/
+
+}
\ No newline at end of file
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/java/eu/dnetlib/validator/admin/actions/jobs/RegistrationsReport.java
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/java/eu/dnetlib/validator/admin/actions/jobs/RegistrationsReport.java	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/java/eu/dnetlib/validator/admin/actions/jobs/RegistrationsReport.java	(revision 47450)
@@ -0,0 +1,87 @@
+package eu.dnetlib.validator.admin.actions.jobs;
+
+import org.apache.log4j.Logger;
+
+import com.opensymphony.xwork2.Action;
+
+import eu.dnetlib.validator.admin.actions.BaseValidatorAction;
+import eu.dnetlib.validator.admin.api.ValidatorAdminException;
+
+public class RegistrationsReport extends BaseValidatorAction {
+
+	private static final long serialVersionUID = -1868055729316139461L;
+	private static final Logger logger = Logger.getLogger(RegistrationsReport.class);
+	private String dateFrom = null;
+	private String dateTo = null;
+	private String mode, month;
+	private int year;
+
+	public String execute() {
+		this.clearErrorsAndMessages();
+		try {
+			
+			int monthInt = Integer.parseInt(month.split("-")[1]);
+			String monthStr = month.split("-")[0];
+			dateFrom = new String("YYYY-MM-01").replaceFirst("MM", Integer.toString(monthInt)).replaceFirst("YYYY", Integer.toString(year));
+			if (monthInt != 12)
+				dateTo = new String("YYYY-MM-01").replaceFirst("MM", Integer.toString(monthInt+1)).replaceFirst("YYYY", Integer.toString(year));
+			else
+				dateTo = new String("YYYY-MM-01").replaceFirst("MM", "1").replaceFirst("YYYY", Integer.toString(year+1));
+			this.getValidatorAdminAPI().sendRegistrationsReport(dateFrom, dateTo, monthStr, Integer.toString(year));
+		} catch (ValidatorAdminException e) {
+			logger.error("Error deleting old jobs", e);
+			this.addActionError(this.getText("generic.error"));
+			reportException(e);
+			return "input-problem";
+		}
+		this.addActionMessage(this.getText("manageJobs.sendReports.success"));
+		
+		return Action.SUCCESS;
+	}
+	
+
+	public void validate() {
+		this.clearErrors();
+	}
+
+	public String getDateFrom() {
+		return dateFrom;
+	}
+
+	public void setDateFrom(String dateFrom) {
+		this.dateFrom = dateFrom;
+	}
+
+	public String getDateTo() {
+		return dateTo;
+	}
+
+	public void setDateTo(String dateTo) {
+		this.dateTo = dateTo;
+	}
+
+	public String getMode() {
+		return mode;
+	}
+
+	public void setMode(String mode) {
+		this.mode = mode;
+	}
+
+	public String getMonth() {
+		return month;
+	}
+
+	public void setMonth(String month) {
+		this.month = month;
+	}
+
+	public int getYear() {
+		return year;
+	}
+
+	public void setYear(int year) {
+		this.year = year;
+	}
+	
+}
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/java/eu/dnetlib/validator/admin/config/CascadingPropertyLoader.java
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/java/eu/dnetlib/validator/admin/config/CascadingPropertyLoader.java	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/java/eu/dnetlib/validator/admin/config/CascadingPropertyLoader.java	(revision 47450)
@@ -0,0 +1,55 @@
+package eu.dnetlib.validator.admin.config;
+
+import java.util.Properties;
+
+import org.springframework.beans.BeansException;
+import org.springframework.beans.factory.InitializingBean;
+import org.springframework.beans.factory.config.ConfigurableListableBeanFactory;
+import org.springframework.beans.factory.config.PropertyPlaceholderConfigurer;
+
+/**
+ * CascadingPropertyLoader loads a number of property files and mergers them together, so that the last properties
+ * override the previous. It also supports property expansion like:
+ * 
+ * <code>
+ *   something = 1
+ *   somethingelse = 2
+ *   test = ${something}/${somethingelse}
+ *  </code>
+ * 
+ * <p>
+ * And if you override something to XX, then test will become XX/2
+ * </p>
+ * 
+ * 
+ * @author marko
+ * 
+ */
+public class CascadingPropertyLoader extends PropertyPlaceholderConfigurer implements InitializingBean {
+
+	private Properties properties;
+
+	public void afterPropertiesSet() throws Exception {
+		this.properties = mergeProperties();
+
+		// Convert the merged properties, if necessary.
+		convertProperties(this.properties);
+		
+		logger.debug("Properties: " + properties);
+	}
+
+	@Override
+	protected void processProperties(final ConfigurableListableBeanFactory beanFactoryToProcess, final Properties props) throws BeansException {
+		super.processProperties(beanFactoryToProcess, props);
+	}
+
+	public Properties getProperties() {
+		return properties;
+	}
+
+	public void setProperties(final Properties properties) {
+		super.setProperties(properties);
+		
+		this.properties = properties;
+	}
+}
\ No newline at end of file
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/java/eu/dnetlib/validator/admin/actions/rulesets/GetRuleSets.java
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/java/eu/dnetlib/validator/admin/actions/rulesets/GetRuleSets.java	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/java/eu/dnetlib/validator/admin/actions/rulesets/GetRuleSets.java	(revision 47450)
@@ -0,0 +1,39 @@
+package eu.dnetlib.validator.admin.actions.rulesets;
+
+import java.util.List;
+
+import org.apache.log4j.Logger;
+
+import com.opensymphony.xwork2.Action;
+
+import eu.dnetlib.domain.functionality.validator.RuleSet;
+import eu.dnetlib.validator.admin.actions.BaseValidatorAction;
+
+public class GetRuleSets extends BaseValidatorAction {
+
+	private static final long serialVersionUID = -5220242100308666597L;
+	private List<RuleSet> sets;
+	private static final Logger logger = Logger.getLogger(GetRuleSets.class);
+
+	public List<RuleSet> getSets() {
+		return sets;
+	}
+
+	public void setSets(List<RuleSet> sets) {
+		this.sets = sets;
+	}
+
+	public String execute() throws Exception {
+		this.clearErrorsAndMessages();
+		try {
+			logger.debug("getting all rule sets");
+			sets = this.getValidatorAdminAPI().getRuleSets();
+			return Action.SUCCESS;
+		} catch (Exception e) {
+			logger.error("Error getting rule sets", e);
+			this.addActionError(this.getText("generic.error"));
+			reportException(e);
+			return "exception";
+		}
+	}
+}
\ No newline at end of file
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/java/eu/dnetlib/validator/admin/constants/fielddetails/FieldDetails.java
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/java/eu/dnetlib/validator/admin/constants/fielddetails/FieldDetails.java	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/java/eu/dnetlib/validator/admin/constants/fielddetails/FieldDetails.java	(revision 47450)
@@ -0,0 +1,32 @@
+package eu.dnetlib.validator.admin.constants.fielddetails;
+
+public class FieldDetails {
+
+	private String tableName;
+	private String fieldName;
+	// true if the user must provide a value for this field when adding a new record in the table
+	private boolean forDet;
+	
+	public String getTableName() {
+		return tableName;
+	}
+	public void setTableName(String tableName) {
+		this.tableName = tableName;
+	}
+	public String getFieldName() {
+		return fieldName;
+	}
+	public void setFieldName(String fieldName) {
+		this.fieldName = fieldName;
+	}
+	public boolean isForDet() {
+		return forDet;
+	}
+	public void setForDet(boolean forDet) {
+		this.forDet = forDet;
+	}
+	
+	public String getBundleName() {
+		return this.tableName+"."+this.fieldName;
+	}
+}
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/java/eu/dnetlib/validator/admin/actions/rules/AddRule.java
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/java/eu/dnetlib/validator/admin/actions/rules/AddRule.java	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/java/eu/dnetlib/validator/admin/actions/rules/AddRule.java	(revision 47450)
@@ -0,0 +1,87 @@
+package eu.dnetlib.validator.admin.actions.rules;
+
+
+import org.apache.log4j.Logger;
+
+import com.opensymphony.xwork2.Action;
+
+import eu.dnetlib.domain.functionality.validator.Rule;
+import eu.dnetlib.validator.admin.actions.BaseValidatorAction;
+
+public class AddRule extends BaseValidatorAction {
+
+	private static final long serialVersionUID = -4636737264204104816L;
+	private String[] inputs;
+	private String type, jobType;
+	private boolean forCris;
+	private static final Logger logger = Logger.getLogger(AddRule.class);
+
+	public String execute() {
+		this.clearErrorsAndMessages();
+		try {
+			logger.debug("adding rule of type "+type+" using user inputs");
+			logger.debug("for cris: "+forCris);
+			logger.debug("jobType: "+ jobType);
+			Rule rule = new Rule();
+			rule.setType(type);
+			rule.setJob_type(jobType);
+			rule.setFor_cris(forCris);
+//			rule.setEntity_type(entityType);
+			String ret = this.getValidatorAdminAPI().storeRule(rule, inputs, true);
+			if (ret != null) {
+				this.addActionError(this.getText(ret));
+				return "input-problem";
+			}
+			
+			this.addActionMessage(this.getText("addRule.success"));
+			
+			return Action.SUCCESS;
+		} catch(Exception e) {
+			logger.error("Error adding rule", e);
+			this.addActionError(this.getText("generic.error"));
+			reportException(e);
+			return "exception";
+		}
+	}
+	
+	public String getJobType() {
+		return jobType;
+	}
+
+	public void setJobType(String jobType) {
+		this.jobType = jobType;
+	}
+
+	public boolean isForCris() {
+		return forCris;
+	}
+
+	public void setForCris(boolean forCris) {
+		this.forCris = forCris;
+	}
+
+//	public String getEntityType() {
+//		return entityType;
+//	}
+//
+//	public void setEntityType(String entityType) {
+//		this.entityType = entityType;
+//	}
+
+	public String getType() {
+		return type;
+	}
+
+	public void setType(String type) {
+		this.type = type;
+	}
+
+	public String[] getInputs() {
+		return inputs;
+	}
+
+	public void setInputs(String[] inputs) {
+		this.inputs = inputs;
+	}
+
+}
\ No newline at end of file
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/resources/eu/dnetlib/validator/admin/api/springContext-validator-user-ldap.xml
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/resources/eu/dnetlib/validator/admin/api/springContext-validator-user-ldap.xml	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/resources/eu/dnetlib/validator/admin/api/springContext-validator-user-ldap.xml	(revision 47450)
@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<beans xmlns="http://www.springframework.org/schema/beans"
+	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+	xmlns:context="http://www.springframework.org/schema/context"
+	xmlns:cxf="http://cxf.apache.org/core"
+	xmlns:jaxws="http://cxf.apache.org/jaxws"
+	xmlns:p="http://http://www.springframework.org/schema/p"
+	xmlns:template="http://dnetlib.eu/springbeans/template"
+	xmlns:t="http://dnetlib.eu/springbeans/t"
+	xmlns:tx="http://www.springframework.org/schema/tx"
+	
+	xsi:schemaLocation="
+		http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.0.xsd
+        http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.0.xsd
+        http://cxf.apache.org/core http://cxf.apache.org/schemas/core.xsd
+        http://cxf.apache.org/jaxws http://cxf.apache.org/schemas/jaxws.xsd
+        http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-4.0.xsd
+        http://dnetlib.eu/springbeans/template http://dnetlib.eu/springbeans/template.xsd"
+	default-autowire="no">
+
+	<bean id="userAPI" class="eu.dnetlib.validator.admin.api.impls.UserApiLDAP" lazy-init="true">
+		<property name="ldapAddress" value="${services.validator.ldap.address}" />
+		<property name="ldapPort" value="${services.validator.ldap.port}" />
+		<property name="ldapUsername" value="${services.validator.ldap.username}" />
+		<property name="ldapPassword" value="${services.validator.ldap.password}" />
+		<property name="ldapUsersDN" value="${services.validator.ldap.usersDN}" />
+	</bean>
+
+</beans>
\ No newline at end of file
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/java/eu/dnetlib/validator/admin/actions/rules/PopulateRuleList.java
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/java/eu/dnetlib/validator/admin/actions/rules/PopulateRuleList.java	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/java/eu/dnetlib/validator/admin/actions/rules/PopulateRuleList.java	(revision 47450)
@@ -0,0 +1,42 @@
+package eu.dnetlib.validator.admin.actions.rules;
+
+import java.util.List;
+
+import org.apache.log4j.Logger;
+
+import com.opensymphony.xwork2.Action;
+
+import eu.dnetlib.domain.functionality.validator.Rule;
+import eu.dnetlib.validator.admin.actions.BaseValidatorAction;
+
+public class PopulateRuleList extends BaseValidatorAction {
+
+	private static final long serialVersionUID = -4035025449768015129L;
+	private List<Rule> rules;
+	private static final Logger logger = Logger.getLogger(PopulateRuleList.class);
+
+	public String execute() {
+		this.clearErrorsAndMessages();
+		try {
+			logger.debug("populating rule list");
+			rules = this.getValidatorAdminAPI().getAllRules();
+			return Action.SUCCESS;
+		}
+		catch(Exception e) {
+			logger.error("Error redirecting to job", e);
+			this.addActionError(this.getText("generic.error"));
+			reportException(e);
+			return "exception";
+		}
+	}
+
+	public List<Rule> getRules() {
+		return rules;
+	}
+
+	public void setRules(List<Rule> rules) {
+		this.rules = rules;
+	}
+	
+	
+}
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/java/eu/dnetlib/validator/admin/actions/DummyAction.java
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/java/eu/dnetlib/validator/admin/actions/DummyAction.java	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/java/eu/dnetlib/validator/admin/actions/DummyAction.java	(revision 47450)
@@ -0,0 +1,13 @@
+package eu.dnetlib.validator.admin.actions;
+
+import com.opensymphony.xwork2.Action;
+
+public class DummyAction extends BaseValidatorAction {
+
+	private static final long serialVersionUID = 4105253794510714980L;
+
+	public String execute() {
+		return Action.SUCCESS;
+		
+	}
+}
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/resources/eu/dnetlib/validator/admin/api/springContext-validator.properties
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/resources/eu/dnetlib/validator/admin/api/springContext-validator.properties	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/resources/eu/dnetlib/validator/admin/api/springContext-validator.properties	(revision 47450)
@@ -0,0 +1,49 @@
+# the address where validator is running and is accessible from the rest of the web
+services.validator.baseUrl = http://${container.hostname}:${container.port}/${container.context}
+
+# the email of the administrator
+# he will receive all the automatic bug reports and feedback created
+services.validator.adminEmail = nikonas@di.uoa.gr
+
+# the private key used for signing the direct login links from the OpenAIRE portal
+services.validator.portallogin.key = 568345
+
+
+# If set to true then, when the server is stopped and restarted, all jobs that haven't finished for any reason will restart
+# If set to false then only jobs that stopped gracefully due to a previous server restart will be restarted
+# Unless the server has stopped unexpectedly and you are now restarting it, this setting must be left to false
+services.validator.jobs.totalRestart = false
+
+# the mailhost for the mail service
+services.validator.mail.host = smtp.gmail.com
+# the port where the mail service is running
+services.validator.mail.port = 465
+# the address that appears in the from field in the mails send by the validator
+services.validator.mail.fromAddress = no-reply@openaire.eu
+# the reply-to field value in the mails send by the validator
+services.validator.mail.replyToAddress = no-reply@openaire.eu
+# the username of the account used to login in the mail server
+services.validator.mail.username = test.openaire@gmail.com
+# the password of the account used to login in the mail server
+services.validator.mail.password = ^($*@$)*!$
+# if authentication should take place
+# if set to false username and password is not needed
+services.validator.mail.authenticate = true
+# is set to yes then all mails will not be sent to their targets but to the address specified in services.validator.mail.overrideEmail
+services.validator.mail.override = false
+# if set to true then no mails are send, they are only logged as a debug message
+services.validator.mail.logonly = false
+# the mode used for the mails send by the validator
+services.validator.mail.mode = ssl
+# used by eu.dnetlib.utils.MailLibrary to control debuggin messages
+services.validator.mail.debug = false
+# if services.validator.mail.override is true then all mails will be send only to this address
+services.validator.mail.overrideEmail = nikonas@di.uoa.gr
+# a comma-seperated list of address that will receive all mails about validations and repo registrations
+services.validator.mail.specialRecipients = nikonas@di.uoa.gr
+
+# a comma-seperated list of addresses that have the ability to register repos without the need for validation and registration
+services.validator.repoRegistration.override = nikonas@di.uoa.gr
+
+# do not change
+services.validator.registration.validationSet = OpenAIRE For Literature Repositories
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/java/eu/dnetlib/validator/admin/api/impls/UserApiLDAP.java
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/java/eu/dnetlib/validator/admin/api/impls/UserApiLDAP.java	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/java/eu/dnetlib/validator/admin/api/impls/UserApiLDAP.java	(revision 47450)
@@ -0,0 +1,438 @@
+package eu.dnetlib.validator.admin.api.impls;
+
+import java.security.GeneralSecurityException;
+import java.security.MessageDigest;
+import java.util.Random;
+import java.util.UUID;
+
+import org.apache.log4j.Logger;
+
+import com.unboundid.ldap.sdk.Attribute;
+import com.unboundid.ldap.sdk.DN;
+import com.unboundid.ldap.sdk.Entry;
+import com.unboundid.ldap.sdk.Filter;
+import com.unboundid.ldap.sdk.LDAPConnection;
+import com.unboundid.ldap.sdk.Modification;
+import com.unboundid.ldap.sdk.ModificationType;
+import com.unboundid.ldap.sdk.SearchRequest;
+import com.unboundid.ldap.sdk.SearchResult;
+import com.unboundid.ldap.sdk.SearchResultEntry;
+import com.unboundid.ldap.sdk.SearchScope;
+import com.unboundid.util.Base64;
+
+import eu.dnetlib.domain.functionality.UserProfile;
+import eu.dnetlib.validator.admin.api.UserApi;
+
+public class UserApiLDAP implements UserApi {
+
+	transient Logger logger = Logger.getLogger(UserApiLDAP.class);
+
+	private int ldapPort = 0;
+	private String ldapAddress;
+	private String ldapUsername;
+	private String ldapPassword;
+	private String ldapUsersDN;
+
+	@Override
+	public boolean activateUser(String activationId) throws Exception {
+		LDAPConnection connection = null;
+		try {
+			logger.debug("activating user with activationId " + activationId);
+			connection = new LDAPConnection(ldapAddress, ldapPort, ldapUsername, ldapPassword);
+			Filter filter = Filter.createEqualityFilter("employeeNumber", activationId);
+			SearchRequest searchRequest = new SearchRequest(ldapUsersDN, SearchScope.SUB, filter, "uid");
+			SearchResult searchResult = connection.search(searchRequest);
+			String dn = null;
+
+			if ( searchResult.getSearchEntries().size() > 0	) {
+			
+				for (SearchResultEntry entry : searchResult.getSearchEntries()) {
+					dn = "uid=" + entry.getAttributeValue("uid") + "," + ldapUsersDN;
+				}
+
+				Modification mod1 = new Modification(ModificationType.REPLACE, "JoomlaBlockUser", "0");
+				Modification mod2 = new Modification(ModificationType.REPLACE, "employeeNumber");
+				connection.modify(dn, mod1, mod2);
+				return true;
+			} else {
+				return false;
+			}
+		} catch (Exception e) {
+			logger.error("", e);
+			throw e;
+		} finally {
+			if (connection != null)
+				connection.close();
+		}
+	}
+
+	@Override
+	public String addUser(String username, String email, String password, String firstName, String lastName, String institution) throws Exception {
+		logger.debug("adding user " + username + " " + email + " to ldap");
+		Attribute cn = new Attribute("cn", username);
+		Attribute displayName = new Attribute("displayName", firstName + " " + lastName);
+		Attribute mail = new Attribute("mail", email);
+		Attribute givenName = new Attribute("givenName", firstName);
+		Attribute joomlaBlockUser = new Attribute("JoomlaBlockUser", "1");
+		Attribute joomlaGroup = new Attribute("JoomlaGroup", "Registered");
+		Attribute objectClass = new Attribute("objectClass", "top", "inetOrgPerson", "JoomlaUser");
+		Attribute userPassword = new Attribute("userPassword", Joomla15PasswordHash.create(password));
+		Attribute sn = new Attribute("sn", lastName);
+		Attribute uid = new Attribute("uid", username);
+		
+			
+		// Attribute joomlaUserParams = new Attribute("JoomlaUserParams", "");
+		String activationId = UUID.randomUUID().toString();
+		Attribute x500UniqueIdentifier = new Attribute("employeeNumber", activationId);
+		LDAPConnection connection = null;
+		try {
+			DN dn = new DN("uid=" + username + "," + ldapUsersDN);
+			Entry entry;
+			if (institution != null) {
+				Attribute o = new Attribute("o", institution);
+				entry = new Entry(dn.toNormalizedString(), cn, displayName, mail, givenName, joomlaBlockUser, joomlaGroup, objectClass, userPassword, sn, uid, x500UniqueIdentifier, o);
+						
+			} else {
+				entry = new Entry(dn.toNormalizedString(), cn, displayName, mail, givenName, joomlaBlockUser, joomlaGroup, objectClass, userPassword, sn, uid/*
+																																								 * ,
+																																								 * joomlaUserParams
+																																								 */, x500UniqueIdentifier);
+			}
+			connection = new LDAPConnection(ldapAddress, ldapPort, ldapUsername, ldapPassword);
+			connection.add(entry);
+
+			return activationId;
+		} catch (Exception e) {
+			logger.error("", e);
+			throw e;
+		} finally {
+			if (connection != null)
+				connection.close();
+		}
+	}
+
+	@Override
+	public boolean correctCreds(String email, String password) throws Exception {
+		LDAPConnection connection = null;
+		try {
+			logger.debug("checking if user " + email + " entered a correct password when logging in");
+			connection = new LDAPConnection(ldapAddress, ldapPort, ldapUsername, ldapPassword);
+			Filter filter = Filter.createEqualityFilter("mail", email);
+			SearchRequest searchRequest = new SearchRequest(ldapUsersDN, SearchScope.SUB, filter, "userPassword");
+			SearchResult searchResult = connection.search(searchRequest);
+			for (SearchResultEntry entry : searchResult.getSearchEntries()) {
+				if (Joomla15PasswordHash.check(password, entry.getAttributeValue("userPassword")))
+					return true;
+			}
+			return false;
+		} catch (Exception e) {
+			logger.error("", e);
+			throw e;
+		} finally {
+			if (connection != null)
+				connection.close();
+		}
+	}
+
+	@Override
+	public void editUser(UserProfile user) throws Exception {
+		LDAPConnection connection = null;
+		try {
+			logger.debug("editing user " + user.getEmail());
+			connection = new LDAPConnection(ldapAddress, ldapPort, ldapUsername, ldapPassword);
+			Filter filter = Filter.createEqualityFilter("mail", user.getEmail());
+			SearchRequest searchRequest = new SearchRequest(ldapUsersDN, SearchScope.SUB, filter, "uid");
+			SearchResult searchResult = connection.search(searchRequest);
+			String dn = null;
+			for (SearchResultEntry entry : searchResult.getSearchEntries()) {
+				dn = "uid=" + entry.getAttributeValue("uid") + "," + ldapUsersDN;
+			}
+			Modification mod1 = new Modification(ModificationType.REPLACE, "displayName", user.getFirstname() + " " + user.getLastname());
+			Modification mod2 = new Modification(ModificationType.REPLACE, "givenName", user.getFirstname());
+			Modification mod3 = new Modification(ModificationType.REPLACE, "sn", user.getLastname());
+			Modification mod4 = new Modification(ModificationType.REPLACE, "o", user.getInstitution());
+			connection.modify(dn, mod1, mod2, mod3, mod4);
+		} catch (Exception e) {
+			logger.error("", e);
+			throw e;
+		} finally {
+			if (connection != null)
+				connection.close();
+		}
+	}
+
+	@Override
+	public UserProfile getUser(String userIdentifier) throws Exception {
+		LDAPConnection connection = null;
+		try {
+			logger.debug("getting user " + userIdentifier + " from ldap");
+			connection = new LDAPConnection(ldapAddress, ldapPort, ldapUsername, ldapPassword);
+			Filter filter = Filter.createEqualityFilter("mail", userIdentifier);
+			SearchRequest searchRequest = new SearchRequest(ldapUsersDN, SearchScope.SUB, filter, "mail", "givenName", "sn", "o", "uid");
+			SearchResult searchResult = connection.search(searchRequest);
+			UserProfile profile = new UserProfile();
+			for (SearchResultEntry entry : searchResult.getSearchEntries()) {
+				profile.setEmail(entry.getAttributeValue("mail"));
+				profile.setFirstname(entry.getAttributeValue("givenName"));
+				profile.setLastname(entry.getAttributeValue("sn"));
+				profile.setInstitution(entry.getAttributeValue("o"));
+				profile.setUsername(entry.getAttributeValue("uid"));
+			}
+			return profile;
+		} catch (Exception e) {
+			logger.error("", e);
+			throw e;
+		} finally {
+			if (connection != null)
+				connection.close();
+		}
+	}
+
+	@Override
+	public boolean isAdmin(String email) throws Exception {
+		LDAPConnection connection = null;
+		try {
+			logger.debug("checking if user " + email + " is an administrator");
+			connection = new LDAPConnection(ldapAddress, ldapPort, ldapUsername, ldapPassword);
+			Filter filter = Filter.createEqualityFilter("mail", email);
+			SearchRequest searchRequest = new SearchRequest(ldapUsersDN, SearchScope.SUB, filter, "JoomlaGroup");
+			SearchResult searchResult = connection.search(searchRequest);
+
+			for (SearchResultEntry entry : searchResult.getSearchEntries()) {
+				for (String role : entry.getAttributeValues("JoomlaGroup"))
+					if (role.equals("validatorAdmin"))
+						return true;
+			}
+			logger.debug(email + " is not administrator");
+			return false;
+		} catch (Exception e) {
+			logger.error("", e);
+			throw e;
+		} finally {
+			if (connection != null)
+				connection.close();
+		}
+	}
+
+	@Override
+	public boolean isUserActivated(String email) throws Exception {
+		LDAPConnection connection = null;
+		try {
+			logger.debug("checking if user " + email + " is activated");
+			connection = new LDAPConnection(ldapAddress, ldapPort, ldapUsername, ldapPassword);
+			Filter filter = Filter.createEqualityFilter("mail", email);
+			SearchRequest searchRequest = new SearchRequest(ldapUsersDN, SearchScope.SUB, filter, "JoomlaBlockUser");
+			SearchResult searchResult = connection.search(searchRequest);
+			for (SearchResultEntry entry : searchResult.getSearchEntries()) {
+				int val = entry.getAttributeValueAsInteger("JoomlaBlockUser");
+				if (val == 0)
+					return true;
+				else
+					return false;
+			}
+		} catch (Exception e) {
+			logger.error("", e);
+			throw e;
+		} finally {
+			if (connection != null)
+				connection.close();
+		}
+		return false;
+	}
+
+	@Override
+	public String prepareResetPassword(String email) throws Exception {
+		LDAPConnection connection = null;
+		try {
+			logger.debug("preparing reset password for user " + email);
+			connection = new LDAPConnection(ldapAddress, ldapPort, ldapUsername, ldapPassword);
+			Filter filter = Filter.createEqualityFilter("mail", email);
+			SearchRequest searchRequest = new SearchRequest(ldapUsersDN, SearchScope.SUB, filter, "uid");
+			SearchResult searchResult = connection.search(searchRequest);
+			String dn = null;
+			for (SearchResultEntry entry : searchResult.getSearchEntries()) {
+				dn = "uid=" + entry.getAttributeValue("uid") + "," + ldapUsersDN;
+			}
+			String uuid = UUID.randomUUID().toString();
+			Modification mod = new Modification(ModificationType.REPLACE, "employeeNumber", uuid);
+			connection.modify(dn, mod);
+			return uuid;
+		} catch (Exception e) {
+			logger.error("", e);
+			throw e;
+		} finally {
+			if (connection != null)
+				connection.close();
+		}
+	}
+
+	@Override
+	public void resetPassword(String uuid, String password) throws Exception {
+		LDAPConnection connection = null;
+		try {
+			connection = new LDAPConnection(ldapAddress, ldapPort, ldapUsername, ldapPassword);
+			Filter filter = Filter.createEqualityFilter("employeeNumber", uuid);
+			SearchRequest searchRequest = new SearchRequest(ldapUsersDN, SearchScope.SUB, filter, "uid");
+			SearchResult searchResult = connection.search(searchRequest);
+			String dn = null;
+			for (SearchResultEntry entry : searchResult.getSearchEntries()) {
+				dn = "uid=" + entry.getAttributeValue("uid") + "," + ldapUsersDN;
+			}
+			Modification mod1 = new Modification(ModificationType.REPLACE, "userPassword", Joomla15PasswordHash.create(password));
+			Modification mod2 = new Modification(ModificationType.REPLACE, "employeeNumber");
+			connection.modify(dn, mod1, mod2);
+		} catch (Exception e) {
+			logger.error("", e);
+			throw e;
+		} finally {
+			if (connection != null)
+				connection.close();
+		}
+	}
+
+	@Override
+	public boolean userExists(String email) throws Exception {
+		LDAPConnection connection = null;
+		try {
+			logger.debug("checking if user " + email + " exists in ldap");
+			connection = new LDAPConnection(ldapAddress, ldapPort, ldapUsername, ldapPassword);
+			Filter filter = Filter.createEqualityFilter("mail", email);
+			SearchRequest searchRequest = new SearchRequest(ldapUsersDN, SearchScope.SUB, filter, "mail");
+
+			SearchResult searchResult = connection.search(searchRequest);
+			if (!searchResult.getSearchEntries().isEmpty())
+				return true;
+
+			return false;
+		} catch (Exception e) {
+			logger.error("", e);
+			throw e;
+		} finally {
+			if (connection != null)
+				connection.close();
+		}
+	}
+
+	@Override
+	public boolean usernameExists(String username) throws Exception {
+		LDAPConnection connection = null;
+		try {
+			logger.debug("checking if user " + username + " exists in ldap");
+			connection = new LDAPConnection(ldapAddress, ldapPort, ldapUsername, ldapPassword);
+			Filter filter = Filter.createEqualityFilter("uid", username);
+			SearchRequest searchRequest = new SearchRequest(ldapUsersDN, SearchScope.SUB, filter, "uid");
+			SearchResult searchResult = connection.search(searchRequest);
+
+			if (!searchResult.getSearchEntries().isEmpty()) {
+				return true;
+			}
+
+			return false;
+		} catch (Exception e) {
+			logger.error("", e);
+			throw e;
+		} finally {
+			if (connection != null)
+				connection.close();
+		}
+	}
+
+	@Override
+	public String getEmailFromUsername(String username) throws Exception {
+		LDAPConnection connection = null;
+		try {
+			logger.debug("getting email for user " + username);
+			connection = new LDAPConnection(ldapAddress, ldapPort, ldapUsername, ldapPassword);
+			Filter filter = Filter.createEqualityFilter("uid", username);
+			SearchRequest searchRequest = new SearchRequest(ldapUsersDN, SearchScope.SUB, filter, "mail");
+			SearchResult searchResult = connection.search(searchRequest);
+			for (SearchResultEntry entry : searchResult.getSearchEntries()) {
+				return entry.getAttributeValue("mail");
+			}
+			return null;
+		} catch (Exception e) {
+			logger.error("", e);
+			throw e;
+		} finally {
+			if (connection != null)
+				connection.close();
+		}
+	}
+
+	public void setLdapPort(int ldapPort) {
+		this.ldapPort = ldapPort;
+	}
+
+	public void setLdapAddress(String ldapAddress) {
+		this.ldapAddress = ldapAddress;
+	}
+
+	public void setLdapUsername(String ldapUsername) {
+		this.ldapUsername = ldapUsername;
+	}
+
+	public void setLdapPassword(String ldapPassword) {
+		this.ldapPassword = ldapPassword;
+	}
+
+	public void setLdapUsersDN(String ldapUsersDN) {
+		this.ldapUsersDN = ldapUsersDN;
+	}
+}
+
+class Joomla15PasswordHash 
+{
+   public static boolean check(String passwd,String dbEntry) {
+      String hashed = "{MD5}"+Base64.encode(pack(Joomla15PasswordHash.md5(passwd)));
+      if(dbEntry.equals(hashed))
+    	  return true;
+      else
+    	  return false;
+   }
+
+   static Random _rnd;
+
+   public static String create(String passwd) {
+	   return "{MD5}"+Base64.encode(pack(Joomla15PasswordHash.md5(passwd)));
+   }
+
+   /** Takes the MD5 hash of a sequence of ASCII or LATIN1 characters,
+    *  and returns it as a 32-character lowercase hex string.
+    *
+    *  Equivalent to MySQL's MD5() function 
+    *  and to perl's Digest::MD5::md5_hex(),
+    *  and to PHP's md5().
+    *
+    *  Does no error-checking of the input,  but only uses the low 8 bits
+    *  from each input character.
+    */
+   public static String md5(String data) {
+      byte[] bdata = new byte[data.length()]; int i; byte[] hash;
+
+      for (i=0;i<data.length();i++) bdata[i]=(byte)(data.charAt(i)&0xff );
+
+      try {
+         MessageDigest md5er = MessageDigest.getInstance("MD5");
+         hash = md5er.digest(bdata);
+      } catch (GeneralSecurityException e) { throw new RuntimeException(e); }
+
+      StringBuffer r = new StringBuffer(32);
+      for (i=0;i<hash.length;i++) {
+         String x = Integer.toHexString(hash[i]&0xff);
+         if (x.length()<2) r.append("0");
+         r.append(x);
+      }
+      return r.toString();      
+   }
+   
+   public static byte[] pack(String md5) {
+	    byte[] bytes = new byte[16];
+	    int j = 0;
+	    for(int i=0; i < 31; i+=2) {
+	    	bytes[j] = (byte) Integer.parseInt(md5.charAt(i)+""+md5.charAt(i+1),16);
+	    	j++;
+	    }
+	    return bytes;
+	}
+}
+
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/java/eu/dnetlib/validator/admin/config/ValidatorAdminContextLoaderListener.java
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/java/eu/dnetlib/validator/admin/config/ValidatorAdminContextLoaderListener.java	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/java/eu/dnetlib/validator/admin/config/ValidatorAdminContextLoaderListener.java	(revision 47450)
@@ -0,0 +1,86 @@
+package eu.dnetlib.validator.admin.config;
+
+import java.util.Properties;
+
+import javax.servlet.ServletContext;
+
+import org.apache.commons.lang.ArrayUtils;
+import org.apache.log4j.Logger;
+import org.springframework.beans.BeansException;
+import org.springframework.context.support.ClassPathXmlApplicationContext;
+import org.springframework.web.context.ContextLoaderListener;
+import org.springframework.web.context.WebApplicationContext;
+import org.springframework.web.context.support.XmlWebApplicationContext;
+
+public class ValidatorAdminContextLoaderListener extends ContextLoaderListener {
+	private static Logger logger = Logger.getLogger(ValidatorAdminContextLoaderListener.class);
+
+
+	public ValidatorAdminContextLoaderListener() {
+		super();
+	}
+
+	public ValidatorAdminContextLoaderListener(WebApplicationContext context) {
+		super(context);
+	}
+
+	@Override
+	protected WebApplicationContext createWebApplicationContext(
+			ServletContext servletContext)
+			throws BeansException {
+		logger.debug("Creating web application context");
+		Properties props = this.loadProperties();
+		String repoMode = props.getProperty("services.validator.mode.repo");
+		String userMode = props.getProperty("services.validator.mode.user");
+		Boolean standaloneMode = Boolean.parseBoolean(props.getProperty("services.validator.mode.standalone"));
+		
+		logger.debug("User mode: " + userMode);
+		logger.debug("Repo mode: " + repoMode);
+		logger.debug("Standalone mode: " + standaloneMode);
+//		logger.debug("Dnet workflow enabled: " + repoMode);
+		XmlWebApplicationContext ctx = new XmlWebApplicationContext();
+
+		ctx.setServletContext(servletContext);
+		
+		
+		String[] springContextCore = new String[] {
+				"classpath*:/eu/dnetlib/validator/admin/actions/springContext-validator-struts.xml",
+				"classpath*:/eu/dnetlib/validator/admin/api/springContext-validator-user-" + userMode + ".xml",
+				"classpath*:/eu/dnetlib/validator/admin/api/springContext-validator.xml",
+				"classpath*:/eu/dnetlib/validator/admin/config/springContext-validator-config.xml",
+				"classpath*:/eu/dnetlib/validator/commons/dao/springContext-*.xml",
+				"classpath*:/eu/dnetlib/validator/commons/email/springContext-*.xml"
+		};
+		
+		String[] springContextForIS = new String[] {
+		};
+		
+		if (standaloneMode) {
+			logger.debug("Loading contexts for standalone mode");
+			ctx.setConfigLocations(springContextCore);
+		} else {
+			logger.debug("Loading contexts for dnet");
+			ctx.setConfigLocations((String[])ArrayUtils.addAll(springContextCore,springContextForIS));
+		}
+		
+		ctx.refresh();
+		
+		logger.debug("done");
+		
+		return ctx;
+	}	
+	
+	private Properties loadProperties() {
+		ClassPathXmlApplicationContext ctx = new ClassPathXmlApplicationContext(new String[] {
+				"classpath*:/eu/dnetlib/validator/admin/config/springContext-validator-config.xml"
+		});
+		
+		CascadingPropertyLoader pLoader = (CascadingPropertyLoader) ctx.getBean("propertyLoader");
+		Properties props = pLoader.getProperties();
+		
+		ctx.destroy();
+		ctx.close();
+		return props;
+	}
+
+}
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/resources/web-texts.properties
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/resources/web-texts.properties	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/resources/web-texts.properties	(revision 47450)
@@ -0,0 +1,227 @@
+site.title = Validator Admin Panel
+site.slogan = Tools for validator administration
+
+general.unblock = Please make sure that you can accept mails from
+
+menu.home = Home
+menu.register = Join OpenAIRE
+menu.validate = Test Compatibility
+menu.account = My Account
+menu.about = Help
+menu.account.login = Sign In
+menu.account.registration.title = New User?
+menu.account.registration = Register Now!
+menu.account.logout = Logout
+menu.account.edit = My Account | 
+menu.about.feedback = Send Feedback
+menu.about.faq = FAQ
+menu.about.help = Help Guides
+menu.admin = Admin Panel
+
+homepage.welcome = Welcome to Validator Administration Panel!
+instructions.welcome = How to Join OpenAIRE
+instructions.message = <div class="entry"> <ol> <li> <b>Do you wish your repository or journal to be a part of OpenAIRE?</b> <ul> <li>If you are a new user, start by <a href="go2login.action">creating an account</a>.<br> If you have previously registered in the <a href="http://www.openaire.eu" target="_blank">main OpenAIRE portal</a>, you can use the same account. </li> </ul> <br> </li> <li> <b>Register your repository in <a class="external" href="http://www.opendoar.org/" target="_blank">OpenDOAR</a></b> <i>(this step does not apply for journals)</i> <ul> <li>OpenDOAR is an authoritative worldwide directory of academic open access repositories.</li> </ul> </li> <br> <li> <b>Make your repository/journal OpenAIRE compliant by implementing the <a href="http://guidelines.openaire.eu" class="external" target="_blank" >OpenAIRE Guidelines</a> </b> <ul> <li>If your repository/journal currently has no OpenAIRE records, you will need to create a test record as proof of correct implementation of the guidelines.</li> <li>Create an openaire set and insert your OpenAIRE records in it.</li> <li>If you used a test record, you will need to keep it until your repository/journal is successfully added as OpenAIRE compliant (step 5). Then you can safely delete it.</li> <li>You can find an example of an OpenAIRE compliant record <a href="jsps/manuals/example_record.txt" target="_blank">here</a>.</li> </ul> </li> <br> <li> <b>Test Compatibility</b> <ul> <li>After you have made some progress in implementing the guidelines you should <a href="populateRules.action">run a Compatibility test</a>.</li> <li>Enter the OAI-PMH base URL of your repository/journal and choose to test your repository against the OpenAIRE rule set. Aim for a score of 100, which will be sufficient to allow your repository to join OpenAIRE.</li> <li>After running the test you can <a href="prepareJobBrowsing.action">browse the results</a>. Please note that the results are updated periodically, and the whole test might take some time to finish.</li> </ul> </li> <br> <li> <b>Join OpenAIRE</b> <ul> <li>Now your repository/journal is ready to Join OpenAIRE!</li> <li><i>If you want to add a <b>literature repository</b></i>, click <a href="populateDoarList.action?mode=opendoar" target="_blank">here</a> and locate your repository. Add and correct any details in the form and click submit.<br> <i>If you want to add a <b>data repository</b></i>, click <a href="populateDoarList.action?mode=re3data" target="_blank">here</a> and locate your repository. Add and correct any details in the form and click submit.<br><i>If you want to add a <b>journal</b></i>, click <a href="prepareRepoRegistration.action?mode=journal" target="_blank">here</a>, fill in the form, and click submit.<br> <i>If you want to add an <b>aggregator</b></i>, click <a href="prepareRepoRegistration.action?mode=aggregator" target="_blank">here</a>, fill in the form, and click submit.</li> <li>After a short compatibility test against the OpenAIRE rule set, your repository will be ready to join OpenAIRE.</li> <li>An email will be sent to the repository administrator to confirm this request. Please make sure you have contacted them before registering.</li> <li>If the compatibility test does not succeed, you will be unable to join OpenAIRE until you correct all the errors that are found. Then you must re-submit your request (step 5).</li> </ul> </li> </ol> <p> For more information check the <a href="https://www.openaire.eu/support/faq#moofaqCat-19" target="_blank">FAQ</a> and our detailed <a href="jsps/manuals/user-manual.pdf" target="_blank">help guide</a>.<br> If you need further assistance please contact us through the <a href="https://www.openaire.eu/support/helpdesk" target="blank" class="help"> OpenAIRE Helpdesk</a>. </p><p><i>The validator is a customizable tool that may be installed and operated in various aggregating environments. <br/><a href="mailto:natalia@di.uoa.gr" class="icon-mail">Click here</a> to contact us and receive more information.</i></p> </div>
+homepage.admin.message = You have logged-in using an administrator email. For information on how to create new rules, new rule-sets, and for the various other functionalities, please refer to the <a href="jsps/manuals/administrator-manual.pdf">Administrator Manual</a>.
+homepage.message = You can view rules, rule-sets, job statistics and request changes to rules/rulesets.
+
+
+registration.title = User Registration
+registration.email = E-mail
+registration.password = Password
+registration.repassword = Re-enter password
+registration.successful = <span>An activation e-mail has been sent to the e-mail address you specified. Please follow the link included in that e-mail to activate your account.</span>
+registration.mail.subject = OpenAIRE Account Activation
+registration.mail.message = Please follow this link to activate your account
+registration.okAccountActivation = Account activation was successful! You can now log-in using your account details.
+registration.okAccountAlreadyActivation = Your account is already activated! You can log-in using your account details.
+registration.description = Register to use the OpenAIRE repository manager services
+registration.rememberme = Remember me
+registration.ldap.message = Your email address will be used for signing in the validator service.<br/>For the rest of the OpenAIRE services available through the openAIRE portal you will have to sign in using your username.
+registration.username = Username
+registration.username_email = Username/Email
+registration.firstName = First Name
+registration.lastName = Last Name
+registration.institution = Institution
+
+
+info.title = Information
+
+login.title = User Login
+login.forgotpassword = Forgot your password?
+login.notActivated = Your account has not been activated. Please check your mailbox again and follow the instructions found in the activation email.
+login.incorrectCreds = The credentials you entered are incorrect
+login.userNotExists = The username you specified doesn't have an associated account. You should consider registering it first.
+login.description = If you have an account
+login.overview = This service uses the same sign-in mechanism as the OpenAIRE portal so you can use the same credentials.
+
+forgotPassword.title = Reset Password
+forgotPassword.message = An e-mail will be sent to this address. Please follow the instructions found inside to reset your password.
+forgotPassword.mail.Subject = OpenAIRE Reset Password Request
+forgotPassword.mail.Body1 = To complete your password reset please follow this link
+forgotPassword.mail.Body2 = Security Code
+
+resetPassword.securityCode = Security Code
+resetPassword.securityCode.message = Enter the security code sent to you through mail.
+resetPassword.wrongSecurityCode = Security Code is incorrect
+resetPassword.success = You have successfully changed your password
+
+corneeded.title = Errors Found
+corneeded.back = Please use the "back" button of your browser to correct these errors
+
+manageJobs.deleteJobs.title = Delete Jobs
+manageJobs.deleteJobs.success = jobs deleted successfully
+manageJobs.deleteJobs.deleteOld = Delete jobs 
+manageJobs.deleteJobs.whatToDelete = What to delete
+
+manageJobs.sendReports.title = Send Registrations Report
+manageJobs.sendReports.selectDateFrom = Date from
+manageJobs.sendReports.selectDateTo = Date to
+manageJobs.sendReports.selectMonth = Select Month
+manageJobs.sendReports.selectYear = Select Year
+manageJobs.sendReports.success = Registrations Report sent successfully
+
+chooseRuleCategory.title = Choose Rule Category
+
+chooseRuleForEdit.title = Choose Rule
+chooseRuleForEdit.label = Choose Rule to Edit
+chooseRuleForEdit.label2 = Choose Rule to View
+chooseRuleForClone.label = Choose Rule to Clone
+
+addRule.title = Add Rule
+addRule.success = New rule has been added successfully
+addRule.uploadFile = Upload a File
+
+deleteRule.title = Delete Rule
+deleteRule.label = Choose Rule to Delete
+deleteRule.success = Rule has been deleted
+
+home.title = Homepage
+home.login = Sign In
+home.register = Register
+home.browseJobs = Browse Compatibility Test Results
+
+home.manageRules = Rules
+home.manageRules.addRule = Add New Rule
+home.manageRules.editRule = Edit Rule
+home.manageRules.cloneRule = Clone Rule
+home.manageRules.deleteRule = Delete Rule
+home.manageRules.viewRule = View Rule
+
+home.manageRulesets = RuleSets
+home.manageRulesets.createRuleSet = Create RuleSet
+home.manageRulesets.editRuleSet = Edit RuleSet
+home.manageRulesets.deleteRuleSet = Delete RuleSet
+home.manageRulesets.viewRuleSet = View RuleSet
+
+home.manageJobs = Jobs
+home.manageJobs.deleteJobs = Delete Jobs
+home.manageJobs.sendReport = Send Report
+home.manageJobs.viewStats = View Statistics
+
+home.manageUsers = Users
+home.manageUsers.addUser = Add User
+home.manageUsers.editUser = Edit User
+home.manageUsers.makeAdmin = Make Admin
+
+home.logout = Logout
+
+
+editRule.title = Edit Rule
+editRule.title2 = View Rule
+editRule.label = Choose Rule to Edit
+editRule.success = The rule was edited successfully
+
+editUser.title = Edit your account details
+editUser.fname = First Name
+editUser.lname = Last Name
+editUser.inst = Institution
+editUser.success = Your profile has been successfully updated
+
+createRuleSet.title = Create/Edit Rule Set
+createRuleSet.title2 = View Rule Set
+createRuleSet.name = Name
+createRuleSet.shortName = Short Name
+createRuleSet.visibility = Visibility
+createRuleSet.guidelinesAcronym = Guidelines Acronym
+createRuleSet.description = Description
+createRuleSet.rulesContent = Choose Content Rules
+createRuleSet.rulesUsage = Choose Usage Rules
+
+createRuleSet.success = The Set has been created successfully!
+createRuleSets.atLeastOneRule = You must select at least one rule to be added in this set
+
+chooseRuleSet.title = Choose Rule Set
+chooseRuleSet.label = Choose Rule Set
+
+deleteRuleSet.title = Delete Rule Set
+deleteRuleSet.success = Rule Set has been deleted successfully
+
+jobSummary.title = Test Summary
+jobSummary.successes = # Records
+jobSummary.errors = Success
+
+sidebar.toolbar = Toolbar
+sidebar.homepage = Homepage
+
+ruleSetInfo.name = Name
+ruleSetInfo.description = Description
+ruleSetInfo.jobType = Available in tests of type: 
+ruleSetInfo.message = Here you can find information on the rules contained in the chosen rule set. <div class="note"><h3 style="margin-left: -11px;">Definitions</h3><ul style="margin-left: -50px;"><li> Mandatory (M) = the field must always be present in the metadata record. An empty element is not allowed.</li> <li>Mandatory when applicable (MA) = when the value of the field can be obtained it must be present in the metadata record.</li> <li> Recommended (R) = the use of the field is recommended.</li> <li>Optional (O) = it is not important whether the element is used or not.</li></ul></div>
+ruleSetInfo.title = Rule Set Information
+ruleSetInfo.DRIVER = The DRIVER rule set checks the compatibility of your repository with the <a href="http://www.driver-support.eu/documents/DRIVER_Guidelines_v2_Final_2008-11-13.pdf">DRIVER guidelines</a>
+ruleSetInfo.openAIRE = The openAIRE rule set checks the compatibility of your repository with the <a href="http://www.openaire.eu/en/about-openaire/news-a-events/184-openaire-releases-version-10-of-the-openaire-guidelines.html">openAIRE guidelines</a>
+
+feedback.title = Send us your feedback
+feedback.message = Message
+feedback.reason = Reason
+feedback.loggedin = Please note that you must be logged-in to send a message using this form.
+feedback.success = Thank you for your message!
+
+help = Help
+help.addOaiContent.title = Adding an OAI-Content Validation
+help.addOaiContent.message = To add a new validation: <br>1. Select the base URL of the repository you want to validate. Please note that you need to have registered the repository first, and the administrator must have activated its registration.<br>2. Insert the number of records you want to validate.<br>3. Choose if you want the records to be selected randomly from those found in the repository, or in the order that the repository lists them.<br>4. If you want to validate only the records belonging to a particular set, insert the name of the set.<br>5. Either choose a predefined rule-set or manually choose the rules you want to apply.<br><br>You can view a rule set or an individual rule by using the toolbar on the left. For more information please refer to the <a href="jsps/manuals/user-manual.pdf">User Manual</a>, in the section <i>OAI Content Validation</i>.
+help.addOaiUsage.title = Adding an OAI-Usage Validation
+help.addOaiUsage.message = To add a new validation: <br>1. Select the base URL of the repository you want to validate. Please note that you need to have registered the repository first, and the administrator must have activated its registration.<br>2. Either choose a predefined rule-set or manually choose the rules you want to apply.<br><br>You can view a rule set or an individual rule by using the toolbar on the left. For more information please refer to the <a href="jsps/manuals/user-manual.pdf">User Manual</a>, in the section <i>OAI Usage Validation</i>.
+help.addRule.title = Adding a New Rule
+help.addRule.message =
+help.browseJobs.title = Browsing Validations
+help.browseJobs.message = Here you can browse all the past and current validations you have submitted. Please note that the results of an ongoing validation are not update in real-time, but only after the validation has finished its execution completely. To see a summary of the validation click on <i>Show Summary</i>. If you want more details about each task that was executed, you may click on <i>Show Details</i> though this is generally not neccessary. For more information please refer to the <a href="jsps/manuals/user-manual.pdf">User Manual</a>, in the section <i>Browsing Validations</i>.
+help.chooseJobCategory.title = Choosing a Validation Category
+help.chooseJobCategory.message = 
+help.chooseRuleCategory.title = Choosing a Rule Category
+help.chooseRuleCategory.message =
+help.chooseRuleCategory.type.title = Rule Type
+help.chooseRuleCategory.type.message =
+help.chooseRuleForEdit.title = Choosing a Rule
+help.chooseRuleForEdit.message =
+help.chooseRuleSet.title = Choosing a Rule Set
+help.chooseRuleSet.message =
+help.chooseRuleSetForDeletion.title = Choosing a Rule Set
+help.chooseRuleSetForDeletion.message =
+help.createRuleSet.title = Viewing a Rule Set
+help.createRuleSet.message = You can view the <i>name</i> of the Rule Set, as well as the rules that it contains (the ones with a blue background).
+help.deleteRule.title = Deleting a Rule
+help.deleteRule.message =
+help.editRule.title = Viewing a Rule
+help.editRule.message = When you view a rule you will be presented with many fields describing its functionality. For general purposes, the fields you must focus on are <i>name</i> and <i>description</i>. If you would like to find out what the rest of the fields mean, you must refer to the <a href="jsps/manuals/administrator-manual.pdf">administrator manual</a>.
+help.jobDetails.title = Viewing the Details of a Validation
+help.jobDetails.message = Here you can review details about each task of a validation. Each row refers to a certain task and you can see on which rule was used, which record it was applied on and if it was successful or not. Please note that retrieving the details of a validation can be a time-consuming process for large validations, and viewing a validation summary is generally sufficient. For more information please refer to the <a href="jsps/manuals/user-manual.pdf">User Manual</a>, in the section <i>Viewing Validation Details</i>.
+help.jobSummary.title = Viewing the Summary of a Validation
+help.jobSummary.message = Here you can review a summary of the validation results. Each row refers to a certain validation rule and you can see how many of the records were successfully validated. For the records that did not validate successfully, links are provided to their oai-dc metadata representation. For more information please refer to the <a href="jsps/manuals/user-manual.pdf">User Manual</a>, in the section <i>Viewing a Validation Summary</i>. 
+help.login.title = Logging in
+help.login.message =
+help.registration.title = Registering
+help.registration.message =
+help.repoRegistration.title = Registering a Repository
+help.repoRegistration.message = Before you can start a validation, you have to register the repository you want to validate (unless it is already registered by someone else). To do this, you must fill in it\''s base URL. Automatically an e-mail will be send to the repository\''s administrator containing an activation link. As soon as the administrator activates the registration, you will be able to start validations for this repository.
+help.resetPassword.title = Reseting your Password
+help.resetPassword.message =
+help.generic = <p>For help adding your repository/journal in OpenAIRE, please follow <a href="help.action">these instructions</a></p><p>For more advanced uses, you can find detailed information and step-by-step guides in the <a class="download" href="jsps/manuals/user-manual.pdf">User Manual</a></p><p>&nbsp;</p><p><i>The validator is a customizable tool that may be installed and operated in various aggregating environments. <br/><a href="mailto:natalia@di.uoa.gr" class="icon-mail">Click here</a> to contact us and receive more information.</i></p>
+help.newvalidation =<p><h3>Select repository/journal</h3> Select from the list, or enter the base OAI URL of the repository/journal. The repository''s/journal''s published sets are exposed in a later stage and you may select one for the compatibility tests.  </p> <p><h3>Select guidelines</h3> You may apply two types of compatibility tests on your repository: <ul style="text-aling:left"> <li>Content: specific to the content/format of the dc fields</li> <li>Usage: specific to the implementation of OAI-PMH</li> </ul> You may select from a predifined set of rules (OpenAIRE for Literature Repositories, OpenAIRE for Data Archives) or customize them according to your needs.  </p> <p><h3>Select parameters</h3> You may define an upper limit on the # of records tested. This is highly recommended for first time users, or when re-checking after the implementation of automated changes.  </p> <p> Select one of the repository''s/journal''s exposed sets.  </p><p> You may also group your results by a specific field. This is quite useful when validating an aggregator and you know in advance which is the field that distinguished among data sources. </p><p>For further assistance please contact the <a href="https://www.openaire.eu/support/helpdesk" target="_blank" class="external">OpenAIRE helpdesk</a>.</p>
+help.browsevalidations = <div class="download"><a href="jsps/manuals/user-manual.pdf" target="blank">Instructions manual</a></div> <p> <strong>TYPE:</strong> Content or Usage<br/> <strong>STATUS: </strong>Working / Stopped / Finished<br/> <strong>SCORE: </strong> <a href="score.action">click here</a> to find more<br/> <strong>SUBMITTED: </strong>time of submission<br/> <strong>DURATION: </strong>time test took to finish<br/> <strong>REPOSITORY: </strong>tested repository/journal<br/> <strong>GUIDELINES: </strong>guidelines used for testing<br/> <strong>REPORTS: </strong>comprehensive summary of the compatibility test results<br/> </p> <p>For further assistance please contact the <a href="https://www.openaire.eu/support/helpdesk" target="_blank" class="external">OpenAIRE helpdesk</a>.</p>
+help.jobsummary= <div class="download"><a href="jsps/manuals/user-manual.pdf" target="_blank">Instructions manual</a></div> <p>For further assistance please contact the <a href="https://www.openaire.eu/support/helpdesk" target="_blank" class="external">OpenAIRE helpdesk</a>.</p>
+help.registerRepo =  <p>Use the form on the right to add your repository or journal in OpenAIRE. If you want to find more information about this process <a href="jsps/manuals/user-manual.pdf" target="_blank">click here</a>.</p> <div class="alert">The official repository/journal administrator (his/her email address being retrieved from the OAI-PMH verb <b>Identify</b>) will be contacted and informed about registration request. So please make sure that you are either this person or have access to the email address, or that you have notified them.</div> For any problems or questions please contact the <a href="https://www.openaire.eu/support/helpdesk" target="_blank" class="external">OpenAIRE helpdesk</a>.
+help.chooseRepoForEdit = <p>You have access to edit one of the following repositories/journals listed on the right.</p> <p>For any problems or questions please contact the <a href="https://www.openaire.eu/support/helpdesk" target="_blank" class="external">OpenAIRE helpdesk</a>.</p>
+help.editRepoDnet = <p>Use the form on the right to update the repository/journal information.</p> <p>For any problems or questions please contact the <a href="https://www.openaire.eu/support/helpdesk" target="_blank" class="external">OpenAIRE helpdesk</a>.</p>
+help.admin=<div class="download"> For more information read our detailed <a href="jsps/manuals/administrator-manual.pdf" target="_blank">help guide</a>.</div>
+footer.text = &copy; 2010&nbsp;-&nbsp;2015 OpenAIRE
\ No newline at end of file
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/java/eu/dnetlib/validator/admin/constants/TypesAndTableNames.java
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/java/eu/dnetlib/validator/admin/constants/TypesAndTableNames.java	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/java/eu/dnetlib/validator/admin/constants/TypesAndTableNames.java	(revision 47450)
@@ -0,0 +1,102 @@
+package eu.dnetlib.validator.admin.constants;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.Set;
+
+import org.apache.log4j.Logger;
+
+public class TypesAndTableNames {
+
+	static private Logger logger = Logger.getLogger(TypesAndTableNames.class);
+	
+	static HashMap<String, String> ruleTypeToTableNames;
+	static HashMap<String, String> crisEntities;
+	static public List<String> deployEnvironments;
+	static public HashMap<String, String> jobTypes;
+	
+	static {
+		logger.debug("initializing the TableNames map");
+		ruleTypeToTableNames = new HashMap<String, String>();
+		
+		ruleTypeToTableNames.put("ChainRule", "chain_rule");
+		
+		//rules OAIPMH
+		ruleTypeToTableNames.put("OAIPMH Date Granularity", "oaipmhdategranularity_rule");
+		ruleTypeToTableNames.put("OAIPMH Embargo Date Check", "oaipmhembargodate_rule");
+		ruleTypeToTableNames.put("OAIPMH Incremental Record Delivery", "oaipmhincrementalrecorddelivery_rule");
+		ruleTypeToTableNames.put("OAIPMH Resumption Token Duration Check", "oaipmhresumptiontokenduration_rule");
+
+		//rules TEXT
+//		ruleTypeToTableNames.put("TEXT Regular Expression", "textreguralexpresion_rule");
+//		ruleTypeToTableNames.put("TEXT", "text_rule");
+//		ruleTypeToTableNames.put("TEXT Vocabulary","textvocabulary_rule");		
+
+		//rules XML
+//		names.put(XMLRule.class.getName(),"xml_rule");
+		ruleTypeToTableNames.put("XML Cardinality", "xmlcardinality_rule");
+		ruleTypeToTableNames.put("XML Field Exists", "xmlfieldexist_rule");
+		ruleTypeToTableNames.put("XML Not Confused Fields", "xmlnotconfusedfields_rule");
+		ruleTypeToTableNames.put("XML Regular Expression", "xmlregularexpression_rule");
+		ruleTypeToTableNames.put("XML Valid Url", "xmlvalidurl_rule");
+		ruleTypeToTableNames.put("XML Vocabulary", "xmlvocabulary_rule");
+		ruleTypeToTableNames.put("XML Cris Class Vocabulary", "xmlcrisclassvocabulary_rule");
+		ruleTypeToTableNames.put("XML CRIS Referential Integrity Rule", "xmlcrisreferentialintegrity_rule");
+		
+		crisEntities = new HashMap<String, String>();
+		crisEntities.put("Publication", "openaire_cris_publications");
+		crisEntities.put("Person", "openaire_cris_persons");
+		crisEntities.put("Organisation", "openaire_cris_orgunits");
+		crisEntities.put("Project", "openaire_cris_projects" );
+		crisEntities.put("Funding", "openaire_cris_funding" );
+		crisEntities.put("Service", "openaire_cris_services");
+		crisEntities.put("Product", "openaire_cris_datasets");		
+		
+		jobTypes = new HashMap<String, String>();
+		jobTypes.put("usage", "OAI Usage");
+		jobTypes.put("content", "OAI Content");
+		
+		deployEnvironments = new ArrayList<String>();
+		deployEnvironments.add("openaire-production");
+		deployEnvironments.add("openaire-beta");
+		deployEnvironments.add("development");
+		deployEnvironments.add("lareferencia");
+		deployEnvironments.add("mincyt");
+		
+//		names.put(JobInfo.class.getName(), "jobs");
+//		names.put(OAIContentJob.class.getName(), "oai_content_job");
+//		names.put(OAIUsageJob.class.getName(), "oai_usage_job");
+
+	}
+	
+	static public String getSetOfEntity(String entity) {
+		return crisEntities.get(entity);
+	}
+	
+	public static HashMap<String, String> getCrisEntities() {
+		return crisEntities;
+	}
+	
+	
+
+	public static Set<String> getJobTypes() {
+		logger.debug("getting all types of jobs");
+		return new HashSet<String>(jobTypes.values());
+	}
+
+	public static void setJobTypes(HashMap<String, String> jobTypes) {
+		TypesAndTableNames.jobTypes = jobTypes;
+	}
+
+	static public Set<String> getRuleTypes() {
+		logger.debug("getting all types of rules");
+		return ruleTypeToTableNames.keySet();
+	}
+	
+	static public String getTableNameOfType(String type) {
+		logger.debug("getting tableName of rule type "+type);
+		return ruleTypeToTableNames.get(type);
+	}
+}
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/resources/eu/dnetlib/validator/admin/api/emailTeplateOld.vm
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/resources/eu/dnetlib/validator/admin/api/emailTeplateOld.vm	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/resources/eu/dnetlib/validator/admin/api/emailTeplateOld.vm	(revision 47450)
@@ -0,0 +1,20 @@
+Greetings,
+
+The unsuccessful registration attempts during $month
+were the following (base URL, contact mail, compliance level):
+
+#foreach( $datasource in $failedJobs )
+$datasource.baseUrl, $datasource.email, $datasource.compliance
+#end
+$noneFailed
+
+The successful ones were the following:
+
+#foreach( $datasource in $passedJobs )
+$datasource.baseUrl, $datasource.email, $datasource.compliance
+#end
+$nonePassed
+
+Regards,
+Validator's administrator
+
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/resources/web-error-texts.properties
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/resources/web-error-texts.properties	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/resources/web-error-texts.properties	(revision 47450)
@@ -0,0 +1,21 @@
+compulsoryField = This field must have a value
+identicalPasswords = Passwords must be identical
+notValidEmail = Invalid email adress
+userAlreadyExists = This user already exists
+noActivationId = The activation id was not specified
+numericalValue = This field must have a numerical value
+recordsLessThan1 = At least 1 record must be used
+invalidBaseUrl = Invalid base Url
+alreadyRepo = Repository already exists. You may need to activate it.
+noAdminEmail = This repository does not provide an administrator email. Registration cannot continue.
+notBelongsToYou = This job doesn't belong to you or doesn't exist
+uknownError = Unknown Error
+requiredFieldNoValue = A required field(*) has no value
+wrongFieldValue = This field has an invalid value
+jobError = Your repository failed to validate. An automatic error report has been sent to the system administrator. You will soon be contacted with the reason for the error and any further actions that might be needed.
+generic.error = An unexpected error has occurred and the administrator was automatically notified. Please try again later.
+login.manual = Please login manually using your account from the OpenAIRE portal
+registration.notOpenDoar = The registration of repositories not in OpenDoar is disabled
+job.noTasks = It appears that this test is empty. Likely causes are the following: <br><br>1. The test is still running <br>2. The chosen set didn't contain any records (e.g., the ec_fundedresources set is empty) <br>3. The test contained no rules <br>4. An unexpected error occurred and might be resolved if you try again later <br><br>If you think that none of the above reasons applies, please report this issue using <a href="http://www.openaire.eu/en/support/helpdesk?view=detail&cid[0]=-1">this form</a>.
+registration.modeNotSelected = It appears that you haven\'t chosen the correct type of repository. Please choose 'JOIN OPENAIRE' from main menu and choose the right one.
+registration.noAggregated = It appears that you repository is part of an aggregator. Your repository will be automatically registered when the aggregator registers in OpenAIRE. Aggregator Name
\ No newline at end of file
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/resources/eu/dnetlib/validator/admin/api/springContext-validator-user-local.xml
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/resources/eu/dnetlib/validator/admin/api/springContext-validator-user-local.xml	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/resources/eu/dnetlib/validator/admin/api/springContext-validator-user-local.xml	(revision 47450)
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<beans xmlns="http://www.springframework.org/schema/beans"
+	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+	xmlns:context="http://www.springframework.org/schema/context"
+	xmlns:cxf="http://cxf.apache.org/core"
+	xmlns:jaxws="http://cxf.apache.org/jaxws"
+	xmlns:p="http://http://www.springframework.org/schema/p"
+	xmlns:template="http://dnetlib.eu/springbeans/template"
+	xmlns:t="http://dnetlib.eu/springbeans/t"
+	xmlns:tx="http://www.springframework.org/schema/tx"
+	
+	xsi:schemaLocation="
+		http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.0.xsd
+        http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.0.xsd
+        http://cxf.apache.org/core http://cxf.apache.org/schemas/core.xsd
+        http://cxf.apache.org/jaxws http://cxf.apache.org/schemas/jaxws.xsd
+        http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-4.0.xsd
+        http://dnetlib.eu/springbeans/template http://dnetlib.eu/springbeans/template.xsd"
+	default-autowire="no">
+
+	<bean id="userAPI" class="eu.dnetlib.validator.admin.api.impls.UserApiLocal" lazy-init="true">
+		<property name="usersDao" ref="usersDao" />
+	</bean>
+	
+	<tx:annotation-driven transaction-manager="txManager" />
+	
+</beans>
\ No newline at end of file
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/resources/eu/dnetlib/validator/admin/constants/fieldDetails.txt
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/resources/eu/dnetlib/validator/admin/constants/fieldDetails.txt	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/resources/eu/dnetlib/validator/admin/constants/fieldDetails.txt	(revision 47450)
@@ -0,0 +1,102 @@
+rules
+id false
+name true
+description true
+type true
+mandatory true
+weight true
+visible false
+job_type true
+
+usage_rules
+provider_information true
+
+cris_rules
+cris_entity true
+
+cardinality_rule
+less_than true
+greater_than true
+	
+chain_rule
+type true 
+rule_1 true
+rule_2 true
+
+regularexpression_rule
+regexp true
+
+validurl_rule
+
+vocabulary_rule
+terms true
+terms_type true
+
+oaipmhdategranularity_rule
+base_url true
+
+oaipmhembargodate_rule
+
+oaipmhincrementalrecorddelivery_rule
+from true
+until true
+
+oaipmhresumptiontokenduration_rule
+duration true
+
+text_rule
+
+textvocabulary_rule
+terms true
+
+textreguralexpresion_rule
+regexp true
+
+xml_rule
+xpath true
+success true
+
+xmlcardinality_rule
+xpath true
+success true
+lt true
+gt true
+
+xmlfieldexist_rule
+xpath true
+success true
+
+xmlnotconfusedfields_rule
+xpath true
+success true
+fields true
+
+xmlregularexpression_rule
+xpath true
+success true
+regexp true
+
+xmlvalidurl_rule
+xpath true
+success true
+
+xmlvocabulary_rule
+xpath true
+success true
+terms true
+terms_type true
+
+xmlcrisclassvocabulary_rule
+xpath true
+scheme_id true
+success true
+terms true
+
+xmlcrisreferentialintegrity_rule
+xpath true
+entity_acronym true
+scheme_id true
+related_entity_xpath true
+related_entity_acronym true
+success true
+terms true
\ No newline at end of file
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/chooseRuleSet.jsp
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/chooseRuleSet.jsp	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/chooseRuleSet.jsp	(revision 47450)
@@ -0,0 +1,49 @@
+<%@ page contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<%@ taglib prefix="s" uri="/struts-tags"%>
+<html>
+<head>
+<link href="jsps/favicon.ico" rel="shortcut icon" type="image/x-icon" />
+<link href="jsps/style.css" rel="stylesheet" type="text/css" media="screen" />
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title><s:text name="chooseRuleSet.title"/></title>
+</head>
+<body class="left">
+<div id="wrapper">
+	<jsp:include page="menu.jsp"/>
+	<div id="page">
+	<div id="page-bgtop">
+	<div id="middle">
+            <div class="middle-b">
+                <div class="background">
+			 <div id="left">
+                              <div id="left_container" >
+                                   <h2 class="helpHdr">Info</h2>
+                                   <s:text name="help.admin"/>
+                              </div>
+                         </div>
+                        <div id="main">
+                        <div id="main_container" class="clearfix">
+			<div id="content">
+				<h2 class="title"><s:text name="chooseRuleSet.title"/></h2>
+                                <div class="entry">
+                                        <s:form action="getRulesForSet">
+                                                <s:select name="setId" list="sets" listValue="name" listKey="id" key="chooseRuleSet.label"/>
+                                                <s:submit cssClass="button-default"/>
+                                        </s:form>
+                                </div>
+			</div>
+			</div>
+			</div>
+		</div>
+	</div>
+	</div>
+	</div>
+
+    <div id="footer">
+                <jsp:include page="footer.jsp"/>
+        </div>
+</div>
+</div>
+</body>
+</html>
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/resources/struts.properties
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/resources/struts.properties	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/resources/struts.properties	(revision 47450)
@@ -0,0 +1,6 @@
+struts.custom.i18n.resources=web-texts,web-error-texts,backend-errors,field-infos
+struts.ognl.allowStaticMethodAccess = true
+
+struts.xwork.chaining.copyErrors = true
+struts.xwork.chaining.copyFieldErrors = true
+struts.xwork.chaining.copyMessages = true
\ No newline at end of file
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/editRule.jsp
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/editRule.jsp	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/editRule.jsp	(revision 47450)
@@ -0,0 +1,121 @@
+<%@ page contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<%@ taglib prefix="s" uri="/struts-tags"%>
+<html>
+<head>
+<link href="jsps/favicon.ico" rel="shortcut icon" type="image/x-icon" />
+<link href="jsps/style.css" rel="stylesheet" type="text/css" media="screen" />
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<s:if test="%{#session.isAdmin != null && #session.isAdmin.equals(\"true\")}">
+        <s:set name="isAdmin" value="true"/>
+</s:if>
+<s:else>
+        <s:set name="isAdmin" value="false"/>
+</s:else>
+<title>
+        <s:if test="%{#isAdmin}">
+                <s:text name="editRule.title"/>
+        </s:if>
+        <s:else>
+                <s:text name="editRule.title2"/>
+        </s:else>
+</title>
+
+</head>
+<body class="left">
+<div id="wrapper">
+	<jsp:include page="menu.jsp"/>
+	<div id="page">
+	<div id="page-bgtop">
+	<div id="middle">
+            <div class="middle-b">
+                <div class="background">
+			 <div id="left">
+                              <div id="left_container" >
+                                   <h2 class="helpHdr">Info</h2>
+                                   <s:text name="help.admin"/>
+                              </div>
+                         </div>
+                        <div id="main">
+                        <div id="main_container" class="clearfix">
+			<div id="content">
+				<s:if test="%{#isAdmin}">
+                                        <h2 class="title"><s:text name="editRule.title"/></h2>
+                                </s:if>
+                                <s:else>
+                                        <h2 class="title"><s:text name="editRule.title2"/></h2>
+                                </s:else>
+                                <div class="entry">
+                                        <s:form action="editRule">
+                                        		<s:hidden name="funct"/>
+                                                <s:hidden name="rule.id" value="%{rule.id}"/>
+                                                <s:hidden name="rule.for_cris"/>
+                                                <s:iterator value="ruleValues" var="ruleValue">
+                                                        <s:set name="label" value="%{#ruleValue.fieldName}"/>
+                                                        <s:set name="dscr" value="%{#ruleValue.fieldName+\".description\"}"/>
+                                                        <s:set name="tltp" value="%{#ruleValue.fieldName+\".name\"}"/>
+                                                        <s:if test="%{#label.equals(\"xmlvocabulary_rule.terms\") || #label.equals(\"rules.description\")}">
+                                                                <s:textarea name="inputs" value="%{#ruleValue.fieldValue}" title="%{getText(#dscr)}" label="%{getText(#tltp)}" cols="50" rows="10" disabled='%{!#isAdmin}'/>
+                                                        </s:if>
+                                                        <s:elseif test="%{#label.equals(\"xmlcrisclassvocabulary_rule.terms\") || #label.equals(\"xmlcrisreferentialintegrity_rule.terms\")}">
+                                                                <s:textarea name="inputs" value="%{#ruleValue.fieldValue}" title="%{getText(#dscr)}" label="%{getText(#tltp)}" cols="50" rows="10" disabled='%{!#isAdmin}'/>
+                                                        </s:elseif>
+                                                        <s:elseif test="%{#label.equals(\"xmlvocabulary_rule.terms_type\")}">
+                                                                <s:select label="%{getText(#tltp)}" name="inputs" value="%{#ruleValue.fieldValue}" list="#{'whitelist':'whitelist', 'blacklist':'blacklist'}" title="%{getText(#dscr)}"/>
+                                                        </s:elseif>
+                                                        <s:elseif test="%{#label.equals(\"rules.mandatory\")}">
+                                                                <s:select label="%{getText(#tltp)}" name="inputs" value="%{rule.mandatory}" list="#{'true':'true', 'false':'false'}" title="%{getText(#dscr)}"/>
+                                                        </s:elseif>
+                                                        <s:elseif test="%{#label.equals(\"rules.cris_entity\")}">
+                                                                <s:select label="%{getText(#tltp)}" name="inputs" list="entityTypes" value="%{rule.entity_type}" title="%{getText(#dscr)}"/>
+                                                        </s:elseif>
+														<s:elseif test="%{#label.matches('.*success')}">
+															<s:select label="%{getText(#tltp)}" name="inputs" value="%{#ruleValue.fieldValue}" list="#{'>0':'>0', 'all':'all', '0':'0', '1':'1'}" title="%{getText(#dscr)}"/>
+														</s:elseif>
+                                                        <s:elseif test="%{#label.equals(\"chain_rule.type\")}">
+                                                                <s:select label="%{getText(#tltp)}" name="inputs" value="%{#ruleValue.fieldValue}" list="#{'or':'or', 'and':'and', 'horn':'horn'}" title="%{getText(#dscr)}"/>
+                                                        </s:elseif>
+                                                        <s:elseif test="%{#label.equals(\"chain_rule.rule_1\")}">
+                                                                <s:select name="inputs" list="rules" listValue="name" listKey="id"  value="%{#ruleValue.fieldValue}" label="%{getText(#tltp)}" title="%{getText(#dscr)}"/>
+                                                        </s:elseif>
+                                                        <s:elseif test="%{#label.equals(\"chain_rule.rule_2\")}">
+                                                                <s:select name="inputs" list="rules" listValue="name" listKey="id"  value="%{#ruleValue.fieldValue}" label="%{getText(#tltp)}" title="%{getText(#dscr)}"/>
+                                                        </s:elseif>
+                                                        <s:elseif test="%{#label.equals(\"rules.provider_information\")}">
+<%-- 															<s:if test="%{rule.job_type.equals(\"OAI Usage\")}"> --%>
+															<s:textfield name="inputs" value="%{#ruleValue.fieldValue}" title="%{getText(#dscr)}" label="%{getText(#tltp)}" disabled='%{!#isAdmin}'/>
+<%--                                                         	</s:if> --%>
+														</s:elseif>
+                                                        <s:else>
+                                                                <s:textfield name="inputs" value="%{#ruleValue.fieldValue}" title="%{getText(#dscr)}" label="%{getText(#tltp)}" disabled='%{!#isAdmin}'/>
+                                                        </s:else>
+                                                </s:iterator>
+<%--                                                 <s:textfield name="rule.entity_type" label="%{getText(\"jobs.entity_type.name\")}" title="%{getText(\"jobs.entity_type.description\")}" /> --%>
+                                                <s:textfield name="rule.job_type" label="%{getText(\"jobs.job_type.name\")}" title="%{getText(\"jobs.job_type.description\")}" readonly='true'/>
+                                                <s:textfield name="rule.type" label="%{getText(\"rules.type.name\")}" title="%{getText(\"rules.type.description\")}" readonly='true'/>
+                                                <s:if test="%{#isAdmin}">
+                                                 	<s:if test="%{funct.equals(\"edit\")}">
+                                                        <s:submit value="Update" cssClass="button-default"/>
+                                                    </s:if>
+                                                    <s:elseif test="%{funct.equals(\"clone\")}">
+                                                    	<s:submit value="Clone" cssClass="button-default"/>
+                                                    </s:elseif>
+                                                </s:if>
+                                        </s:form>
+                                </div>
+
+			</div>
+			</div>
+			</div>
+		</div>
+	</div>
+	</div>
+	</div>
+
+    <div id="footer">
+                <jsp:include page="footer.jsp"/>
+        </div>
+</div>
+</div>
+</body>
+</html>
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/deleteJobs.jsp
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/deleteJobs.jsp	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/deleteJobs.jsp	(revision 47450)
@@ -0,0 +1,66 @@
+<%@ page contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<%@ taglib prefix="s" uri="/struts-tags"%>
+<%@ taglib prefix="sj" uri="/struts-jquery-tags"%>
+<html>
+<head>
+<link href="jsps/style.css" rel="stylesheet" type="text/css" media="screen" />
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<!--<meta http-equiv="refresh" content="13" >-->
+<title><s:text name="manageJobs.deleteJobs.title"/></title>
+<link href="jsps/favicon.ico" rel="shortcut icon" type="image/x-icon" />
+<sj:head />
+</head>
+<body class="left">
+
+<div id="wrapper">
+	<jsp:include page="menu.jsp"/>
+	<div id="page">
+		<div id="page-bgtop">
+			<div id="middle">
+                <div class="middle-b">
+                    <div class="background">
+                    	<div id="left">
+                        	<div id="left_container">
+	                             <h2 class="helpHdr">Info</h2>
+                                 <s:text name="help.browsevalidations"/>
+                            </div>
+                        </div>
+                        <div id="main">
+                            <div id="main_container" class="clearfix">
+                                <div id="mainmiddle" class="floatbox">
+                                    <h1 class="title"><s:text name="manageJobs.deleteJobs.title"/></h1>
+<%--                                     <s:if test="%{enableCuration}"> --%>
+	                                    <s:form action="curateDB">
+	                                   		 <s:select name="period" 
+	                                    		key="manageJobs.deleteJobs.deleteOld"
+ 	                          					list="#{'older':'older than', 'newer':'newer than', 'exact':'of'}"
+                                            	required="true"
+	  					                    />
+     										<sj:datepicker name="inDate" changeMonth="true" changeYear="true" displayFormat="yy-mm-dd"/>
+<%-- 	                                    	<s:textfield name="inDate" value="YYYY-MM-DD"/> --%>
+	                                    	<s:select name="mode" 
+	                                    		key="manageJobs.deleteJobs.whatToDelete"
+ 	                          					list="#{'all':'All jobs', 'compTest_only':'Compatibility Tests only', 'uncompleted_only':'Uncompleted jobs'}"
+                                            	required="true"
+	  					                    />
+<%--  	                          					list="#{'all':'All jobs', 'compTest_only':'Compatibility Tests only', 'uncompleted_only':'Uncompleted jobs','import':'Import jobs'}" --%>
+	                                    	<s:submit cssClass="button-default"/>
+	                                    </s:form>
+<%-- 	                               </s:if> --%>
+                                    
+								</div>
+                            </div>
+                        </div>
+                    </div>
+                </div>
+            </div>
+		</div>
+		<!-- NMI This needs to be the same in all pages and the text is some properties file -->
+        <div id="footer"> 
+           <jsp:include page="footer.jsp"/>
+        </div>
+	</div>
+</div>
+</body>
+</html>
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/chooseRuleForClone.jsp
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/chooseRuleForClone.jsp	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/chooseRuleForClone.jsp	(revision 47450)
@@ -0,0 +1,50 @@
+<%@ page contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<%@ taglib prefix="s" uri="/struts-tags"%>
+<html>
+<head>
+<link href="jsps/favicon.ico" rel="shortcut icon" type="image/x-icon" />
+<link href="jsps/style.css" rel="stylesheet" type="text/css" media="screen" />
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title><s:text name="chooseRuleForEdit.title"/></title>
+</head>
+<body class="left">
+<div id="wrapper">
+	<jsp:include page="menu.jsp"/>
+	<div id="page">
+	<div id="page-bgtop">
+	<div id="middle">
+            <div class="middle-b">
+                <div class="background">
+			 <div id="left">
+                              <div id="left_container" >
+                                   <h2 class="helpHdr">Info</h2>
+                                   <s:text name="help.admin"/>
+                              </div>
+                         </div>
+                        <div id="main">
+                        <div id="main_container" class="clearfix">
+			<div id="content">
+				<h2 class="title"><s:text name="chooseRuleForEdit.title"/></h2>
+                               <div class="entry">
+					<s:form action="prepareEditRule">
+                           <s:select name="ruleId" list="rules" listValue="name" listKey="id"  key="chooseRuleForClone.label"/>
+                           <s:hidden name="funct" value="clone"/>
+                           <s:submit cssClass="button-default"/>
+                    </s:form>
+                                </div>
+			</div>
+			</div>
+			</div>
+		</div>
+	</div>
+	</div>
+	</div>
+
+    <div id="footer">
+                <jsp:include page="footer.jsp"/>
+        </div>
+        </div>
+</div>
+</body>
+</html>
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/images/EC_logo_blue_multi_horizontal.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/images/EC_logo_blue_multi_horizontal.png
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/images/EC_logo_blue_multi_horizontal.png	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/images/EC_logo_blue_multi_horizontal.png	(revision 47450)

Property changes on: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/images/EC_logo_blue_multi_horizontal.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/chooseRuleCategory.jsp
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/chooseRuleCategory.jsp	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/chooseRuleCategory.jsp	(revision 47450)
@@ -0,0 +1,51 @@
+<%@ page contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<%@ taglib prefix="s" uri="/struts-tags"%>
+<html>
+<head>
+<link href="jsps/favicon.ico" rel="shortcut icon" type="image/x-icon" />
+<link href="jsps/style.css" rel="stylesheet" type="text/css" media="screen" />
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title><s:text name="chooseRuleCategory.title"/></title>
+</head>
+<body class="left">
+<div id="wrapper">
+	<jsp:include page="menu.jsp"/>
+	<div id="page">
+	<div id="page-bgtop">
+	<div id="middle">
+            <div class="middle-b">
+                <div class="background">
+			 <div id="left">
+                              <div id="left_container" >
+                                   <h2 class="helpHdr">Info</h2>
+                                   <s:text name="help.admin"/>
+                              </div>
+                         </div>
+                        <div id="main">
+                        <div id="main_container" class="clearfix">
+			<div id="content">
+				<h2 class="title"><s:text name="chooseRuleCategory.title"/></h2>
+                                <div class="entry">
+                                        <s:form action="prepareAddRule">
+                                                <s:select key="help.chooseRuleCategory.type.title" name="type" list="ruleTypes"/>
+                                                <s:radio name="jobType" list="#{'content':'OAI Content', 'usage':'OAI Usage'}" value="defaultJobType" label="%{getText(\"jobs.job_type.name\")}" title="%{getText(\"jobs.job_type.description\")}" />
+                                                <s:checkbox name="forCris" label="Is the rule for Cris Guidelines?"/>
+                                                <s:submit cssClass="button-default"/>
+                                        </s:form>
+                                </div>
+			</div>
+			</div>
+			</div>
+		</div>
+	</div>
+	</div>
+	</div>
+
+    <div id="footer">
+                <jsp:include page="footer.jsp"/>
+        </div>
+</div>
+</div>
+</body>
+</html>
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/deleteRule.jsp
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/deleteRule.jsp	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/deleteRule.jsp	(revision 47450)
@@ -0,0 +1,49 @@
+<%@ page contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<%@ taglib prefix="s" uri="/struts-tags"%>
+<html>
+<head>
+<link href="jsps/favicon.ico" rel="shortcut icon" type="image/x-icon" />
+<link href="jsps/style.css" rel="stylesheet" type="text/css" media="screen" />
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title><s:text name="deleteRule.title"/></title>
+</head>
+<body class="left">
+<div id="wrapper">
+	<jsp:include page="menu.jsp"/>
+	<div id="page">
+	<div id="page-bgtop">
+	<div id="middle">
+            <div class="middle-b">
+                <div class="background">
+			 <div id="left">
+                              <div id="left_container" >
+                                                <h2 class="helpHdr">Info</h2>
+                                                <s:text name="help.admin"/>
+                              </div>
+                         </div>
+                          <div id="main">
+                        <div id="main_container" class="clearfix">
+			<div id="content">
+			<h2 class="title"><s:text name="deleteRule.title"/></h2>
+                                <div class="entry">
+                                        <s:form action="deleteRule">
+                                                <s:select name="ruleId" list="rules" listValue="name" listKey="id"  key="deleteRule.label"/>
+						<s:submit cssClass="button-default"/>
+                                        </s:form>
+                                </div>
+			</div>
+		</div>
+	</div>
+	</div>
+	</div>
+	</div>
+	</div>
+
+    <div id="footer">
+                <jsp:include page="footer.jsp"/>
+        </div>
+</div>
+</div>
+</body>
+</html>
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/images/opendoar.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/images/opendoar.png
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/images/opendoar.png	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/images/opendoar.png	(revision 47450)

Property changes on: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/images/opendoar.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/images/list_check.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/images/list_check.png
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/images/list_check.png	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/images/list_check.png	(revision 47450)

Property changes on: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/images/list_check.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/java/eu/dnetlib/validator/admin/actions/rules/EditRule.java
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/java/eu/dnetlib/validator/admin/actions/rules/EditRule.java	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/java/eu/dnetlib/validator/admin/actions/rules/EditRule.java	(revision 47450)
@@ -0,0 +1,75 @@
+package eu.dnetlib.validator.admin.actions.rules;
+
+import org.apache.log4j.Logger;
+
+import com.opensymphony.xwork2.Action;
+
+import eu.dnetlib.domain.functionality.validator.Rule;
+import eu.dnetlib.validator.admin.actions.BaseValidatorAction;
+import eu.dnetlib.validator.admin.api.ValidatorAdminException;
+
+public class EditRule extends BaseValidatorAction {
+
+	private static final long serialVersionUID = -8296545383286127915L;
+	private Rule rule;
+	private String[] inputs;
+	private String funct = null;
+	private static final Logger logger = Logger.getLogger(EditRule.class);
+
+	public String execute() {
+		this.clearErrorsAndMessages();
+		String ret = null;
+		logger.debug("editing rule " + rule.getId());
+		try {
+			logger.debug("ruleType: " + rule.getType());
+			if (funct.equals("clone")) {
+				if (rule.getJob_type().toLowerCase().contains("usage"))
+					rule.setJob_type("usage");
+				else if (rule.getJob_type().toLowerCase().contains("content"))
+					rule.setJob_type("content");
+				ret = this.getValidatorAdminAPI().storeRule(rule, inputs, false);
+			} else {
+				ret = this.getValidatorAdminAPI().storeRule(rule, inputs, true);
+			}
+			
+		} catch (ValidatorAdminException e) {
+			logger.error("Error editing rule", e);
+			this.addActionError(this.getText("generic.error"));
+			reportException(e);
+			return "exception";
+		}
+
+		if (ret != null) {
+			this.addActionError(this.getText(ret));
+			return "input-problem";
+		}
+
+		this.addActionMessage(this.getText("editRule.success"));
+		return Action.SUCCESS;
+	}
+
+	public Rule getRule() {
+		return rule;
+	}
+
+	public void setRule(Rule rule) {
+		this.rule = rule;
+	}
+
+	public String[] getInputs() {
+		return inputs;
+	}
+
+	public void setInputs(String[] inputs) {
+		this.inputs = inputs;
+	}
+
+	public String getFunct() {
+		return funct;
+	}
+
+	public void setFunct(String funct) {
+		this.funct = funct;
+	}
+	
+}
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/images/error.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/images/error.png
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/images/error.png	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/images/error.png	(revision 47450)

Property changes on: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/images/error.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/java/eu/dnetlib/validator/admin/actions/help/HelpPage.java
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/java/eu/dnetlib/validator/admin/actions/help/HelpPage.java	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/java/eu/dnetlib/validator/admin/actions/help/HelpPage.java	(revision 47450)
@@ -0,0 +1,8 @@
+package eu.dnetlib.validator.admin.actions.help;
+
+import eu.dnetlib.validator.admin.actions.BaseValidatorAction;
+
+@SuppressWarnings("serial")
+public class HelpPage extends BaseValidatorAction{
+
+}
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/images/BG_Footer_f5.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/images/BG_Footer_f5.png
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/images/BG_Footer_f5.png	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/images/BG_Footer_f5.png	(revision 47450)

Property changes on: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/images/BG_Footer_f5.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/java/eu/dnetlib/validator/admin/api/impls/UserApiLocal.java
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/java/eu/dnetlib/validator/admin/api/impls/UserApiLocal.java	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/java/eu/dnetlib/validator/admin/api/impls/UserApiLocal.java	(revision 47450)
@@ -0,0 +1,135 @@
+package eu.dnetlib.validator.admin.api.impls;
+
+import java.math.BigInteger;
+import java.security.MessageDigest;
+import java.util.UUID;
+
+import org.apache.log4j.Logger;
+import org.springframework.transaction.annotation.Propagation;
+import org.springframework.transaction.annotation.Transactional;
+
+import eu.dnetlib.domain.functionality.UserProfile;
+import eu.dnetlib.validator.admin.api.UserApi;
+import eu.dnetlib.validator.commons.dao.users.UsersDAO;
+
+@Transactional(propagation = Propagation.REQUIRED)
+public class UserApiLocal implements UserApi {
+
+	private static Logger logger = Logger.getLogger(UserApiLocal.class);
+	private UsersDAO usersDao;
+
+	@Override
+	@Transactional()
+	public boolean activateUser(String activationId) throws Exception {
+		usersDao.activateUser(activationId);
+		return true;
+	}
+
+	@Override
+	@Transactional(propagation = Propagation.REQUIRED)
+	public String addUser(String username, String email, String password, String firstName, String lastName,  String institution) throws Exception {
+		String hashword;
+		MessageDigest md5 = MessageDigest.getInstance("MD5");
+		md5.update(password.getBytes());
+		BigInteger hash = new BigInteger(1, md5.digest());
+		hashword = hash.toString(16);
+		String activationId = UUID.randomUUID().toString();
+		UserProfile newUser = new UserProfile();
+		newUser.setEmail(email);
+		newUser.setPassword(hashword);
+		newUser.setFirstname(firstName);
+		newUser.setLastname(lastName);
+		newUser.setUsername(username);
+		newUser.setInstitution(institution);
+		newUser.setActivationId(activationId);
+		usersDao.save(newUser);
+		return activationId;
+	}
+
+	@Override
+	public boolean correctCreds(String email, String password) throws Exception {
+		String hashword;
+		MessageDigest md5 = MessageDigest.getInstance("MD5");
+		md5.update(password.getBytes());
+		BigInteger hash = new BigInteger(1, md5.digest());
+		hashword = hash.toString(16);
+		
+		if (usersDao.checkCorrectCreds(email, hashword)) {
+			logger.debug("Password verified");
+			return true;
+		} else {
+			logger.debug("no user found with email: " + email + " and pass: " + password + " (" + hashword + ")");
+
+			return false;
+		}
+	}
+
+	@Override
+	public boolean isAdmin(String email) throws Exception {
+		return usersDao.isAdmin(email);
+	}
+
+	@Override
+	public boolean isUserActivated(String email) throws Exception {
+		return usersDao.isActivated(email);
+	}
+
+	@Override
+	@Transactional(propagation = Propagation.REQUIRED)
+	public String prepareResetPassword(String email) throws Exception {
+		String uuid = UUID.randomUUID().toString();
+		usersDao.prepareResetPassword(uuid,email);
+		return uuid;
+	}
+
+	@Override
+	@Transactional(propagation = Propagation.REQUIRED)
+	public void resetPassword(String uuid, String password) throws Exception {
+		String hashword;
+		MessageDigest md5 = MessageDigest.getInstance("MD5");
+		md5.update(password.getBytes());
+		BigInteger hash = new BigInteger(1, md5.digest());
+		hashword = hash.toString(16);
+		usersDao.ResetPassword(uuid, hashword);
+	}
+
+	@Override
+	public boolean userExists(String email) throws Exception {
+		return usersDao.userExists(email);
+	}
+
+	@Override
+	public void editUser(UserProfile user) throws Exception {
+		this.usersDao.save(user);
+
+	}
+
+	@Override
+	public boolean usernameExists(String username) throws Exception {
+		return usersDao.usernameExists(username);
+	}
+
+	@Override
+	public String getEmailFromUsername(String username) throws Exception {
+		UserProfile user = usersDao.get(username);
+		if (user == null)
+			return null;
+		else
+			return usersDao.get(username).getEmail();
+	}
+
+	@Override
+	public UserProfile getUser(String userIdentifier) throws Exception {
+		return usersDao.get(userIdentifier);
+	}
+
+	public UsersDAO getUsersDao() {
+		return usersDao;
+	}
+
+	public void setUsersDao(UsersDAO usersDao) {
+		this.usersDao = usersDao;
+	}
+
+	
+}
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/images/BG_Header_f5.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/images/BG_Header_f5.png
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/images/BG_Header_f5.png	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/images/BG_Header_f5.png	(revision 47450)

Property changes on: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/images/BG_Header_f5.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/java/eu/dnetlib/validator/admin/api/ValidatorAdminException.java
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/java/eu/dnetlib/validator/admin/api/ValidatorAdminException.java	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/java/eu/dnetlib/validator/admin/api/ValidatorAdminException.java	(revision 47450)
@@ -0,0 +1,29 @@
+package eu.dnetlib.validator.admin.api;
+
+public class ValidatorAdminException extends Exception {
+
+	/**
+	 * 
+	 * @author Nikon Gasparis
+	 *
+	 */
+	
+	private static final long serialVersionUID = -80175916822821147L;
+
+	public ValidatorAdminException() {
+		super();
+	}
+	
+	public  ValidatorAdminException(String message) {
+		super(message);
+	}
+
+	public  ValidatorAdminException(String message, Throwable cause) {
+		super(message, cause);
+	}
+
+	public  ValidatorAdminException(Throwable cause) {
+		super(cause);
+	}
+}
+
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/images/pluslogo_sm.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/images/pluslogo_sm.png
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/images/pluslogo_sm.png	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/images/pluslogo_sm.png	(revision 47450)

Property changes on: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/images/pluslogo_sm.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/java/eu/dnetlib/validator/admin/constants/FieldNames.java
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/java/eu/dnetlib/validator/admin/constants/FieldNames.java	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/java/eu/dnetlib/validator/admin/constants/FieldNames.java	(revision 47450)
@@ -0,0 +1,37 @@
+package eu.dnetlib.validator.admin.constants;
+
+public class FieldNames {
+	
+	static public String RULE_ID="id";
+	static public String RULE_NAME="name";
+	static public String RULE_DESCRIPTION="description";
+	static public String RULE_TYPE="type";
+	static public String RULE_MANDATORY="mandatory";
+	static public String RULE_SUCCESS="success";
+	static public String RULE_WEIGHT="weight";
+	static public String RULE_PROVIDER_INFORMATION="provider_information";
+	static public String RULE_VISIBLE="visible";
+	static public String RULE_JOBTYPE="job_type";
+	
+	static public String RULE_RULESFK="Rules_id";
+	
+	static public String RULE_VOCABULARY_WORDS="terms";
+	static public String RULE_VOCABULARY_WORDS_TYPE="terms_type";
+	
+	static public String RULE_CRIS_ENTITY="cris_entity";
+	
+	static public String RULE_CRIS_CLASS_VOCABULARY_SCHEME_ID="scheme_id";
+	
+	static public String RULE_CRIS_REFERENTIAL_INTEGRITY_ENTITY_ACRONYM = "entity_acronym";
+	static public String RULE_CRIS_REFERENTIAL_INTEGRITY_RELATED_ENTITY_ACRONYM = "related_entity_acronym";
+	static public String RULE_CRIS_REFERENTIAL_INTEGRITY_RELATED_ENTITY_XPATH = "related_entity_xpath";
+	
+	static public String RULE_CARDINALITY_LESSTHAN="less_than";
+	static public String RULE_CARDINALITY_GREATERTHAN="greater_than";
+	
+	static public String RULE_REGULAREXPRESSION_REGEXPR ="regular_expression";
+	
+	static public String RULE_NOTCONNFUSEDFIELDS ="fields";
+	
+//	static public String JOB_CONTENT="OAI Content Validation";
+}
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/resources/eu/dnetlib/validator/admin/api/error_messages.txt
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/resources/eu/dnetlib/validator/admin/api/error_messages.txt	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/resources/eu/dnetlib/validator/admin/api/error_messages.txt	(revision 47450)
@@ -0,0 +1,28 @@
+error.parametersMissing.ruleId=Rule id must be specified in the parameters given
+error.parametersMissing.jobId=Job id must be specified in the parameters given
+error.badParameter.idNotNumerical=The id was not numerical
+error.badParameter.unknownType=The type specified is incorrect
+rules.name.error.message1=A value must be defined for the field name
+rules.description.error.message1=A value must be defined for the field description
+rules.type.error.message1=A value must be defined for the field type
+rules.mandatory.error.message1=A value must be defined for the field mandatory
+rules.success.error.message1=A value must be defined for the field success
+rules.success.error.message2=First character for success must be one of =, > or <
+rules.success.error.message3=Field success must contain only numerical characters after the first character
+rules.weight.error.message1=Value of field weight must be numerical
+rules.provider_information.error.message1=A value must be specified for the provider information field
+rules.job_type.error.message1=Job type must be one of the available types
+rules.job_type.error.message2=A job type must be specified for this rule
+cardinality_rule.greater_than.error.message1=Value of field 'greater than' must be numerical
+cardinality_rule.less_than.error.message2=Less and Greater cannot be both without value
+cardinality_rule.less_than.error.message1=Value of field 'less than' must be numerical
+NotConfusedFields_Rule.field1.error.message1=Fields 'field1' and 'field2' must both have a value
+NotConfusedFields_Rule.field1.error.message2=Fields 'field1' and 'field2' must have a different value
+RegularExpression_Rule.regular_expression.error.message1=Field 'regular expression' must have a value
+RetrievableResource_Rule.max_depth.error.message1=Field 'max_depth' must have a numerical value
+Vocabulary_Rule.words.error.message1=A value must be defined for the 'words' field
+OAI_Content_Job.records.error.message1=Field 'records' cannot be empty
+OAI_Content_Job.records.error.message2=At least one record must be used for the validation
+OAI_Content_Job.records.error.message3=Value of field 'records' must be numerical
+OAI_Content_Job.random.error.message1=Value of field 'random' must be boolean (true or false)
+OAI_Content_Job.base_url.error.message1=Value of field 'base url' doesn't seem to be a valid url adress
\ No newline at end of file
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/images/compliant.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/images/compliant.png
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/images/compliant.png	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/images/compliant.png	(revision 47450)

Property changes on: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/images/compliant.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/images/list_arrow.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/images/list_arrow.png
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/images/list_arrow.png	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/images/list_arrow.png	(revision 47450)

Property changes on: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/images/list_arrow.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/resources/struts.xml
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/resources/struts.xml	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/resources/struts.xml	(revision 47450)
@@ -0,0 +1,219 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE struts PUBLIC
+	"-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
+	"http://struts.apache.org/dtds/struts-2.3.dtd">
+
+<struts>
+	<constant name="struts.action.excludePattern" value=".*services.*"/>
+	<package name="noAuthorization" namespace="/" extends="struts-default">
+		<default-action-ref name="welcome" />
+		
+		<global-results>
+			<result name="input">/jsps/info.jsp</result>
+			<result name="exception">/jsps/info.jsp</result>
+		</global-results>
+		
+		<action name="bugreporter" class="springManagedBugReporter">
+			<result>/jsps/info.jsp</result>
+		</action>
+		
+		<action name="welcome" class="springManagedDummy">
+			<result>/jsps/homepage.jsp</result>
+		</action>
+		
+		<action name="go2login" class="springManagedLoginPage">
+			<result>/jsps/login.jsp</result>
+			<result name="input" type="redirect">welcome</result>
+		</action>
+		
+		<action name="go2registration" class="springManagedDummy">
+			<result>/jsps/login.jsp</result>
+		</action>
+
+		<action name="Register" class="springManagedRegister">
+			<result>/jsps/info.jsp</result>
+			<result name="input">/jsps/login.jsp</result>
+		</action>
+
+		<action name="activateAccount" class="springManagedActivateAccount">
+			<result>/jsps/info.jsp</result>
+			<result name="input">/jsps/info.jsp</result>
+		</action>
+
+		<action name="Login" class="springManagedLogin">
+			<result type="redirect">${url}?${params}</result>
+			<result name="input">/jsps/login.jsp</result>
+			<result name="login" type="redirect">go2login</result>
+			<result name="welcome" type="redirect">welcome</result>
+		</action>
+		
+		<action name="portalLogin" class="springManagedPortalLogin">
+			<result>/jsps/homepage.jsp</result>
+			<result name="input">/jsps/login.jsp</result>
+		</action>
+
+		<action name="sendPassword" class="springManagedSendPassword">
+			<result>/jsps/info.jsp</result>
+			<result name="input">/jsps/forgotPassword.jsp</result>
+		</action>
+
+		<action name="resetPassword" class="springManagedResetPassword">
+			<result>/jsps/info.jsp</result>
+			<result name="input">/jsps/resetPassword.jsp</result>
+		</action>
+
+		<action name="logout" class="springManagedLogout">
+			<result>/jsps/homepage.jsp</result>
+		</action>
+		
+		<action name="score" class="springManagedScore">
+			<result>/jsps/score.jsp</result>
+		</action>
+		
+		<action name="help" class="springManagedHelp">
+			<result>/jsps/help.jsp</result>
+		</action>
+				
+		<action name="forgotPassword" class="springManagedForgotPassword">
+			<result>/jsps/forgotPassword.jsp</result>
+		</action>
+
+	</package>
+
+	<package name="needsAuthorization" namespace="/" extends="struts-default">
+
+		<interceptors>
+			<interceptor name="authenticationInterceptor" class="eu.dnetlib.validator.admin.actions.login.AuthenticationInterceptor" />
+			<interceptor-stack name="secureStack">
+				<interceptor-ref name="authenticationInterceptor" />
+				<interceptor-ref name="defaultStack" />
+			</interceptor-stack>
+		</interceptors>
+
+		<default-interceptor-ref name="secureStack" />
+
+		<global-results>
+			<result name="login">/jsps/login.jsp</result>
+			<result name="input-problem">/jsps/corneeded.jsp</result>
+			<result name="input">/jsps/info.jsp</result>
+			<result name="exception">/jsps/info.jsp</result>
+		</global-results>
+
+		<action name="curateDB" class="springManagedDatabaseCurator">
+			<result>/jsps/info.jsp</result>
+		</action>
+		
+		<action name="deleteJobs" class="springManagedDummy">
+			<result>/jsps/deleteJobs.jsp</result>
+		</action>
+		
+		<action name="sendRegistrationsReport" class="springManagedRegistrationsReport">
+			<result>/jsps/info.jsp</result>
+		</action>
+		
+		<action name="registrationsReport" class="springManagedDummy">
+			<result>/jsps/registrationsReport.jsp</result>
+		</action>
+		
+		<action name="getRulesForSet" class="springManagedGetRulesForSet">
+			<result>/jsps/createRuleSet.jsp</result>
+			<result name="deleted">/jsps/info.jsp</result>
+		</action>
+
+		<action name="getRuleSets" class="springManagedGetRuleSets">
+			<result>/jsps/chooseRuleSet.jsp</result>
+		</action>
+
+		<action name="populateRuleListForEdit" class="springManagedPopulateRuleList">
+			<result>/jsps/chooseRuleForEdit.jsp</result>
+		</action>
+
+		<action name="populateRuleListForClone" class="springManagedPopulateRuleList">
+			<result>/jsps/chooseRuleForClone.jsp</result>
+		</action>
+		
+		<action name="prepareEditRule" class="springManagedPrepareEditRule">
+			<result>/jsps/editRule.jsp</result>
+		</action>
+
+		<action name="editUser" class="springManagedEditUser" method="edit">
+			<result>/jsps/info.jsp</result>
+		</action>
+		
+		<action name="userDetails" class="springManagedEditUser">
+			<result>/jsps/editUser.jsp</result>
+		</action>
+		
+		<action name="populateList" class="springManagedPopulateList" method="populate">
+			<result>/jsps/rules.jsp</result>
+		</action>
+		
+		<action name="sendFeedback" class="springManagedSendFeedback">
+			<result>/jsps/info.jsp</result>
+		</action>
+		
+		<action name="feedback" class="springManagedFeedback">
+			<result>/jsps/feedback.jsp</result>
+		</action>
+		
+	</package>
+
+	<package name="needsAdminAuthorization" namespace="/"
+		extends="struts-default">
+
+		<interceptors>
+			<interceptor name="adminInterceptor" class="springManagedAdminInterceptor" />
+			<interceptor-stack name="secureStackA">
+				<interceptor-ref name="adminInterceptor" />
+				<interceptor-ref name="defaultStack" />
+			</interceptor-stack>
+		</interceptors>
+
+		<default-interceptor-ref name="secureStackA" />
+
+		<global-results>
+			<result name="login">/jsps/login.jsp</result>
+			<result name="input-problem">/jsps/corneeded.jsp</result>
+			<result name="input">/jsps/info.jsp</result>
+			<result name="exception">/jsps/info.jsp</result>
+		</global-results>
+
+		<action name="populateRuleCategories" class="springManagedPopulateRuleCategories">
+			<result>/jsps/chooseRuleCategory.jsp</result>
+		</action>
+
+		<action name="prepareAddRule" class="springManagedPrepareAddRule">
+			<result>/jsps/addRule.jsp</result>
+		</action>
+
+		<action name="addRule" class="springManagedAddRule">
+			<result>/jsps/info.jsp</result>
+		</action>
+
+		<action name="populateRuleList" class="springManagedPopulateRuleList">
+			<result>/jsps/deleteRule.jsp</result>
+		</action>
+
+		<action name="deleteRule" class="springManagedDeleteRule">
+			<result>/jsps/info.jsp</result>
+		</action>
+
+		<action name="editRule" class="springManagedEditRule">
+			<result>/jsps/info.jsp</result>
+		</action>
+
+		<action name="createRuleSet" class="springManagedCreateRuleSet">
+			<result>/jsps/info.jsp</result>
+			<result name="input">/jsps/corneeded.jsp</result>
+		</action>
+
+		<action name="getRuleSetsForDeletion" class="springManagedGetRuleSetsForDeletion">
+			<result>/jsps/chooseRuleSetForDeletion.jsp</result>
+		</action>
+
+		<action name="deleteRuleSet" class="springManagedDeleteRuleSet">
+			<result>/jsps/info.jsp</result>
+		</action>
+	
+	</package>
+</struts>
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/resources/validation.properties
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/resources/validation.properties	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/resources/validation.properties	(revision 47450)
@@ -0,0 +1,29 @@
+# The ESAPI validator does many security checks on input, such as canonicalization
+# and whitelist validation. Note that all of these validation rules are applied *after*
+# canonicalization. Double-encoded characters (even with different encodings involved,
+# are never allowed.
+#
+# To use:
+#
+# First set up a pattern below. You can choose any name you want, prefixed by the word
+# "Validation." For example:
+#   Validation.Email=^[A-Za-z0-9._%-]+@[A-Za-z0-9.-]+\\.[a-zA-Z]{2,4}$
+# 
+# Then you can validate in your code against the pattern like this:
+#     ESAPI.validator().isValidInput("User Email", input, "Email", maxLength, allowNull);
+# Where maxLength and allowNull are set for you needs, respectively.
+#
+# But note, when you use boolean variants of validation functions, you lose critical 
+# canonicalization. It is preferable to use the "get" methods (which throw exceptions) and 
+# and use the returned user input which is in canonical form. Consider the following:
+#  
+# try {
+#    someObject.setEmail(ESAPI.validator().getValidInput("User Email", input, "Email", maxLength, allowNull));
+#
+Validator.SafeString=^[.\\p{Alnum}\\p{Space}]{0,1024}$
+Validator.Email=^[A-Za-z0-9._%-]+@[A-Za-z0-9.-]+\\.[a-zA-Z]{2,4}$
+Validator.IPAddress=^(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$
+Validator.URL=^(ht|f)tp(s?)\\:\\/\\/[0-9a-zA-Z]([-.\\w]*[0-9a-zA-Z])*(:(0-9)*)*(\\/?)([a-zA-Z0-9\\-\\.\\?\\,\\:\\'\\/\\\\\\+=&amp;%\\$#_]*)?$
+Validator.CreditCard=^(\\d{4}[- ]?){3}\\d{4}$
+Validator.SSN=^(?!000)([0-6]\\d{2}|7([0-6]\\d|7[012]))([ -]?)(?!00)\\d\\d\\3(?!0000)\\d{4}$
+
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/resources/eu/dnetlib/validator/admin/actions/springContext-validator-struts.xml
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/resources/eu/dnetlib/validator/admin/actions/springContext-validator-struts.xml	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/resources/eu/dnetlib/validator/admin/actions/springContext-validator-struts.xml	(revision 47450)
@@ -0,0 +1,75 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<beans xmlns="http://www.springframework.org/schema/beans"
+	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+	xmlns:context="http://www.springframework.org/schema/context"
+	xmlns:cxf="http://cxf.apache.org/core"
+	xmlns:jaxws="http://cxf.apache.org/jaxws"
+	xmlns:p="http://http://www.springframework.org/schema/p"
+	xmlns:template="http://dnetlib.eu/springbeans/template"
+	xmlns:t="http://dnetlib.eu/springbeans/t"
+	xsi:schemaLocation="
+		http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.0.xsd
+        http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.0.xsd
+        http://cxf.apache.org/core http://cxf.apache.org/schemas/core.xsd
+        http://cxf.apache.org/jaxws http://cxf.apache.org/schemas/jaxws.xsd
+        http://dnetlib.eu/springbeans/template http://dnetlib.eu/springbeans/template.xsd"
+	default-autowire="no">
+		
+	<!-- BASE -->	
+	<bean id="baseAction" class="eu.dnetlib.validator.admin.actions.BaseValidatorAction" abstract="true" scope="prototype">
+		<property name="emailer" ref="emailer" />
+		<property name="userAPI" ref="userAPI" />
+		<property name="validatorAdminAPI" ref="validatorAdminAPI" />
+		<property name="userMode" value="${services.validator.mode.user}" />
+		<property name="valBaseUrl" value="${services.validator.baseUrl}" />
+		<property name="deployEnvironment" value="${services.validator.deploy.environment}" />
+		<property name="valAdminEmail" value="${services.validator.adminEmail}" />
+	</bean>		
+	<bean id="springManagedDummy" class="eu.dnetlib.validator.admin.actions.DummyAction" parent="baseAction" scope="prototype"/>
+	<bean id="go2registration" class="eu.dnetlib.validator.admin.actions.DummyAction" parent="baseAction" scope="prototype"/>
+	
+	<!-- LOGIN -->
+	<bean id="springManagedLoginPage" class="eu.dnetlib.validator.admin.actions.login.LoginPage" parent="baseAction" scope="prototype"/>
+	<bean id="springManagedLogin" class="eu.dnetlib.validator.admin.actions.login.Login" parent="baseAction"  scope="prototype"/>
+	<bean id="springManagedSendPassword" class="eu.dnetlib.validator.admin.actions.login.SendPassword" parent="baseAction"  scope="prototype"/>
+	<bean id="springManagedResetPassword" class="eu.dnetlib.validator.admin.actions.login.ResetPassword" parent="baseAction"  scope="prototype"/>
+	<bean id="springManagedLogout" class="eu.dnetlib.validator.admin.actions.login.Logout" parent="baseAction"  scope="prototype"/>
+	<bean id="springManagedPortalLogin" class="eu.dnetlib.validator.admin.actions.login.PortalLogin" parent="baseAction" scope="prototype">
+		<property name="key" value="${services.validator.portallogin.key}" />
+	</bean>
+	<bean id="springManagedForgotPassword" class="eu.dnetlib.validator.admin.actions.login.ForgotPasswordPage" parent="baseAction" scope="prototype"/>
+	<bean id="springManagedAdminInterceptor" class="eu.dnetlib.validator.admin.actions.login.AdminInterceptor">
+		<property name="userAPI" ref="userAPI"/>
+		<property name="validatorAdminAPI" ref="validatorAdminAPI" />
+	</bean>
+
+	<!-- BROWSE JOBS -->
+	
+	<bean id="springManagedDatabaseCurator" class="eu.dnetlib.validator.admin.actions.jobs.DatabaseCurator" parent="baseAction" scope="prototype"/>
+	<bean id="springManagedRegistrationsReport" class="eu.dnetlib.validator.admin.actions.jobs.RegistrationsReport" parent="baseAction" scope="prototype"/>
+
+	<!-- USERS -->
+	<bean id="springManagedRegister" class="eu.dnetlib.validator.admin.actions.users.Register" parent="baseAction" scope="prototype"/>
+	<bean id="springManagedActivateAccount" class="eu.dnetlib.validator.admin.actions.users.ActivateAccount" parent="baseAction" scope="prototype"/>
+	<bean id="springManagedEditUser" class="eu.dnetlib.validator.admin.actions.users.EditUser" parent="baseAction" scope="prototype"/>
+	
+	<!-- ADMIN RULES -->
+	<bean id="springManagedPopulateRuleCategories" class="eu.dnetlib.validator.admin.actions.rules.PopulateRuleCategories" parent="baseAction" scope="prototype"/>
+	<bean id="springManagedDeleteRule" class="eu.dnetlib.validator.admin.actions.rules.DeleteRule" parent="baseAction" scope="prototype"/>
+	<bean id="springManagedPrepareAddRule" class="eu.dnetlib.validator.admin.actions.rules.PrepareAddRule" parent="baseAction" scope="prototype"/>
+	<bean id="springManagedEditRule" class="eu.dnetlib.validator.admin.actions.rules.EditRule" parent="baseAction" scope="prototype"/>
+	<bean id="springManagedAddRule" class="eu.dnetlib.validator.admin.actions.rules.AddRule" parent="baseAction" scope="prototype"/>
+	<bean id="springManagedPopulateRuleList" class="eu.dnetlib.validator.admin.actions.rules.PopulateRuleList" parent="baseAction" scope="prototype"/>
+	<bean id="springManagedPrepareEditRule" class="eu.dnetlib.validator.admin.actions.rules.PrepareEditRule" parent="baseAction" scope="prototype"/>
+	
+	<!-- ADMIN RULESETS -->
+	<bean id="springManagedDeleteRuleSet" class="eu.dnetlib.validator.admin.actions.rulesets.DeleteRuleSet" parent="baseAction" scope="prototype"/>
+	<bean id="springManagedCreateRuleSet" class="eu.dnetlib.validator.admin.actions.rulesets.CreateRuleSet" parent="baseAction" scope="prototype"/>
+	<bean id="springManagedGetRuleSetsForDeletion" class="eu.dnetlib.validator.admin.actions.rulesets.GetRuleSets" parent="baseAction" scope="prototype"/>
+	<bean id="springManagedGetRulesForSet" class="eu.dnetlib.validator.admin.actions.rulesets.GetRules" parent="baseAction" scope="prototype"/>
+	<bean id="springManagedGetRuleSets" class="eu.dnetlib.validator.admin.actions.rulesets.GetRuleSets" parent="baseAction" scope="prototype"/>
+
+	<!-- FEEDBACK/HELP -->
+	<bean id="springManagedHelp" class="eu.dnetlib.validator.admin.actions.help.HelpPage" parent="baseAction" scope="prototype" />
+	
+</beans>
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/resources/eu/dnetlib/validator/admin/api/springContext-validator.xml
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/resources/eu/dnetlib/validator/admin/api/springContext-validator.xml	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/resources/eu/dnetlib/validator/admin/api/springContext-validator.xml	(revision 47450)
@@ -0,0 +1,35 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<beans xmlns="http://www.springframework.org/schema/beans"
+	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+	xmlns:context="http://www.springframework.org/schema/context"
+	xmlns:cxf="http://cxf.apache.org/core"
+	xmlns:jaxws="http://cxf.apache.org/jaxws"
+	xmlns:p="http://http://www.springframework.org/schema/p"
+	xmlns:template="http://dnetlib.eu/springbeans/template"
+	xmlns:t="http://dnetlib.eu/springbeans/t"
+	xmlns:tx="http://www.springframework.org/schema/tx"
+	
+	xsi:schemaLocation="
+		http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.0.xsd
+        http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.0.xsd
+        http://cxf.apache.org/core http://cxf.apache.org/schemas/core.xsd
+        http://cxf.apache.org/jaxws http://cxf.apache.org/schemas/jaxws.xsd
+        http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-4.0.xsd
+        http://dnetlib.eu/springbeans/template http://dnetlib.eu/springbeans/template.xsd"
+	default-autowire="no">
+	
+	<bean id="validatorAdminAPI" class="eu.dnetlib.validator.admin.api.impls.ValidatorAdminApiImpl" scope="singleton" init-method="start">
+		<property name="jobsDao" ref="jobsDao" />
+		<property name="rulesetsDao" ref="rulesetsDao" />
+		<property name="rulesDao" ref="rulesDao" />
+		<property name="usersDao" ref="usersDao" />	
+		<property name="masterAdmins" value="${services.validator.admins.master}" />
+		<property name="secondaryAdmins" value="${services.validator.admins.secondary}" />
+		<property name="emailer" ref="emailer" />
+		<property name="emailBuilder" ref="emailBuilder" />
+		<property name="registrationsReportEmail" value="${services.validator.registrationsReport.email}" />
+	</bean>
+	
+	<bean id ="emailBuilder" class="eu.dnetlib.validator.admin.api.impls.EmailBuilder" init-method="init" scope="prototype" />
+	
+</beans>
\ No newline at end of file
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/chooseRuleForEdit.jsp
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/chooseRuleForEdit.jsp	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/chooseRuleForEdit.jsp	(revision 47450)
@@ -0,0 +1,55 @@
+<%@ page contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<%@ taglib prefix="s" uri="/struts-tags"%>
+<html>
+<head>
+<link href="jsps/favicon.ico" rel="shortcut icon" type="image/x-icon" />
+<link href="jsps/style.css" rel="stylesheet" type="text/css" media="screen" />
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title><s:text name="chooseRuleForEdit.title"/></title>
+</head>
+<body class="left">
+<div id="wrapper">
+	<jsp:include page="menu.jsp"/>
+	<div id="page">
+	<div id="page-bgtop">
+	<div id="middle">
+            <div class="middle-b">
+                <div class="background">
+			 <div id="left">
+                              <div id="left_container" >
+                                   <h2 class="helpHdr">Info</h2>
+                                   <s:text name="help.admin"/>
+                              </div>
+                         </div>
+                        <div id="main">
+                        <div id="main_container" class="clearfix">
+			<div id="content">
+				<h2 class="title"><s:text name="chooseRuleForEdit.title"/></h2>
+                               <div class="entry">
+					<s:form action="prepareEditRule">
+                                                <s:if test="%{#session.isAdmin != null && #session.isAdmin.equals(\"true\")}">
+                                                        <s:select name="ruleId" list="rules" listValue="name" listKey="id"  key="chooseRuleForEdit.label"/>
+                                                		<s:hidden name="funct" value="edit"/>
+                                                </s:if>
+                                                <s:else>
+                                                        <s:select name="ruleId" list="rules" listValue="name" listKey="id"  key="chooseRuleForEdit.label2"/>
+                                                </s:else>
+                                                <s:submit cssClass="button-default"/>
+                                        </s:form>
+                                </div>
+			</div>
+			</div>
+			</div>
+		</div>
+	</div>
+	</div>
+	</div>
+
+    <div id="footer">
+                <jsp:include page="footer.jsp"/>
+        </div>
+</div>
+</div>
+</body>
+</html>
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/images/arrow_left.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/images/arrow_left.png
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/images/arrow_left.png	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/images/arrow_left.png	(revision 47450)

Property changes on: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/images/arrow_left.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/resources/eu/dnetlib/validator/admin/config/springContext-validator-config.xml
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/resources/eu/dnetlib/validator/admin/config/springContext-validator-config.xml	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/resources/eu/dnetlib/validator/admin/config/springContext-validator-config.xml	(revision 47450)
@@ -0,0 +1,48 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<beans xmlns="http://www.springframework.org/schema/beans"
+	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+	xmlns:context="http://www.springframework.org/schema/context"
+	xmlns:cxf="http://cxf.apache.org/core"
+	xmlns:jaxws="http://cxf.apache.org/jaxws"
+	xmlns:p="http://http://www.springframework.org/schema/p"
+	xmlns:template="http://dnetlib.eu/springbeans/template"
+	xmlns:t="http://dnetlib.eu/springbeans/t"
+	xmlns:tx="http://www.springframework.org/schema/tx"
+	
+	xsi:schemaLocation="
+		http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.0.xsd
+        http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.0.xsd
+        http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-4.0.xsd
+		http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-4.0.xsd
+        http://cxf.apache.org/core http://cxf.apache.org/schemas/core.xsd
+        http://cxf.apache.org/jaxws http://cxf.apache.org/schemas/jaxws.xsd
+        http://dnetlib.eu/springbeans/template http://dnetlib.eu/springbeans/template.xsd"
+	default-autowire="no">
+
+	<bean class="eu.dnetlib.validator.admin.config.CascadingPropertyLoader" id="propertyLoader">
+		<property name="order" value="2" />
+		<property name="properties">
+			<bean class="eu.dnetlib.conf.WebappContextProperyFactory">
+				<property name="propertyFetcher">
+					<bean class="eu.dnetlib.conf.PropertyFetcher" />
+				</property>
+			</bean>
+		</property>
+		<property name="ignoreUnresolvablePlaceholders" value="true" />
+		<property name="locations">
+			<list>
+				<value>classpath*:/gr/**/springContext-*.properties</value>
+				<value>classpath*:/eu/**/springContext-*.properties</value>
+				
+				<value>classpath*:dnet-site-wizard.properties</value>
+				<value>classpath*:dnet-site-override.properties</value>
+				<value>classpath*:dnet-wizard.properties</value>
+				<value>classpath*:dnet-override.properties</value>
+				<value>classpath*:dnet-validator-wizard.properties</value>
+				<value>classpath*:dnet-validator-override.properties</value>
+				<value>classpath*:dnet-site-force-override.properties</value>
+				<value>classpath*:dnet-force-override.properties</value>
+			</list>
+		</property>
+	</bean>
+</beans>
\ No newline at end of file
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/addRule.jsp
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/addRule.jsp	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/addRule.jsp	(revision 47450)
@@ -0,0 +1,96 @@
+<%@ page contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<%@ taglib prefix="s" uri="/struts-tags"%>
+<html>
+<head>
+<link href="jsps/favicon.ico" rel="shortcut icon" type="image/x-icon" />
+<link href="jsps/style.css" rel="stylesheet" type="text/css" media="screen" />
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title><s:text name="addRule.title"/></title>
+</head>
+<body class="left">
+<div id="wrapper">
+	<jsp:include page="menu.jsp"/>
+	<div id="page">
+	<div id="page-bgtop">
+	<div id="middle">
+            <div class="middle-b">
+                <div class="background">
+
+			 <div id="left">
+                              <div id="left_container" >
+                                                <h2 class="helpHdr">Info</h2>
+                                                <s:text name="help.admin"/>
+                              </div>
+                         </div>
+                                <div id="main">
+                        <div id="main_container" class="clearfix">
+		<div id="content">
+				<h2 class="title"><s:text name="addRule.title"/></h2>
+				<p class="meta"><a href='<s:url value="/jsps/help.jsp#addRule"/>' target="_blank"><s:text name="help"/></a></p>
+				<div class="entry">
+					<s:form action="addRule">
+<%-- 						<s:hidden name="type"/> --%>
+						<s:hidden name="jobType"/>
+						<s:hidden name="forCris"/>
+						<s:iterator value="labels" var="label">
+							<s:set name="dscr" value="%{#label+\".description\"}"/>
+							<s:set name="tltp" value="%{#label+\".name\"}"/>
+							<s:if test="%{#label.equals(\"xmlvocabulary_rule.terms\") || #label.equals(\"rules.description\")}">
+								<s:textarea name="inputs" title="%{getText(#dscr)}" label="%{getText(#tltp)}" cols="50" rows="5"/>
+							</s:if>
+							<s:elseif test="%{#label.equals(\"xmlcrisclassvocabulary_rule.terms\") || #label.equals(\"xmlcrisreferentialintegrity_rule.terms\")}">
+								<s:textarea name="inputs" title="%{getText(#dscr)}" label="%{getText(#tltp)}" cols="50" rows="5"/>
+							</s:elseif>
+                            <s:elseif test="%{#label.equals(\"xmlvocabulary_rule.terms_type\")}">
+                                <s:select label="%{getText(#tltp)}" name="inputs" list="#{'whitelist':'whitelist', 'blacklist':'blacklist'}" title="%{getText(#dscr)}"/>
+							</s:elseif>
+							<s:elseif test="%{#label.equals(\"rules.mandatory\")}">
+								<s:select label="%{getText(#tltp)}" name="inputs" list="#{'true':'true', 'false':'false'}" title="%{getText(#dscr)}"/>
+							</s:elseif>
+							<s:elseif test="%{#label.equals(\"rules.cris_entity\")}">
+                                <s:select label="%{getText(#tltp)}" name="inputs" list="entityTypes" value="%{rule.entity_type}" title="%{getText(#dscr)}"/>
+                            </s:elseif>
+<%-- 							<s:elseif test="%{#label.equals(\"rules.provider_information\")}"> --%>
+<%-- 								<s:if test="%{jobType.equals(\"usage\")}"> --%>
+<%-- 									<s:textfield name="inputs" title="%{getText(#dscr)}" label="%{getText(#tltp)}"/> --%>
+<%-- 								</s:if> --%>
+<%-- 							</s:elseif> --%>
+							<s:elseif test="%{#label.matches('.*success')}">
+								<s:select label="%{getText(#tltp)}" name="inputs" list="#{'>0':'>0', 'all':'all', '0':'0', '1':'1'}"  title="%{getText(#dscr)}"/>
+							</s:elseif>
+							<s:elseif test="%{#label.equals(\"chain_rule.type\")}">
+								<s:select label="%{getText(#tltp)}" name="inputs" list="#{'or':'or', 'and':'and', 'horn':'horn'}" title="%{getText(#dscr)}"/>
+							</s:elseif>							
+							<s:elseif test="%{#label.equals(\"chain_rule.rule_1\")}">
+								<s:select name="inputs" list="rules" listValue="ruleName" listKey="ruleId" label="%{getText(#tltp)}" title="%{getText(#dscr)}"/>
+							</s:elseif>							
+							<s:elseif test="%{#label.equals(\"chain_rule.rule_2\")}">
+								<s:select name="inputs" list="rules" listValue="ruleName" listKey="ruleId" label="%{getText(#tltp)}" title="%{getText(#dscr)}"/>
+							</s:elseif>		
+							<s:else>
+								<s:textfield name="inputs" title="%{getText(#dscr)}" label="%{getText(#tltp)}"/>
+							</s:else>
+						</s:iterator>
+<%-- 						<s:if test="%{forCris == true}"> --%>
+<%-- 							<s:select name="entityType" list="entityTypes" label="%{getText(\"jobs.entity_type.name\")}" title="%{getText(\"jobs.entity_type.description\")}" /> --%>
+<%-- 						</s:if> --%>
+<%-- 						<s:textfield name="jobType" value="%{#jobType}" label="%{getText(\"jobs.job_type.name\")}" title="%{getText(\"jobs.job_type.description\")}" readonly='true'/> --%>
+						<s:textfield name="type" label="%{getText(\"rules.type.name\")}" title="%{getText(\"rules.type.description\")}" readonly='true'/>
+						<s:submit value="Insert" cssClass="button-default"/>
+					</s:form>
+				</div>
+			</div>
+		</div>
+	</div>
+	</div>
+	</div>
+	</div>
+	</div>
+    <div id="footer">
+                <jsp:include page="footer.jsp"/>
+        </div>
+        </div>
+        </div>
+</body>
+</html>
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/images/box_alert.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/images/box_alert.png
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/images/box_alert.png	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/images/box_alert.png	(revision 47450)

Property changes on: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/images/box_alert.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/createRuleSet.jsp
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/createRuleSet.jsp	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/createRuleSet.jsp	(revision 47450)
@@ -0,0 +1,106 @@
+<%@ page contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<%@ taglib prefix="s" uri="/struts-tags"%>
+<html>
+<head>
+<link href="jsps/favicon.ico" rel="shortcut icon" type="image/x-icon" />
+<link href="jsps/style.css" rel="stylesheet" type="text/css" media="screen" />
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<s:if test="%{#session.isAdmin != null && #session.isAdmin.equals(\"true\")}">
+        <s:set name="isAdmin" value="true"/>
+</s:if>
+<s:else>
+        <s:set name="isAdmin" value="false"/>
+</s:else>
+<title>
+        <s:if test="%{#isAdmin}">
+                <s:text name="createRuleSet.title"/>
+        </s:if>
+        <s:else>
+                <s:text name="createRuleSet.title2"/>
+        </s:else>
+</title>
+</head>
+<body class="left">
+<div id="wrapper">
+	<jsp:include page="menu.jsp"/>
+	<div id="page">
+	<div id="page-bgtop">
+	<div id="middle">
+            <div class="middle-b">
+                <div class="background">
+			 <div id="left">
+                              <div id="left_container" >
+                                   <h2 class="helpHdr">Info</h2>
+                                   <s:text name="help.admin"/>
+                              </div>
+                         </div>
+                        <div id="main">
+                        <div id="main_container" class="clearfix">
+			<div id="content">
+				<s:if test="%{#isAdmin}">
+                                        <h2 class="title"><s:text name="createRuleSet.title"/></h2>
+                                </s:if>
+                                <s:else>
+                                        <h2 class="title"><s:text name="createRuleSet.title2"/></h2>
+                                </s:else>
+                                <div class="entry">
+                                        <s:form action="createRuleSet">
+                                                <s:hidden name="funct"/>
+                                                <s:hidden name="ruleSet.id"/>
+                                                <s:textfield name="ruleSet.name" key="createRuleSet.name"/>
+                                                <s:textfield name="ruleSet.shortName" key="createRuleSet.shortName"/>
+                                                <s:textfield name="ruleSet.description" key="createRuleSet.description"/>
+                                                <s:textfield name="ruleSet.guidelinesAcronym" key="createRuleSet.guidelinesAcronym"/>
+<%--                                                 <s:textfield name="ruleSet.visibility" key="createRuleSet.visibility"/> --%>
+                                                 
+                                                <s:select key="createRuleSet.visibility"
+                                                       name="ruleSet.visibility"
+                                                       list="deployEnvironments"
+                                                       multiple="true"
+                                                       size="%{#ruleSet.visibility.size()}"
+                                                       value="%{ruleSet.visibility}"
+                                                       disabled='%{!#isAdmin}'
+                                                /> 
+                                                 
+                                                <s:select key="createRuleSet.rulesContent"
+                                                       name="chosenContentRules"
+                                                       list="rulesContent"
+                                                       listKey="id"
+                                                       listValue="name"
+                                                       multiple="true"
+                                                       size="%{#rulesContent.size()}"
+                                                       value="%{ruleIdsContent}"
+                                                       disabled='%{!#isAdmin}'
+                                                />
+                                                <s:select key="createRuleSet.rulesUsage"
+                                                       name="chosenUsageRules"
+                                                       list="rulesUsage"
+                                                       listKey="id"
+                                                       listValue="name"
+                                                       multiple="true"
+                                                       size="%{#rulesUsage.size()}"
+                                                       value="%{ruleIdsUsage}"
+                                                       disabled='%{!#isAdmin}'
+                                                />
+
+                                                <s:if test="%{#isAdmin}">
+                                                	<s:submit cssClass="button-default"/>
+                                                </s:if>
+                                        </s:form>
+                                </div>
+
+			</div>
+			</div>
+			</div>
+		</div>
+	</div>
+	</div>
+	</div>
+    <div id="footer">
+                <jsp:include page="footer.jsp"/>
+        </div>
+	</div>
+</div>
+</body>
+</html>
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/images/register.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/images/register.png
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/images/register.png	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/images/register.png	(revision 47450)

Property changes on: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/images/register.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/images/ajax_loader_blue_32.gif
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/images/ajax_loader_blue_32.gif
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/images/ajax_loader_blue_32.gif	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/images/ajax_loader_blue_32.gif	(revision 47450)

Property changes on: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/images/ajax_loader_blue_32.gif
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/resources/field-infos.properties
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/resources/field-infos.properties	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/resources/field-infos.properties	(revision 47450)
@@ -0,0 +1,98 @@
+rules.name.description = The name of the rule. Must be short and descriptive.
+rules.name.name = Name
+rules.description.description = A longer text describing the rule in more detail.
+rules.description.name = Description
+rules.mandatory.description = Must be true or false. If true, then if this rule doesn't validate the score will suffer. If false, then if the rule validates successfully then the score will be increased (even above 100%)
+rules.mandatory.name = Mandatory
+rules.success.description = The correct syntax as regular expression is ([=<>][0-9]+)|a). For a thorough explanation of this field please refer to the Administrator Manual. 
+rules.success.name = Success
+rules.weight.description = An integer indicating how important this rule is. The base weight is 1. Weights greater than 1 mean that this rule impacts more on the score.
+rules.weight.name = Weight
+rules.provider_information.description = This information is used by the Provider Module to harvest the correct items for validation. For example, for OAI Content Validation jobs a possible value could be dc:identifier. For a thorough explanation of this field please refer to the Administrator Manual. 
+rules.provider_information.name = Provider Information
+rules.visible.description = Not shown to the end-user
+rules.visible.name = Visible
+rules.type.name = Rule Type
+rules.type.description = The type of the rule
+rules.cris_entity.name = Cris Entity
+rules.cris_entity.description = The type of cris entity that this rule will be applicable on
+jobs.job_type.name = Job Type
+jobs.job_type.description = The type of job that this rule will be applicable on
+jobs.entity_type.name = Entity Type
+jobs.entity_type.description = The type of entity that this rule will be applicable on
+xmlvocabulary_rule.terms.name = Words
+xmlvocabulary_rule.terms.description = The list of words that will be used for matching. Each line must include only one word.
+xmlvocabulary_rule.terms_type.name = Words List Type
+xmlvocabulary_rule.terms_type.description = The kind of the list of words that will be used for matching. Blacklist or whitelist.
+xmlvocabulary_rule.success.name = Success
+xmlvocabulary_rule.success.description = The correct syntax is :all, >0, 0 . For a thorough explanation of this field please refer to the Administrator Manual. 
+xmlvocabulary_rule.xpath.name = XPath
+xmlvocabulary_rule.xpath.description = XPath for specific rule.
+xmlcrisclassvocabulary_rule.terms.name = Words
+xmlcrisclassvocabulary_rule.terms.description = The list of words that will be used for matching. Each line must include only one word.
+xmlcrisclassvocabulary_rule.success.name = Success
+xmlcrisclassvocabulary_rule.success.description = The correct syntax is :all, >0, 0, 1 . For a thorough explanation of this field please refer to the Administrator Manual. 
+xmlcrisclassvocabulary_rule.xpath.name = XPath
+xmlcrisclassvocabulary_rule.xpath.description = XPath for specific rule.
+xmlcrisclassvocabulary_rule.scheme_id.name = Scheme ID
+xmlcrisclassvocabulary_rule.scheme_id.description = XPath for specific rule.
+xmlcrisreferentialintegrity_rule.terms.name = Words
+xmlcrisreferentialintegrity_rule.terms.description = The list of words that will be used for matching. Each line must include only one word.
+xmlcrisreferentialintegrity_rule.success.name = Success
+xmlcrisreferentialintegrity_rule.success.description = The correct syntax is :all, >0, 0, 1 . For a thorough explanation of this field please refer to the Administrator Manual. 
+xmlcrisreferentialintegrity_rule.xpath.name = XPath
+xmlcrisreferentialintegrity_rule.xpath.description = XPath for specific rule.
+xmlcrisreferentialintegrity_rule.scheme_id.name = Scheme ID
+xmlcrisreferentialintegrity_rule.scheme_id.description = XPath for specific rule.
+xmlcrisreferentialintegrity_rule.entity_acronym.name = Entity Acronym
+xmlcrisreferentialintegrity_rule.entity_acronym.description = Entity Acronym (eg.cfPers).
+xmlcrisreferentialintegrity_rule.related_entity_acronym.name = Related Entity Acronym
+xmlcrisreferentialintegrity_rule.related_entity_acronym.description = Related Entity Acronym (eg.cfPers).
+xmlcrisreferentialintegrity_rule.related_entity_xpath.name = Related Entity XPATH
+xmlcrisreferentialintegrity_rule.related_entity_xpath.description = Related Entity XPATH.
+xmlfieldexist_rule.success.name = Success
+xmlfieldexist_rule.success.description = The correct syntax is :all, >0, 0 . For a thorough explanation of this field please refer to the Administrator Manual. 
+xmlfieldexist_rule.xpath.name = XPath
+xmlfieldexist_rule.xpath.description = XPath for specific rule.
+xmlregularexpression_rule.success.name = Success
+xmlregularexpression_rule.success.description = The correct syntax is :all, >0, 0 . For a thorough explanation of this field please refer to the Administrator Manual. 
+xmlregularexpression_rule.xpath.name = XPath
+xmlregularexpression_rule.xpath.description = XPath for specific rule.
+xmlregularexpression_rule.regexp.name = Regular Expression
+xmlregularexpression_rule.regexp.description = The regular expression used for validation.
+xmlcardinality_rule.lt.name = Less Than
+xmlcardinality_rule.lt.description = Less than this number
+xmlcardinality_rule.gt.name = Greater Than
+xmlcardinality_rule.gt.description = Greater than this number
+xmlcardinality_rule.success.name = Success
+xmlcardinality_rule.success.description = The correct syntax is :all, >0, 0 . For a thorough explanation of this field please refer to the Administrator Manual. 
+xmlcardinality_rule.xpath.name = XPath
+xmlcardinality_rule.xpath.description = XPath for specific rule.
+xmlcardinality_rule.regexp.name = Regular Expression
+xmlcardinality_rule.regexp.description = The regular expression used for validation.
+xmlnotconfusedfields_rule.fields.name = Fields
+xmlnotconfusedfields_rule.fields.description = Fields that must not be confused each other
+xmlnotconfusedfields_rule.success.name = Success
+xmlnotconfusedfields_rule.success.description = The correct syntax is :all, >0, 0 . For a thorough explanation of this field please refer to the Administrator Manual. 
+xmlnotconfusedfields_rule.xpath.name = XPath
+xmlnotconfusedfields_rule.xpath.description = XPath for specific rule.
+xmlnotconfusedfields_rule.regexp.name = Regular Expression
+xmlnotconfusedfields_rule.regexp.description = The regular expression used for validation.
+xmlvalidurl_rule.success.name = Success
+xmlvalidurl_rule.success.description = The correct syntax is :all, >0, 0 . For a thorough explanation of this field please refer to the Administrator Manual. 
+xmlvalidurl_rule.xpath.name = XPath
+xmlvalidurl_rule.xpath.description = XPath for specific rule.
+xmlvalidurl_rule.regexp.name = Regular Expression
+xmlvalidurl_rule.regexp.description = The regular expression used for validation.
+chain_rule.type.description = Permitted values: 'or' -> true if any of the rules is successful, 'and' -> true if all the rules are successful, 'horn' -> rule[0] => rule[1] /\ rule[2] /\ ... /\ rule[n-1]
+chain_rule.type.name = Chain Type
+chain_rule.rule_1.description = The first rule that chain rule consists of.
+chain_rule.rule_1.name = 1st Rule of Chain
+chain_rule.rule_2.description = The second rule that chain rule consists of.
+chain_rule.rule_2.name = 2nd Rule of Chain
+oaipmhresumptiontokenduration_rule.duration.description = Duration of resumption token.
+oaipmhresumptiontokenduration_rule.duration..name = Duration
+oaipmhincrementalrecorddelivery_rule.from.name = From
+oaipmhincrementalrecorddelivery_rule.from.description = From field.
+oaipmhincrementalrecorddelivery_rule.until.name = Until
+oaipmhincrementalrecorddelivery_rule.until.description = Until field.
\ No newline at end of file
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/resources/backend-errors.properties
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/resources/backend-errors.properties	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/resources/backend-errors.properties	(revision 47450)
@@ -0,0 +1,29 @@
+error.parametersMissing.ruleId=Rule id must be specified in the parameters given
+error.parametersMissing.jobId=Job id must be specified in the parameters given
+error.badParameter.idNotNumerical=The id was not numerical
+error.badParameter.unknownType=The type specified is incorrect
+rules.name.error.message1=A value must be defined for the field name
+rules.description.error.message1=A value must be defined for the field description
+rules.type.error.message1=A value must be defined for the field type
+rules.mandatory.error.message1=A value must be defined for the field mandatory
+rules.success.error.message1=A value must be defined for the field success
+rules.success.error.message2=First character for success must be one of =, > or <
+rules.success.error.message3=Field success must contain only numerical characters after the first character
+rules.weight.error.message1=Value of field weight must be numerical
+rules.provider_information.error.message1=A value must be specified for the provider information field
+rules.job_type.error.message1=Job type must be one of the available types
+rules.job_type.error.message2=A job type must be specified for this rule
+cardinality_rule.greater_than.error.message1=Value of field 'greater than' must be numerical
+cardinality_rule.less_than.error.message2=Less and Greater cannot be both without value
+cardinality_rule.less_than.error.message1=Value of field 'less than' must be numerical
+NotConfusedFields_Rule.field1.error.message1=Fields 'field1' and 'field2' must both have a value
+NotConfusedFields_Rule.field1.error.message2=Fields 'field1' and 'field2' must have a different value
+RegularExpression_Rule.regular_expression.error.message1=Field 'regular expression' must have a value
+RetrievableResource_Rule.max_depth.error.message1=Field 'max_depth' must have a numerical value
+Vocabulary_Rule.words.error.message1=A value must be defined for the 'words' field
+OAI_Content_Job.records.error.message1=Field 'records' cannot be empty
+OAI_Content_Job.records.error.message2=At least one record must be used for the validation
+OAI_Content_Job.records.error.message3=Value of field 'records' must be numerical
+OAI_Content_Job.random.error.message1=Value of field 'random' must be boolean (true or false)
+OAI_Content_Job.base_url.error.message1=Value of field 'base url' doesn't seem to be a valid url adress
+RetrievableResource_Rule.mime_types.error.message1=Invalid mime type(s)
\ No newline at end of file
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/images/re3data.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/images/re3data.png
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/images/re3data.png	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/images/re3data.png	(revision 47450)

Property changes on: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/images/re3data.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/images/menu_dropdown_level1_parent_blue.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/images/menu_dropdown_level1_parent_blue.png
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/images/menu_dropdown_level1_parent_blue.png	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/images/menu_dropdown_level1_parent_blue.png	(revision 47450)

Property changes on: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/images/menu_dropdown_level1_parent_blue.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/images/wrong.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/images/wrong.png
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/images/wrong.png	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/images/wrong.png	(revision 47450)

Property changes on: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/images/wrong.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/images/tick.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/images/tick.png
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/images/tick.png	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/images/tick.png	(revision 47450)

Property changes on: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/images/tick.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/images/logo-referencia-openaire.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/images/logo-referencia-openaire.png
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/images/logo-referencia-openaire.png	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/images/logo-referencia-openaire.png	(revision 47450)

Property changes on: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/images/logo-referencia-openaire.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/images/checkmark_28.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/images/checkmark_28.png
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/images/checkmark_28.png	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/images/checkmark_28.png	(revision 47450)

Property changes on: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/images/checkmark_28.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/images/openairepluslogo.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/images/openairepluslogo.png
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/images/openairepluslogo.png	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/images/openairepluslogo.png	(revision 47450)

Property changes on: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/images/openairepluslogo.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/images/zebra_list.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/images/zebra_list.png
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/images/zebra_list.png	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/images/zebra_list.png	(revision 47450)

Property changes on: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/images/zebra_list.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/images/box_download.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/images/box_download.png
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/images/box_download.png	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/images/box_download.png	(revision 47450)

Property changes on: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/images/box_download.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/images/help2.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/images/help2.png
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/images/help2.png	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/images/help2.png	(revision 47450)

Property changes on: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/images/help2.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/images/readmore.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/images/readmore.png
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/images/readmore.png	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/images/readmore.png	(revision 47450)

Property changes on: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/images/readmore.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/images/footer_bg_m.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/images/footer_bg_m.png
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/images/footer_bg_m.png	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/images/footer_bg_m.png	(revision 47450)

Property changes on: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/images/footer_bg_m.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/images/inprogress.jpg
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/images/inprogress.jpg
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/images/inprogress.jpg	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/images/inprogress.jpg	(revision 47450)

Property changes on: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/images/inprogress.jpg
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/images/error_icon_24.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/images/error_icon_24.png
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/images/error_icon_24.png	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/images/error_icon_24.png	(revision 47450)

Property changes on: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/images/error_icon_24.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/images/list_star.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/images/list_star.png
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/images/list_star.png	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/images/list_star.png	(revision 47450)

Property changes on: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/images/list_star.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/images/number-3.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/images/number-3.png
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/images/number-3.png	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/images/number-3.png	(revision 47450)

Property changes on: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/images/number-3.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/images/register.jpg
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/images/register.jpg
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/images/register.jpg	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/images/register.jpg	(revision 47450)

Property changes on: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/images/register.jpg
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/images/arrow_right.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/images/arrow_right.png
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/images/arrow_right.png	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/images/arrow_right.png	(revision 47450)

Property changes on: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/images/arrow_right.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/style.css
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/style.css	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/style.css	(revision 47450)
@@ -0,0 +1,1233 @@
+
+/*
+Design by Free CSS Templates
+http://www.freecsstemplates.org
+Released for free under a Creative Commons Attribution 2.5 License
+*/
+@import url(fonts/kreon.css);
+@import url(fonts/yanonekaffeesatz.css);
+@import url(fonts/opensans.css);
+
+body, html {
+	height:100%;
+}
+body {
+	margin: 0;
+	padding: 0;
+	font: normal 12px/20px verdana, OpenSansLight, sans-serif;
+	/*font: 12px/20px "OpenSansLight", "Trebuchet MS", Georgia, "Times New Roman", Times, serif;*/
+	color: #717171;
+	background: #f5f5f5;
+ 	background-image: url(images/BG_Header_f5.png), url(images/BG_Footer_f5.png);
+ 	background-position: left top, right bottom;
+ 	background-repeat: no-repeat, no-repeat; 
+ 	background-attachment:fixed;
+}
+
+h1, h2, h3, h4, h5 {
+	margin: 0;
+	padding-bottom:5px;
+	font-family: "OpenSansLight", "Trebuchet MS", Georgia, "Times New Roman", Times, serif;
+	font-weight: normal;
+	color: #0F2B5B;
+}
+
+h1 { 	padding-top: 25px;
+	padding-bottom:15px;
+	font-size: 24px; 
+	color:#829333; 
+}
+
+h2 { 	padding-top: 25px;
+	padding-bottom:10px;
+	font-size: 18px; 
+	color:#829333; 
+}
+
+h3 {  
+	color:#343CB1;
+	font-size: 16px; 
+}
+h4 {  
+	font-size: 16px; 
+}
+h5 {  
+	font-size: 14px; 
+}
+
+p, ul, ol {
+	margin-top: 0;
+	text-align: justify;
+}
+
+ul, ol { }
+
+blockquote { }
+
+a { color: #2D72D6; }
+
+a:hover { text-decoration: none; color:#E76E12; cursor: pointer;}
+
+a img {
+	border: none;
+}
+
+img.left {
+	float: left;
+	margin: 7px 30px 0 0;
+}
+
+img.right {
+	float: right;
+	margin: 7px 0 0 30px;
+}
+
+hr {
+	border-top: 0px;
+	border-bottom: 1px solid #ddd;
+}
+.frontvisible {
+	font-size:16px;
+	font-family: "OpenSansLight", "Trebuchet MS", Georgia, "Times New Roman", Times, serif;
+}
+.optional {
+	font-size:72%!important;
+}
+.frontvisible p {
+	font-size:12px;
+}
+ul.frontvisible,
+.frontvisible ul {
+	list-style:none;
+	margin-left:60px;
+	padding-left:60px;
+	font-size:12px;
+}
+ul.frontvisible>li,
+.frontvisible li {
+	background: url('images/list_check.png') 0 0 no-repeat;
+	padding: 4px 0 0 30px;
+	font-size:14px;
+	line-height:24px;
+}
+
+.list1 {
+}
+
+.list1 li {
+	float: left;
+	line-height: normal;
+}
+
+.list1 li img {
+	margin: 0 30px 30px 0;
+}
+
+.list1 li.alt img {
+	margin-right: 0;
+}
+
+div.wrapper {
+	margin: auto; 
+}
+.errorMessage {
+	color: #E24912;
+	list-style: none;
+	font-style:italic;
+	margin:10px 0px;
+	font-size:110%;
+}
+
+.highlight {
+	background: url(images/menu_level2_parent.png) 0 40%  no-repeat;
+	padding-left:30px;
+	font-weight:bold;
+}
+
+.register {
+	background: url(images/register.png) right 40%  no-repeat;
+	padding-right:18px;
+}
+.notes {
+	color:#818181;
+	font-style:italic;
+    background-color: transparent;
+    background-image: url("images/info.jpg");
+    background-repeat: no-repeat;
+	background-position:0 left;
+    padding-left: 20px;
+	line-height:140%;
+}
+.notes_important {
+	color:#666;
+	font-style:italic;
+    background-color: transparent;
+    background-image: url("images/exclamation-icon.png");
+    background-repeat: no-repeat;
+	background-position:0 left;
+    padding-left: 20px;
+	line-height:140%;
+}
+.comments {
+	color:#666;
+	font-style:italic;
+ }
+ 
+.selectedHdr {
+	margin: 15px 0px 40px 0px;
+	color:#E24912;
+	font-family: "YanoneKaffeesatzLight"; 
+	font-size: 28px;
+}
+.helpHdr {
+    background-attachment: scroll;
+    background-color: transparent;
+    background-image: url("images/info-left.png");
+    background-position: 0 80%;  
+    background-repeat: no-repeat;
+    padding-left: 35px;
+}
+.next {
+	line-height:32px;
+	background-image: url("images/arrow_right.png");
+	background-position: 50% 40%;  
+	background-repeat: no-repeat;
+	padding-right:65px;
+	margin-bottom:20px;
+	text-align:center;
+}
+.next a {
+	text-decoration:none;
+}
+.prev {
+	line-height:32px;
+	background-image: url("images/arrow_left.png");
+	background-position: 45% 40%;  
+	background-repeat: no-repeat;
+	padding-left:25px;
+	text-align:center;
+	margin-bottom:20px;
+}
+.prev a {
+	text-decoration:none;
+}
+
+.smallInp {
+	width:10%!important;
+}
+.smallInp input[type="text"] {
+	width:10%!important;
+}
+
+.bigInp {
+	width:40%!important;
+}
+.bigInp input[type="text"] {
+	width:40%!important;
+}
+
+.validatedOk { 
+	line-height:32px;
+	background-image: url("images/tick.png");
+    background-position: 50% 100%;
+    background-repeat: no-repeat;
+}
+
+.addNewRow { 
+	line-height:32px;
+	background-image: url("images/tick.png");
+    background-position: 50% 50%;
+    background-repeat: no-repeat;
+}
+
+.validatedWrong {
+	line-height:32px;
+	background-image: url("images/error.png");
+    background-position: 50% 40%;  
+    background-repeat: no-repeat;
+}
+
+.validatedWarnings {
+	line-height:32px;
+	background-image: url("images/warning.png");
+    background-position: 50% 40%;  
+    background-repeat: no-repeat;
+}
+/*
+ * horizontal rule
+ */
+ 
+hr.dotted {
+	margin: 15px 0px 15px 0px;
+	display: block;
+	background: url(images/line_dotted.png) 0 0 repeat-x;
+	height: 1px;
+	border: none;
+}
+
+/*
+ * highlighted div and span tags
+ */
+
+span.note,
+span.info,
+span.alert,
+span.download,
+span.tip {
+	display: block;
+}
+
+.box-content {
+	background: #fafafa;
+	border: 1px solid #ddd;
+}
+
+
+div.note, span.note,
+div.info, span.info,
+div.alert, span.alert,
+div.download, span.download,
+div.tip, span.tip {
+	margin: 10px 0px 10px 0px;
+	padding: 8px 10px 8px 35px;
+	background: #fafafa;
+	border-top: 1px solid #ddd;
+	border-bottom: 1px solid #ddd;
+}
+
+div.info, span.info {
+	background: #ebf5fa url(images/box_info.png) 0 0 no-repeat;
+	border-color: #d2dce1;
+}
+
+div.alert, span.alert {
+	background: #fff0eb url(images/box_warning.png) 0 0 no-repeat;
+	border-color: #ffd7cd;
+}
+
+div.download, span.download {
+	background: #faffe6 url(images/box_download.png) 0 0 no-repeat;
+	border-color: #dce6be;
+}
+
+div.tip, span.tip {
+	background: #fffae6 url(images/box_tip.png) 0 0 no-repeat;
+	border-color: #fae6be;
+}
+.errorlink,
+.warninglink,
+.smallfont {
+	font-size:90%!important;
+}
+a.smallfont {
+	font-size:90%!important;
+}
+.firstpar {
+	padding:0px 5px 20px 45px;
+	margin:15px 0px;
+	background: no-repeat url(images/number-1.png) top left;
+}
+.secondpar {
+	padding:0px 5px 20px 45px;
+	margin:15px 0px;
+	background: no-repeat url(images/number-2.png) top left;
+}
+.thirdpar {
+	padding:0px 5px 20px 45px;
+	margin:15px 0px;
+	background: no-repeat url(images/number-3.png) top left;
+}
+.fourthpar {
+ 	padding:0px 5px 20px 45px;
+ 	margin:15px 0px;
+}
+.section {
+	padding-left:5px;
+	font-weight: normal;
+	text-transform: none;
+	line-height: 30px;
+	padding-top:3px;
+	padding-bottom: 10px;
+	font-family: "YanoneKaffeesatzLight"; 
+	font-size: 30px;
+	color:#343CB1;
+}
+.section1 {
+	padding-left:5px;
+	font-weight: normal;
+	text-transform: none;
+	line-height: 30px;
+	padding-top:3px;
+	padding-bottom: 10px;
+	font-family: "YanoneKaffeesatzLight"; 
+	font-size: 30px;
+	color:#343CB1;
+	background:#c2c2c2;
+}
+.box {
+	background: #fafafa;
+	border: 1px solid #ddd;
+}
+.field {
+	margin: 10px 0px;
+	line-height:28px;
+	font-size:100%;
+	clear:both;
+	overflow: hidden;
+}
+#left .field  {
+	padding:0
+	font-size:100%;
+	clear:both;
+	color:#351695;
+}
+.field label, label {
+	padding-left:1px;
+}
+	
+label input[type="text"] {
+	border:#839EB7 1px solid!important;
+	width:70%;
+}
+
+.field input[type="text"] {
+	width:80%;
+}
+.field input[type="password"] {
+	width:80%;
+}
+.fieldName {
+	margin-right: 10px;
+	font-family: "YanoneKaffeesatzLight"; 
+	font-size:18px;
+}
+
+
+/* Header */
+
+#header-wrapper {
+	color: #717171;
+}
+
+#header {
+	width: 970px;
+	height: 160px;
+	margin: 0 auto;
+	position:relative;
+}
+
+/* Menu */
+
+#topmenu {
+	height:30px;
+	padding-right:20px;
+}
+#topmenu ul {
+	list-style: none;
+}
+#topmenu li {
+	padding-left:10px;
+	font-family: "YanoneKaffeesatzLight"; 
+	font-size:16px;
+}
+#topmenu li a {
+	text-decoration:none;
+}
+
+
+
+	
+/* Search */
+/* oldname searchbox*/ 
+.class srchbx {
+	font-size:12px;
+	font-weight:bold;
+}
+#search {
+	float: right;
+	width: 305px;
+	height: 45px;
+}
+
+#search form {
+	float: right;
+	margin: 0;
+	padding: 12px 30px 0 0;
+}
+
+#search fieldset {
+	margin: 0;
+	padding: 0;
+	border: none;
+}
+
+#search input {
+	float: left;
+	font: 12px Georgia, "Times New Roman", Times, serif;
+	border: none;
+}
+
+#search-text {
+	width: 135px;
+	height: 18px;
+	padding: 3px 0 0 5px;
+	border: 1px solid #333333;
+	background: #ECF9E4;
+	color: #000000;
+}
+
+#search-submit {
+	height: 21px;
+	margin-left: 10px;
+	padding: 0px 5px;
+	background: #000000;
+	color: #FFFFFF;
+}
+
+/* Page */
+
+#page {
+	width: 970px;
+	margin: 0 auto;
+	/*background: #fafafa url(images/middle_bg_t.png) 0 0 repeat-x;*/
+	background:#ffffff;
+	box-shadow: 0 1px 0 rgba(0,0,0,0.1);
+}
+
+#page-bgtop {
+	
+}
+
+	/** LOGO */
+
+#logoLareferencia {
+	width: 308px;
+	height: 130px;
+	top:10px;
+	margin: 0 auto;
+	float:left;
+	position:absolute;
+	background: url(images/logo-referencia-openaire.png) no-repeat left bottom;
+	background-size: 300px;
+}	
+
+#logo {
+	width: 300px;
+	height: 130px;
+	top:10px;
+	margin: 0 auto;
+	float:left;
+	position:absolute;
+/* 	background: url(images/OpenAIREplus_logo.png) no-repeat left center; */
+}
+
+#logo h1, #logo p {
+	margin: 0px;
+	line-height: normal;
+	text-transform: none;
+	font-weight: normal;
+	color: #FFFFFF;
+}
+
+#logo p {
+	text-transform: lowercase;
+	font-size: 10px;
+}
+
+#logo h1 {
+	padding-top: 54px;
+	font-size: 34px;
+}
+
+#logo a {
+	text-decoration: none;
+	color: #FFFFFF;
+}
+
+/* Content */
+
+div#content {
+	width: auto;
+	min-height:300px;
+}
+div#content {
+	margin: 0px 0px 0px 0px;
+	float: left;
+	width: 658px;
+	padding-top: 10px;
+	padding-right: 30px;
+}
+
+.showright div#content {
+	margin: 0px 210px 0px 0px;  
+}
+
+
+/* Main */
+
+div#main {
+	/*background: url(images/img07.jpg) repeat-x left bottom;*/
+	width: auto!important;	 
+	min-height:300px;
+}
+ 
+div#main {
+	margin: 0px 0px 0px 0px;
+	padding: 0px 0px 0px 0px;
+}
+#main_container {
+	padding:0px 10px 0px 10px;
+}
+
+.left div#main {
+	margin: 0px 0px 0px 220px;  
+}
+.right div#main {
+	margin: 0px 240px 0px 0px;  
+}
+div#mainmiddle {
+	margin: 0px 0px 15px 0px;
+}
+div#middle {
+	margin: 0px 0px 0px 0px;
+	/*background: #fafafa url(images/middle_bg_t.png) 0 0 repeat-x;*/
+}
+
+div.middle-b {
+	padding: 15px 15px 15px 15px;
+	/*background: url(images/middle_bg_b.png) 0 100% repeat-x;	*/
+
+}
+
+div#middle .background {
+	min-height: 200px; 
+}
+.left div#middle .background {
+	background: url(images/left_bg_l.png) 220px 0 repeat-y;
+}
+/* Left */
+div#left {
+	width: 220px;
+}
+.left div#middle div#left {
+	float: left;
+}
+#left_container {
+	padding:0px 10px 0px 10px;
+}
+#left_container p, #left_container li, #left p, #left li{
+	text-align:left;
+	font-size:12px;
+}
+
+/* Post */
+
+.post {
+	/*background: url(images/img07.jpg) repeat-x left bottom;*/
+	padding-bottom: 25px;
+	padding-top: 5px;
+	margin: 15px 10px 0px 0px;
+	/*height: 180px;*/
+	position: relative;
+}
+
+.postvertical {
+	background: url(images/img07.jpg) repeat-x left bottom;
+	margin-bottom: 25px;
+	margin-top: 20px;
+	margin-right: 120px;
+	margin-left: 30px;
+	float: left;
+	width: 277px;
+}
+
+
+
+.post .title {
+	height: 30px;
+	color: #0F2B5B;
+}
+
+.post .title a {
+	text-decoration: none;
+	color: #585D60;
+}
+
+.post .date {
+}
+
+.post .meta {
+	margin-top: -10px;
+	padding: 2px 30px 2px 16px;
+	background: url(images/help.png) no-repeat left 8px;
+	font-weight: normal;
+	font-size: 10px;
+	color: #66665E;
+}
+
+.post .meta span {
+	display: block;
+	margin-top: -10px;
+}
+
+.post .meta a { 
+	padding-left: 3px;
+	text-decoration: none;
+	color: MediumBlue;
+}
+
+.post .entry {
+	padding: 10px 0;
+}
+
+.post .links {
+	margin: 0 250px 0 0;
+	padding: 0 0 0 0px;
+}
+
+.post .links .comments {
+}
+
+.post .links .permalink {
+	padding-left: 17px;
+}
+
+/* Sid */
+
+#sid {
+	float: left;
+	width: 177px;
+	padding-right: 22px;
+	font-size: 11px;
+	color: #585D60;
+}
+
+#sid ul {
+	margin: 0;
+	padding: 0;
+	list-style: none;
+	line-height: normal;
+}
+
+#sid li {
+	margin-bottom: 30px;
+	padding: 0 0 10px 0px;
+}
+
+#sid li ul {
+}
+
+#sid li li {
+	margin: 0;
+	padding: 7px 10px 10px 7px;
+	background: url(images/img07.jpg) repeat-x left bottom;
+}
+
+#sid p {
+	margin: 0;
+	padding: 0px 10px;
+}
+
+#sid h2 {
+	height: 26px;
+	margin: 0 0 10px 0px;
+	padding: 12px 0 2px 7px;
+	font-size: 18px;
+	font-weight: normal;
+	color: #464F54;
+}
+
+
+#sid p {
+	line-height: 200%;
+}
+#sid a {
+	text-align: left;
+	text-decoration: none;
+	font-weight: normal;
+	color: #585D60;
+}
+
+/* Calendar */
+
+#calendar {
+}
+
+#calendar caption {
+	padding-bottom: 5px;
+	font-weight: bold;
+}
+
+#calendar table {
+	width: 100%;
+	border-collapse: collapse;
+	border-bottom: 1px solid #24130F;
+	border-left: 1px solid #24130F;
+	border-right: 1px solid #24130F;
+}
+
+#calendar thead th {
+	padding: 5px 0;
+	text-align: center;
+	border-top: 1px solid #24130F;
+	border-left: 1px solid #24130F;
+	background: #24130F;
+}
+
+#calendar tbody td {
+	padding: 5px 0;
+	text-align: center;
+	border-top: 1px solid #24130F;
+	border-left: 1px solid #24130F;
+	border-bottom: 1px solid #24130F;
+}
+
+#calendar tfoot td {
+	padding: 5px;
+	border-left: 1px solid #24130F;
+	border-bottom: 1px solid #24130F;
+}
+
+#calendar tfoot #next {
+	border-top: 1px solid #24130F;
+	text-align: right;
+}
+
+#calendar tfoot #prev {
+	border-top: 1px solid #24130F;
+}
+
+#calendar .pad {
+	border-bottom: 1px solid #24130F;
+}
+
+#calendar #today {
+	background: #24130F;
+}
+
+/* Footer */
+
+#footer {
+	padding-top:10px;
+	clear: both;  
+	height: 62px;
+	background:#3440B5;
+	color:#ffffff;
+	border-top:1px solid #DADADA;
+
+	overflow: hidden;
+}
+
+#footer-bgcontent {
+	height: 62px;
+	padding: 10px;
+	background-attachment: scroll;
+    background-image: url("images/EC_logo_blue_multi_horizontal.png");
+    background-position: 95% 10%;
+    background-repeat: no-repeat;
+}
+
+#footer p {
+	font-size: 12px; font-family: "OpenSansLight"; 
+	margin: 0;
+	text-align: center;
+}
+
+#footer a {
+	color: #E5FFC4;
+}
+
+/* Table */
+
+#gradient-style
+{
+	font-size:100%;
+	text-align: left;
+	border-collapse: collapse;
+}
+#gradient-style th
+{
+	font-size: 110%;
+	font-weight: normal;
+	padding: 3px;
+	background: #F0F0F0;
+	border-top: 2px #CCCCCC solid;
+	border-bottom: 2px #CCCCCC solid;
+	color: #0F2B5B;
+}
+#gradient-style td
+{
+	padding:0px 3px;
+	border-bottom: 1px solid #fff;
+	color: #669;
+	border-top: 1px solid #fff;
+	background: #F0F0F0;
+}
+
+#gradient-style tfoot tr td
+{
+	background: #e8edff;
+	font-size: normal;
+	color: #99c;
+}
+#gradient-style tbody tr:hover td
+{
+	background: #0F2B5B;
+	color: #FFFFFF!important;
+}
+
+#gradient-style tbody tr:hover td a
+{
+	color: #fff!important;
+	text-decoration:underline;
+}
+
+.errordiv {
+	background-color:#FFFAE6;
+	padding: 5px 10px 5px 10px;
+	border-top: 1px dotted #AAB4BE;
+	border-bottom: 1px dotted #AAB4BE;
+}
+.errordiv:hover {
+}
+/* expand - colapse fields */
+
+.optiontable_container {
+	position:relative;
+	z-index:100;
+	min-width: 400px;
+}
+
+.optiontable_ttl {
+	line-height: 1em;
+	display:block;
+	margin-top: 0;
+	margin-bottom: 0;
+	padding-top: 0;
+	padding-bottom: 0;
+	padding-left: 10px;
+	padding-right: 10px;
+	border-color: #aeadad;
+	border-style: solid;
+	border-width:0 1px 1px;
+}
+
+.optiontable_content {
+	display:block;
+	padding-top: 5px;
+	padding-bottom: 5px;
+	padding-left: 2px;
+	padding-right: 2px;
+	border-color: #aeadad;
+	border-style: solid;
+	border-width:0 1px;
+}
+.contentR {
+	border-left: #aeadad solid 1px;
+	border-right: #aeadad solid 1px;
+}
+.usage {
+	border-left: #aeadad solid 1px;
+	border-right: #aeadad solid 1px;
+}
+
+.optiontable_content2 {
+	overflow:auto;
+	height: auto;/*30em;*/
+}
+
+.floatleft {
+	float: left;
+	padding-right: 10px;
+}
+
+
+a.help {
+    -moz-background-clip: border;
+    -moz-background-origin: padding;
+    -moz-background-size: auto auto;
+    background-attachment: scroll;
+    background-color: transparent;
+    background-image: url("images/help2.png");
+    background-position: 0 0;
+    background-repeat: no-repeat;
+    padding-left: 20px;
+}
+a.external {
+    -moz-background-clip: border;
+    -moz-background-origin: padding;
+    -moz-background-size: auto auto;
+    background-attachment: scroll;
+    background-color: transparent;
+    background-image: url("images/icon_external.png");
+    background-position: 0 40%;
+    background-repeat: no-repeat;
+    padding-left: 17px;
+}
+
+a.toplink {
+    background-attachment: scroll;
+    background-color: transparent;
+    background-image: url("images/footer_anchor.png");
+    background-position: bottom right;
+    background-repeat: no-repeat;
+    font-size: 12px;
+	width: 30px;
+	height: 5px;
+	display: block;
+	text-decoration: none;
+}
+
+a.download {
+    padding-left: 17px;
+    background: url(images/icon_download.png) 0 40% no-repeat;
+}
+
+.cmenu {
+	font-size: 12px;
+	margin : 10px 0px;
+	padding : 0px 10px 0px 0px;
+}
+
+a.cmenulink {
+	color: #0F2B5B;
+	text-transform: uppercase;
+	text-decoration: none;
+}
+
+a.selectlink {
+	text-decoration: none;
+}
+
+.nest {
+	padding-left:20px;
+	display: block;
+}
+
+/*
+ * Clearing & Floating
+ */
+ 
+.clearfix:after {
+	content: "."; 
+	display: block; 
+	height: 0;  
+	clear: both; 
+	visibility: hidden;
+}	
+ 
+.clearfix { display: block; }
+
+.floatbox { overflow:hidden; }
+
+.float-left { float: left; overflow: hidden; }
+.float-right { float: right; overflow: hidden; }
+
+.width15 { width: 14.999%; }
+.width18 { width: 18.333%; }
+.width20 { width: 19.999%; }
+.width23 { width: 22.999%; }
+.width25 { width: 24.999%; }
+.width33 { width: 33.333%; }
+.width35 { width: 34.999%; }
+.width40 { width: 39.999%; }
+.width45 { width: 44.999%; }
+.width50 { width: 49.999%; }
+.width54 { width: 53.999%; }
+.width65 { width: 64.999%; }
+.width75 { width: 74.999%; }
+.width100 { width: 100%; }
+
+.separator {
+	/*padding-right: 25px;*/
+	background: url(images/module_separator_m.png) 100% 0 repeat-y;
+}
+
+/* ajax request */
+#log_res {
+	overflow: auto;
+}
+ 
+#log_res.ajax-loading {
+	padding: 20px 0;
+	background: url(images/spinner.gif) no-repeat;
+}
+
+.button-default,
+.button-primary,
+form.style button,
+form.style input[type='button'],
+form.style input[type='submit'] { 
+	padding: 8px 14px;
+	margin-top: 5px;
+	margin-bottom: 5px;
+	border-radius: 2px; 
+	border: none;
+	box-shadow: inset 0 -1px 0 rgba(0,0,0,0.15);
+}
+
+/* Default */
+.button-default,
+form.style button,
+form.style input[type='button'],
+form.style input[type='submit'] {
+	background-color: #f5f5f5;
+	background-image: -o-linear-gradient(rgba(240,240,240,0), #dbdbdb);
+	background-image: -webkit-linear-gradient(rgba(240,240,240,0), #dbdbdb);
+	background-image: -moz-linear-gradient(rgba(240,240,240,0), #dbdbdb);
+	background-image: linear-gradient(rgba(240,240,240,0), #dbdbdb);
+	text-shadow: 0 1px 0 #fff;
+	text-decoration: none;
+	display: inherit;
+	text-align: center;
+	text-shadow: 0 1px 0 rgba(255,255,255,0.5);
+	color: #878787;
+}
+
+.button-default:hover,
+form.style button:hover,
+form.style input[type='button']:hover,
+form.style input[type='submit']:hover {
+	background-color: #dbdbdb;
+	box-shadow: inset 0 1px 5px rgba(0,0,0,0.1),
+				inset 0 0 1px rgba(0,0,0,0.1);
+}
+
+.button-default:active,
+form.style button:active,
+form.style input[type='button']:active,
+form.style input[type='submit']:active {
+	color: #737373;
+	box-shadow: inset 0 1px 5px rgba(0,0,0,0.1),
+				inset 0 0 1px rgba(0,0,0,0.1);
+}
+
+/* Primary */
+.button-primary {
+	color: #fff;
+	text-shadow: 0 -1px 0 rgba(0,0,0,0.3);
+}
+
+.button-primary:hover {
+	box-shadow: inset 0 1px 5px rgba(0,0,0,0.3),
+				inset 0 0 1px rgba(0,0,0,0.3);
+	color: #fff;
+}
+
+.button-primary:active {
+	box-shadow: inset 0 1px 8px rgba(0,0,0,0.4),
+				inset 0 0 1px rgba(0,0,0,0.3);
+	text-shadow: 0 0 5px #fff;
+}
+.wrapword{
+white-space: -moz-pre-wrap !important;  /* Mozilla, since 1999 */
+white-space: -pre-wrap;      /* Opera 4-6 */
+white-space: -o-pre-wrap;    /* Opera 7 */
+white-space: pre-wrap;       /* css-3 */
+word-wrap: break-word;       /* Internet Explorer 5.5+ */
+word-break: break-all;
+white-space: normal;
+}
+
+/* Zebra List and Table */
+table.zebra th, table.zebra td { padding: 5px; }
+table.zebra th { color:#3440B5 ;font-size: 14px; font-weight: normal; text-align: left; }
+table { border-collapse: collapse; border-spacing: 0; }
+table.zebra tbody, table.zebra tfoot { font-size: 12px; font-family: "OpenSansLight"; }
+
+table.zebra tbody td { border-bottom: 1px solid #ddd; word-wrap:break-word; }
+table.zebra tbody tr:first-child td { border-top: 1px solid #ddd; }
+
+table.zebra tbody tr.odd { background: url(images/zebra_list.png) 0 0 repeat; }
+table.zebra tbody tr:nth-of-type(odd) { background: url(images/zebra_list.png) 0 0 repeat;}
+
+table.zebra caption { color: #999; }
+table.zebra tbody tr:hover td { background: #E7E7E7; }
+
+/* Zebra List and Table */
+table.zebra1 th, table.zebra td { padding: 5px; }
+table.zebra1 th { font-size: 14px; font-weight: normal; text-align: left; }
+table { border-collapse: collapse; border-spacing: 0; }
+table.zebra1 tbody, table.zebra tfoot { font-size: 12px; font-family: "OpenSansLight"; }
+
+table.zebra1 tbody td { border-bottom: 0px solid #ddd; word-wrap:break-word; }
+table.zebra1 tbody tr:first-child td { border-top: 1px solid #ddd; }
+
+table.zebra1 tbody tr th{ color:black; }
+table.zebra1 tbody tr:first-child td { border-top: 0px solid #ddd; }
+
+table.zebra1 tbody th.numb {  background: #2D72D6; border: none; color: white;}
+table.zebra1 tbody td.numb {  background: #00B5F0; border: none; padding-left: 10px; color: white;}
+table.zebra1 tbody td.cb {  background: #dddddd; border: none; padding-left: 7px; color: white;}
+
+table.zebra1 caption { color: #999; }
+/* table.zebra1 tbody tr:hover  { background: #E7E7E7; } */
+
+
+/*----- Tabs -----*/
+.tabs {
+    width:100%;
+    display:inline-block;
+}
+ 
+    /*----- Tab Links -----*/
+    /* Clearfix */
+    .tab-links:after {
+        display:block;
+        clear:both;
+        content:'';
+    }
+ 
+    .tab-links li {
+        margin:0px 5px;
+        float:left;
+        list-style:none;
+        margin-bottom: -12px;
+    }
+    
+        .tab-links a {
+            padding:9px 15px;
+            display:inline-block;
+            border-radius:3px 3px 0px 0px;
+/*             background:#7FB5DA; */
+            background:#2D72D6;
+            text-decoration:none;
+			font-size: 15px;
+            font-weight:normal;;
+/*             color:#4c4c4c; */
+			color: #3440B5;
+            color:white;
+            transition:all linear 0.15s;
+/*             font-family: "YanoneKaffeesatzLight"; */
+/*             padding: 0 12px; */
+/* outline: 0; */
+/* position: relative; */
+/* white-space: nowrap; */
+
+        }
+ 
+        .tab-links a:hover {
+            background:#a7cce5;
+            text-decoration:none;
+        }
+
+    li.active a, li.active a:hover {
+        background:#F3F3F3;
+        color:#2D72D6;
+    }
+ 
+    /*----- Content of Tabs -----*/
+    .tab-content {
+        padding:10px;
+        border-radius:3px;
+        box-shadow:-1px 1px 1px rgba(0,0,0,0.15);
+        background:#F3F3F3;
+    }
+ 
+        .tab {
+            display:none;
+        }
+ 
+        .tab.active {
+            display:block;
+        }
\ No newline at end of file
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/editUser.jsp
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/editUser.jsp	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/editUser.jsp	(revision 47450)
@@ -0,0 +1,50 @@
+<%@ page contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<%@ taglib prefix="s" uri="/struts-tags"%>
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title><s:text name="editUser.title"/></title>
+<link href="jsps/favicon.ico" rel="shortcut icon" type="image/x-icon" />
+<link href="jsps/style.css" rel="stylesheet" type="text/css" media="screen" />
+</head>
+<body>
+<div id="wrapper">
+	<jsp:include page="menu.jsp"/>
+	<div id="page">
+        <div id="page-bgtop">
+            <div id="middle">
+                    <div class="middle-b">
+                        <div class="background">
+                            <div id="main">
+                                <div id="main_container" class="clearfix">
+                                    <div id="mainmiddle" class="floatbox">
+                                        <h1><s:text name="editUser.title"/></h1>
+                                        
+                                        <%--<p class="meta"><a href='<s:url value="/jsps/help.jsp#addRule"/>' target="_blank"><s:text name="help"/></a></p>--%>
+                                        <div class="entry">
+                                            <s:form action="editUser">
+                                                <div class="field"><s:textfield name="user.username" key="registration.username" readonly="true" requiredLabel="true"/></div>
+                                                <div class="field"><s:textfield name="user.email" key="registration.email" readonly="true" requiredLabel="true"/></div>
+                                            	<div class="field"><s:textfield name="user.firstname" key="registration.firstName" requiredLabel="true"/></div>
+                                                <div class="field"><s:textfield name="user.lastname" key="registration.lastName" requiredLabel="true"/></div>
+                                                <div class="field"><s:textfield name="user.institution" key="registration.institution"/></div>
+                                                <div class="field"><tr><td colspan="2"><hr class="dotted"/></td></tr></div>
+                                                <div class=" field float-left"><s:submit value="Update"/></div>
+                                            </s:form>
+                                        </div>
+                                    </div>
+                                </div>
+                            </div>
+                        </div>
+                    </div>
+                </div>
+        </div>
+        <!-- NMI This needs to be the same in all pages and the text is some properties file -->
+        <div id="footer"> 
+			<jsp:include page="footer.jsp"/>
+		</div>
+	</div>
+	</div>
+</body>
+</html>
\ No newline at end of file
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/images/external_link.gif
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/images/external_link.gif
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/images/external_link.gif	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/images/external_link.gif	(revision 47450)

Property changes on: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/images/external_link.gif
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/images/logo_openaire.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/images/logo_openaire.png
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/images/logo_openaire.png	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/images/logo_openaire.png	(revision 47450)

Property changes on: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/images/logo_openaire.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/chooseRuleSetForDeletion.jsp
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/chooseRuleSetForDeletion.jsp	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/chooseRuleSetForDeletion.jsp	(revision 47450)
@@ -0,0 +1,49 @@
+<%@ page contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<%@ taglib prefix="s" uri="/struts-tags"%>
+<html>
+<head>
+<link href="jsps/favicon.ico" rel="shortcut icon" type="image/x-icon" />
+<link href="jsps/style.css" rel="stylesheet" type="text/css" media="screen" />
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title><s:text name="deleteRuleSet.title"/></title>
+</head>
+<body class="left">
+<div id="wrapper">
+	<jsp:include page="menu.jsp"/>
+	<div id="page">
+	<div id="page-bgtop">
+	<div id="middle">
+            <div class="middle-b">
+                <div class="background">
+			 <div id="left">
+                              <div id="left_container" >
+                                   <h2 class="helpHdr">Info</h2>
+                                   <s:text name="help.admin"/>
+                              </div>
+                         </div>
+                        <div id="main">
+                        <div id="main_container" class="clearfix">
+			<div id="content">
+				<h2 class="title"><s:text name="deleteRuleSet.title"/></h2>
+                                <div class="entry">
+                                        <s:form action="deleteRuleSet">
+                                                <s:select name="setId" list="sets" listValue="name" listKey="id" key="chooseRuleSet.label"/>
+                                                <s:submit cssClass="button-default"/>
+                                        </s:form>
+                                </div>
+			</div>
+			</div>
+			</div>
+		</div>
+	</div>
+	</div>
+	</div>
+
+    <div id="footer">
+                <jsp:include page="footer.jsp"/>
+        </div>
+</div>
+</div>
+</body>
+</html>
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/images/OpenAIREplus_logo.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/images/OpenAIREplus_logo.png
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/images/OpenAIREplus_logo.png	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/images/OpenAIREplus_logo.png	(revision 47450)

Property changes on: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/images/OpenAIREplus_logo.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/images/button_arrow_right.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/images/button_arrow_right.png
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/images/button_arrow_right.png	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/images/button_arrow_right.png	(revision 47450)

Property changes on: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/images/button_arrow_right.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/images/warning.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/images/warning.png
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/images/warning.png	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/images/warning.png	(revision 47450)

Property changes on: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/images/warning.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/images/error_24.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/images/error_24.png
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/images/error_24.png	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/images/error_24.png	(revision 47450)

Property changes on: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/images/error_24.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/images/box_warning.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/images/box_warning.png
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/images/box_warning.png	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/images/box_warning.png	(revision 47450)

Property changes on: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/images/box_warning.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/images/checkmark_24.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/images/checkmark_24.png
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/images/checkmark_24.png	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/images/checkmark_24.png	(revision 47450)

Property changes on: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/images/checkmark_24.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/images/help.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/images/help.png
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/images/help.png	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/images/help.png	(revision 47450)

Property changes on: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/images/help.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/images/box_hint.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/images/box_hint.png
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/images/box_hint.png	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/images/box_hint.png	(revision 47450)

Property changes on: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/images/box_hint.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/images/Line_Header.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/images/Line_Header.png
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/images/Line_Header.png	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/images/Line_Header.png	(revision 47450)

Property changes on: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/images/Line_Header.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/images/e-Infrastructure_capacities_tr.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/images/e-Infrastructure_capacities_tr.png
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/images/e-Infrastructure_capacities_tr.png	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/images/e-Infrastructure_capacities_tr.png	(revision 47450)

Property changes on: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/images/e-Infrastructure_capacities_tr.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/images/left_bg_l.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/images/left_bg_l.png
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/images/left_bg_l.png	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/images/left_bg_l.png	(revision 47450)

Property changes on: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/images/left_bg_l.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/images/info.jpg
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/images/info.jpg
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/images/info.jpg	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/images/info.jpg	(revision 47450)

Property changes on: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/images/info.jpg
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/images/box_tip.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/images/box_tip.png
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/images/box_tip.png	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/images/box_tip.png	(revision 47450)

Property changes on: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/images/box_tip.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/images/tick1.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/images/tick1.png
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/images/tick1.png	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/images/tick1.png	(revision 47450)

Property changes on: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/images/tick1.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/menu.jsp
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/menu.jsp	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/menu.jsp	(revision 47450)
@@ -0,0 +1,160 @@
+<%@ page contentType="text/html;charset=UTF-8" pageEncoding="UTF-8"%>
+<%@ taglib prefix="s" uri="/struts-tags"%>
+
+<link href="jsps/ddmenu.css" rel="stylesheet" type="text/css" media="screen" />
+<script src="jsps/js/ddmenu.js" type="text/javascript"></script>
+
+
+	<div id="header">
+	<div id="topmenu">
+		<ul>
+				<s:if test="%{#session.email == null}">
+					<li   style="float: right;">
+						<a href='<s:url action="go2login" />'><s:text name="menu.account.login" /></a>
+					</li>
+				</s:if>
+				
+				<s:else>
+					<li  style="float: right;">
+						<a href='<s:url action="logout" />'><s:text name="menu.account.logout" />(<s:property value="#session.email" />)</a>
+					</li>
+					<li  style="float: right;">
+						<a href='<s:url action="userDetails" />'><s:text name="menu.account.edit" /></a>
+					</li>
+				</s:else>
+		</ul>
+	</div>
+			<s:if test="%{deployEnvironment.trim().toLowerCase().equals(\"lareferencia\")}">
+				<div id="logoLareferencia"></div>
+			</s:if>
+			<s:else>
+				<div id="logo">
+					<a id="logo" href="https://www.openaire.eu">
+					<img src="jsps/images/openairepluslogo.png" alt="openairepluslogo" width="171" height="120">
+					</a>
+				</div>
+			</s:else>
+		<nav id="ddmenu">
+			<ul>
+				<li><a href='<s:url action="welcome" />'><s:text name="menu.home" /></a></li>
+				
+<%-- 						<s:if test="%{repoMode.trim().toLowerCase().equals(\"dnet\")}"> --%>
+				<li>
+					<s:text name="home.manageRules" />
+					<div>
+					<div class="column">
+						<s:if test="%{#session.isAdmin != null && #session.isAdmin.equals(\"true\")}">
+						
+							<a href='<s:url action="populateRuleCategories" />'>
+								<s:text name="home.manageRules.addRule" />
+							</a>
+							<a href='<s:url action="populateRuleListForEdit" />'>
+								<s:text name="home.manageRules.editRule" />
+							</a>
+							<a href='<s:url action="populateRuleListForClone" />'>
+								<s:text name="home.manageRules.cloneRule" />
+							</a>
+							<a href='<s:url action="populateRuleList" />'>
+								<s:text name="home.manageRules.deleteRule" />
+							</a>
+						</s:if>
+						<s:else>
+							<a href='<s:url action="populateRuleListForEdit" />'>
+								<s:text name="home.manageRules.viewRule" />
+							</a>
+						</s:else>
+					</div>
+					</div>					
+				</li>
+				
+				<li>
+					<s:text name="home.manageRulesets" />
+					<div>
+					<div class="column">
+						<s:if test="%{#session.isAdmin != null && #session.isAdmin.equals(\"true\")}">
+							<a href='<s:url action="getRulesForSet" />'>
+								<s:text name="home.manageRulesets.createRuleSet" />
+							</a>
+							<a href='<s:url action="getRuleSets" />'>
+								<s:text name="home.manageRulesets.editRuleSet" />
+							</a>
+							<a href='<s:url action="getRuleSetsForDeletion" />'>
+								<s:text name="home.manageRulesets.deleteRuleSet" />
+							</a>
+						</s:if>
+						<s:else>
+							<a href='<s:url action="getRuleSets" />'>
+								<s:text name="home.manageRulesets.viewRuleSet" />
+							</a>
+						</s:else>
+					</div>
+					</div>					
+				</li>
+				
+				
+				<li>
+					<s:text name="home.manageJobs" />
+					<div>
+					<div class="column">
+					  <s:if test="%{#session.isAdmin != null && #session.isAdmin.equals(\"true\")}">
+						<a href='<s:url action="deleteJobs" />'>
+							<s:text name="home.manageJobs.deleteJobs" />
+						</a>
+						
+							<s:if test="%{!deployEnvironment.trim().toLowerCase().equals(\"lareferencia\")}">
+							<a href='<s:url action="registrationsReport" />'>
+								<s:text name="home.manageJobs.sendReport" />
+							</a>
+							</s:if>
+					  </s:if>
+<%-- 					  		<s:if test="%{!deployEnvironment.trim().toLowerCase().equals(\"lareferencia\")}"> --%>
+<%-- 								<a href='<s:url action="getRuleSetsForDeletion" />'> --%>
+<%-- 									<s:text name="home.manageJobs.viewStats" /> --%>
+<!-- 								</a> -->
+<%-- 							</s:if> --%>
+					</div>
+					</div>					
+				</li>
+				
+				<s:if test="%{!deployEnvironment.trim().toLowerCase().equals(\"lareferencia\")}">
+					<s:if test="%{#session.isAdmin != null && #session.isAdmin.equals(\"true\")}">
+<!-- 						<li> -->
+<%-- 							<s:text name="home.manageUsers" /> --%>
+<!-- 							<div> -->
+<!-- 							<div class="column"> -->
+<%-- 								<a href='<s:url action="getRulesForSet" />'> --%>
+<%-- 									<s:text name="home.manageUsers.addUser" /> --%>
+<!-- 								</a> -->
+<%-- 								<a href='<s:url action="getRuleSets" />'> --%>
+<%-- 									<s:text name="home.manageUsers.editUser" /> --%>
+<!-- 								</a> -->
+<%-- 								<a href='<s:url action="getRuleSetsForDeletion" />'> --%>
+<%-- 									<s:text name="home.manageUsers.makeAdmin" /> --%>
+<!-- 								</a> -->
+<!-- 							</div> -->
+<!-- 							</div>					 -->
+<!-- 						</li> -->
+					</s:if>
+				</s:if>
+				<li>
+					<s:text name="menu.about" />
+					<div>
+					<div class="column">
+						<a href="http://www.openaire.eu//support/faq/repman" target="_blank">
+							<s:text name="menu.about.faq" />
+						</a>
+						<a href='<s:url action="help" />'>
+							<s:text name="menu.about.help" />
+						</a>
+						<a href='<s:url action="feedback" />'>
+							<s:text name="menu.about.feedback" />
+						</a>
+					</div>
+					</div>
+				</li>
+
+			</ul>
+			</nav>
+			
+			<div style="clear:both"></div>
+		</div>
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/images/box_info.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/images/box_info.png
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/images/box_info.png	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/images/box_info.png	(revision 47450)

Property changes on: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/images/box_info.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/images/exclamation-icon.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/images/exclamation-icon.png
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/images/exclamation-icon.png	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/images/exclamation-icon.png	(revision 47450)

Property changes on: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/images/exclamation-icon.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/images/footer_anchor.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/images/footer_anchor.png
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/images/footer_anchor.png	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/images/footer_anchor.png	(revision 47450)

Property changes on: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/images/footer_anchor.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/help.jsp
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/help.jsp	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/help.jsp	(revision 47450)
@@ -0,0 +1,43 @@
+<%@ page contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<%@ taglib prefix="s" uri="/struts-tags"%>
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title><s:text name="home.title"/></title>
+<link href="jsps/style.css" rel="stylesheet" type="text/css" media="screen" />
+
+ <link href="jsps/favicon.ico" rel="shortcut icon" type="image/x-icon" />
+</head>
+<body>
+<div id="wrapper">
+        <jsp:include page="menu.jsp"/>
+        <div id="page">
+        <div id="page-bgtop">
+                <div id="middle">
+            <div class="middle-b">
+                <div class="background">
+                                <div id="main">
+                        <div id="main_container" class="clearfix">
+                            <div id="mainmiddle" class="floatbox">
+                                    <h1><s:text name="instructions.welcome"/></h1>
+                                    <div class="entry">
+                                    	<s:text name="instructions.message"/>
+                                    </div>
+                             </div>
+                        </div>
+                    </div>
+                 </div>
+                        </div>
+                </div>
+                <div style="clear: both;">&nbsp;</div>
+        </div>
+    <!-- NMI This needs to be the same in all pages and the text is some properties file -->
+    <div id="footer">
+                <jsp:include page="footer.jsp"/>
+        </div>
+</div>
+</div>
+</body>
+</html>
+
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/images/number-1.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/images/number-1.png
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/images/number-1.png	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/images/number-1.png	(revision 47450)

Property changes on: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/images/number-1.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/images/middle_bg_t.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/images/middle_bg_t.png
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/images/middle_bg_t.png	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/images/middle_bg_t.png	(revision 47450)

Property changes on: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/images/middle_bg_t.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/images/info-left.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/images/info-left.png
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/images/info-left.png	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/images/info-left.png	(revision 47450)

Property changes on: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/images/info-left.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/images/list_disc.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/images/list_disc.png
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/images/list_disc.png	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/images/list_disc.png	(revision 47450)

Property changes on: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/images/list_disc.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/images/line_dotted.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/images/line_dotted.png
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/images/line_dotted.png	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/images/line_dotted.png	(revision 47450)

Property changes on: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/images/line_dotted.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/images/icon_download.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/images/icon_download.png
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/images/icon_download.png	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/images/icon_download.png	(revision 47450)

Property changes on: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/images/icon_download.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/images/icon_folder.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/images/icon_folder.png
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/images/icon_folder.png	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/images/icon_folder.png	(revision 47450)

Property changes on: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/images/icon_folder.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/fonts/DroidSans-webfont.ttf
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/fonts/DroidSans-webfont.ttf
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/fonts/DroidSans-webfont.ttf	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/fonts/DroidSans-webfont.ttf	(revision 47450)

Property changes on: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/fonts/DroidSans-webfont.ttf
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/images/icon_external.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/images/icon_external.png
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/images/icon_external.png	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/images/icon_external.png	(revision 47450)

Property changes on: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/images/icon_external.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/images/help1.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/images/help1.png
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/images/help1.png	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/images/help1.png	(revision 47450)

Property changes on: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/images/help1.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/images/module_separator_m.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/images/module_separator_m.png
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/images/module_separator_m.png	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/images/module_separator_m.png	(revision 47450)

Property changes on: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/images/module_separator_m.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/images/number-2.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/images/number-2.png
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/images/number-2.png	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/images/number-2.png	(revision 47450)

Property changes on: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/images/number-2.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/images/spinner.gif
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/images/spinner.gif
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/images/spinner.gif	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/images/spinner.gif	(revision 47450)

Property changes on: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/images/spinner.gif
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/images/page_bg.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/images/page_bg.png
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/images/page_bg.png	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/images/page_bg.png	(revision 47450)

Property changes on: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/images/page_bg.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/images/img03.gif
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/images/img03.gif
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/images/img03.gif	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/images/img03.gif	(revision 47450)

Property changes on: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/images/img03.gif
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/fonts/OpenSans-Light-webfont.ttf
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/fonts/OpenSans-Light-webfont.ttf
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/fonts/OpenSans-Light-webfont.ttf	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/fonts/OpenSans-Light-webfont.ttf	(revision 47450)

Property changes on: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/fonts/OpenSans-Light-webfont.ttf
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/registrationsReport.jsp
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/registrationsReport.jsp	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/registrationsReport.jsp	(revision 47450)
@@ -0,0 +1,74 @@
+<%@ page contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<%@ taglib prefix="s" uri="/struts-tags"%>
+<%@ taglib prefix="sj" uri="/struts-jquery-tags"%>
+<html>
+<head>
+<link href="jsps/style.css" rel="stylesheet" type="text/css" media="screen" />
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<!--<meta http-equiv="refresh" content="13" >-->
+<title><s:text name="manageJobs.sendReports.title"/></title>
+<link href="jsps/favicon.ico" rel="shortcut icon" type="image/x-icon" />
+<sj:head />
+</head>
+<body class="left">
+
+<div id="wrapper">
+	<jsp:include page="menu.jsp"/>
+	<div id="page">
+		<div id="page-bgtop">
+			<div id="middle">
+                <div class="middle-b">
+                    <div class="background">
+                    	<div id="left">
+                        	<div id="left_container">
+	                             <h2 class="helpHdr">Info</h2>
+                                 <s:text name="help.browsevalidations"/>
+                            </div>
+                        </div>
+                        <div id="main">
+                            <div id="main_container" class="clearfix">
+                                <div id="mainmiddle" class="floatbox">
+                                    <h1 class="title"><s:text name="manageJobs.sendReports.title"/></h1>
+<%--                                     <s:if test="%{enableCuration}"> --%>
+	                                    <s:form action="sendRegistrationsReport">
+	                                   		 <s:select name="month" 
+ 	                                    		key="manageJobs.sendReports.selectMonth"
+  	                          					list="#{'January-01':'January','February-02':'February','March-03':'March',
+  	                          					'April-04':'April','May-05':'May','June-06':'June',
+  	                          					'July-07':'July','August-08':'August','September-09':'September',
+  	                          					'October-10':'October','November-11':'November','December-12':'December'}"
+                                             	required="true"
+ 	  					                    />
+ 	  					                    <s:select name="year" 
+ 	                                    		key="manageJobs.sendReports.selectYear"
+  	                          					list="#{'2013':'2013','2014':'2014','2015':'2015'}"
+                                             	required="true"
+ 	  					                    />
+<%--      										<sj:datepicker name="manageJobs.sendReports.selectDateFrom" changeMonth="true" changeYear="true" displayFormat="yy-mm-dd"/> --%>
+<%--      										<sj:datepicker name="manageJobs.sendReports.selectMonthDateTo" changeMonth="true" changeYear="true" displayFormat="yy-mm-dd"/> --%>
+     										
+<%-- 	                                    	<s:select name="mode"  --%>
+<%-- 	                                    		key="manageJobs.deleteJobs.whatToDelete" --%>
+<%--  	                          					list="#{'all':'All jobs', 'compTest_only':'Compatibility Tests only', 'uncompleted_only':'Uncompleted jobs'}" --%>
+<%--                                             	required="true" --%>
+<%-- 	  					                    /> --%>
+	                                    	<s:submit cssClass="button-default"/>
+	                                    </s:form>
+<%-- 	                               </s:if> --%>
+                                    
+								</div>
+                            </div>
+                        </div>
+                    </div>
+                </div>
+            </div>
+		</div>
+		<!-- NMI This needs to be the same in all pages and the text is some properties file -->
+        <div id="footer"> 
+           <jsp:include page="footer.jsp"/>
+        </div>
+	</div>
+</div>
+</body>
+</html>
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/fonts/maven_pro_regular-webfont.eot
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/fonts/maven_pro_regular-webfont.eot
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/fonts/maven_pro_regular-webfont.eot	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/fonts/maven_pro_regular-webfont.eot	(revision 47450)

Property changes on: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/fonts/maven_pro_regular-webfont.eot
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/signin.jsp
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/signin.jsp	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/signin.jsp	(revision 47450)
@@ -0,0 +1,76 @@
+<%@ page contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<%@ taglib prefix="s" uri="/struts-tags"%>
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title><s:text name="login.title"/></title>
+<link href="jsps/favicon.ico" rel="shortcut icon" type="image/x-icon" />
+<link href="jsps/style.css" rel="stylesheet" type="text/css" media="screen" />
+</head>
+<body>
+<div id="wrapper">
+	<jsp:include page="menu.jsp"/>
+	<div id="page">
+		<div id="page-bgtop">
+			<div id="middle">
+                <div class="middle-b">
+                    <div class="background">
+                        <div class="main">
+                        <div id="main_container" class="clearfix">
+                                <div id="mainmiddle" class="floatbox">
+                                    <s:actionerror/>
+                                    <div class="post">
+                                        <h2 class="title"><s:text name="login.title"/></h2>
+                                        <s:text name="login.description"/>
+                                        <%--<p class="meta"><a href='<s:url value="/jsps/help.jsp#login"/>' target="_blank"><s:text name="help"/></a></p>--%>
+                                        <div class="entry">
+                                            <s:form action="Login">
+                                                <s:if test="%{repoMode.trim().toLowerCase().equals(\"dnet\")}">
+                                                    <s:textfield name="email" key="registration.username"/>
+                                                </s:if>
+                                                <s:else>
+                                                    <s:textfield name="email" key="registration.email"/>
+                                                </s:else>
+                                                <s:password name="password" key="registration.password"/>
+                                                <%-- <s:checkbox name="rememberme" key="registration.rememberme"/> --%>
+                                                <s:submit/>
+                                            </s:form>
+                                            <a href='<s:url value="forgotPassword" />'><s:text name="login.forgotpassword"/></a>
+                                        </div>
+                                    </div>
+                                    <div class="post">
+                                        <h2 class="title"><s:text name="registration.title"/></h2>
+                                        <s:text name="registration.description"/>
+                                        <%--<p class="meta"><a href='<s:url value="/jsps/help.jsp#registration"/>' target="_blank"><s:text name="help"/></a></p>--%>
+                                        <div class="entry">
+                                            <%-- <s:if test="%{@gr.uoa.di.validatorweb.configs.Constants@isModeLdap()}">
+                                                <s:text name="registration.ldap.message"/>
+                                            </s:if> --%>
+                                            <s:form action="Register">
+                                                <s:if test="%{repoMode.trim().toLowerCase().equals(\"dnet\")}">
+                                                    <s:textfield name="username" key="registration.username"/>
+                                                    <s:textfield name="firstName" key="registration.firstName"/>
+                                                    <s:textfield name="lastName" key="registration.lastName"/>
+                                                </s:if>
+                                                <s:textfield name="email" key="registration.email"/>
+                                                <s:password name="password" key="registration.password"/>
+                                                <s:password name="repassword" key="registration.repassword"/>
+                                                <s:submit/>
+                                            </s:form>
+                                        </div>
+                                    </div>
+								</div>
+                            </div>
+                        </div>
+                    </div>
+                </div>
+            </div>
+		</div>
+		  <div id="footer"> 
+           <jsp:include page="footer.jsp"/>
+        </div>
+	</div>
+</div>
+</body>
+</html>
\ No newline at end of file
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/images/list_checkbox.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/images/list_checkbox.png
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/images/list_checkbox.png	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/images/list_checkbox.png	(revision 47450)

Property changes on: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/images/list_checkbox.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/images/icon_file.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/images/icon_file.png
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/images/icon_file.png	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/images/icon_file.png	(revision 47450)

Property changes on: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/images/icon_file.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/images/middle_bg_b.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/images/middle_bg_b.png
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/images/middle_bg_b.png	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/images/middle_bg_b.png	(revision 47450)

Property changes on: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/images/middle_bg_b.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/images/toolbar_m.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/images/toolbar_m.png
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/images/toolbar_m.png	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/images/toolbar_m.png	(revision 47450)

Property changes on: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/images/toolbar_m.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/images/top_icon.gif
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/images/top_icon.gif
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/images/top_icon.gif	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/images/top_icon.gif	(revision 47450)

Property changes on: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/images/top_icon.gif
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/images/img04.jpg
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/images/img04.jpg
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/images/img04.jpg	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/images/img04.jpg	(revision 47450)

Property changes on: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/images/img04.jpg
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/fonts/OpenSans-Light-webfont.eot
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/fonts/OpenSans-Light-webfont.eot
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/fonts/OpenSans-Light-webfont.eot	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/fonts/OpenSans-Light-webfont.eot	(revision 47450)

Property changes on: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/fonts/OpenSans-Light-webfont.eot
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/images/img01.jpg
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/images/img01.jpg
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/images/img01.jpg	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/images/img01.jpg	(revision 47450)

Property changes on: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/images/img01.jpg
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/fonts/DroidSans-webfont.woff
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/fonts/DroidSans-webfont.woff
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/fonts/DroidSans-webfont.woff	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/fonts/DroidSans-webfont.woff	(revision 47450)

Property changes on: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/fonts/DroidSans-webfont.woff
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/images/menu_level2_parent.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/images/menu_level2_parent.png
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/images/menu_level2_parent.png	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/images/menu_level2_parent.png	(revision 47450)

Property changes on: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/images/menu_level2_parent.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/fonts/OpenSans-Light-webfont.woff
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/fonts/OpenSans-Light-webfont.woff
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/fonts/OpenSans-Light-webfont.woff	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/fonts/OpenSans-Light-webfont.woff	(revision 47450)

Property changes on: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/fonts/OpenSans-Light-webfont.woff
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/fonts/YanoneKaffeesatz-Light-webfont.woff
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/fonts/YanoneKaffeesatz-Light-webfont.woff
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/fonts/YanoneKaffeesatz-Light-webfont.woff	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/fonts/YanoneKaffeesatz-Light-webfont.woff	(revision 47450)

Property changes on: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/fonts/YanoneKaffeesatz-Light-webfont.woff
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/login.jsp
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/login.jsp	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/login.jsp	(revision 47450)
@@ -0,0 +1,86 @@
+<%@ page contentType="text/html; charset=UTF-8"
+    pageEncoding="UTF-8"%>
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<%@ taglib prefix="s" uri="/struts-tags"%>
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title><s:text name="login.title"/></title>
+<link href="jsps/favicon.ico" rel="shortcut icon" type="image/x-icon" />
+<link href="jsps/style.css" rel="stylesheet" type="text/css" media="screen" />
+</head>
+<body>
+<div id="wrapper">
+	<jsp:include page="menu.jsp"/>
+	<div id="page">
+        <div id="page-bgtop">
+             <div id="middle">
+                <div class="middle-b">
+                    <div class="background">
+                        <div id="main">
+                            <div id="main_container" class="clearfix">
+                                <div id="mainmiddle" class="floatbox">
+                                <h1>Sign In </h1>
+	                                <div class="notes">
+    		                            <s:text name="login.overview"/>
+   		                            </div>
+                                    <s:actionerror/>
+                                    <div class="post width45 separator float-left">
+                                        <h2><s:text name="login.title"/></h2>
+                                        <s:text name="login.description"/>
+                                        <%--<p class="meta"><a href='<s:url value="/jsps/help.jsp#login"/>' target="_blank"><s:text name="help"/></a></p>--%>
+                                        <div class="entry">
+                                            <s:form action="Login">
+                                            	
+                                            	<s:hidden name="url" value="%{#request['javax.servlet.forward.servlet_path']}"/>
+            									<s:hidden name="params" value="%{#request['javax.servlet.forward.query_string']}"/>  
+    
+                                                <s:textfield name="email_username" key="registration.username_email"/>
+                                                <s:password name="password_login" key="registration.password"/>
+
+                                                <%-- <s:checkbox name="rememberme" key="registration.rememberme"/> --%>
+                                                <s:submit  cssClass="button-default" value="Sign In"/>
+                                            </s:form>
+                                            <a class="smallfont" href='<s:url action="forgotPassword"/>'><s:text name="login.forgotpassword"/></a>
+                                        </div>
+                                    </div>
+                                    
+                                    <div class="post width45 float-left">
+                                        <h2><s:text name="menu.account.registration.title"/></h2>
+                                        <div class="entry">
+                                            <!-- NMI take the following out if everything works fine
+                                            <a href='<s:url action="go2registration" />'><s:text name="menu.account.registration" /></a>
+                                            -->
+                                        <s:text name="registration.description"/>
+                                        <%--<p class="meta"><a href='<s:url value="/jsps/help.jsp#registration"/>' target="_blank"><s:text name="help"/></a></p>--%>
+                                        
+                                            <%-- <s:if test="%{@gr.uoa.di.validatorweb.configs.Constants@isModeLdap()}">
+                                                <s:text name="registration.ldap.message"/>
+                                            </s:if> --%>
+                                            <s:form action="Register">
+                                                <s:textfield name="username" key="registration.username" requiredLabel="true"/>
+                                                <s:textfield name="firstName" key="registration.firstName" requiredLabel="true"/>
+                                                <s:textfield name="lastName" key="registration.lastName" requiredLabel="true"/>
+                                                <s:textfield name="email" key="registration.email" requiredLabel="true"/>
+                                                <s:textfield name="institution" key="registration.institution" />
+                                                <s:password name="password" key="registration.password" requiredLabel="true"/>
+                                                <s:password name="repassword" key="registration.repassword" requiredLabel="true"/>
+                                                <s:submit cssClass="button-default" value="Register"/>
+                                            </s:form>
+                                        </div>
+                                </div>
+                                 </div>
+                             </div>
+                         </div>
+                    </div>
+                </div>
+            </div>        
+        </div>
+        <!-- NMI This needs to be the same in all pages and the text is some properties file -->
+        <div id="footer"> 
+		<jsp:include page="footer.jsp"/>
+	</div>
+	</div>
+</div>
+</body>
+</html>
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/rules.jsp
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/rules.jsp	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/rules.jsp	(revision 47450)
@@ -0,0 +1,3 @@
+<%@ taglib prefix="s" uri="/struts-tags"%>
+
+<s:property value="#request['jsonization']" escape="false"/>
\ No newline at end of file
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/fonts/yanonekaffeesatz.css
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/fonts/yanonekaffeesatz.css	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/fonts/yanonekaffeesatz.css	(revision 47450)
@@ -0,0 +1,13 @@
+/* Copyright (C) YOOtheme GmbH, YOOtheme Proprietary Use License (http://www.yootheme.com/license) */
+
+@font-face {
+	font-family: 'YanoneKaffeesatzLight';
+	src: url('YanoneKaffeesatz-Light-webfont.eot');
+	src: url('YanoneKaffeesatz-Light-webfont.eot?#iefix') format('embedded-opentype'),
+		url('YanoneKaffeesatz-Light-webfont.woff') format('woff'),
+		url('YanoneKaffeesatz-Light-webfont.ttf') format('truetype'),
+		url('YanoneKaffeesatz-Light-webfont.svg#YanoneKaffeesatzLight') format('svg');
+	font-weight: normal;
+	font-style: normal;
+}
+
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/images/info.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/images/info.png
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/images/info.png	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/images/info.png	(revision 47450)

Property changes on: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/images/info.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/images/page_bg_img.jpg
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/images/page_bg_img.jpg
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/images/page_bg_img.jpg	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/images/page_bg_img.jpg	(revision 47450)

Property changes on: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/images/page_bg_img.jpg
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/images/img07.jpg
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/images/img07.jpg
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/images/img07.jpg	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/images/img07.jpg	(revision 47450)

Property changes on: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/images/img07.jpg
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/fonts/maven_pro_regular-webfont.ttf
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/fonts/maven_pro_regular-webfont.ttf
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/fonts/maven_pro_regular-webfont.ttf	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/fonts/maven_pro_regular-webfont.ttf	(revision 47450)

Property changes on: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/fonts/maven_pro_regular-webfont.ttf
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/images/img02.jpg
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/images/img02.jpg
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/images/img02.jpg	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/images/img02.jpg	(revision 47450)

Property changes on: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/images/img02.jpg
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/feedback.jsp
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/feedback.jsp	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/feedback.jsp	(revision 47450)
@@ -0,0 +1,45 @@
+<%@ page contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<%@ taglib prefix="s" uri="/struts-tags"%>
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<link href="jsps/style.css" rel="stylesheet" type="text/css" media="screen" />
+<title><s:text name="feedback.title"/></title>
+<link href="jsps/favicon.ico" rel="shortcut icon" type="image/x-icon" />
+</head>
+<body>
+<div id="wrapper">
+	<jsp:include page="menu.jsp"/>
+	<div id="page">
+		<div id="page-bgtop">
+			<div id="middle">
+                <div class="middle-b">
+                    <div class="background">
+                        <div class="main">
+                        <div id="main_container" class="clearfix">
+                                <div id="mainmiddle" class="floatbox">
+                                    <h2 class="title"><s:text name="feedback.title"/></h2>
+                                    <s:actionerror/>
+                                    <s:text name="feedback.loggedin"/>
+                                    <div class="entry">
+                                        <s:form action="sendFeedback">
+                                            <s:select name="reason" list="#{'validator form: feedback':'Feedback', 'validator form: bug':'Report a Bug', 'validator form: other':'Other'}" key="feedback.reason"/>
+                                            <s:textarea name="message" cols="50" rows="10" key="feedback.message"/>
+                                            <s:submit/>
+                                        </s:form>
+                                    </div>
+								</div>
+                            </div>
+                        </div>
+                    </div>
+                </div>
+            </div>
+		</div>
+		  <div id="footer"> 
+           <jsp:include page="footer.jsp"/>
+        </div>
+	</div>
+</div>
+</body>
+</html>
\ No newline at end of file
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/fonts/maven_pro_regular-webfont.woff
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/fonts/maven_pro_regular-webfont.woff
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/fonts/maven_pro_regular-webfont.woff	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/fonts/maven_pro_regular-webfont.woff	(revision 47450)

Property changes on: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/fonts/maven_pro_regular-webfont.woff
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/fonts/droidsans.css
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/fonts/droidsans.css	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/fonts/droidsans.css	(revision 47450)
@@ -0,0 +1,13 @@
+/* Copyright (C) YOOtheme GmbH, YOOtheme Proprietary Use License (http://www.yootheme.com/license) */
+
+@font-face {
+	font-family: 'DroidSansRegular';
+	src: url('DroidSans-webfont.eot');
+	src: url('DroidSans-webfont.eot?#iefix') format('embedded-opentype'),
+		 url('DroidSans-webfont.woff') format('woff'),
+		 url('DroidSans-webfont.ttf') format('truetype'),
+		 url('DroidSans-webfont.svg#DroidSansRegular') format('svg');
+	font-weight: normal;
+	font-style: normal;
+}
+
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/fonts/maven_pro_regular-webfont.svg
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/fonts/maven_pro_regular-webfont.svg	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/fonts/maven_pro_regular-webfont.svg	(revision 47450)
@@ -0,0 +1,245 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" >
+<svg xmlns="http://www.w3.org/2000/svg">
+<metadata>
+This is a custom SVG webfont generated by Font Squirrel.
+Copyright   : Copyright c 2011 by Vissol Ltd All rights reserved
+Designer    : Joe Prince
+Foundry     : Joe Prince
+</metadata>
+<defs>
+<font id="webfontOM8fITNz" horiz-adv-x="1529" >
+<font-face units-per-em="2048" ascent="1638" descent="-410" />
+<missing-glyph horiz-adv-x="692" />
+<glyph unicode=" "  horiz-adv-x="692" />
+<glyph unicode="&#x09;" horiz-adv-x="692" />
+<glyph unicode="&#xa0;" horiz-adv-x="692" />
+<glyph unicode="!" horiz-adv-x="761" d="M303 0v164h164v-164h-164zM311 1366h148l-15 -1022h-118z" />
+<glyph unicode="&#x22;" horiz-adv-x="780" d="M440 1384h170l-37 -411h-98zM203 973l-37 411h170l-35 -411h-98z" />
+<glyph unicode="#" horiz-adv-x="1210" d="M850 1071h125l-43 -242h147v-122h-168l-57 -326h166v-123h-186l-37 -219h-125l37 219h-271l-39 -219h-125l39 219h-168v123h189l55 326h-186v122h209l41 242h125l-41 -242h270zM729 381l57 326h-272l-55 -326h270z" />
+<glyph unicode="$" horiz-adv-x="1181" d="M1055 348q0 -156 -105.5 -250t-296.5 -110v-209h-110v205q-207 6 -377 96v160q158 -104 377 -109v520q-76 23 -117 37t-101.5 44t-92 63.5t-55 87t-23.5 121.5q0 143 95 249.5t294 126.5v209h110v-205q166 -8 314 -81v-152q-150 84 -314 86v-469q88 -29 147.5 -55.5 t124 -73.5t97.5 -120t33 -171zM301 1004q0 -78 61.5 -121t180.5 -80v428q-242 -34 -242 -227zM653 135q254 33 254 213q0 106 -65.5 165.5t-188.5 102.5v-481z" />
+<glyph unicode="%" horiz-adv-x="1777" d="M442 1360q123 0 209 -83t86 -294q0 -113 -26.5 -190.5t-71.5 -116.5t-93 -55.5t-104 -16.5q-57 0 -104 16.5t-93 55.5t-73 116.5t-27 190.5q0 111 27 189.5t73 116.5t93 54.5t104 16.5zM442 711q84 0 133.5 55t49.5 217t-49.5 216t-133.5 54q-86 0 -135 -54t-49 -216 t50 -217t134 -55zM1384 1366l-858 -1366h-131l858 1366h131zM1339 6q-57 0 -104 16.5t-93 55.5t-73 116.5t-27 190.5t27 190.5t73 116.5t93 55.5t104 16.5q55 0 103.5 -16.5t93.5 -55.5t71.5 -116.5t26.5 -190.5t-26.5 -190.5t-71.5 -116.5t-93.5 -55.5t-103.5 -16.5z M1339 657q-84 0 -134 -55t-50 -217t50 -217t134 -55t133.5 55t49.5 217t-49.5 217t-133.5 55z" />
+<glyph unicode="&#x26;" horiz-adv-x="1310" d="M1014 272l227 -272h-192l-125 152q-162 -168 -385 -168q-111 0 -198 38.5t-134 101t-71.5 127t-24.5 126.5q0 119 56 220t220 191q-135 168 -135 283q0 127 91 218t218 91q131 0 221 -87t90 -214q0 -109 -59 -183.5t-192 -152.5l297 -354q57 100 83 205h134 q-33 -177 -121 -322zM565 1233q-70 0 -120 -48t-50 -116q0 -72 129 -213q131 70 171 116t40 105q0 68 -49 112t-121 44zM545 127q172 0 291 129l-357 428q-78 -41 -128 -85t-68.5 -87t-22.5 -67.5t-4 -63.5q0 -33 12.5 -71t42 -82t90 -72.5t144.5 -28.5z" />
+<glyph unicode="'" horiz-adv-x="509" d="M203 973l-37 411h170l-35 -411h-98z" />
+<glyph unicode="(" horiz-adv-x="706" d="M418 1483h155q-29 -47 -59.5 -112.5t-74.5 -180.5t-72.5 -264.5t-28.5 -300.5q0 -150 28.5 -300.5t72.5 -264t76 -180t58 -111.5h-155q-227 408 -228 856q1 450 228 858z" />
+<glyph unicode=")" horiz-adv-x="706" d="M291 1483q227 -408 227 -856q0 -451 -227 -858h-158q29 47 59.5 111.5t75.5 180t74 265t29 301.5q0 195 -53.5 396.5t-98.5 296.5t-86 163h158z" />
+<glyph unicode="*" horiz-adv-x="841" d="M666 1270l-177 -80l177 -78l-56 -98l-153 112l16 -184h-111l21 184l-156 -112l-55 98l178 78l-178 80l55 94l156 -111l-21 187h111l-16 -187l153 111z" />
+<glyph unicode="+" horiz-adv-x="1128" d="M926 674v-123h-301v-301h-123v301h-303v123h303v303h123v-303h301z" />
+<glyph unicode="," horiz-adv-x="641" d="M303 172h168l-172 -401h-147z" />
+<glyph unicode="-" horiz-adv-x="950" d="M786 682v-143h-624v143h624z" />
+<glyph unicode="." horiz-adv-x="671" d="M260 0v164h164v-164h-164z" />
+<glyph unicode="/" horiz-adv-x="827" d="M723 1548h135l-754 -1749h-133z" />
+<glyph unicode="0" horiz-adv-x="1345" d="M671.5 1378q538.5 0 538.5 -700.5t-538.5 -700.5t-538.5 700.5t538.5 700.5zM671.5 113q61.5 0 110.5 10t104.5 45t92.5 94.5t60.5 164.5t23.5 251q0 178 -34 298t-95.5 174t-121.5 73.5t-140 19.5t-140.5 -19.5t-122 -73.5t-95 -174t-33.5 -298q0 -145 23.5 -250.5 t60 -165t92 -94.5t104.5 -45t110.5 -10z" />
+<glyph unicode="1" horiz-adv-x="923" d="M463 1366h168v-1366h-148v1212l-272 -180v174z" />
+<glyph unicode="2" horiz-adv-x="1189" d="M401 147h619v-147h-862v129q102 76 208.5 169t223.5 215t189.5 252t72.5 234q0 238 -322 238q-190 0 -358 -119v162q172 104 371 104q233 0 344.5 -112.5t111.5 -272.5q0 -111 -56 -232.5t-151.5 -236t-190 -206t-200.5 -177.5z" />
+<glyph unicode="3" horiz-adv-x="1193" d="M788 739q10 -4 26.5 -12t58.5 -39t75 -67.5t59.5 -99t26.5 -132.5q0 -78 -27.5 -147.5t-84 -129t-157.5 -94t-235 -34.5q-197 0 -364 86v151q160 -90 346 -90q182 0 278.5 67.5t96.5 194.5t-98.5 194.5t-284.5 67.5h-150v142h156q150 0 228.5 56t78.5 162.5t-83 164 t-240 57.5q-152 0 -295 -72v150q147 70 311 69q233 0 344 -108.5t111 -259.5q0 -172 -148 -260z" />
+<glyph unicode="4" horiz-adv-x="1210" d="M889 547h194v-137h-194v-410h-148v410h-663v157l645 799h166v-819zM242 547h499v608z" />
+<glyph unicode="5" horiz-adv-x="1202" d="M248 1366h702v-145h-575l-39 -406q121 37 266 37q84 0 153.5 -18.5t136 -63.5t105.5 -135t39 -217t-39 -217t-105.5 -135.5t-136 -63.5t-153.5 -18q-236 0 -391 84v153q150 -94 381 -94q80 0 138 19.5t89 46t47.5 69.5t20.5 77t4 79q0 92 -24.5 152.5t-71.5 88t-93.5 37 t-109.5 9.5q-96 0 -177 -16.5t-112 -33.5l-33 -14l-92 94z" />
+<glyph unicode="6" horiz-adv-x="1193" d="M598 874q215 0 340 -115.5t125 -314.5q0 -84 -25.5 -162.5t-78 -147t-145.5 -109.5t-216 -41q-465 0 -465 641q0 141 25.5 257.5t65.5 193.5t96.5 135.5t111.5 90t118.5 51t111 25.5t94.5 6q109 0 198 -26v-137q-102 25 -182 24q-47 0 -92 -6t-113.5 -32.5t-122 -73 t-97.5 -136.5t-58 -213q133 90 309 90zM598 123q102 0 172 38t98.5 98t37.5 103.5t9 83.5q0 139 -81.5 215t-235.5 76q-201 0 -317 -116q2 -141 27.5 -241.5t57 -149t83 -75t79 -29.5t70.5 -3z" />
+<glyph unicode="7" horiz-adv-x="1175" d="M143 1366h932v-137l-592 -1229h-164l596 1219h-772v147z" />
+<glyph unicode="8" horiz-adv-x="1191" d="M842 739q10 -4 25.5 -11t54.5 -34.5t69.5 -62.5t55 -95.5t24.5 -129.5q0 -78 -25.5 -149t-79 -134.5t-148.5 -101t-220 -37.5q-240 0 -356.5 127t-116.5 295q0 203 184 307l51 24l-20 11q-12 6 -44 30.5t-56.5 55t-44 84t-19.5 112.5q0 145 103.5 249.5t318.5 104.5 t318.5 -103t103.5 -251q0 -184 -148 -274zM324 1030q0 -111 72.5 -173t201.5 -62t201.5 62.5t72.5 172.5q0 209 -274 209t-274 -209zM598 123q86 0 149.5 23.5t96.5 56.5t52 76t23.5 71.5t4.5 55.5q0 123 -84 188t-242 65t-242 -65.5t-84 -187.5q0 -27 4.5 -55.5t23.5 -71.5 t52 -76t96.5 -56.5t149.5 -23.5z" />
+<glyph unicode="9" horiz-adv-x="1202" d="M584 494q-215 0 -340 115.5t-125 314.5q0 84 25.5 162.5t77.5 147.5t145.5 109.5t216.5 40.5q465 0 465 -643q0 -195 -48.5 -340t-116 -223t-160.5 -124t-160.5 -58t-137.5 -12q-104 0 -199 24v139q84 -25 183 -24q47 0 92 6t113.5 32.5t120.5 73t97.5 136.5t57.5 213 q-121 -90 -307 -90zM584 1245q-102 0 -172 -38t-98.5 -98t-38 -103t-9.5 -84q0 -139 82 -215t236 -76q207 0 317 117q-2 141 -27.5 241.5t-57.5 148.5t-83 74.5t-78.5 29.5t-70.5 3z" />
+<glyph unicode=":" horiz-adv-x="800" d="M324 98v164h163v-164h-163zM324 754v164h163v-164h-163z" />
+<glyph unicode=";" horiz-adv-x="854" d="M352 754v164h164v-164h-164zM350 172h168l-172 -401h-147z" />
+<glyph unicode="&#x3c;" horiz-adv-x="1351" d="M246 621l844 383v-164l-672 -289l672 -291v-162l-844 383v140z" />
+<glyph unicode="=" horiz-adv-x="1306" d="M1049 524v-143h-789v143h789zM1049 840v-142h-789v142h789z" />
+<glyph unicode="&#x3e;" horiz-adv-x="1329" d="M1112 621v-140l-842 -383v162l670 291l-670 289v164z" />
+<glyph unicode="?" horiz-adv-x="993" d="M391 0v164h164v-164h-164zM449 1382q61 0 120.5 -14t129 -50t112.5 -117t43 -197q0 -82 -31.5 -142.5t-77.5 -98.5l-90 -76q-45 -38 -76.5 -101.5t-31.5 -151.5v-90h-148v100q0 104 32 181t77 120t90 78t77 79t32 102q0 231 -269 231q-156 0 -274 -90v160q113 77 285 77z " />
+<glyph unicode="@" horiz-adv-x="1869" d="M1040 596q74 0 152 -10q2 14 2 43q0 35 -6 59.5t-23.5 50t-60.5 39t-109 13.5q-143 0 -256 -43l17 118q123 41 239 41q156 0 237 -70.5t81 -207.5q0 -59 -11.5 -142.5t-17.5 -137.5t-4 -107.5t30.5 -79t86.5 -25.5q90 0 169 114t79 312q0 145 -55.5 262t-144.5 186.5 t-191.5 106.5t-206.5 37q-311 0 -554 -230.5t-243 -553.5q0 -154 51 -270.5t123 -177t163 -98.5t153.5 -47t113.5 -9q254 0 430 100l-18 -92q-172 -82 -428 -82q-86 0 -174.5 22.5t-178.5 74.5t-158.5 127t-112.5 192.5t-44 259.5q0 244 133 445.5t334 309t410 107.5 q82 0 171 -21.5t180 -73t162.5 -126t116.5 -189t45 -254.5q0 -221 -91 -362t-242 -141q-137 0 -191 100q-96 -100 -295 -100q-143 0 -225 62t-82 171q0 49 16.5 94t59.5 94.5t138 79t230 29.5zM903 184q49 0 88 8.5t65.5 17.5t47 31.5t31 37t18.5 46t11 46t6.5 51.5t5.5 47 q-55 8 -136 8q-326 0 -325 -178q0 -115 188 -115z" />
+<glyph unicode="A" horiz-adv-x="1325" d="M735 1366l543 -1366h-158l-164 426h-589l-164 -426h-160l545 1366h147zM422 567h479l-239 625z" />
+<glyph unicode="B" horiz-adv-x="1271" d="M940 727q10 -2 24.5 -8t54.5 -33t69.5 -61.5t54 -98t24.5 -139.5q0 -387 -495 -387h-494v1366h453q455 0 454 -367q0 -55 -15 -104t-36.5 -78t-42 -50.5t-37.5 -29.5zM684 137q156 0 246 54.5t90 203.5q0 63 -21.5 108.5t-52.5 71t-80 39t-91 17.5t-97 4h-352v-498h358z M938 989q0 133 -72.5 184.5t-220.5 51.5h-319v-451h338q125 0 199.5 43t74.5 172z" />
+<glyph unicode="C" horiz-adv-x="1286" d="M272 684q0 -291 121 -426t381 -135q209 0 400 80v-142q-199 -78 -416 -77q-633 0 -633 700t633 700q219 0 416 -79v-142q-195 82 -400 82q-260 0 -381 -135t-121 -426z" />
+<glyph unicode="D" horiz-adv-x="1372" d="M178 1366h428q641 0 641 -682q0 -684 -641 -684h-428v1366zM596 139q262 0 383 131t121 414t-121 414t-383 131h-270v-1090h270z" />
+<glyph unicode="E" horiz-adv-x="1159" d="M326 1227v-471h628v-144h-628v-473h714v-139h-862v1366h862v-139h-714z" />
+<glyph unicode="F" horiz-adv-x="1097" d="M178 1366h838v-139h-690v-471h606v-144h-606v-612h-148v1366z" />
+<glyph unicode="G" horiz-adv-x="1386" d="M758 600v143h477v-653q-221 -106 -477 -106q-633 0 -633 700t633 700q227 0 430 -86v-143q-199 88 -414 88q-260 0 -381 -135t-121 -424q0 -291 121 -425t381 -134q164 0 313 49v426h-329z" />
+<glyph unicode="H" horiz-adv-x="1380" d="M1053 1366h147v-1366h-147v612h-727v-612h-148v1366h148v-612h727v612z" />
+<glyph unicode="I" horiz-adv-x="501" d="M178 1366h148v-1366h-148v1366z" />
+<glyph unicode="J" horiz-adv-x="915" d="M573 1366h148v-958q0 -125 -35 -213.5t-95.5 -131.5t-124 -61t-136.5 -18q-147 0 -271 71v154q117 -82 252 -82q139 0 200.5 68.5t61.5 224.5v946z" />
+<glyph unicode="K" horiz-adv-x="1294" d="M571 727l633 -727h-194l-535 623l-149 -164v-459h-148v1366h148v-704l632 704h199z" />
+<glyph unicode="L" horiz-adv-x="1067" d="M326 143h698v-143h-846v1366h148v-1223z" />
+<glyph unicode="M" horiz-adv-x="1619" d="M1278 1366h160v-1366h-148v1124l-483 -696l-481 696v-1124h-148v1366h160l469 -694z" />
+<glyph unicode="N" horiz-adv-x="1490" d="M1161 1366h148v-1366h-166l-817 1151v-1151h-148v1366h168l815 -1151v1151z" />
+<glyph unicode="O" d="M758 1384q635 0 635 -700t-635 -700q-633 0 -633 700t633 700zM758 123q254 0 370.5 135t116.5 426t-116.5 426t-370.5 135q-252 0 -369 -135t-117 -426t117 -426t369 -135z" />
+<glyph unicode="P" horiz-adv-x="1220" d="M662 1366q229 0 351 -108.5t122 -313.5t-122 -313.5t-351 -108.5h-338v-522h-148v1366h486zM643 664q109 0 181.5 23.5t105.5 68.5t45 88t12 100t-12 100t-45 88.5t-105.5 69t-181.5 23.5h-319v-561h319z" />
+<glyph unicode="Q" d="M1393 684q0 -651 -553 -698q41 -170 268 -176v-134q-113 0 -196 30t-127 81t-65.5 98t-29.5 101q-565 37 -565 698q0 700 633 700q635 0 635 -700zM758 123q254 0 370.5 135t116.5 426t-116.5 426t-370.5 135q-252 0 -369 -135t-117 -426t117 -426t369 -135z" />
+<glyph unicode="R" horiz-adv-x="1271" d="M829 573l375 -573h-174l-356 551h-348v-551h-148v1366h502q223 0 343 -101.5t120 -295.5q0 -88 -28 -160t-63.5 -112t-84.5 -69.5t-80 -39t-58 -15.5zM672 690q102 0 170.5 23.5t99.5 65.5t42 83t11 96.5t-11 96.5t-42 83t-99.5 65.5t-170.5 23.5h-346v-537h346z" />
+<glyph unicode="S" horiz-adv-x="1150" d="M272 1004q0 -70 56.5 -117t139.5 -69.5t181.5 -57.5t181 -76t139 -127t56.5 -209q0 -170 -128 -267t-357 -97q-223 0 -404 96v160q162 -109 393 -109q348 0 349 217q0 92 -56.5 154.5t-139.5 91.5l-181 60q-98 32 -181 65t-139.5 105.5t-56.5 179.5q0 158 114.5 269 t356.5 111q174 0 342 -81v-152q-152 86 -328 86q-164 0 -251 -60t-87 -173z" />
+<glyph unicode="T" horiz-adv-x="1163" d="M25 1366h1112v-143h-482v-1223h-147v1223h-483v143z" />
+<glyph unicode="U" horiz-adv-x="1476" d="M1141 1366h147v-805q0 -281 -143.5 -429t-411.5 -148t-411.5 148.5t-143.5 428.5v805h148v-813q0 -434 407.5 -434t407.5 434v813z" />
+<glyph unicode="V" horiz-adv-x="1251" d="M1061 1366h158l-525 -1366h-145l-524 1366h157l441 -1155z" />
+<glyph unicode="W" horiz-adv-x="1947" d="M1765 1366h156l-440 -1366h-150l-358 1114l-359 -1114h-151l-438 1366h155l359 -1143l360 1143h148l358 -1143z" />
+<glyph unicode="X" horiz-adv-x="1206" d="M690 690l484 -690h-177l-397 563l-395 -563h-180l485 692l-473 674h176l387 -549l385 549h180z" />
+<glyph unicode="Y" horiz-adv-x="1224" d="M1012 1366h178l-508 -739v-627h-147v627l-510 739h178l405 -596z" />
+<glyph unicode="Z" horiz-adv-x="1247" d="M1104 1366v-125l-785 -1094h785v-147h-973v129l780 1090h-759v147h952z" />
+<glyph unicode="[" horiz-adv-x="784" d="M391 1286v-1384h223v-140h-370v1663h370v-139h-223z" />
+<glyph unicode="\" horiz-adv-x="753" d="M59 1548l752 -1749h-133l-754 1749h135z" />
+<glyph unicode="]" horiz-adv-x="780" d="M393 1286h-221v139h369v-1663h-369v140h221v1384z" />
+<glyph unicode="^" horiz-adv-x="1146" d="M600 1413l213 -444h-123l-145 325l-148 -325h-123l213 444h113z" />
+<glyph unicode="_" horiz-adv-x="1118" d="M0 -49h1118v-90h-1118v90z" />
+<glyph unicode="`" horiz-adv-x="448" d="M244 1391l116 -236h-96l-170 236h150z" />
+<glyph unicode="a" horiz-adv-x="1093" d="M522 1040q215 0 328 -108.5t113 -317.5v-307q0 -98 -45.5 -167.5t-117 -100.5t-134 -43t-123.5 -12q-47 0 -96.5 6t-112 27.5t-108.5 55t-78.5 96t-32.5 144.5q0 70 25.5 125.5t62.5 90t94 59t101 36t104.5 17.5t86 7t60.5 1l164 -10q0 137 -75.5 195.5t-223.5 58.5 q-166 0 -299 -49v143q151 53 307 53zM815 307v197q-68 12 -182 12q-371 0 -371 -203q0 -193 281 -192q272 0 272 186z" />
+<glyph unicode="b" horiz-adv-x="1167" d="M569 1040q70 0 131.5 -12t125 -47t109.5 -90t74.5 -149.5t28.5 -217.5q0 -135 -31.5 -236.5t-77.5 -157.5t-110.5 -91t-119 -45t-111.5 -10q-111 0 -193 27.5t-123 63.5t-66.5 86t-30.5 82.5t-5 63.5v1106h147v-414q123 41 252 41zM588 119q57 0 103 13t95.5 51t77 125 t27.5 216q0 199 -76 289t-246 90q-127 0 -252 -51v-553q1 -180 271 -180z" />
+<glyph unicode="c" horiz-adv-x="966" d="M266 512q0 -205 83 -296t265 -91q154 0 287 57v-143q-143 -55 -303 -55q-72 0 -134.5 12t-128 48t-111.5 92.5t-75.5 152.5t-29.5 223q0 156 43 265.5t116.5 163.5t150.5 76.5t169 22.5q154 0 303 -57v-141q-139 57 -287 57q-182 0 -265 -92t-83 -295z" />
+<glyph unicode="d" horiz-adv-x="1150" d="M129 524q0 152 41 258.5t113.5 159.5t147.5 74.5t165 21.5q135 0 254 -39v412h147v-1106q0 -41 -12 -84t-50 -102.5t-130 -97t-227 -37.5q-57 0 -111.5 10t-118 45t-109.5 91t-78 157.5t-32 236.5zM276 524q0 -129 28 -216t77 -125t94 -51t103 -13q272 0 272 180v553 q-125 51 -254 51q-168 0 -244 -90t-76 -289z" />
+<glyph unicode="e" horiz-adv-x="1136" d="M578 1040q94 0 170.5 -29.5t121.5 -69.5t79 -104.5t48.5 -109.5t22.5 -108.5t8 -78.5v-44l-4 -72h-745q14 -154 94 -223.5t237 -69.5q223 0 351 76v-152q-150 -72 -365 -71q-90 0 -165 21.5t-147.5 74.5t-113.5 159.5t-41 258.5v7.5v7.5q0 527 449 527zM279 555h598 q0 35 -8.5 78t-34 110.5t-92 112.5t-164.5 45q-152 0 -220.5 -79t-78.5 -267z" />
+<glyph unicode="f" horiz-adv-x="675" d="M612 1317q-49 0 -74.5 -4t-61.5 -24.5t-53 -73t-17 -136.5v-57h280v-135h-280v-887h-148v887h-176v135h176v55q0 106 27.5 182t62.5 112t89.5 56.5t83 22.5t67.5 2q55 0 98 -12v-131q-41 8 -74 8z" />
+<glyph unicode="g" horiz-adv-x="1101" d="M557 1040q131 0 220 -36.5t125 -94t48.5 -99.5t12.5 -83v-770q0 -68 -19.5 -125t-64.5 -111.5t-137.5 -85t-223.5 -30.5q-143 0 -291 37v139q131 -37 275 -37q98 0 164.5 17.5t96.5 50t41 64.5t11 77v102q-115 -37 -240 -37q-68 0 -127 11.5t-120.5 45.5t-105.5 88 t-71.5 144t-27.5 209q0 160 43 271.5t115.5 162.5t138 70.5t137.5 19.5zM815 203v530q0 172 -258 172q-55 0 -98 -13t-90 -50t-73 -120t-26 -206q0 -115 24.5 -189.5t72 -110.5t95.5 -48t113 -12q123 0 240 47z" />
+<glyph unicode="h" horiz-adv-x="1181" d="M649 1040q188 0 290.5 -113.5t102.5 -320.5v-606h-147v606q0 287 -262 287q-143 0 -293 -62v-831h-147v1411h147v-436q155 65 309 65z" />
+<glyph unicode="i" horiz-adv-x="540" d="M348 0v1022h-147v-1022h147zM356 1366v-162h-163v162h163z" />
+<glyph unicode="j" horiz-adv-x="514" d="M207 1366h164v-162h-164v162zM215 1022h147v-1081q0 -336 -356 -336v137q127 2 168 50t41 157v1073z" />
+<glyph unicode="k" horiz-adv-x="1124" d="M559 553l492 -553h-197l-391 449l-127 -138v-311h-148v1411h148v-891l459 502h200z" />
+<glyph unicode="l" horiz-adv-x="552" d="M354 0h-147v1411h147v-1411z" />
+<glyph unicode="m" horiz-adv-x="1824" d="M1251 1040q186 0 288.5 -98t102.5 -276v-666h-147v666q0 43 -8 76.5t-32.5 71.5t-79 58.5t-134.5 20.5q-129 0 -283 -51q33 -74 33 -176v-666h-147v666q0 45 -8.5 78.5t-33 70.5t-80.5 57.5t-138 20.5q-125 0 -244 -37v-856h-147v942q197 98 409 98q168 0 270 -84 q197 84 379 84z" />
+<glyph unicode="n" horiz-adv-x="1189" d="M600 1040q193 0 299.5 -98t106.5 -276v-666h-148v666q0 43 -9 76.5t-35 71.5t-84 58.5t-146 20.5q-129 0 -269 -41v-852h-147v940q201 100 432 100z" />
+<glyph unicode="o" horiz-adv-x="1155" d="M579.5 1040q92.5 0 170 -22.5t151.5 -76.5t117 -163.5t43 -265.5t-43 -265.5t-117 -163.5t-151.5 -76.5t-170 -22.5t-169 22.5t-150.5 76.5t-117 163.5t-43 265.5t43 265.5t117 163.5t150.5 76.5t169 22.5zM580 119q174 0 253.5 93t79.5 300t-79.5 300t-253.5 93 t-253 -94t-79 -299t79 -299t253 -94z" />
+<glyph unicode="p" horiz-adv-x="1159" d="M588 1040q57 0 111.5 -10t118 -45t109.5 -92t77.5 -158.5t31.5 -236.5q0 -152 -41 -258.5t-113.5 -159.5t-147.5 -74.5t-165 -21.5q-125 0 -254 39v-402h-147v1096q0 41 12.5 84t50 103.5t130 98t227.5 37.5zM569 121q168 0 244 89t76 290q0 129 -27.5 215t-77 125 t-94.5 52t-102 13q-272 0 -273 -182v-551q117 -51 254 -51z" />
+<glyph unicode="q" horiz-adv-x="1150" d="M115 498q0 135 31.5 236.5t77.5 158.5t109.5 92t118 45t111.5 10q111 0 193 -27.5t123 -63.5t66.5 -86t30.5 -82.5t5 -63.5v-1096h-147v402q-117 -39 -252 -39q-90 0 -165 21.5t-147.5 74.5t-113.5 159.5t-41 258.5zM262 500q0 -201 76 -290t244 -89q135 0 252 51v551 q0 182 -271 182q-57 0 -102 -13t-94.5 -52t-77 -125t-27.5 -215z" />
+<glyph unicode="r" horiz-adv-x="702" d="M662 897q-168 -4 -349 -53v-844h-147v940q231 98 496 98v-141z" />
+<glyph unicode="s" horiz-adv-x="872" d="M248 743q0 -53 56 -85.5t137 -54t162 -51.5t137.5 -101.5t56.5 -182.5q0 -133 -99.5 -208.5t-275.5 -75.5q-170 0 -309 77v156q147 -90 303 -90q233 0 233 141q0 76 -56 119t-137 64.5t-162 47t-137.5 86t-56.5 158.5q0 123 89.5 210t273.5 87q131 0 262 -63v-148 q-117 70 -246 70q-231 0 -231 -156z" />
+<glyph unicode="t" horiz-adv-x="706" d="M375 887v-623q0 -78 32.5 -109.5t114.5 -31.5q63 0 117 24v-139q-68 -25 -135 -24q-41 0 -80 9t-88 35.5t-79 89t-30 154.5v615h-178v135h178v289h148v-289h264v-135h-264z" />
+<glyph unicode="u" horiz-adv-x="1202" d="M877 1022h147v-592q0 -213 -111.5 -329.5t-316.5 -116.5t-316.5 116.5t-111.5 329.5v592h147v-600q0 -156 68 -228.5t213 -72.5q143 0 212 72.5t69 228.5v600z" />
+<glyph unicode="v" horiz-adv-x="1062" d="M842 1022h157l-393 -1022h-149l-391 1022h157l309 -838z" />
+<glyph unicode="w" horiz-adv-x="1603" d="M1368 1022h156l-340 -1022h-150l-233 764l-234 -764h-149l-340 1022h155l261 -791l235 791h141l238 -791z" />
+<glyph unicode="x" horiz-adv-x="1032" d="M600 514l363 -514h-177l-274 389l-274 -389h-181l365 518l-354 504h174l268 -379l268 379h180l-356 -504z" />
+<glyph unicode="y" horiz-adv-x="1028" d="M807 1022h158l-418 -1122q-109 -295 -322 -295q-49 0 -96 18v135q41 -18 88 -18q39 0 77 28.5t62.5 68.5t45 81t28.5 70l10 28l-377 1006h158l291 -809z" />
+<glyph unicode="z" horiz-adv-x="950" d="M840 1022v-129l-561 -752h561v-141h-748v133l557 748h-543v141h734z" />
+<glyph unicode="{" horiz-adv-x="763" d="M463 72q0 -88 39 -122t121 -38v-137q-150 0 -229 78.5t-79 228.5v319q0 111 -129 150v100q129 33 129 148v319q0 150 79 229.5t229 79.5v-139q-82 -4 -121 -36.5t-39 -123.5v-329q0 -119 -119 -199q119 -80 119 -199v-329z" />
+<glyph unicode="|" horiz-adv-x="907" d="M526 -203h-147v1565h147v-1565z" />
+<glyph unicode="}" horiz-adv-x="753" d="M315 72v329q0 117 121 199q-121 82 -121 199v329q0 90 -37.5 123t-121.5 37v139q150 0 228.5 -79.5t78.5 -229.5v-319q0 -115 129 -148v-100q-129 -39 -129 -150v-319q0 -150 -79 -228.5t-228 -78.5v137q82 4 120.5 38t38.5 122z" />
+<glyph unicode="~" horiz-adv-x="1024" d="M823 639v-123q-57 -72 -122.5 -79t-127.5 26l-122 64q-61 32 -127 25t-123 -79v125q57 72 122.5 79t127.5 -26l122 -65q61 -33 127 -26t123 79z" />
+<glyph unicode="&#xa1;" horiz-adv-x="741" d="M467 1022v-162h-164v162h164zM459 -344h-148l15 1022h118z" />
+<glyph unicode="&#xa2;" horiz-adv-x="976" d="M897 1014q-125 51 -266 55v-772q143 4 266 57v-143q-125 -49 -266 -55v-156h-103v158q-412 41 -411 526q0 268 116.5 388t294.5 136v158h103v-156q131 -2 266 -55v-141zM264 684q0 -178 63.5 -270t200.5 -111v762q-137 -20 -200.5 -111.5t-63.5 -269.5z" />
+<glyph unicode="&#xa3;" horiz-adv-x="1136" d="M727 1243q-299 0 -299 -233v-299h412v-136h-412v-415q51 -6 145.5 -25.5t154.5 -30t143 -7.5t153 30v-150q-100 -39 -229 -29.5t-230.5 38t-229.5 31.5t-231 -48v150q80 39 177 45v411h-177v136h177v293q0 158 105.5 269t328.5 111q162 0 309 -79v-150q-139 88 -297 88z " />
+<glyph unicode="&#xa5;" horiz-adv-x="1232" d="M1204 1366l-444 -645h256v-123h-322v-192h322v-123h-322v-283h-147v283h-322v123h322v192h-322v123h256l-444 645h180l404 -588l403 588h180z" />
+<glyph unicode="&#xa7;" horiz-adv-x="1112" d="M1008 629q0 -76 -51.5 -130.5t-125.5 -78.5q72 -59 72 -158q0 -131 -111.5 -204.5t-310.5 -73.5q-203 0 -350 73v152q135 -84 340 -84q285 0 285 137q0 61 -48.5 102.5t-218.5 79.5q-184 43 -277 101.5t-93 181.5q0 164 186 223q-82 51 -82 144q0 119 100.5 204.5 t309.5 85.5q156 0 297 -61v-145q-131 70 -285 69q-274 0 -274 -153q0 -25 8 -40.5t68.5 -44t179.5 -55.5q84 -18 140 -38.5t116.5 -56.5t92.5 -94t32 -136zM743 514q117 35 117 115q0 61 -49 102t-217 80q-98 23 -176 49q-152 -29 -152 -133q0 -25 8.5 -40t70 -44t179.5 -55 q135 -29 219 -74z" />
+<glyph unicode="&#xa8;" horiz-adv-x="788" d="M162 1155v162h162v-162h-162zM465 1155v162h162v-162h-162z" />
+<glyph unicode="&#xa9;" horiz-adv-x="1593" d="M799 -16q-289 0 -495 204.5t-206 493.5q0 291 206 495.5t495 204.5q291 0 495.5 -204.5t204.5 -495.5q0 -289 -204.5 -493.5t-495.5 -204.5zM799 1311q-258 0 -442.5 -184.5t-184.5 -444.5q0 -258 184.5 -442.5t442.5 -184.5q260 0 443 184.5t183 442.5q0 260 -183 444.5 t-443 184.5zM535 682q0 -170 70.5 -249t221.5 -79q121 0 234 47v-82q-115 -45 -244 -45q-369 0 -368 408q0 410 368 410q129 0 244 -45v-82q-109 45 -234 45q-152 0 -222 -79t-70 -249z" />
+<glyph unicode="&#xaa;" horiz-adv-x="806" d="M381 1382q246 0 246 -235v-172q0 -72 -46 -115t-92.5 -53t-95.5 -10t-96 10t-94 54t-47 118q0 186 297 186l92 -6q0 143 -168 144q-92 0 -164 -29v80q72 28 168 28zM545 977v108q-37 6 -101 7q-207 0 -206 -111q0 -109 155 -109q152 1 152 105z" />
+<glyph unicode="&#xab;" horiz-adv-x="1132" d="M608 911l-364 -389l364 -391h-198l-347 391l347 389h198zM997 911l-364 -389l364 -391h-198l-346 391l346 389h198z" />
+<glyph unicode="&#xac;" horiz-adv-x="1273" d="M199 664h876v-340h-135v204h-741v136z" />
+<glyph unicode="&#xad;" horiz-adv-x="950" d="M786 682v-143h-624v143h624z" />
+<glyph unicode="&#xae;" horiz-adv-x="1593" d="M926 618l219 -335h-103l-206 323h-205v-323h-86v798h293q131 0 201.5 -58t70.5 -173q0 -63 -22.5 -111.5t-57.5 -72t-58 -33t-46 -15.5zM834 688q113 0 150.5 43t37.5 112.5t-38 112.5t-150 43h-203v-311h203zM799 -16q-289 0 -495 204.5t-206 493.5q0 291 206 495.5 t495 204.5q291 0 495.5 -204.5t204.5 -495.5q0 -289 -204.5 -493.5t-495.5 -204.5zM799 1311q-258 0 -442.5 -184.5t-184.5 -444.5q0 -258 184.5 -442.5t442.5 -184.5q260 0 443 184.5t183 442.5q0 260 -183 444.5t-443 184.5z" />
+<glyph unicode="&#xaf;" horiz-adv-x="825" d="M176 1180v108h479v-108h-479z" />
+<glyph unicode="&#xb0;" horiz-adv-x="792" d="M391 1370q109 0 166 -58.5t57 -168.5q0 -227 -223 -227.5t-223 227t223 227.5zM391 989q78 0 114 36t36 118q0 80 -36 116.5t-114 36.5q-80 0 -114.5 -36.5t-34.5 -116.5q0 -82 34.5 -118t114.5 -36z" />
+<glyph unicode="&#xb1;" horiz-adv-x="1198" d="M657 721h301v-123h-301v-303h-122v303h-304v123h304v301h122v-301zM231 68v122h727v-122h-727z" />
+<glyph unicode="&#xb2;" horiz-adv-x="671" d="M240 1028h331v-80h-462v70q133 98 252.5 230t119.5 239q0 125 -172 125q-106 0 -192 -62v86q90 55 198 56q125 0 185.5 -60.5t60.5 -144.5q1 -197 -321 -459z" />
+<glyph unicode="&#xb3;" horiz-adv-x="661" d="M444 1346q6 -2 14.5 -6.5t31 -20.5t40 -36.5t31.5 -54.5t14 -71q0 -90 -66.5 -153.5t-203.5 -63.5q-102 0 -196 45v82q90 -49 186 -49q203 0 203 141t-207 141h-80v76h84q164 0 164 119q0 117 -174 117q-88 0 -158 -37v80q82 37 168 37q125 0 184.5 -58.5t59.5 -138.5 q0 -49 -23.5 -86t-48.5 -49z" />
+<glyph unicode="&#xb4;" horiz-adv-x="483" d="M240 1391h151l-170 -236h-98z" />
+<glyph unicode="&#xb5;" horiz-adv-x="1247" d="M891 1022h147v-938q-193 -100 -430 -100q-152 2 -258 82v-496h-147v1452h147v-664q0 -45 9.5 -78.5t35 -70.5t83 -57.5t145.5 -20.5q135 0 268 39v852z" />
+<glyph unicode="&#xb6;" horiz-adv-x="911" d="M549 1366h203v-1366h-136v524h-67q-229 0 -350 108.5t-121 313.5q0 203 121 311.5t350 108.5z" />
+<glyph unicode="&#xb7;" horiz-adv-x="636" d="M399 639v-164h-161v164h161z" />
+<glyph unicode="&#xb8;" horiz-adv-x="518" d="M399 -10l-129 -236h-155l168 236h116z" />
+<glyph unicode="&#xb9;" horiz-adv-x="491" d="M244 1683h90v-735h-78v651l-147 -96v94z" />
+<glyph unicode="&#xba;" horiz-adv-x="854" d="M422 1384q266 0 266 -294q0 -293 -266 -293q-113 0 -189.5 64.5t-76.5 228.5q0 86 23.5 147t64.5 92t84 43t94 12zM422 872q98 0 141 51.5t43 166t-43 167t-141 52.5q-96 0 -140 -52.5t-44 -167t44 -166t140 -51.5z" />
+<glyph unicode="&#xbb;" horiz-adv-x="1132" d="M526 911h197l348 -389l-348 -391h-197l363 391zM137 911h197l348 -389l-348 -391h-197l363 391z" />
+<glyph unicode="&#xbc;" horiz-adv-x="1433" d="M1225 295h104v-74h-104v-221h-80v221h-357v84l347 428h90v-438zM877 295h268v326zM240 1380h92v-733h-80v651l-146 -98v94zM1042 1403h97l-895 -1448h-97z" />
+<glyph unicode="&#xbd;" horiz-adv-x="1460" d="M240 1380h92v-733h-80v651l-146 -98v94zM999 80h332v-80h-461v70q133 98 252 229t119 238q0 127 -172 127q-104 0 -192 -64v88q98 55 198 55q127 0 186.5 -60t59.5 -146q0 -195 -322 -457zM1042 1403h97l-895 -1448h-97z" />
+<glyph unicode="&#xbe;" horiz-adv-x="1654" d="M471 1042q6 -2 14.5 -6t31 -20.5t39.5 -35.5t31.5 -53t14.5 -71q0 -90 -65.5 -154.5t-204.5 -64.5q-98 0 -197 47v80q94 -47 189 -47q201 0 200 141q0 68 -53 104.5t-154 36.5h-79v74h84q164 0 163.5 119t-174.5 119q-84 0 -157 -39v82q82 37 168 37q125 0 184 -58.5 t59 -140.5q0 -49 -23.5 -86t-45.5 -49zM1446 295h104v-74h-104v-221h-80v221h-356v84l346 428h90v-438zM1098 295h268v326zM1264 1403h96l-895 -1448h-96z" />
+<glyph unicode="&#xbf;" horiz-adv-x="989" d="M610 1022v-162h-164v162h164zM553 -360q-47 0 -93 7t-105.5 31.5t-102.5 64.5t-74 111.5t-31 165.5q0 82 32 141.5t77 97.5l90 76q45 38 77 101.5t32 151.5v92h147v-102q0 -104 -31.5 -181.5t-76.5 -119t-90.5 -77.5t-77 -80t-31.5 -100q0 -233 270 -233q141 0 275 90 v-160q-115 -77 -287 -77z" />
+<glyph unicode="&#xc0;" horiz-adv-x="1325" d="M735 1366l543 -1366h-158l-164 426h-589l-164 -426h-160l545 1366h147zM422 567h479l-239 625zM590 1718l117 -235h-99l-170 235h152z" />
+<glyph unicode="&#xc1;" horiz-adv-x="1325" d="M43 0l545 1366h147l543 -1366h-158l-164 426h-589l-164 -426h-160zM422 567h479l-239 625zM731 1718h152l-170 -235h-99z" />
+<glyph unicode="&#xc2;" horiz-adv-x="1325" d="M735 1366l543 -1366h-158l-164 426h-589l-164 -426h-160l545 1366h147zM422 567h479l-239 625zM705 1731l163 -248h-114l-92 145l-93 -145h-114l163 248h87z" />
+<glyph unicode="&#xc3;" horiz-adv-x="1325" d="M948 1526q-53 -66 -114.5 -73t-117.5 23l-112 59q-55 30 -116.5 22.5t-114.5 -72.5v117q53 66 114.5 71.5t116.5 -23.5l112 -60q56 -30 117.5 -23.5t114.5 71.5v-112zM735 1366l543 -1366h-158l-164 426h-589l-164 -426h-160l545 1366h147zM422 567h479l-239 625z" />
+<glyph unicode="&#xc4;" horiz-adv-x="1325" d="M428 1483v164h164v-164h-164zM731 1483v164h164v-164h-164zM735 1366l543 -1366h-158l-164 426h-589l-164 -426h-160l545 1366h147zM422 567h479l-239 625z" />
+<glyph unicode="&#xc5;" horiz-adv-x="1325" d="M735 1366l543 -1366h-158l-164 426h-589l-164 -426h-160l545 1366h147zM422 567h479l-239 625zM661.5 1759q79.5 0 122.5 -43t43 -125t-43 -125t-122.5 -43t-122.5 43t-43 125t43 125t122.5 43zM662 1493q49 0 70.5 22.5t21.5 76t-21.5 77t-70.5 23.5q-51 0 -72 -23.5 t-21 -77t21 -76t72 -22.5z" />
+<glyph unicode="&#xc6;" horiz-adv-x="1939" d="M1126 1225v-471h607v-144h-607v-469h691v-141h-838v428h-506l-252 -428h-170l811 1366h955v-141h-691zM979 575v644h-45l-375 -644h420z" />
+<glyph unicode="&#xc7;" horiz-adv-x="1286" d="M774 1247q-260 0 -381 -134t-121 -425t121 -426t381 -135q209 0 400 80v-141q-172 -68 -357 -78l-125 -232h-155l163 232q-575 35 -575 698q0 700 633 700q217 0 416 -77v-142q-187 80 -400 80z" />
+<glyph unicode="&#xc8;" horiz-adv-x="1159" d="M596 1718l117 -235h-99l-170 235h152zM326 1227v-471h628v-144h-628v-473h714v-139h-862v1366h862v-139h-714z" />
+<glyph unicode="&#xc9;" horiz-adv-x="1159" d="M680 1718h151l-169 -235h-97zM326 1227v-471h628v-144h-628v-473h714v-139h-862v1366h862v-139h-714z" />
+<glyph unicode="&#xca;" horiz-adv-x="1159" d="M662 1731l165 -248h-114l-92 145l-95 -145h-114l166 248h84zM326 1227v-471h628v-144h-628v-473h714v-139h-862v1366h862v-139h-714z" />
+<glyph unicode="&#xcb;" horiz-adv-x="1159" d="M395 1483v164h162v-164h-162zM698 1483v164h162v-164h-162zM326 1227v-471h628v-144h-628v-473h714v-139h-862v1366h862v-139h-714z" />
+<glyph unicode="&#xcc;" horiz-adv-x="501" d="M178 0v1366h148v-1366h-148zM184 1718l117 -235h-98l-170 235h151z" />
+<glyph unicode="&#xcd;" horiz-adv-x="501" d="M326 0v1366h-148v-1366h148zM319 1718h152l-170 -235h-98z" />
+<glyph unicode="&#xce;" horiz-adv-x="501" d="M326 0v1366h-148v-1366h148zM295 1731l164 -248h-115l-92 145l-92 -145h-115l164 248h86z" />
+<glyph unicode="&#xcf;" horiz-adv-x="501" d="M326 0v1366h-148v-1366h148zM18 1483v164h164v-164h-164zM322 1483v164h163v-164h-163z" />
+<glyph unicode="&#xd0;" horiz-adv-x="1468" d="M696 1366q641 0 641 -682q0 -684 -641 -684h-428v621h-159v122h159v623h428zM686 139q262 0 383 131t121 414t-121 414t-383 131h-270v-486h350v-122h-350v-482h270z" />
+<glyph unicode="&#xd1;" horiz-adv-x="1490" d="M1161 1366h148v-1366h-166l-817 1151v-1151h-148v1366h168l815 -1151v1151zM1032 1526q-53 -66 -114.5 -73t-117.5 23l-113 59q-56 30 -117.5 22.5t-114.5 -72.5v117q53 66 114.5 71.5t117.5 -23.5l113 -60q56 -30 117.5 -23.5t114.5 71.5v-112z" />
+<glyph unicode="&#xd2;" d="M125 684q0 700 633 700t633 -700t-633 -700t-633 700zM272 684q0 -291 117 -426t369 -135t368.5 135t116.5 426t-116.5 426t-368.5 135t-369 -135t-117 -426zM713 1718l116 -235h-96l-170 235h150z" />
+<glyph unicode="&#xd3;" d="M758 1384q633 0 633 -700t-633 -700t-633 700t633 700zM758 123q252 0 368.5 135t116.5 426t-116.5 426t-368.5 135t-369 -135t-117 -426t117 -426t369 -135zM801 1718h151l-170 -235h-96z" />
+<glyph unicode="&#xd4;" d="M758 1384q633 0 633 -700t-633 -700t-633 700t633 700zM758 123q252 0 368.5 135t116.5 426t-116.5 426t-368.5 135t-369 -135t-117 -426t117 -426t369 -135zM801 1731l164 -248h-115l-92 145l-92 -145h-115l164 248h86z" />
+<glyph unicode="&#xd5;" d="M758 1384q635 0 635 -700t-635 -700q-633 0 -633 700t633 700zM758 123q254 0 370.5 135t116.5 426t-116.5 426t-370.5 135q-252 0 -369 -135t-117 -426t117 -426t369 -135zM1047 1526q-53 -66 -115 -73t-118 23l-113 59q-56 30 -116.5 22.5t-113.5 -72.5v117 q53 66 113.5 71.5t116.5 -23.5l113 -60q56 -30 117.5 -23.5t115.5 71.5v-112z" />
+<glyph unicode="&#xd6;" d="M524 1483v164h164v-164h-164zM827 1483v164h164v-164h-164zM758 1384q633 0 633 -700t-633 -700t-633 700t633 700zM758 123q252 0 368.5 135t116.5 426t-116.5 426t-368.5 135t-369 -135t-117 -426t117 -426t369 -135z" />
+<glyph unicode="&#xd7;" horiz-adv-x="985" d="M705 160l-209 276l-207 -276h-131l272 364l-272 365h131l207 -277l209 277h131l-273 -365l273 -364h-131z" />
+<glyph unicode="&#xd8;" d="M1415 1366l-160 -188q137 -174 138 -494q0 -702 -635 -702q-254 0 -410 118l-86 -100h-160l158 188q-135 172 -135 496q0 700 633 700q256 0 411 -118l86 100h160zM272 684q0 -252 84 -383l721 856q-115 88 -319 88q-252 0 -369 -135t-117 -426zM1245 684q0 244 -84 381 l-721 -856q115 -88 318 -88q254 0 370.5 135t116.5 428z" />
+<glyph unicode="&#xd9;" horiz-adv-x="1476" d="M672 1718l116 -235h-96l-172 235h152zM1141 1366h147v-805q0 -281 -143.5 -429t-411.5 -148t-411.5 148.5t-143.5 428.5v805h148v-813q0 -434 407.5 -434t407.5 434v813z" />
+<glyph unicode="&#xda;" horiz-adv-x="1476" d="M795 1718h151l-170 -235h-98zM1141 1366h147v-805q0 -281 -143.5 -429t-411.5 -148t-411.5 148.5t-143.5 428.5v805h148v-813q0 -434 407.5 -434t407.5 434v813z" />
+<glyph unicode="&#xdb;" horiz-adv-x="1476" d="M776 1731l164 -248h-115l-92 145l-92 -145h-115l164 248h86zM1141 1366h147v-805q0 -281 -143.5 -429t-411.5 -148t-411.5 148.5t-143.5 428.5v805h148v-813q0 -434 407.5 -434t407.5 434v813z" />
+<glyph unicode="&#xdc;" horiz-adv-x="1476" d="M500 1483v164h164v-164h-164zM803 1483v164h164v-164h-164zM1141 1366h147v-805q0 -281 -143.5 -429t-411.5 -148t-411.5 148.5t-143.5 428.5v805h148v-813q0 -434 407.5 -434t407.5 434v813z" />
+<glyph unicode="&#xdd;" horiz-adv-x="1224" d="M655 1718h150l-170 -235h-96zM1012 1366h178l-508 -739v-627h-147v627l-510 739h178l405 -596z" />
+<glyph unicode="&#xde;" horiz-adv-x="1167" d="M590 1159q227 0 349 -109.5t122 -314.5t-122 -313.5t-349 -108.5h-266v-313h-148v1366h148v-207h266zM569 455q109 0 181.5 23.5t105.5 68.5t45 88t12 100.5t-12 100.5t-45 88t-105.5 68.5t-181.5 23.5h-245v-561h245z" />
+<glyph unicode="&#xdf;" horiz-adv-x="1255" d="M889 705q10 -4 27.5 -12.5t61.5 -39t76.5 -66.5t60.5 -94.5t28 -123.5q0 -170 -150.5 -269.5t-384.5 -99.5v133q162 0 274.5 61.5t112.5 188.5q0 129 -120.5 188.5t-266.5 59.5v129q145 0 232.5 62.5t87.5 181.5q0 123 -85 183t-222 60q-141 0 -217 -87t-76 -300v-860 h-148v868q0 113 23.5 203t73 162t136.5 111.5t208 39.5q229 0 341.5 -112.5t112.5 -267.5q0 -51 -19.5 -100.5t-46 -84.5t-54 -61.5t-46.5 -40.5z" />
+<glyph unicode="&#xe0;" horiz-adv-x="1093" d="M522 1040q215 0 328 -108.5t113 -315.5v-309q0 -98 -45.5 -167.5t-117 -100.5t-134 -43t-123.5 -12q-47 0 -96.5 6t-112 27.5t-108.5 55t-78.5 96t-32.5 144.5q0 70 25.5 125.5t62.5 90t94 59t101 36t104.5 17.5t86 7t60.5 1l164 -10q0 137 -75.5 195.5t-223.5 58.5 q-166 0 -299 -49v143q151 53 307 53zM815 307v197q-68 12 -182 12q-371 0 -371 -203q0 -193 281 -192q272 0 272 186zM506 1391l117 -236h-97l-170 236h150z" />
+<glyph unicode="&#xe1;" horiz-adv-x="1093" d="M522 1040q215 0 328 -108.5t113 -315.5v-309q0 -98 -45.5 -167.5t-117 -100.5t-134 -43t-123.5 -12q-47 0 -96.5 6t-112 27.5t-108.5 55t-78.5 96t-32.5 144.5q0 70 25.5 125.5t62.5 90t94 59t101 36t104.5 17.5t86 7t60.5 1l164 -10q0 137 -75.5 195.5t-223.5 58.5 q-166 0 -299 -49v143q151 53 307 53zM815 307v197q-68 12 -182 12q-371 0 -371 -203q0 -193 281 -192q272 0 272 186zM584 1391h151l-170 -236h-98z" />
+<glyph unicode="&#xe2;" horiz-adv-x="1093" d="M522 1040q215 0 328 -108.5t113 -315.5v-309q0 -98 -45.5 -167.5t-117 -100.5t-134 -43t-123.5 -12q-47 0 -96.5 6t-112 27.5t-108.5 55t-78.5 96t-32.5 144.5q0 70 25.5 125.5t62.5 90t94 59t101 36t104.5 17.5t86 7t60.5 1l164 -10q0 137 -75.5 195.5t-223.5 58.5 q-166 0 -299 -49v143q151 53 307 53zM815 307v197q-68 12 -182 12q-371 0 -371 -203q0 -193 281 -192q272 0 272 186zM612 1401l164 -246h-114l-93 143l-92 -143h-115l164 246h86z" />
+<glyph unicode="&#xe3;" horiz-adv-x="1093" d="M522 1040q215 0 328 -108.5t113 -315.5v-309q0 -98 -45.5 -167.5t-117 -100.5t-134 -43t-123.5 -12q-47 0 -96.5 6t-112 27.5t-108.5 55t-78.5 96t-32.5 144.5q0 70 25.5 125.5t62.5 90t93 59t101 36t105.5 17.5t85 7t59.5 1l166 -10q0 137 -75.5 195.5t-223.5 58.5 q-150 0 -299 -47v141q141 53 307 53zM815 307v197q-68 12 -182 12q-371 0 -371 -201q0 -195 281 -194q272 0 272 186zM846 1198q-53 -66 -114.5 -73t-118.5 23l-112 59q-56 30 -117.5 23t-115.5 -73v117q53 66 114.5 72t118.5 -24l112 -59q56 -30 118 -24t115 72v-113z" />
+<glyph unicode="&#xe4;" horiz-adv-x="1093" d="M336 1155v162h164v-162h-164zM639 1155v162h164v-162h-164zM522 1040q215 0 328 -108.5t113 -315.5v-309q0 -98 -45.5 -167.5t-117 -100.5t-134 -43t-123.5 -12q-47 0 -96.5 6t-112 27.5t-108.5 55t-78.5 96t-32.5 144.5q0 70 25.5 125.5t62.5 90t94 59t101 36 t104.5 17.5t86 7t60.5 1l164 -10q0 137 -75.5 195.5t-223.5 58.5q-166 0 -299 -49v143q151 53 307 53zM815 307v197q-68 12 -182 12q-371 0 -371 -203q0 -193 281 -192q272 0 272 186z" />
+<glyph unicode="&#xe5;" horiz-adv-x="1093" d="M522 1040q215 0 328 -108.5t113 -315.5v-309q0 -98 -45.5 -167.5t-117 -100.5t-134 -43t-123.5 -12q-47 0 -96.5 6t-112 27.5t-108.5 55t-78.5 96t-32.5 144.5q0 70 25.5 125.5t62.5 90t94 59t101 36t104.5 17.5t86 7t60.5 1l164 -10q0 137 -75.5 195.5t-223.5 58.5 q-166 0 -299 -49v143q151 53 307 53zM815 307v197q-68 12 -182 12q-371 0 -371 -203q0 -193 281 -192q272 0 272 186zM559 1432q80 0 123 -43t43 -125t-43 -125t-123 -43t-123 43t-43 125t43 125t123 43zM559 1163q49 0 70.5 23.5t21.5 77t-21.5 76t-70.5 22.5 q-51 0 -71.5 -22.5t-20.5 -76t20.5 -77t71.5 -23.5z" />
+<glyph unicode="&#xe6;" horiz-adv-x="1824" d="M1255 1040q94 0 171 -29.5t122 -69.5t79 -104.5t48.5 -109.5t22.5 -108.5t8 -78.5v-44l-4 -72h-746q14 -154 94 -223.5t240 -69.5q219 0 350 76v-152q-154 -72 -366 -71q-248 0 -365 151q-104 -152 -370 -151q-47 0 -96.5 6t-112 27.5t-108.5 55t-78.5 96t-32.5 144.5 q0 70 25.5 125.5t62.5 90t93 59t101 36t105.5 17.5t85 7t59.5 1l166 -10q0 137 -76 195.5t-223 58.5q-166 0 -299 -49v143q152 53 305 53q268 0 377 -168q112 168 362 168zM809 307v197q-66 12 -180 12q-371 0 -371 -203q0 -193 281 -192q270 0 270 186zM956 555h598 q0 35 -8 78t-33.5 110.5t-92 112.5t-165.5 45q-150 0 -219.5 -79t-79.5 -267z" />
+<glyph unicode="&#xe7;" horiz-adv-x="966" d="M614 899q-182 0 -265 -92t-83 -295q0 -205 83 -296t265 -91q154 0 287 57v-143q-115 -41 -225 -53l-127 -230h-156l164 228q-86 4 -157.5 30.5t-138 83t-104.5 162t-38 252.5q0 156 43 265.5t116.5 163.5t150.5 76.5t169 22.5q154 0 303 -57v-141q-140 57 -287 57z" />
+<glyph unicode="&#xe8;" horiz-adv-x="1136" d="M578 1040q94 0 170.5 -29.5t121.5 -69.5t79 -104.5t48.5 -109.5t22.5 -108.5t8 -78.5v-44l-4 -72h-745q14 -154 94 -223.5t237 -69.5q223 0 351 76v-152q-150 -72 -365 -71q-90 0 -165 21.5t-147.5 74.5t-113.5 159.5t-41 258.5v10q-2 532 449 532zM279 555h598 q0 35 -8.5 78t-34 110.5t-92 112.5t-164.5 45q-152 0 -220.5 -79t-78.5 -267zM547 1391l117 -236h-99l-170 236h152z" />
+<glyph unicode="&#xe9;" horiz-adv-x="1136" d="M578 1040q94 0 170.5 -29.5t121.5 -69.5t79 -104.5t48.5 -109.5t22.5 -108.5t8 -78.5v-44l-4 -72h-745q14 -154 94 -223.5t237 -69.5q223 0 351 76v-152q-150 -72 -365 -71q-90 0 -165 21.5t-147.5 74.5t-113.5 159.5t-41 258.5v10q-2 532 449 532zM279 555h598 q0 35 -8.5 78t-34 110.5t-92 112.5t-164.5 45q-152 0 -220.5 -79t-78.5 -267zM623 1391h151l-170 -236h-98z" />
+<glyph unicode="&#xea;" horiz-adv-x="1136" d="M578 1040q94 0 170.5 -29.5t121.5 -69.5t79 -104.5t48.5 -109.5t22.5 -108.5t8 -78.5v-44l-4 -72h-745q14 -154 94 -223.5t237 -69.5q223 0 351 76v-152q-150 -72 -365 -71q-90 0 -165 21.5t-147.5 74.5t-113.5 159.5t-41 258.5v10q-2 532 449 532zM279 555h598 q0 35 -8.5 78t-34 110.5t-92 112.5t-164.5 45q-152 0 -220.5 -79t-78.5 -267zM621 1401l163 -246h-114l-92 143l-93 -143h-114l164 246h86z" />
+<glyph unicode="&#xeb;" horiz-adv-x="1136" d="M578 1040q94 0 170.5 -29.5t121.5 -69.5t79 -104.5t48.5 -109.5t22.5 -108.5t8 -78.5v-44l-4 -72h-745q14 -154 94 -223.5t237 -69.5q223 0 351 76v-152q-150 -72 -365 -71q-90 0 -165 21.5t-147.5 74.5t-113.5 159.5t-41 258.5v10q-2 532 449 532zM279 555h598 q0 35 -8.5 78t-34 110.5t-92 112.5t-164.5 45q-152 0 -220.5 -79t-78.5 -267zM344 1155v162h164v-162h-164zM647 1155v162h164v-162h-164z" />
+<glyph unicode="&#xec;" horiz-adv-x="552" d="M203 0v1022h147v-1022h-147zM209 1391l117 -236h-99l-170 236h152z" />
+<glyph unicode="&#xed;" horiz-adv-x="552" d="M350 0v1022h-147v-1022h147zM342 1391h152l-170 -236h-97z" />
+<glyph unicode="&#xee;" horiz-adv-x="552" d="M350 0v1022h-147v-1022h147zM317 1401l166 -246h-114l-93 143l-94 -143h-114l165 246h84z" />
+<glyph unicode="&#xef;" horiz-adv-x="552" d="M350 0v1022h-147v-1022h147zM43 1155v162h162v-162h-162zM346 1155v162h162v-162h-162z" />
+<glyph unicode="&#xf0;" horiz-adv-x="1193" d="M852 1223q197 -193 197 -596q0 -643 -465 -643q-123 0 -216.5 41t-145.5 109.5t-77.5 147t-25.5 162.5q0 199 125 314.5t340 115.5q186 0 307 -90q-25 244 -174 365l-230 -129l-55 98l170 94q-86 33 -192 33q-41 0 -111 -8v137q66 10 127 10q184 0 328 -86l190 107 l53 -98zM584 123q43 0 70.5 3t78.5 29.5t83 75t57.5 148.5t27.5 242q-111 117 -317 116q-154 0 -236 -75.5t-82 -215.5q0 -41 9.5 -84t38 -103t98.5 -98t172 -38z" />
+<glyph unicode="&#xf1;" horiz-adv-x="1189" d="M600 1040q193 0 299.5 -98t106.5 -276v-666h-148v666q0 43 -9 76.5t-35 71.5t-84 58.5t-146 20.5q-129 0 -269 -41v-852h-147v940q201 100 432 100zM874 1198q-53 -66 -114.5 -73t-117.5 23l-113 59q-56 30 -116.5 23t-113.5 -73v117q53 66 113.5 72t116.5 -24l113 -59 q56 -30 117.5 -24t114.5 72v-113z" />
+<glyph unicode="&#xf2;" horiz-adv-x="1155" d="M100 512q0 156 43 265.5t117 163.5t151.5 76.5t170 22.5t169 -22.5t150.5 -76.5t117 -163.5t43 -265.5t-43 -265.5t-117 -163.5t-150.5 -76.5t-169 -22.5t-170 22.5t-151.5 76.5t-117 163.5t-43 265.5zM248 512q0 -207 80 -300t254 -93t252.5 94t78.5 299t-78.5 299 t-252.5 94t-254 -93t-80 -300zM514 1391l117 -236h-99l-170 236h152z" />
+<glyph unicode="&#xf3;" horiz-adv-x="1155" d="M581.5 1040q92.5 0 169 -22.5t150.5 -76.5t117 -163.5t43 -265.5t-43 -265.5t-117 -163.5t-150.5 -76.5t-169 -22.5t-170 22.5t-151.5 76.5t-117 163.5t-43 265.5t43 265.5t117 163.5t151.5 76.5t170 22.5zM582 119q174 0 252.5 94t78.5 299t-78.5 299t-252.5 94 t-254 -93t-80 -300t80 -300t254 -93zM647 1391h152l-170 -236h-99z" />
+<glyph unicode="&#xf4;" horiz-adv-x="1155" d="M100 512q0 156 43 265.5t117 163.5t151.5 76.5t170 22.5t169 -22.5t150.5 -76.5t117 -163.5t43 -265.5t-43 -265.5t-117 -163.5t-150.5 -76.5t-169 -22.5t-170 22.5t-151.5 76.5t-117 163.5t-43 265.5zM248 512q0 -207 80 -300t254 -93t252.5 94t78.5 299t-78.5 299 t-252.5 94t-254 -93t-80 -300zM623 1401l165 -246h-114l-92 143l-95 -143h-114l166 246h84z" />
+<glyph unicode="&#xf5;" horiz-adv-x="1155" d="M100 512q0 156 43 265.5t117 163.5t150.5 76.5t169 22.5t170 -22.5t151.5 -76.5t117 -163.5t43 -265.5t-43 -265.5t-117 -163.5t-151.5 -76.5t-170 -22.5t-169 22.5t-150.5 76.5t-117 163.5t-43 265.5zM248 512q0 -207 79 -300t253 -93t253.5 93t79.5 300t-79.5 300 t-253.5 93t-253 -93t-79 -300zM877 1198q-53 -66 -115 -73t-118 23l-113 59q-56 30 -116.5 24t-113.5 -72v115q53 66 113.5 73t116.5 -23l113 -60q56 -31 117.5 -24t115.5 73v-115z" />
+<glyph unicode="&#xf6;" horiz-adv-x="1155" d="M100 512q0 156 43 265.5t117 163.5t151.5 76.5t170 22.5t169 -22.5t150.5 -76.5t117 -163.5t43 -265.5t-43 -265.5t-117 -163.5t-150.5 -76.5t-169 -22.5t-170 22.5t-151.5 76.5t-117 163.5t-43 265.5zM248 512q0 -207 80 -300t254 -93t252.5 94t78.5 299t-78.5 299 t-252.5 94t-254 -93t-80 -300zM348 1155v162h162v-162h-162zM651 1155v162h162v-162h-162z" />
+<glyph unicode="&#xf7;" horiz-adv-x="1286" d="M561 735v164h164v-164h-164zM561 152v163h164v-163h-164zM1059 465v123h-832v-123h832z" />
+<glyph unicode="&#xf8;" horiz-adv-x="1175" d="M938 1022h160l-125 -150q94 -131 94 -360q0 -156 -43 -265.5t-116.5 -163.5t-150.5 -76.5t-169 -22.5q-182 0 -297 79l-55 -63h-160l127 152q-96 133 -97 360q0 156 43.5 265.5t117 163.5t151.5 76.5t170 22.5q180 0 297 -82zM254 512q0 -158 45 -246l496 586 q-78 53 -207 53q-174 0 -254 -93t-80 -300zM920 512q0 156 -46 246l-493 -588q76 -51 207 -51q174 0 253 93t79 300z" />
+<glyph unicode="&#xf9;" horiz-adv-x="1202" d="M877 1022h147v-592q0 -213 -111.5 -329.5t-316.5 -116.5t-316.5 116.5t-111.5 329.5v592h147v-600q0 -156 68 -228.5t213 -72.5q143 0 212 72.5t69 228.5v600zM535 1391l116 -236h-98l-170 236h152z" />
+<glyph unicode="&#xfa;" horiz-adv-x="1202" d="M877 1022h147v-592q0 -213 -111.5 -329.5t-316.5 -116.5t-316.5 116.5t-111.5 329.5v592h147v-600q0 -156 68 -228.5t213 -72.5q143 0 212 72.5t69 228.5v600zM657 1391h150l-170 -236h-96z" />
+<glyph unicode="&#xfb;" horiz-adv-x="1202" d="M877 1022h147v-592q0 -213 -111.5 -329.5t-316.5 -116.5t-316.5 116.5t-111.5 329.5v592h147v-600q0 -156 68 -228.5t213 -72.5q143 0 212 72.5t69 228.5v600zM637 1401l166 -246h-115l-92 143l-92 -143h-115l164 246h84z" />
+<glyph unicode="&#xfc;" horiz-adv-x="1202" d="M877 1022h147v-592q0 -213 -111.5 -329.5t-316.5 -116.5t-316.5 116.5t-111.5 329.5v592h147v-600q0 -156 68 -228.5t213 -72.5q143 0 212 72.5t69 228.5v600zM362 1155v162h164v-162h-164zM666 1155v162h163v-162h-163z" />
+<glyph unicode="&#xfd;" horiz-adv-x="1028" d="M807 1022h158l-418 -1122q-109 -295 -320 -295q-51 0 -98 18v135q41 -18 88 -18q63 0 118.5 68.5t80.5 138.5l24 69l-377 1006h158l293 -809zM565 1391h152l-170 -236h-98z" />
+<glyph unicode="&#xfe;" horiz-adv-x="1136" d="M569 1026q70 0 131.5 -12.5t125 -47t109.5 -90t74.5 -149.5t28.5 -217q0 -152 -42 -258.5t-114.5 -159.5t-148.5 -74.5t-164 -21.5q-129 0 -252 41v-414h-147v1776h147v-414q123 41 252 41zM569 133q170 0 246 89t76 288t-76 289t-246 90q-135 0 -252 -51v-654 q117 -51 252 -51z" />
+<glyph unicode="&#xff;" horiz-adv-x="1028" d="M807 1022h158l-418 -1122q-109 -295 -320 -295q-51 0 -98 18v135q41 -18 88 -18q63 0 118.5 68.5t80.5 138.5l24 69l-377 1006h158l293 -809zM279 1155v162h161v-162h-161zM582 1155v162h161v-162h-161z" />
+<glyph unicode="&#x152;" horiz-adv-x="2029" d="M1894 1227h-716v-471h628v-144h-628v-473h716v-139h-864v27q-117 -43 -274 -43q-633 0 -633 700t633 700q160 0 274 -45v27h864v-139zM756 123q170 0 274 59v1004q-109 59 -274 59q-252 0 -369 -135t-117 -426t117 -426t369 -135z" />
+<glyph unicode="&#x153;" horiz-adv-x="1921" d="M1356 1040q94 0 170 -29.5t122 -69.5t78.5 -104.5t47 -109.5t22.5 -108.5t8 -78.5v-44l-2 -72h-745q14 -154 94 -223.5t238 -69.5q219 0 350 76v-152q-150 -72 -365 -71q-276 0 -393 190q-119 -190 -399 -190q-92 0 -169 22.5t-151 76.5t-117 163.5t-43 265.5t43 265.5 t117 163.5t150.5 76.5t169.5 22.5q279 0 397 -186q113 186 377 186zM582 119q174 0 253.5 93t79.5 300t-79.5 300t-253.5 93t-253 -93t-79 -300t79 -300t253 -93zM1055 555h600q0 33 -8.5 77t-35 111.5t-93 112.5t-162.5 45q-152 0 -221.5 -79t-79.5 -267z" />
+<glyph unicode="&#x178;" horiz-adv-x="1224" d="M375 1483v164h164v-164h-164zM678 1483v164h164v-164h-164zM1012 1366h178l-508 -739v-627h-147v627l-510 739h178l405 -596z" />
+<glyph unicode="&#x2c6;" horiz-adv-x="823" d="M457 1401l164 -246h-115l-92 143l-92 -143h-115l166 246h84z" />
+<glyph unicode="&#x2dc;" horiz-adv-x="1038" d="M791 1198q-53 -66 -115 -73t-118 23l-113 59q-56 30 -116.5 23t-113.5 -73v117q53 66 113.5 72t116.5 -24l113 -59q56 -30 117.5 -24t115.5 72v-113z" />
+<glyph unicode="&#x2000;" horiz-adv-x="878" />
+<glyph unicode="&#x2001;" horiz-adv-x="1759" />
+<glyph unicode="&#x2002;" horiz-adv-x="878" />
+<glyph unicode="&#x2003;" horiz-adv-x="1759" />
+<glyph unicode="&#x2004;" horiz-adv-x="585" />
+<glyph unicode="&#x2005;" horiz-adv-x="438" />
+<glyph unicode="&#x2006;" horiz-adv-x="292" />
+<glyph unicode="&#x2007;" horiz-adv-x="292" />
+<glyph unicode="&#x2008;" horiz-adv-x="219" />
+<glyph unicode="&#x2009;" horiz-adv-x="350" />
+<glyph unicode="&#x200a;" horiz-adv-x="96" />
+<glyph unicode="&#x2010;" horiz-adv-x="950" d="M786 682v-143h-624v143h624z" />
+<glyph unicode="&#x2011;" horiz-adv-x="950" d="M786 682v-143h-624v143h624z" />
+<glyph unicode="&#x2012;" horiz-adv-x="950" d="M786 682v-143h-624v143h624z" />
+<glyph unicode="&#x2013;" horiz-adv-x="1146" d="M1001 655v-127h-860v127h860z" />
+<glyph unicode="&#x2014;" horiz-adv-x="1824" d="M1663 664v-136h-1501v136h1501z" />
+<glyph unicode="&#x2018;" horiz-adv-x="522" d="M264 1384l152 -401h-148l-172 401h168z" />
+<glyph unicode="&#x2019;" horiz-adv-x="522" d="M248 1384h168l-172 -401h-148z" />
+<glyph unicode="&#x201a;" horiz-adv-x="614" d="M299 172h166l-170 -401h-148z" />
+<glyph unicode="&#x201c;" horiz-adv-x="800" d="M543 1384l151 -401h-147l-172 401h168zM264 1384l152 -401h-148l-172 401h168z" />
+<glyph unicode="&#x201d;" horiz-adv-x="792" d="M248 1384h168l-172 -401h-148zM526 1384h168l-172 -401h-147z" />
+<glyph unicode="&#x201e;" horiz-adv-x="892" d="M299 172h166l-170 -401h-148zM578 172h167l-172 -401h-147z" />
+<glyph unicode="&#x2022;" horiz-adv-x="849" d="M657 684q0 -98 -69.5 -168t-165.5 -70q-98 0 -168 70t-70 168t70 167t168 69q96 0 165.5 -69t69.5 -167z" />
+<glyph unicode="&#x2026;" horiz-adv-x="1576" d="M219 0v164h164v-164h-164zM1200 0v164h162v-164h-162zM711 0v164h161v-164h-161z" />
+<glyph unicode="&#x202f;" horiz-adv-x="350" />
+<glyph unicode="&#x2039;" horiz-adv-x="710" d="M608 911l-364 -389l364 -391h-198l-347 391l347 389h198z" />
+<glyph unicode="&#x203a;" horiz-adv-x="776" d="M137 911h197l348 -389l-348 -391h-197l363 391z" />
+<glyph unicode="&#x205f;" horiz-adv-x="438" />
+<glyph unicode="&#x20ac;" horiz-adv-x="1390" d="M883 1245q-207 0 -325 -84t-157 -260h658v-123h-674q-4 -61 -4 -94q0 -37 4 -94h674v-123h-658q39 -176 157 -260t325 -84q209 0 399 80v-142q-203 -78 -416 -77q-524 0 -614 483h-150v123h136q-4 61 -4.5 94t4.5 94h-136v123h150q90 483 614 483q215 0 416 -79v-142 q-194 82 -399 82z" />
+<glyph unicode="&#x2122;" horiz-adv-x="1550" d="M100 1366h557v-72h-241v-610h-74v610h-242v72zM1313 1366h80v-682h-74v561l-242 -348l-241 348v-561h-74v682h80l235 -346z" />
+<glyph unicode="&#xe000;" horiz-adv-x="1020" d="M0 1020h1020v-1020h-1020v1020z" />
+<glyph unicode="&#xfb01;" horiz-adv-x="1202" d="M1040 0v1022h-147v-1022h147zM1049 1366v-162h-164v162h164zM616 1317q-39 0 -59 -2t-54 -14.5t-52.5 -35t-33 -70.5t-14.5 -116v-55h287v-137h-287v-887h-143v887h-176v137h176v53q0 106 28.5 182t63.5 112t89.5 56.5t82 22.5t66.5 2q53 0 100 -10v-133q-41 8 -74 8z " />
+<glyph unicode="&#xfb02;" horiz-adv-x="1220" d="M1040 0v1411h-147v-1411h147zM616 1317q-39 0 -59 -2t-54 -14.5t-52.5 -35t-33 -70.5t-14.5 -116v-55h287v-137h-287v-887h-143v887h-176v137h176v53q0 106 28.5 182t63.5 112t89.5 56.5t82 22.5t66.5 2q53 0 100 -10v-133q-41 8 -74 8z" />
+<glyph unicode="&#xfb03;" horiz-adv-x="1892" d="M1700 0v1022h-147v-1022h147zM1708 1366v-162h-163v162h163zM1288 1317q-49 0 -74.5 -4t-61.5 -24.5t-53 -73t-17 -136.5v-57h280v-135h-280v-887h-148v887h-176v135h176v55q0 106 27.5 182t62.5 112t89.5 56.5t83 22.5t67.5 2q55 0 98 -12v-131q-41 8 -74 8zM612 1317 q-49 0 -74.5 -4t-61.5 -24.5t-53 -73t-17 -136.5v-57h280v-135h-280v-887h-148v887h-176v135h176v55q0 106 27.5 182t62.5 112t89.5 56.5t83 22.5t67.5 2q55 0 98 -12v-131q-41 8 -74 8z" />
+<glyph unicode="&#xfb04;" horiz-adv-x="1904" d="M1706 0h-147v1411h147v-1411zM1288 1317q-49 0 -74.5 -4t-61.5 -24.5t-53 -73t-17 -136.5v-57h280v-135h-280v-887h-148v887h-176v135h176v55q0 106 27.5 182t62.5 112t89.5 56.5t83 22.5t67.5 2q55 0 98 -12v-131q-41 8 -74 8zM612 1317q-49 0 -74.5 -4t-61.5 -24.5 t-53 -73t-17 -136.5v-57h280v-135h-280v-887h-148v887h-176v135h176v55q0 106 27.5 182t62.5 112t89.5 56.5t83 22.5t67.5 2q55 0 98 -12v-131q-41 8 -74 8z" />
+</font>
+</defs></svg> 
\ No newline at end of file
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/fonts/opensans.css
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/fonts/opensans.css	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/fonts/opensans.css	(revision 47450)
@@ -0,0 +1,13 @@
+/* Copyright (C) YOOtheme GmbH, YOOtheme Proprietary Use License (http://www.yootheme.com/license) */
+
+@font-face {
+	font-family: 'OpenSansLight';
+	src: url('OpenSans-Light-webfont.eot');
+	src: url('OpenSans-Light-webfont.eot?#iefix') format('embedded-opentype'),
+		url('OpenSans-Light-webfont.woff') format('woff'),
+		url('OpenSans-Light-webfont.ttf') format('truetype'),
+		url('OpenSans-Light-webfont.svg#OpenSansLight') format('svg');
+	font-weight: normal;
+	font-style: normal;
+}
+
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/instructions.jsp
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/instructions.jsp	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/instructions.jsp	(revision 47450)
@@ -0,0 +1,43 @@
+<%@ page contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<%@ taglib prefix="s" uri="/struts-tags"%>
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title><s:text name="instructions.welcome"/></title>
+<link href="jsps/style.css" rel="stylesheet" type="text/css" media="screen" />
+
+ <link href="jsps/favicon.ico" rel="shortcut icon" type="image/x-icon" />
+</head>	
+<body>
+<div id="wrapper">
+	<jsp:include page="menu.jsp"/>
+	<div id="page">
+	<div id="page-bgtop">
+		<div id="middle">
+            <div class="middle-b">
+                <div class="background">
+                
+        			<div id="main">
+                        <div id="main_container" class="clearfix">
+                            <div id="mainmiddle" class="floatbox">
+                                <h1 class="title"><s:text name="instructions.welcome"/></h1>
+                                <div class="entry">
+                                	<s:text name="instructions.message"/>
+                                </div>
+                             </div>
+                        </div>
+                    </div>
+                 </div>
+			</div>
+		</div>
+		<div style="clear: both;">&nbsp;</div>
+	</div>
+    <!-- NMI This needs to be the same in all pages and the text is some properties file -->
+    <div id="footer"> 
+		<jsp:include page="footer.jsp"/>
+	</div>
+</div>
+</div>
+</body>
+</html>
\ No newline at end of file
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/help2.jsp
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/help2.jsp	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/help2.jsp	(revision 47450)
@@ -0,0 +1,131 @@
+<%@ page contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<%@ taglib prefix="s" uri="/struts-tags"%>
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<link href="jsps/favicon.ico" rel="shortcut icon" type="image/x-icon" />
+<link href="jsps/style.css" rel="stylesheet" type="text/css" media="screen" />
+<title><s:text name="help"/></title>
+</head>
+<body>
+<div id="wrapper">
+	<jsp:include page="menu.jsp"/>
+	<div id="page">
+	<div id="page-bgtop">
+		<div id="content">
+			<div class="post">
+				<h2 class="title"><a name="addOaiContent"><s:text name="help.addOaiContent.title"/></a></h2>
+				<div class="entry">
+					<s:text name="help.addOaiContent.message"/>
+				</div>
+			</div>
+			<div class="post">
+				<h2 class="title"><a name="addOaiUsage"><s:text name="help.addOaiUsage.title"/></a></h2>
+				<div class="entry">
+					<s:text name="help.addOaiUsage.message"/>
+				</div>
+			</div>
+			<%--<div class="post">
+				<h2 class="title"><a name="addRule"><s:text name="help.addRule.title"/></a></h2>
+				<div class="entry">
+					<s:text name="help.addRule.message"/>
+				</div>
+			</div>--%>
+			<div class="post">
+				<h2 class="title"><a name="browseJobs"><s:text name="help.browseJobs.title"/></a></h2>
+				<div class="entry">
+					<s:text name="help.browseJobs.message"/>
+				</div>
+			</div>
+			<%--<div class="post">
+				<h2 class="title"><a name="chooseJobCategory"><s:text name="help.chooseJobCategory.title"/></a></h2>
+				<div class="entry">
+					<s:text name="help.chooseJobCategory.message"/>
+				</div>
+			</div>
+			<div class="post">
+				<h2 class="title"><a name="chooseRuleCategory"><s:text name="help.chooseRuleCategory.title"/></a></h2>
+				<div class="entry">
+					<s:text name="help.chooseRuleCategory.message"/>
+				</div>
+			</div>
+			<div class="post">
+				<h2 class="title"><a name="chooseRuleForEdit"><s:text name="help.chooseRuleForEdit.title"/></a></h2>
+				<div class="entry">
+					<s:text name="help.chooseRuleForEdit.message"/>
+				</div>
+			</div>
+			<div class="post">
+				<h2 class="title"><a name="chooseRuleSet"><s:text name="help.chooseRuleSet.title"/></a></h2>
+				<div class="entry">
+					<s:text name="help.chooseRuleSet.message"/>
+				</div>
+			</div>
+			<div class="post">
+				<h2 class="title"><a name="chooseRuleSetForDeletion"><s:text name="help.chooseRuleSetForDeletion.title"/></a></h2>
+				<div class="entry">
+					<s:text name="help.chooseRuleSetForDeletion.message"/>
+				</div>
+			</div>--%>
+			<div class="post">
+				<h2 class="title"><a name="createRuleSet"><s:text name="help.createRuleSet.title"/></a></h2>
+				<div class="entry">
+					<s:text name="help.createRuleSet.message"/>
+				</div>
+			</div>
+			<%--<div class="post">
+				<h2 class="title"><a name="deleteRule"><s:text name="help.deleteRule.title"/></a></h2>
+				<div class="entry">
+					<s:text name="help.deleteRule.message"/>
+				</div>
+			</div>--%>
+			<div class="post">
+				<h2 class="title"><a name="editRule"><s:text name="help.editRule.title"/></a></h2>
+				<div class="entry">
+					<s:text name="help.editRule.message"/>
+				</div>
+			</div>
+			<div class="post">
+				<h2 class="title"><a name="jobDetails"><s:text name="help.jobDetails.title"/></a></h2>
+				<div class="entry">
+					<s:text name="help.jobDetails.message"/>
+				</div>
+			</div>
+			<div class="post">
+				<h2 class="title"><a name="jobSummary"><s:text name="help.jobSummary.title"/></a></h2>
+				<div class="entry">
+					<s:text name="help.jobSummary.message"/>
+				</div>
+			</div>
+			<%--<div class="post">
+				<h2 class="title"><a name="login"><s:text name="help.login.title"/></a></h2>
+				<div class="entry">
+					<s:text name="help.login.message"/>
+				</div>
+			</div>
+			<div class="post">
+				<h2 class="title"><a name="registration"><s:text name="help.registration.title"/></a></h2>
+				<div class="entry">
+					<s:text name="help.registration.message"/>
+				</div>
+			</div>--%>
+			<div class="post">
+				<h2 class="title"><a name="repoRegistration"><s:text name="help.repoRegistration.title"/></a></h2>
+				<div class="entry">
+					<s:text name="help.repoRegistration.message"/>
+				</div>
+			</div>
+			<%--<div class="post">
+				<h2 class="title"><a name="resetPassword"><s:text name="help.resetPassword.title"/></a></h2>
+				<div class="entry">
+					<s:text name="help.resetPassword.message"/>
+				</div>
+			</div>--%>
+		</div>
+		<div style="clear: both;">&nbsp;</div>
+	</div>
+	</div>
+</div>
+</body>
+</html>
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/favicon.ico
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/favicon.ico
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/favicon.ico	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/favicon.ico	(revision 47450)

Property changes on: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/favicon.ico
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/registration.jsp
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/registration.jsp	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/registration.jsp	(revision 47450)
@@ -0,0 +1,44 @@
+<%@ page contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<%@ taglib prefix="s" uri="/struts-tags"%>
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title><s:text name="registration.title"/></title>
+<link href="jsps/favicon.ico" rel="shortcut icon" type="image/x-icon" />
+<link href="jsps/style.css" rel="stylesheet" type="text/css" media="screen" />
+</head>
+<body>
+<div id="wrapper">
+	<jsp:include page="menu.jsp"/>
+	<div id="page">
+	<div id="page-bgtop">
+		<div class="content">
+			<div class="main">
+				<h2 class="title"><s:text name="registration.title"/></h2>
+				<s:text name="registration.description"/>
+				<%--<p class="meta"><a href='<s:url value="/jsps/help.jsp#registration"/>' target="_blank"><s:text name="help"/></a></p>--%>
+				<div class="entry">
+					<%-- <s:if test="%{@gr.uoa.di.validatorweb.configs.Constants@isModeLdap()}">
+						<s:text name="registration.ldap.message"/>
+					</s:if> --%>
+					<s:form action="Register">
+						<s:if test="%{repoMode.trim().toLowerCase().equals(\"dnet\")}">
+							<s:textfield name="username" key="registration.username"/>
+							<s:textfield name="firstName" key="registration.firstName"/>
+							<s:textfield name="lastName" key="registration.lastName"/>
+						</s:if>
+						<s:textfield name="email" key="registration.email"/>
+						<s:password name="password" key="registration.password"/>
+						<s:password name="repassword" key="registration.repassword"/>
+						<s:submit value="Register" cssClass="button-default"/>
+					</s:form>
+				</div>
+			</div>
+		</div>
+		
+	</div>
+	</div>
+</div>
+</body>
+</html>
\ No newline at end of file
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/fonts/kreon-regular-webfont.woff
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/fonts/kreon-regular-webfont.woff
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/fonts/kreon-regular-webfont.woff	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/fonts/kreon-regular-webfont.woff	(revision 47450)

Property changes on: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/fonts/kreon-regular-webfont.woff
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/fonts/YanoneKaffeesatz-Light-webfont.eot
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/fonts/YanoneKaffeesatz-Light-webfont.eot
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/fonts/YanoneKaffeesatz-Light-webfont.eot	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/fonts/YanoneKaffeesatz-Light-webfont.eot	(revision 47450)

Property changes on: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/fonts/YanoneKaffeesatz-Light-webfont.eot
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/js/mootools-1.2.5-core-nc.js
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/js/mootools-1.2.5-core-nc.js	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/js/mootools-1.2.5-core-nc.js	(revision 47450)
@@ -0,0 +1,4288 @@
+/*
+---
+
+name: Core
+
+description: The core of MooTools, contains all the base functions and the Native and Hash implementations. Required by all the other scripts.
+
+license: MIT-style license.
+
+copyright: Copyright (c) 2006-2008 [Valerio Proietti](http://mad4milk.net/).
+
+authors: The MooTools production team (http://mootools.net/developers/)
+
+inspiration:
+  - Class implementation inspired by [Base.js](http://dean.edwards.name/weblog/2006/03/base/) Copyright (c) 2006 Dean Edwards, [GNU Lesser General Public License](http://opensource.org/licenses/lgpl-license.php)
+  - Some functionality inspired by [Prototype.js](http://prototypejs.org) Copyright (c) 2005-2007 Sam Stephenson, [MIT License](http://opensource.org/licenses/mit-license.php)
+
+provides: [MooTools, Native, Hash.base, Array.each, $util]
+
+...
+*/
+
+var MooTools = {
+	'version': '1.2.5',
+	'build': '008d8f0f2fcc2044e54fdd3635341aaab274e757'
+};
+
+var Native = function(options){
+	options = options || {};
+	var name = options.name;
+	var legacy = options.legacy;
+	var protect = options.protect;
+	var methods = options.implement;
+	var generics = options.generics;
+	var initialize = options.initialize;
+	var afterImplement = options.afterImplement || function(){};
+	var object = initialize || legacy;
+	generics = generics !== false;
+
+	object.constructor = Native;
+	object.$family = {name: 'native'};
+	if (legacy && initialize) object.prototype = legacy.prototype;
+	object.prototype.constructor = object;
+
+	if (name){
+		var family = name.toLowerCase();
+		object.prototype.$family = {name: family};
+		Native.typize(object, family);
+	}
+
+	var add = function(obj, name, method, force){
+		if (!protect || force || !obj.prototype[name]) obj.prototype[name] = method;
+		if (generics) Native.genericize(obj, name, protect);
+		afterImplement.call(obj, name, method);
+		return obj;
+	};
+
+	object.alias = function(a1, a2, a3){
+		if (typeof a1 == 'string'){
+			var pa1 = this.prototype[a1];
+			if ((a1 = pa1)) return add(this, a2, a1, a3);
+		}
+		for (var a in a1) this.alias(a, a1[a], a2);
+		return this;
+	};
+
+	object.implement = function(a1, a2, a3){
+		if (typeof a1 == 'string') return add(this, a1, a2, a3);
+		for (var p in a1) add(this, p, a1[p], a2);
+		return this;
+	};
+
+	if (methods) object.implement(methods);
+
+	return object;
+};
+
+Native.genericize = function(object, property, check){
+	if ((!check || !object[property]) && typeof object.prototype[property] == 'function') object[property] = function(){
+		var args = Array.prototype.slice.call(arguments);
+		return object.prototype[property].apply(args.shift(), args);
+	};
+};
+
+Native.implement = function(objects, properties){
+	for (var i = 0, l = objects.length; i < l; i++) objects[i].implement(properties);
+};
+
+Native.typize = function(object, family){
+	if (!object.type) object.type = function(item){
+		return ($type(item) === family);
+	};
+};
+
+(function(){
+	var natives = {'Array': Array, 'Date': Date, 'Function': Function, 'Number': Number, 'RegExp': RegExp, 'String': String};
+	for (var n in natives) new Native({name: n, initialize: natives[n], protect: true});
+
+	var types = {'boolean': Boolean, 'native': Native, 'object': Object};
+	for (var t in types) Native.typize(types[t], t);
+
+	var generics = {
+		'Array': ["concat", "indexOf", "join", "lastIndexOf", "pop", "push", "reverse", "shift", "slice", "sort", "splice", "toString", "unshift", "valueOf"],
+		'String': ["charAt", "charCodeAt", "concat", "indexOf", "lastIndexOf", "match", "replace", "search", "slice", "split", "substr", "substring", "toLowerCase", "toUpperCase", "valueOf"]
+	};
+	for (var g in generics){
+		for (var i = generics[g].length; i--;) Native.genericize(natives[g], generics[g][i], true);
+	}
+})();
+
+var Hash = new Native({
+
+	name: 'Hash',
+
+	initialize: function(object){
+		if ($type(object) == 'hash') object = $unlink(object.getClean());
+		for (var key in object) this[key] = object[key];
+		return this;
+	}
+
+});
+
+Hash.implement({
+
+	forEach: function(fn, bind){
+		for (var key in this){
+			if (this.hasOwnProperty(key)) fn.call(bind, this[key], key, this);
+		}
+	},
+
+	getClean: function(){
+		var clean = {};
+		for (var key in this){
+			if (this.hasOwnProperty(key)) clean[key] = this[key];
+		}
+		return clean;
+	},
+
+	getLength: function(){
+		var length = 0;
+		for (var key in this){
+			if (this.hasOwnProperty(key)) length++;
+		}
+		return length;
+	}
+
+});
+
+Hash.alias('forEach', 'each');
+
+Array.implement({
+
+	forEach: function(fn, bind){
+		for (var i = 0, l = this.length; i < l; i++) fn.call(bind, this[i], i, this);
+	}
+
+});
+
+Array.alias('forEach', 'each');
+
+function $A(iterable){
+	if (iterable.item){
+		var l = iterable.length, array = new Array(l);
+		while (l--) array[l] = iterable[l];
+		return array;
+	}
+	return Array.prototype.slice.call(iterable);
+};
+
+function $arguments(i){
+	return function(){
+		return arguments[i];
+	};
+};
+
+function $chk(obj){
+	return !!(obj || obj === 0);
+};
+
+function $clear(timer){
+	clearTimeout(timer);
+	clearInterval(timer);
+	return null;
+};
+
+function $defined(obj){
+	return (obj != undefined);
+};
+
+function $each(iterable, fn, bind){
+	var type = $type(iterable);
+	((type == 'arguments' || type == 'collection' || type == 'array') ? Array : Hash).each(iterable, fn, bind);
+};
+
+function $empty(){};
+
+function $extend(original, extended){
+	for (var key in (extended || {})) original[key] = extended[key];
+	return original;
+};
+
+function $H(object){
+	return new Hash(object);
+};
+
+function $lambda(value){
+	return ($type(value) == 'function') ? value : function(){
+		return value;
+	};
+};
+
+function $merge(){
+	var args = Array.slice(arguments);
+	args.unshift({});
+	return $mixin.apply(null, args);
+};
+
+function $mixin(mix){
+	for (var i = 1, l = arguments.length; i < l; i++){
+		var object = arguments[i];
+		if ($type(object) != 'object') continue;
+		for (var key in object){
+			var op = object[key], mp = mix[key];
+			mix[key] = (mp && $type(op) == 'object' && $type(mp) == 'object') ? $mixin(mp, op) : $unlink(op);
+		}
+	}
+	return mix;
+};
+
+function $pick(){
+	for (var i = 0, l = arguments.length; i < l; i++){
+		if (arguments[i] != undefined) return arguments[i];
+	}
+	return null;
+};
+
+function $random(min, max){
+	return Math.floor(Math.random() * (max - min + 1) + min);
+};
+
+function $splat(obj){
+	var type = $type(obj);
+	return (type) ? ((type != 'array' && type != 'arguments') ? [obj] : obj) : [];
+};
+
+var $time = Date.now || function(){
+	return +new Date;
+};
+
+function $try(){
+	for (var i = 0, l = arguments.length; i < l; i++){
+		try {
+			return arguments[i]();
+		} catch(e){}
+	}
+	return null;
+};
+
+function $type(obj){
+	if (obj == undefined) return false;
+	if (obj.$family) return (obj.$family.name == 'number' && !isFinite(obj)) ? false : obj.$family.name;
+	if (obj.nodeName){
+		switch (obj.nodeType){
+			case 1: return 'element';
+			case 3: return (/\S/).test(obj.nodeValue) ? 'textnode' : 'whitespace';
+		}
+	} else if (typeof obj.length == 'number'){
+		if (obj.callee) return 'arguments';
+		else if (obj.item) return 'collection';
+	}
+	return typeof obj;
+};
+
+function $unlink(object){
+	var unlinked;
+	switch ($type(object)){
+		case 'object':
+			unlinked = {};
+			for (var p in object) unlinked[p] = $unlink(object[p]);
+		break;
+		case 'hash':
+			unlinked = new Hash(object);
+		break;
+		case 'array':
+			unlinked = [];
+			for (var i = 0, l = object.length; i < l; i++) unlinked[i] = $unlink(object[i]);
+		break;
+		default: return object;
+	}
+	return unlinked;
+};
+
+
+/*
+---
+
+name: Array
+
+description: Contains Array Prototypes like each, contains, and erase.
+
+license: MIT-style license.
+
+requires: [$util, Array.each]
+
+provides: Array
+
+...
+*/
+
+Array.implement({
+
+	every: function(fn, bind){
+		for (var i = 0, l = this.length; i < l; i++){
+			if (!fn.call(bind, this[i], i, this)) return false;
+		}
+		return true;
+	},
+
+	filter: function(fn, bind){
+		var results = [];
+		for (var i = 0, l = this.length; i < l; i++){
+			if (fn.call(bind, this[i], i, this)) results.push(this[i]);
+		}
+		return results;
+	},
+
+	clean: function(){
+		return this.filter($defined);
+	},
+
+	indexOf: function(item, from){
+		var len = this.length;
+		for (var i = (from < 0) ? Math.max(0, len + from) : from || 0; i < len; i++){
+			if (this[i] === item) return i;
+		}
+		return -1;
+	},
+
+	map: function(fn, bind){
+		var results = [];
+		for (var i = 0, l = this.length; i < l; i++) results[i] = fn.call(bind, this[i], i, this);
+		return results;
+	},
+
+	some: function(fn, bind){
+		for (var i = 0, l = this.length; i < l; i++){
+			if (fn.call(bind, this[i], i, this)) return true;
+		}
+		return false;
+	},
+
+	associate: function(keys){
+		var obj = {}, length = Math.min(this.length, keys.length);
+		for (var i = 0; i < length; i++) obj[keys[i]] = this[i];
+		return obj;
+	},
+
+	link: function(object){
+		var result = {};
+		for (var i = 0, l = this.length; i < l; i++){
+			for (var key in object){
+				if (object[key](this[i])){
+					result[key] = this[i];
+					delete object[key];
+					break;
+				}
+			}
+		}
+		return result;
+	},
+
+	contains: function(item, from){
+		return this.indexOf(item, from) != -1;
+	},
+
+	extend: function(array){
+		for (var i = 0, j = array.length; i < j; i++) this.push(array[i]);
+		return this;
+	},
+	
+	getLast: function(){
+		return (this.length) ? this[this.length - 1] : null;
+	},
+
+	getRandom: function(){
+		return (this.length) ? this[$random(0, this.length - 1)] : null;
+	},
+
+	include: function(item){
+		if (!this.contains(item)) this.push(item);
+		return this;
+	},
+
+	combine: function(array){
+		for (var i = 0, l = array.length; i < l; i++) this.include(array[i]);
+		return this;
+	},
+
+	erase: function(item){
+		for (var i = this.length; i--; i){
+			if (this[i] === item) this.splice(i, 1);
+		}
+		return this;
+	},
+
+	empty: function(){
+		this.length = 0;
+		return this;
+	},
+
+	flatten: function(){
+		var array = [];
+		for (var i = 0, l = this.length; i < l; i++){
+			var type = $type(this[i]);
+			if (!type) continue;
+			array = array.concat((type == 'array' || type == 'collection' || type == 'arguments') ? Array.flatten(this[i]) : this[i]);
+		}
+		return array;
+	},
+
+	hexToRgb: function(array){
+		if (this.length != 3) return null;
+		var rgb = this.map(function(value){
+			if (value.length == 1) value += value;
+			return value.toInt(16);
+		});
+		return (array) ? rgb : 'rgb(' + rgb + ')';
+	},
+
+	rgbToHex: function(array){
+		if (this.length < 3) return null;
+		if (this.length == 4 && this[3] == 0 && !array) return 'transparent';
+		var hex = [];
+		for (var i = 0; i < 3; i++){
+			var bit = (this[i] - 0).toString(16);
+			hex.push((bit.length == 1) ? '0' + bit : bit);
+		}
+		return (array) ? hex : '#' + hex.join('');
+	}
+
+});
+
+
+/*
+---
+
+name: String
+
+description: Contains String Prototypes like camelCase, capitalize, test, and toInt.
+
+license: MIT-style license.
+
+requires: Native
+
+provides: String
+
+...
+*/
+
+String.implement({
+
+	test: function(regex, params){
+		return ((typeof regex == 'string') ? new RegExp(regex, params) : regex).test(this);
+	},
+
+	contains: function(string, separator){
+		return (separator) ? (separator + this + separator).indexOf(separator + string + separator) > -1 : this.indexOf(string) > -1;
+	},
+
+	trim: function(){
+		return this.replace(/^\s+|\s+$/g, '');
+	},
+
+	clean: function(){
+		return this.replace(/\s+/g, ' ').trim();
+	},
+
+	camelCase: function(){
+		return this.replace(/-\D/g, function(match){
+			return match.charAt(1).toUpperCase();
+		});
+	},
+
+	hyphenate: function(){
+		return this.replace(/[A-Z]/g, function(match){
+			return ('-' + match.charAt(0).toLowerCase());
+		});
+	},
+
+	capitalize: function(){
+		return this.replace(/\b[a-z]/g, function(match){
+			return match.toUpperCase();
+		});
+	},
+
+	escapeRegExp: function(){
+		return this.replace(/([-.*+?^${}()|[\]\/\\])/g, '\\$1');
+	},
+
+	toInt: function(base){
+		return parseInt(this, base || 10);
+	},
+
+	toFloat: function(){
+		return parseFloat(this);
+	},
+
+	hexToRgb: function(array){
+		var hex = this.match(/^#?(\w{1,2})(\w{1,2})(\w{1,2})$/);
+		return (hex) ? hex.slice(1).hexToRgb(array) : null;
+	},
+
+	rgbToHex: function(array){
+		var rgb = this.match(/\d{1,3}/g);
+		return (rgb) ? rgb.rgbToHex(array) : null;
+	},
+
+	stripScripts: function(option){
+		var scripts = '';
+		var text = this.replace(/<script[^>]*>([\s\S]*?)<\/script>/gi, function(){
+			scripts += arguments[1] + '\n';
+			return '';
+		});
+		if (option === true) $exec(scripts);
+		else if ($type(option) == 'function') option(scripts, text);
+		return text;
+	},
+
+	substitute: function(object, regexp){
+		return this.replace(regexp || (/\\?\{([^{}]+)\}/g), function(match, name){
+			if (match.charAt(0) == '\\') return match.slice(1);
+			return (object[name] != undefined) ? object[name] : '';
+		});
+	}
+
+});
+
+
+/*
+---
+
+name: Function
+
+description: Contains Function Prototypes like create, bind, pass, and delay.
+
+license: MIT-style license.
+
+requires: [Native, $util]
+
+provides: Function
+
+...
+*/
+
+try {
+	delete Function.prototype.bind;
+} catch(e){}
+
+Function.implement({
+
+	extend: function(properties){
+		for (var property in properties) this[property] = properties[property];
+		return this;
+	},
+
+	create: function(options){
+		var self = this;
+		options = options || {};
+		return function(event){
+			var args = options.arguments;
+			args = (args != undefined) ? $splat(args) : Array.slice(arguments, (options.event) ? 1 : 0);
+			if (options.event) args = [event || window.event].extend(args);
+			var returns = function(){
+				return self.apply(options.bind || null, args);
+			};
+			if (options.delay) return setTimeout(returns, options.delay);
+			if (options.periodical) return setInterval(returns, options.periodical);
+			if (options.attempt) return $try(returns);
+			return returns();
+		};
+	},
+
+	run: function(args, bind){
+		return this.apply(bind, $splat(args));
+	},
+
+	pass: function(args, bind){
+		return this.create({bind: bind, arguments: args});
+	},
+
+	bind: function(bind, args){
+		return this.create({bind: bind, arguments: args});
+	},
+
+	bindWithEvent: function(bind, args){
+		return this.create({bind: bind, arguments: args, event: true});
+	},
+
+	attempt: function(args, bind){
+		return this.create({bind: bind, arguments: args, attempt: true})();
+	},
+
+	delay: function(delay, bind, args){
+		return this.create({bind: bind, arguments: args, delay: delay})();
+	},
+
+	periodical: function(periodical, bind, args){
+		return this.create({bind: bind, arguments: args, periodical: periodical})();
+	}
+
+});
+
+
+/*
+---
+
+name: Number
+
+description: Contains Number Prototypes like limit, round, times, and ceil.
+
+license: MIT-style license.
+
+requires: [Native, $util]
+
+provides: Number
+
+...
+*/
+
+Number.implement({
+
+	limit: function(min, max){
+		return Math.min(max, Math.max(min, this));
+	},
+
+	round: function(precision){
+		precision = Math.pow(10, precision || 0);
+		return Math.round(this * precision) / precision;
+	},
+
+	times: function(fn, bind){
+		for (var i = 0; i < this; i++) fn.call(bind, i, this);
+	},
+
+	toFloat: function(){
+		return parseFloat(this);
+	},
+
+	toInt: function(base){
+		return parseInt(this, base || 10);
+	}
+
+});
+
+Number.alias('times', 'each');
+
+(function(math){
+	var methods = {};
+	math.each(function(name){
+		if (!Number[name]) methods[name] = function(){
+			return Math[name].apply(null, [this].concat($A(arguments)));
+		};
+	});
+	Number.implement(methods);
+})(['abs', 'acos', 'asin', 'atan', 'atan2', 'ceil', 'cos', 'exp', 'floor', 'log', 'max', 'min', 'pow', 'sin', 'sqrt', 'tan']);
+
+
+/*
+---
+
+name: Hash
+
+description: Contains Hash Prototypes. Provides a means for overcoming the JavaScript practical impossibility of extending native Objects.
+
+license: MIT-style license.
+
+requires: Hash.base
+
+provides: Hash
+
+...
+*/
+
+Hash.implement({
+
+	has: Object.prototype.hasOwnProperty,
+
+	keyOf: function(value){
+		for (var key in this){
+			if (this.hasOwnProperty(key) && this[key] === value) return key;
+		}
+		return null;
+	},
+
+	hasValue: function(value){
+		return (Hash.keyOf(this, value) !== null);
+	},
+
+	extend: function(properties){
+		Hash.each(properties || {}, function(value, key){
+			Hash.set(this, key, value);
+		}, this);
+		return this;
+	},
+
+	combine: function(properties){
+		Hash.each(properties || {}, function(value, key){
+			Hash.include(this, key, value);
+		}, this);
+		return this;
+	},
+
+	erase: function(key){
+		if (this.hasOwnProperty(key)) delete this[key];
+		return this;
+	},
+
+	get: function(key){
+		return (this.hasOwnProperty(key)) ? this[key] : null;
+	},
+
+	set: function(key, value){
+		if (!this[key] || this.hasOwnProperty(key)) this[key] = value;
+		return this;
+	},
+
+	empty: function(){
+		Hash.each(this, function(value, key){
+			delete this[key];
+		}, this);
+		return this;
+	},
+
+	include: function(key, value){
+		if (this[key] == undefined) this[key] = value;
+		return this;
+	},
+
+	map: function(fn, bind){
+		var results = new Hash;
+		Hash.each(this, function(value, key){
+			results.set(key, fn.call(bind, value, key, this));
+		}, this);
+		return results;
+	},
+
+	filter: function(fn, bind){
+		var results = new Hash;
+		Hash.each(this, function(value, key){
+			if (fn.call(bind, value, key, this)) results.set(key, value);
+		}, this);
+		return results;
+	},
+
+	every: function(fn, bind){
+		for (var key in this){
+			if (this.hasOwnProperty(key) && !fn.call(bind, this[key], key)) return false;
+		}
+		return true;
+	},
+
+	some: function(fn, bind){
+		for (var key in this){
+			if (this.hasOwnProperty(key) && fn.call(bind, this[key], key)) return true;
+		}
+		return false;
+	},
+
+	getKeys: function(){
+		var keys = [];
+		Hash.each(this, function(value, key){
+			keys.push(key);
+		});
+		return keys;
+	},
+
+	getValues: function(){
+		var values = [];
+		Hash.each(this, function(value){
+			values.push(value);
+		});
+		return values;
+	},
+
+	toQueryString: function(base){
+		var queryString = [];
+		Hash.each(this, function(value, key){
+			if (base) key = base + '[' + key + ']';
+			var result;
+			switch ($type(value)){
+				case 'object': result = Hash.toQueryString(value, key); break;
+				case 'array':
+					var qs = {};
+					value.each(function(val, i){
+						qs[i] = val;
+					});
+					result = Hash.toQueryString(qs, key);
+				break;
+				default: result = key + '=' + encodeURIComponent(value);
+			}
+			if (value != undefined) queryString.push(result);
+		});
+
+		return queryString.join('&');
+	}
+
+});
+
+Hash.alias({keyOf: 'indexOf', hasValue: 'contains'});
+
+
+/*
+---
+
+name: Class
+
+description: Contains the Class Function for easily creating, extending, and implementing reusable Classes.
+
+license: MIT-style license.
+
+requires: [$util, Native, Array, String, Function, Number, Hash]
+
+provides: Class
+
+...
+*/
+
+function Class(params){
+	
+	if (params instanceof Function) params = {initialize: params};
+	
+	var newClass = function(){
+		Object.reset(this);
+		if (newClass._prototyping) return this;
+		this._current = $empty;
+		var value = (this.initialize) ? this.initialize.apply(this, arguments) : this;
+		delete this._current; delete this.caller;
+		return value;
+	}.extend(this);
+	
+	newClass.implement(params);
+	
+	newClass.constructor = Class;
+	newClass.prototype.constructor = newClass;
+
+	return newClass;
+
+};
+
+Function.prototype.protect = function(){
+	this._protected = true;
+	return this;
+};
+
+Object.reset = function(object, key){
+		
+	if (key == null){
+		for (var p in object) Object.reset(object, p);
+		return object;
+	}
+	
+	delete object[key];
+	
+	switch ($type(object[key])){
+		case 'object':
+			var F = function(){};
+			F.prototype = object[key];
+			var i = new F;
+			object[key] = Object.reset(i);
+		break;
+		case 'array': object[key] = $unlink(object[key]); break;
+	}
+	
+	return object;
+	
+};
+
+new Native({name: 'Class', initialize: Class}).extend({
+
+	instantiate: function(F){
+		F._prototyping = true;
+		var proto = new F;
+		delete F._prototyping;
+		return proto;
+	},
+	
+	wrap: function(self, key, method){
+		if (method._origin) method = method._origin;
+		
+		return function(){
+			if (method._protected && this._current == null) throw new Error('The method "' + key + '" cannot be called.');
+			var caller = this.caller, current = this._current;
+			this.caller = current; this._current = arguments.callee;
+			var result = method.apply(this, arguments);
+			this._current = current; this.caller = caller;
+			return result;
+		}.extend({_owner: self, _origin: method, _name: key});
+
+	}
+	
+});
+
+Class.implement({
+	
+	implement: function(key, value){
+		
+		if ($type(key) == 'object'){
+			for (var p in key) this.implement(p, key[p]);
+			return this;
+		}
+		
+		var mutator = Class.Mutators[key];
+		
+		if (mutator){
+			value = mutator.call(this, value);
+			if (value == null) return this;
+		}
+		
+		var proto = this.prototype;
+
+		switch ($type(value)){
+			
+			case 'function':
+				if (value._hidden) return this;
+				proto[key] = Class.wrap(this, key, value);
+			break;
+			
+			case 'object':
+				var previous = proto[key];
+				if ($type(previous) == 'object') $mixin(previous, value);
+				else proto[key] = $unlink(value);
+			break;
+			
+			case 'array':
+				proto[key] = $unlink(value);
+			break;
+			
+			default: proto[key] = value;
+
+		}
+		
+		return this;
+
+	}
+	
+});
+
+Class.Mutators = {
+	
+	Extends: function(parent){
+
+		this.parent = parent;
+		this.prototype = Class.instantiate(parent);
+
+		this.implement('parent', function(){
+			var name = this.caller._name, previous = this.caller._owner.parent.prototype[name];
+			if (!previous) throw new Error('The method "' + name + '" has no parent.');
+			return previous.apply(this, arguments);
+		}.protect());
+
+	},
+
+	Implements: function(items){
+		$splat(items).each(function(item){
+			if (item instanceof Function) item = Class.instantiate(item);
+			this.implement(item);
+		}, this);
+
+	}
+	
+};
+
+
+/*
+---
+
+name: Class.Extras
+
+description: Contains Utility Classes that can be implemented into your own Classes to ease the execution of many common tasks.
+
+license: MIT-style license.
+
+requires: Class
+
+provides: [Chain, Events, Options, Class.Extras]
+
+...
+*/
+
+var Chain = new Class({
+
+	$chain: [],
+
+	chain: function(){
+		this.$chain.extend(Array.flatten(arguments));
+		return this;
+	},
+
+	callChain: function(){
+		return (this.$chain.length) ? this.$chain.shift().apply(this, arguments) : false;
+	},
+
+	clearChain: function(){
+		this.$chain.empty();
+		return this;
+	}
+
+});
+
+var Events = new Class({
+
+	$events: {},
+
+	addEvent: function(type, fn, internal){
+		type = Events.removeOn(type);
+		if (fn != $empty){
+			this.$events[type] = this.$events[type] || [];
+			this.$events[type].include(fn);
+			if (internal) fn.internal = true;
+		}
+		return this;
+	},
+
+	addEvents: function(events){
+		for (var type in events) this.addEvent(type, events[type]);
+		return this;
+	},
+
+	fireEvent: function(type, args, delay){
+		type = Events.removeOn(type);
+		if (!this.$events || !this.$events[type]) return this;
+		this.$events[type].each(function(fn){
+			fn.create({'bind': this, 'delay': delay, 'arguments': args})();
+		}, this);
+		return this;
+	},
+
+	removeEvent: function(type, fn){
+		type = Events.removeOn(type);
+		if (!this.$events[type]) return this;
+		if (!fn.internal) this.$events[type].erase(fn);
+		return this;
+	},
+
+	removeEvents: function(events){
+		var type;
+		if ($type(events) == 'object'){
+			for (type in events) this.removeEvent(type, events[type]);
+			return this;
+		}
+		if (events) events = Events.removeOn(events);
+		for (type in this.$events){
+			if (events && events != type) continue;
+			var fns = this.$events[type];
+			for (var i = fns.length; i--; i) this.removeEvent(type, fns[i]);
+		}
+		return this;
+	}
+
+});
+
+Events.removeOn = function(string){
+	return string.replace(/^on([A-Z])/, function(full, first){
+		return first.toLowerCase();
+	});
+};
+
+var Options = new Class({
+
+	setOptions: function(){
+		this.options = $merge.run([this.options].extend(arguments));
+		if (!this.addEvent) return this;
+		for (var option in this.options){
+			if ($type(this.options[option]) != 'function' || !(/^on[A-Z]/).test(option)) continue;
+			this.addEvent(option, this.options[option]);
+			delete this.options[option];
+		}
+		return this;
+	}
+
+});
+
+
+/*
+---
+
+name: Browser
+
+description: The Browser Core. Contains Browser initialization, Window and Document, and the Browser Hash.
+
+license: MIT-style license.
+
+requires: [Native, $util]
+
+provides: [Browser, Window, Document, $exec]
+
+...
+*/
+
+var Browser = $merge({
+
+	Engine: {name: 'unknown', version: 0},
+
+	Platform: {name: (window.orientation != undefined) ? 'ipod' : (navigator.platform.match(/mac|win|linux/i) || ['other'])[0].toLowerCase()},
+
+	Features: {xpath: !!(document.evaluate), air: !!(window.runtime), query: !!(document.querySelector)},
+
+	Plugins: {},
+
+	Engines: {
+
+		presto: function(){
+			return (!window.opera) ? false : ((arguments.callee.caller) ? 960 : ((document.getElementsByClassName) ? 950 : 925));
+		},
+
+		trident: function(){
+			return (!window.ActiveXObject) ? false : ((window.XMLHttpRequest) ? ((document.querySelectorAll) ? 6 : 5) : 4);
+		},
+
+		webkit: function(){
+			return (navigator.taintEnabled) ? false : ((Browser.Features.xpath) ? ((Browser.Features.query) ? 525 : 420) : 419);
+		},
+
+		gecko: function(){
+			return (!document.getBoxObjectFor && window.mozInnerScreenX == null) ? false : ((document.getElementsByClassName) ? 19 : 18);
+		}
+
+	}
+
+}, Browser || {});
+
+Browser.Platform[Browser.Platform.name] = true;
+
+Browser.detect = function(){
+
+	for (var engine in this.Engines){
+		var version = this.Engines[engine]();
+		if (version){
+			this.Engine = {name: engine, version: version};
+			this.Engine[engine] = this.Engine[engine + version] = true;
+			break;
+		}
+	}
+
+	return {name: engine, version: version};
+
+};
+
+Browser.detect();
+
+Browser.Request = function(){
+	return $try(function(){
+		return new XMLHttpRequest();
+	}, function(){
+		return new ActiveXObject('MSXML2.XMLHTTP');
+	}, function(){
+		return new ActiveXObject('Microsoft.XMLHTTP');
+	});
+};
+
+Browser.Features.xhr = !!(Browser.Request());
+
+Browser.Plugins.Flash = (function(){
+	var version = ($try(function(){
+		return navigator.plugins['Shockwave Flash'].description;
+	}, function(){
+		return new ActiveXObject('ShockwaveFlash.ShockwaveFlash').GetVariable('$version');
+	}) || '0 r0').match(/\d+/g);
+	return {version: parseInt(version[0] || 0 + '.' + version[1], 10) || 0, build: parseInt(version[2], 10) || 0};
+})();
+
+function $exec(text){
+	if (!text) return text;
+	if (window.execScript){
+		window.execScript(text);
+	} else {
+		var script = document.createElement('script');
+		script.setAttribute('type', 'text/javascript');
+		script[(Browser.Engine.webkit && Browser.Engine.version < 420) ? 'innerText' : 'text'] = text;
+		document.head.appendChild(script);
+		document.head.removeChild(script);
+	}
+	return text;
+};
+
+Native.UID = 1;
+
+var $uid = (Browser.Engine.trident) ? function(item){
+	return (item.uid || (item.uid = [Native.UID++]))[0];
+} : function(item){
+	return item.uid || (item.uid = Native.UID++);
+};
+
+var Window = new Native({
+
+	name: 'Window',
+
+	legacy: (Browser.Engine.trident) ? null: window.Window,
+
+	initialize: function(win){
+		$uid(win);
+		if (!win.Element){
+			win.Element = $empty;
+			if (Browser.Engine.webkit) win.document.createElement("iframe"); //fixes safari 2
+			win.Element.prototype = (Browser.Engine.webkit) ? window["[[DOMElement.prototype]]"] : {};
+		}
+		win.document.window = win;
+		return $extend(win, Window.Prototype);
+	},
+
+	afterImplement: function(property, value){
+		window[property] = Window.Prototype[property] = value;
+	}
+
+});
+
+Window.Prototype = {$family: {name: 'window'}};
+
+new Window(window);
+
+var Document = new Native({
+
+	name: 'Document',
+
+	legacy: (Browser.Engine.trident) ? null: window.Document,
+
+	initialize: function(doc){
+		$uid(doc);
+		doc.head = doc.getElementsByTagName('head')[0];
+		doc.html = doc.getElementsByTagName('html')[0];
+		if (Browser.Engine.trident && Browser.Engine.version <= 4) $try(function(){
+			doc.execCommand("BackgroundImageCache", false, true);
+		});
+		if (Browser.Engine.trident) doc.window.attachEvent('onunload', function(){
+			doc.window.detachEvent('onunload', arguments.callee);
+			doc.head = doc.html = doc.window = null;
+		});
+		return $extend(doc, Document.Prototype);
+	},
+
+	afterImplement: function(property, value){
+		document[property] = Document.Prototype[property] = value;
+	}
+
+});
+
+Document.Prototype = {$family: {name: 'document'}};
+
+new Document(document);
+
+
+/*
+---
+
+name: Element
+
+description: One of the most important items in MooTools. Contains the dollar function, the dollars function, and an handful of cross-browser, time-saver methods to let you easily work with HTML Elements.
+
+license: MIT-style license.
+
+requires: [Window, Document, Array, String, Function, Number, Hash]
+
+provides: [Element, Elements, $, $$, Iframe]
+
+...
+*/
+
+var Element = new Native({
+
+	name: 'Element',
+
+	legacy: window.Element,
+
+	initialize: function(tag, props){
+		var konstructor = Element.Constructors.get(tag);
+		if (konstructor) return konstructor(props);
+		if (typeof tag == 'string') return document.newElement(tag, props);
+		return document.id(tag).set(props);
+	},
+
+	afterImplement: function(key, value){
+		Element.Prototype[key] = value;
+		if (Array[key]) return;
+		Elements.implement(key, function(){
+			var items = [], elements = true;
+			for (var i = 0, j = this.length; i < j; i++){
+				var returns = this[i][key].apply(this[i], arguments);
+				items.push(returns);
+				if (elements) elements = ($type(returns) == 'element');
+			}
+			return (elements) ? new Elements(items) : items;
+		});
+	}
+
+});
+
+Element.Prototype = {$family: {name: 'element'}};
+
+Element.Constructors = new Hash;
+
+var IFrame = new Native({
+
+	name: 'IFrame',
+
+	generics: false,
+
+	initialize: function(){
+		var params = Array.link(arguments, {properties: Object.type, iframe: $defined});
+		var props = params.properties || {};
+		var iframe = document.id(params.iframe);
+		var onload = props.onload || $empty;
+		delete props.onload;
+		props.id = props.name = $pick(props.id, props.name, iframe ? (iframe.id || iframe.name) : 'IFrame_' + $time());
+		iframe = new Element(iframe || 'iframe', props);
+		var onFrameLoad = function(){
+			var host = $try(function(){
+				return iframe.contentWindow.location.host;
+			});
+			if (!host || host == window.location.host){
+				var win = new Window(iframe.contentWindow);
+				new Document(iframe.contentWindow.document);
+				$extend(win.Element.prototype, Element.Prototype);
+			}
+			onload.call(iframe.contentWindow, iframe.contentWindow.document);
+		};
+		var contentWindow = $try(function(){
+			return iframe.contentWindow;
+		});
+		((contentWindow && contentWindow.document.body) || window.frames[props.id]) ? onFrameLoad() : iframe.addListener('load', onFrameLoad);
+		return iframe;
+	}
+
+});
+
+var Elements = new Native({
+
+	initialize: function(elements, options){
+		options = $extend({ddup: true, cash: true}, options);
+		elements = elements || [];
+		if (options.ddup || options.cash){
+			var uniques = {}, returned = [];
+			for (var i = 0, l = elements.length; i < l; i++){
+				var el = document.id(elements[i], !options.cash);
+				if (options.ddup){
+					if (uniques[el.uid]) continue;
+					uniques[el.uid] = true;
+				}
+				if (el) returned.push(el);
+			}
+			elements = returned;
+		}
+		return (options.cash) ? $extend(elements, this) : elements;
+	}
+
+});
+
+Elements.implement({
+
+	filter: function(filter, bind){
+		if (!filter) return this;
+		return new Elements(Array.filter(this, (typeof filter == 'string') ? function(item){
+			return item.match(filter);
+		} : filter, bind));
+	}
+
+});
+
+(function(){
+
+/*<ltIE8>*/
+var createElementAcceptsHTML;
+try {
+	var x = document.createElement('<input name=x>');
+	createElementAcceptsHTML = (x.name == 'x');
+} catch(e){}
+
+var escapeQuotes = function(html){
+	return ('' + html).replace(/&/g,'&amp;').replace(/"/g,'&quot;');
+};
+/*</ltIE8>*/
+
+Document.implement({
+
+	newElement: function(tag, props){
+		if (props && props.checked != null) props.defaultChecked = props.checked;
+		/*<ltIE8>*/// Fix for readonly name and type properties in IE < 8
+		if (createElementAcceptsHTML && props){
+			tag = '<' + tag;
+			if (props.name) tag += ' name="' + escapeQuotes(props.name) + '"';
+			if (props.type) tag += ' type="' + escapeQuotes(props.type) + '"';
+			tag += '>';
+			delete props.name;
+			delete props.type;
+		}
+		/*</ltIE8>*/
+		return this.id(this.createElement(tag)).set(props);
+	},
+
+	newTextNode: function(text){
+		return this.createTextNode(text);
+	},
+
+	getDocument: function(){
+		return this;
+	},
+
+	getWindow: function(){
+		return this.window;
+	},
+	
+	id: (function(){
+		
+		var types = {
+
+			string: function(id, nocash, doc){
+				id = doc.getElementById(id);
+				return (id) ? types.element(id, nocash) : null;
+			},
+			
+			element: function(el, nocash){
+				$uid(el);
+				if (!nocash && !el.$family && !(/^object|embed$/i).test(el.tagName)){
+					var proto = Element.Prototype;
+					for (var p in proto) el[p] = proto[p];
+				};
+				return el;
+			},
+			
+			object: function(obj, nocash, doc){
+				if (obj.toElement) return types.element(obj.toElement(doc), nocash);
+				return null;
+			}
+			
+		};
+
+		types.textnode = types.whitespace = types.window = types.document = $arguments(0);
+		
+		return function(el, nocash, doc){
+			if (el && el.$family && el.uid) return el;
+			var type = $type(el);
+			return (types[type]) ? types[type](el, nocash, doc || document) : null;
+		};
+
+	})()
+
+});
+
+})();
+
+if (window.$ == null) Window.implement({
+	$: function(el, nc){
+		return document.id(el, nc, this.document);
+	}
+});
+
+Window.implement({
+
+	$$: function(selector){
+		if (arguments.length == 1 && typeof selector == 'string') return this.document.getElements(selector);
+		var elements = [];
+		var args = Array.flatten(arguments);
+		for (var i = 0, l = args.length; i < l; i++){
+			var item = args[i];
+			switch ($type(item)){
+				case 'element': elements.push(item); break;
+				case 'string': elements.extend(this.document.getElements(item, true));
+			}
+		}
+		return new Elements(elements);
+	},
+
+	getDocument: function(){
+		return this.document;
+	},
+
+	getWindow: function(){
+		return this;
+	}
+
+});
+
+Native.implement([Element, Document], {
+
+	getElement: function(selector, nocash){
+		return document.id(this.getElements(selector, true)[0] || null, nocash);
+	},
+
+	getElements: function(tags, nocash){
+		tags = tags.split(',');
+		var elements = [];
+		var ddup = (tags.length > 1);
+		tags.each(function(tag){
+			var partial = this.getElementsByTagName(tag.trim());
+			(ddup) ? elements.extend(partial) : elements = partial;
+		}, this);
+		return new Elements(elements, {ddup: ddup, cash: !nocash});
+	}
+
+});
+
+(function(){
+
+var collected = {}, storage = {};
+var props = {input: 'checked', option: 'selected', textarea: (Browser.Engine.webkit && Browser.Engine.version < 420) ? 'innerHTML' : 'value'};
+
+var get = function(uid){
+	return (storage[uid] || (storage[uid] = {}));
+};
+
+var clean = function(item, retain){
+	if (!item) return;
+	var uid = item.uid;
+	if (retain !== true) retain = false;
+	if (Browser.Engine.trident){
+		if (item.clearAttributes){
+			var clone = retain && item.cloneNode(false);
+			item.clearAttributes();
+			if (clone) item.mergeAttributes(clone);
+		} else if (item.removeEvents){
+			item.removeEvents();
+		}
+		if ((/object/i).test(item.tagName)){
+			for (var p in item){
+				if (typeof item[p] == 'function') item[p] = $empty;
+			}
+			Element.dispose(item);
+		}
+	}	
+	if (!uid) return;
+	collected[uid] = storage[uid] = null;
+};
+
+var purge = function(){
+	Hash.each(collected, clean);
+	if (Browser.Engine.trident) $A(document.getElementsByTagName('object')).each(clean);
+	if (window.CollectGarbage) CollectGarbage();
+	collected = storage = null;
+};
+
+var walk = function(element, walk, start, match, all, nocash){
+	var el = element[start || walk];
+	var elements = [];
+	while (el){
+		if (el.nodeType == 1 && (!match || Element.match(el, match))){
+			if (!all) return document.id(el, nocash);
+			elements.push(el);
+		}
+		el = el[walk];
+	}
+	return (all) ? new Elements(elements, {ddup: false, cash: !nocash}) : null;
+};
+
+var attributes = {
+	'html': 'innerHTML',
+	'class': 'className',
+	'for': 'htmlFor',
+	'defaultValue': 'defaultValue',
+	'text': (Browser.Engine.trident || (Browser.Engine.webkit && Browser.Engine.version < 420)) ? 'innerText' : 'textContent'
+};
+var bools = ['compact', 'nowrap', 'ismap', 'declare', 'noshade', 'checked', 'disabled', 'readonly', 'multiple', 'selected', 'noresize', 'defer'];
+var camels = ['value', 'type', 'defaultValue', 'accessKey', 'cellPadding', 'cellSpacing', 'colSpan', 'frameBorder', 'maxLength', 'readOnly', 'rowSpan', 'tabIndex', 'useMap'];
+
+bools = bools.associate(bools);
+
+Hash.extend(attributes, bools);
+Hash.extend(attributes, camels.associate(camels.map(String.toLowerCase)));
+
+var inserters = {
+
+	before: function(context, element){
+		if (element.parentNode) element.parentNode.insertBefore(context, element);
+	},
+
+	after: function(context, element){
+		if (!element.parentNode) return;
+		var next = element.nextSibling;
+		(next) ? element.parentNode.insertBefore(context, next) : element.parentNode.appendChild(context);
+	},
+
+	bottom: function(context, element){
+		element.appendChild(context);
+	},
+
+	top: function(context, element){
+		var first = element.firstChild;
+		(first) ? element.insertBefore(context, first) : element.appendChild(context);
+	}
+
+};
+
+inserters.inside = inserters.bottom;
+
+Hash.each(inserters, function(inserter, where){
+
+	where = where.capitalize();
+
+	Element.implement('inject' + where, function(el){
+		inserter(this, document.id(el, true));
+		return this;
+	});
+
+	Element.implement('grab' + where, function(el){
+		inserter(document.id(el, true), this);
+		return this;
+	});
+
+});
+
+Element.implement({
+
+	set: function(prop, value){
+		switch ($type(prop)){
+			case 'object':
+				for (var p in prop) this.set(p, prop[p]);
+				break;
+			case 'string':
+				var property = Element.Properties.get(prop);
+				(property && property.set) ? property.set.apply(this, Array.slice(arguments, 1)) : this.setProperty(prop, value);
+		}
+		return this;
+	},
+
+	get: function(prop){
+		var property = Element.Properties.get(prop);
+		return (property && property.get) ? property.get.apply(this, Array.slice(arguments, 1)) : this.getProperty(prop);
+	},
+
+	erase: function(prop){
+		var property = Element.Properties.get(prop);
+		(property && property.erase) ? property.erase.apply(this) : this.removeProperty(prop);
+		return this;
+	},
+
+	setProperty: function(attribute, value){
+		var key = attributes[attribute];
+		if (value == undefined) return this.removeProperty(attribute);
+		if (key && bools[attribute]) value = !!value;
+		(key) ? this[key] = value : this.setAttribute(attribute, '' + value);
+		return this;
+	},
+
+	setProperties: function(attributes){
+		for (var attribute in attributes) this.setProperty(attribute, attributes[attribute]);
+		return this;
+	},
+
+	getProperty: function(attribute){
+		var key = attributes[attribute];
+		var value = (key) ? this[key] : this.getAttribute(attribute, 2);
+		return (bools[attribute]) ? !!value : (key) ? value : value || null;
+	},
+
+	getProperties: function(){
+		var args = $A(arguments);
+		return args.map(this.getProperty, this).associate(args);
+	},
+
+	removeProperty: function(attribute){
+		var key = attributes[attribute];
+		(key) ? this[key] = (key && bools[attribute]) ? false : '' : this.removeAttribute(attribute);
+		return this;
+	},
+
+	removeProperties: function(){
+		Array.each(arguments, this.removeProperty, this);
+		return this;
+	},
+
+	hasClass: function(className){
+		return this.className.contains(className, ' ');
+	},
+
+	addClass: function(className){
+		if (!this.hasClass(className)) this.className = (this.className + ' ' + className).clean();
+		return this;
+	},
+
+	removeClass: function(className){
+		this.className = this.className.replace(new RegExp('(^|\\s)' + className + '(?:\\s|$)'), '$1');
+		return this;
+	},
+
+	toggleClass: function(className){
+		return this.hasClass(className) ? this.removeClass(className) : this.addClass(className);
+	},
+
+	adopt: function(){
+		Array.flatten(arguments).each(function(element){
+			element = document.id(element, true);
+			if (element) this.appendChild(element);
+		}, this);
+		return this;
+	},
+
+	appendText: function(text, where){
+		return this.grab(this.getDocument().newTextNode(text), where);
+	},
+
+	grab: function(el, where){
+		inserters[where || 'bottom'](document.id(el, true), this);
+		return this;
+	},
+
+	inject: function(el, where){
+		inserters[where || 'bottom'](this, document.id(el, true));
+		return this;
+	},
+
+	replaces: function(el){
+		el = document.id(el, true);
+		el.parentNode.replaceChild(this, el);
+		return this;
+	},
+
+	wraps: function(el, where){
+		el = document.id(el, true);
+		return this.replaces(el).grab(el, where);
+	},
+
+	getPrevious: function(match, nocash){
+		return walk(this, 'previousSibling', null, match, false, nocash);
+	},
+
+	getAllPrevious: function(match, nocash){
+		return walk(this, 'previousSibling', null, match, true, nocash);
+	},
+
+	getNext: function(match, nocash){
+		return walk(this, 'nextSibling', null, match, false, nocash);
+	},
+
+	getAllNext: function(match, nocash){
+		return walk(this, 'nextSibling', null, match, true, nocash);
+	},
+
+	getFirst: function(match, nocash){
+		return walk(this, 'nextSibling', 'firstChild', match, false, nocash);
+	},
+
+	getLast: function(match, nocash){
+		return walk(this, 'previousSibling', 'lastChild', match, false, nocash);
+	},
+
+	getParent: function(match, nocash){
+		return walk(this, 'parentNode', null, match, false, nocash);
+	},
+
+	getParents: function(match, nocash){
+		return walk(this, 'parentNode', null, match, true, nocash);
+	},
+	
+	getSiblings: function(match, nocash){
+		return this.getParent().getChildren(match, nocash).erase(this);
+	},
+
+	getChildren: function(match, nocash){
+		return walk(this, 'nextSibling', 'firstChild', match, true, nocash);
+	},
+
+	getWindow: function(){
+		return this.ownerDocument.window;
+	},
+
+	getDocument: function(){
+		return this.ownerDocument;
+	},
+
+	getElementById: function(id, nocash){
+		var el = this.ownerDocument.getElementById(id);
+		if (!el) return null;
+		for (var parent = el.parentNode; parent != this; parent = parent.parentNode){
+			if (!parent) return null;
+		}
+		return document.id(el, nocash);
+	},
+
+	getSelected: function(){
+		return new Elements($A(this.options).filter(function(option){
+			return option.selected;
+		}));
+	},
+
+	getComputedStyle: function(property){
+		if (this.currentStyle) return this.currentStyle[property.camelCase()];
+		var computed = this.getDocument().defaultView.getComputedStyle(this, null);
+		return (computed) ? computed.getPropertyValue([property.hyphenate()]) : null;
+	},
+
+	toQueryString: function(){
+		var queryString = [];
+		this.getElements('input, select, textarea', true).each(function(el){
+			if (!el.name || el.disabled || el.type == 'submit' || el.type == 'reset' || el.type == 'file') return;
+			var value = (el.tagName.toLowerCase() == 'select') ? Element.getSelected(el).map(function(opt){
+				return opt.value;
+			}) : ((el.type == 'radio' || el.type == 'checkbox') && !el.checked) ? null : el.value;
+			$splat(value).each(function(val){
+				if (typeof val != 'undefined') queryString.push(el.name + '=' + encodeURIComponent(val));
+			});
+		});
+		return queryString.join('&');
+	},
+
+	clone: function(contents, keepid){
+		contents = contents !== false;
+		var clone = this.cloneNode(contents);
+		var clean = function(node, element){
+			if (!keepid) node.removeAttribute('id');
+			if (Browser.Engine.trident){
+				node.clearAttributes();
+				node.mergeAttributes(element);
+				node.removeAttribute('uid');
+				if (node.options){
+					var no = node.options, eo = element.options;
+					for (var j = no.length; j--;) no[j].selected = eo[j].selected;
+				}
+			}
+			var prop = props[element.tagName.toLowerCase()];
+			if (prop && element[prop]) node[prop] = element[prop];
+		};
+
+		if (contents){
+			var ce = clone.getElementsByTagName('*'), te = this.getElementsByTagName('*');
+			for (var i = ce.length; i--;) clean(ce[i], te[i]);
+		}
+
+		clean(clone, this);
+		return document.id(clone);
+	},
+
+	destroy: function(){
+		Element.empty(this);
+		Element.dispose(this);
+		clean(this, true);
+		return null;
+	},
+
+	empty: function(){
+		$A(this.childNodes).each(function(node){
+			Element.destroy(node);
+		});
+		return this;
+	},
+
+	dispose: function(){
+		return (this.parentNode) ? this.parentNode.removeChild(this) : this;
+	},
+
+	hasChild: function(el){
+		el = document.id(el, true);
+		if (!el) return false;
+		if (Browser.Engine.webkit && Browser.Engine.version < 420) return $A(this.getElementsByTagName(el.tagName)).contains(el);
+		return (this.contains) ? (this != el && this.contains(el)) : !!(this.compareDocumentPosition(el) & 16);
+	},
+
+	match: function(tag){
+		return (!tag || (tag == this) || (Element.get(this, 'tag') == tag));
+	}
+
+});
+
+Native.implement([Element, Window, Document], {
+
+	addListener: function(type, fn){
+		if (type == 'unload'){
+			var old = fn, self = this;
+			fn = function(){
+				self.removeListener('unload', fn);
+				old();
+			};
+		} else {
+			collected[this.uid] = this;
+		}
+		if (this.addEventListener) this.addEventListener(type, fn, false);
+		else this.attachEvent('on' + type, fn);
+		return this;
+	},
+
+	removeListener: function(type, fn){
+		if (this.removeEventListener) this.removeEventListener(type, fn, false);
+		else this.detachEvent('on' + type, fn);
+		return this;
+	},
+
+	retrieve: function(property, dflt){
+		var storage = get(this.uid), prop = storage[property];
+		if (dflt != undefined && prop == undefined) prop = storage[property] = dflt;
+		return $pick(prop);
+	},
+
+	store: function(property, value){
+		var storage = get(this.uid);
+		storage[property] = value;
+		return this;
+	},
+
+	eliminate: function(property){
+		var storage = get(this.uid);
+		delete storage[property];
+		return this;
+	}
+
+});
+
+window.addListener('unload', purge);
+
+})();
+
+Element.Properties = new Hash;
+
+Element.Properties.style = {
+
+	set: function(style){
+		this.style.cssText = style;
+	},
+
+	get: function(){
+		return this.style.cssText;
+	},
+
+	erase: function(){
+		this.style.cssText = '';
+	}
+
+};
+
+Element.Properties.tag = {
+
+	get: function(){
+		return this.tagName.toLowerCase();
+	}
+
+};
+
+Element.Properties.html = (function(){
+	var wrapper = document.createElement('div');
+
+	var translations = {
+		table: [1, '<table>', '</table>'],
+		select: [1, '<select>', '</select>'],
+		tbody: [2, '<table><tbody>', '</tbody></table>'],
+		tr: [3, '<table><tbody><tr>', '</tr></tbody></table>']
+	};
+	translations.thead = translations.tfoot = translations.tbody;
+
+	var html = {
+		set: function(){
+			var html = Array.flatten(arguments).join('');
+			var wrap = Browser.Engine.trident && translations[this.get('tag')];
+			if (wrap){
+				var first = wrapper;
+				first.innerHTML = wrap[1] + html + wrap[2];
+				for (var i = wrap[0]; i--;) first = first.firstChild;
+				this.empty().adopt(first.childNodes);
+			} else {
+				this.innerHTML = html;
+			}
+		}
+	};
+
+	html.erase = html.set;
+
+	return html;
+})();
+
+if (Browser.Engine.webkit && Browser.Engine.version < 420) Element.Properties.text = {
+	get: function(){
+		if (this.innerText) return this.innerText;
+		var temp = this.ownerDocument.newElement('div', {html: this.innerHTML}).inject(this.ownerDocument.body);
+		var text = temp.innerText;
+		temp.destroy();
+		return text;
+	}
+};
+
+
+/*
+---
+
+name: Element.Dimensions
+
+description: Contains methods to work with size, scroll, or positioning of Elements and the window object.
+
+license: MIT-style license.
+
+credits:
+  - Element positioning based on the [qooxdoo](http://qooxdoo.org/) code and smart browser fixes, [LGPL License](http://www.gnu.org/licenses/lgpl.html).
+  - Viewport dimensions based on [YUI](http://developer.yahoo.com/yui/) code, [BSD License](http://developer.yahoo.com/yui/license.html).
+
+requires: Element
+
+provides: Element.Dimensions
+
+...
+*/
+
+(function(){
+
+Element.implement({
+
+	scrollTo: function(x, y){
+		if (isBody(this)){
+			this.getWindow().scrollTo(x, y);
+		} else {
+			this.scrollLeft = x;
+			this.scrollTop = y;
+		}
+		return this;
+	},
+
+	getSize: function(){
+		if (isBody(this)) return this.getWindow().getSize();
+		return {x: this.offsetWidth, y: this.offsetHeight};
+	},
+
+	getScrollSize: function(){
+		if (isBody(this)) return this.getWindow().getScrollSize();
+		return {x: this.scrollWidth, y: this.scrollHeight};
+	},
+
+	getScroll: function(){
+		if (isBody(this)) return this.getWindow().getScroll();
+		return {x: this.scrollLeft, y: this.scrollTop};
+	},
+
+	getScrolls: function(){
+		var element = this, position = {x: 0, y: 0};
+		while (element && !isBody(element)){
+			position.x += element.scrollLeft;
+			position.y += element.scrollTop;
+			element = element.parentNode;
+		}
+		return position;
+	},
+
+	getOffsetParent: function(){
+		var element = this;
+		if (isBody(element)) return null;
+		if (!Browser.Engine.trident) return element.offsetParent;
+		while ((element = element.parentNode) && !isBody(element)){
+			if (styleString(element, 'position') != 'static') return element;
+		}
+		return null;
+	},
+
+	getOffsets: function(){
+		if (this.getBoundingClientRect){
+			var bound = this.getBoundingClientRect(),
+				html = document.id(this.getDocument().documentElement),
+				htmlScroll = html.getScroll(),
+				elemScrolls = this.getScrolls(),
+				elemScroll = this.getScroll(),
+				isFixed = (styleString(this, 'position') == 'fixed');
+
+			return {
+				x: bound.left.toInt() + elemScrolls.x - elemScroll.x + ((isFixed) ? 0 : htmlScroll.x) - html.clientLeft,
+				y: bound.top.toInt()  + elemScrolls.y - elemScroll.y + ((isFixed) ? 0 : htmlScroll.y) - html.clientTop
+			};
+		}
+
+		var element = this, position = {x: 0, y: 0};
+		if (isBody(this)) return position;
+
+		while (element && !isBody(element)){
+			position.x += element.offsetLeft;
+			position.y += element.offsetTop;
+
+			if (Browser.Engine.gecko){
+				if (!borderBox(element)){
+					position.x += leftBorder(element);
+					position.y += topBorder(element);
+				}
+				var parent = element.parentNode;
+				if (parent && styleString(parent, 'overflow') != 'visible'){
+					position.x += leftBorder(parent);
+					position.y += topBorder(parent);
+				}
+			} else if (element != this && Browser.Engine.webkit){
+				position.x += leftBorder(element);
+				position.y += topBorder(element);
+			}
+
+			element = element.offsetParent;
+		}
+		if (Browser.Engine.gecko && !borderBox(this)){
+			position.x -= leftBorder(this);
+			position.y -= topBorder(this);
+		}
+		return position;
+	},
+
+	getPosition: function(relative){
+		if (isBody(this)) return {x: 0, y: 0};
+		var offset = this.getOffsets(),
+				scroll = this.getScrolls();
+		var position = {
+			x: offset.x - scroll.x,
+			y: offset.y - scroll.y
+		};
+		var relativePosition = (relative && (relative = document.id(relative))) ? relative.getPosition() : {x: 0, y: 0};
+		return {x: position.x - relativePosition.x, y: position.y - relativePosition.y};
+	},
+
+	getCoordinates: function(element){
+		if (isBody(this)) return this.getWindow().getCoordinates();
+		var position = this.getPosition(element),
+				size = this.getSize();
+		var obj = {
+			left: position.x,
+			top: position.y,
+			width: size.x,
+			height: size.y
+		};
+		obj.right = obj.left + obj.width;
+		obj.bottom = obj.top + obj.height;
+		return obj;
+	},
+
+	computePosition: function(obj){
+		return {
+			left: obj.x - styleNumber(this, 'margin-left'),
+			top: obj.y - styleNumber(this, 'margin-top')
+		};
+	},
+
+	setPosition: function(obj){
+		return this.setStyles(this.computePosition(obj));
+	}
+
+});
+
+
+Native.implement([Document, Window], {
+
+	getSize: function(){
+		if (Browser.Engine.presto || Browser.Engine.webkit){
+			var win = this.getWindow();
+			return {x: win.innerWidth, y: win.innerHeight};
+		}
+		var doc = getCompatElement(this);
+		return {x: doc.clientWidth, y: doc.clientHeight};
+	},
+
+	getScroll: function(){
+		var win = this.getWindow(), doc = getCompatElement(this);
+		return {x: win.pageXOffset || doc.scrollLeft, y: win.pageYOffset || doc.scrollTop};
+	},
+
+	getScrollSize: function(){
+		var doc = getCompatElement(this), min = this.getSize();
+		return {x: Math.max(doc.scrollWidth, min.x), y: Math.max(doc.scrollHeight, min.y)};
+	},
+
+	getPosition: function(){
+		return {x: 0, y: 0};
+	},
+
+	getCoordinates: function(){
+		var size = this.getSize();
+		return {top: 0, left: 0, bottom: size.y, right: size.x, height: size.y, width: size.x};
+	}
+
+});
+
+// private methods
+
+var styleString = Element.getComputedStyle;
+
+function styleNumber(element, style){
+	return styleString(element, style).toInt() || 0;
+};
+
+function borderBox(element){
+	return styleString(element, '-moz-box-sizing') == 'border-box';
+};
+
+function topBorder(element){
+	return styleNumber(element, 'border-top-width');
+};
+
+function leftBorder(element){
+	return styleNumber(element, 'border-left-width');
+};
+
+function isBody(element){
+	return (/^(?:body|html)$/i).test(element.tagName);
+};
+
+function getCompatElement(element){
+	var doc = element.getDocument();
+	return (!doc.compatMode || doc.compatMode == 'CSS1Compat') ? doc.html : doc.body;
+};
+
+})();
+
+//aliases
+Element.alias('setPosition', 'position'); //compatability
+
+Native.implement([Window, Document, Element], {
+
+	getHeight: function(){
+		return this.getSize().y;
+	},
+
+	getWidth: function(){
+		return this.getSize().x;
+	},
+
+	getScrollTop: function(){
+		return this.getScroll().y;
+	},
+
+	getScrollLeft: function(){
+		return this.getScroll().x;
+	},
+
+	getScrollHeight: function(){
+		return this.getScrollSize().y;
+	},
+
+	getScrollWidth: function(){
+		return this.getScrollSize().x;
+	},
+
+	getTop: function(){
+		return this.getPosition().y;
+	},
+
+	getLeft: function(){
+		return this.getPosition().x;
+	}
+
+});
+
+
+/*
+---
+
+name: Event
+
+description: Contains the Event Class, to make the event object cross-browser.
+
+license: MIT-style license.
+
+requires: [Window, Document, Hash, Array, Function, String]
+
+provides: Event
+
+...
+*/
+
+var Event = new Native({
+
+	name: 'Event',
+
+	initialize: function(event, win){
+		win = win || window;
+		var doc = win.document;
+		event = event || win.event;
+		if (event.$extended) return event;
+		this.$extended = true;
+		var type = event.type;
+		var target = event.target || event.srcElement;
+		while (target && target.nodeType == 3) target = target.parentNode;
+
+		if (type.test(/key/)){
+			var code = event.which || event.keyCode;
+			var key = Event.Keys.keyOf(code);
+			if (type == 'keydown'){
+				var fKey = code - 111;
+				if (fKey > 0 && fKey < 13) key = 'f' + fKey;
+			}
+			key = key || String.fromCharCode(code).toLowerCase();
+		} else if (type.match(/(click|mouse|menu)/i)){
+			doc = (!doc.compatMode || doc.compatMode == 'CSS1Compat') ? doc.html : doc.body;
+			var page = {
+				x: event.pageX || event.clientX + doc.scrollLeft,
+				y: event.pageY || event.clientY + doc.scrollTop
+			};
+			var client = {
+				x: (event.pageX) ? event.pageX - win.pageXOffset : event.clientX,
+				y: (event.pageY) ? event.pageY - win.pageYOffset : event.clientY
+			};
+			if (type.match(/DOMMouseScroll|mousewheel/)){
+				var wheel = (event.wheelDelta) ? event.wheelDelta / 120 : -(event.detail || 0) / 3;
+			}
+			var rightClick = (event.which == 3) || (event.button == 2);
+			var related = null;
+			if (type.match(/over|out/)){
+				switch (type){
+					case 'mouseover': related = event.relatedTarget || event.fromElement; break;
+					case 'mouseout': related = event.relatedTarget || event.toElement;
+				}
+				if (!(function(){
+					while (related && related.nodeType == 3) related = related.parentNode;
+					return true;
+				}).create({attempt: Browser.Engine.gecko})()) related = false;
+			}
+		}
+
+		return $extend(this, {
+			event: event,
+			type: type,
+
+			page: page,
+			client: client,
+			rightClick: rightClick,
+
+			wheel: wheel,
+
+			relatedTarget: related,
+			target: target,
+
+			code: code,
+			key: key,
+
+			shift: event.shiftKey,
+			control: event.ctrlKey,
+			alt: event.altKey,
+			meta: event.metaKey
+		});
+	}
+
+});
+
+Event.Keys = new Hash({
+	'enter': 13,
+	'up': 38,
+	'down': 40,
+	'left': 37,
+	'right': 39,
+	'esc': 27,
+	'space': 32,
+	'backspace': 8,
+	'tab': 9,
+	'delete': 46
+});
+
+Event.implement({
+
+	stop: function(){
+		return this.stopPropagation().preventDefault();
+	},
+
+	stopPropagation: function(){
+		if (this.event.stopPropagation) this.event.stopPropagation();
+		else this.event.cancelBubble = true;
+		return this;
+	},
+
+	preventDefault: function(){
+		if (this.event.preventDefault) this.event.preventDefault();
+		else this.event.returnValue = false;
+		return this;
+	}
+
+});
+
+
+/*
+---
+
+name: Element.Event
+
+description: Contains Element methods for dealing with events. This file also includes mouseenter and mouseleave custom Element Events.
+
+license: MIT-style license.
+
+requires: [Element, Event]
+
+provides: Element.Event
+
+...
+*/
+
+Element.Properties.events = {set: function(events){
+	this.addEvents(events);
+}};
+
+Native.implement([Element, Window, Document], {
+
+	addEvent: function(type, fn){
+		var events = this.retrieve('events', {});
+		events[type] = events[type] || {'keys': [], 'values': []};
+		if (events[type].keys.contains(fn)) return this;
+		events[type].keys.push(fn);
+		var realType = type, custom = Element.Events.get(type), condition = fn, self = this;
+		if (custom){
+			if (custom.onAdd) custom.onAdd.call(this, fn);
+			if (custom.condition){
+				condition = function(event){
+					if (custom.condition.call(this, event)) return fn.call(this, event);
+					return true;
+				};
+			}
+			realType = custom.base || realType;
+		}
+		var defn = function(){
+			return fn.call(self);
+		};
+		var nativeEvent = Element.NativeEvents[realType];
+		if (nativeEvent){
+			if (nativeEvent == 2){
+				defn = function(event){
+					event = new Event(event, self.getWindow());
+					if (condition.call(self, event) === false) event.stop();
+				};
+			}
+			this.addListener(realType, defn);
+		}
+		events[type].values.push(defn);
+		return this;
+	},
+
+	removeEvent: function(type, fn){
+		var events = this.retrieve('events');
+		if (!events || !events[type]) return this;
+		var pos = events[type].keys.indexOf(fn);
+		if (pos == -1) return this;
+		events[type].keys.splice(pos, 1);
+		var value = events[type].values.splice(pos, 1)[0];
+		var custom = Element.Events.get(type);
+		if (custom){
+			if (custom.onRemove) custom.onRemove.call(this, fn);
+			type = custom.base || type;
+		}
+		return (Element.NativeEvents[type]) ? this.removeListener(type, value) : this;
+	},
+
+	addEvents: function(events){
+		for (var event in events) this.addEvent(event, events[event]);
+		return this;
+	},
+
+	removeEvents: function(events){
+		var type;
+		if ($type(events) == 'object'){
+			for (type in events) this.removeEvent(type, events[type]);
+			return this;
+		}
+		var attached = this.retrieve('events');
+		if (!attached) return this;
+		if (!events){
+			for (type in attached) this.removeEvents(type);
+			this.eliminate('events');
+		} else if (attached[events]){
+			while (attached[events].keys[0]) this.removeEvent(events, attached[events].keys[0]);
+			attached[events] = null;
+		}
+		return this;
+	},
+
+	fireEvent: function(type, args, delay){
+		var events = this.retrieve('events');
+		if (!events || !events[type]) return this;
+		events[type].keys.each(function(fn){
+			fn.create({'bind': this, 'delay': delay, 'arguments': args})();
+		}, this);
+		return this;
+	},
+
+	cloneEvents: function(from, type){
+		from = document.id(from);
+		var fevents = from.retrieve('events');
+		if (!fevents) return this;
+		if (!type){
+			for (var evType in fevents) this.cloneEvents(from, evType);
+		} else if (fevents[type]){
+			fevents[type].keys.each(function(fn){
+				this.addEvent(type, fn);
+			}, this);
+		}
+		return this;
+	}
+
+});
+
+// IE9
+try {
+	if (typeof HTMLElement != 'undefined')
+		HTMLElement.prototype.fireEvent = Element.prototype.fireEvent;
+} catch(e){}
+
+Element.NativeEvents = {
+	click: 2, dblclick: 2, mouseup: 2, mousedown: 2, contextmenu: 2, //mouse buttons
+	mousewheel: 2, DOMMouseScroll: 2, //mouse wheel
+	mouseover: 2, mouseout: 2, mousemove: 2, selectstart: 2, selectend: 2, //mouse movement
+	keydown: 2, keypress: 2, keyup: 2, //keyboard
+	focus: 2, blur: 2, change: 2, reset: 2, select: 2, submit: 2, //form elements
+	load: 1, unload: 1, beforeunload: 2, resize: 1, move: 1, DOMContentLoaded: 1, readystatechange: 1, //window
+	error: 1, abort: 1, scroll: 1 //misc
+};
+
+(function(){
+
+var $check = function(event){
+	var related = event.relatedTarget;
+	if (related == undefined) return true;
+	if (related === false) return false;
+	return ($type(this) != 'document' && related != this && related.prefix != 'xul' && !this.hasChild(related));
+};
+
+Element.Events = new Hash({
+
+	mouseenter: {
+		base: 'mouseover',
+		condition: $check
+	},
+
+	mouseleave: {
+		base: 'mouseout',
+		condition: $check
+	},
+
+	mousewheel: {
+		base: (Browser.Engine.gecko) ? 'DOMMouseScroll' : 'mousewheel'
+	}
+
+});
+
+})();
+
+
+/*
+---
+
+name: Element.Style
+
+description: Contains methods for interacting with the styles of Elements in a fashionable way.
+
+license: MIT-style license.
+
+requires: Element
+
+provides: Element.Style
+
+...
+*/
+
+Element.Properties.styles = {set: function(styles){
+	this.setStyles(styles);
+}};
+
+Element.Properties.opacity = {
+
+	set: function(opacity, novisibility){
+		if (!novisibility){
+			if (opacity == 0){
+				if (this.style.visibility != 'hidden') this.style.visibility = 'hidden';
+			} else {
+				if (this.style.visibility != 'visible') this.style.visibility = 'visible';
+			}
+		}
+		if (!this.currentStyle || !this.currentStyle.hasLayout) this.style.zoom = 1;
+		if (Browser.Engine.trident) this.style.filter = (opacity == 1) ? '' : 'alpha(opacity=' + opacity * 100 + ')';
+		this.style.opacity = opacity;
+		this.store('opacity', opacity);
+	},
+
+	get: function(){
+		return this.retrieve('opacity', 1);
+	}
+
+};
+
+Element.implement({
+
+	setOpacity: function(value){
+		return this.set('opacity', value, true);
+	},
+
+	getOpacity: function(){
+		return this.get('opacity');
+	},
+
+	setStyle: function(property, value){
+		switch (property){
+			case 'opacity': return this.set('opacity', parseFloat(value));
+			case 'float': property = (Browser.Engine.trident) ? 'styleFloat' : 'cssFloat';
+		}
+		property = property.camelCase();
+		if ($type(value) != 'string'){
+			var map = (Element.Styles.get(property) || '@').split(' ');
+			value = $splat(value).map(function(val, i){
+				if (!map[i]) return '';
+				return ($type(val) == 'number') ? map[i].replace('@', Math.round(val)) : val;
+			}).join(' ');
+		} else if (value == String(Number(value))){
+			value = Math.round(value);
+		}
+		this.style[property] = value;
+		return this;
+	},
+
+	getStyle: function(property){
+		switch (property){
+			case 'opacity': return this.get('opacity');
+			case 'float': property = (Browser.Engine.trident) ? 'styleFloat' : 'cssFloat';
+		}
+		property = property.camelCase();
+		var result = this.style[property];
+		if (!$chk(result)){
+			result = [];
+			for (var style in Element.ShortStyles){
+				if (property != style) continue;
+				for (var s in Element.ShortStyles[style]) result.push(this.getStyle(s));
+				return result.join(' ');
+			}
+			result = this.getComputedStyle(property);
+		}
+		if (result){
+			result = String(result);
+			var color = result.match(/rgba?\([\d\s,]+\)/);
+			if (color) result = result.replace(color[0], color[0].rgbToHex());
+		}
+		if (Browser.Engine.presto || (Browser.Engine.trident && !$chk(parseInt(result, 10)))){
+			if (property.test(/^(height|width)$/)){
+				var values = (property == 'width') ? ['left', 'right'] : ['top', 'bottom'], size = 0;
+				values.each(function(value){
+					size += this.getStyle('border-' + value + '-width').toInt() + this.getStyle('padding-' + value).toInt();
+				}, this);
+				return this['offset' + property.capitalize()] - size + 'px';
+			}
+			if ((Browser.Engine.presto) && String(result).test('px')) return result;
+			if (property.test(/(border(.+)Width|margin|padding)/)) return '0px';
+		}
+		return result;
+	},
+
+	setStyles: function(styles){
+		for (var style in styles) this.setStyle(style, styles[style]);
+		return this;
+	},
+
+	getStyles: function(){
+		var result = {};
+		Array.flatten(arguments).each(function(key){
+			result[key] = this.getStyle(key);
+		}, this);
+		return result;
+	}
+
+});
+
+Element.Styles = new Hash({
+	left: '@px', top: '@px', bottom: '@px', right: '@px',
+	width: '@px', height: '@px', maxWidth: '@px', maxHeight: '@px', minWidth: '@px', minHeight: '@px',
+	backgroundColor: 'rgb(@, @, @)', backgroundPosition: '@px @px', color: 'rgb(@, @, @)',
+	fontSize: '@px', letterSpacing: '@px', lineHeight: '@px', clip: 'rect(@px @px @px @px)',
+	margin: '@px @px @px @px', padding: '@px @px @px @px', border: '@px @ rgb(@, @, @) @px @ rgb(@, @, @) @px @ rgb(@, @, @)',
+	borderWidth: '@px @px @px @px', borderStyle: '@ @ @ @', borderColor: 'rgb(@, @, @) rgb(@, @, @) rgb(@, @, @) rgb(@, @, @)',
+	zIndex: '@', 'zoom': '@', fontWeight: '@', textIndent: '@px', opacity: '@'
+});
+
+Element.ShortStyles = {margin: {}, padding: {}, border: {}, borderWidth: {}, borderStyle: {}, borderColor: {}};
+
+['Top', 'Right', 'Bottom', 'Left'].each(function(direction){
+	var Short = Element.ShortStyles;
+	var All = Element.Styles;
+	['margin', 'padding'].each(function(style){
+		var sd = style + direction;
+		Short[style][sd] = All[sd] = '@px';
+	});
+	var bd = 'border' + direction;
+	Short.border[bd] = All[bd] = '@px @ rgb(@, @, @)';
+	var bdw = bd + 'Width', bds = bd + 'Style', bdc = bd + 'Color';
+	Short[bd] = {};
+	Short.borderWidth[bdw] = Short[bd][bdw] = All[bdw] = '@px';
+	Short.borderStyle[bds] = Short[bd][bds] = All[bds] = '@';
+	Short.borderColor[bdc] = Short[bd][bdc] = All[bdc] = 'rgb(@, @, @)';
+});
+
+
+/*
+---
+
+name: Fx
+
+description: Contains the basic animation logic to be extended by all other Fx Classes.
+
+license: MIT-style license.
+
+requires: [Chain, Events, Options]
+
+provides: Fx
+
+...
+*/
+
+var Fx = new Class({
+
+	Implements: [Chain, Events, Options],
+
+	options: {
+		/*
+		onStart: $empty,
+		onCancel: $empty,
+		onComplete: $empty,
+		*/
+		fps: 50,
+		unit: false,
+		duration: 500,
+		link: 'ignore'
+	},
+
+	initialize: function(options){
+		this.subject = this.subject || this;
+		this.setOptions(options);
+		this.options.duration = Fx.Durations[this.options.duration] || this.options.duration.toInt();
+		var wait = this.options.wait;
+		if (wait === false) this.options.link = 'cancel';
+	},
+
+	getTransition: function(){
+		return function(p){
+			return -(Math.cos(Math.PI * p) - 1) / 2;
+		};
+	},
+
+	step: function(){
+		var time = $time();
+		if (time < this.time + this.options.duration){
+			var delta = this.transition((time - this.time) / this.options.duration);
+			this.set(this.compute(this.from, this.to, delta));
+		} else {
+			this.set(this.compute(this.from, this.to, 1));
+			this.complete();
+		}
+	},
+
+	set: function(now){
+		return now;
+	},
+
+	compute: function(from, to, delta){
+		return Fx.compute(from, to, delta);
+	},
+
+	check: function(){
+		if (!this.timer) return true;
+		switch (this.options.link){
+			case 'cancel': this.cancel(); return true;
+			case 'chain': this.chain(this.caller.bind(this, arguments)); return false;
+		}
+		return false;
+	},
+
+	start: function(from, to){
+		if (!this.check(from, to)) return this;
+		this.from = from;
+		this.to = to;
+		this.time = 0;
+		this.transition = this.getTransition();
+		this.startTimer();
+		this.onStart();
+		return this;
+	},
+
+	complete: function(){
+		if (this.stopTimer()) this.onComplete();
+		return this;
+	},
+
+	cancel: function(){
+		if (this.stopTimer()) this.onCancel();
+		return this;
+	},
+
+	onStart: function(){
+		this.fireEvent('start', this.subject);
+	},
+
+	onComplete: function(){
+		this.fireEvent('complete', this.subject);
+		if (!this.callChain()) this.fireEvent('chainComplete', this.subject);
+	},
+
+	onCancel: function(){
+		this.fireEvent('cancel', this.subject).clearChain();
+	},
+
+	pause: function(){
+		this.stopTimer();
+		return this;
+	},
+
+	resume: function(){
+		this.startTimer();
+		return this;
+	},
+
+	stopTimer: function(){
+		if (!this.timer) return false;
+		this.time = $time() - this.time;
+		this.timer = $clear(this.timer);
+		return true;
+	},
+
+	startTimer: function(){
+		if (this.timer) return false;
+		this.time = $time() - this.time;
+		this.timer = this.step.periodical(Math.round(1000 / this.options.fps), this);
+		return true;
+	}
+
+});
+
+Fx.compute = function(from, to, delta){
+	return (to - from) * delta + from;
+};
+
+Fx.Durations = {'short': 250, 'normal': 500, 'long': 1000};
+
+
+/*
+---
+
+name: Fx.CSS
+
+description: Contains the CSS animation logic. Used by Fx.Tween, Fx.Morph, Fx.Elements.
+
+license: MIT-style license.
+
+requires: [Fx, Element.Style]
+
+provides: Fx.CSS
+
+...
+*/
+
+Fx.CSS = new Class({
+
+	Extends: Fx,
+
+	//prepares the base from/to object
+
+	prepare: function(element, property, values){
+		values = $splat(values);
+		var values1 = values[1];
+		if (!$chk(values1)){
+			values[1] = values[0];
+			values[0] = element.getStyle(property);
+		}
+		var parsed = values.map(this.parse);
+		return {from: parsed[0], to: parsed[1]};
+	},
+
+	//parses a value into an array
+
+	parse: function(value){
+		value = $lambda(value)();
+		value = (typeof value == 'string') ? value.split(' ') : $splat(value);
+		return value.map(function(val){
+			val = String(val);
+			var found = false;
+			Fx.CSS.Parsers.each(function(parser, key){
+				if (found) return;
+				var parsed = parser.parse(val);
+				if ($chk(parsed)) found = {value: parsed, parser: parser};
+			});
+			found = found || {value: val, parser: Fx.CSS.Parsers.String};
+			return found;
+		});
+	},
+
+	//computes by a from and to prepared objects, using their parsers.
+
+	compute: function(from, to, delta){
+		var computed = [];
+		(Math.min(from.length, to.length)).times(function(i){
+			computed.push({value: from[i].parser.compute(from[i].value, to[i].value, delta), parser: from[i].parser});
+		});
+		computed.$family = {name: 'fx:css:value'};
+		return computed;
+	},
+
+	//serves the value as settable
+
+	serve: function(value, unit){
+		if ($type(value) != 'fx:css:value') value = this.parse(value);
+		var returned = [];
+		value.each(function(bit){
+			returned = returned.concat(bit.parser.serve(bit.value, unit));
+		});
+		return returned;
+	},
+
+	//renders the change to an element
+
+	render: function(element, property, value, unit){
+		element.setStyle(property, this.serve(value, unit));
+	},
+
+	//searches inside the page css to find the values for a selector
+
+	search: function(selector){
+		if (Fx.CSS.Cache[selector]) return Fx.CSS.Cache[selector];
+		var to = {};
+		Array.each(document.styleSheets, function(sheet, j){
+			var href = sheet.href;
+			if (href && href.contains('://') && !href.contains(document.domain)) return;
+			var rules = sheet.rules || sheet.cssRules;
+			Array.each(rules, function(rule, i){
+				if (!rule.style) return;
+				var selectorText = (rule.selectorText) ? rule.selectorText.replace(/^\w+/, function(m){
+					return m.toLowerCase();
+				}) : null;
+				if (!selectorText || !selectorText.test('^' + selector + '$')) return;
+				Element.Styles.each(function(value, style){
+					if (!rule.style[style] || Element.ShortStyles[style]) return;
+					value = String(rule.style[style]);
+					to[style] = (value.test(/^rgb/)) ? value.rgbToHex() : value;
+				});
+			});
+		});
+		return Fx.CSS.Cache[selector] = to;
+	}
+
+});
+
+Fx.CSS.Cache = {};
+
+Fx.CSS.Parsers = new Hash({
+
+	Color: {
+		parse: function(value){
+			if (value.match(/^#[0-9a-f]{3,6}$/i)) return value.hexToRgb(true);
+			return ((value = value.match(/(\d+),\s*(\d+),\s*(\d+)/))) ? [value[1], value[2], value[3]] : false;
+		},
+		compute: function(from, to, delta){
+			return from.map(function(value, i){
+				return Math.round(Fx.compute(from[i], to[i], delta));
+			});
+		},
+		serve: function(value){
+			return value.map(Number);
+		}
+	},
+
+	Number: {
+		parse: parseFloat,
+		compute: Fx.compute,
+		serve: function(value, unit){
+			return (unit) ? value + unit : value;
+		}
+	},
+
+	String: {
+		parse: $lambda(false),
+		compute: $arguments(1),
+		serve: $arguments(0)
+	}
+
+});
+
+
+/*
+---
+
+name: Fx.Morph
+
+description: Formerly Fx.Styles, effect to transition any number of CSS properties for an element using an object of rules, or CSS based selector rules.
+
+license: MIT-style license.
+
+requires: Fx.CSS
+
+provides: Fx.Morph
+
+...
+*/
+
+Fx.Morph = new Class({
+
+	Extends: Fx.CSS,
+
+	initialize: function(element, options){
+		this.element = this.subject = document.id(element);
+		this.parent(options);
+	},
+
+	set: function(now){
+		if (typeof now == 'string') now = this.search(now);
+		for (var p in now) this.render(this.element, p, now[p], this.options.unit);
+		return this;
+	},
+
+	compute: function(from, to, delta){
+		var now = {};
+		for (var p in from) now[p] = this.parent(from[p], to[p], delta);
+		return now;
+	},
+
+	start: function(properties){
+		if (!this.check(properties)) return this;
+		if (typeof properties == 'string') properties = this.search(properties);
+		var from = {}, to = {};
+		for (var p in properties){
+			var parsed = this.prepare(this.element, p, properties[p]);
+			from[p] = parsed.from;
+			to[p] = parsed.to;
+		}
+		return this.parent(from, to);
+	}
+
+});
+
+Element.Properties.morph = {
+
+	set: function(options){
+		var morph = this.retrieve('morph');
+		if (morph) morph.cancel();
+		return this.eliminate('morph').store('morph:options', $extend({link: 'cancel'}, options));
+	},
+
+	get: function(options){
+		if (options || !this.retrieve('morph')){
+			if (options || !this.retrieve('morph:options')) this.set('morph', options);
+			this.store('morph', new Fx.Morph(this, this.retrieve('morph:options')));
+		}
+		return this.retrieve('morph');
+	}
+
+};
+
+Element.implement({
+
+	morph: function(props){
+		this.get('morph').start(props);
+		return this;
+	}
+
+});
+
+
+/*
+---
+
+name: Fx.Transitions
+
+description: Contains a set of advanced transitions to be used with any of the Fx Classes.
+
+license: MIT-style license.
+
+credits: Easing Equations by Robert Penner, <http://www.robertpenner.com/easing/>, modified and optimized to be used with MooTools.
+
+requires: Fx
+
+provides: Fx.Transitions
+
+...
+*/
+
+Fx.implement({
+
+	getTransition: function(){
+		var trans = this.options.transition || Fx.Transitions.Sine.easeInOut;
+		if (typeof trans == 'string'){
+			var data = trans.split(':');
+			trans = Fx.Transitions;
+			trans = trans[data[0]] || trans[data[0].capitalize()];
+			if (data[1]) trans = trans['ease' + data[1].capitalize() + (data[2] ? data[2].capitalize() : '')];
+		}
+		return trans;
+	}
+
+});
+
+Fx.Transition = function(transition, params){
+	params = $splat(params);
+	return $extend(transition, {
+		easeIn: function(pos){
+			return transition(pos, params);
+		},
+		easeOut: function(pos){
+			return 1 - transition(1 - pos, params);
+		},
+		easeInOut: function(pos){
+			return (pos <= 0.5) ? transition(2 * pos, params) / 2 : (2 - transition(2 * (1 - pos), params)) / 2;
+		}
+	});
+};
+
+Fx.Transitions = new Hash({
+
+	linear: $arguments(0)
+
+});
+
+Fx.Transitions.extend = function(transitions){
+	for (var transition in transitions) Fx.Transitions[transition] = new Fx.Transition(transitions[transition]);
+};
+
+Fx.Transitions.extend({
+
+	Pow: function(p, x){
+		return Math.pow(p, x[0] || 6);
+	},
+
+	Expo: function(p){
+		return Math.pow(2, 8 * (p - 1));
+	},
+
+	Circ: function(p){
+		return 1 - Math.sin(Math.acos(p));
+	},
+
+	Sine: function(p){
+		return 1 - Math.sin((1 - p) * Math.PI / 2);
+	},
+
+	Back: function(p, x){
+		x = x[0] || 1.618;
+		return Math.pow(p, 2) * ((x + 1) * p - x);
+	},
+
+	Bounce: function(p){
+		var value;
+		for (var a = 0, b = 1; 1; a += b, b /= 2){
+			if (p >= (7 - 4 * a) / 11){
+				value = b * b - Math.pow((11 - 6 * a - 11 * p) / 4, 2);
+				break;
+			}
+		}
+		return value;
+	},
+
+	Elastic: function(p, x){
+		return Math.pow(2, 10 * --p) * Math.cos(20 * p * Math.PI * (x[0] || 1) / 3);
+	}
+
+});
+
+['Quad', 'Cubic', 'Quart', 'Quint'].each(function(transition, i){
+	Fx.Transitions[transition] = new Fx.Transition(function(p){
+		return Math.pow(p, [i + 2]);
+	});
+});
+
+
+/*
+---
+
+name: Fx.Tween
+
+description: Formerly Fx.Style, effect to transition any CSS property for an element.
+
+license: MIT-style license.
+
+requires: Fx.CSS
+
+provides: [Fx.Tween, Element.fade, Element.highlight]
+
+...
+*/
+
+Fx.Tween = new Class({
+
+	Extends: Fx.CSS,
+
+	initialize: function(element, options){
+		this.element = this.subject = document.id(element);
+		this.parent(options);
+	},
+
+	set: function(property, now){
+		if (arguments.length == 1){
+			now = property;
+			property = this.property || this.options.property;
+		}
+		this.render(this.element, property, now, this.options.unit);
+		return this;
+	},
+
+	start: function(property, from, to){
+		if (!this.check(property, from, to)) return this;
+		var args = Array.flatten(arguments);
+		this.property = this.options.property || args.shift();
+		var parsed = this.prepare(this.element, this.property, args);
+		return this.parent(parsed.from, parsed.to);
+	}
+
+});
+
+Element.Properties.tween = {
+
+	set: function(options){
+		var tween = this.retrieve('tween');
+		if (tween) tween.cancel();
+		return this.eliminate('tween').store('tween:options', $extend({link: 'cancel'}, options));
+	},
+
+	get: function(options){
+		if (options || !this.retrieve('tween')){
+			if (options || !this.retrieve('tween:options')) this.set('tween', options);
+			this.store('tween', new Fx.Tween(this, this.retrieve('tween:options')));
+		}
+		return this.retrieve('tween');
+	}
+
+};
+
+Element.implement({
+
+	tween: function(property, from, to){
+		this.get('tween').start(arguments);
+		return this;
+	},
+
+	fade: function(how){
+		var fade = this.get('tween'), o = 'opacity', toggle;
+		how = $pick(how, 'toggle');
+		switch (how){
+			case 'in': fade.start(o, 1); break;
+			case 'out': fade.start(o, 0); break;
+			case 'show': fade.set(o, 1); break;
+			case 'hide': fade.set(o, 0); break;
+			case 'toggle':
+				var flag = this.retrieve('fade:flag', this.get('opacity') == 1);
+				fade.start(o, (flag) ? 0 : 1);
+				this.store('fade:flag', !flag);
+				toggle = true;
+			break;
+			default: fade.start(o, arguments);
+		}
+		if (!toggle) this.eliminate('fade:flag');
+		return this;
+	},
+
+	highlight: function(start, end){
+		if (!end){
+			end = this.retrieve('highlight:original', this.getStyle('background-color'));
+			end = (end == 'transparent') ? '#fff' : end;
+		}
+		var tween = this.get('tween');
+		tween.start('background-color', start || '#ffff88', end).chain(function(){
+			this.setStyle('background-color', this.retrieve('highlight:original'));
+			tween.callChain();
+		}.bind(this));
+		return this;
+	}
+
+});
+
+
+/*
+---
+
+name: Request
+
+description: Powerful all purpose Request Class. Uses XMLHTTPRequest.
+
+license: MIT-style license.
+
+requires: [Element, Chain, Events, Options, Browser]
+
+provides: Request
+
+...
+*/
+
+var Request = new Class({
+
+	Implements: [Chain, Events, Options],
+
+	options: {/*
+		onRequest: $empty,
+		onComplete: $empty,
+		onCancel: $empty,
+		onSuccess: $empty,
+		onFailure: $empty,
+		onException: $empty,*/
+		url: '',
+		data: '',
+		headers: {
+			'X-Requested-With': 'XMLHttpRequest',
+			'Accept': 'text/javascript, text/html, application/xml, text/xml, */*'
+		},
+		async: true,
+		format: false,
+		method: 'post',
+		link: 'ignore',
+		isSuccess: null,
+		emulation: true,
+		urlEncoded: true,
+		encoding: 'utf-8',
+		evalScripts: false,
+		evalResponse: false,
+		noCache: false
+	},
+
+	initialize: function(options){
+		this.xhr = new Browser.Request();
+		this.setOptions(options);
+		this.options.isSuccess = this.options.isSuccess || this.isSuccess;
+		this.headers = new Hash(this.options.headers);
+	},
+
+	onStateChange: function(){
+		if (this.xhr.readyState != 4 || !this.running) return;
+		this.running = false;
+		this.status = 0;
+		$try(function(){
+			this.status = this.xhr.status;
+		}.bind(this));
+		this.xhr.onreadystatechange = $empty;
+		if (this.options.isSuccess.call(this, this.status)){
+			this.response = {text: this.xhr.responseText, xml: this.xhr.responseXML};
+			this.success(this.response.text, this.response.xml);
+		} else {
+			this.response = {text: null, xml: null};
+			this.failure();
+		}
+	},
+
+	isSuccess: function(){
+		return ((this.status >= 200) && (this.status < 300));
+	},
+
+	processScripts: function(text){
+		if (this.options.evalResponse || (/(ecma|java)script/).test(this.getHeader('Content-type'))) return $exec(text);
+		return text.stripScripts(this.options.evalScripts);
+	},
+
+	success: function(text, xml){
+		this.onSuccess(this.processScripts(text), xml);
+	},
+
+	onSuccess: function(){
+		this.fireEvent('complete', arguments).fireEvent('success', arguments).callChain();
+	},
+
+	failure: function(){
+		this.onFailure();
+	},
+
+	onFailure: function(){
+		this.fireEvent('complete').fireEvent('failure', this.xhr);
+	},
+
+	setHeader: function(name, value){
+		this.headers.set(name, value);
+		return this;
+	},
+
+	getHeader: function(name){
+		return $try(function(){
+			return this.xhr.getResponseHeader(name);
+		}.bind(this));
+	},
+
+	check: function(){
+		if (!this.running) return true;
+		switch (this.options.link){
+			case 'cancel': this.cancel(); return true;
+			case 'chain': this.chain(this.caller.bind(this, arguments)); return false;
+		}
+		return false;
+	},
+
+	send: function(options){
+		if (!this.check(options)) return this;
+		this.running = true;
+
+		var type = $type(options);
+		if (type == 'string' || type == 'element') options = {data: options};
+
+		var old = this.options;
+		options = $extend({data: old.data, url: old.url, method: old.method}, options);
+		var data = options.data, url = String(options.url), method = options.method.toLowerCase();
+
+		switch ($type(data)){
+			case 'element': data = document.id(data).toQueryString(); break;
+			case 'object': case 'hash': data = Hash.toQueryString(data);
+		}
+
+		if (this.options.format){
+			var format = 'format=' + this.options.format;
+			data = (data) ? format + '&' + data : format;
+		}
+
+		if (this.options.emulation && !['get', 'post'].contains(method)){
+			var _method = '_method=' + method;
+			data = (data) ? _method + '&' + data : _method;
+			method = 'post';
+		}
+
+		if (this.options.urlEncoded && method == 'post'){
+			var encoding = (this.options.encoding) ? '; charset=' + this.options.encoding : '';
+			this.headers.set('Content-type', 'application/x-www-form-urlencoded' + encoding);
+		}
+
+		if (this.options.noCache){
+			var noCache = 'noCache=' + new Date().getTime();
+			data = (data) ? noCache + '&' + data : noCache;
+		}
+
+		var trimPosition = url.lastIndexOf('/');
+		if (trimPosition > -1 && (trimPosition = url.indexOf('#')) > -1) url = url.substr(0, trimPosition);
+
+		if (data && method == 'get'){
+			url = url + (url.contains('?') ? '&' : '?') + data;
+			data = null;
+		}
+
+		this.xhr.open(method.toUpperCase(), url, this.options.async);
+
+		this.xhr.onreadystatechange = this.onStateChange.bind(this);
+
+		this.headers.each(function(value, key){
+			try {
+				this.xhr.setRequestHeader(key, value);
+			} catch (e){
+				this.fireEvent('exception', [key, value]);
+			}
+		}, this);
+
+		this.fireEvent('request');
+		this.xhr.send(data);
+		if (!this.options.async) this.onStateChange();
+		return this;
+	},
+
+	cancel: function(){
+		if (!this.running) return this;
+		this.running = false;
+		this.xhr.abort();
+		this.xhr.onreadystatechange = $empty;
+		this.xhr = new Browser.Request();
+		this.fireEvent('cancel');
+		return this;
+	}
+
+});
+
+(function(){
+
+var methods = {};
+['get', 'post', 'put', 'delete', 'GET', 'POST', 'PUT', 'DELETE'].each(function(method){
+	methods[method] = function(){
+		var params = Array.link(arguments, {url: String.type, data: $defined});
+		return this.send($extend(params, {method: method}));
+	};
+});
+
+Request.implement(methods);
+
+})();
+
+Element.Properties.send = {
+
+	set: function(options){
+		var send = this.retrieve('send');
+		if (send) send.cancel();
+		return this.eliminate('send').store('send:options', $extend({
+			data: this, link: 'cancel', method: this.get('method') || 'post', url: this.get('action')
+		}, options));
+	},
+
+	get: function(options){
+		if (options || !this.retrieve('send')){
+			if (options || !this.retrieve('send:options')) this.set('send', options);
+			this.store('send', new Request(this.retrieve('send:options')));
+		}
+		return this.retrieve('send');
+	}
+
+};
+
+Element.implement({
+
+	send: function(url){
+		var sender = this.get('send');
+		sender.send({data: this, url: url || sender.options.url});
+		return this;
+	}
+
+});
+
+
+/*
+---
+
+name: Request.HTML
+
+description: Extends the basic Request Class with additional methods for interacting with HTML responses.
+
+license: MIT-style license.
+
+requires: [Request, Element]
+
+provides: Request.HTML
+
+...
+*/
+
+Request.HTML = new Class({
+
+	Extends: Request,
+
+	options: {
+		update: false,
+		append: false,
+		evalScripts: true,
+		filter: false
+	},
+
+	processHTML: function(text){
+		var match = text.match(/<body[^>]*>([\s\S]*?)<\/body>/i);
+		text = (match) ? match[1] : text;
+
+		var container = new Element('div');
+
+		return $try(function(){
+			var root = '<root>' + text + '</root>', doc;
+			if (Browser.Engine.trident){
+				doc = new ActiveXObject('Microsoft.XMLDOM');
+				doc.async = false;
+				doc.loadXML(root);
+			} else {
+				doc = new DOMParser().parseFromString(root, 'text/xml');
+			}
+			root = doc.getElementsByTagName('root')[0];
+			if (!root) return null;
+			for (var i = 0, k = root.childNodes.length; i < k; i++){
+				var child = Element.clone(root.childNodes[i], true, true);
+				if (child) container.grab(child);
+			}
+			return container;
+		}) || container.set('html', text);
+	},
+
+	success: function(text){
+		var options = this.options, response = this.response;
+
+		response.html = text.stripScripts(function(script){
+			response.javascript = script;
+		});
+
+		var temp = this.processHTML(response.html);
+
+		response.tree = temp.childNodes;
+		response.elements = temp.getElements('*');
+
+		if (options.filter) response.tree = response.elements.filter(options.filter);
+		if (options.update) document.id(options.update).empty().set('html', response.html);
+		else if (options.append) document.id(options.append).adopt(temp.getChildren());
+		if (options.evalScripts) $exec(response.javascript);
+
+		this.onSuccess(response.tree, response.elements, response.html, response.javascript);
+	}
+
+});
+
+Element.Properties.load = {
+
+	set: function(options){
+		var load = this.retrieve('load');
+		if (load) load.cancel();
+		return this.eliminate('load').store('load:options', $extend({data: this, link: 'cancel', update: this, method: 'get'}, options));
+	},
+
+	get: function(options){
+		if (options || ! this.retrieve('load')){
+			if (options || !this.retrieve('load:options')) this.set('load', options);
+			this.store('load', new Request.HTML(this.retrieve('load:options')));
+		}
+		return this.retrieve('load');
+	}
+
+};
+
+Element.implement({
+
+	load: function(){
+		this.get('load').send(Array.link(arguments, {data: Object.type, url: String.type}));
+		return this;
+	}
+
+});
+
+
+/*
+---
+
+name: JSON
+
+description: JSON encoder and decoder.
+
+license: MIT-style license.
+
+see: <http://www.json.org/>
+
+requires: [Array, String, Number, Function, Hash]
+
+provides: JSON
+
+...
+*/
+
+var JSON = new Hash(this.JSON && {
+	stringify: JSON.stringify,
+	parse: JSON.parse
+}).extend({
+	
+	$specialChars: {'\b': '\\b', '\t': '\\t', '\n': '\\n', '\f': '\\f', '\r': '\\r', '"' : '\\"', '\\': '\\\\'},
+
+	$replaceChars: function(chr){
+		return JSON.$specialChars[chr] || '\\u00' + Math.floor(chr.charCodeAt() / 16).toString(16) + (chr.charCodeAt() % 16).toString(16);
+	},
+
+	encode: function(obj){
+		switch ($type(obj)){
+			case 'string':
+				return '"' + obj.replace(/[\x00-\x1f\\"]/g, JSON.$replaceChars) + '"';
+			case 'array':
+				return '[' + String(obj.map(JSON.encode).clean()) + ']';
+			case 'object': case 'hash':
+				var string = [];
+				Hash.each(obj, function(value, key){
+					var json = JSON.encode(value);
+					if (json) string.push(JSON.encode(key) + ':' + json);
+				});
+				return '{' + string + '}';
+			case 'number': case 'boolean': return String(obj);
+			case false: return 'null';
+		}
+		return null;
+	},
+
+	decode: function(string, secure){
+		if ($type(string) != 'string' || !string.length) return null;
+		if (secure && !(/^[,:{}\[\]0-9.\-+Eaeflnr-u \n\r\t]*$/).test(string.replace(/\\./g, '@').replace(/"[^"\\\n\r]*"/g, ''))) return null;
+		return eval('(' + string + ')');
+	}
+
+});
+
+
+/*
+---
+
+name: Request.JSON
+
+description: Extends the basic Request Class with additional methods for sending and receiving JSON data.
+
+license: MIT-style license.
+
+requires: [Request, JSON]
+
+provides: [Request.JSON]
+
+...
+*/
+
+Request.JSON = new Class({
+
+	Extends: Request,
+
+	options: {
+		secure: true
+	},
+
+	initialize: function(options){
+		this.parent(options);
+		this.headers.extend({'Accept': 'application/json', 'X-Request': 'JSON'});
+	},
+
+	success: function(text){
+		this.response.json = JSON.decode(text, this.options.secure);
+		this.onSuccess(this.response.json, text);
+	}
+
+});
+
+
+/*
+---
+
+name: Cookie
+
+description: Class for creating, reading, and deleting browser Cookies.
+
+license: MIT-style license.
+
+credits: Based on the functions by Peter-Paul Koch (http://quirksmode.org).
+
+requires: Options
+
+provides: Cookie
+
+...
+*/
+
+var Cookie = new Class({
+
+	Implements: Options,
+
+	options: {
+		path: false,
+		domain: false,
+		duration: false,
+		secure: false,
+		document: document
+	},
+
+	initialize: function(key, options){
+		this.key = key;
+		this.setOptions(options);
+	},
+
+	write: function(value){
+		value = encodeURIComponent(value);
+		if (this.options.domain) value += '; domain=' + this.options.domain;
+		if (this.options.path) value += '; path=' + this.options.path;
+		if (this.options.duration){
+			var date = new Date();
+			date.setTime(date.getTime() + this.options.duration * 24 * 60 * 60 * 1000);
+			value += '; expires=' + date.toGMTString();
+		}
+		if (this.options.secure) value += '; secure';
+		this.options.document.cookie = this.key + '=' + value;
+		return this;
+	},
+
+	read: function(){
+		var value = this.options.document.cookie.match('(?:^|;)\\s*' + this.key.escapeRegExp() + '=([^;]*)');
+		return (value) ? decodeURIComponent(value[1]) : null;
+	},
+
+	dispose: function(){
+		new Cookie(this.key, $merge(this.options, {duration: -1})).write('');
+		return this;
+	}
+
+});
+
+Cookie.write = function(key, value, options){
+	return new Cookie(key, options).write(value);
+};
+
+Cookie.read = function(key){
+	return new Cookie(key).read();
+};
+
+Cookie.dispose = function(key, options){
+	return new Cookie(key, options).dispose();
+};
+
+
+/*
+---
+
+name: DomReady
+
+description: Contains the custom event domready.
+
+license: MIT-style license.
+
+requires: Element.Event
+
+provides: DomReady
+
+...
+*/
+
+Element.Events.domready = {
+
+	onAdd: function(fn){
+		if (Browser.loaded) fn.call(this);
+	}
+
+};
+
+(function(){
+
+	var domready = function(){
+		if (Browser.loaded) return;
+		Browser.loaded = true;
+		window.fireEvent('domready');
+		document.fireEvent('domready');
+	};
+	
+	window.addEvent('load', domready);
+
+	if (Browser.Engine.trident){
+		var temp = document.createElement('div');
+		(function(){
+			($try(function(){
+				temp.doScroll(); // Technique by Diego Perini
+				return document.id(temp).inject(document.body).set('html', 'temp').dispose();
+			})) ? domready() : arguments.callee.delay(50);
+		})();
+	} else if (Browser.Engine.webkit && Browser.Engine.version < 525){
+		(function(){
+			(['loaded', 'complete'].contains(document.readyState)) ? domready() : arguments.callee.delay(50);
+		})();
+	} else {
+		document.addEvent('DOMContentLoaded', domready);
+	}
+
+})();
+
+
+/*
+---
+
+name: Selectors
+
+description: Adds advanced CSS-style querying capabilities for targeting HTML Elements. Includes pseudo selectors.
+
+license: MIT-style license.
+
+requires: Element
+
+provides: Selectors
+
+...
+*/
+
+Native.implement([Document, Element], {
+
+	getElements: function(expression, nocash){
+		expression = expression.split(',');
+		var items, local = {};
+		for (var i = 0, l = expression.length; i < l; i++){
+			var selector = expression[i], elements = Selectors.Utils.search(this, selector, local);
+			if (i != 0 && elements.item) elements = $A(elements);
+			items = (i == 0) ? elements : (items.item) ? $A(items).concat(elements) : items.concat(elements);
+		}
+		return new Elements(items, {ddup: (expression.length > 1), cash: !nocash});
+	}
+
+});
+
+Element.implement({
+
+	match: function(selector){
+		if (!selector || (selector == this)) return true;
+		var tagid = Selectors.Utils.parseTagAndID(selector);
+		var tag = tagid[0], id = tagid[1];
+		if (!Selectors.Filters.byID(this, id) || !Selectors.Filters.byTag(this, tag)) return false;
+		var parsed = Selectors.Utils.parseSelector(selector);
+		return (parsed) ? Selectors.Utils.filter(this, parsed, {}) : true;
+	}
+
+});
+
+var Selectors = {Cache: {nth: {}, parsed: {}}};
+
+Selectors.RegExps = {
+	id: (/#([\w-]+)/),
+	tag: (/^(\w+|\*)/),
+	quick: (/^(\w+|\*)$/),
+	splitter: (/\s*([+>~\s])\s*([a-zA-Z#.*:\[])/g),
+	combined: (/\.([\w-]+)|\[(\w+)(?:([!*^$~|]?=)(["']?)([^\4]*?)\4)?\]|:([\w-]+)(?:\(["']?(.*?)?["']?\)|$)/g)
+};
+
+Selectors.Utils = {
+
+	chk: function(item, uniques){
+		if (!uniques) return true;
+		var uid = $uid(item);
+		if (!uniques[uid]) return uniques[uid] = true;
+		return false;
+	},
+
+	parseNthArgument: function(argument){
+		if (Selectors.Cache.nth[argument]) return Selectors.Cache.nth[argument];
+		var parsed = argument.match(/^([+-]?\d*)?([a-z]+)?([+-]?\d*)?$/);
+		if (!parsed) return false;
+		var inta = parseInt(parsed[1], 10);
+		var a = (inta || inta === 0) ? inta : 1;
+		var special = parsed[2] || false;
+		var b = parseInt(parsed[3], 10) || 0;
+		if (a != 0){
+			b--;
+			while (b < 1) b += a;
+			while (b >= a) b -= a;
+		} else {
+			a = b;
+			special = 'index';
+		}
+		switch (special){
+			case 'n': parsed = {a: a, b: b, special: 'n'}; break;
+			case 'odd': parsed = {a: 2, b: 0, special: 'n'}; break;
+			case 'even': parsed = {a: 2, b: 1, special: 'n'}; break;
+			case 'first': parsed = {a: 0, special: 'index'}; break;
+			case 'last': parsed = {special: 'last-child'}; break;
+			case 'only': parsed = {special: 'only-child'}; break;
+			default: parsed = {a: (a - 1), special: 'index'};
+		}
+
+		return Selectors.Cache.nth[argument] = parsed;
+	},
+
+	parseSelector: function(selector){
+		if (Selectors.Cache.parsed[selector]) return Selectors.Cache.parsed[selector];
+		var m, parsed = {classes: [], pseudos: [], attributes: []};
+		while ((m = Selectors.RegExps.combined.exec(selector))){
+			var cn = m[1], an = m[2], ao = m[3], av = m[5], pn = m[6], pa = m[7];
+			if (cn){
+				parsed.classes.push(cn);
+			} else if (pn){
+				var parser = Selectors.Pseudo.get(pn);
+				if (parser) parsed.pseudos.push({parser: parser, argument: pa});
+				else parsed.attributes.push({name: pn, operator: '=', value: pa});
+			} else if (an){
+				parsed.attributes.push({name: an, operator: ao, value: av});
+			}
+		}
+		if (!parsed.classes.length) delete parsed.classes;
+		if (!parsed.attributes.length) delete parsed.attributes;
+		if (!parsed.pseudos.length) delete parsed.pseudos;
+		if (!parsed.classes && !parsed.attributes && !parsed.pseudos) parsed = null;
+		return Selectors.Cache.parsed[selector] = parsed;
+	},
+
+	parseTagAndID: function(selector){
+		var tag = selector.match(Selectors.RegExps.tag);
+		var id = selector.match(Selectors.RegExps.id);
+		return [(tag) ? tag[1] : '*', (id) ? id[1] : false];
+	},
+
+	filter: function(item, parsed, local){
+		var i;
+		if (parsed.classes){
+			for (i = parsed.classes.length; i--; i){
+				var cn = parsed.classes[i];
+				if (!Selectors.Filters.byClass(item, cn)) return false;
+			}
+		}
+		if (parsed.attributes){
+			for (i = parsed.attributes.length; i--; i){
+				var att = parsed.attributes[i];
+				if (!Selectors.Filters.byAttribute(item, att.name, att.operator, att.value)) return false;
+			}
+		}
+		if (parsed.pseudos){
+			for (i = parsed.pseudos.length; i--; i){
+				var psd = parsed.pseudos[i];
+				if (!Selectors.Filters.byPseudo(item, psd.parser, psd.argument, local)) return false;
+			}
+		}
+		return true;
+	},
+
+	getByTagAndID: function(ctx, tag, id){
+		if (id){
+			var item = (ctx.getElementById) ? ctx.getElementById(id, true) : Element.getElementById(ctx, id, true);
+			return (item && Selectors.Filters.byTag(item, tag)) ? [item] : [];
+		} else {
+			return ctx.getElementsByTagName(tag);
+		}
+	},
+
+	search: function(self, expression, local){
+		var splitters = [];
+
+		var selectors = expression.trim().replace(Selectors.RegExps.splitter, function(m0, m1, m2){
+			splitters.push(m1);
+			return ':)' + m2;
+		}).split(':)');
+
+		var items, filtered, item;
+
+		for (var i = 0, l = selectors.length; i < l; i++){
+
+			var selector = selectors[i];
+
+			if (i == 0 && Selectors.RegExps.quick.test(selector)){
+				items = self.getElementsByTagName(selector);
+				continue;
+			}
+
+			var splitter = splitters[i - 1];
+
+			var tagid = Selectors.Utils.parseTagAndID(selector);
+			var tag = tagid[0], id = tagid[1];
+
+			if (i == 0){
+				items = Selectors.Utils.getByTagAndID(self, tag, id);
+			} else {
+				var uniques = {}, found = [];
+				for (var j = 0, k = items.length; j < k; j++) found = Selectors.Getters[splitter](found, items[j], tag, id, uniques);
+				items = found;
+			}
+
+			var parsed = Selectors.Utils.parseSelector(selector);
+
+			if (parsed){
+				filtered = [];
+				for (var m = 0, n = items.length; m < n; m++){
+					item = items[m];
+					if (Selectors.Utils.filter(item, parsed, local)) filtered.push(item);
+				}
+				items = filtered;
+			}
+
+		}
+
+		return items;
+
+	}
+
+};
+
+Selectors.Getters = {
+
+	' ': function(found, self, tag, id, uniques){
+		var items = Selectors.Utils.getByTagAndID(self, tag, id);
+		for (var i = 0, l = items.length; i < l; i++){
+			var item = items[i];
+			if (Selectors.Utils.chk(item, uniques)) found.push(item);
+		}
+		return found;
+	},
+
+	'>': function(found, self, tag, id, uniques){
+		var children = Selectors.Utils.getByTagAndID(self, tag, id);
+		for (var i = 0, l = children.length; i < l; i++){
+			var child = children[i];
+			if (child.parentNode == self && Selectors.Utils.chk(child, uniques)) found.push(child);
+		}
+		return found;
+	},
+
+	'+': function(found, self, tag, id, uniques){
+		while ((self = self.nextSibling)){
+			if (self.nodeType == 1){
+				if (Selectors.Utils.chk(self, uniques) && Selectors.Filters.byTag(self, tag) && Selectors.Filters.byID(self, id)) found.push(self);
+				break;
+			}
+		}
+		return found;
+	},
+
+	'~': function(found, self, tag, id, uniques){
+		while ((self = self.nextSibling)){
+			if (self.nodeType == 1){
+				if (!Selectors.Utils.chk(self, uniques)) break;
+				if (Selectors.Filters.byTag(self, tag) && Selectors.Filters.byID(self, id)) found.push(self);
+			}
+		}
+		return found;
+	}
+
+};
+
+Selectors.Filters = {
+
+	byTag: function(self, tag){
+		return (tag == '*' || (self.tagName && self.tagName.toLowerCase() == tag));
+	},
+
+	byID: function(self, id){
+		return (!id || (self.id && self.id == id));
+	},
+
+	byClass: function(self, klass){
+		return (self.className && self.className.contains && self.className.contains(klass, ' '));
+	},
+
+	byPseudo: function(self, parser, argument, local){
+		return parser.call(self, argument, local);
+	},
+
+	byAttribute: function(self, name, operator, value){
+		var result = Element.prototype.getProperty.call(self, name);
+		if (!result) return (operator == '!=');
+		if (!operator || value == undefined) return true;
+		switch (operator){
+			case '=': return (result == value);
+			case '*=': return (result.contains(value));
+			case '^=': return (result.substr(0, value.length) == value);
+			case '$=': return (result.substr(result.length - value.length) == value);
+			case '!=': return (result != value);
+			case '~=': return result.contains(value, ' ');
+			case '|=': return result.contains(value, '-');
+		}
+		return false;
+	}
+
+};
+
+Selectors.Pseudo = new Hash({
+
+	// w3c pseudo selectors
+
+	checked: function(){
+		return this.checked;
+	},
+	
+	empty: function(){
+		return !(this.innerText || this.textContent || '').length;
+	},
+
+	not: function(selector){
+		return !Element.match(this, selector);
+	},
+
+	contains: function(text){
+		return (this.innerText || this.textContent || '').contains(text);
+	},
+
+	'first-child': function(){
+		return Selectors.Pseudo.index.call(this, 0);
+	},
+
+	'last-child': function(){
+		var element = this;
+		while ((element = element.nextSibling)){
+			if (element.nodeType == 1) return false;
+		}
+		return true;
+	},
+
+	'only-child': function(){
+		var prev = this;
+		while ((prev = prev.previousSibling)){
+			if (prev.nodeType == 1) return false;
+		}
+		var next = this;
+		while ((next = next.nextSibling)){
+			if (next.nodeType == 1) return false;
+		}
+		return true;
+	},
+
+	'nth-child': function(argument, local){
+		argument = (argument == undefined) ? 'n' : argument;
+		var parsed = Selectors.Utils.parseNthArgument(argument);
+		if (parsed.special != 'n') return Selectors.Pseudo[parsed.special].call(this, parsed.a, local);
+		var count = 0;
+		local.positions = local.positions || {};
+		var uid = $uid(this);
+		if (!local.positions[uid]){
+			var self = this;
+			while ((self = self.previousSibling)){
+				if (self.nodeType != 1) continue;
+				count ++;
+				var position = local.positions[$uid(self)];
+				if (position != undefined){
+					count = position + count;
+					break;
+				}
+			}
+			local.positions[uid] = count;
+		}
+		return (local.positions[uid] % parsed.a == parsed.b);
+	},
+
+	// custom pseudo selectors
+
+	index: function(index){
+		var element = this, count = 0;
+		while ((element = element.previousSibling)){
+			if (element.nodeType == 1 && ++count > index) return false;
+		}
+		return (count == index);
+	},
+
+	even: function(argument, local){
+		return Selectors.Pseudo['nth-child'].call(this, '2n+1', local);
+	},
+
+	odd: function(argument, local){
+		return Selectors.Pseudo['nth-child'].call(this, '2n', local);
+	},
+	
+	selected: function(){
+		return this.selected;
+	},
+	
+	enabled: function(){
+		return (this.disabled === false);
+	}
+
+});
+
+
+/*
+---
+
+name: Swiff
+
+description: Wrapper for embedding SWF movies. Supports External Interface Communication.
+
+license: MIT-style license.
+
+credits: Flash detection & Internet Explorer + Flash Player 9 fix inspired by SWFObject.
+
+requires: [Options, $util]
+
+provides: Swiff
+
+...
+*/
+
+var Swiff = new Class({
+
+	Implements: [Options],
+
+	options: {
+		id: null,
+		height: 1,
+		width: 1,
+		container: null,
+		properties: {},
+		params: {
+			quality: 'high',
+			allowScriptAccess: 'always',
+			wMode: 'transparent',
+			swLiveConnect: true
+		},
+		callBacks: {},
+		vars: {}
+	},
+
+	toElement: function(){
+		return this.object;
+	},
+
+	initialize: function(path, options){
+		this.instance = 'Swiff_' + $time();
+
+		this.setOptions(options);
+		options = this.options;
+		var id = this.id = options.id || this.instance;
+		var container = document.id(options.container);
+
+		Swiff.CallBacks[this.instance] = {};
+
+		var params = options.params, vars = options.vars, callBacks = options.callBacks;
+		var properties = $extend({height: options.height, width: options.width}, options.properties);
+
+		var self = this;
+
+		for (var callBack in callBacks){
+			Swiff.CallBacks[this.instance][callBack] = (function(option){
+				return function(){
+					return option.apply(self.object, arguments);
+				};
+			})(callBacks[callBack]);
+			vars[callBack] = 'Swiff.CallBacks.' + this.instance + '.' + callBack;
+		}
+
+		params.flashVars = Hash.toQueryString(vars);
+		if (Browser.Engine.trident){
+			properties.classid = 'clsid:D27CDB6E-AE6D-11cf-96B8-444553540000';
+			params.movie = path;
+		} else {
+			properties.type = 'application/x-shockwave-flash';
+			properties.data = path;
+		}
+		var build = '<object id="' + id + '"';
+		for (var property in properties) build += ' ' + property + '="' + properties[property] + '"';
+		build += '>';
+		for (var param in params){
+			if (params[param]) build += '<param name="' + param + '" value="' + params[param] + '" />';
+		}
+		build += '</object>';
+		this.object = ((container) ? container.empty() : new Element('div')).set('html', build).firstChild;
+	},
+
+	replaces: function(element){
+		element = document.id(element, true);
+		element.parentNode.replaceChild(this.toElement(), element);
+		return this;
+	},
+
+	inject: function(element){
+		document.id(element, true).appendChild(this.toElement());
+		return this;
+	},
+
+	remote: function(){
+		return Swiff.remote.apply(Swiff, [this.toElement()].extend(arguments));
+	}
+
+});
+
+Swiff.CallBacks = {};
+
+Swiff.remote = function(obj, fn){
+	var rs = obj.CallFunction('<invoke name="' + fn + '" returntype="javascript">' + __flash__argumentsToXML(arguments, 2) + '</invoke>');
+	return eval(rs);
+};
+
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/info.jsp
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/info.jsp	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/info.jsp	(revision 47450)
@@ -0,0 +1,25 @@
+<%@ page contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<%@ taglib prefix="s" uri="/struts-tags"%>
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<link href="jsps/style.css" rel="stylesheet" type="text/css" media="screen" />
+<link href="jsps/favicon.ico" rel="shortcut icon" type="image/x-icon" />
+<title><s:text name="info.title"/></title>
+</head>
+<body>
+<div id="wrapper">
+	<jsp:include page="menu.jsp"/>
+	<div id="page">
+	<div id="page-bgtop">
+		<div id="content">
+			<s:actionerror escape="false"/> 
+			<s:actionmessage escape="false"/> 
+		</div>
+		<div style="clear: both;">&nbsp;</div>
+	</div>
+	</div>
+</div>
+</body>
+</html>
\ No newline at end of file
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/table-images/pattern.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/table-images/pattern.png
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/table-images/pattern.png	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/table-images/pattern.png	(revision 47450)

Property changes on: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/table-images/pattern.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/table-images/botleft.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/table-images/botleft.png
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/table-images/botleft.png	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/table-images/botleft.png	(revision 47450)

Property changes on: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/table-images/botleft.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/table-images/gradhover.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/table-images/gradhover.png
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/table-images/gradhover.png	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/table-images/gradhover.png	(revision 47450)

Property changes on: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/table-images/gradhover.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/table-images/blurry.jpg
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/table-images/blurry.jpg
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/table-images/blurry.jpg	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/table-images/blurry.jpg	(revision 47450)

Property changes on: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/table-images/blurry.jpg
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/manuals/example_record.txt
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/manuals/example_record.txt	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/manuals/example_record.txt	(revision 47450)
@@ -0,0 +1,25 @@
+<header>
+	<identifier>oai:openaire.cern.ch:1</identifier>
+	<datestamp>2011-01-18T14:26:14Z</datestamp>
+	<setSpec>EC_fundedresources</setSpec>
+</header>
+<metadata>
+	<oai_dc:dc xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:oai_dc="http://www.openarchives.org/OAI/2.0/oai_dc/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.openarchives.org/OAI/2.0/oai_dc/ http://www.openarchives.org/OAI/2.0/oai_dc.xsd">
+		<dc:language>eng</dc:language>
+		<dc:creator>Berchum, Marnix</dc:creator>
+		<dc:creator>Rodrigues, Eloy</dc:creator>
+		<dc:contributor>Brown, John</dc:contributor>
+		<dc:title>OpenAIRE Guidelines</dc:title>
+		<dc:date>2010-09-01</dc:date>
+		<dc:identifier>http://openaire.cern.ch/record/1</dc:identifier>
+		<dc:description>
+			The OpenAIRE Guidelines will provide orientation for repository managers to define and implement their local data management policies in compliance with the Open Access demands of the European Commission. Furthermore they will comply with the technical requirements of the OpenAIRE infrastructure that is being established to support and monitor the implementation of the FP7 OA pilot. By implementing these Guidelines repository managers are facilitating the authors who deposit their publications in the repository, in complying with the EC Open Access requirements. For developers of repository platforms the Guidelines provide guidance to add supportive functionalities for authors of EC funded research in future versions.
+		</dc:description>
+		<dc:relation>info:eu-repo/grantAgreement/EC/FP7/246686</dc:relation>
+		<dc:rights>info:eu-repo/semantics/openAccess</dc:rights>
+		<dc:audience>Librarians</dc:audience>
+		<dc:type>info:eu-repo/semantics/article</dc:type>
+		<dc:format>application/pdf</dc:format>
+		<dc:source>ISSN:0165-0505</dc:source>
+	</oai_dc:dc>
+</metadata>
\ No newline at end of file
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/js/mootools-1.2.5.1-more.js
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/js/mootools-1.2.5.1-more.js	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/js/mootools-1.2.5.1-more.js	(revision 47450)
@@ -0,0 +1,2192 @@
+//MooTools More, <http://mootools.net/more>. Copyright (c) 2006-2009 Aaron Newton <http://clientcide.com/>, Valerio Proietti <http://mad4milk.net> & the MooTools team <http://mootools.net/developers>, MIT Style License.
+
+/*
+---
+
+script: More.js
+
+name: More
+
+description: MooTools More
+
+license: MIT-style license
+
+requires:
+  - Core/MooTools
+
+provides: [MooTools.More]
+
+...
+*/
+
+MooTools.More = {
+	'version': '1.2.5.1',
+	'build': '254884f2b83651bf95260eed5c6cceb838e22d8e'
+};
+
+
+/*
+---
+
+script: MooTools.Lang.js
+
+name: MooTools.Lang
+
+description: Provides methods for localization.
+
+license: MIT-style license
+
+authors:
+  - Aaron Newton
+
+requires:
+  - Core/Events
+  - /MooTools.More
+
+provides: [Lang]
+
+...
+*/
+
+(function(){
+
+	var data = {
+		language: 'en-US',
+		languages: {
+			'en-US': {}
+		},
+		cascades: ['en-US']
+	};
+	
+	var cascaded;
+
+	MooTools.lang = new Events();
+
+	$extend(MooTools.lang, {
+
+		setLanguage: function(lang){
+			if (!data.languages[lang]) return this;
+			data.language = lang;
+			this.load();
+			this.fireEvent('langChange', lang);
+			return this;
+		},
+
+		load: function() {
+			var langs = this.cascade(this.getCurrentLanguage());
+			cascaded = {};
+			$each(langs, function(set, setName){
+				cascaded[setName] = this.lambda(set);
+			}, this);
+		},
+
+		getCurrentLanguage: function(){
+			return data.language;
+		},
+
+		addLanguage: function(lang){
+			data.languages[lang] = data.languages[lang] || {};
+			return this;
+		},
+
+		cascade: function(lang){
+			var cascades = (data.languages[lang] || {}).cascades || [];
+			cascades.combine(data.cascades);
+			cascades.erase(lang).push(lang);
+			var langs = cascades.map(function(lng){
+				return data.languages[lng];
+			}, this);
+			return $merge.apply(this, langs);
+		},
+
+		lambda: function(set) {
+			(set || {}).get = function(key, args){
+				return $lambda(set[key]).apply(this, $splat(args));
+			};
+			return set;
+		},
+
+		get: function(set, key, args){
+			if (cascaded && cascaded[set]) return (key ? cascaded[set].get(key, args) : cascaded[set]);
+		},
+
+		set: function(lang, set, members){
+			this.addLanguage(lang);
+			langData = data.languages[lang];
+			if (!langData[set]) langData[set] = {};
+			$extend(langData[set], members);
+			if (lang == this.getCurrentLanguage()){
+				this.load();
+				this.fireEvent('langChange', lang);
+			}
+			return this;
+		},
+
+		list: function(){
+			return Hash.getKeys(data.languages);
+		}
+
+	});
+
+})();
+
+
+/*
+---
+
+script: Log.js
+
+name: Log
+
+description: Provides basic logging functionality for plugins to implement.
+
+license: MIT-style license
+
+authors:
+  - Guillermo Rauch
+  - Thomas Aylott
+  - Scott Kyle
+
+requires:
+  - Core/Class
+  - /MooTools.More
+
+provides: [Log]
+
+...
+*/
+
+(function(){
+
+var global = this;
+
+var log = function(){
+	if (global.console && console.log){
+		try {
+			console.log.apply(console, arguments);
+		} catch(e) {
+			console.log(Array.slice(arguments));
+		}
+	} else {
+		Log.logged.push(arguments);
+	}
+	return this;
+};
+
+var disabled = function(){
+	this.logged.push(arguments);
+	return this;
+};
+
+this.Log = new Class({
+	
+	logged: [],
+	
+	log: disabled,
+	
+	resetLog: function(){
+		this.logged.empty();
+		return this;
+	},
+
+	enableLog: function(){
+		this.log = log;
+		this.logged.each(function(args){
+			this.log.apply(this, args);
+		}, this);
+		return this.resetLog();
+	},
+
+	disableLog: function(){
+		this.log = disabled;
+		return this;
+	}
+	
+});
+
+Log.extend(new Log).enableLog();
+
+// legacy
+Log.logger = function(){
+	return this.log.apply(this, arguments);
+};
+
+})();
+
+
+/*
+---
+
+script: Class.Refactor.js
+
+name: Class.Refactor
+
+description: Extends a class onto itself with new property, preserving any items attached to the class's namespace.
+
+license: MIT-style license
+
+authors:
+  - Aaron Newton
+
+requires:
+  - Core/Class
+  - /MooTools.More
+
+# Some modules declare themselves dependent on Class.Refactor
+provides: [Class.refactor, Class.Refactor]
+
+...
+*/
+
+Class.refactor = function(original, refactors){
+
+	$each(refactors, function(item, name){
+		var origin = original.prototype[name];
+		if (origin && (origin = origin._origin ? origin._origin: origin) && typeof item == 'function') original.implement(name, function(){
+			var old = this.previous;
+			this.previous = origin;
+			var value = item.apply(this, arguments);
+			this.previous = old;
+			return value;
+		}); else original.implement(name, item);
+	});
+
+	return original;
+
+};
+
+
+/*
+---
+
+script: Class.Binds.js
+
+name: Class.Binds
+
+description: Automagically binds specified methods in a class to the instance of the class.
+
+license: MIT-style license
+
+authors:
+  - Aaron Newton
+
+requires:
+  - Core/Class
+  - /MooTools.More
+
+provides: [Class.Binds]
+
+...
+*/
+
+Class.Mutators.Binds = function(binds){
+    return binds;
+};
+
+Class.Mutators.initialize = function(initialize){
+	return function(){
+		$splat(this.Binds).each(function(name){
+			var original = this[name];
+			if (original) this[name] = original.bind(this);
+		}, this);
+		return initialize.apply(this, arguments);
+	};
+};
+
+
+/*
+---
+
+script: Class.Occlude.js
+
+name: Class.Occlude
+
+description: Prevents a class from being applied to a DOM element twice.
+
+license: MIT-style license.
+
+authors:
+  - Aaron Newton
+
+requires: 
+  - Core/Class
+  - Core/Element
+  - /MooTools.More
+
+provides: [Class.Occlude]
+
+...
+*/
+
+Class.Occlude = new Class({
+
+	occlude: function(property, element){
+		element = document.id(element || this.element);
+		var instance = element.retrieve(property || this.property);
+		if (instance && !$defined(this.occluded))
+			return this.occluded = instance;
+
+		this.occluded = false;
+		element.store(property || this.property, this);
+		return this.occluded;
+	}
+
+});
+
+
+/*
+---
+
+script: Chain.Wait.js
+
+name: Chain.Wait
+
+description: value, Adds a method to inject pauses between chained events.
+
+license: MIT-style license.
+
+authors:
+  - Aaron Newton
+
+requires: 
+  - Core/Chain
+  - Core/Element
+  - Core/Fx
+  - /MooTools.More
+
+provides: [Chain.Wait]
+
+...
+*/
+
+(function(){
+
+	var wait = {
+		wait: function(duration){
+			return this.chain(function(){
+				this.callChain.delay($pick(duration, 500), this);
+			}.bind(this));
+		}
+	};
+
+	Chain.implement(wait);
+
+	if (window.Fx){
+		Fx.implement(wait);
+		['Css', 'Tween', 'Elements'].each(function(cls){
+			if (Fx[cls]) Fx[cls].implement(wait);
+		});
+	}
+
+	Element.implement({
+		chains: function(effects){
+			$splat($pick(effects, ['tween', 'morph', 'reveal'])).each(function(effect){
+				effect = this.get(effect);
+				if (!effect) return;
+				effect.setOptions({
+					link:'chain'
+				});
+			}, this);
+			return this;
+		},
+		pauseFx: function(duration, effect){
+			this.chains(effect).get($pick(effect, 'tween')).wait(duration);
+			return this;
+		}
+	});
+
+})();
+
+
+/*
+---
+
+script: Element.Measure.js
+
+name: Element.Measure
+
+description: Extends the Element native object to include methods useful in measuring dimensions.
+
+credits: "Element.measure / .expose methods by Daniel Steigerwald License: MIT-style license. Copyright: Copyright (c) 2008 Daniel Steigerwald, daniel.steigerwald.cz"
+
+license: MIT-style license
+
+authors:
+  - Aaron Newton
+
+requires:
+  - Core/Element.Style
+  - Core/Element.Dimensions
+  - /MooTools.More
+
+provides: [Element.Measure]
+
+...
+*/
+
+Element.implement({
+
+	measure: function(fn){
+		var vis = function(el) {
+			return !!(!el || el.offsetHeight || el.offsetWidth);
+		};
+		if (vis(this)) return fn.apply(this);
+		var parent = this.getParent(),
+			restorers = [],
+			toMeasure = []; 
+		while (!vis(parent) && parent != document.body) {
+			toMeasure.push(parent.expose());
+			parent = parent.getParent();
+		}
+		var restore = this.expose();
+		var result = fn.apply(this);
+		restore();
+		toMeasure.each(function(restore){
+			restore();
+		});
+		return result;
+	},
+
+	expose: function(){
+		if (this.getStyle('display') != 'none') return $empty;
+		var before = this.style.cssText;
+		this.setStyles({
+			display: 'block',
+			position: 'absolute',
+			visibility: 'hidden'
+		});
+		return function(){
+			this.style.cssText = before;
+		}.bind(this);
+	},
+
+	getDimensions: function(options){
+		options = $merge({computeSize: false},options);
+		var dim = {};
+		var getSize = function(el, options){
+			return (options.computeSize)?el.getComputedSize(options):el.getSize();
+		};
+		var parent = this.getParent('body');
+		if (parent && this.getStyle('display') == 'none'){
+			dim = this.measure(function(){
+				return getSize(this, options);
+			});
+		} else if (parent){
+			try { //safari sometimes crashes here, so catch it
+				dim = getSize(this, options);
+			}catch(e){}
+		} else {
+			dim = {x: 0, y: 0};
+		}
+		return $chk(dim.x) ? $extend(dim, {width: dim.x, height: dim.y}) : $extend(dim, {x: dim.width, y: dim.height});
+	},
+
+	getComputedSize: function(options){
+		//legacy support for my stupid spelling error
+		if (options && options.plains) options.planes = options.plains;
+		
+		options = $merge({
+			styles: ['padding','border'],
+			planes: {
+				height: ['top','bottom'],
+				width: ['left','right']
+			},
+			mode: 'both'
+		}, options);
+		
+		var size = {width: 0,height: 0};
+		switch (options.mode){
+			case 'vertical':
+				delete size.width;
+				delete options.planes.width;
+				break;
+			case 'horizontal':
+				delete size.height;
+				delete options.planes.height;
+				break;
+		}
+		var getStyles = [];
+		//this function might be useful in other places; perhaps it should be outside this function?
+		$each(options.planes, function(plane, key){
+			plane.each(function(edge){
+				options.styles.each(function(style){
+					getStyles.push((style == 'border') ? style + '-' + edge + '-' + 'width' : style + '-' + edge);
+				});
+			});
+		});
+		var styles = {};
+		getStyles.each(function(style){ styles[style] = this.getComputedStyle(style); }, this);
+		var subtracted = [];
+		$each(options.planes, function(plane, key){ //keys: width, height, planes: ['left', 'right'], ['top','bottom']
+			var capitalized = key.capitalize();
+			size['total' + capitalized] = size['computed' + capitalized] = 0;
+			plane.each(function(edge){ //top, left, right, bottom
+				size['computed' + edge.capitalize()] = 0;
+				getStyles.each(function(style, i){ //padding, border, etc.
+					//'padding-left'.test('left') size['totalWidth'] = size['width'] + [padding-left]
+					if (style.test(edge)){
+						styles[style] = styles[style].toInt() || 0; //styles['padding-left'] = 5;
+						size['total' + capitalized] = size['total' + capitalized] + styles[style];
+						size['computed' + edge.capitalize()] = size['computed' + edge.capitalize()] + styles[style];
+					}
+					//if width != width (so, padding-left, for instance), then subtract that from the total
+					if (style.test(edge) && key != style &&
+						(style.test('border') || style.test('padding')) && !subtracted.contains(style)){
+						subtracted.push(style);
+						size['computed' + capitalized] = size['computed' + capitalized]-styles[style];
+					}
+				});
+			});
+		});
+
+		['Width', 'Height'].each(function(value){
+			var lower = value.toLowerCase();
+			if(!$chk(size[lower])) return;
+
+			size[lower] = size[lower] + this['offset' + value] + size['computed' + value];
+			size['total' + value] = size[lower] + size['total' + value];
+			delete size['computed' + value];
+		}, this);
+
+		return $extend(styles, size);
+	}
+
+});
+
+/*
+---
+
+script: Element.Position.js
+
+name: Element.Position
+
+description: Extends the Element native object to include methods useful positioning elements relative to others.
+
+license: MIT-style license
+
+authors:
+  - Aaron Newton
+
+requires:
+  - Core/Element.Dimensions
+  - /Element.Measure
+
+provides: [Element.Position]
+
+...
+*/
+
+(function(){
+
+var original = Element.prototype.position;
+
+Element.implement({
+
+	position: function(options){
+		//call original position if the options are x/y values
+		if (options && ($defined(options.x) || $defined(options.y))) return original ? original.apply(this, arguments) : this;
+		$each(options||{}, function(v, k){ if (!$defined(v)) delete options[k]; });
+		options = $merge({
+			// minimum: { x: 0, y: 0 },
+			// maximum: { x: 0, y: 0},
+			relativeTo: document.body,
+			position: {
+				x: 'center', //left, center, right
+				y: 'center' //top, center, bottom
+			},
+			edge: false,
+			offset: {x: 0, y: 0},
+			returnPos: false,
+			relFixedPosition: false,
+			ignoreMargins: false,
+			ignoreScroll: false,
+			allowNegative: false
+		}, options);
+		//compute the offset of the parent positioned element if this element is in one
+		var parentOffset = {x: 0, y: 0}, 
+				parentPositioned = false;
+		/* dollar around getOffsetParent should not be necessary, but as it does not return
+		 * a mootools extended element in IE, an error occurs on the call to expose. See:
+		 * http://mootools.lighthouseapp.com/projects/2706/tickets/333-element-getoffsetparent-inconsistency-between-ie-and-other-browsers */
+		var offsetParent = this.measure(function(){
+			return document.id(this.getOffsetParent());
+		});
+		if (offsetParent && offsetParent != this.getDocument().body){
+			parentOffset = offsetParent.measure(function(){
+				return this.getPosition();
+			});
+			parentPositioned = offsetParent != document.id(options.relativeTo);
+			options.offset.x = options.offset.x - parentOffset.x;
+			options.offset.y = options.offset.y - parentOffset.y;
+		}
+		//upperRight, bottomRight, centerRight, upperLeft, bottomLeft, centerLeft
+		//topRight, topLeft, centerTop, centerBottom, center
+		var fixValue = function(option){
+			if ($type(option) != 'string') return option;
+			option = option.toLowerCase();
+			var val = {};
+			
+			if (option.test('left')) val.x = 'left';
+			else if (option.test('right')) val.x = 'right';
+			else val.x = 'center';
+			
+			if (option.test('upper') || option.test('top')) val.y = 'top';
+			else if (option.test('bottom')) val.y = 'bottom';
+			else val.y = 'center';
+			
+			return val;
+		};
+		options.edge = fixValue(options.edge);
+		options.position = fixValue(options.position);
+		if (!options.edge){
+			if (options.position.x == 'center' && options.position.y == 'center') options.edge = {x:'center', y:'center'};
+			else options.edge = {x:'left', y:'top'};
+		}
+
+		this.setStyle('position', 'absolute');
+		var rel = document.id(options.relativeTo) || document.body,
+				calc = rel == document.body ? window.getScroll() : rel.getPosition(),
+				top = calc.y, left = calc.x;
+
+		var dim = this.getDimensions({computeSize: true, styles:['padding', 'border','margin']});
+		var pos = {},
+				prefY = options.offset.y,
+				prefX = options.offset.x,
+				winSize = window.getSize();
+		switch(options.position.x){
+			case 'left':
+				pos.x = left + prefX;
+				break;
+			case 'right':
+				pos.x = left + prefX + rel.offsetWidth;
+				break;
+			default: //center
+				pos.x = left + ((rel == document.body ? winSize.x : rel.offsetWidth)/2) + prefX;
+				break;
+		}
+		switch(options.position.y){
+			case 'top':
+				pos.y = top + prefY;
+				break;
+			case 'bottom':
+				pos.y = top + prefY + rel.offsetHeight;
+				break;
+			default: //center
+				pos.y = top + ((rel == document.body ? winSize.y : rel.offsetHeight)/2) + prefY;
+				break;
+		}
+		if (options.edge){
+			var edgeOffset = {};
+
+			switch(options.edge.x){
+				case 'left':
+					edgeOffset.x = 0;
+					break;
+				case 'right':
+					edgeOffset.x = -dim.x-dim.computedRight-dim.computedLeft;
+					break;
+				default: //center
+					edgeOffset.x = -(dim.totalWidth/2);
+					break;
+			}
+			switch(options.edge.y){
+				case 'top':
+					edgeOffset.y = 0;
+					break;
+				case 'bottom':
+					edgeOffset.y = -dim.y-dim.computedTop-dim.computedBottom;
+					break;
+				default: //center
+					edgeOffset.y = -(dim.totalHeight/2);
+					break;
+			}
+			pos.x += edgeOffset.x;
+			pos.y += edgeOffset.y;
+		}
+		pos = {
+			left: ((pos.x >= 0 || parentPositioned || options.allowNegative) ? pos.x : 0).toInt(),
+			top: ((pos.y >= 0 || parentPositioned || options.allowNegative) ? pos.y : 0).toInt()
+		};
+		var xy = {left: 'x', top: 'y'};
+		['minimum', 'maximum'].each(function(minmax) {
+			['left', 'top'].each(function(lr) {
+				var val = options[minmax] ? options[minmax][xy[lr]] : null;
+				if (val != null && ((minmax == 'minimum') ? pos[lr] < val: pos[lr] > val)) pos[lr] = val;
+			});
+		});
+		if (rel.getStyle('position') == 'fixed' || options.relFixedPosition){
+			var winScroll = window.getScroll();
+			pos.top+= winScroll.y;
+			pos.left+= winScroll.x;
+		}
+		var relScroll = rel.getScroll();
+		if (options.ignoreScroll) {
+			pos.top -= relScroll.y;
+			pos.left -= relScroll.x;
+		} else {
+			pos.top += relScroll.y;
+			pos.left += relScroll.x;
+		}
+		if (options.ignoreMargins) {
+			pos.left += (
+				options.edge.x == 'right' ? dim['margin-right'] : 
+				options.edge.x == 'center' ? -dim['margin-left'] + ((dim['margin-right'] + dim['margin-left'])/2) : 
+					- dim['margin-left']
+			);
+			pos.top += (
+				options.edge.y == 'bottom' ? dim['margin-bottom'] : 
+				options.edge.y == 'center' ? -dim['margin-top'] + ((dim['margin-bottom'] + dim['margin-top'])/2) : 
+					- dim['margin-top']
+			);
+		}
+		pos.left = Math.ceil(pos.left);
+		pos.top = Math.ceil(pos.top);
+		if (options.returnPos) return pos;
+		else this.setStyles(pos);
+		return this;
+	}
+
+});
+
+})();
+
+
+/*
+---
+
+script: Element.Shortcuts.js
+
+name: Element.Shortcuts
+
+description: Extends the Element native object to include some shortcut methods.
+
+license: MIT-style license
+
+authors:
+  - Aaron Newton
+
+requires:
+  - Core/Element.Style
+  - /MooTools.More
+
+provides: [Element.Shortcuts]
+
+...
+*/
+
+Element.implement({
+
+	isDisplayed: function(){
+		return this.getStyle('display') != 'none';
+	},
+
+	isVisible: function(){
+		var w = this.offsetWidth,
+			h = this.offsetHeight;
+		return (w == 0 && h == 0) ? false : (w > 0 && h > 0) ? true : this.style.display != 'none';
+	},
+
+	toggle: function(){
+		return this[this.isDisplayed() ? 'hide' : 'show']();
+	},
+
+	hide: function(){
+		var d;
+		try {
+			//IE fails here if the element is not in the dom
+			d = this.getStyle('display');
+		} catch(e){}
+		if (d == "none") return this;
+		return this.store('element:_originalDisplay', d || '').setStyle('display', 'none');
+	},
+
+	show: function(display){
+		if (!display && this.isDisplayed()) return this;
+		display = display || this.retrieve('element:_originalDisplay') || 'block';
+		return this.setStyle('display', (display == 'none') ? 'block' : display);
+	},
+
+	swapClass: function(remove, add){
+		return this.removeClass(remove).addClass(add);
+	}
+});
+
+Document.implement({
+	clearSelection: function(){
+		if (document.selection && document.selection.empty) {
+			document.selection.empty();
+		} else if (window.getSelection) {
+			var selection = window.getSelection();
+			if (selection && selection.removeAllRanges) selection.removeAllRanges();
+		}
+	}
+});
+
+/*
+---
+
+script: Fx.Elements.js
+
+name: Fx.Elements
+
+description: Effect to change any number of CSS properties of any number of Elements.
+
+license: MIT-style license
+
+authors:
+  - Valerio Proietti
+
+requires:
+  - Core/Fx.CSS
+  - /MooTools.More
+
+provides: [Fx.Elements]
+
+...
+*/
+
+Fx.Elements = new Class({
+
+	Extends: Fx.CSS,
+
+	initialize: function(elements, options){
+		this.elements = this.subject = $$(elements);
+		this.parent(options);
+	},
+
+	compute: function(from, to, delta){
+		var now = {};
+
+		for (var i in from){
+			var iFrom = from[i], iTo = to[i], iNow = now[i] = {};
+			for (var p in iFrom) iNow[p] = this.parent(iFrom[p], iTo[p], delta);
+		}
+
+		return now;
+	},
+
+	set: function(now){
+		for (var i in now){
+			if (!this.elements[i]) continue;
+
+			var iNow = now[i];
+			for (var p in iNow) this.render(this.elements[i], p, iNow[p], this.options.unit);
+		}
+
+		return this;
+	},
+
+	start: function(obj){
+		if (!this.check(obj)) return this;
+		var from = {}, to = {};
+
+		for (var i in obj){
+			if (!this.elements[i]) continue;
+
+			var iProps = obj[i], iFrom = from[i] = {}, iTo = to[i] = {};
+
+			for (var p in iProps){
+				var parsed = this.prepare(this.elements[i], p, iProps[p]);
+				iFrom[p] = parsed.from;
+				iTo[p] = parsed.to;
+			}
+		}
+
+		return this.parent(from, to);
+	}
+
+});
+
+
+/*
+---
+
+script: Fx.Accordion.js
+
+name: Fx.Accordion
+
+description: An Fx.Elements extension which allows you to easily create accordion type controls.
+
+license: MIT-style license
+
+authors:
+  - Valerio Proietti
+
+requires:
+  - Core/Element.Event
+  - /Fx.Elements
+
+provides: [Fx.Accordion]
+
+...
+*/
+
+Fx.Accordion = new Class({
+
+	Extends: Fx.Elements,
+
+	options: {/*
+		onActive: $empty(toggler, section),
+		onBackground: $empty(toggler, section),
+		*/
+		fixedHeight: false,
+		fixedWidth: false,
+		display: 0,
+		show: false,
+		height: true,
+		width: false,
+		opacity: true,
+		alwaysHide: false,
+		trigger: 'click',
+		initialDisplayFx: true,
+		returnHeightToAuto: true
+	},
+
+	initialize: function(){
+		var params = Array.link(arguments, {
+			'container': Element.type, //deprecated
+			'options': Object.type,
+			'togglers': $defined,
+			'elements': $defined
+		});
+		this.parent(params.elements, params.options);
+		this.togglers = $$(params.togglers);
+		this.previous = -1;
+		this.internalChain = new Chain();
+		if (this.options.alwaysHide) this.options.wait = true;
+		if ($chk(this.options.show)){
+			this.options.display = false;
+			this.previous = this.options.show;
+		}
+		if (this.options.start){
+			this.options.display = false;
+			this.options.show = false;
+		}
+		this.effects = {};
+		if (this.options.opacity) this.effects.opacity = 'fullOpacity';
+		if (this.options.width) this.effects.width = this.options.fixedWidth ? 'fullWidth' : 'offsetWidth';
+		if (this.options.height) this.effects.height = this.options.fixedHeight ? 'fullHeight' : 'scrollHeight';
+		for (var i = 0, l = this.togglers.length; i < l; i++) this.addSection(this.togglers[i], this.elements[i]);
+		this.elements.each(function(el, i){
+			if (this.options.show === i){
+				this.fireEvent('active', [this.togglers[i], el]);
+			} else {
+				for (var fx in this.effects) el.setStyle(fx, 0);
+			}
+		}, this);
+		if ($chk(this.options.display) || this.options.initialDisplayFx === false) this.display(this.options.display, this.options.initialDisplayFx);
+		if (this.options.fixedHeight !== false) this.options.returnHeightToAuto = false;
+		this.addEvent('complete', this.internalChain.callChain.bind(this.internalChain));
+	},
+
+	addSection: function(toggler, element){
+		toggler = document.id(toggler);
+		element = document.id(element);
+		var test = this.togglers.contains(toggler);
+		this.togglers.include(toggler);
+		this.elements.include(element);
+		var idx = this.togglers.indexOf(toggler);
+		var displayer = this.display.bind(this, idx);
+		toggler.store('accordion:display', displayer);
+		toggler.addEvent(this.options.trigger, displayer);
+		if (this.options.height) element.setStyles({'padding-top': 0, 'border-top': 'none', 'padding-bottom': 0, 'border-bottom': 'none'});
+		if (this.options.width) element.setStyles({'padding-left': 0, 'border-left': 'none', 'padding-right': 0, 'border-right': 'none'});
+		element.fullOpacity = 1;
+		if (this.options.fixedWidth) element.fullWidth = this.options.fixedWidth;
+		if (this.options.fixedHeight) element.fullHeight = this.options.fixedHeight;
+		element.setStyle('overflow', 'hidden');
+		if (!test){
+			for (var fx in this.effects) element.setStyle(fx, 0);
+		}
+		return this;
+	},
+
+	removeSection: function(toggler, displayIndex) {
+		var idx = this.togglers.indexOf(toggler);
+		var element = this.elements[idx];
+		var remover = function(){
+			this.togglers.erase(toggler);
+			this.elements.erase(element);
+			this.detach(toggler);
+		}.bind(this);
+		if (this.now == idx || displayIndex != undefined) this.display($pick(displayIndex, idx - 1 >= 0 ? idx - 1 : 0)).chain(remover);
+		else remover();
+		return this;
+	},
+
+	detach: function(toggler){
+		var remove = function(toggler) {
+			toggler.removeEvent(this.options.trigger, toggler.retrieve('accordion:display'));
+		}.bind(this);
+		if (!toggler) this.togglers.each(remove);
+		else remove(toggler);
+		return this;
+	},
+
+	display: function(index, useFx){
+		if (!this.check(index, useFx)) return this;
+		useFx = $pick(useFx, true);
+		index = ($type(index) == 'element') ? this.elements.indexOf(index) : index;
+		if (index == this.previous && !this.options.alwaysHide) return this;
+		if (this.options.returnHeightToAuto){
+			var prev = this.elements[this.previous];
+			if (prev && !this.selfHidden){
+				for (var fx in this.effects){
+					prev.setStyle(fx, prev[this.effects[fx]]);
+				}
+			}
+		}
+		if ((this.timer && this.options.wait) || (index === this.previous && !this.options.alwaysHide)) return this;
+		this.previous = index;
+		var obj = {};
+		this.elements.each(function(el, i){
+			obj[i] = {};
+			var hide;
+			if (i != index){
+				hide = true;
+			} else if (this.options.alwaysHide && ((el.offsetHeight > 0 && this.options.height) || el.offsetWidth > 0 && this.options.width)){
+				hide = true;
+				this.selfHidden = true;
+			}
+			this.fireEvent(hide ? 'background' : 'active', [this.togglers[i], el]);
+			for (var fx in this.effects) obj[i][fx] = hide ? 0 : el[this.effects[fx]];
+		}, this);
+		this.internalChain.clearChain();
+		this.internalChain.chain(function(){
+			if (this.options.returnHeightToAuto && !this.selfHidden){
+				var el = this.elements[index];
+				if (el) el.setStyle('height', 'auto');
+			};
+		}.bind(this));
+		return useFx ? this.start(obj) : this.set(obj);
+	}
+
+});
+
+/*
+	Compatibility with 1.2.0
+*/
+var Accordion = new Class({
+
+	Extends: Fx.Accordion,
+
+	initialize: function(){
+		this.parent.apply(this, arguments);
+		var params = Array.link(arguments, {'container': Element.type});
+		this.container = params.container;
+	},
+
+	addSection: function(toggler, element, pos){
+		toggler = document.id(toggler);
+		element = document.id(element);
+		var test = this.togglers.contains(toggler);
+		var len = this.togglers.length;
+		if (len && (!test || pos)){
+			pos = $pick(pos, len - 1);
+			toggler.inject(this.togglers[pos], 'before');
+			element.inject(toggler, 'after');
+		} else if (this.container && !test){
+			toggler.inject(this.container);
+			element.inject(this.container);
+		}
+		return this.parent.apply(this, arguments);
+	}
+
+});
+
+/*
+---
+
+script: Fx.Move.js
+
+name: Fx.Move
+
+description: Defines Fx.Move, a class that works with Element.Position.js to transition an element from one location to another.
+
+license: MIT-style license
+
+authors:
+  - Aaron Newton
+
+requires:
+  - Core/Fx.Morph
+  - /Element.Position
+
+provides: [Fx.Move]
+
+...
+*/
+
+Fx.Move = new Class({
+
+	Extends: Fx.Morph,
+
+	options: {
+		relativeTo: document.body,
+		position: 'center',
+		edge: false,
+		offset: {x: 0, y: 0}
+	},
+
+	start: function(destination){
+		var element = this.element,
+			topLeft = element.getStyles('top', 'left');
+		if (topLeft.top == 'auto' || topLeft.left == 'auto'){
+			element.setPosition(element.getPosition(element.getOffsetParent()));
+		}
+		return this.parent(element.position($merge(this.options, destination, {returnPos: true})));
+	}
+
+});
+
+Element.Properties.move = {
+
+	set: function(options){
+		var morph = this.retrieve('move');
+		if (morph) morph.cancel();
+		return this.eliminate('move').store('move:options', $extend({link: 'cancel'}, options));
+	},
+
+	get: function(options){
+		if (options || !this.retrieve('move')){
+			if (options || !this.retrieve('move:options')) this.set('move', options);
+			this.store('move', new Fx.Move(this, this.retrieve('move:options')));
+		}
+		return this.retrieve('move');
+	}
+
+};
+
+Element.implement({
+
+	move: function(options){
+		this.get('move').start(options);
+		return this;
+	}
+
+});
+
+
+/*
+---
+
+script: Fx.Reveal.js
+
+name: Fx.Reveal
+
+description: Defines Fx.Reveal, a class that shows and hides elements with a transition.
+
+license: MIT-style license
+
+authors:
+  - Aaron Newton
+
+requires:
+  - Core/Fx.Morph
+  - /Element.Shortcuts
+  - /Element.Measure
+
+provides: [Fx.Reveal]
+
+...
+*/
+
+Fx.Reveal = new Class({
+
+	Extends: Fx.Morph,
+
+	options: {/*	  
+		onShow: $empty(thisElement),
+		onHide: $empty(thisElement),
+		onComplete: $empty(thisElement),
+		heightOverride: null,
+		widthOverride: null, */
+		link: 'cancel',
+		styles: ['padding', 'border', 'margin'],
+		transitionOpacity: !Browser.Engine.trident4,
+		mode: 'vertical',
+		display: function(){
+			return this.element.get('tag') != 'tr' ? 'block' : 'table-row';
+		},
+		hideInputs: Browser.Engine.trident ? 'select, input, textarea, object, embed' : false,
+		opacity: 1
+	},
+
+	dissolve: function(){
+		try {
+			if (!this.hiding && !this.showing){
+				if (this.element.getStyle('display') != 'none'){
+					this.hiding = true;
+					this.showing = false;
+					this.hidden = true;
+					this.cssText = this.element.style.cssText;
+					var startStyles = this.element.getComputedSize({
+						styles: this.options.styles,
+						mode: this.options.mode
+					});
+					this.element.setStyle('display', $lambda(this.options.display).apply(this));
+					if (this.options.transitionOpacity) startStyles.opacity = this.options.opacity;
+					var zero = {};
+					$each(startStyles, function(style, name){
+						zero[name] = [style, 0];
+					}, this);
+					this.element.setStyle('overflow', 'hidden');
+					var hideThese = this.options.hideInputs ? this.element.getElements(this.options.hideInputs) : null;
+					this.$chain.unshift(function(){
+						if (this.hidden){
+							this.hiding = false;
+							$each(startStyles, function(style, name){
+								startStyles[name] = style;
+							}, this);
+							this.element.style.cssText = this.cssText;
+							this.element.setStyle('display', 'none');
+							if (hideThese) hideThese.setStyle('visibility', 'visible');
+						}
+						this.fireEvent('hide', this.element);
+						this.callChain();
+					}.bind(this));
+					if (hideThese) hideThese.setStyle('visibility', 'hidden');
+					this.start(zero);
+				} else {
+					this.callChain.delay(10, this);
+					this.fireEvent('complete', this.element);
+					this.fireEvent('hide', this.element);
+				}
+			} else if (this.options.link == 'chain'){
+				this.chain(this.dissolve.bind(this));
+			} else if (this.options.link == 'cancel' && !this.hiding){
+				this.cancel();
+				this.dissolve();
+			}
+		} catch(e){
+			this.hiding = false;
+			this.element.setStyle('display', 'none');
+			this.callChain.delay(10, this);
+			this.fireEvent('complete', this.element);
+			this.fireEvent('hide', this.element);
+		}
+		return this;
+	},
+
+	reveal: function(){
+		try {
+			if (!this.showing && !this.hiding){
+				if (this.element.getStyle('display') == 'none'){
+					this.showing = true;
+					this.hiding = this.hidden =  false;
+					var startStyles;
+					this.cssText = this.element.style.cssText;
+					//toggle display, but hide it
+					this.element.measure(function(){
+						//create the styles for the opened/visible state
+						startStyles = this.element.getComputedSize({
+							styles: this.options.styles,
+							mode: this.options.mode
+						});
+					}.bind(this));
+					$each(startStyles, function(style, name){
+						startStyles[name] = style;
+					});
+					//if we're overridding height/width
+					if ($chk(this.options.heightOverride)) startStyles.height = this.options.heightOverride.toInt();
+					if ($chk(this.options.widthOverride)) startStyles.width = this.options.widthOverride.toInt();
+					if (this.options.transitionOpacity) {
+						this.element.setStyle('opacity', 0);
+						startStyles.opacity = this.options.opacity;
+					}
+					//create the zero state for the beginning of the transition
+					var zero = {
+						height: 0,
+						display: $lambda(this.options.display).apply(this)
+					};
+					$each(startStyles, function(style, name){ zero[name] = 0; });
+					//set to zero
+					this.element.setStyles($merge(zero, {overflow: 'hidden'}));
+					//hide inputs
+					var hideThese = this.options.hideInputs ? this.element.getElements(this.options.hideInputs) : null;
+					if (hideThese) hideThese.setStyle('visibility', 'hidden');
+					//start the effect
+					this.start(startStyles);
+					this.$chain.unshift(function(){
+						this.element.style.cssText = this.cssText;
+						this.element.setStyle('display', $lambda(this.options.display).apply(this));
+						if (!this.hidden) this.showing = false;
+						if (hideThese) hideThese.setStyle('visibility', 'visible');
+						this.callChain();
+						this.fireEvent('show', this.element);
+					}.bind(this));
+				} else {
+					this.callChain();
+					this.fireEvent('complete', this.element);
+					this.fireEvent('show', this.element);
+				}
+			} else if (this.options.link == 'chain'){
+				this.chain(this.reveal.bind(this));
+			} else if (this.options.link == 'cancel' && !this.showing){
+				this.cancel();
+				this.reveal();
+			}
+		} catch(e){
+			this.element.setStyles({
+				display: $lambda(this.options.display).apply(this),
+				visiblity: 'visible',
+				opacity: this.options.opacity
+			});
+			this.showing = false;
+			this.callChain.delay(10, this);
+			this.fireEvent('complete', this.element);
+			this.fireEvent('show', this.element);
+		}
+		return this;
+	},
+
+	toggle: function(){
+		if (this.element.getStyle('display') == 'none'){
+			this.reveal();
+		} else {
+			this.dissolve();
+		}
+		return this;
+	},
+
+	cancel: function(){
+		this.parent.apply(this, arguments);
+		this.element.style.cssText = this.cssText;
+		this.hiding = false;
+		this.showing = false;
+		return this;
+	}
+
+});
+
+Element.Properties.reveal = {
+
+	set: function(options){
+		var reveal = this.retrieve('reveal');
+		if (reveal) reveal.cancel();
+		return this.eliminate('reveal').store('reveal:options', options);
+	},
+
+	get: function(options){
+		if (options || !this.retrieve('reveal')){
+			if (options || !this.retrieve('reveal:options')) this.set('reveal', options);
+			this.store('reveal', new Fx.Reveal(this, this.retrieve('reveal:options')));
+		}
+		return this.retrieve('reveal');
+	}
+
+};
+
+Element.Properties.dissolve = Element.Properties.reveal;
+
+Element.implement({
+
+	reveal: function(options){
+		this.get('reveal', options).reveal();
+		return this;
+	},
+
+	dissolve: function(options){
+		this.get('reveal', options).dissolve();
+		return this;
+	},
+
+	nix: function(){
+		var params = Array.link(arguments, {destroy: Boolean.type, options: Object.type});
+		this.get('reveal', params.options).dissolve().chain(function(){
+			this[params.destroy ? 'destroy' : 'dispose']();
+		}.bind(this));
+		return this;
+	},
+
+	wink: function(){
+		var params = Array.link(arguments, {duration: Number.type, options: Object.type});
+		var reveal = this.get('reveal', params.options);
+		reveal.reveal().chain(function(){
+			(function(){
+				reveal.dissolve();
+			}).delay(params.duration || 2000);
+		});
+	}
+
+
+});
+
+/*
+---
+
+script: Fx.Scroll.js
+
+name: Fx.Scroll
+
+description: Effect to smoothly scroll any element, including the window.
+
+license: MIT-style license
+
+authors:
+  - Valerio Proietti
+
+requires:
+  - Core/Fx
+  - Core/Element.Event
+  - Core/Element.Dimensions
+  - /MooTools.More
+
+provides: [Fx.Scroll]
+
+...
+*/
+
+Fx.Scroll = new Class({
+
+	Extends: Fx,
+
+	options: {
+		offset: {x: 0, y: 0},
+		wheelStops: true
+	},
+
+	initialize: function(element, options){
+		this.element = this.subject = document.id(element);
+		this.parent(options);
+		var cancel = this.cancel.bind(this, false);
+
+		if ($type(this.element) != 'element') this.element = document.id(this.element.getDocument().body);
+
+		var stopper = this.element;
+
+		if (this.options.wheelStops){
+			this.addEvent('start', function(){
+				stopper.addEvent('mousewheel', cancel);
+			}, true);
+			this.addEvent('complete', function(){
+				stopper.removeEvent('mousewheel', cancel);
+			}, true);
+		}
+	},
+
+	set: function(){
+		var now = Array.flatten(arguments);
+		if (Browser.Engine.gecko) now = [Math.round(now[0]), Math.round(now[1])];
+		this.element.scrollTo(now[0] + this.options.offset.x, now[1] + this.options.offset.y);
+	},
+
+	compute: function(from, to, delta){
+		return [0, 1].map(function(i){
+			return Fx.compute(from[i], to[i], delta);
+		});
+	},
+
+	start: function(x, y){
+		if (!this.check(x, y)) return this;
+		var scrollSize = this.element.getScrollSize(),
+			scroll = this.element.getScroll(), 
+			values = {x: x, y: y};
+		for (var z in values){
+			var max = scrollSize[z];
+			if ($chk(values[z])) values[z] = ($type(values[z]) == 'number') ? values[z] : max;
+			else values[z] = scroll[z];
+			values[z] += this.options.offset[z];
+		}
+		return this.parent([scroll.x, scroll.y], [values.x, values.y]);
+	},
+
+	toTop: function(){
+		return this.start(false, 0);
+	},
+
+	toLeft: function(){
+		return this.start(0, false);
+	},
+
+	toRight: function(){
+		return this.start('right', false);
+	},
+
+	toBottom: function(){
+		return this.start(false, 'bottom');
+	},
+
+	toElement: function(el){
+		var position = document.id(el).getPosition(this.element);
+		return this.start(position.x, position.y);
+	},
+
+	scrollIntoView: function(el, axes, offset){
+		axes = axes ? $splat(axes) : ['x','y'];
+		var to = {};
+		el = document.id(el);
+		var pos = el.getPosition(this.element);
+		var size = el.getSize();
+		var scroll = this.element.getScroll();
+		var containerSize = this.element.getSize();
+		var edge = {
+			x: pos.x + size.x,
+			y: pos.y + size.y
+		};
+		['x','y'].each(function(axis) {
+			if (axes.contains(axis)) {
+				if (edge[axis] > scroll[axis] + containerSize[axis]) to[axis] = edge[axis] - containerSize[axis];
+				if (pos[axis] < scroll[axis]) to[axis] = pos[axis];
+			}
+			if (to[axis] == null) to[axis] = scroll[axis];
+			if (offset && offset[axis]) to[axis] = to[axis] + offset[axis];
+		}, this);
+		if (to.x != scroll.x || to.y != scroll.y) this.start(to.x, to.y);
+		return this;
+	},
+
+	scrollToCenter: function(el, axes, offset){
+		axes = axes ? $splat(axes) : ['x', 'y'];
+		el = $(el);
+		var to = {},
+			pos = el.getPosition(this.element),
+			size = el.getSize(),
+			scroll = this.element.getScroll(),
+			containerSize = this.element.getSize(),
+			edge = {
+				x: pos.x + size.x,
+				y: pos.y + size.y
+			};
+
+		['x','y'].each(function(axis){
+			if(axes.contains(axis)){
+				to[axis] = pos[axis] - (containerSize[axis] - size[axis])/2;
+			}
+			if(to[axis] == null) to[axis] = scroll[axis];
+			if(offset && offset[axis]) to[axis] = to[axis] + offset[axis];
+		}, this);
+		if (to.x != scroll.x || to.y != scroll.y) this.start(to.x, to.y);
+		return this;
+	}
+
+});
+
+
+/*
+---
+
+script: Fx.Slide.js
+
+name: Fx.Slide
+
+description: Effect to slide an element in and out of view.
+
+license: MIT-style license
+
+authors:
+  - Valerio Proietti
+
+requires:
+  - Core/Fx
+  - Core/Element.Style
+  - /MooTools.More
+
+provides: [Fx.Slide]
+
+...
+*/
+
+Fx.Slide = new Class({
+
+	Extends: Fx,
+
+	options: {
+		mode: 'vertical',
+		wrapper: false,
+		hideOverflow: true,
+		resetHeight: false
+	},
+
+	initialize: function(element, options){
+		this.addEvent('complete', function(){
+			this.open = (this.wrapper['offset' + this.layout.capitalize()] != 0);
+			if (this.open && this.options.resetHeight) this.wrapper.setStyle('height', '');
+			if (this.open && Browser.Engine.webkit419) this.element.dispose().inject(this.wrapper);
+		}, true);
+		this.element = this.subject = document.id(element);
+		this.parent(options);
+		var wrapper = this.element.retrieve('wrapper');
+		var styles = this.element.getStyles('margin', 'position', 'overflow');
+		if (this.options.hideOverflow) styles = $extend(styles, {overflow: 'hidden'});
+		if (this.options.wrapper) wrapper = document.id(this.options.wrapper).setStyles(styles);
+		this.wrapper = wrapper || new Element('div', {
+			styles: styles
+		}).wraps(this.element);
+		this.element.store('wrapper', this.wrapper).setStyle('margin', 0);
+		this.now = [];
+		this.open = true;
+	},
+
+	vertical: function(){
+		this.margin = 'margin-top';
+		this.layout = 'height';
+		this.offset = this.element.offsetHeight;
+	},
+
+	horizontal: function(){
+		this.margin = 'margin-left';
+		this.layout = 'width';
+		this.offset = this.element.offsetWidth;
+	},
+
+	set: function(now){
+		this.element.setStyle(this.margin, now[0]);
+		this.wrapper.setStyle(this.layout, now[1]);
+		return this;
+	},
+
+	compute: function(from, to, delta){
+		return [0, 1].map(function(i){
+			return Fx.compute(from[i], to[i], delta);
+		});
+	},
+
+	start: function(how, mode){
+		if (!this.check(how, mode)) return this;
+		this[mode || this.options.mode]();
+		var margin = this.element.getStyle(this.margin).toInt();
+		var layout = this.wrapper.getStyle(this.layout).toInt();
+		var caseIn = [[margin, layout], [0, this.offset]];
+		var caseOut = [[margin, layout], [-this.offset, 0]];
+		var start;
+		switch (how){
+			case 'in': start = caseIn; break;
+			case 'out': start = caseOut; break;
+			case 'toggle': start = (layout == 0) ? caseIn : caseOut;
+		}
+		return this.parent(start[0], start[1]);
+	},
+
+	slideIn: function(mode){
+		return this.start('in', mode);
+	},
+
+	slideOut: function(mode){
+		return this.start('out', mode);
+	},
+
+	hide: function(mode){
+		this[mode || this.options.mode]();
+		this.open = false;
+		return this.set([-this.offset, 0]);
+	},
+
+	show: function(mode){
+		this[mode || this.options.mode]();
+		this.open = true;
+		return this.set([0, this.offset]);
+	},
+
+	toggle: function(mode){
+		return this.start('toggle', mode);
+	}
+
+});
+
+Element.Properties.slide = {
+
+	set: function(options){
+		var slide = this.retrieve('slide');
+		if (slide) slide.cancel();
+		return this.eliminate('slide').store('slide:options', $extend({link: 'cancel'}, options));
+	},
+
+	get: function(options){
+		if (options || !this.retrieve('slide')){
+			if (options || !this.retrieve('slide:options')) this.set('slide', options);
+			this.store('slide', new Fx.Slide(this, this.retrieve('slide:options')));
+		}
+		return this.retrieve('slide');
+	}
+
+};
+
+Element.implement({
+
+	slide: function(how, mode){
+		how = how || 'toggle';
+		var slide = this.get('slide'), toggle;
+		switch (how){
+			case 'hide': slide.hide(mode); break;
+			case 'show': slide.show(mode); break;
+			case 'toggle':
+				var flag = this.retrieve('slide:flag', slide.open);
+				slide[flag ? 'slideOut' : 'slideIn'](mode);
+				this.store('slide:flag', !flag);
+				toggle = true;
+			break;
+			default: slide.start(how, mode);
+		}
+		if (!toggle) this.eliminate('slide:flag');
+		return this;
+	}
+
+});
+
+
+/*
+---
+
+script: Fx.SmoothScroll.js
+
+name: Fx.SmoothScroll
+
+description: Class for creating a smooth scrolling effect to all internal links on the page.
+
+license: MIT-style license
+
+authors:
+  - Valerio Proietti
+
+requires:
+  - Core/Selectors
+  - /Fx.Scroll
+
+provides: [Fx.SmoothScroll]
+
+...
+*/
+
+var SmoothScroll = Fx.SmoothScroll = new Class({
+
+	Extends: Fx.Scroll,
+
+	initialize: function(options, context){
+		context = context || document;
+		this.doc = context.getDocument();
+		var win = context.getWindow();
+		this.parent(this.doc, options);
+		this.links = $$(this.options.links || this.doc.links);
+		var location = win.location.href.match(/^[^#]*/)[0] + '#';
+		this.links.each(function(link){
+			if (link.href.indexOf(location) != 0) {return;}
+			var anchor = link.href.substr(location.length);
+			if (anchor) this.useLink(link, anchor);
+		}, this);
+		if (!Browser.Engine.webkit419) {
+			this.addEvent('complete', function(){
+				win.location.hash = this.anchor;
+			}, true);
+		}
+	},
+
+	useLink: function(link, anchor){
+		var el;
+		link.addEvent('click', function(event){
+			if (el !== false && !el) el = document.id(anchor) || this.doc.getElement('a[name=' + anchor + ']');
+			if (el) {
+				event.preventDefault();
+				this.anchor = anchor;
+				this.toElement(el).chain(function(){
+					this.fireEvent('scrolledTo', [link, el]);
+				}.bind(this));
+				link.blur();
+			}
+		}.bind(this));
+	}
+});
+
+/*
+---
+
+script: Fx.Sort.js
+
+name: Fx.Sort
+
+description: Defines Fx.Sort, a class that reorders lists with a transition.
+
+license: MIT-style license
+
+authors:
+  - Aaron Newton
+
+requires:
+  - Core/Element.Dimensions
+  - /Fx.Elements
+  - /Element.Measure
+
+provides: [Fx.Sort]
+
+...
+*/
+
+Fx.Sort = new Class({
+
+	Extends: Fx.Elements,
+
+	options: {
+		mode: 'vertical'
+	},
+
+	initialize: function(elements, options){
+		this.parent(elements, options);
+		this.elements.each(function(el){
+			if (el.getStyle('position') == 'static') el.setStyle('position', 'relative');
+		});
+		this.setDefaultOrder();
+	},
+
+	setDefaultOrder: function(){
+		this.currentOrder = this.elements.map(function(el, index){
+			return index;
+		});
+	},
+
+	sort: function(newOrder){
+		if ($type(newOrder) != 'array') return false;
+		var top = 0,
+			left = 0,
+			next = {},
+			zero = {},
+			vert = this.options.mode == 'vertical';
+		var current = this.elements.map(function(el, index){
+			var size = el.getComputedSize({styles: ['border', 'padding', 'margin']});
+			var val;
+			if (vert){
+				val = {
+					top: top,
+					margin: size['margin-top'],
+					height: size.totalHeight
+				};
+				top += val.height - size['margin-top'];
+			} else {
+				val = {
+					left: left,
+					margin: size['margin-left'],
+					width: size.totalWidth
+				};
+				left += val.width;
+			}
+			var plane = vert ? 'top' : 'left';
+			zero[index] = {};
+			var start = el.getStyle(plane).toInt();
+			zero[index][plane] = start || 0;
+			return val;
+		}, this);
+		this.set(zero);
+		newOrder = newOrder.map(function(i){ return i.toInt(); });
+		if (newOrder.length != this.elements.length){
+			this.currentOrder.each(function(index){
+				if (!newOrder.contains(index)) newOrder.push(index);
+			});
+			if (newOrder.length > this.elements.length)
+				newOrder.splice(this.elements.length-1, newOrder.length - this.elements.length);
+		}
+		var margin = top = left = 0;
+		newOrder.each(function(item, index){
+			var newPos = {};
+			if (vert){
+				newPos.top = top - current[item].top - margin;
+				top += current[item].height;
+			} else {
+				newPos.left = left - current[item].left;
+				left += current[item].width;
+			}
+			margin = margin + current[item].margin;
+			next[item]=newPos;
+		}, this);
+		var mapped = {};
+		$A(newOrder).sort().each(function(index){
+			mapped[index] = next[index];
+		});
+		this.start(mapped);
+		this.currentOrder = newOrder;
+		return this;
+	},
+
+	rearrangeDOM: function(newOrder){
+		newOrder = newOrder || this.currentOrder;
+		var parent = this.elements[0].getParent();
+		var rearranged = [];
+		this.elements.setStyle('opacity', 0);
+		//move each element and store the new default order
+		newOrder.each(function(index){
+			rearranged.push(this.elements[index].inject(parent).setStyles({
+				top: 0,
+				left: 0
+			}));
+		}, this);
+		this.elements.setStyle('opacity', 1);
+		this.elements = $$(rearranged);
+		this.setDefaultOrder();
+		return this;
+	},
+
+	getDefaultOrder: function(){
+		return this.elements.map(function(el, index){
+			return index;
+		});
+	},
+
+	forward: function(){
+		return this.sort(this.getDefaultOrder());
+	},
+
+	backward: function(){
+		return this.sort(this.getDefaultOrder().reverse());
+	},
+
+	reverse: function(){
+		return this.sort(this.currentOrder.reverse());
+	},
+
+	sortByElements: function(elements){
+		return this.sort(elements.map(function(el){
+			return this.elements.indexOf(el);
+		}, this));
+	},
+
+	swap: function(one, two){
+		if ($type(one) == 'element') one = this.elements.indexOf(one);
+		if ($type(two) == 'element') two = this.elements.indexOf(two);
+		
+		var newOrder = $A(this.currentOrder);
+		newOrder[this.currentOrder.indexOf(one)] = two;
+		newOrder[this.currentOrder.indexOf(two)] = one;
+		return this.sort(newOrder);
+	}
+
+});
+
+/*
+---
+
+script: Request.JSONP.js
+
+name: Request.JSONP
+
+description: Defines Request.JSONP, a class for cross domain javascript via script injection.
+
+license: MIT-style license
+
+authors:
+  - Aaron Newton
+  - Guillermo Rauch
+
+requires:
+  - Core/Element
+  - Core/Request
+  - /Log
+
+provides: [Request.JSONP]
+
+...
+*/
+
+Request.JSONP = new Class({
+
+	Implements: [Chain, Events, Options, Log],
+
+	options: {/*
+		onRetry: $empty(intRetries),
+		onRequest: $empty(scriptElement),
+		onComplete: $empty(data),
+		onSuccess: $empty(data),
+		onCancel: $empty(),
+		log: false,
+		*/
+		url: '',
+		data: {},
+		retries: 0,
+		timeout: 0,
+		link: 'ignore',
+		callbackKey: 'callback',
+		injectScript: document.head
+	},
+
+	initialize: function(options){
+		this.setOptions(options);
+		if (this.options.log) this.enableLog();
+		this.running = false;
+		this.requests = 0;
+		this.triesRemaining = [];
+	},
+
+	check: function(){
+		if (!this.running) return true;
+		switch (this.options.link){
+			case 'cancel': this.cancel(); return true;
+			case 'chain': this.chain(this.caller.bind(this, arguments)); return false;
+		}
+		return false;
+	},
+
+	send: function(options){
+		if (!$chk(arguments[1]) && !this.check(options)) return this;
+
+		var type = $type(options), 
+				old = this.options, 
+				index = $chk(arguments[1]) ? arguments[1] : this.requests++;
+		if (type == 'string' || type == 'element') options = {data: options};
+
+		options = $extend({data: old.data, url: old.url}, options);
+
+		if (!$chk(this.triesRemaining[index])) this.triesRemaining[index] = this.options.retries;
+		var remaining = this.triesRemaining[index];
+
+		(function(){
+			var script = this.getScript(options);
+			this.log('JSONP retrieving script with url: ' + script.get('src'));
+			this.fireEvent('request', script);
+			this.running = true;
+
+			(function(){
+				if (remaining){
+					this.triesRemaining[index] = remaining - 1;
+					if (script){
+						script.destroy();
+						this.send(options, index).fireEvent('retry', this.triesRemaining[index]);
+					}
+				} else if(this.running && script && this.options.timeout){
+					script.destroy();
+					this.cancel().fireEvent('failure');
+				}
+			}).delay(this.options.timeout, this);
+		}).delay(Browser.Engine.trident ? 50 : 0, this);
+		return this;
+	},
+
+	cancel: function(){
+		if (!this.running) return this;
+		this.running = false;
+		this.fireEvent('cancel');
+		return this;
+	},
+
+	getScript: function(options){
+		var index = Request.JSONP.counter,
+				data;
+		Request.JSONP.counter++;
+
+		switch ($type(options.data)){
+			case 'element': data = document.id(options.data).toQueryString(); break;
+			case 'object': case 'hash': data = Hash.toQueryString(options.data);
+		}
+
+		var src = options.url + 
+			 (options.url.test('\\?') ? '&' :'?') + 
+			 (options.callbackKey || this.options.callbackKey) + 
+			 '=Request.JSONP.request_map.request_'+ index + 
+			 (data ? '&' + data : '');
+		if (src.length > 2083) this.log('JSONP '+ src +' will fail in Internet Explorer, which enforces a 2083 bytes length limit on URIs');
+
+		var script = new Element('script', {type: 'text/javascript', src: src});
+		Request.JSONP.request_map['request_' + index] = function(){ this.success(arguments, script); }.bind(this);
+		return script.inject(this.options.injectScript);
+	},
+
+	success: function(args, script){
+		if (!this.running) return false;
+		if (script) script.destroy();
+		this.running = false;
+		this.log('JSONP successfully retrieved: ', args);
+		this.fireEvent('complete', args).fireEvent('success', args).callChain();
+	}
+
+});
+
+Request.JSONP.counter = 0;
+Request.JSONP.request_map = {};
+
+
+/*
+---
+
+script: Form.Validator.Swedish.js
+
+name: Form.Validator.Swedish
+
+description: Form Validator messages for Swedish.
+
+license: MIT-style license
+
+authors:
+  - Martin Lundgren
+
+requires:
+  - /Lang
+
+provides: [Form.Validator.Swedish]
+
+...
+*/
+
+MooTools.lang.set('sv-SE', 'Form.Validator', {
+
+	required: 'Fältet är obligatoriskt.',
+	minLength: 'Ange minst {minLength} tecken (du angav {length} tecken).',
+	maxLength: 'Ange högst {maxLength} tecken (du angav {length} tecken). ',
+	integer: 'Ange ett heltal i fältet. Tal med decimaler (t.ex. 1,25) är inte tillåtna.',
+	numeric: 'Ange endast numeriska värden i detta fält (t.ex. "1" eller "1.1" eller "-1" eller "-1,1").',
+	digits: 'Använd endast siffror och skiljetecken i detta fält (till exempel ett telefonnummer med bindestreck tillåtet).',
+	alpha: 'Använd endast bokstäver (a-ö) i detta fält. Inga mellanslag eller andra tecken är tillåtna.',
+	alphanum: 'Använd endast bokstäver (a-ö) och siffror (0-9) i detta fält. Inga mellanslag eller andra tecken är tillåtna.',
+	dateSuchAs: 'Ange ett giltigt datum som t.ex. {date}',
+	dateInFormatMDY: 'Ange ett giltigt datum som t.ex. YYYY-MM-DD (i.e. "1999-12-31")',
+	email: 'Ange en giltig e-postadress. Till exempel "erik@domain.com".',
+	url: 'Ange en giltig webbadress som http://www.google.com.',
+	currencyDollar: 'Ange en giltig belopp. Exempelvis 100,00.',
+	oneRequired: 'Vänligen ange minst ett av dessa alternativ.',
+	errorPrefix: 'Fel: ',
+	warningPrefix: 'Varning: ',
+
+	// Form.Validator.Extras
+	noSpace: 'Det får inte finnas några mellanslag i detta fält.',
+	reqChkByNode: 'Inga objekt är valda.',
+	requiredChk: 'Detta är ett obligatoriskt fält.',
+	reqChkByName: 'Välj en {label}.',
+	match: 'Detta fält måste matcha {matchName}',
+	startDate: 'startdatumet',
+	endDate: 'slutdatum',
+	currendDate: 'dagens datum',
+	afterDate: 'Datumet bör vara samma eller senare än {label}.',
+	beforeDate: 'Datumet bör vara samma eller tidigare än {label}.',
+	startMonth: 'Välj en start månad',
+	sameMonth: 'Dessa två datum måste vara i samma månad - du måste ändra det ena eller det andra.'
+
+});
+
+
+/*
+---
+
+script: Form.Validator.Ukrainian.js
+
+name: Form.Validator.Ukrainian
+
+description: Form Validator messages in Ukrainian (utf-8).
+
+license: MIT-style license
+
+authors:
+  - Slik
+
+requires:
+  - /Lang
+
+provides: [Form.Validator.Ukrainian]
+
+...
+*/
+
+MooTools.lang.set('uk-UA', 'Form.Validator', {
+
+	required: 'Це поле повинне бути заповненим.',
+	minLength: 'Введіть хоча б {minLength} символів (Ви ввели {length}).',
+	maxLength: 'Кількість символів не може бути більше {maxLength} (Ви ввели {length}).',
+	integer: 'Введіть в це поле число. Дробові числа (наприклад 1.25) не дозволені.',
+	numeric: 'Введіть в це поле число (наприклад "1" або "1.1", або "-1", або "-1.1").',
+	digits: 'В цьому полі ви можете використовувати лише цифри і знаки пунктіації (наприклад, телефонний номер з знаками дефізу або з крапками).',
+	alpha: 'В цьому полі можна використовувати лише латинські літери (a-z). Пробіли і інші символи заборонені.',
+	alphanum: 'В цьому полі можна використовувати лише латинські літери (a-z) і цифри (0-9). Пробіли і інші символи заборонені.',
+	dateSuchAs: 'Введіть коректну дату {date}.',
+	dateInFormatMDY: 'Введіть дату в форматі ММ/ДД/РРРР (наприклад "12/31/2009").',
+	email: 'Введіть коректну адресу електронної пошти (наприклад "name@domain.com").',
+	url: 'Введіть коректне інтернет-посилання (наприклад http://www.google.com).',
+	currencyDollar: 'Введіть суму в доларах (наприклад "$100.00").',
+	oneRequired: 'Заповніть одне з полів.',
+	errorPrefix: 'Помилка: ',
+	warningPrefix: 'Увага: '
+
+});
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/corneeded.jsp
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/corneeded.jsp	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/corneeded.jsp	(revision 47450)
@@ -0,0 +1,25 @@
+<%@ page contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<%@ taglib prefix="s" uri="/struts-tags"%>
+<html>
+<head>
+<link href="jsps/style.css" rel="stylesheet" type="text/css" media="screen" />
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title><s:text name="corneeded.title"/></title>
+</head>
+<body>
+<div id="wrapper">
+	<jsp:include page="menu.jsp"/>
+	<div id="page">
+	<div id="page-bgtop">
+		<div id="content">
+			<s:actionerror/>
+			<br>
+			<s:text name="corneeded.back"/>
+		</div>
+		<div style="clear: both;">&nbsp;</div>
+	</div>
+	</div>
+</div>
+</body>
+</html>
\ No newline at end of file
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/table-images/right.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/table-images/right.png
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/table-images/right.png	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/table-images/right.png	(revision 47450)

Property changes on: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/table-images/right.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/table-images/pattern.gif
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/table-images/pattern.gif
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/table-images/pattern.gif	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/table-images/pattern.gif	(revision 47450)

Property changes on: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/table-images/pattern.gif
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/table-images/back.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/table-images/back.png
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/table-images/back.png	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/table-images/back.png	(revision 47450)

Property changes on: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/table-images/back.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/table-images/left.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/table-images/left.png
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/table-images/left.png	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/table-images/left.png	(revision 47450)

Property changes on: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/table-images/left.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/fonts/YanoneKaffeesatz-Light-webfont.ttf
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/fonts/YanoneKaffeesatz-Light-webfont.ttf
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/fonts/YanoneKaffeesatz-Light-webfont.ttf	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/fonts/YanoneKaffeesatz-Light-webfont.ttf	(revision 47450)

Property changes on: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/fonts/YanoneKaffeesatz-Light-webfont.ttf
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/WEB-INF/applicationContext.xml
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/WEB-INF/applicationContext.xml	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/WEB-INF/applicationContext.xml	(revision 47450)
@@ -0,0 +1,44 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<beans xmlns="http://www.springframework.org/schema/beans"
+	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p"
+	xmlns:context="http://www.springframework.org/schema/context"
+
+	xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.0.xsd
+	http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.0.xsd">
+
+
+	
+<!-- 	<import resource="classpath*:/eu/dnetlib/validator/admin/**/springContext-*.xml" /> -->
+<!-- 	<import resource="classpath*:/eu/dnetlib/validator/commons/**/springContext-*.xml" /> -->
+
+	<context:annotation-config />
+
+<bean class="eu.dnetlib.validator.web.config.CascadingPropertyLoader"
+		id="propertyLoader">
+		<property name="order" value="2" />
+		<property name="properties">
+			<bean class="eu.dnetlib.conf.WebappContextProperyFactory">
+				<property name="propertyFetcher">
+					<bean class="eu.dnetlib.conf.PropertyFetcher" />
+				</property>
+			</bean>
+		</property>
+		<property name="ignoreUnresolvablePlaceholders" value="true" />
+		<property name="locations">			<list>
+				<value>classpath*:/gr/**/springContext-*.properties</value>
+				<value>classpath*:/eu/**/springContext-*.properties</value>
+
+				<value>classpath*:dnet-site-wizard.properties</value>
+				<value>classpath*:dnet-site-override.properties</value>
+				<value>classpath*:dnet-wizard.properties</value>
+				<value>classpath*:dnet-override.properties</value>
+				<value>classpath*:dnet-validator-wizard.properties</value>
+				<value>classpath*:dnet-validator-override.properties</value>
+				<value>classpath*:dnet-site-force-override.properties</value>
+				<value>classpath*:dnet-force-override.properties</value>
+			</list>
+		</property>
+	</bean>
+
+</beans>
\ No newline at end of file
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/pom.xml
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/pom.xml	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/pom.xml	(revision 47450)
@@ -0,0 +1,77 @@
+<?xml version="1.0" ?>
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+	<parent>
+		<groupId>eu.dnetlib</groupId>
+		<artifactId>dnet-container-parent</artifactId>
+		<version>1.0.0</version>
+	</parent>
+	<modelVersion>4.0.0</modelVersion>
+	<groupId>eu.dnetlib</groupId>
+	<artifactId>uoa-validator-admin</artifactId>
+	<packaging>war</packaging>
+	<version>2.0.1</version>
+	<scm>
+		<developerConnection>scm:svn:https://svn.driver.research-infrastructures.eu/driver/dnet40/modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1</developerConnection>
+	</scm>
+	<properties>
+		<struts2.version>2.3.20</struts2.version>
+	</properties>
+
+	<dependencies>
+		<dependency>
+			<groupId>org.apache.struts</groupId>
+			<artifactId>struts2-core</artifactId>
+			<version>${struts2.version}</version>
+<!-- 			<exclusions> -->
+<!-- 				<exclusion>  declare the exclusion here -->
+<!-- 					<groupId>javax.servlet.jsp</groupId> -->
+<!-- 					<artifactId>jsp-api</artifactId> -->
+<!-- 				</exclusion> -->
+<!-- 			</exclusions> -->
+		</dependency>
+		<dependency>
+			<groupId>org.apache.struts</groupId>
+			<artifactId>struts2-spring-plugin</artifactId>
+			<version>${struts2.version}</version>
+			<exclusions>
+				<exclusion>
+					<groupId>org.springframework</groupId>
+					<artifactId>spring-beans</artifactId>
+				</exclusion>
+				<exclusion>
+					<groupId>org.springframework</groupId>
+					<artifactId>spring-core</artifactId>
+				</exclusion>
+				<exclusion>
+					<groupId>org.springframework</groupId>
+					<artifactId>spring-context</artifactId>
+				</exclusion>
+				<exclusion>
+					<groupId>org.springframework</groupId>
+					<artifactId>spring-web</artifactId>
+				</exclusion>
+			</exclusions>
+		</dependency>
+		<dependency>
+			<groupId>org.apache.struts</groupId>
+			<artifactId>struts2-dojo-plugin</artifactId>
+			<version>${struts2.version}</version>
+		</dependency>
+		<dependency>
+			<groupId>com.jgeppert.struts2.jquery</groupId>
+			<artifactId>struts2-jquery-plugin</artifactId>
+			<version>3.7.1</version>
+		</dependency>
+		
+		<dependency>
+			<groupId>com.unboundid</groupId>
+			<artifactId>unboundid-ldapsdk</artifactId>
+			<version>1.1.3</version>
+		</dependency>
+        <dependency>
+            <groupId>eu.dnetlib</groupId>
+            <artifactId>uoa-validator-commons</artifactId>
+            <version>[2.0.0, 2.1.0-SNAPSHOT)</version>
+        </dependency>
+	</dependencies>
+</project>
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/style.css
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/style.css	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/style.css	(revision 47450)
@@ -0,0 +1,1233 @@
+
+/*
+Design by Free CSS Templates
+http://www.freecsstemplates.org
+Released for free under a Creative Commons Attribution 2.5 License
+*/
+@import url(fonts/kreon.css);
+@import url(fonts/yanonekaffeesatz.css);
+@import url(fonts/opensans.css);
+
+body, html {
+	height:100%;
+}
+body {
+	margin: 0;
+	padding: 0;
+	font: normal 12px/20px verdana, OpenSansLight, sans-serif;
+	/*font: 12px/20px "OpenSansLight", "Trebuchet MS", Georgia, "Times New Roman", Times, serif;*/
+	color: #717171;
+	background: #f5f5f5;
+ 	background-image: url(images/BG_Header_f5.png), url(images/BG_Footer_f5.png);
+ 	background-position: left top, right bottom;
+ 	background-repeat: no-repeat, no-repeat; 
+ 	background-attachment:fixed;
+}
+
+h1, h2, h3, h4, h5 {
+	margin: 0;
+	padding-bottom:5px;
+	font-family: "OpenSansLight", "Trebuchet MS", Georgia, "Times New Roman", Times, serif;
+	font-weight: normal;
+	color: #0F2B5B;
+}
+
+h1 { 	padding-top: 25px;
+	padding-bottom:15px;
+	font-size: 24px; 
+	color:#829333; 
+}
+
+h2 { 	padding-top: 25px;
+	padding-bottom:10px;
+	font-size: 18px; 
+	color:#829333; 
+}
+
+h3 {  
+	color:#343CB1;
+	font-size: 16px; 
+}
+h4 {  
+	font-size: 16px; 
+}
+h5 {  
+	font-size: 14px; 
+}
+
+p, ul, ol {
+	margin-top: 0;
+	text-align: justify;
+}
+
+ul, ol { }
+
+blockquote { }
+
+a { color: #2D72D6; }
+
+a:hover { text-decoration: none; color:#E76E12; cursor: pointer;}
+
+a img {
+	border: none;
+}
+
+img.left {
+	float: left;
+	margin: 7px 30px 0 0;
+}
+
+img.right {
+	float: right;
+	margin: 7px 0 0 30px;
+}
+
+hr {
+	border-top: 0px;
+	border-bottom: 1px solid #ddd;
+}
+.frontvisible {
+	font-size:16px;
+	font-family: "OpenSansLight", "Trebuchet MS", Georgia, "Times New Roman", Times, serif;
+}
+.optional {
+	font-size:72%!important;
+}
+.frontvisible p {
+	font-size:12px;
+}
+ul.frontvisible,
+.frontvisible ul {
+	list-style:none;
+	margin-left:60px;
+	padding-left:60px;
+	font-size:12px;
+}
+ul.frontvisible>li,
+.frontvisible li {
+	background: url('images/list_check.png') 0 0 no-repeat;
+	padding: 4px 0 0 30px;
+	font-size:14px;
+	line-height:24px;
+}
+
+.list1 {
+}
+
+.list1 li {
+	float: left;
+	line-height: normal;
+}
+
+.list1 li img {
+	margin: 0 30px 30px 0;
+}
+
+.list1 li.alt img {
+	margin-right: 0;
+}
+
+div.wrapper {
+	margin: auto; 
+}
+.errorMessage {
+	color: #E24912;
+	list-style: none;
+	font-style:italic;
+	margin:10px 0px;
+	font-size:110%;
+}
+
+.highlight {
+	background: url(images/menu_level2_parent.png) 0 40%  no-repeat;
+	padding-left:30px;
+	font-weight:bold;
+}
+
+.register {
+	background: url(images/register.png) right 40%  no-repeat;
+	padding-right:18px;
+}
+.notes {
+	color:#818181;
+	font-style:italic;
+    background-color: transparent;
+    background-image: url("images/info.jpg");
+    background-repeat: no-repeat;
+	background-position:0 left;
+    padding-left: 20px;
+	line-height:140%;
+}
+.notes_important {
+	color:#666;
+	font-style:italic;
+    background-color: transparent;
+    background-image: url("images/exclamation-icon.png");
+    background-repeat: no-repeat;
+	background-position:0 left;
+    padding-left: 20px;
+	line-height:140%;
+}
+.comments {
+	color:#666;
+	font-style:italic;
+ }
+ 
+.selectedHdr {
+	margin: 15px 0px 40px 0px;
+	color:#E24912;
+	font-family: "YanoneKaffeesatzLight"; 
+	font-size: 28px;
+}
+.helpHdr {
+    background-attachment: scroll;
+    background-color: transparent;
+    background-image: url("images/info-left.png");
+    background-position: 0 80%;  
+    background-repeat: no-repeat;
+    padding-left: 35px;
+}
+.next {
+	line-height:32px;
+	background-image: url("images/arrow_right.png");
+	background-position: 50% 40%;  
+	background-repeat: no-repeat;
+	padding-right:65px;
+	margin-bottom:20px;
+	text-align:center;
+}
+.next a {
+	text-decoration:none;
+}
+.prev {
+	line-height:32px;
+	background-image: url("images/arrow_left.png");
+	background-position: 45% 40%;  
+	background-repeat: no-repeat;
+	padding-left:25px;
+	text-align:center;
+	margin-bottom:20px;
+}
+.prev a {
+	text-decoration:none;
+}
+
+.smallInp {
+	width:10%!important;
+}
+.smallInp input[type="text"] {
+	width:10%!important;
+}
+
+.bigInp {
+	width:40%!important;
+}
+.bigInp input[type="text"] {
+	width:40%!important;
+}
+
+.validatedOk { 
+	line-height:32px;
+	background-image: url("images/tick.png");
+    background-position: 50% 100%;
+    background-repeat: no-repeat;
+}
+
+.addNewRow { 
+	line-height:32px;
+	background-image: url("images/tick.png");
+    background-position: 50% 50%;
+    background-repeat: no-repeat;
+}
+
+.validatedWrong {
+	line-height:32px;
+	background-image: url("images/error.png");
+    background-position: 50% 40%;  
+    background-repeat: no-repeat;
+}
+
+.validatedWarnings {
+	line-height:32px;
+	background-image: url("images/warning.png");
+    background-position: 50% 40%;  
+    background-repeat: no-repeat;
+}
+/*
+ * horizontal rule
+ */
+ 
+hr.dotted {
+	margin: 15px 0px 15px 0px;
+	display: block;
+	background: url(images/line_dotted.png) 0 0 repeat-x;
+	height: 1px;
+	border: none;
+}
+
+/*
+ * highlighted div and span tags
+ */
+
+span.note,
+span.info,
+span.alert,
+span.download,
+span.tip {
+	display: block;
+}
+
+.box-content {
+	background: #fafafa;
+	border: 1px solid #ddd;
+}
+
+
+div.note, span.note,
+div.info, span.info,
+div.alert, span.alert,
+div.download, span.download,
+div.tip, span.tip {
+	margin: 10px 0px 10px 0px;
+	padding: 8px 10px 8px 35px;
+	background: #fafafa;
+	border-top: 1px solid #ddd;
+	border-bottom: 1px solid #ddd;
+}
+
+div.info, span.info {
+	background: #ebf5fa url(images/box_info.png) 0 0 no-repeat;
+	border-color: #d2dce1;
+}
+
+div.alert, span.alert {
+	background: #fff0eb url(images/box_warning.png) 0 0 no-repeat;
+	border-color: #ffd7cd;
+}
+
+div.download, span.download {
+	background: #faffe6 url(images/box_download.png) 0 0 no-repeat;
+	border-color: #dce6be;
+}
+
+div.tip, span.tip {
+	background: #fffae6 url(images/box_tip.png) 0 0 no-repeat;
+	border-color: #fae6be;
+}
+.errorlink,
+.warninglink,
+.smallfont {
+	font-size:90%!important;
+}
+a.smallfont {
+	font-size:90%!important;
+}
+.firstpar {
+	padding:0px 5px 20px 45px;
+	margin:15px 0px;
+	background: no-repeat url(images/number-1.png) top left;
+}
+.secondpar {
+	padding:0px 5px 20px 45px;
+	margin:15px 0px;
+	background: no-repeat url(images/number-2.png) top left;
+}
+.thirdpar {
+	padding:0px 5px 20px 45px;
+	margin:15px 0px;
+	background: no-repeat url(images/number-3.png) top left;
+}
+.fourthpar {
+ 	padding:0px 5px 20px 45px;
+ 	margin:15px 0px;
+}
+.section {
+	padding-left:5px;
+	font-weight: normal;
+	text-transform: none;
+	line-height: 30px;
+	padding-top:3px;
+	padding-bottom: 10px;
+	font-family: "YanoneKaffeesatzLight"; 
+	font-size: 30px;
+	color:#343CB1;
+}
+.section1 {
+	padding-left:5px;
+	font-weight: normal;
+	text-transform: none;
+	line-height: 30px;
+	padding-top:3px;
+	padding-bottom: 10px;
+	font-family: "YanoneKaffeesatzLight"; 
+	font-size: 30px;
+	color:#343CB1;
+	background:#c2c2c2;
+}
+.box {
+	background: #fafafa;
+	border: 1px solid #ddd;
+}
+.field {
+	margin: 10px 0px;
+	line-height:28px;
+	font-size:100%;
+	clear:both;
+	overflow: hidden;
+}
+#left .field  {
+	padding:0
+	font-size:100%;
+	clear:both;
+	color:#351695;
+}
+.field label, label {
+	padding-left:1px;
+}
+	
+label input[type="text"] {
+	border:#839EB7 1px solid!important;
+	width:70%;
+}
+
+.field input[type="text"] {
+	width:80%;
+}
+.field input[type="password"] {
+	width:80%;
+}
+.fieldName {
+	margin-right: 10px;
+	font-family: "YanoneKaffeesatzLight"; 
+	font-size:18px;
+}
+
+
+/* Header */
+
+#header-wrapper {
+	color: #717171;
+}
+
+#header {
+	width: 970px;
+	height: 160px;
+	margin: 0 auto;
+	position:relative;
+}
+
+/* Menu */
+
+#topmenu {
+	height:30px;
+	padding-right:20px;
+}
+#topmenu ul {
+	list-style: none;
+}
+#topmenu li {
+	padding-left:10px;
+	font-family: "YanoneKaffeesatzLight"; 
+	font-size:16px;
+}
+#topmenu li a {
+	text-decoration:none;
+}
+
+
+
+	
+/* Search */
+/* oldname searchbox*/ 
+.class srchbx {
+	font-size:12px;
+	font-weight:bold;
+}
+#search {
+	float: right;
+	width: 305px;
+	height: 45px;
+}
+
+#search form {
+	float: right;
+	margin: 0;
+	padding: 12px 30px 0 0;
+}
+
+#search fieldset {
+	margin: 0;
+	padding: 0;
+	border: none;
+}
+
+#search input {
+	float: left;
+	font: 12px Georgia, "Times New Roman", Times, serif;
+	border: none;
+}
+
+#search-text {
+	width: 135px;
+	height: 18px;
+	padding: 3px 0 0 5px;
+	border: 1px solid #333333;
+	background: #ECF9E4;
+	color: #000000;
+}
+
+#search-submit {
+	height: 21px;
+	margin-left: 10px;
+	padding: 0px 5px;
+	background: #000000;
+	color: #FFFFFF;
+}
+
+/* Page */
+
+#page {
+	width: 970px;
+	margin: 0 auto;
+	/*background: #fafafa url(images/middle_bg_t.png) 0 0 repeat-x;*/
+	background:#ffffff;
+	box-shadow: 0 1px 0 rgba(0,0,0,0.1);
+}
+
+#page-bgtop {
+	
+}
+
+	/** LOGO */
+
+#logoLareferencia {
+	width: 308px;
+	height: 130px;
+	top:10px;
+	margin: 0 auto;
+	float:left;
+	position:absolute;
+	background: url(images/logo-referencia-openaire.png) no-repeat left bottom;
+	background-size: 300px;
+}	
+
+#logo {
+	width: 300px;
+	height: 130px;
+	top:10px;
+	margin: 0 auto;
+	float:left;
+	position:absolute;
+/* 	background: url(images/OpenAIREplus_logo.png) no-repeat left center; */
+}
+
+#logo h1, #logo p {
+	margin: 0px;
+	line-height: normal;
+	text-transform: none;
+	font-weight: normal;
+	color: #FFFFFF;
+}
+
+#logo p {
+	text-transform: lowercase;
+	font-size: 10px;
+}
+
+#logo h1 {
+	padding-top: 54px;
+	font-size: 34px;
+}
+
+#logo a {
+	text-decoration: none;
+	color: #FFFFFF;
+}
+
+/* Content */
+
+div#content {
+	width: auto;
+	min-height:300px;
+}
+div#content {
+	margin: 0px 0px 0px 0px;
+	float: left;
+	width: 658px;
+	padding-top: 10px;
+	padding-right: 30px;
+}
+
+.showright div#content {
+	margin: 0px 210px 0px 0px;  
+}
+
+
+/* Main */
+
+div#main {
+	/*background: url(images/img07.jpg) repeat-x left bottom;*/
+	width: auto!important;	 
+	min-height:300px;
+}
+ 
+div#main {
+	margin: 0px 0px 0px 0px;
+	padding: 0px 0px 0px 0px;
+}
+#main_container {
+	padding:0px 10px 0px 10px;
+}
+
+.left div#main {
+	margin: 0px 0px 0px 220px;  
+}
+.right div#main {
+	margin: 0px 240px 0px 0px;  
+}
+div#mainmiddle {
+	margin: 0px 0px 15px 0px;
+}
+div#middle {
+	margin: 0px 0px 0px 0px;
+	/*background: #fafafa url(images/middle_bg_t.png) 0 0 repeat-x;*/
+}
+
+div.middle-b {
+	padding: 15px 15px 15px 15px;
+	/*background: url(images/middle_bg_b.png) 0 100% repeat-x;	*/
+
+}
+
+div#middle .background {
+	min-height: 200px; 
+}
+.left div#middle .background {
+	background: url(images/left_bg_l.png) 220px 0 repeat-y;
+}
+/* Left */
+div#left {
+	width: 220px;
+}
+.left div#middle div#left {
+	float: left;
+}
+#left_container {
+	padding:0px 10px 0px 10px;
+}
+#left_container p, #left_container li, #left p, #left li{
+	text-align:left;
+	font-size:12px;
+}
+
+/* Post */
+
+.post {
+	/*background: url(images/img07.jpg) repeat-x left bottom;*/
+	padding-bottom: 25px;
+	padding-top: 5px;
+	margin: 15px 10px 0px 0px;
+	/*height: 180px;*/
+	position: relative;
+}
+
+.postvertical {
+	background: url(images/img07.jpg) repeat-x left bottom;
+	margin-bottom: 25px;
+	margin-top: 20px;
+	margin-right: 120px;
+	margin-left: 30px;
+	float: left;
+	width: 277px;
+}
+
+
+
+.post .title {
+	height: 30px;
+	color: #0F2B5B;
+}
+
+.post .title a {
+	text-decoration: none;
+	color: #585D60;
+}
+
+.post .date {
+}
+
+.post .meta {
+	margin-top: -10px;
+	padding: 2px 30px 2px 16px;
+	background: url(images/help.png) no-repeat left 8px;
+	font-weight: normal;
+	font-size: 10px;
+	color: #66665E;
+}
+
+.post .meta span {
+	display: block;
+	margin-top: -10px;
+}
+
+.post .meta a { 
+	padding-left: 3px;
+	text-decoration: none;
+	color: MediumBlue;
+}
+
+.post .entry {
+	padding: 10px 0;
+}
+
+.post .links {
+	margin: 0 250px 0 0;
+	padding: 0 0 0 0px;
+}
+
+.post .links .comments {
+}
+
+.post .links .permalink {
+	padding-left: 17px;
+}
+
+/* Sid */
+
+#sid {
+	float: left;
+	width: 177px;
+	padding-right: 22px;
+	font-size: 11px;
+	color: #585D60;
+}
+
+#sid ul {
+	margin: 0;
+	padding: 0;
+	list-style: none;
+	line-height: normal;
+}
+
+#sid li {
+	margin-bottom: 30px;
+	padding: 0 0 10px 0px;
+}
+
+#sid li ul {
+}
+
+#sid li li {
+	margin: 0;
+	padding: 7px 10px 10px 7px;
+	background: url(images/img07.jpg) repeat-x left bottom;
+}
+
+#sid p {
+	margin: 0;
+	padding: 0px 10px;
+}
+
+#sid h2 {
+	height: 26px;
+	margin: 0 0 10px 0px;
+	padding: 12px 0 2px 7px;
+	font-size: 18px;
+	font-weight: normal;
+	color: #464F54;
+}
+
+
+#sid p {
+	line-height: 200%;
+}
+#sid a {
+	text-align: left;
+	text-decoration: none;
+	font-weight: normal;
+	color: #585D60;
+}
+
+/* Calendar */
+
+#calendar {
+}
+
+#calendar caption {
+	padding-bottom: 5px;
+	font-weight: bold;
+}
+
+#calendar table {
+	width: 100%;
+	border-collapse: collapse;
+	border-bottom: 1px solid #24130F;
+	border-left: 1px solid #24130F;
+	border-right: 1px solid #24130F;
+}
+
+#calendar thead th {
+	padding: 5px 0;
+	text-align: center;
+	border-top: 1px solid #24130F;
+	border-left: 1px solid #24130F;
+	background: #24130F;
+}
+
+#calendar tbody td {
+	padding: 5px 0;
+	text-align: center;
+	border-top: 1px solid #24130F;
+	border-left: 1px solid #24130F;
+	border-bottom: 1px solid #24130F;
+}
+
+#calendar tfoot td {
+	padding: 5px;
+	border-left: 1px solid #24130F;
+	border-bottom: 1px solid #24130F;
+}
+
+#calendar tfoot #next {
+	border-top: 1px solid #24130F;
+	text-align: right;
+}
+
+#calendar tfoot #prev {
+	border-top: 1px solid #24130F;
+}
+
+#calendar .pad {
+	border-bottom: 1px solid #24130F;
+}
+
+#calendar #today {
+	background: #24130F;
+}
+
+/* Footer */
+
+#footer {
+	padding-top:10px;
+	clear: both;  
+	height: 62px;
+	background:#3440B5;
+	color:#ffffff;
+	border-top:1px solid #DADADA;
+
+	overflow: hidden;
+}
+
+#footer-bgcontent {
+	height: 62px;
+	padding: 10px;
+	background-attachment: scroll;
+    background-image: url("images/EC_logo_blue_multi_horizontal.png");
+    background-position: 95% 10%;
+    background-repeat: no-repeat;
+}
+
+#footer p {
+	font-size: 12px; font-family: "OpenSansLight"; 
+	margin: 0;
+	text-align: center;
+}
+
+#footer a {
+	color: #E5FFC4;
+}
+
+/* Table */
+
+#gradient-style
+{
+	font-size:100%;
+	text-align: left;
+	border-collapse: collapse;
+}
+#gradient-style th
+{
+	font-size: 110%;
+	font-weight: normal;
+	padding: 3px;
+	background: #F0F0F0;
+	border-top: 2px #CCCCCC solid;
+	border-bottom: 2px #CCCCCC solid;
+	color: #0F2B5B;
+}
+#gradient-style td
+{
+	padding:0px 3px;
+	border-bottom: 1px solid #fff;
+	color: #669;
+	border-top: 1px solid #fff;
+	background: #F0F0F0;
+}
+
+#gradient-style tfoot tr td
+{
+	background: #e8edff;
+	font-size: normal;
+	color: #99c;
+}
+#gradient-style tbody tr:hover td
+{
+	background: #0F2B5B;
+	color: #FFFFFF!important;
+}
+
+#gradient-style tbody tr:hover td a
+{
+	color: #fff!important;
+	text-decoration:underline;
+}
+
+.errordiv {
+	background-color:#FFFAE6;
+	padding: 5px 10px 5px 10px;
+	border-top: 1px dotted #AAB4BE;
+	border-bottom: 1px dotted #AAB4BE;
+}
+.errordiv:hover {
+}
+/* expand - colapse fields */
+
+.optiontable_container {
+	position:relative;
+	z-index:100;
+	min-width: 400px;
+}
+
+.optiontable_ttl {
+	line-height: 1em;
+	display:block;
+	margin-top: 0;
+	margin-bottom: 0;
+	padding-top: 0;
+	padding-bottom: 0;
+	padding-left: 10px;
+	padding-right: 10px;
+	border-color: #aeadad;
+	border-style: solid;
+	border-width:0 1px 1px;
+}
+
+.optiontable_content {
+	display:block;
+	padding-top: 5px;
+	padding-bottom: 5px;
+	padding-left: 2px;
+	padding-right: 2px;
+	border-color: #aeadad;
+	border-style: solid;
+	border-width:0 1px;
+}
+.contentR {
+	border-left: #aeadad solid 1px;
+	border-right: #aeadad solid 1px;
+}
+.usage {
+	border-left: #aeadad solid 1px;
+	border-right: #aeadad solid 1px;
+}
+
+.optiontable_content2 {
+	overflow:auto;
+	height: auto;/*30em;*/
+}
+
+.floatleft {
+	float: left;
+	padding-right: 10px;
+}
+
+
+a.help {
+    -moz-background-clip: border;
+    -moz-background-origin: padding;
+    -moz-background-size: auto auto;
+    background-attachment: scroll;
+    background-color: transparent;
+    background-image: url("images/help2.png");
+    background-position: 0 0;
+    background-repeat: no-repeat;
+    padding-left: 20px;
+}
+a.external {
+    -moz-background-clip: border;
+    -moz-background-origin: padding;
+    -moz-background-size: auto auto;
+    background-attachment: scroll;
+    background-color: transparent;
+    background-image: url("images/icon_external.png");
+    background-position: 0 40%;
+    background-repeat: no-repeat;
+    padding-left: 17px;
+}
+
+a.toplink {
+    background-attachment: scroll;
+    background-color: transparent;
+    background-image: url("images/footer_anchor.png");
+    background-position: bottom right;
+    background-repeat: no-repeat;
+    font-size: 12px;
+	width: 30px;
+	height: 5px;
+	display: block;
+	text-decoration: none;
+}
+
+a.download {
+    padding-left: 17px;
+    background: url(images/icon_download.png) 0 40% no-repeat;
+}
+
+.cmenu {
+	font-size: 12px;
+	margin : 10px 0px;
+	padding : 0px 10px 0px 0px;
+}
+
+a.cmenulink {
+	color: #0F2B5B;
+	text-transform: uppercase;
+	text-decoration: none;
+}
+
+a.selectlink {
+	text-decoration: none;
+}
+
+.nest {
+	padding-left:20px;
+	display: block;
+}
+
+/*
+ * Clearing & Floating
+ */
+ 
+.clearfix:after {
+	content: "."; 
+	display: block; 
+	height: 0;  
+	clear: both; 
+	visibility: hidden;
+}	
+ 
+.clearfix { display: block; }
+
+.floatbox { overflow:hidden; }
+
+.float-left { float: left; overflow: hidden; }
+.float-right { float: right; overflow: hidden; }
+
+.width15 { width: 14.999%; }
+.width18 { width: 18.333%; }
+.width20 { width: 19.999%; }
+.width23 { width: 22.999%; }
+.width25 { width: 24.999%; }
+.width33 { width: 33.333%; }
+.width35 { width: 34.999%; }
+.width40 { width: 39.999%; }
+.width45 { width: 44.999%; }
+.width50 { width: 49.999%; }
+.width54 { width: 53.999%; }
+.width65 { width: 64.999%; }
+.width75 { width: 74.999%; }
+.width100 { width: 100%; }
+
+.separator {
+	/*padding-right: 25px;*/
+	background: url(images/module_separator_m.png) 100% 0 repeat-y;
+}
+
+/* ajax request */
+#log_res {
+	overflow: auto;
+}
+ 
+#log_res.ajax-loading {
+	padding: 20px 0;
+	background: url(images/spinner.gif) no-repeat;
+}
+
+.button-default,
+.button-primary,
+form.style button,
+form.style input[type='button'],
+form.style input[type='submit'] { 
+	padding: 8px 14px;
+	margin-top: 5px;
+	margin-bottom: 5px;
+	border-radius: 2px; 
+	border: none;
+	box-shadow: inset 0 -1px 0 rgba(0,0,0,0.15);
+}
+
+/* Default */
+.button-default,
+form.style button,
+form.style input[type='button'],
+form.style input[type='submit'] {
+	background-color: #f5f5f5;
+	background-image: -o-linear-gradient(rgba(240,240,240,0), #dbdbdb);
+	background-image: -webkit-linear-gradient(rgba(240,240,240,0), #dbdbdb);
+	background-image: -moz-linear-gradient(rgba(240,240,240,0), #dbdbdb);
+	background-image: linear-gradient(rgba(240,240,240,0), #dbdbdb);
+	text-shadow: 0 1px 0 #fff;
+	text-decoration: none;
+	display: inherit;
+	text-align: center;
+	text-shadow: 0 1px 0 rgba(255,255,255,0.5);
+	color: #878787;
+}
+
+.button-default:hover,
+form.style button:hover,
+form.style input[type='button']:hover,
+form.style input[type='submit']:hover {
+	background-color: #dbdbdb;
+	box-shadow: inset 0 1px 5px rgba(0,0,0,0.1),
+				inset 0 0 1px rgba(0,0,0,0.1);
+}
+
+.button-default:active,
+form.style button:active,
+form.style input[type='button']:active,
+form.style input[type='submit']:active {
+	color: #737373;
+	box-shadow: inset 0 1px 5px rgba(0,0,0,0.1),
+				inset 0 0 1px rgba(0,0,0,0.1);
+}
+
+/* Primary */
+.button-primary {
+	color: #fff;
+	text-shadow: 0 -1px 0 rgba(0,0,0,0.3);
+}
+
+.button-primary:hover {
+	box-shadow: inset 0 1px 5px rgba(0,0,0,0.3),
+				inset 0 0 1px rgba(0,0,0,0.3);
+	color: #fff;
+}
+
+.button-primary:active {
+	box-shadow: inset 0 1px 8px rgba(0,0,0,0.4),
+				inset 0 0 1px rgba(0,0,0,0.3);
+	text-shadow: 0 0 5px #fff;
+}
+.wrapword{
+white-space: -moz-pre-wrap !important;  /* Mozilla, since 1999 */
+white-space: -pre-wrap;      /* Opera 4-6 */
+white-space: -o-pre-wrap;    /* Opera 7 */
+white-space: pre-wrap;       /* css-3 */
+word-wrap: break-word;       /* Internet Explorer 5.5+ */
+word-break: break-all;
+white-space: normal;
+}
+
+/* Zebra List and Table */
+table.zebra th, table.zebra td { padding: 5px; }
+table.zebra th { color:#3440B5 ;font-size: 14px; font-weight: normal; text-align: left; }
+table { border-collapse: collapse; border-spacing: 0; }
+table.zebra tbody, table.zebra tfoot { font-size: 12px; font-family: "OpenSansLight"; }
+
+table.zebra tbody td { border-bottom: 1px solid #ddd; word-wrap:break-word; }
+table.zebra tbody tr:first-child td { border-top: 1px solid #ddd; }
+
+table.zebra tbody tr.odd { background: url(images/zebra_list.png) 0 0 repeat; }
+table.zebra tbody tr:nth-of-type(odd) { background: url(images/zebra_list.png) 0 0 repeat;}
+
+table.zebra caption { color: #999; }
+table.zebra tbody tr:hover td { background: #E7E7E7; }
+
+/* Zebra List and Table */
+table.zebra1 th, table.zebra td { padding: 5px; }
+table.zebra1 th { font-size: 14px; font-weight: normal; text-align: left; }
+table { border-collapse: collapse; border-spacing: 0; }
+table.zebra1 tbody, table.zebra tfoot { font-size: 12px; font-family: "OpenSansLight"; }
+
+table.zebra1 tbody td { border-bottom: 0px solid #ddd; word-wrap:break-word; }
+table.zebra1 tbody tr:first-child td { border-top: 1px solid #ddd; }
+
+table.zebra1 tbody tr th{ color:black; }
+table.zebra1 tbody tr:first-child td { border-top: 0px solid #ddd; }
+
+table.zebra1 tbody th.numb {  background: #2D72D6; border: none; color: white;}
+table.zebra1 tbody td.numb {  background: #00B5F0; border: none; padding-left: 10px; color: white;}
+table.zebra1 tbody td.cb {  background: #dddddd; border: none; padding-left: 7px; color: white;}
+
+table.zebra1 caption { color: #999; }
+/* table.zebra1 tbody tr:hover  { background: #E7E7E7; } */
+
+
+/*----- Tabs -----*/
+.tabs {
+    width:100%;
+    display:inline-block;
+}
+ 
+    /*----- Tab Links -----*/
+    /* Clearfix */
+    .tab-links:after {
+        display:block;
+        clear:both;
+        content:'';
+    }
+ 
+    .tab-links li {
+        margin:0px 5px;
+        float:left;
+        list-style:none;
+        margin-bottom: -12px;
+    }
+    
+        .tab-links a {
+            padding:9px 15px;
+            display:inline-block;
+            border-radius:3px 3px 0px 0px;
+/*             background:#7FB5DA; */
+            background:#2D72D6;
+            text-decoration:none;
+			font-size: 15px;
+            font-weight:normal;;
+/*             color:#4c4c4c; */
+			color: #3440B5;
+            color:white;
+            transition:all linear 0.15s;
+/*             font-family: "YanoneKaffeesatzLight"; */
+/*             padding: 0 12px; */
+/* outline: 0; */
+/* position: relative; */
+/* white-space: nowrap; */
+
+        }
+ 
+        .tab-links a:hover {
+            background:#a7cce5;
+            text-decoration:none;
+        }
+
+    li.active a, li.active a:hover {
+        background:#F3F3F3;
+        color:#2D72D6;
+    }
+ 
+    /*----- Content of Tabs -----*/
+    .tab-content {
+        padding:10px;
+        border-radius:3px;
+        box-shadow:-1px 1px 1px rgba(0,0,0,0.15);
+        background:#F3F3F3;
+    }
+ 
+        .tab {
+            display:none;
+        }
+ 
+        .tab.active {
+            display:block;
+        }
\ No newline at end of file
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/editUser.jsp
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/editUser.jsp	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/editUser.jsp	(revision 47450)
@@ -0,0 +1,50 @@
+<%@ page contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<%@ taglib prefix="s" uri="/struts-tags"%>
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title><s:text name="editUser.title"/></title>
+<link href="jsps/favicon.ico" rel="shortcut icon" type="image/x-icon" />
+<link href="jsps/style.css" rel="stylesheet" type="text/css" media="screen" />
+</head>
+<body>
+<div id="wrapper">
+	<jsp:include page="menu.jsp"/>
+	<div id="page">
+        <div id="page-bgtop">
+            <div id="middle">
+                    <div class="middle-b">
+                        <div class="background">
+                            <div id="main">
+                                <div id="main_container" class="clearfix">
+                                    <div id="mainmiddle" class="floatbox">
+                                        <h1><s:text name="editUser.title"/></h1>
+                                        
+                                        <%--<p class="meta"><a href='<s:url value="/jsps/help.jsp#addRule"/>' target="_blank"><s:text name="help"/></a></p>--%>
+                                        <div class="entry">
+                                            <s:form action="editUser">
+                                                <div class="field"><s:textfield name="user.username" key="registration.username" readonly="true" requiredLabel="true"/></div>
+                                                <div class="field"><s:textfield name="user.email" key="registration.email" readonly="true" requiredLabel="true"/></div>
+                                            	<div class="field"><s:textfield name="user.firstname" key="registration.firstName" requiredLabel="true"/></div>
+                                                <div class="field"><s:textfield name="user.lastname" key="registration.lastName" requiredLabel="true"/></div>
+                                                <div class="field"><s:textfield name="user.institution" key="registration.institution"/></div>
+                                                <div class="field"><tr><td colspan="2"><hr class="dotted"/></td></tr></div>
+                                                <div class=" field float-left"><s:submit value="Update"/></div>
+                                            </s:form>
+                                        </div>
+                                    </div>
+                                </div>
+                            </div>
+                        </div>
+                    </div>
+                </div>
+        </div>
+        <!-- NMI This needs to be the same in all pages and the text is some properties file -->
+        <div id="footer"> 
+			<jsp:include page="footer.jsp"/>
+		</div>
+	</div>
+	</div>
+</body>
+</html>
\ No newline at end of file
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/fonts/kreon.css
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/fonts/kreon.css	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/fonts/kreon.css	(revision 47450)
@@ -0,0 +1,12 @@
+/* Copyright (C) YOOtheme GmbH, YOOtheme Proprietary Use License (http://www.yootheme.com/license) */
+
+@font-face {
+	font-family: 'KreonRegular';
+	src: url('kreon-regular-webfont.eot');
+	src: url('kreon-regular-webfont.eot?#iefix') format('embedded-opentype'),
+		 url('kreon-regular-webfont.woff') format('woff'),
+		 url('kreon-regular-webfont.ttf') format('truetype'),
+		 url('kreon-regular-webfont.svg#KreonRegular') format('svg');
+	font-weight: normal;
+	font-style: normal;
+}
\ No newline at end of file
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/chooseRuleSetForDeletion.jsp
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/chooseRuleSetForDeletion.jsp	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/chooseRuleSetForDeletion.jsp	(revision 47450)
@@ -0,0 +1,49 @@
+<%@ page contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<%@ taglib prefix="s" uri="/struts-tags"%>
+<html>
+<head>
+<link href="jsps/favicon.ico" rel="shortcut icon" type="image/x-icon" />
+<link href="jsps/style.css" rel="stylesheet" type="text/css" media="screen" />
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title><s:text name="deleteRuleSet.title"/></title>
+</head>
+<body class="left">
+<div id="wrapper">
+	<jsp:include page="menu.jsp"/>
+	<div id="page">
+	<div id="page-bgtop">
+	<div id="middle">
+            <div class="middle-b">
+                <div class="background">
+			 <div id="left">
+                              <div id="left_container" >
+                                   <h2 class="helpHdr">Info</h2>
+                                   <s:text name="help.admin"/>
+                              </div>
+                         </div>
+                        <div id="main">
+                        <div id="main_container" class="clearfix">
+			<div id="content">
+				<h2 class="title"><s:text name="deleteRuleSet.title"/></h2>
+                                <div class="entry">
+                                        <s:form action="deleteRuleSet">
+                                                <s:select name="setId" list="sets" listValue="name" listKey="id" key="chooseRuleSet.label"/>
+                                                <s:submit cssClass="button-default"/>
+                                        </s:form>
+                                </div>
+			</div>
+			</div>
+			</div>
+		</div>
+	</div>
+	</div>
+	</div>
+
+    <div id="footer">
+                <jsp:include page="footer.jsp"/>
+        </div>
+</div>
+</div>
+</body>
+</html>
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/fonts/DroidSans-webfont.svg
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/fonts/DroidSans-webfont.svg	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/fonts/DroidSans-webfont.svg	(revision 47450)
@@ -0,0 +1,251 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" >
+<svg xmlns="http://www.w3.org/2000/svg">
+<metadata>
+This is a custom SVG webfont generated by Font Squirrel.
+Copyright   : Digitized data copyright  2007 Google Corporation
+Foundry     : Ascender Corporation
+Foundry URL : httpwwwascendercorpcom
+</metadata>
+<defs>
+<font id="DroidSansRegular" horiz-adv-x="1128" >
+<font-face units-per-em="2048" ascent="1638" descent="-410" />
+<missing-glyph horiz-adv-x="532" />
+<glyph unicode=" "  horiz-adv-x="532" />
+<glyph unicode="&#x09;" horiz-adv-x="532" />
+<glyph unicode="&#xa0;" horiz-adv-x="532" />
+<glyph unicode="!" horiz-adv-x="551" d="M147 111q0 38 10 64.5t27 43t40 24t50 7.5q26 0 49.5 -7.5t40.5 -24t27 -43t10 -64.5q0 -37 -10 -63.5t-27 -43.5t-40.5 -25t-49.5 -8q-27 0 -50 8t-40 25t-27 43.5t-10 63.5zM164 1462h223l-51 -1048h-121z" />
+<glyph unicode="&#x22;" horiz-adv-x="823" d="M133 1462h197l-41 -528h-115zM494 1462h196l-41 -528h-114z" />
+<glyph unicode="#" horiz-adv-x="1323" d="M51 428v137h285l65 328h-274v137h299l82 432h147l-82 -432h293l84 432h144l-84 -432h262v-137h-289l-63 -328h280v-137h-307l-82 -428h-147l84 428h-291l-82 -428h-144l78 428h-258zM483 565h291l64 328h-291z" />
+<glyph unicode="$" d="M123 172v172q33 -16 76.5 -32.5t91.5 -29.5t98.5 -21.5t97.5 -8.5v434q-89 30 -154.5 63t-108.5 75.5t-64 97.5t-21 129q0 67 24.5 122.5t70 97t110 68t143.5 35.5v180h138v-176q100 -5 184.5 -26t151.5 -52l-66 -145q-56 25 -126 45.5t-144 26.5v-422q88 -31 155.5 -64 t113 -74.5t68.5 -95t23 -125.5q0 -70 -25 -127t-71.5 -99t-113 -69.5t-150.5 -39.5v-230h-138v221q-50 0 -101 4.5t-99 13.5t-90 22t-74 30zM315 1049q0 -36 8.5 -64.5t28.5 -52t53 -42.5t82 -36v369q-89 -16 -130.5 -60.5t-41.5 -113.5zM625 262q93 14 138.5 63t45.5 121 q0 33 -10 60.5t-31.5 50t-56.5 41.5t-86 37v-373z" />
+<glyph unicode="%" horiz-adv-x="1690" d="M102 1026q0 108 17.5 193t54 143.5t93 89.5t134.5 31q75 0 131.5 -31t95 -89.5t58 -143.5t19.5 -193t-18 -194t-55 -145t-94.5 -90.5t-136.5 -31.5q-73 0 -129 31.5t-94 90.5t-57 145t-19 194zM250 1026q0 -165 35.5 -247.5t115.5 -82.5q156 0 156 330q0 328 -156 328 q-80 0 -115.5 -81.5t-35.5 -246.5zM362 0l812 1462h157l-811 -1462h-158zM985 440q0 108 17.5 193t54 143.5t93 89.5t134.5 31q75 0 131.5 -31t94.5 -89.5t57.5 -143.5t19.5 -193t-17.5 -193.5t-54.5 -144.5t-94.5 -90.5t-136.5 -31.5q-74 0 -130 31.5t-93.5 90.5 t-56.5 144.5t-19 193.5zM1133 440q0 -165 35.5 -247t115.5 -82q156 0 156 329q0 328 -156 328q-80 0 -115.5 -81.5t-35.5 -246.5z" />
+<glyph unicode="&#x26;" horiz-adv-x="1438" d="M109 381q0 78 20 139t58.5 111t94 93t126.5 85q-31 36 -61 74.5t-52.5 82t-36.5 93t-14 106.5q0 75 25 134.5t72 101t116 63t157 21.5q83 0 148.5 -21.5t111 -63t69.5 -101t24 -134.5q0 -64 -25 -118.5t-67 -101t-96.5 -86t-114.5 -75.5l352 -372q27 29 48.5 59t38.5 64 t30.5 73t23.5 86h184q-15 -66 -35.5 -121.5t-47 -104.5t-59 -91.5t-71.5 -83.5l277 -293h-225l-168 172q-49 -45 -97 -80.5t-102 -60t-116 -38t-140 -13.5q-105 0 -188.5 26.5t-141 78t-88 126t-30.5 170.5zM299 387q0 -54 17.5 -99.5t50.5 -78t81 -50.5t109 -18 q58 0 107 11.5t91 31.5t78 47t68 58l-387 407q-52 -33 -92 -64.5t-67.5 -67.5t-41.5 -78.5t-14 -98.5zM422 1165q0 -34 8 -66.5t24.5 -65t42.5 -66t62 -70.5q59 35 102 66t71 63t42 67t14 76q0 36 -12.5 66.5t-36 52.5t-56.5 34.5t-75 12.5q-86 0 -136 -44.5t-50 -125.5z " />
+<glyph unicode="'" horiz-adv-x="463" d="M133 1462h197l-41 -528h-115z" />
+<glyph unicode="(" horiz-adv-x="616" d="M82 561q0 125 18 246.5t55 236t93.5 220t134.5 198.5h172q-140 -193 -212.5 -424t-72.5 -475q0 -119 18.5 -237t54 -231t88.5 -219t122 -200h-170q-78 90 -134.5 193t-93.5 215.5t-55 232.5t-18 244z" />
+<glyph unicode=")" horiz-adv-x="616" d="M61 1462h172q78 -93 134.5 -198.5t94 -220t55.5 -236t18 -246.5q0 -124 -18 -244t-55.5 -232.5t-94 -215.5t-134.5 -193h-170q69 94 122 200t89 219t54 231t18 237q0 244 -72 475t-213 424z" />
+<glyph unicode="*" d="M82 1081l29 193l391 -111l-43 393h205l-43 -393l397 111l26 -193l-378 -28l245 -326l-178 -96l-176 358l-158 -358l-184 96l242 326z" />
+<glyph unicode="+" d="M102 647v150h387v389h150v-389h387v-150h-387v-385h-150v385h-387z" />
+<glyph unicode="," horiz-adv-x="512" d="M63 -264q15 61 29.5 127t28 131.5t24.5 128t19 115.5h198l15 -23q-14 -54 -33.5 -115t-43 -123t-49 -123.5t-50.5 -117.5h-138z" />
+<glyph unicode="-" horiz-adv-x="659" d="M82 465v168h496v-168h-496z" />
+<glyph unicode="." horiz-adv-x="549" d="M147 111q0 38 10 64.5t27 43t40 24t50 7.5q26 0 49.5 -7.5t40.5 -24t27 -43t10 -64.5q0 -37 -10 -63.5t-27 -43.5t-40.5 -25t-49.5 -8q-27 0 -50 8t-40 25t-27 43.5t-10 63.5z" />
+<glyph unicode="/" horiz-adv-x="764" d="M20 0l545 1462h178l-544 -1462h-179z" />
+<glyph unicode="0" d="M98 733q0 177 25.5 317t81 236.5t144 147.5t214.5 51q119 0 207 -50.5t146 -147t87 -236.5t29 -318q0 -177 -25.5 -317t-82 -237t-145.5 -148t-216 -51q-118 0 -205.5 51t-145 148t-86 237t-28.5 317zM283 733q0 -150 15 -262t48 -186.5t86.5 -112t130.5 -37.5t131 37 t88.5 111t50 186.5t15.5 263.5q0 150 -15.5 262t-50 186t-88.5 111t-131 37t-130.5 -37t-86.5 -111t-48 -186t-15 -262z" />
+<glyph unicode="1" d="M178 1163l383 299h150v-1462h-176v913q0 43 0.5 92t2 97.5t3 93t2.5 78.5q-17 -18 -30 -31t-26.5 -25t-28.5 -25.5t-36 -31.5l-148 -121z" />
+<glyph unicode="2" d="M96 0v156l350 381q75 81 134 148t100.5 131t63.5 128.5t22 140.5q0 59 -17 104t-48.5 76.5t-74.5 47.5t-96 16q-95 0 -171.5 -38.5t-145.5 -98.5l-102 119q40 36 86 67.5t99 54.5t112 36.5t124 13.5q96 0 173.5 -27t131.5 -77.5t83.5 -123t29.5 -163.5q0 -85 -26.5 -162 t-73 -151.5t-111 -149.5t-139.5 -156l-281 -299v-8h689v-166h-912z" />
+<glyph unicode="3" d="M82 59v170q87 -46 188.5 -71t194.5 -25q92 0 159 20t110.5 57t64 91t20.5 121q0 68 -26.5 116.5t-75.5 80t-119.5 46.5t-159.5 15h-133v151h133q81 0 144 20t105.5 57t64.5 88t22 112q0 52 -18 93t-51 69.5t-79 43.5t-102 15q-107 0 -188.5 -33.5t-155.5 -87.5l-92 125 q38 31 84.5 58t101.5 47.5t117.5 32.5t132.5 12q108 0 189.5 -27t136.5 -75.5t83 -115t28 -145.5q0 -73 -23 -133t-64.5 -104t-99.5 -72.5t-129 -40.5v-6q177 -22 269 -112.5t92 -235.5q0 -96 -32.5 -176t-98.5 -138t-167 -90t-239 -32q-109 0 -205.5 17t-181.5 62z" />
+<glyph unicode="4" d="M23 328v159l663 983h188v-976h213v-166h-213v-328h-176v328h-675zM201 494h497v356q0 56 1.5 117.5t3.5 120t4.5 109.5t3.5 85h-9q-7 -20 -17.5 -44.5t-23 -49t-25.5 -47.5t-24 -39z" />
+<glyph unicode="5" d="M131 59v172q33 -23 77.5 -41t93.5 -30t98.5 -18.5t91.5 -6.5q79 0 141 18.5t105 57.5t66 98t23 140q0 143 -88 218.5t-256 75.5q-27 0 -58.5 -2.5t-63 -6.5t-60 -8.5t-49.5 -8.5l-90 57l55 688h690v-166h-532l-39 -419q32 6 84.5 13t124.5 7q99 0 184.5 -27.5t149 -81.5 t99.5 -134t36 -185q0 -114 -34 -205t-101 -154t-165.5 -96.5t-226.5 -33.5q-51 0 -100.5 5t-95 14.5t-86.5 24.5t-74 35z" />
+<glyph unicode="6" d="M113 625q0 105 10.5 209t37 199.5t72.5 177.5t117 142.5t170 95t232 34.5q19 0 42 -1t46.5 -3.5t45 -6t38.5 -8.5v-155q-35 12 -79 18t-87 6q-90 0 -158.5 -21.5t-118.5 -60.5t-83.5 -93t-54.5 -119.5t-31 -139.5t-13 -154h12q20 36 48.5 67.5t66.5 54t85.5 35.5 t106.5 13q95 0 172 -29.5t131 -86.5t83.5 -139.5t29.5 -188.5q0 -114 -31 -205t-89 -154.5t-140 -97.5t-184 -34q-100 0 -187.5 39t-151.5 119t-101 201t-37 286zM295 506q0 -67 18.5 -133.5t55 -119.5t91.5 -86.5t128 -33.5q60 0 109.5 20.5t85.5 62t55.5 105t19.5 150.5 q0 70 -16.5 125.5t-49.5 94.5t-82.5 60t-115.5 21q-67 0 -122.5 -23.5t-94.5 -61t-60.5 -85.5t-21.5 -96z" />
+<glyph unicode="7" d="M90 1296v166h940v-145l-555 -1317h-194l563 1296h-754z" />
+<glyph unicode="8" d="M106 373q0 75 22.5 135t60.5 108t90 85t110 65q-49 31 -92 67.5t-74.5 81.5t-50 99.5t-18.5 120.5q0 87 33.5 152.5t90.5 109.5t131.5 66t155.5 22q84 0 158.5 -22t131 -66t89.5 -110t33 -154q0 -67 -20 -121t-55 -97.5t-83 -78t-104 -62.5q58 -31 113.5 -69t99 -85.5 t70 -106.5t26.5 -132q0 -92 -33.5 -166.5t-94 -126.5t-145 -80t-186.5 -28q-110 0 -195.5 27t-144 77.5t-89 123.5t-30.5 165zM285 371q0 -53 16 -97.5t50 -76t86 -49t124 -17.5q70 0 123.5 17.5t89.5 50t54 78.5t18 102q0 52 -19.5 94t-56 78t-87.5 68t-114 63l-30 14 q-126 -60 -190 -137.5t-64 -187.5zM332 1126q0 -57 17.5 -98t48.5 -73t74.5 -57.5t94.5 -49.5q48 22 90.5 48t74 59t49.5 75t18 96q0 101 -63 154t-173 53q-106 0 -168.5 -53t-62.5 -154z" />
+<glyph unicode="9" d="M106 991q0 114 31.5 205.5t89 155t140 97.5t184.5 34q101 0 188 -39t151 -119t101 -201.5t37 -285.5q0 -105 -10.5 -209.5t-37 -199.5t-72.5 -177.5t-117 -142.5t-170 -94.5t-232 -34.5q-19 0 -42 1t-46 3.5t-45 5.5t-39 8v156q35 -13 79 -19t87 -6q135 0 222 47 t138 127.5t72.5 187.5t26.5 226h-13q-20 -36 -48 -67t-66 -54t-86 -36t-107 -13q-95 0 -172 29.5t-131 86.5t-83.5 139.5t-29.5 188.5zM283 991q0 -70 16.5 -125.5t49.5 -94.5t82.5 -60t115.5 -21q68 0 123 23.5t94 61t60.5 85.5t21.5 96q0 67 -18.5 133.5t-55 120 t-91.5 86.5t-128 33q-60 0 -109.5 -20t-85.5 -62t-55.5 -105.5t-19.5 -150.5z" />
+<glyph unicode=":" horiz-adv-x="549" d="M147 111q0 38 10 64.5t27 43t40 24t50 7.5q26 0 49.5 -7.5t40.5 -24t27 -43t10 -64.5q0 -37 -10 -63.5t-27 -43.5t-40.5 -25t-49.5 -8q-27 0 -50 8t-40 25t-27 43.5t-10 63.5zM147 987q0 39 10 65.5t27 43t40 23.5t50 7q26 0 49.5 -7t40.5 -23.5t27 -43t10 -65.5 q0 -37 -10 -63t-27 -43t-40.5 -25t-49.5 -8q-27 0 -50 8t-40 25t-27 43t-10 63z" />
+<glyph unicode=";" horiz-adv-x="549" d="M63 -264q15 61 29.5 127t28 131.5t24.5 128t19 115.5h198l15 -23q-14 -54 -33.5 -115t-43 -123t-49 -123.5t-50.5 -117.5h-138zM147 987q0 39 10 65.5t27 43t40 23.5t50 7q26 0 49.5 -7t40.5 -23.5t27 -43t10 -65.5q0 -37 -10 -63t-27 -43t-40.5 -25t-49.5 -8 q-27 0 -50 8t-40 25t-27 43t-10 63z" />
+<glyph unicode="&#x3c;" d="M102 662v102l924 481v-160l-735 -364l735 -322v-161z" />
+<glyph unicode="=" d="M102 442v150h924v-150h-924zM102 852v149h924v-149h-924z" />
+<glyph unicode="&#x3e;" d="M102 238v161l736 322l-736 364v160l924 -481v-102z" />
+<glyph unicode="?" horiz-adv-x="872" d="M37 1382q81 42 175 71.5t191 29.5q93 0 167.5 -25.5t126.5 -73.5t80 -117.5t28 -156.5q0 -67 -13.5 -119.5t-40.5 -97.5t-67 -87t-94 -89q-52 -45 -85 -78.5t-52 -65t-26 -64.5t-7 -77v-18h-139v37q0 57 7.5 103t27 86t52.5 78.5t83 80.5q48 41 82 74.5t55.5 68t32 74 t10.5 92.5q0 48 -15 87.5t-43.5 68t-71 44t-98.5 15.5q-83 0 -158 -26t-145 -60zM233 111q0 38 10 64.5t27 43t40 24t50 7.5q26 0 49.5 -7.5t40.5 -24t27 -43t10 -64.5q0 -37 -10 -63.5t-27 -43.5t-40.5 -25t-49.5 -8q-27 0 -50 8t-40 25t-27 43.5t-10 63.5z" />
+<glyph unicode="@" horiz-adv-x="1774" d="M109 575q0 188 59 350.5t168.5 281.5t265 187t348.5 68q156 0 287 -50.5t226.5 -145t148.5 -230t53 -305.5q0 -62 -9.5 -124.5t-28 -119t-47 -105t-66.5 -84.5t-86.5 -56.5t-106.5 -20.5q-45 0 -81.5 15t-62.5 40t-42.5 57.5t-22.5 67.5h-4q-18 -37 -45 -70t-62.5 -57.5 t-80 -38.5t-97.5 -14q-77 0 -136.5 28t-100.5 78.5t-62.5 121.5t-21.5 157q0 101 29.5 185t85 145t134.5 95t177 34q45 0 90 -4t86 -11t75.5 -15.5t57.5 -16.5l-23 -416q-1 -22 -1.5 -35.5t-0.5 -21.5v-12v-7q0 -53 10.5 -87t27.5 -54t38.5 -27.5t44.5 -7.5q46 0 81 30.5 t58.5 82.5t35.5 122t12 148q0 142 -43 252.5t-119 186.5t-180.5 115.5t-227.5 39.5q-169 0 -298 -55.5t-216.5 -155t-132.5 -236t-45 -298.5q0 -151 39.5 -268t116 -197t190 -121t260.5 -41q61 0 120.5 7t115 19t105.5 27.5t93 32.5v-141q-86 -38 -194 -60t-238 -22 q-179 0 -319.5 51t-238 148.5t-148.5 238t-51 319.5zM662 602q0 -133 50.5 -192.5t135.5 -59.5q55 0 94 22.5t64 64t38 99t17 126.5l14 253q-28 8 -66.5 14.5t-80.5 6.5q-74 0 -124.5 -29t-82 -76t-45.5 -107t-14 -122z" />
+<glyph unicode="A" horiz-adv-x="1245" d="M0 0l537 1468h170l538 -1468h-190l-160 453h-545l-162 -453h-188zM410 618h426l-148 424q-6 18 -14.5 44t-17.5 56t-18 62.5t-17 63.5q-7 -31 -16 -64t-18 -63.5t-17.5 -56t-14.5 -42.5z" />
+<glyph unicode="B" horiz-adv-x="1272" d="M199 0v1462h399q128 0 225.5 -19.5t163 -63t98.5 -114t33 -173.5q0 -62 -19.5 -116t-56.5 -95t-91.5 -68.5t-123.5 -36.5v-10q69 -12 129.5 -34.5t105.5 -62t71 -99.5t26 -146q0 -100 -32.5 -178.5t-94 -133t-149.5 -83.5t-199 -29h-485zM385 158h266q88 0 147.5 20 t96 56t52.5 86.5t16 111.5q0 56 -16.5 103t-54 80.5t-99.5 52t-154 18.5h-254v-528zM385 842h244q84 0 141 15t92 44.5t50.5 74t15.5 103.5q0 120 -77 172t-243 52h-223v-461z" />
+<glyph unicode="C" horiz-adv-x="1235" d="M125 733q0 166 43.5 304t128 237t209.5 154t287 55q108 0 206 -22t177 -64l-78 -156q-63 32 -137 55t-168 23q-107 0 -194 -40.5t-148.5 -116.5t-95 -185t-33.5 -246q0 -141 29.5 -250.5t88.5 -184.5t147 -114t206 -39q89 0 169 17.5t158 40.5v-162q-39 -15 -78 -26.5 t-81.5 -18.5t-91 -10.5t-107.5 -3.5q-164 0 -284 54t-198.5 153t-116.5 238t-38 308z" />
+<glyph unicode="D" horiz-adv-x="1401" d="M199 0v1462h407q153 0 277 -46t211 -136.5t134.5 -224.5t47.5 -310q0 -185 -48 -324.5t-139 -233t-223.5 -140.5t-300.5 -47h-366zM385 160h162q264 0 398 146t134 433q0 146 -33 252.5t-96 175.5t-155 102.5t-209 33.5h-201v-1143z" />
+<glyph unicode="E" horiz-adv-x="1081" d="M199 0v1462h759v-164h-573v-452h535v-162h-535v-520h573v-164h-759z" />
+<glyph unicode="F" horiz-adv-x="1006" d="M199 0v1462h759v-164h-573v-516h535v-164h-535v-618h-186z" />
+<glyph unicode="G" horiz-adv-x="1413" d="M125 733q0 172 47.5 311t138.5 236.5t224.5 150t304.5 52.5q111 0 213 -22t190 -64l-72 -162q-36 17 -77.5 32t-85.5 26.5t-90.5 18.5t-92.5 7q-122 0 -216 -40.5t-157.5 -116.5t-96.5 -185t-33 -246q0 -130 27.5 -238t87.5 -186t155 -121t229 -43q44 0 80.5 2.5 t67.5 6.5t58.5 9.5t53.5 10.5v436h-299v164h484v-717q-55 -18 -111 -32t-115 -23.5t-124 -14.5t-140 -5q-157 0 -278 52.5t-204 150t-126 237t-43 313.5z" />
+<glyph unicode="H" horiz-adv-x="1436" d="M199 0v1462h186v-616h666v616h186v-1462h-186v682h-666v-682h-186z" />
+<glyph unicode="I" horiz-adv-x="694" d="M82 0v102l172 41v1176l-172 41v102h530v-102l-172 -41v-1176l172 -41v-102h-530z" />
+<glyph unicode="J" horiz-adv-x="555" d="M-184 -205q34 -9 73 -14.5t84 -5.5q37 0 74.5 9.5t68 34.5t49.5 69t19 112v1462h187v-1442q0 -105 -29.5 -182t-82 -127.5t-126 -75t-162.5 -24.5q-51 0 -89 6.5t-66 17.5v160z" />
+<glyph unicode="K" horiz-adv-x="1186" d="M199 0v1462h186v-731l121 168l452 563h209l-520 -637l539 -825h-211l-451 698l-139 -114v-584h-186z" />
+<glyph unicode="L" horiz-adv-x="1006" d="M199 0v1462h186v-1296h573v-166h-759z" />
+<glyph unicode="M" horiz-adv-x="1782" d="M199 0v1462h276l412 -1192h6l414 1192h276v-1462h-186v887q0 52 2 119t5 128q4 71 7 144h-8l-447 -1278h-153l-443 1280h-8q6 -74 10 -147q4 -63 6.5 -132.5t2.5 -126.5v-874h-172z" />
+<glyph unicode="N" horiz-adv-x="1493" d="M199 0v1462h213l716 -1204h7q-3 76 -7 150q0 32 -2 66l-4 66q-2 34 -2 65v57v800h174v-1462h-215l-719 1210h-8q6 -77 10 -153q4 -65 6.5 -136t2.5 -128v-793h-172z" />
+<glyph unicode="O" horiz-adv-x="1520" d="M125 735q0 170 38 308.5t117 236.5t199 151.5t283 53.5q155 0 272.5 -53.5t197.5 -152t120.5 -237t40.5 -309.5q0 -169 -40.5 -308t-120.5 -238t-198.5 -153t-273.5 -54q-163 0 -282.5 54t-198 153t-116.5 238.5t-38 309.5zM322 733q0 -137 26 -246.5t79.5 -186t136 -117 t196.5 -40.5t196.5 40.5t136 117t78.5 186t25 246.5q0 138 -25 247t-78 184.5t-135 116t-196 40.5t-197 -40.5t-137 -116t-80 -184.5t-26 -247z" />
+<glyph unicode="P" horiz-adv-x="1180" d="M199 0v1462h362q134 0 231 -28.5t160 -83t93 -134.5t30 -182q0 -91 -27.5 -175t-90.5 -148.5t-166.5 -103t-255.5 -38.5h-150v-569h-186zM385 727h129q93 0 162.5 16t115 51.5t68.5 92t23 137.5q0 142 -82 210.5t-256 68.5h-160v-576z" />
+<glyph unicode="Q" horiz-adv-x="1518" d="M125 735q0 170 38 308.5t117 236.5t199 151.5t283 53.5q155 0 272.5 -53.5t197.5 -152t120.5 -237t40.5 -309.5q0 -131 -24.5 -244t-72 -203.5t-118.5 -156.5t-164 -104q43 -94 111.5 -165.5t158.5 -131.5l-121 -142q-103 73 -189.5 172t-137.5 226q-17 -2 -37.5 -3 t-38.5 -1q-163 0 -282.5 54t-198 153t-116.5 238.5t-38 309.5zM322 733q0 -137 26 -246.5t79.5 -186t136 -117t196.5 -40.5t196.5 40.5t136 117t78.5 186t25 246.5q0 138 -25 247t-78 184.5t-135 116t-196 40.5t-197 -40.5t-137 -116t-80 -184.5t-26 -247z" />
+<glyph unicode="R" horiz-adv-x="1208" d="M199 0v1462h356q266 0 393 -103t127 -312q0 -87 -24.5 -152t-65 -111.5t-92.5 -77.5t-107 -51l398 -655h-219l-351 604h-229v-604h-186zM385 762h164q90 0 153 17.5t103.5 52t59 86t18.5 120.5q0 72 -20.5 122t-62 82t-105 46.5t-150.5 14.5h-160v-541z" />
+<glyph unicode="S" horiz-adv-x="1063" d="M104 49v178q34 -16 77.5 -31.5t91.5 -27.5t99 -19.5t101 -7.5q160 0 236.5 60t76.5 172q0 54 -14.5 94t-51 73.5t-97.5 65t-154 68.5q-89 35 -154.5 76.5t-108 93.5t-63 118t-20.5 150q0 88 32 157t90 116.5t138.5 72.5t177.5 25q119 0 214 -22.5t169 -57.5l-67 -156 q-65 29 -147.5 50.5t-170.5 21.5q-122 0 -189 -56.5t-67 -152.5q0 -57 15 -98.5t50 -75t92.5 -63t141.5 -62.5q91 -36 159.5 -74t114.5 -86t69.5 -111t23.5 -149q0 -97 -34.5 -173.5t-98.5 -129.5t-156 -80.5t-207 -27.5q-111 0 -207.5 17.5t-161.5 51.5z" />
+<glyph unicode="T" horiz-adv-x="1063" d="M20 1298v164h1022v-164h-417v-1298h-187v1298h-418z" />
+<glyph unicode="U" horiz-adv-x="1430" d="M184 520v942h187v-952q0 -175 86.5 -271t261.5 -96q89 0 153 27t105 76t61 117t21 149v952h186v-948q0 -114 -33 -212t-99.5 -170t-167 -113t-236.5 -41q-128 0 -226 38.5t-164.5 109.5t-100.5 170.5t-34 221.5z" />
+<glyph unicode="V" horiz-adv-x="1163" d="M0 1462h197l295 -927q29 -91 50 -175.5t38 -158.5q15 74 38 158.5t54 181.5l293 921h198l-489 -1462h-187z" />
+<glyph unicode="W" horiz-adv-x="1810" d="M20 1462h197l223 -889q12 -46 22 -95.5t18.5 -98.5t15.5 -94.5t12 -83.5q5 37 12.5 86t17.5 103t21.5 109.5t24.5 104.5l225 858h197l229 -856q15 -56 29.5 -112t27 -108.5t22 -99.5t15.5 -85q4 38 10 83t14 94.5t17.5 101t20.5 100.5l200 882h199l-367 -1462h-188 l-254 938q-14 51 -27 105t-24 101q-12 55 -23 107q-11 -51 -22 -106q-10 -47 -22.5 -103t-26.5 -110l-242 -932h-188z" />
+<glyph unicode="X" horiz-adv-x="1120" d="M0 0l453 764l-422 698h198l332 -559l334 559h190l-421 -692l456 -770h-211l-354 635l-367 -635h-188z" />
+<glyph unicode="Y" horiz-adv-x="1079" d="M0 1462h203l336 -739l340 739h200l-446 -893v-569h-187v559z" />
+<glyph unicode="Z" horiz-adv-x="1104" d="M82 0v145l711 1151h-691v166h899v-145l-710 -1151h731v-166h-940z" />
+<glyph unicode="[" horiz-adv-x="621" d="M164 -324v1786h405v-149h-223v-1487h223v-150h-405z" />
+<glyph unicode="\" horiz-adv-x="764" d="M23 1462h178l544 -1462h-178z" />
+<glyph unicode="]" horiz-adv-x="621" d="M51 -174h223v1487h-223v149h406v-1786h-406v150z" />
+<glyph unicode="^" horiz-adv-x="1090" d="M41 549l459 924h102l447 -924h-161l-337 735l-349 -735h-161z" />
+<glyph unicode="_" horiz-adv-x="842" d="M-4 -184h850v-140h-850v140z" />
+<glyph unicode="`" horiz-adv-x="1182" d="M393 1548v21h219q16 -34 37.5 -74.5t44.5 -81t47 -78.5t45 -67v-27h-120q-35 28 -76 69.5t-79.5 85.5t-70 84.5t-47.5 67.5z" />
+<glyph unicode="a" horiz-adv-x="1087" d="M94 307q0 164 115.5 252t351.5 96l184 7v69q0 67 -14.5 112t-42 72.5t-68 39.5t-92.5 12q-83 0 -154.5 -24t-137.5 -58l-64 137q74 40 165 68t191 28q102 0 176.5 -20.5t123 -65t72.5 -113.5t24 -167v-752h-131l-37 152h-8q-33 -45 -66 -77.5t-72 -53.5t-87 -31t-111 -10 q-69 0 -127 19.5t-100.5 60t-66.5 102t-24 145.5zM283 305q0 -92 48.5 -135t127.5 -43q61 0 113 19t90 57.5t59.5 97t21.5 137.5v99l-143 -7q-90 -4 -151 -20t-97.5 -44.5t-52.5 -69t-16 -91.5z" />
+<glyph unicode="b" horiz-adv-x="1200" d="M174 0v1556h182v-376q0 -35 -1 -74.5t-3 -73.5q-2 -40 -4 -78h8q23 35 52 65t67.5 52t86.5 34.5t108 12.5q94 0 171 -36t131.5 -107.5t84.5 -177.5t30 -246q0 -141 -30 -247.5t-84.5 -178.5t-131.5 -108.5t-171 -36.5q-59 0 -107 13t-86.5 34.5t-68 50.5t-52.5 61h-12 l-37 -139h-133zM356 551q0 -101 13.5 -179.5t46 -132t86.5 -81t135 -27.5q135 0 198.5 109t63.5 313q0 208 -63.5 311t-200.5 103q-80 0 -133.5 -25.5t-86 -77.5t-46 -130t-13.5 -183z" />
+<glyph unicode="c" horiz-adv-x="948" d="M113 543q0 157 38 266.5t104.5 178t155.5 99.5t191 31q78 0 152.5 -17t124.5 -42l-54 -154q-23 10 -51 19.5t-58 17t-59 12t-55 4.5q-157 0 -229 -100.5t-72 -312.5q0 -211 72.5 -308.5t220.5 -97.5q81 0 146.5 18.5t119.5 43.5v-162q-54 -29 -115.5 -44t-150.5 -15 q-101 0 -189 31.5t-153 100t-102 175t-37 256.5z" />
+<glyph unicode="d" horiz-adv-x="1200" d="M113 547q0 141 30 247.5t85 178.5t132 108.5t170 36.5q59 0 107 -13t86.5 -35t68.5 -51t52 -61h12q-3 34 -6 65q-2 26 -4 53.5t-2 43.5v436h182v-1556h-147l-27 147h-8q-22 -34 -51.5 -64.5t-68 -53.5t-86.5 -36t-108 -13q-93 0 -170 36t-132 107.5t-85 177.5t-30 246z M301 545q0 -209 63.5 -311.5t200.5 -102.5q76 0 128.5 23t85 70t48 117.5t17.5 164.5v41q0 101 -13.5 179.5t-46 132t-86.5 81t-135 27.5q-135 0 -198.5 -109t-63.5 -313z" />
+<glyph unicode="e" horiz-adv-x="1096" d="M113 541q0 136 33 243t93 181.5t143.5 113.5t184.5 39q99 0 178 -35.5t134 -100t84.5 -155t29.5 -200.5v-113h-692q5 -193 81.5 -284t227.5 -91q51 0 94.5 5t84 14.5t78.5 24t77 32.5v-162q-40 -19 -78.5 -33t-79 -23t-84 -13t-94.5 -4q-110 0 -201 37t-156.5 108 t-101.5 176t-36 240zM305 662h492q0 68 -13.5 124.5t-42 96.5t-72.5 62t-106 22q-114 0 -180.5 -78t-77.5 -227z" />
+<glyph unicode="f" horiz-adv-x="674" d="M29 961v75l194 68v96q0 107 22.5 177.5t65 112.5t104.5 59.5t140 17.5q59 0 108.5 -11.5t88.5 -25.5l-47 -141q-31 11 -67.5 19.5t-76.5 8.5t-69 -9.5t-48 -33.5t-28.5 -65.5t-9.5 -106.5v-104h245v-137h-245v-961h-183v961h-194z" />
+<glyph unicode="g" horiz-adv-x="1061" d="M37 -186q0 60 19.5 105.5t52.5 78.5t76.5 54t90.5 32q-42 19 -69 60t-27 94q0 61 32 105.5t101 86.5q-43 18 -78.5 49.5t-60 72t-38 88.5t-13.5 99q0 89 25 159t74 119t122 75t170 26q37 0 76.5 -5.5t66.5 -14.5h363v-113l-197 -27q28 -35 47 -89.5t19 -123.5 q0 -76 -23.5 -140.5t-71 -111.5t-117.5 -73.5t-163 -26.5q-22 0 -44 0.5t-36 3.5q-17 -10 -33.5 -22.5t-30 -28.5t-22 -36t-8.5 -44q0 -27 12 -43.5t32.5 -25.5t48.5 -12t59 -3h176q93 0 157 -23.5t104.5 -63.5t58.5 -94.5t18 -115.5q0 -88 -32.5 -158t-99.5 -118.5 t-169.5 -74.5t-241.5 -26q-107 0 -187 21t-133 61t-79.5 96.5t-26.5 127.5zM209 -180q0 -37 13 -69t42.5 -55t78 -36.5t120.5 -13.5q186 0 278.5 57.5t92.5 165.5q0 46 -12 75t-39.5 45.5t-72.5 22.5t-110 6h-176q-35 0 -73 -8t-69.5 -30t-52 -60.5t-20.5 -99.5zM301 745 q0 -115 54 -171t153 -56q100 0 151.5 55.5t51.5 174.5q0 123 -52.5 181t-152.5 58q-99 0 -152 -60t-53 -182z" />
+<glyph unicode="h" horiz-adv-x="1206" d="M174 0v1556h182v-462l-8 -144h10q25 43 59.5 74.5t75.5 52.5t87 31t94 10q183 0 275.5 -95.5t92.5 -305.5v-717h-182v707q0 130 -52.5 195t-164.5 65q-81 0 -136 -26t-88.5 -77t-48 -125t-14.5 -170v-569h-182z" />
+<glyph unicode="i" horiz-adv-x="530" d="M160 1395q0 60 30.5 87t75.5 27q22 0 41.5 -6.5t34 -20.5t23 -35.5t8.5 -51.5q0 -58 -31.5 -86.5t-75.5 -28.5q-45 0 -75.5 28t-30.5 87zM174 0v1098h182v-1098h-182z" />
+<glyph unicode="j" horiz-adv-x="530" d="M-68 -319q26 -10 53 -15.5t62 -5.5q27 0 50 7.5t40.5 27t27 52t9.5 83.5v1268h182v-1256q0 -77 -17 -138.5t-53 -105t-90.5 -67t-129.5 -23.5q-48 0 -79.5 7t-54.5 18v148zM160 1395q0 60 30.5 87t75.5 27q22 0 41.5 -6.5t34 -20.5t23 -35.5t8.5 -51.5q0 -58 -31.5 -86.5 t-75.5 -28.5q-45 0 -75.5 28t-30.5 87z" />
+<glyph unicode="k" horiz-adv-x="1016" d="M174 0v1556h180v-714l-16 -275h4l135 170l293 361h211l-401 -475l428 -623h-209l-336 504l-109 -82v-422h-180z" />
+<glyph unicode="l" horiz-adv-x="530" d="M174 0v1556h182v-1556h-182z" />
+<glyph unicode="m" horiz-adv-x="1835" d="M174 0v1098h148l26 -148h10q24 43 57 74.5t72.5 52.5t84 31t90.5 10q120 0 199.5 -44t117.5 -138h8q26 47 62.5 81t80 56.5t91.5 33.5t98 11q175 0 263.5 -95.5t88.5 -305.5v-717h-182v707q0 130 -50 195t-155 65q-73 0 -124 -23.5t-83.5 -69t-47.5 -113t-15 -155.5v-606 h-183v707q0 130 -49.5 195t-154.5 65q-77 0 -129 -26t-83.5 -77t-45 -125t-13.5 -170v-569h-182z" />
+<glyph unicode="n" horiz-adv-x="1206" d="M174 0v1098h148l26 -148h10q25 43 59.5 74.5t75.5 52.5t87 31t94 10q183 0 275.5 -95.5t92.5 -305.5v-717h-182v707q0 130 -52.5 195t-164.5 65q-81 0 -136 -26t-88.5 -77t-48 -125t-14.5 -170v-569h-182z" />
+<glyph unicode="o" horiz-adv-x="1182" d="M113 551q0 136 33.5 241.5t95.5 178t151.5 110t200.5 37.5q103 0 190 -37.5t150.5 -110t99 -178t35.5 -241.5q0 -137 -33.5 -243.5t-96 -179t-151.5 -110.5t-200 -38q-103 0 -190 38t-150.5 110.5t-99 179t-35.5 243.5zM301 551q0 -209 68.5 -314.5t222.5 -105.5 t221.5 105.5t67.5 314.5t-68.5 312.5t-222.5 103.5t-221.5 -103.5t-67.5 -312.5z" />
+<glyph unicode="p" horiz-adv-x="1200" d="M174 -492v1590h148l26 -148h8q23 35 52 65.5t67.5 53t86.5 36t108 13.5q94 0 171 -36t131.5 -107.5t84.5 -177.5t30 -246q0 -141 -30 -247.5t-84.5 -178.5t-131.5 -108.5t-171 -36.5q-59 0 -107 13t-86.5 34.5t-68 50.5t-52.5 61h-12q3 -34 6 -65q2 -26 4 -53.5t2 -43.5 v-469h-182zM356 551q0 -101 13.5 -179.5t46 -132t86.5 -81t135 -27.5q135 0 198.5 109t63.5 313q0 208 -63.5 311t-200.5 103q-76 0 -128.5 -23t-85 -70t-48 -117t-17.5 -165v-41z" />
+<glyph unicode="q" horiz-adv-x="1200" d="M113 547q0 141 30 247.5t85 178.5t132 108.5t170 36.5q59 0 107 -13.5t86 -36t68 -53t53 -65.5h8l27 148h147v-1590h-182v469q0 19 2 48t4 56q3 32 6 66h-12q-22 -34 -51.5 -64.5t-68 -53.5t-86.5 -36t-108 -13q-93 0 -170 36t-132 107.5t-85 177.5t-30 246zM301 545 q0 -209 63.5 -311.5t200.5 -102.5q76 0 128.5 23t85 70t48 117.5t17.5 164.5v41q0 101 -13.5 179.5t-46 132t-86.5 81t-135 27.5q-135 0 -198.5 -109t-63.5 -313z" />
+<glyph unicode="r" horiz-adv-x="817" d="M174 0v1098h148l22 -201h8q25 43 53.5 83t64 70.5t79.5 49t100 18.5q29 0 65 -2.5t62 -7.5l-24 -168q-28 5 -57.5 8.5t-55.5 3.5q-63 0 -115 -25.5t-89.5 -73t-58 -114t-20.5 -147.5v-592h-182z" />
+<glyph unicode="s" horiz-adv-x="924" d="M90 49v166q31 -16 69 -31.5t80 -27.5t86.5 -19.5t88.5 -7.5q65 0 110.5 11t74 31.5t41.5 50t13 65.5q0 31 -10 56t-36.5 49.5t-72.5 49.5t-118 56t-129.5 61t-97.5 67t-61.5 85.5t-21.5 115.5q0 70 27.5 124.5t77.5 91.5t120 56t156 19q97 0 177.5 -21t152.5 -55 l-63 -147q-65 29 -133.5 50.5t-139.5 21.5q-102 0 -151 -33.5t-49 -95.5q0 -35 11.5 -61t39.5 -49t75 -46.5t117 -52.5q72 -30 128.5 -60t96.5 -67.5t61 -85.5t21 -115q0 -80 -29 -140t-83.5 -100.5t-131.5 -60.5t-173 -20q-109 0 -187 17.5t-137 51.5z" />
+<glyph unicode="t" horiz-adv-x="694" d="M33 961v81l155 78l78 230h105v-252h276v-137h-276v-637q0 -97 31.5 -146t103.5 -49q18 0 40.5 2t43.5 5t38.5 7t26.5 7v-138q-13 -6 -33 -12t-44 -10.5t-50 -7t-51 -2.5q-62 0 -115 16t-91.5 55t-60.5 105.5t-22 167.5v637h-155z" />
+<glyph unicode="u" horiz-adv-x="1206" d="M164 381v717h182v-707q0 -130 53 -195t164 -65q81 0 136 26t88.5 76.5t48 124.5t14.5 170v570h182v-1098h-147l-27 147h-10q-25 -43 -59.5 -74.5t-75.5 -52t-87 -30.5t-94 -10q-91 0 -160 23t-115 72t-69.5 125t-23.5 181z" />
+<glyph unicode="v" horiz-adv-x="981" d="M0 1098h188l199 -611q11 -33 26 -85t30 -106t27.5 -102t16.5 -73h7q5 25 17 73t27 102t30 106t26 85l199 611h188l-375 -1098h-231z" />
+<glyph unicode="w" horiz-adv-x="1528" d="M20 1098h191l131 -584q10 -45 20 -97.5t19 -104t16 -97t11 -74.5h6q5 26 13.5 69.5t19 92t21.5 96t21 80.5l179 619h196l172 -619q9 -34 20.5 -80t22.5 -93.5t20 -91.5t13 -73h6q3 26 9.5 69.5t15.5 95.5t19.5 106.5t21.5 101.5l137 584h186l-284 -1098h-215l-168 616 q-4 18 -10 40.5t-12 47.5t-12.5 51t-12.5 51q-14 58 -29 120h-6q-14 -63 -27 -121q-11 -50 -23.5 -103t-23.5 -90l-172 -612h-211z" />
+<glyph unicode="x" horiz-adv-x="1024" d="M35 0l373 563l-353 535h207l250 -410l250 410h207l-355 -535l373 -563h-207l-268 436l-270 -436h-207z" />
+<glyph unicode="y" horiz-adv-x="1001" d="M10 1098h189l215 -613q14 -40 28.5 -84t27 -88t21.5 -85t13 -76h6q5 25 16 68t24.5 91.5t28 95.5t25.5 80l199 611h188l-434 -1241q-28 -81 -60.5 -145.5t-75.5 -109.5t-101 -69.5t-138 -24.5q-52 0 -90 5.5t-65 11.5v145q21 -5 53 -8.5t67 -3.5q48 0 83 11.5t61 33.5 t44.5 54t33.5 73l57 160z" />
+<glyph unicode="z" horiz-adv-x="903" d="M82 0v125l536 836h-503v137h688v-146l-524 -815h542v-137h-739z" />
+<glyph unicode="{" horiz-adv-x="725" d="M61 492v155q125 0 190.5 43t65.5 146v333q0 78 27 133t74.5 90.5t113 52t142.5 17.5v-149q-40 -1 -72.5 -7.5t-55 -24t-34.5 -48t-12 -78.5v-332q0 -105 -59.5 -166.5t-174.5 -81.5v-12q115 -20 174.5 -81t59.5 -167v-331q0 -48 12 -78.5t34.5 -48t55 -24t72.5 -7.5v-150 q-77 1 -142.5 17.5t-113 52t-74.5 90.5t-27 133v334q0 103 -65.5 146t-190.5 43z" />
+<glyph unicode="|" d="M489 -492v2048h150v-2048h-150z" />
+<glyph unicode="}" horiz-adv-x="725" d="M51 -174q40 1 72.5 7.5t55 24t34.5 48t12 78.5v331q0 106 59.5 167t174.5 81v12q-115 20 -174.5 81.5t-59.5 166.5v332q0 48 -12 78.5t-34.5 48t-55 24t-72.5 7.5v149q77 -1 142.5 -17.5t113 -52t74.5 -90.5t27 -133v-333q0 -52 16.5 -88t49 -58.5t80.5 -32.5t110 -10 v-155q-125 0 -190.5 -43t-65.5 -146v-334q0 -78 -27 -133t-74.5 -90.5t-113 -52t-142.5 -17.5v150z" />
+<glyph unicode="~" d="M102 586v162q100 108 248 108q29 0 54 -2.5t52.5 -9t61 -19t80.5 -32.5q37 -16 64.5 -27t51 -17.5t43.5 -9t42 -2.5q28 0 58 9.5t59.5 26t57.5 38.5t52 47v-162q-99 -108 -248 -108q-29 0 -54 2.5t-52.5 9t-61 19t-80.5 32.5q-37 16 -64.5 27t-50 17.5t-43 9t-42.5 2.5 q-28 0 -58 -9.5t-59.5 -26t-57.5 -38.5t-53 -47z" />
+<glyph unicode="&#xa1;" horiz-adv-x="551" d="M147 979q0 37 10 63t27.5 43t40.5 25t49 8q27 0 50 -8t40.5 -25t27 -43t9.5 -63q0 -38 -9.5 -64.5t-27 -43t-40.5 -24t-50 -7.5q-26 0 -49 7.5t-40.5 24t-27.5 43t-10 64.5zM162 -373l51 1049h121l51 -1049h-223z" />
+<glyph unicode="&#xa2;" d="M188 743q0 141 26.5 242.5t75 169.5t118 105.5t155.5 50.5v172h137v-164q72 -3 140 -19.5t114 -39.5l-53 -154q-23 10 -51 19.5t-58 17t-59.5 12t-54.5 4.5q-157 0 -229 -101t-72 -313q0 -210 72.5 -307.5t220.5 -97.5q81 0 146.5 18.5t119.5 42.5v-161q-50 -28 -105 -43 t-131 -17v-200h-137v206q-87 13 -156 50.5t-118 104t-75 166t-26 236.5z" />
+<glyph unicode="&#xa3;" d="M68 0v154q44 11 80.5 31.5t63 54.5t41.5 82.5t15 115.5v213h-198v137h198v324q0 87 29.5 155.5t82 116t125.5 72.5t161 25q106 0 193 -22.5t153 -57.5l-66 -144q-56 29 -126.5 50.5t-145.5 21.5q-48 0 -89 -13.5t-71 -43t-46.5 -76.5t-16.5 -113v-295h376v-137h-376v-211 q0 -62 -11.5 -106.5t-31 -76.5t-45 -53.5t-52.5 -37.5h748v-166h-991z" />
+<glyph unicode="&#xa4;" d="M123 1065l98 98l127 -129q47 32 101 50t114 18t113.5 -18t99.5 -50l129 129l99 -96l-130 -129q31 -46 49.5 -100.5t18.5 -114.5t-17.5 -115t-50.5 -100l127 -127l-96 -96l-129 127q-46 -31 -99.5 -48.5t-113.5 -17.5t-115 18t-100 50l-127 -127l-96 96l127 127 q-31 45 -48.5 99t-17.5 114q0 59 17.5 112.5t48.5 100.5zM324 723q0 -50 18.5 -93.5t51 -76t76 -51.5t93.5 -19q51 0 95.5 19t77.5 51.5t52 76t19 93.5q0 51 -19 95.5t-52 77.5t-77.5 52t-95.5 19q-50 0 -93.5 -19t-76 -52t-51 -77.5t-18.5 -95.5z" />
+<glyph unicode="&#xa5;" d="M29 1462h192l342 -739l346 739h191l-385 -768h239v-137h-301v-158h301v-137h-301v-262h-178v262h-301v137h301v158h-301v137h234z" />
+<glyph unicode="&#xa6;" d="M489 289h150v-781h-150v781zM489 776v780h150v-780h-150z" />
+<glyph unicode="&#xa7;" horiz-adv-x="995" d="M121 55v158q31 -15 69 -30t80 -26.5t86.5 -18.5t87.5 -7q69 0 115.5 12t74 31.5t39 45t11.5 52.5q0 29 -8.5 51.5t-34 45t-72.5 47t-123 55.5q-73 31 -130.5 62t-97.5 70t-60.5 89t-20.5 117q0 51 13 92.5t35.5 73.5t51.5 54.5t60 37.5q-75 38 -117.5 95t-42.5 141 q0 61 27.5 110t77.5 83t120 52.5t156 18.5q97 0 175.5 -20t150.5 -52l-56 -139q-65 28 -135 47.5t-141 19.5q-99 0 -150 -29.5t-51 -86.5q0 -27 12 -50t40.5 -45t76 -45.5t117.5 -52.5q72 -28 128.5 -60.5t95.5 -71.5t60 -87.5t21 -110.5q0 -52 -12 -94.5t-32.5 -76.5 t-46.5 -58.5t-54 -40.5q69 -38 107 -92.5t38 -132.5q0 -71 -29.5 -126.5t-83.5 -94t-131.5 -58.5t-173.5 -20q-108 0 -186 16.5t-137 48.5zM291 831q0 -37 14 -68.5t45.5 -60.5t82 -56.5t122.5 -57.5l35 -15q20 13 40.5 31t37 41t27 51t10.5 62q0 38 -13 70t-45.5 61.5 t-86.5 58t-136 58.5q-25 -8 -48.5 -23.5t-42.5 -38t-30.5 -51.5t-11.5 -62z" />
+<glyph unicode="&#xa8;" horiz-adv-x="1182" d="M307 1395q0 54 28 78t68 24q39 0 68 -24.5t29 -77.5t-29 -78t-68 -25q-40 0 -68 25t-28 78zM682 1395q0 54 28 78t68 24q19 0 36.5 -6t30.5 -18.5t21 -31.5t8 -46q0 -53 -29 -78t-67 -25q-40 0 -68 25t-28 78z" />
+<glyph unicode="&#xa9;" horiz-adv-x="1704" d="M100 731q0 104 27 200t75.5 179.5t117.5 152.5t152.5 117.5t179.5 75.5t200 27t200 -27t179.5 -75.5t152.5 -117.5t117.5 -152.5t75.5 -179.5t27 -200t-27 -200t-75.5 -179.5t-117.5 -152t-152.5 -117.5t-179.5 -75.5t-200 -26.5t-200 26.5t-179.5 75.5t-152.5 117.5 t-117.5 152t-75.5 179.5t-27 200zM209 731q0 -133 50.5 -250t138 -204.5t204.5 -138t250 -50.5t250 50.5t204.5 138t138 204.5t50.5 250t-50.5 250t-138 204.5t-204.5 138t-250 50.5t-250 -50.5t-204.5 -138t-138 -204.5t-50.5 -250zM479 733q0 101 27 184.5t79.5 143.5 t129 93.5t176.5 33.5q63 0 129 -16.5t125 -45.5l-62 -127q-52 26 -100.5 40t-91.5 14q-61 0 -108 -22t-79 -63.5t-48.5 -101.5t-16.5 -135q0 -78 14.5 -138t45 -101t78 -62.5t114.5 -21.5q23 0 50 3.5t55.5 9.5t56.5 14.5t53 17.5v-131q-24 -11 -48.5 -20t-51 -16 t-56.5 -10.5t-65 -3.5q-102 0 -178 33t-126.5 94t-76 146t-25.5 188z" />
+<glyph unicode="&#xaa;" horiz-adv-x="678" d="M68 989q0 102 70.5 156t213.5 59l99 4v31q0 72 -30.5 100.5t-86.5 28.5q-48 0 -93 -14.5t-87 -36.5l-48 100q51 26 109.5 44t118.5 18q125 0 184.5 -53t59.5 -175v-454h-91l-28 82q-18 -22 -37.5 -39.5t-43 -30t-51.5 -19t-63 -6.5q-43 0 -79 13t-62 38.5t-40.5 64 t-14.5 89.5zM199 987q0 -51 25 -73.5t67 -22.5q34 0 63 10.5t50.5 32.5t34 54.5t12.5 76.5v49l-74 -4q-51 -3 -85 -12t-54.5 -24t-29.5 -36.5t-9 -50.5z" />
+<glyph unicode="&#xab;" horiz-adv-x="997" d="M82 526v27l309 414l117 -78l-238 -348l238 -348l-117 -78zM489 526v27l310 414l116 -78l-237 -348l237 -348l-116 -78z" />
+<glyph unicode="&#xac;" d="M102 647v150h924v-535h-149v385h-775z" />
+<glyph unicode="&#xad;" horiz-adv-x="659" d="M82 465v168h496v-168h-496z" />
+<glyph unicode="&#xae;" horiz-adv-x="1704" d="M100 731q0 104 27 200t75.5 179.5t117.5 152.5t152.5 117.5t179.5 75.5t200 27t200 -27t179.5 -75.5t152.5 -117.5t117.5 -152.5t75.5 -179.5t27 -200t-27 -200t-75.5 -179.5t-117.5 -152t-152.5 -117.5t-179.5 -75.5t-200 -26.5t-200 26.5t-179.5 75.5t-152.5 117.5 t-117.5 152t-75.5 179.5t-27 200zM209 731q0 -133 50.5 -250t138 -204.5t204.5 -138t250 -50.5t250 50.5t204.5 138t138 204.5t50.5 250t-50.5 250t-138 204.5t-204.5 138t-250 50.5t-250 -50.5t-204.5 -138t-138 -204.5t-50.5 -250zM586 285v893h233q168 0 247 -65t79 -200 q0 -48 -13.5 -85.5t-36 -66t-51 -48.5t-59.5 -33q67 -110 120 -197q23 -37 44 -72.5t37.5 -63.5t26.5 -45l10 -17h-179l-206 352h-95v-352h-157zM743 768h72q91 0 130.5 36t39.5 105q0 74 -41.5 103.5t-130.5 29.5h-70v-274z" />
+<glyph unicode="&#xaf;" horiz-adv-x="1024" d="M-6 1556v140h1036v-140h-1036z" />
+<glyph unicode="&#xb0;" horiz-adv-x="877" d="M123 1167q0 65 25 122.5t67.5 100.5t100 68t122.5 25t122.5 -25t100.5 -68t68 -100.5t25 -122.5t-25 -122t-68 -99.5t-100.5 -67t-122.5 -24.5t-122.5 24.5t-100 67t-67.5 99.5t-25 122zM246 1167q0 -39 15 -73.5t41 -60.5t61 -41t75 -15t75 15t61.5 41t41.5 60.5 t15 73.5q0 40 -15 75.5t-41.5 62t-61.5 42t-75 15.5t-75 -15.5t-61 -42t-41 -62t-15 -75.5z" />
+<glyph unicode="&#xb1;" d="M102 0v150h924v-150h-924zM102 647v150h387v389h150v-389h387v-150h-387v-385h-150v385h-387z" />
+<glyph unicode="&#xb2;" horiz-adv-x="678" d="M49 586v112l209 228q57 62 93 104.5t56 76t27.5 63t7.5 63.5q0 65 -33 97t-87 32q-51 0 -97.5 -25t-91.5 -63l-78 94q54 48 120.5 80.5t148.5 32.5q60 0 108.5 -16.5t82.5 -48t52.5 -77t18.5 -102.5q0 -50 -14.5 -93t-41.5 -85.5t-66.5 -88t-90.5 -100.5l-148 -157h396 v-127h-572z" />
+<glyph unicode="&#xb3;" horiz-adv-x="678" d="M31 625v133q63 -34 129 -53t119 -19q98 0 142 41.5t44 114.5q0 74 -53.5 107.5t-149.5 33.5h-98v113h98q92 0 134 39.5t42 103.5q0 32 -10 55.5t-27.5 38.5t-41 22t-50.5 7q-59 0 -107.5 -20.5t-99.5 -57.5l-69 96q29 23 59.5 41.5t64.5 31.5t72 20.5t82 7.5 q69 0 121.5 -17t87.5 -47t52.5 -71.5t17.5 -90.5q0 -78 -40.5 -131t-109.5 -77q88 -23 132 -76t44 -131q0 -60 -20 -110t-61.5 -85.5t-104.5 -55.5t-149 -20q-70 0 -131.5 12.5t-118.5 43.5z" />
+<glyph unicode="&#xb4;" horiz-adv-x="1182" d="M393 1241v27q22 29 45.5 67t47 78.5t44.5 81t37 74.5h219v-21q-16 -27 -47.5 -67.5t-70 -84.5t-79 -85.5t-75.5 -69.5h-121z" />
+<glyph unicode="&#xb5;" horiz-adv-x="1217" d="M174 -492v1590h182v-707q0 -130 53 -195t164 -65q82 0 137 26t88.5 76.5t47.5 124.5t14 170v570h182v-1098h-147l-27 147h-10q-48 -83 -120 -125t-175 -42q-72 0 -125 23t-88 65q1 -38 3 -78q2 -35 2.5 -77.5t0.5 -84.5v-320h-182z" />
+<glyph unicode="&#xb6;" horiz-adv-x="1341" d="M113 1042q0 147 32.5 245.5t92 158.5t142.5 85t183 25h563v-1816h-120v1657h-207v-1657h-121v819q-61 -18 -146 -18q-95 0 -172.5 25.5t-132 84.5t-84.5 155t-30 236z" />
+<glyph unicode="&#xb7;" horiz-adv-x="549" d="M147 723q0 38 10 64.5t27 43t40 24t50 7.5q26 0 49.5 -7.5t40.5 -24t27 -43t10 -64.5q0 -37 -10 -63t-27 -43t-40.5 -25t-49.5 -8q-27 0 -50 8t-40 25t-27 43t-10 63z" />
+<glyph unicode="&#xb8;" horiz-adv-x="420" d="M35 -375q15 -3 39.5 -4.5t40.5 -1.5q71 0 111 21.5t40 70.5q0 24 -13 41.5t-36 30.5t-54.5 22.5t-68.5 18.5l90 176h121l-57 -115q34 -8 63 -21t50.5 -33.5t34 -49.5t12.5 -68q0 -97 -70.5 -151t-220.5 -54q-22 0 -44.5 3t-37.5 6v108z" />
+<glyph unicode="&#xb9;" horiz-adv-x="678" d="M63 1274l244 188h135v-876h-145v516q0 25 0.5 55t2 60t3 58t2.5 50q-14 -17 -33 -37t-41 -37l-94 -73z" />
+<glyph unicode="&#xba;" horiz-adv-x="717" d="M66 1133q0 83 20.5 147.5t58.5 108.5t92.5 67t122.5 23q62 0 115.5 -23t92.5 -67t61 -108.5t22 -147.5t-20.5 -148t-59 -109.5t-93 -68t-122.5 -23.5q-63 0 -116 23.5t-92 68t-60.5 109.5t-21.5 148zM197 1133q0 -119 37.5 -179.5t123.5 -60.5q85 0 122.5 60.5 t37.5 179.5q0 120 -37.5 177.5t-122.5 57.5q-86 0 -123.5 -57.5t-37.5 -177.5z" />
+<glyph unicode="&#xbb;" horiz-adv-x="997" d="M84 193l238 348l-238 348l117 78l309 -414v-27l-309 -411zM492 193l237 348l-237 348l116 78l310 -414v-27l-310 -411z" />
+<glyph unicode="&#xbc;" horiz-adv-x="1509" d="M63 1274l244 188h135v-876h-145v516q0 25 0.5 55t2 60t3 58t2.5 50q-14 -17 -33 -37t-41 -37l-94 -73zM234 0l811 1462h157l-811 -1462h-157zM776 193v111l377 579h141v-563h125v-127h-125v-192h-143v192h-375zM922 320h229v195q0 42 1.5 91.5t4.5 98.5q-5 -11 -15 -29.5 t-21 -39.5t-23 -41l-21 -35z" />
+<glyph unicode="&#xbd;" horiz-adv-x="1509" d="M44 1274l244 188h135v-876h-145v516q0 25 0.5 55t2 60t3 58t2.5 50q-14 -17 -33 -37t-41 -37l-94 -73zM213 0l811 1462h157l-811 -1462h-157zM868 1v112l209 228q57 62 93 104.5t56 76t27.5 63t7.5 63.5q0 65 -33 97t-87 32q-51 0 -97.5 -25t-91.5 -63l-78 94 q54 48 120.5 80.5t148.5 32.5q60 0 108.5 -16.5t82.5 -48t52.5 -77t18.5 -102.5q0 -50 -14.5 -93t-41.5 -85.5t-66.5 -88t-90.5 -100.5l-148 -157h396v-127h-572z" />
+<glyph unicode="&#xbe;" horiz-adv-x="1509" d="M31 625v133q63 -34 129 -53t119 -19q98 0 142 41.5t44 114.5q0 74 -53.5 107.5t-149.5 33.5h-98v113h98q92 0 134 39.5t42 103.5q0 32 -10 55.5t-27.5 38.5t-41 22t-50.5 7q-59 0 -107.5 -20.5t-99.5 -57.5l-69 96q29 23 59.5 41.5t64.5 31.5t72 20.5t82 7.5 q69 0 121.5 -17t87.5 -47t52.5 -71.5t17.5 -90.5q0 -78 -40.5 -131t-109.5 -77q88 -23 132 -76t44 -131q0 -60 -20 -110t-61.5 -85.5t-104.5 -55.5t-149 -20q-70 0 -131.5 12.5t-118.5 43.5zM328 0l811 1462h157l-811 -1462h-157zM843 193v111l377 579h141v-563h125v-127 h-125v-192h-143v192h-375zM989 320h229v195q0 42 1.5 91.5t4.5 98.5q-5 -11 -15 -29.5t-21 -39.5t-23 -41l-21 -35z" />
+<glyph unicode="&#xbf;" horiz-adv-x="872" d="M68 -20q0 68 13.5 120t40 97t67 87t94.5 89q52 45 85 78.5t52 64.5t26 64.5t7 76.5v19h139v-37q0 -58 -8 -103.5t-27.5 -86t-52 -78.5t-82.5 -80q-48 -41 -82 -74.5t-55.5 -68t-32 -74t-10.5 -92.5q0 -48 15 -87.5t43.5 -68t71 -44t97.5 -15.5q84 0 159 25.5t144 60.5 l64 -146q-82 -42 -176 -71t-191 -29q-93 0 -167.5 25.5t-126 73.5t-79.5 117t-28 157zM385 979q0 37 10 63t27.5 43t40.5 25t49 8q27 0 50 -8t40.5 -25t27 -43t9.5 -63q0 -38 -9.5 -64.5t-27 -43t-40.5 -24t-50 -7.5q-26 0 -49 7.5t-40.5 24t-27.5 43t-10 64.5z" />
+<glyph unicode="&#xc0;" horiz-adv-x="1245" d="M0 0l537 1468h170l538 -1468h-190l-160 453h-545l-162 -453h-188zM410 618h426l-148 424q-6 18 -14.5 44t-17.5 56t-18 62.5t-17 63.5q-7 -31 -16 -64t-18 -63.5t-17.5 -56t-14.5 -42.5zM326 1886v21h219q16 -34 37.5 -74.5t44.5 -81t47 -78.5t45 -67v-27h-120 q-35 28 -76 69.5t-79.5 85.5t-70 84.5t-47.5 67.5z" />
+<glyph unicode="&#xc1;" horiz-adv-x="1245" d="M0 0l537 1468h170l538 -1468h-190l-160 453h-545l-162 -453h-188zM410 618h426l-148 424q-6 18 -14.5 44t-17.5 56t-18 62.5t-17 63.5q-7 -31 -16 -64t-18 -63.5t-17.5 -56t-14.5 -42.5zM534 1579v27q22 29 45.5 67t47 78.5t44.5 81t37 74.5h219v-21q-16 -27 -47.5 -67.5 t-70 -84.5t-79 -85.5t-75.5 -69.5h-121z" />
+<glyph unicode="&#xc2;" horiz-adv-x="1245" d="M0 0l537 1468h170l538 -1468h-190l-160 453h-545l-162 -453h-188zM410 618h426l-148 424q-6 18 -14.5 44t-17.5 56t-18 62.5t-17 63.5q-7 -31 -16 -64t-18 -63.5t-17.5 -56t-14.5 -42.5zM289 1579v27q26 29 60 67t67.5 78.5t63 81t45.5 74.5h192q16 -34 45.5 -74.5 t63 -81t68 -78.5t59.5 -67v-27h-121q-51 34 -105 82.5t-106 103.5q-54 -55 -107 -103.5t-104 -82.5h-121z" />
+<glyph unicode="&#xc3;" horiz-adv-x="1245" d="M0 0l537 1468h170l538 -1468h-190l-160 453h-545l-162 -453h-188zM410 618h426l-148 424q-6 18 -14.5 44t-17.5 56t-18 62.5t-17 63.5q-7 -31 -16 -64t-18 -63.5t-17.5 -56t-14.5 -42.5zM264 1579q5 60 21.5 109t43 83.5t63.5 53t83 18.5q42 0 82.5 -17.5t78.5 -38.5 t72.5 -38.5t63.5 -17.5q45 0 68 26t38 88h105q-5 -60 -21.5 -108.5t-43 -83t-63.5 -53.5t-83 -19q-40 0 -79.5 17.5t-77.5 39t-73 39t-67 17.5q-45 0 -69 -26.5t-38 -88.5h-104z" />
+<glyph unicode="&#xc4;" horiz-adv-x="1245" d="M0 0l537 1468h170l538 -1468h-190l-160 453h-545l-162 -453h-188zM410 618h426l-148 424q-6 18 -14.5 44t-17.5 56t-18 62.5t-17 63.5q-7 -31 -16 -64t-18 -63.5t-17.5 -56t-14.5 -42.5zM340 1733q0 54 28 78t68 24q39 0 68 -24.5t29 -77.5t-29 -78t-68 -25q-40 0 -68 25 t-28 78zM715 1733q0 54 28 78t68 24q19 0 36.5 -6t30.5 -18.5t21 -31.5t8 -46q0 -53 -29 -78t-67 -25q-40 0 -68 25t-28 78z" />
+<glyph unicode="&#xc5;" horiz-adv-x="1245" d="M0 0l537 1468h170l538 -1468h-190l-160 453h-545l-162 -453h-188zM410 618h426l-148 424q-6 18 -14.5 44t-17.5 56t-18 62.5t-17 63.5q-7 -31 -16 -64t-18 -63.5t-17.5 -56t-14.5 -42.5zM396 1581q0 51 16 90.5t45.5 67.5t70.5 42.5t91 14.5q48 0 90 -14.5t73 -42 t48.5 -67t17.5 -89.5q0 -51 -17.5 -91.5t-48 -68.5t-72.5 -42.5t-91 -14.5q-50 0 -91 14.5t-70.5 42.5t-45.5 67.5t-16 90.5zM506 1581q0 -53 28.5 -83t84.5 -30q49 0 80.5 30t31.5 83t-31.5 83t-80.5 30q-50 0 -81.5 -30t-31.5 -83z" />
+<glyph unicode="&#xc6;" horiz-adv-x="1745" d="M-2 0l655 1462h969v-164h-573v-452h534v-162h-534v-520h573v-164h-760v453h-475l-203 -453h-186zM459 618h403v680h-108z" />
+<glyph unicode="&#xc7;" horiz-adv-x="1235" d="M125 733q0 166 43.5 304t128 237t209.5 154t287 55q108 0 206 -22t177 -64l-78 -156q-63 32 -137 55t-168 23q-107 0 -194 -40.5t-148.5 -116.5t-95 -185t-33.5 -246q0 -141 29.5 -250.5t88.5 -184.5t147 -114t206 -39q89 0 169 17.5t158 40.5v-162q-39 -15 -78 -26.5 t-81.5 -18.5t-91 -10.5t-107.5 -3.5q-164 0 -284 54t-198.5 153t-116.5 238t-38 308zM543 -375q15 -3 39.5 -4.5t40.5 -1.5q71 0 111 21.5t40 70.5q0 24 -13 41.5t-36 30.5t-54.5 22.5t-68.5 18.5l90 176h121l-57 -115q34 -8 63 -21t50.5 -33.5t34 -49.5t12.5 -68 q0 -97 -70.5 -151t-220.5 -54q-22 0 -44.5 3t-37.5 6v108z" />
+<glyph unicode="&#xc8;" horiz-adv-x="1081" d="M199 0v1462h759v-164h-573v-452h535v-162h-535v-520h573v-164h-759zM320 1886v21h219q16 -34 37.5 -74.5t44.5 -81t47 -78.5t45 -67v-27h-120q-35 28 -76 69.5t-79.5 85.5t-70 84.5t-47.5 67.5z" />
+<glyph unicode="&#xc9;" horiz-adv-x="1081" d="M199 0v1462h759v-164h-573v-452h535v-162h-535v-520h573v-164h-759zM456 1579v27q22 29 45.5 67t47 78.5t44.5 81t37 74.5h219v-21q-16 -27 -47.5 -67.5t-70 -84.5t-79 -85.5t-75.5 -69.5h-121z" />
+<glyph unicode="&#xca;" horiz-adv-x="1081" d="M199 0v1462h759v-164h-573v-452h535v-162h-535v-520h573v-164h-759zM243 1579v27q26 29 60 67t67.5 78.5t63 81t45.5 74.5h192q16 -34 45.5 -74.5t63 -81t68 -78.5t59.5 -67v-27h-121q-51 34 -105 82.5t-106 103.5q-54 -55 -107 -103.5t-104 -82.5h-121z" />
+<glyph unicode="&#xcb;" horiz-adv-x="1081" d="M199 0v1462h759v-164h-573v-452h535v-162h-535v-520h573v-164h-759zM296 1733q0 54 28 78t68 24q39 0 68 -24.5t29 -77.5t-29 -78t-68 -25q-40 0 -68 25t-28 78zM671 1733q0 54 28 78t68 24q19 0 36.5 -6t30.5 -18.5t21 -31.5t8 -46q0 -53 -29 -78t-67 -25q-40 0 -68 25 t-28 78z" />
+<glyph unicode="&#xcc;" horiz-adv-x="694" d="M82 0v102l172 41v1176l-172 41v102h530v-102l-172 -41v-1176l172 -41v-102h-530zM62 1886v21h219q16 -34 37.5 -74.5t44.5 -81t47 -78.5t45 -67v-27h-120q-35 28 -76 69.5t-79.5 85.5t-70 84.5t-47.5 67.5z" />
+<glyph unicode="&#xcd;" horiz-adv-x="694" d="M82 0v102l172 41v1176l-172 41v102h530v-102l-172 -41v-1176l172 -41v-102h-530zM257 1579v27q22 29 45.5 67t47 78.5t44.5 81t37 74.5h219v-21q-16 -27 -47.5 -67.5t-70 -84.5t-79 -85.5t-75.5 -69.5h-121z" />
+<glyph unicode="&#xce;" horiz-adv-x="694" d="M82 0v102l172 41v1176l-172 41v102h530v-102l-172 -41v-1176l172 -41v-102h-530zM17 1579v27q26 29 60 67t67.5 78.5t63 81t45.5 74.5h192q16 -34 45.5 -74.5t63 -81t68 -78.5t59.5 -67v-27h-121q-51 34 -105 82.5t-106 103.5q-54 -55 -107 -103.5t-104 -82.5h-121z" />
+<glyph unicode="&#xcf;" horiz-adv-x="694" d="M82 0v102l172 41v1176l-172 41v102h530v-102l-172 -41v-1176l172 -41v-102h-530zM64 1733q0 54 28 78t68 24q39 0 68 -24.5t29 -77.5t-29 -78t-68 -25q-40 0 -68 25t-28 78zM439 1733q0 54 28 78t68 24q19 0 36.5 -6t30.5 -18.5t21 -31.5t8 -46q0 -53 -29 -78t-67 -25 q-40 0 -68 25t-28 78z" />
+<glyph unicode="&#xd0;" horiz-adv-x="1401" d="M47 643v162h152v657h407q153 0 277 -46t211 -136.5t134.5 -224.5t47.5 -310q0 -185 -48 -324.5t-139 -233t-223.5 -140.5t-300.5 -47h-366v643h-152zM385 160h162q264 0 398 146t134 433q0 146 -33 252.5t-96 175.5t-155 102.5t-209 33.5h-201v-498h336v-162h-336v-483z " />
+<glyph unicode="&#xd1;" horiz-adv-x="1493" d="M199 0v1462h213l716 -1204h7q-3 76 -7 150q0 32 -2 66l-4 66q-2 34 -2 65v57v800h174v-1462h-215l-719 1210h-8q6 -77 10 -153q4 -65 6.5 -136t2.5 -128v-793h-172zM397 1579q5 60 21.5 109t43 83.5t63.5 53t83 18.5q42 0 82.5 -17.5t78.5 -38.5t72.5 -38.5t63.5 -17.5 q45 0 68 26t38 88h105q-5 -60 -21.5 -108.5t-43 -83t-63.5 -53.5t-83 -19q-40 0 -79.5 17.5t-77.5 39t-73 39t-67 17.5q-45 0 -69 -26.5t-38 -88.5h-104z" />
+<glyph unicode="&#xd2;" horiz-adv-x="1520" d="M125 735q0 170 38 308.5t117 236.5t199 151.5t283 53.5q155 0 272.5 -53.5t197.5 -152t120.5 -237t40.5 -309.5q0 -169 -40.5 -308t-120.5 -238t-198.5 -153t-273.5 -54q-163 0 -282.5 54t-198 153t-116.5 238.5t-38 309.5zM322 733q0 -137 26 -246.5t79.5 -186t136 -117 t196.5 -40.5t196.5 40.5t136 117t78.5 186t25 246.5q0 138 -25 247t-78 184.5t-135 116t-196 40.5t-197 -40.5t-137 -116t-80 -184.5t-26 -247zM477 1886v21h219q16 -34 37.5 -74.5t44.5 -81t47 -78.5t45 -67v-27h-120q-35 28 -76 69.5t-79.5 85.5t-70 84.5t-47.5 67.5z" />
+<glyph unicode="&#xd3;" horiz-adv-x="1520" d="M125 735q0 170 38 308.5t117 236.5t199 151.5t283 53.5q155 0 272.5 -53.5t197.5 -152t120.5 -237t40.5 -309.5q0 -169 -40.5 -308t-120.5 -238t-198.5 -153t-273.5 -54q-163 0 -282.5 54t-198 153t-116.5 238.5t-38 309.5zM322 733q0 -137 26 -246.5t79.5 -186t136 -117 t196.5 -40.5t196.5 40.5t136 117t78.5 186t25 246.5q0 138 -25 247t-78 184.5t-135 116t-196 40.5t-197 -40.5t-137 -116t-80 -184.5t-26 -247zM651 1579v27q22 29 45.5 67t47 78.5t44.5 81t37 74.5h219v-21q-16 -27 -47.5 -67.5t-70 -84.5t-79 -85.5t-75.5 -69.5h-121z" />
+<glyph unicode="&#xd4;" horiz-adv-x="1520" d="M125 735q0 170 38 308.5t117 236.5t199 151.5t283 53.5q155 0 272.5 -53.5t197.5 -152t120.5 -237t40.5 -309.5q0 -169 -40.5 -308t-120.5 -238t-198.5 -153t-273.5 -54q-163 0 -282.5 54t-198 153t-116.5 238.5t-38 309.5zM322 733q0 -137 26 -246.5t79.5 -186t136 -117 t196.5 -40.5t196.5 40.5t136 117t78.5 186t25 246.5q0 138 -25 247t-78 184.5t-135 116t-196 40.5t-197 -40.5t-137 -116t-80 -184.5t-26 -247zM432 1579v27q26 29 60 67t67.5 78.5t63 81t45.5 74.5h192q16 -34 45.5 -74.5t63 -81t68 -78.5t59.5 -67v-27h-121 q-51 34 -105 82.5t-106 103.5q-54 -55 -107 -103.5t-104 -82.5h-121z" />
+<glyph unicode="&#xd5;" horiz-adv-x="1520" d="M125 735q0 170 38 308.5t117 236.5t199 151.5t283 53.5q155 0 272.5 -53.5t197.5 -152t120.5 -237t40.5 -309.5q0 -169 -40.5 -308t-120.5 -238t-198.5 -153t-273.5 -54q-163 0 -282.5 54t-198 153t-116.5 238.5t-38 309.5zM322 733q0 -137 26 -246.5t79.5 -186t136 -117 t196.5 -40.5t196.5 40.5t136 117t78.5 186t25 246.5q0 138 -25 247t-78 184.5t-135 116t-196 40.5t-197 -40.5t-137 -116t-80 -184.5t-26 -247zM383 1579q5 60 21.5 109t43 83.5t63.5 53t83 18.5q42 0 82.5 -17.5t78.5 -38.5t72.5 -38.5t63.5 -17.5q45 0 68 26t38 88h105 q-5 -60 -21.5 -108.5t-43 -83t-63.5 -53.5t-83 -19q-40 0 -79.5 17.5t-77.5 39t-73 39t-67 17.5q-45 0 -69 -26.5t-38 -88.5h-104z" />
+<glyph unicode="&#xd6;" horiz-adv-x="1520" d="M125 735q0 170 38 308.5t117 236.5t199 151.5t283 53.5q155 0 272.5 -53.5t197.5 -152t120.5 -237t40.5 -309.5q0 -169 -40.5 -308t-120.5 -238t-198.5 -153t-273.5 -54q-163 0 -282.5 54t-198 153t-116.5 238.5t-38 309.5zM322 733q0 -137 26 -246.5t79.5 -186t136 -117 t196.5 -40.5t196.5 40.5t136 117t78.5 186t25 246.5q0 138 -25 247t-78 184.5t-135 116t-196 40.5t-197 -40.5t-137 -116t-80 -184.5t-26 -247zM477 1733q0 54 28 78t68 24q39 0 68 -24.5t29 -77.5t-29 -78t-68 -25q-40 0 -68 25t-28 78zM852 1733q0 54 28 78t68 24 q19 0 36.5 -6t30.5 -18.5t21 -31.5t8 -46q0 -53 -29 -78t-67 -25q-40 0 -68 25t-28 78z" />
+<glyph unicode="&#xd7;" d="M141 1042l105 105l317 -318l322 318l104 -103l-321 -321l319 -320l-102 -102l-322 317l-317 -315l-103 103l316 317z" />
+<glyph unicode="&#xd8;" horiz-adv-x="1520" d="M125 735q0 170 38 308.5t117 236.5t199 151.5t283 53.5q94 0 174.5 -21t146.5 -59l80 127l137 -78l-92 -149q91 -99 138 -244t47 -328q0 -169 -40.5 -308t-120.5 -238t-198.5 -153t-273.5 -54q-189 0 -322 71l-78 -127l-137 78l90 145q-97 100 -142.5 249t-45.5 339z M322 733q0 -131 23 -235.5t71 -182.5l579 945q-48 29 -105 45t-128 16q-114 0 -197 -40.5t-137 -116t-80 -184.5t-26 -247zM530 201q47 -28 104 -43t126 -15q114 0 196.5 40.5t136 117t78.5 186t25 246.5q0 257 -88 408z" />
+<glyph unicode="&#xd9;" horiz-adv-x="1430" d="M184 520v942h187v-952q0 -175 86.5 -271t261.5 -96q89 0 153 27t105 76t61 117t21 149v952h186v-948q0 -114 -33 -212t-99.5 -170t-167 -113t-236.5 -41q-128 0 -226 38.5t-164.5 109.5t-100.5 170.5t-34 221.5zM454 1886v21h219q16 -34 37.5 -74.5t44.5 -81t47 -78.5 t45 -67v-27h-120q-35 28 -76 69.5t-79.5 85.5t-70 84.5t-47.5 67.5z" />
+<glyph unicode="&#xda;" horiz-adv-x="1430" d="M184 520v942h187v-952q0 -175 86.5 -271t261.5 -96q89 0 153 27t105 76t61 117t21 149v952h186v-948q0 -114 -33 -212t-99.5 -170t-167 -113t-236.5 -41q-128 0 -226 38.5t-164.5 109.5t-100.5 170.5t-34 221.5zM590 1579v27q22 29 45.5 67t47 78.5t44.5 81t37 74.5h219 v-21q-16 -27 -47.5 -67.5t-70 -84.5t-79 -85.5t-75.5 -69.5h-121z" />
+<glyph unicode="&#xdb;" horiz-adv-x="1430" d="M184 520v942h187v-952q0 -175 86.5 -271t261.5 -96q89 0 153 27t105 76t61 117t21 149v952h186v-948q0 -114 -33 -212t-99.5 -170t-167 -113t-236.5 -41q-128 0 -226 38.5t-164.5 109.5t-100.5 170.5t-34 221.5zM379 1579v27q26 29 60 67t67.5 78.5t63 81t45.5 74.5h192 q16 -34 45.5 -74.5t63 -81t68 -78.5t59.5 -67v-27h-121q-51 34 -105 82.5t-106 103.5q-54 -55 -107 -103.5t-104 -82.5h-121z" />
+<glyph unicode="&#xdc;" horiz-adv-x="1430" d="M184 520v942h187v-952q0 -175 86.5 -271t261.5 -96q89 0 153 27t105 76t61 117t21 149v952h186v-948q0 -114 -33 -212t-99.5 -170t-167 -113t-236.5 -41q-128 0 -226 38.5t-164.5 109.5t-100.5 170.5t-34 221.5zM432 1733q0 54 28 78t68 24q39 0 68 -24.5t29 -77.5 t-29 -78t-68 -25q-40 0 -68 25t-28 78zM807 1733q0 54 28 78t68 24q19 0 36.5 -6t30.5 -18.5t21 -31.5t8 -46q0 -53 -29 -78t-67 -25q-40 0 -68 25t-28 78z" />
+<glyph unicode="&#xdd;" horiz-adv-x="1079" d="M0 1462h203l336 -739l340 739h200l-446 -893v-569h-187v559zM442 1579v27q22 29 45.5 67t47 78.5t44.5 81t37 74.5h219v-21q-16 -27 -47.5 -67.5t-70 -84.5t-79 -85.5t-75.5 -69.5h-121z" />
+<glyph unicode="&#xde;" horiz-adv-x="1180" d="M199 0v1462h186v-252h176q134 0 231 -28.5t160 -83t93 -134.5t30 -182q0 -91 -27.5 -175t-90.5 -148.5t-166.5 -103t-255.5 -38.5h-150v-317h-186zM385 475h129q93 0 162.5 16t115 51.5t68.5 92t23 137.5q0 143 -82 211t-256 68h-160v-576z" />
+<glyph unicode="&#xdf;" horiz-adv-x="1233" d="M174 0v1200q0 104 31.5 174.5t88 113t134.5 61t170 18.5t168 -19t130 -57t84 -96t30 -135q0 -57 -21.5 -101.5t-53 -81t-69 -66.5t-69 -57.5t-53 -54.5t-21.5 -57q0 -21 7 -37.5t26.5 -36t54.5 -44t92 -62.5q56 -37 100 -73t74.5 -77t47 -89t16.5 -110q0 -87 -28 -150 t-78.5 -103.5t-121 -60t-155.5 -19.5q-97 0 -166.5 17.5t-122.5 51.5v166q26 -16 58.5 -31.5t68.5 -27.5t74 -19.5t75 -7.5q56 0 96.5 12.5t66.5 35t38 54.5t12 72q0 36 -8.5 65.5t-30 57.5t-57.5 57t-92 64q-63 40 -105.5 74t-69 67.5t-37.5 68.5t-11 77q0 54 20.5 93.5 t51.5 71t67 58.5t67 56t51.5 62.5t20.5 77.5q0 42 -16.5 73t-46.5 51.5t-71.5 30t-92.5 9.5q-49 0 -93 -9.5t-77 -33.5t-52.5 -65.5t-19.5 -106.5v-1202h-182z" />
+<glyph unicode="&#xe0;" horiz-adv-x="1087" d="M94 307q0 164 115.5 252t351.5 96l184 7v69q0 67 -14.5 112t-42 72.5t-68 39.5t-92.5 12q-83 0 -154.5 -24t-137.5 -58l-64 137q74 40 165 68t191 28q102 0 176.5 -20.5t123 -65t72.5 -113.5t24 -167v-752h-131l-37 152h-8q-33 -45 -66 -77.5t-72 -53.5t-87 -31t-111 -10 q-69 0 -127 19.5t-100.5 60t-66.5 102t-24 145.5zM283 305q0 -92 48.5 -135t127.5 -43q61 0 113 19t90 57.5t59.5 97t21.5 137.5v99l-143 -7q-90 -4 -151 -20t-97.5 -44.5t-52.5 -69t-16 -91.5zM285 1548v21h219q16 -34 37.5 -74.5t44.5 -81t47 -78.5t45 -67v-27h-120 q-35 28 -76 69.5t-79.5 85.5t-70 84.5t-47.5 67.5z" />
+<glyph unicode="&#xe1;" horiz-adv-x="1087" d="M94 307q0 164 115.5 252t351.5 96l184 7v69q0 67 -14.5 112t-42 72.5t-68 39.5t-92.5 12q-83 0 -154.5 -24t-137.5 -58l-64 137q74 40 165 68t191 28q102 0 176.5 -20.5t123 -65t72.5 -113.5t24 -167v-752h-131l-37 152h-8q-33 -45 -66 -77.5t-72 -53.5t-87 -31t-111 -10 q-69 0 -127 19.5t-100.5 60t-66.5 102t-24 145.5zM283 305q0 -92 48.5 -135t127.5 -43q61 0 113 19t90 57.5t59.5 97t21.5 137.5v99l-143 -7q-90 -4 -151 -20t-97.5 -44.5t-52.5 -69t-16 -91.5zM446 1241v27q22 29 45.5 67t47 78.5t44.5 81t37 74.5h219v-21 q-16 -27 -47.5 -67.5t-70 -84.5t-79 -85.5t-75.5 -69.5h-121z" />
+<glyph unicode="&#xe2;" horiz-adv-x="1087" d="M94 307q0 164 115.5 252t351.5 96l184 7v69q0 67 -14.5 112t-42 72.5t-68 39.5t-92.5 12q-83 0 -154.5 -24t-137.5 -58l-64 137q74 40 165 68t191 28q102 0 176.5 -20.5t123 -65t72.5 -113.5t24 -167v-752h-131l-37 152h-8q-33 -45 -66 -77.5t-72 -53.5t-87 -31t-111 -10 q-69 0 -127 19.5t-100.5 60t-66.5 102t-24 145.5zM283 305q0 -92 48.5 -135t127.5 -43q61 0 113 19t90 57.5t59.5 97t21.5 137.5v99l-143 -7q-90 -4 -151 -20t-97.5 -44.5t-52.5 -69t-16 -91.5zM228 1241v27q26 29 60 67t67.5 78.5t63 81t45.5 74.5h192q16 -34 45.5 -74.5 t63 -81t68 -78.5t59.5 -67v-27h-121q-51 34 -105 82.5t-106 103.5q-54 -55 -107 -103.5t-104 -82.5h-121z" />
+<glyph unicode="&#xe3;" horiz-adv-x="1087" d="M94 307q0 164 115.5 252t351.5 96l184 7v69q0 67 -14.5 112t-42 72.5t-68 39.5t-92.5 12q-83 0 -154.5 -24t-137.5 -58l-64 137q74 40 165 68t191 28q102 0 176.5 -20.5t123 -65t72.5 -113.5t24 -167v-752h-131l-37 152h-8q-33 -45 -66 -77.5t-72 -53.5t-87 -31t-111 -10 q-69 0 -127 19.5t-100.5 60t-66.5 102t-24 145.5zM283 305q0 -92 48.5 -135t127.5 -43q61 0 113 19t90 57.5t59.5 97t21.5 137.5v99l-143 -7q-90 -4 -151 -20t-97.5 -44.5t-52.5 -69t-16 -91.5zM191 1241q5 60 21.5 109t43 83.5t63.5 53t83 18.5q42 0 82.5 -17.5t78.5 -38.5 t72.5 -38.5t63.5 -17.5q45 0 68 26t38 88h105q-5 -60 -21.5 -108.5t-43 -83t-63.5 -53.5t-83 -19q-40 0 -79.5 17.5t-77.5 39t-73 39t-67 17.5q-45 0 -69 -26.5t-38 -88.5h-104z" />
+<glyph unicode="&#xe4;" horiz-adv-x="1087" d="M94 307q0 164 115.5 252t351.5 96l184 7v69q0 67 -14.5 112t-42 72.5t-68 39.5t-92.5 12q-83 0 -154.5 -24t-137.5 -58l-64 137q74 40 165 68t191 28q102 0 176.5 -20.5t123 -65t72.5 -113.5t24 -167v-752h-131l-37 152h-8q-33 -45 -66 -77.5t-72 -53.5t-87 -31t-111 -10 q-69 0 -127 19.5t-100.5 60t-66.5 102t-24 145.5zM283 305q0 -92 48.5 -135t127.5 -43q61 0 113 19t90 57.5t59.5 97t21.5 137.5v99l-143 -7q-90 -4 -151 -20t-97.5 -44.5t-52.5 -69t-16 -91.5zM273 1395q0 54 28 78t68 24q39 0 68 -24.5t29 -77.5t-29 -78t-68 -25 q-40 0 -68 25t-28 78zM648 1395q0 54 28 78t68 24q19 0 36.5 -6t30.5 -18.5t21 -31.5t8 -46q0 -53 -29 -78t-67 -25q-40 0 -68 25t-28 78z" />
+<glyph unicode="&#xe5;" horiz-adv-x="1087" d="M94 307q0 164 115.5 252t351.5 96l184 7v69q0 67 -14.5 112t-42 72.5t-68 39.5t-92.5 12q-83 0 -154.5 -24t-137.5 -58l-64 137q74 40 165 68t191 28q102 0 176.5 -20.5t123 -65t72.5 -113.5t24 -167v-752h-131l-37 152h-8q-33 -45 -66 -77.5t-72 -53.5t-87 -31t-111 -10 q-69 0 -127 19.5t-100.5 60t-66.5 102t-24 145.5zM283 305q0 -92 48.5 -135t127.5 -43q61 0 113 19t90 57.5t59.5 97t21.5 137.5v99l-143 -7q-90 -4 -151 -20t-97.5 -44.5t-52.5 -69t-16 -91.5zM331 1456q0 51 16 90.5t45.5 67.5t70.5 42.5t91 14.5q48 0 90 -14.5t73 -42 t48.5 -67t17.5 -89.5q0 -51 -17.5 -91.5t-48 -68.5t-72.5 -42.5t-91 -14.5q-50 0 -91 14.5t-70.5 42.5t-45.5 67.5t-16 90.5zM441 1456q0 -53 28.5 -83t84.5 -30q49 0 80.5 30t31.5 83t-31.5 83t-80.5 30q-50 0 -81.5 -30t-31.5 -83z" />
+<glyph unicode="&#xe6;" horiz-adv-x="1706" d="M94 307q0 164 115.5 252t351.5 96l184 7v69q0 67 -14.5 112t-42 72.5t-68 39.5t-92.5 12q-83 0 -154.5 -24t-137.5 -58l-64 137q74 40 165 68t191 28q131 0 214 -42.5t126 -135.5q51 85 134 131.5t186 46.5q97 0 174 -35.5t131 -100t82.5 -155t28.5 -200.5v-113h-672 q5 -193 78.5 -284t220.5 -91q49 0 91.5 5t81.5 14.5t76 24t74 32.5v-162q-39 -19 -76.5 -33t-77 -23t-82 -13t-91.5 -4q-138 0 -239 57t-163 172q-34 -54 -72 -96.5t-85.5 -72t-105.5 -45t-132 -15.5q-71 0 -132.5 19.5t-106.5 60t-71 102t-26 145.5zM283 305 q0 -92 48.5 -135t127.5 -43q61 0 113 19t90 57.5t59.5 97t21.5 137.5v99l-143 -7q-90 -4 -151 -20t-97.5 -44.5t-52.5 -69t-16 -91.5zM936 662h471q0 68 -13 124.5t-40.5 96.5t-69.5 62t-100 22q-110 0 -173.5 -78t-74.5 -227z" />
+<glyph unicode="&#xe7;" horiz-adv-x="948" d="M113 543q0 157 38 266.5t104.5 178t155.5 99.5t191 31q78 0 152.5 -17t124.5 -42l-54 -154q-23 10 -51 19.5t-58 17t-59 12t-55 4.5q-157 0 -229 -100.5t-72 -312.5q0 -211 72.5 -308.5t220.5 -97.5q81 0 146.5 18.5t119.5 43.5v-162q-54 -29 -115.5 -44t-150.5 -15 q-101 0 -189 31.5t-153 100t-102 175t-37 256.5zM357 -375q15 -3 39.5 -4.5t40.5 -1.5q71 0 111 21.5t40 70.5q0 24 -13 41.5t-36 30.5t-54.5 22.5t-68.5 18.5l90 176h121l-57 -115q34 -8 63 -21t50.5 -33.5t34 -49.5t12.5 -68q0 -97 -70.5 -151t-220.5 -54q-22 0 -44.5 3 t-37.5 6v108z" />
+<glyph unicode="&#xe8;" horiz-adv-x="1096" d="M113 541q0 136 33 243t93 181.5t143.5 113.5t184.5 39q99 0 178 -35.5t134 -100t84.5 -155t29.5 -200.5v-113h-692q5 -193 81.5 -284t227.5 -91q51 0 94.5 5t84 14.5t78.5 24t77 32.5v-162q-40 -19 -78.5 -33t-79 -23t-84 -13t-94.5 -4q-110 0 -201 37t-156.5 108 t-101.5 176t-36 240zM305 662h492q0 68 -13.5 124.5t-42 96.5t-72.5 62t-106 22q-114 0 -180.5 -78t-77.5 -227zM285 1548v21h219q16 -34 37.5 -74.5t44.5 -81t47 -78.5t45 -67v-27h-120q-35 28 -76 69.5t-79.5 85.5t-70 84.5t-47.5 67.5z" />
+<glyph unicode="&#xe9;" horiz-adv-x="1096" d="M113 541q0 136 33 243t93 181.5t143.5 113.5t184.5 39q99 0 178 -35.5t134 -100t84.5 -155t29.5 -200.5v-113h-692q5 -193 81.5 -284t227.5 -91q51 0 94.5 5t84 14.5t78.5 24t77 32.5v-162q-40 -19 -78.5 -33t-79 -23t-84 -13t-94.5 -4q-110 0 -201 37t-156.5 108 t-101.5 176t-36 240zM305 662h492q0 68 -13.5 124.5t-42 96.5t-72.5 62t-106 22q-114 0 -180.5 -78t-77.5 -227zM475 1241v27q22 29 45.5 67t47 78.5t44.5 81t37 74.5h219v-21q-16 -27 -47.5 -67.5t-70 -84.5t-79 -85.5t-75.5 -69.5h-121z" />
+<glyph unicode="&#xea;" horiz-adv-x="1096" d="M113 541q0 136 33 243t93 181.5t143.5 113.5t184.5 39q99 0 178 -35.5t134 -100t84.5 -155t29.5 -200.5v-113h-692q5 -193 81.5 -284t227.5 -91q51 0 94.5 5t84 14.5t78.5 24t77 32.5v-162q-40 -19 -78.5 -33t-79 -23t-84 -13t-94.5 -4q-110 0 -201 37t-156.5 108 t-101.5 176t-36 240zM305 662h492q0 68 -13.5 124.5t-42 96.5t-72.5 62t-106 22q-114 0 -180.5 -78t-77.5 -227zM224 1241v27q26 29 60 67t67.5 78.5t63 81t45.5 74.5h192q16 -34 45.5 -74.5t63 -81t68 -78.5t59.5 -67v-27h-121q-51 34 -105 82.5t-106 103.5 q-54 -55 -107 -103.5t-104 -82.5h-121z" />
+<glyph unicode="&#xeb;" horiz-adv-x="1096" d="M113 541q0 136 33 243t93 181.5t143.5 113.5t184.5 39q99 0 178 -35.5t134 -100t84.5 -155t29.5 -200.5v-113h-692q5 -193 81.5 -284t227.5 -91q51 0 94.5 5t84 14.5t78.5 24t77 32.5v-162q-40 -19 -78.5 -33t-79 -23t-84 -13t-94.5 -4q-110 0 -201 37t-156.5 108 t-101.5 176t-36 240zM305 662h492q0 68 -13.5 124.5t-42 96.5t-72.5 62t-106 22q-114 0 -180.5 -78t-77.5 -227zM269 1395q0 54 28 78t68 24q39 0 68 -24.5t29 -77.5t-29 -78t-68 -25q-40 0 -68 25t-28 78zM644 1395q0 54 28 78t68 24q19 0 36.5 -6t30.5 -18.5t21 -31.5 t8 -46q0 -53 -29 -78t-67 -25q-40 0 -68 25t-28 78z" />
+<glyph unicode="&#xec;" horiz-adv-x="530" d="M174 0v1098h182v-1098h-182zM-34 1548v21h219q16 -34 37.5 -74.5t44.5 -81t47 -78.5t45 -67v-27h-120q-35 28 -76 69.5t-79.5 85.5t-70 84.5t-47.5 67.5z" />
+<glyph unicode="&#xed;" horiz-adv-x="530" d="M174 0v1098h182v-1098h-182zM185 1241v27q22 29 45.5 67t47 78.5t44.5 81t37 74.5h219v-21q-16 -27 -47.5 -67.5t-70 -84.5t-79 -85.5t-75.5 -69.5h-121z" />
+<glyph unicode="&#xee;" horiz-adv-x="530" d="M174 0v1098h182v-1098h-182zM-67 1241v27q26 29 60 67t67.5 78.5t63 81t45.5 74.5h192q16 -34 45.5 -74.5t63 -81t68 -78.5t59.5 -67v-27h-121q-51 34 -105 82.5t-106 103.5q-54 -55 -107 -103.5t-104 -82.5h-121z" />
+<glyph unicode="&#xef;" horiz-adv-x="530" d="M174 0v1098h182v-1098h-182zM-18 1395q0 54 28 78t68 24q39 0 68 -24.5t29 -77.5t-29 -78t-68 -25q-40 0 -68 25t-28 78zM357 1395q0 54 28 78t68 24q19 0 36.5 -6t30.5 -18.5t21 -31.5t8 -46q0 -53 -29 -78t-67 -25q-40 0 -68 25t-28 78z" />
+<glyph unicode="&#xf0;" horiz-adv-x="1182" d="M111 477q0 119 31.5 211t90.5 155t143 95.5t189 32.5q102 0 179 -29.5t120 -89.5l8 4q-31 118 -91 214t-150 177l-256 -153l-74 114l217 131q-40 28 -82.5 55.5t-89.5 53.5l70 123q65 -32 126 -68t120 -80l227 138l74 -113l-195 -117q67 -65 122.5 -143t95 -171.5 t61.5 -204t22 -239.5q0 -142 -33.5 -252t-96 -186t-151.5 -115.5t-200 -39.5q-104 0 -191.5 33t-151 96.5t-99 156t-35.5 211.5zM303 471q0 -76 16.5 -138.5t52 -107.5t90 -69.5t130.5 -24.5q154 0 221.5 99.5t67.5 295.5q0 56 -17 109.5t-52 94.5t-90 66t-130 25 q-77 0 -131.5 -23t-89.5 -67t-51.5 -109.5t-16.5 -150.5z" />
+<glyph unicode="&#xf1;" horiz-adv-x="1206" d="M174 0v1098h148l26 -148h10q25 43 59.5 74.5t75.5 52.5t87 31t94 10q183 0 275.5 -95.5t92.5 -305.5v-717h-182v707q0 130 -52.5 195t-164.5 65q-81 0 -136 -26t-88.5 -77t-48 -125t-14.5 -170v-569h-182zM251 1241q5 60 21.5 109t43 83.5t63.5 53t83 18.5 q42 0 82.5 -17.5t78.5 -38.5t72.5 -38.5t63.5 -17.5q45 0 68 26t38 88h105q-5 -60 -21.5 -108.5t-43 -83t-63.5 -53.5t-83 -19q-40 0 -79.5 17.5t-77.5 39t-73 39t-67 17.5q-45 0 -69 -26.5t-38 -88.5h-104z" />
+<glyph unicode="&#xf2;" horiz-adv-x="1182" d="M113 551q0 136 33.5 241.5t95.5 178t151.5 110t200.5 37.5q103 0 190 -37.5t150.5 -110t99 -178t35.5 -241.5q0 -137 -33.5 -243.5t-96 -179t-151.5 -110.5t-200 -38q-103 0 -190 38t-150.5 110.5t-99 179t-35.5 243.5zM301 551q0 -209 68.5 -314.5t222.5 -105.5 t221.5 105.5t67.5 314.5t-68.5 312.5t-222.5 103.5t-221.5 -103.5t-67.5 -312.5zM353 1548v21h219q16 -34 37.5 -74.5t44.5 -81t47 -78.5t45 -67v-27h-120q-35 28 -76 69.5t-79.5 85.5t-70 84.5t-47.5 67.5z" />
+<glyph unicode="&#xf3;" horiz-adv-x="1182" d="M113 551q0 136 33.5 241.5t95.5 178t151.5 110t200.5 37.5q103 0 190 -37.5t150.5 -110t99 -178t35.5 -241.5q0 -137 -33.5 -243.5t-96 -179t-151.5 -110.5t-200 -38q-103 0 -190 38t-150.5 110.5t-99 179t-35.5 243.5zM301 551q0 -209 68.5 -314.5t222.5 -105.5 t221.5 105.5t67.5 314.5t-68.5 312.5t-222.5 103.5t-221.5 -103.5t-67.5 -312.5zM473 1241v27q22 29 45.5 67t47 78.5t44.5 81t37 74.5h219v-21q-16 -27 -47.5 -67.5t-70 -84.5t-79 -85.5t-75.5 -69.5h-121z" />
+<glyph unicode="&#xf4;" horiz-adv-x="1182" d="M113 551q0 136 33.5 241.5t95.5 178t151.5 110t200.5 37.5q103 0 190 -37.5t150.5 -110t99 -178t35.5 -241.5q0 -137 -33.5 -243.5t-96 -179t-151.5 -110.5t-200 -38q-103 0 -190 38t-150.5 110.5t-99 179t-35.5 243.5zM301 551q0 -209 68.5 -314.5t222.5 -105.5 t221.5 105.5t67.5 314.5t-68.5 312.5t-222.5 103.5t-221.5 -103.5t-67.5 -312.5zM253 1241v27q26 29 60 67t67.5 78.5t63 81t45.5 74.5h192q16 -34 45.5 -74.5t63 -81t68 -78.5t59.5 -67v-27h-121q-51 34 -105 82.5t-106 103.5q-54 -55 -107 -103.5t-104 -82.5h-121z" />
+<glyph unicode="&#xf5;" horiz-adv-x="1182" d="M113 551q0 136 33.5 241.5t95.5 178t151.5 110t200.5 37.5q103 0 190 -37.5t150.5 -110t99 -178t35.5 -241.5q0 -137 -33.5 -243.5t-96 -179t-151.5 -110.5t-200 -38q-103 0 -190 38t-150.5 110.5t-99 179t-35.5 243.5zM301 551q0 -209 68.5 -314.5t222.5 -105.5 t221.5 105.5t67.5 314.5t-68.5 312.5t-222.5 103.5t-221.5 -103.5t-67.5 -312.5zM228 1241q5 60 21.5 109t43 83.5t63.5 53t83 18.5q42 0 82.5 -17.5t78.5 -38.5t72.5 -38.5t63.5 -17.5q45 0 68 26t38 88h105q-5 -60 -21.5 -108.5t-43 -83t-63.5 -53.5t-83 -19 q-40 0 -79.5 17.5t-77.5 39t-73 39t-67 17.5q-45 0 -69 -26.5t-38 -88.5h-104z" />
+<glyph unicode="&#xf6;" horiz-adv-x="1182" d="M113 551q0 136 33.5 241.5t95.5 178t151.5 110t200.5 37.5q103 0 190 -37.5t150.5 -110t99 -178t35.5 -241.5q0 -137 -33.5 -243.5t-96 -179t-151.5 -110.5t-200 -38q-103 0 -190 38t-150.5 110.5t-99 179t-35.5 243.5zM301 551q0 -209 68.5 -314.5t222.5 -105.5 t221.5 105.5t67.5 314.5t-68.5 312.5t-222.5 103.5t-221.5 -103.5t-67.5 -312.5zM300 1395q0 54 28 78t68 24q39 0 68 -24.5t29 -77.5t-29 -78t-68 -25q-40 0 -68 25t-28 78zM675 1395q0 54 28 78t68 24q19 0 36.5 -6t30.5 -18.5t21 -31.5t8 -46q0 -53 -29 -78t-67 -25 q-40 0 -68 25t-28 78z" />
+<glyph unicode="&#xf7;" d="M102 647v150h924v-150h-924zM449 373q0 35 9 58.5t24.5 38.5t36 21.5t44.5 6.5q23 0 44 -6.5t37 -21.5t25 -38.5t9 -58.5q0 -33 -9 -56.5t-25 -39t-37 -22.5t-44 -7q-24 0 -44.5 7t-36 22.5t-24.5 39t-9 56.5zM449 1071q0 35 9 58.5t24.5 38.5t36 21.5t44.5 6.5 q23 0 44 -6.5t37 -21.5t25 -38.5t9 -58.5q0 -33 -9 -56.5t-25 -39t-37 -22.5t-44 -7q-24 0 -44.5 7t-36 22.5t-24.5 39t-9 56.5z" />
+<glyph unicode="&#xf8;" horiz-adv-x="1182" d="M115 551q0 136 33.5 241.5t95.5 178t151.5 110t200.5 37.5q63 0 119.5 -14.5t105.5 -42.5l68 108l131 -73l-80 -129q62 -73 96.5 -177.5t34.5 -238.5q0 -137 -33.5 -243.5t-96 -179t-151.5 -110.5t-200 -38q-125 0 -223 53l-68 -109l-131 74l80 131q-63 72 -98 178.5 t-35 243.5zM303 551q0 -84 9.5 -149.5t31.5 -116.5l397 647q-29 17 -66.5 26t-82.5 9q-154 0 -221.5 -103.5t-67.5 -312.5zM446 164q31 -17 67 -25t81 -8q154 0 221.5 105.5t67.5 314.5q0 159 -39 258z" />
+<glyph unicode="&#xf9;" horiz-adv-x="1206" d="M164 381v717h182v-707q0 -130 53 -195t164 -65q81 0 136 26t88.5 76.5t48 124.5t14.5 170v570h182v-1098h-147l-27 147h-10q-25 -43 -59.5 -74.5t-75.5 -52t-87 -30.5t-94 -10q-91 0 -160 23t-115 72t-69.5 125t-23.5 181zM300 1548v21h219q16 -34 37.5 -74.5t44.5 -81 t47 -78.5t45 -67v-27h-120q-35 28 -76 69.5t-79.5 85.5t-70 84.5t-47.5 67.5z" />
+<glyph unicode="&#xfa;" horiz-adv-x="1206" d="M164 381v717h182v-707q0 -130 53 -195t164 -65q81 0 136 26t88.5 76.5t48 124.5t14.5 170v570h182v-1098h-147l-27 147h-10q-25 -43 -59.5 -74.5t-75.5 -52t-87 -30.5t-94 -10q-91 0 -160 23t-115 72t-69.5 125t-23.5 181zM489 1241v27q22 29 45.5 67t47 78.5t44.5 81 t37 74.5h219v-21q-16 -27 -47.5 -67.5t-70 -84.5t-79 -85.5t-75.5 -69.5h-121z" />
+<glyph unicode="&#xfb;" horiz-adv-x="1206" d="M164 381v717h182v-707q0 -130 53 -195t164 -65q81 0 136 26t88.5 76.5t48 124.5t14.5 170v570h182v-1098h-147l-27 147h-10q-25 -43 -59.5 -74.5t-75.5 -52t-87 -30.5t-94 -10q-91 0 -160 23t-115 72t-69.5 125t-23.5 181zM266 1241v27q26 29 60 67t67.5 78.5t63 81 t45.5 74.5h192q16 -34 45.5 -74.5t63 -81t68 -78.5t59.5 -67v-27h-121q-51 34 -105 82.5t-106 103.5q-54 -55 -107 -103.5t-104 -82.5h-121z" />
+<glyph unicode="&#xfc;" horiz-adv-x="1206" d="M164 381v717h182v-707q0 -130 53 -195t164 -65q81 0 136 26t88.5 76.5t48 124.5t14.5 170v570h182v-1098h-147l-27 147h-10q-25 -43 -59.5 -74.5t-75.5 -52t-87 -30.5t-94 -10q-91 0 -160 23t-115 72t-69.5 125t-23.5 181zM309 1395q0 54 28 78t68 24q39 0 68 -24.5 t29 -77.5t-29 -78t-68 -25q-40 0 -68 25t-28 78zM684 1395q0 54 28 78t68 24q19 0 36.5 -6t30.5 -18.5t21 -31.5t8 -46q0 -53 -29 -78t-67 -25q-40 0 -68 25t-28 78z" />
+<glyph unicode="&#xfd;" horiz-adv-x="1001" d="M10 1098h189l215 -613q14 -40 28.5 -84t27 -88t21.5 -85t13 -76h6q5 25 16 68t24.5 91.5t28 95.5t25.5 80l199 611h188l-434 -1241q-28 -81 -60.5 -145.5t-75.5 -109.5t-101 -69.5t-138 -24.5q-52 0 -90 5.5t-65 11.5v145q21 -5 53 -8.5t67 -3.5q48 0 83 11.5t61 33.5 t44.5 54t33.5 73l57 160zM407 1241v27q22 29 45.5 67t47 78.5t44.5 81t37 74.5h219v-21q-16 -27 -47.5 -67.5t-70 -84.5t-79 -85.5t-75.5 -69.5h-121z" />
+<glyph unicode="&#xfe;" horiz-adv-x="1200" d="M174 -492v2048h182v-458l-8 -148h8q23 35 52 65.5t67.5 53t86.5 36t108 13.5q94 0 171 -36t131.5 -107.5t84.5 -177.5t30 -246q0 -141 -30 -247.5t-84.5 -178.5t-131.5 -108.5t-171 -36.5q-59 0 -107 13t-86.5 34.5t-68 50.5t-52.5 61h-12q3 -34 6 -65q2 -26 4 -53.5 t2 -43.5v-469h-182zM356 551q0 -101 13.5 -179.5t46 -132t86.5 -81t135 -27.5q135 0 198.5 109t63.5 313q0 208 -63.5 311t-200.5 103q-76 0 -128.5 -23t-85 -70t-48 -117t-17.5 -165v-41z" />
+<glyph unicode="&#xff;" horiz-adv-x="1001" d="M10 1098h189l215 -613q14 -40 28.5 -84t27 -88t21.5 -85t13 -76h6q5 25 16 68t24.5 91.5t28 95.5t25.5 80l199 611h188l-434 -1241q-28 -81 -60.5 -145.5t-75.5 -109.5t-101 -69.5t-138 -24.5q-52 0 -90 5.5t-65 11.5v145q21 -5 53 -8.5t67 -3.5q48 0 83 11.5t61 33.5 t44.5 54t33.5 73l57 160zM228 1395q0 54 28 78t68 24q39 0 68 -24.5t29 -77.5t-29 -78t-68 -25q-40 0 -68 25t-28 78zM603 1395q0 54 28 78t68 24q19 0 36.5 -6t30.5 -18.5t21 -31.5t8 -46q0 -53 -29 -78t-67 -25q-40 0 -68 25t-28 78z" />
+<glyph unicode="&#x131;" horiz-adv-x="530" d="M174 0v1098h182v-1098h-182z" />
+<glyph unicode="&#x152;" horiz-adv-x="1823" d="M125 735q0 170 38 308.5t117 236.5t199 151.5t283 53.5q98 0 182 -23h756v-164h-574v-452h535v-162h-535v-520h574v-164h-758q-43 -9 -88.5 -14.5t-93.5 -5.5q-163 0 -282.5 54t-198 153t-116.5 238.5t-38 309.5zM322 733q0 -137 26 -246.5t79.5 -186t136 -117 t196.5 -40.5q52 0 97 9t83 24v1112q-38 16 -82.5 24.5t-95.5 8.5q-114 0 -197 -40.5t-137 -116t-80 -184.5t-26 -247z" />
+<glyph unicode="&#x153;" horiz-adv-x="1864" d="M113 551q0 136 33.5 241.5t95.5 178t151.5 110t200.5 37.5q121 0 218.5 -55.5t160.5 -161.5q60 105 152.5 161t209.5 56q99 0 178 -35.5t134 -100t84.5 -155t29.5 -200.5v-113h-692q5 -193 81.5 -284t227.5 -91q51 0 94.5 5t84 14.5t78.5 24t77 32.5v-162 q-40 -19 -78.5 -33t-79 -23t-84 -13t-94.5 -4q-130 0 -232 56t-167 165q-63 -109 -162 -165t-227 -56q-103 0 -190 38t-150.5 110.5t-99 179t-35.5 243.5zM301 551q0 -209 68.5 -314.5t222.5 -105.5q150 0 219.5 100.5t69.5 309.5q0 220 -70 323t-221 103 q-154 0 -221.5 -103.5t-67.5 -312.5zM1073 662h492q0 68 -13.5 124.5t-42 96.5t-72.5 62t-106 22q-114 0 -180.5 -78t-77.5 -227z" />
+<glyph unicode="&#x178;" horiz-adv-x="1079" d="M0 1462h203l336 -739l340 739h200l-446 -893v-569h-187v559zM257 1733q0 54 28 78t68 24q39 0 68 -24.5t29 -77.5t-29 -78t-68 -25q-40 0 -68 25t-28 78zM632 1733q0 54 28 78t68 24q19 0 36.5 -6t30.5 -18.5t21 -31.5t8 -46q0 -53 -29 -78t-67 -25q-40 0 -68 25t-28 78z " />
+<glyph unicode="&#x2c6;" horiz-adv-x="1182" d="M258 1241v27q26 29 60 67t67.5 78.5t63 81t45.5 74.5h192q16 -34 45.5 -74.5t63 -81t68 -78.5t59.5 -67v-27h-121q-51 34 -105 82.5t-106 103.5q-54 -55 -107 -103.5t-104 -82.5h-121z" />
+<glyph unicode="&#x2da;" horiz-adv-x="1182" d="M365 1456q0 51 16 90.5t45.5 67.5t70.5 42.5t91 14.5q48 0 90 -14.5t73 -42t48.5 -67t17.5 -89.5q0 -51 -17.5 -91.5t-48 -68.5t-72.5 -42.5t-91 -14.5q-50 0 -91 14.5t-70.5 42.5t-45.5 67.5t-16 90.5zM475 1456q0 -53 28.5 -83t84.5 -30q49 0 80.5 30t31.5 83t-31.5 83 t-80.5 30q-50 0 -81.5 -30t-31.5 -83z" />
+<glyph unicode="&#x2dc;" horiz-adv-x="1182" d="M258 1241q5 60 21.5 109t43 83.5t63.5 53t83 18.5q42 0 82.5 -17.5t78.5 -38.5t72.5 -38.5t63.5 -17.5q45 0 68 26t38 88h105q-5 -60 -21.5 -108.5t-43 -83t-63.5 -53.5t-83 -19q-40 0 -79.5 17.5t-77.5 39t-73 39t-67 17.5q-45 0 -69 -26.5t-38 -88.5h-104z" />
+<glyph unicode="&#x2000;" horiz-adv-x="953" />
+<glyph unicode="&#x2001;" horiz-adv-x="1907" />
+<glyph unicode="&#x2002;" horiz-adv-x="953" />
+<glyph unicode="&#x2003;" horiz-adv-x="1907" />
+<glyph unicode="&#x2004;" horiz-adv-x="635" />
+<glyph unicode="&#x2005;" horiz-adv-x="476" />
+<glyph unicode="&#x2006;" horiz-adv-x="317" />
+<glyph unicode="&#x2007;" horiz-adv-x="317" />
+<glyph unicode="&#x2008;" horiz-adv-x="238" />
+<glyph unicode="&#x2009;" horiz-adv-x="381" />
+<glyph unicode="&#x200a;" horiz-adv-x="105" />
+<glyph unicode="&#x2010;" horiz-adv-x="659" d="M82 465v168h496v-168h-496z" />
+<glyph unicode="&#x2011;" horiz-adv-x="659" d="M82 465v168h496v-168h-496z" />
+<glyph unicode="&#x2012;" horiz-adv-x="659" d="M82 465v168h496v-168h-496z" />
+<glyph unicode="&#x2013;" horiz-adv-x="1024" d="M82 465v168h860v-168h-860z" />
+<glyph unicode="&#x2014;" horiz-adv-x="2048" d="M82 465v168h1884v-168h-1884z" />
+<glyph unicode="&#x2018;" horiz-adv-x="358" d="M23 983q14 54 33.5 115t42.5 123t49 123.5t51 117.5h137q-15 -61 -29.5 -127t-27.5 -131.5t-24 -127.5t-19 -115h-199z" />
+<glyph unicode="&#x2019;" horiz-adv-x="358" d="M23 961q14 60 28.5 126t28 132t24.5 128t19 115h199l14 -22q-14 -55 -33.5 -115.5t-43 -123t-49 -123.5t-50.5 -117h-137z" />
+<glyph unicode="&#x201a;" horiz-adv-x="512" d="M63 -264q15 61 29.5 127t28 131.5t24.5 128t19 115.5h198l15 -23q-14 -54 -33.5 -115t-43 -123t-49 -123.5t-50.5 -117.5h-138z" />
+<glyph unicode="&#x201c;" horiz-adv-x="743" d="M23 983q14 54 33.5 115t42.5 123t49 123.5t51 117.5h137q-15 -61 -29.5 -127t-27.5 -131.5t-24 -127.5t-19 -115h-199zM408 983q14 54 33.5 115t42.5 123t49 123.5t51 117.5h137q-15 -61 -29.5 -127t-27.5 -131.5t-24 -127.5t-19 -115h-199z" />
+<glyph unicode="&#x201d;" horiz-adv-x="743" d="M23 961q14 60 28.5 126t28 132t24.5 128t19 115h199l14 -22q-14 -55 -33.5 -115.5t-43 -123t-49 -123.5t-50.5 -117h-137zM408 961q14 60 28.5 126t28 132t24.5 128t19 115h199l14 -22q-14 -55 -33.5 -115.5t-43 -123t-49 -123.5t-50.5 -117h-137z" />
+<glyph unicode="&#x201e;" horiz-adv-x="897" d="M63 -264q15 61 29.5 127t28 131.5t24.5 128t19 115.5h198l15 -23q-14 -54 -33.5 -115t-43 -123t-49 -123.5t-50.5 -117.5h-138zM449 -264q14 61 28.5 127t28 131.5t24.5 128t19 115.5h199l14 -23q-14 -54 -33.5 -115t-43 -123t-49 -123.5t-50.5 -117.5h-137z" />
+<glyph unicode="&#x2022;" horiz-adv-x="770" d="M150 748q0 71 18 121t49.5 81.5t74.5 45.5t93 14q49 0 92 -14t75 -45.5t50.5 -81.5t18.5 -121q0 -70 -18.5 -120t-50.5 -81.5t-75 -46.5t-92 -15q-50 0 -93 15t-74.5 46.5t-49.5 81.5t-18 120z" />
+<glyph unicode="&#x2026;" horiz-adv-x="1647" d="M147 111q0 38 10 64.5t27 43t40 24t50 7.5q26 0 49.5 -7.5t40.5 -24t27 -43t10 -64.5q0 -37 -10 -63.5t-27 -43.5t-40.5 -25t-49.5 -8q-27 0 -50 8t-40 25t-27 43.5t-10 63.5zM696 111q0 38 10 64.5t27 43t40 24t50 7.5q26 0 49.5 -7.5t40.5 -24t27 -43t10 -64.5 q0 -37 -10 -63.5t-27 -43.5t-40.5 -25t-49.5 -8q-27 0 -50 8t-40 25t-27 43.5t-10 63.5zM1245 111q0 38 9.5 64.5t27 43t40.5 24t50 7.5q26 0 49.5 -7.5t40.5 -24t27 -43t10 -64.5q0 -37 -10 -63.5t-27 -43.5t-40.5 -25t-49.5 -8q-54 0 -90.5 33t-36.5 107z" />
+<glyph unicode="&#x202f;" horiz-adv-x="381" />
+<glyph unicode="&#x2039;" horiz-adv-x="590" d="M82 526v27l309 414l117 -78l-238 -348l238 -348l-117 -78z" />
+<glyph unicode="&#x203a;" horiz-adv-x="590" d="M82 193l237 348l-237 348l117 78l309 -414v-27l-309 -411z" />
+<glyph unicode="&#x2044;" horiz-adv-x="266" d="M-352 0l811 1462h157l-811 -1462h-157z" />
+<glyph unicode="&#x205f;" horiz-adv-x="476" />
+<glyph unicode="&#x20ac;" d="M63 502v137h148q-2 23 -2 38v44q0 22 1 45t1 31h-148v137h160q18 125 62 226t111.5 173t159.5 111t206 39q97 0 177 -21.5t159 -70.5l-80 -146q-51 31 -110.5 52.5t-131.5 21.5q-69 0 -128 -26t-106 -75.5t-80.5 -121t-51.5 -162.5h432v-137h-447q0 -15 -1 -29 q-1 -12 -1 -25v-22v-39q0 -21 2 -43h385v-137h-366q34 -175 126.5 -267t241.5 -92q75 0 142.5 16t126.5 42v-162q-59 -28 -125.5 -43.5t-157.5 -15.5q-115 0 -206 36.5t-158.5 104t-111.5 164t-65 217.5h-164z" />
+<glyph unicode="&#x2122;" horiz-adv-x="1534" d="M37 1354v108h522v-108h-199v-613h-127v613h-196zM625 741v721h186l180 -551l191 551h178v-721h-127v428q0 9 0.5 24t0.5 33l2 34q0 18 1 30h-6l-195 -549h-100l-186 549h-7q1 -16 2 -33t1.5 -32t1 -27t0.5 -18v-439h-123z" />
+<glyph unicode="&#xe000;" horiz-adv-x="1100" d="M0 1100h1100v-1100h-1100v1100z" />
+<glyph unicode="&#xfb01;" horiz-adv-x="1204" d="M29 961v75l194 68v96q0 107 22.5 177.5t65 112.5t104.5 59.5t140 17.5q59 0 108.5 -11.5t88.5 -25.5l-47 -141q-31 11 -67.5 19.5t-76.5 8.5t-69 -9.5t-48 -33.5t-28.5 -65.5t-9.5 -106.5v-104h245v-137h-245v-961h-183v961h-194zM834 1395q0 60 30.5 87t75.5 27 q22 0 41.5 -6.5t34 -20.5t23 -35.5t8.5 -51.5q0 -58 -31.5 -86.5t-75.5 -28.5q-45 0 -75.5 28t-30.5 87zM848 0v1098h182v-1098h-182z" />
+<glyph unicode="&#xfb02;" horiz-adv-x="1204" d="M29 961v75l194 68v96q0 107 22.5 177.5t65 112.5t104.5 59.5t140 17.5q59 0 108.5 -11.5t88.5 -25.5l-47 -141q-31 11 -67.5 19.5t-76.5 8.5t-69 -9.5t-48 -33.5t-28.5 -65.5t-9.5 -106.5v-104h245v-137h-245v-961h-183v961h-194zM848 0v1556h182v-1556h-182z" />
+<glyph unicode="&#xfb03;" horiz-adv-x="1878" d="M29 961v75l194 68v96q0 107 22.5 177.5t65 112.5t104.5 59.5t140 17.5q59 0 108.5 -11.5t88.5 -25.5l-47 -141q-31 11 -67.5 19.5t-76.5 8.5t-69 -9.5t-48 -33.5t-28.5 -65.5t-9.5 -106.5v-104h245v-137h-245v-961h-183v961h-194zM703 961v75l194 68v96q0 107 22.5 177.5 t65 112.5t104.5 59.5t140 17.5q59 0 108.5 -11.5t88.5 -25.5l-47 -141q-31 11 -67.5 19.5t-76.5 8.5t-69 -9.5t-48 -33.5t-28.5 -65.5t-9.5 -106.5v-104h245v-137h-245v-961h-183v961h-194zM1508 1395q0 60 30.5 87t75.5 27q22 0 41.5 -6.5t34 -20.5t23 -35.5t8.5 -51.5 q0 -58 -31.5 -86.5t-75.5 -28.5q-45 0 -75.5 28t-30.5 87zM1522 0v1098h182v-1098h-182z" />
+<glyph unicode="&#xfb04;" horiz-adv-x="1878" d="M29 961v75l194 68v96q0 107 22.5 177.5t65 112.5t104.5 59.5t140 17.5q59 0 108.5 -11.5t88.5 -25.5l-47 -141q-31 11 -67.5 19.5t-76.5 8.5t-69 -9.5t-48 -33.5t-28.5 -65.5t-9.5 -106.5v-104h245v-137h-245v-961h-183v961h-194zM703 961v75l194 68v96q0 107 22.5 177.5 t65 112.5t104.5 59.5t140 17.5q59 0 108.5 -11.5t88.5 -25.5l-47 -141q-31 11 -67.5 19.5t-76.5 8.5t-69 -9.5t-48 -33.5t-28.5 -65.5t-9.5 -106.5v-104h245v-137h-245v-961h-183v961h-194zM1522 0v1556h182v-1556h-182z" />
+<glyph horiz-adv-x="678" d="M12 778v111l377 579h141v-563h125v-127h-125v-192h-143v192h-375zM158 905h229v195q0 42 1.5 91.5t4.5 98.5q-5 -11 -15 -29.5t-21 -39.5t-23 -41l-21 -35z" />
+</font>
+</defs></svg> 
\ No newline at end of file
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/manuals/OpenAIRE_registration.pdf
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/manuals/OpenAIRE_registration.pdf
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/manuals/OpenAIRE_registration.pdf	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/manuals/OpenAIRE_registration.pdf	(revision 47450)

Property changes on: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/manuals/OpenAIRE_registration.pdf
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/WEB-INF/log4j.properties
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/WEB-INF/log4j.properties	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/WEB-INF/log4j.properties	(revision 47450)
@@ -0,0 +1,36 @@
+log4j.rootLogger = WARN, R
+
+log4j.logger.eu.dnetlib = INFO
+log4j.logger.org.springframework = INFO, S
+log4j.additivity.org.springframework = false
+
+log4j.logger.com.opensymphony.xwork2.ognl.OgnlValueStack = FATAL
+log4j.logger.com.opensymphony.xwork2.ObjectFactory = FATAL
+
+log4j.appender.R=org.apache.log4j.RollingFileAppender
+log4j.appender.R.File=/var/log/dnet/validator/validator-admin.log
+log4j.appender.R.MaxFileSize=10MB
+log4j.appender.R.MaxBackupIndex=10
+log4j.appender.R.layout=org.apache.log4j.PatternLayout
+log4j.appender.R.layout.ConversionPattern= %d %p %t [%c] - %m%n
+
+log4j.appender.S=org.apache.log4j.RollingFileAppender
+log4j.appender.S.File=/var/log/dnet/validator/validator-admin-spring.log
+log4j.appender.S.MaxFileSize=10MB
+log4j.appender.S.MaxBackupIndex=10
+log4j.appender.S.layout=org.apache.log4j.PatternLayout
+log4j.appender.S.layout.ConversionPattern= %d %p %t [%c] - %m%n
+
+#log4j.rootLogger = ERROR, stdout
+#
+#log4j.logger.gr.uoa = INFO, stdout
+#log4j.logger.org.springframework = INFO, stdout
+#log4j.additivity.org.springframework = false
+#
+#log4j.logger.com.opensymphony.xwork2.ognl.OgnlValueStack = FATAL, stdout
+#log4j.logger.com.opensymphony.xwork2.ObjectFactory = FATAL, stdout
+#
+#log4j.appender.stdout=org.apache.log4j.ConsoleAppender
+#log4j.appender.stdout.Target=System.out
+#log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
+#log4j.appender.stdout.layout.ConversionPattern=%d %p %t [%c] - %m%n
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/deploy.info
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/deploy.info	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/deploy.info	(revision 47450)
@@ -0,0 +1,10 @@
+{
+  "type_source": "SVN", 
+  "goal": "package -U -T 4C source:jar", 
+  "url": "http://svn-public.driver.research-infrastructures.eu/driver/dnet40/modules/uoa-validator-admin/trunk", 
+  "deploy_repository": "dnet4-snapshots", 
+  "version": "4", 
+  "mail": "nikonas@di.uoa.gr, antleb@di.uoa.gr, kiatrop@di.uoa.gr", 
+  "deploy_repository_url": "http://maven.research-infrastructures.eu/nexus/content/repositories/dnet4-snapshots", 
+  "name": "uoa-validator-admin"
+}
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/chooseRuleForEdit.jsp
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/chooseRuleForEdit.jsp	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/chooseRuleForEdit.jsp	(revision 47450)
@@ -0,0 +1,55 @@
+<%@ page contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<%@ taglib prefix="s" uri="/struts-tags"%>
+<html>
+<head>
+<link href="jsps/favicon.ico" rel="shortcut icon" type="image/x-icon" />
+<link href="jsps/style.css" rel="stylesheet" type="text/css" media="screen" />
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title><s:text name="chooseRuleForEdit.title"/></title>
+</head>
+<body class="left">
+<div id="wrapper">
+	<jsp:include page="menu.jsp"/>
+	<div id="page">
+	<div id="page-bgtop">
+	<div id="middle">
+            <div class="middle-b">
+                <div class="background">
+			 <div id="left">
+                              <div id="left_container" >
+                                   <h2 class="helpHdr">Info</h2>
+                                   <s:text name="help.admin"/>
+                              </div>
+                         </div>
+                        <div id="main">
+                        <div id="main_container" class="clearfix">
+			<div id="content">
+				<h2 class="title"><s:text name="chooseRuleForEdit.title"/></h2>
+                               <div class="entry">
+					<s:form action="prepareEditRule">
+                                                <s:if test="%{#session.isAdmin != null && #session.isAdmin.equals(\"true\")}">
+                                                        <s:select name="ruleId" list="rules" listValue="name" listKey="id"  key="chooseRuleForEdit.label"/>
+                                                		<s:hidden name="funct" value="edit"/>
+                                                </s:if>
+                                                <s:else>
+                                                        <s:select name="ruleId" list="rules" listValue="name" listKey="id"  key="chooseRuleForEdit.label2"/>
+                                                </s:else>
+                                                <s:submit cssClass="button-default"/>
+                                        </s:form>
+                                </div>
+			</div>
+			</div>
+			</div>
+		</div>
+	</div>
+	</div>
+	</div>
+
+    <div id="footer">
+                <jsp:include page="footer.jsp"/>
+        </div>
+</div>
+</div>
+</body>
+</html>
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/addRule.jsp
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/addRule.jsp	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/addRule.jsp	(revision 47450)
@@ -0,0 +1,96 @@
+<%@ page contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<%@ taglib prefix="s" uri="/struts-tags"%>
+<html>
+<head>
+<link href="jsps/favicon.ico" rel="shortcut icon" type="image/x-icon" />
+<link href="jsps/style.css" rel="stylesheet" type="text/css" media="screen" />
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title><s:text name="addRule.title"/></title>
+</head>
+<body class="left">
+<div id="wrapper">
+	<jsp:include page="menu.jsp"/>
+	<div id="page">
+	<div id="page-bgtop">
+	<div id="middle">
+            <div class="middle-b">
+                <div class="background">
+
+			 <div id="left">
+                              <div id="left_container" >
+                                                <h2 class="helpHdr">Info</h2>
+                                                <s:text name="help.admin"/>
+                              </div>
+                         </div>
+                                <div id="main">
+                        <div id="main_container" class="clearfix">
+		<div id="content">
+				<h2 class="title"><s:text name="addRule.title"/></h2>
+				<p class="meta"><a href='<s:url value="/jsps/help.jsp#addRule"/>' target="_blank"><s:text name="help"/></a></p>
+				<div class="entry">
+					<s:form action="addRule">
+<%-- 						<s:hidden name="type"/> --%>
+						<s:hidden name="jobType"/>
+						<s:hidden name="forCris"/>
+						<s:iterator value="labels" var="label">
+							<s:set name="dscr" value="%{#label+\".description\"}"/>
+							<s:set name="tltp" value="%{#label+\".name\"}"/>
+							<s:if test="%{#label.equals(\"xmlvocabulary_rule.terms\") || #label.equals(\"rules.description\")}">
+								<s:textarea name="inputs" title="%{getText(#dscr)}" label="%{getText(#tltp)}" cols="50" rows="5"/>
+							</s:if>
+							<s:elseif test="%{#label.equals(\"xmlcrisclassvocabulary_rule.terms\") || #label.equals(\"xmlcrisreferentialintegrity_rule.terms\")}">
+								<s:textarea name="inputs" title="%{getText(#dscr)}" label="%{getText(#tltp)}" cols="50" rows="5"/>
+							</s:elseif>
+                            <s:elseif test="%{#label.equals(\"xmlvocabulary_rule.terms_type\")}">
+                                <s:select label="%{getText(#tltp)}" name="inputs" list="#{'whitelist':'whitelist', 'blacklist':'blacklist'}" title="%{getText(#dscr)}"/>
+							</s:elseif>
+							<s:elseif test="%{#label.equals(\"rules.mandatory\")}">
+								<s:select label="%{getText(#tltp)}" name="inputs" list="#{'true':'true', 'false':'false'}" title="%{getText(#dscr)}"/>
+							</s:elseif>
+							<s:elseif test="%{#label.equals(\"rules.cris_entity\")}">
+                                <s:select label="%{getText(#tltp)}" name="inputs" list="entityTypes" value="%{rule.entity_type}" title="%{getText(#dscr)}"/>
+                            </s:elseif>
+<%-- 							<s:elseif test="%{#label.equals(\"rules.provider_information\")}"> --%>
+<%-- 								<s:if test="%{jobType.equals(\"usage\")}"> --%>
+<%-- 									<s:textfield name="inputs" title="%{getText(#dscr)}" label="%{getText(#tltp)}"/> --%>
+<%-- 								</s:if> --%>
+<%-- 							</s:elseif> --%>
+							<s:elseif test="%{#label.matches('.*success')}">
+								<s:select label="%{getText(#tltp)}" name="inputs" list="#{'>0':'>0', 'all':'all', '0':'0', '1':'1'}"  title="%{getText(#dscr)}"/>
+							</s:elseif>
+							<s:elseif test="%{#label.equals(\"chain_rule.type\")}">
+								<s:select label="%{getText(#tltp)}" name="inputs" list="#{'or':'or', 'and':'and', 'horn':'horn'}" title="%{getText(#dscr)}"/>
+							</s:elseif>							
+							<s:elseif test="%{#label.equals(\"chain_rule.rule_1\")}">
+								<s:select name="inputs" list="rules" listValue="ruleName" listKey="ruleId" label="%{getText(#tltp)}" title="%{getText(#dscr)}"/>
+							</s:elseif>							
+							<s:elseif test="%{#label.equals(\"chain_rule.rule_2\")}">
+								<s:select name="inputs" list="rules" listValue="ruleName" listKey="ruleId" label="%{getText(#tltp)}" title="%{getText(#dscr)}"/>
+							</s:elseif>		
+							<s:else>
+								<s:textfield name="inputs" title="%{getText(#dscr)}" label="%{getText(#tltp)}"/>
+							</s:else>
+						</s:iterator>
+<%-- 						<s:if test="%{forCris == true}"> --%>
+<%-- 							<s:select name="entityType" list="entityTypes" label="%{getText(\"jobs.entity_type.name\")}" title="%{getText(\"jobs.entity_type.description\")}" /> --%>
+<%-- 						</s:if> --%>
+<%-- 						<s:textfield name="jobType" value="%{#jobType}" label="%{getText(\"jobs.job_type.name\")}" title="%{getText(\"jobs.job_type.description\")}" readonly='true'/> --%>
+						<s:textfield name="type" label="%{getText(\"rules.type.name\")}" title="%{getText(\"rules.type.description\")}" readonly='true'/>
+						<s:submit value="Insert" cssClass="button-default"/>
+					</s:form>
+				</div>
+			</div>
+		</div>
+	</div>
+	</div>
+	</div>
+	</div>
+	</div>
+    <div id="footer">
+                <jsp:include page="footer.jsp"/>
+        </div>
+        </div>
+        </div>
+</body>
+</html>
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/createRuleSet.jsp
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/createRuleSet.jsp	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/createRuleSet.jsp	(revision 47450)
@@ -0,0 +1,106 @@
+<%@ page contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<%@ taglib prefix="s" uri="/struts-tags"%>
+<html>
+<head>
+<link href="jsps/favicon.ico" rel="shortcut icon" type="image/x-icon" />
+<link href="jsps/style.css" rel="stylesheet" type="text/css" media="screen" />
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<s:if test="%{#session.isAdmin != null && #session.isAdmin.equals(\"true\")}">
+        <s:set name="isAdmin" value="true"/>
+</s:if>
+<s:else>
+        <s:set name="isAdmin" value="false"/>
+</s:else>
+<title>
+        <s:if test="%{#isAdmin}">
+                <s:text name="createRuleSet.title"/>
+        </s:if>
+        <s:else>
+                <s:text name="createRuleSet.title2"/>
+        </s:else>
+</title>
+</head>
+<body class="left">
+<div id="wrapper">
+	<jsp:include page="menu.jsp"/>
+	<div id="page">
+	<div id="page-bgtop">
+	<div id="middle">
+            <div class="middle-b">
+                <div class="background">
+			 <div id="left">
+                              <div id="left_container" >
+                                   <h2 class="helpHdr">Info</h2>
+                                   <s:text name="help.admin"/>
+                              </div>
+                         </div>
+                        <div id="main">
+                        <div id="main_container" class="clearfix">
+			<div id="content">
+				<s:if test="%{#isAdmin}">
+                                        <h2 class="title"><s:text name="createRuleSet.title"/></h2>
+                                </s:if>
+                                <s:else>
+                                        <h2 class="title"><s:text name="createRuleSet.title2"/></h2>
+                                </s:else>
+                                <div class="entry">
+                                        <s:form action="createRuleSet">
+                                                <s:hidden name="funct"/>
+                                                <s:hidden name="ruleSet.id"/>
+                                                <s:textfield name="ruleSet.name" key="createRuleSet.name"/>
+                                                <s:textfield name="ruleSet.shortName" key="createRuleSet.shortName"/>
+                                                <s:textfield name="ruleSet.description" key="createRuleSet.description"/>
+                                                <s:textfield name="ruleSet.guidelinesAcronym" key="createRuleSet.guidelinesAcronym"/>
+<%--                                                 <s:textfield name="ruleSet.visibility" key="createRuleSet.visibility"/> --%>
+                                                 
+                                                <s:select key="createRuleSet.visibility"
+                                                       name="ruleSet.visibility"
+                                                       list="deployEnvironments"
+                                                       multiple="true"
+                                                       size="%{#ruleSet.visibility.size()}"
+                                                       value="%{ruleSet.visibility}"
+                                                       disabled='%{!#isAdmin}'
+                                                /> 
+                                                 
+                                                <s:select key="createRuleSet.rulesContent"
+                                                       name="chosenContentRules"
+                                                       list="rulesContent"
+                                                       listKey="id"
+                                                       listValue="name"
+                                                       multiple="true"
+                                                       size="%{#rulesContent.size()}"
+                                                       value="%{ruleIdsContent}"
+                                                       disabled='%{!#isAdmin}'
+                                                />
+                                                <s:select key="createRuleSet.rulesUsage"
+                                                       name="chosenUsageRules"
+                                                       list="rulesUsage"
+                                                       listKey="id"
+                                                       listValue="name"
+                                                       multiple="true"
+                                                       size="%{#rulesUsage.size()}"
+                                                       value="%{ruleIdsUsage}"
+                                                       disabled='%{!#isAdmin}'
+                                                />
+
+                                                <s:if test="%{#isAdmin}">
+                                                	<s:submit cssClass="button-default"/>
+                                                </s:if>
+                                        </s:form>
+                                </div>
+
+			</div>
+			</div>
+			</div>
+		</div>
+	</div>
+	</div>
+	</div>
+    <div id="footer">
+                <jsp:include page="footer.jsp"/>
+        </div>
+	</div>
+</div>
+</body>
+</html>
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/images/ajax_loader_blue_32.gif
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/images/ajax_loader_blue_32.gif
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/images/ajax_loader_blue_32.gif	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/images/ajax_loader_blue_32.gif	(revision 47450)

Property changes on: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/images/ajax_loader_blue_32.gif
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/images/re3data.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/images/re3data.png
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/images/re3data.png	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/images/re3data.png	(revision 47450)

Property changes on: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/images/re3data.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/fonts/kreon-regular-webfont.ttf
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/fonts/kreon-regular-webfont.ttf
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/fonts/kreon-regular-webfont.ttf	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/fonts/kreon-regular-webfont.ttf	(revision 47450)

Property changes on: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/fonts/kreon-regular-webfont.ttf
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/images/button_arrow_right.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/images/button_arrow_right.png
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/images/button_arrow_right.png	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/images/button_arrow_right.png	(revision 47450)

Property changes on: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/images/button_arrow_right.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/images/warning.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/images/warning.png
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/images/warning.png	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/images/warning.png	(revision 47450)

Property changes on: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/images/warning.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/images/menu_dropdown_level1_parent_blue.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/images/menu_dropdown_level1_parent_blue.png
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/images/menu_dropdown_level1_parent_blue.png	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/images/menu_dropdown_level1_parent_blue.png	(revision 47450)

Property changes on: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/images/menu_dropdown_level1_parent_blue.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/images/box_warning.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/images/box_warning.png
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/images/box_warning.png	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/images/box_warning.png	(revision 47450)

Property changes on: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/images/box_warning.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/fonts/OpenSans-Light-webfont.svg
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/fonts/OpenSans-Light-webfont.svg	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/fonts/OpenSans-Light-webfont.svg	(revision 47450)
@@ -0,0 +1,252 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" >
+<svg xmlns="http://www.w3.org/2000/svg">
+<metadata>
+This is a custom SVG webfont generated by Font Squirrel.
+Copyright   : Digitized data copyright  20102011 Google Corporation
+Foundry     : Ascender Corporation
+Foundry URL : httpwwwascendercorpcom
+</metadata>
+<defs>
+<font id="OpenSansLight" horiz-adv-x="1169" >
+<font-face units-per-em="2048" ascent="1638" descent="-410" />
+<missing-glyph horiz-adv-x="532" />
+<glyph unicode=" "  horiz-adv-x="532" />
+<glyph unicode="&#x09;" horiz-adv-x="532" />
+<glyph unicode="&#xa0;" horiz-adv-x="532" />
+<glyph unicode="!" horiz-adv-x="492" d="M164 78q0 98 80 98q82 0 82 -98t-82 -98q-80 0 -80 98zM186 1462h119l-29 -1085h-61z" />
+<glyph unicode="&#x22;" horiz-adv-x="723" d="M133 1462h127l-33 -528h-61zM463 1462h127l-33 -528h-61z" />
+<glyph unicode="#" horiz-adv-x="1323" d="M55 451v79h299l76 398h-297v80h311l86 454h91l-89 -454h365l88 454h86l-88 -454h285v-80h-301l-76 -398h303v-79h-320l-86 -451h-90l88 451h-360l-86 -451h-88l86 451h-283zM440 530h363l78 398h-363z" />
+<glyph unicode="$" d="M164 186v103q75 -36 179.5 -61t193.5 -25v508q-145 44 -215 88t-102 104t-32 146q0 124 94.5 208.5t254.5 104.5v192h81v-190q197 -9 351 -72l-33 -90q-141 62 -318 72v-486q213 -66 293 -144t80 -204q0 -133 -99 -217t-274 -106v-236h-81v232q-92 2 -200.5 22.5 t-172.5 50.5zM297 1049q0 -86 57 -141t183 -93v453q-119 -16 -179.5 -76t-60.5 -143zM618 209q122 13 192.5 75t70.5 160q0 85 -63 140.5t-200 95.5v-471z" />
+<glyph unicode="%" horiz-adv-x="1653" d="M113 1026q0 223 72 340t212 117q139 0 215 -120.5t76 -336.5q0 -226 -75 -343.5t-216 -117.5q-133 0 -208.5 120.5t-75.5 340.5zM211 1026q0 -186 45 -279.5t141 -93.5q193 0 193 373q0 184 -49.5 276.5t-143.5 92.5q-96 0 -141 -92.5t-45 -276.5zM373 0l811 1462h96 l-811 -1462h-96zM965 438q0 225 73.5 341t212.5 116q137 0 213 -120t76 -337q0 -226 -74 -343.5t-215 -117.5q-136 0 -211 121.5t-75 339.5zM1063 438q0 -185 45 -277.5t141 -92.5q193 0 193 370q0 369 -193 369q-96 0 -141 -91.5t-45 -277.5z" />
+<glyph unicode="&#x26;" horiz-adv-x="1460" d="M123 371q0 138 73.5 235t274.5 205l-75 82q-66 71 -98 139t-32 142q0 143 95.5 227t256.5 84q155 0 245.5 -81t90.5 -224q0 -105 -70 -192.5t-253 -194.5l452 -457q61 72 104 157t75 201h96q-63 -246 -209 -426l266 -268h-135l-193 197q-92 -90 -164 -131.5t-157.5 -63.5 t-194.5 -22q-209 0 -328.5 103t-119.5 288zM227 375q0 -143 93 -224t258 -81q128 0 234.5 43.5t209.5 146.5l-483 485q-136 -72 -196.5 -122.5t-88 -109.5t-27.5 -138zM373 1176q0 -79 40 -146t152 -174q159 85 221 159t62 169q0 94 -62 152.5t-168 58.5q-114 0 -179.5 -58 t-65.5 -161z" />
+<glyph unicode="'" horiz-adv-x="393" d="M133 1462h127l-33 -528h-61z" />
+<glyph unicode="(" horiz-adv-x="557" d="M82 561q0 265 77.5 496t223.5 405h113q-148 -182 -227 -412.5t-79 -486.5q0 -483 304 -887h-111q-147 170 -224 397t-77 488z" />
+<glyph unicode=")" horiz-adv-x="557" d="M61 1462h113q147 -175 224 -406.5t77 -494.5t-77.5 -490t-223.5 -395h-111q304 404 304 887q0 257 -79 487.5t-227 411.5z" />
+<glyph unicode="*" horiz-adv-x="1128" d="M104 1124l19 131l401 -104l-39 405h146l-37 -405l405 104l21 -131l-395 -39l247 -340l-124 -71l-191 379l-180 -379l-125 71l242 340z" />
+<glyph unicode="+" d="M111 682v82h432v434h82v-434h434v-82h-434v-432h-82v432h-432z" />
+<glyph unicode="," horiz-adv-x="440" d="M68 -264q77 275 110 502h117l12 -21q-75 -265 -174 -481h-65z" />
+<glyph unicode="-" horiz-adv-x="659" d="M92 512v82h475v-82h-475z" />
+<glyph unicode="." horiz-adv-x="487" d="M162 78q0 98 80 98q82 0 82 -98t-82 -98q-80 0 -80 98z" />
+<glyph unicode="/" horiz-adv-x="698" d="M25 0l544 1462h105l-545 -1462h-104z" />
+<glyph unicode="0" d="M115 735q0 382 115.5 566t351.5 184q231 0 352 -190.5t121 -559.5q0 -385 -117.5 -570t-355.5 -185q-229 0 -348 190.5t-119 564.5zM223 735q0 -340 89 -502.5t270 -162.5q189 0 275.5 168t86.5 497q0 324 -86.5 492t-275.5 168t-274 -168t-85 -492z" />
+<glyph unicode="1" d="M199 1165l397 297h86v-1462h-98v1065q0 145 12 301q-15 -15 -31 -29t-309 -243z" />
+<glyph unicode="2" d="M113 0v88l389 406q164 170 230 260t97 172t31 172q0 131 -86 213t-223 82q-183 0 -350 -133l-54 69q183 154 406 154q191 0 300.5 -102t109.5 -281q0 -145 -73.5 -280.5t-268.5 -334.5l-375 -385v-4h782v-96h-915z" />
+<glyph unicode="3" d="M94 63v99q84 -44 188.5 -69t196.5 -25q221 0 332 89.5t111 252.5q0 145 -113.5 223t-333.5 78h-158v96h160q182 0 288.5 86.5t106.5 234.5q0 122 -86.5 195.5t-226.5 73.5q-109 0 -199 -30.5t-202 -104.5l-49 67q85 71 205 112.5t243 41.5q202 0 312 -95.5t110 -269.5 q0 -136 -85.5 -229t-229.5 -119v-6q176 -22 268 -112t92 -242q0 -205 -139.5 -317.5t-401.5 -112.5q-223 0 -389 83z" />
+<glyph unicode="4" d="M43 373v67l725 1030h121v-1011h252v-86h-252v-373h-94v373h-752zM162 459h633v418q0 302 14 507h-8q-20 -37 -123 -188z" />
+<glyph unicode="5" d="M143 63v103q108 -55 192 -76.5t179 -21.5q192 0 308 101.5t116 274.5q0 163 -113 256t-307 93q-130 0 -272 -39l-60 39l58 669h704v-96h-610l-45 -516q156 29 244 29q234 0 368.5 -113t134.5 -311q0 -225 -140 -350t-386 -125q-109 0 -207 21.5t-164 61.5z" />
+<glyph unicode="6" d="M131 623q0 285 77.5 479.5t220 288.5t343.5 94q94 0 172 -23v-88q-73 27 -176 27q-247 0 -384.5 -178t-154.5 -518h13q76 98 174 148t207 50q205 0 320.5 -117t115.5 -323q0 -224 -121.5 -353.5t-327.5 -129.5q-222 0 -350.5 169.5t-128.5 473.5zM240 504 q0 -111 49.5 -213.5t134 -162.5t186.5 -60q164 0 255 103t91 294q0 168 -90 262t-245 94q-102 0 -189.5 -45t-139.5 -119.5t-52 -152.5z" />
+<glyph unicode="7" d="M109 1366v96h946v-73l-604 -1389h-117l602 1366h-827z" />
+<glyph unicode="8" d="M121 375q0 131 83 230t257 169q-161 76 -227 160.5t-66 202.5q0 105 53 184.5t148.5 122.5t212.5 43q186 0 299.5 -95t113.5 -257q0 -112 -70.5 -198t-228.5 -159q192 -79 270 -173t78 -228q0 -181 -126.5 -289t-339.5 -108q-221 0 -339 101t-118 294zM223 360 q0 -138 93.5 -214t261.5 -76q164 0 264 80.5t100 218.5q0 124 -78.5 201.5t-302.5 162.5q-184 -71 -261 -157t-77 -216zM268 1137q0 -70 31.5 -123.5t91 -97t199.5 -101.5q163 63 234 139t71 183q0 120 -84.5 190t-230.5 70q-141 0 -226.5 -69.5t-85.5 -190.5z" />
+<glyph unicode="9" d="M111 993q0 220 124.5 356t323.5 136q144 0 252 -75.5t166.5 -221.5t58.5 -346q0 -288 -75.5 -482t-220 -287t-349.5 -93q-104 0 -192 26v86q43 -14 103.5 -21.5t92.5 -7.5q247 0 387 178.5t156 520.5h-12q-73 -96 -174 -147.5t-211 -51.5q-203 0 -316.5 112t-113.5 318z M213 999q0 -174 87 -264t249 -90q101 0 188.5 45t139 119.5t51.5 151.5q0 117 -46.5 219t-130 159.5t-192.5 57.5q-158 0 -252 -106.5t-94 -291.5z" />
+<glyph unicode=":" horiz-adv-x="487" d="M162 78q0 98 80 98q82 0 82 -98t-82 -98q-80 0 -80 98zM162 971q0 98 80 98q82 0 82 -98q0 -53 -23.5 -76t-58.5 -23q-34 0 -57 23t-23 76z" />
+<glyph unicode=";" horiz-adv-x="487" d="M76 -264q29 97 62 245.5t48 256.5h117l12 -21q-75 -265 -174 -481h-65zM162 971q0 98 80 98q82 0 82 -98q0 -53 -23.5 -76t-58.5 -23q-34 0 -57 23t-23 76z" />
+<glyph unicode="&#x3c;" d="M111 682v61l948 474v-95l-823 -405l823 -355v-96z" />
+<glyph unicode="=" d="M111 477v82h948v-82h-948zM111 885v82h948v-82h-948z" />
+<glyph unicode="&#x3e;" d="M111 266v96l823 355l-823 405v95l948 -474v-61z" />
+<glyph unicode="?" horiz-adv-x="862" d="M57 1403q110 48 184.5 64t153.5 16q183 0 288 -98.5t105 -270.5q0 -68 -18 -119t-50.5 -94.5t-78.5 -84t-102 -87.5q-64 -54 -98.5 -98.5t-50 -93.5t-15.5 -146v-14h-82v37q0 123 37.5 201t138.5 167l91 79q72 61 103 121t31 138q0 127 -83.5 202t-219.5 75 q-79 0 -148 -17.5t-149 -56.5zM260 78q0 98 80 98q82 0 82 -98t-82 -98q-80 0 -80 98z" />
+<glyph unicode="@" horiz-adv-x="1815" d="M113 561q0 256 108.5 460.5t307 317.5t448.5 113q215 0 380.5 -89t255 -254.5t89.5 -383.5q0 -228 -90.5 -366t-245.5 -138q-89 0 -144.5 54t-64.5 147h-4q-43 -100 -124 -150.5t-189 -50.5q-148 0 -229 96.5t-81 270.5q0 202 120.5 330.5t314.5 128.5q138 0 286 -41 l-22 -464v-30q0 -104 35 -156.5t116 -52.5q103 0 168.5 116.5t65.5 303.5q0 194 -79 340t-225.5 224.5t-334.5 78.5q-230 0 -405.5 -99.5t-270 -281.5t-94.5 -418q0 -322 167 -497.5t474 -175.5q93 0 188.5 18t231.5 70v-99q-203 -80 -414 -80q-349 0 -544 200.5t-195 557.5 zM633 590q0 -143 55 -215t174 -72q255 0 273 346l16 291q-79 27 -193 27q-149 0 -237 -102.5t-88 -274.5z" />
+<glyph unicode="A" horiz-adv-x="1229" d="M0 0l588 1468h65l576 -1468h-115l-203 516h-594l-204 -516h-113zM354 608h523l-199 527q-25 62 -60 172q-27 -96 -59 -174z" />
+<glyph unicode="B" horiz-adv-x="1284" d="M207 0v1462h401q271 0 398 -92t127 -278q0 -127 -77.5 -211.5t-226.5 -108.5v-6q175 -26 257.5 -110.5t82.5 -235.5q0 -202 -134 -311t-380 -109h-448zM309 90h344q406 0 406 330q0 301 -428 301h-322v-631zM309 811h322q206 0 299.5 68.5t93.5 214.5t-105.5 212 t-314.5 66h-295v-561z" />
+<glyph unicode="C" horiz-adv-x="1272" d="M129 735q0 223 84.5 393t243 262.5t368.5 92.5q214 0 383 -80l-41 -92q-160 80 -336 80q-275 0 -433 -176t-158 -482q0 -313 149 -486t426 -173q184 0 338 47v-90q-145 -51 -362 -51q-308 0 -485 199t-177 556z" />
+<glyph unicode="D" horiz-adv-x="1446" d="M207 0v1462h395q350 0 532.5 -183t182.5 -534q0 -368 -193 -556.5t-567 -188.5h-350zM309 90h242q655 0 655 651q0 314 -159.5 472.5t-468.5 158.5h-269v-1282z" />
+<glyph unicode="E" horiz-adv-x="1130" d="M207 0v1462h799v-94h-697v-553h658v-94h-658v-627h697v-94h-799z" />
+<glyph unicode="F" horiz-adv-x="1028" d="M207 0v1462h801v-94h-699v-620h660v-95h-660v-653h-102z" />
+<glyph unicode="G" horiz-adv-x="1481" d="M129 729q0 223 91.5 395.5t262 266.5t391.5 94q239 0 429 -88l-41 -92q-190 88 -394 88q-289 0 -458.5 -178.5t-169.5 -481.5q0 -330 161 -496.5t473 -166.5q202 0 343 57v514h-435v96h539v-667q-212 -90 -477 -90q-346 0 -530.5 195.5t-184.5 553.5z" />
+<glyph unicode="H" horiz-adv-x="1473" d="M207 0v1462h102v-649h854v649h103v-1462h-103v719h-854v-719h-102z" />
+<glyph unicode="I" horiz-adv-x="516" d="M207 0v1462h102v-1462h-102z" />
+<glyph unicode="J" horiz-adv-x="506" d="M-184 -254q78 -20 149 -20q242 0 242 264v1472h102v-1462q0 -369 -342 -369q-92 0 -151 27v88z" />
+<glyph unicode="K" horiz-adv-x="1190" d="M207 0v1462h102v-760l162 162l573 598h130l-599 -618l615 -844h-125l-561 772l-195 -172v-600h-102z" />
+<glyph unicode="L" horiz-adv-x="1051" d="M207 0v1462h102v-1366h697v-96h-799z" />
+<glyph unicode="M" horiz-adv-x="1767" d="M207 0v1462h158l518 -1286h6l518 1286h154v-1462h-103v1108q0 116 12 240h-8l-547 -1348h-65l-545 1350h-8q8 -124 8 -254v-1096h-98z" />
+<glyph unicode="N" horiz-adv-x="1477" d="M207 0v1462h102l865 -1296h6q-9 180 -9 342v954h99v-1462h-103l-866 1298h-8q12 -232 12 -350v-948h-98z" />
+<glyph unicode="O" horiz-adv-x="1565" d="M129 735q0 349 175.5 549.5t479.5 200.5q306 0 479 -201.5t173 -550.5q0 -348 -174 -550.5t-480 -202.5q-305 0 -479 202.5t-174 552.5zM240 733q0 -314 140 -485.5t402 -171.5q264 0 403.5 170t139.5 487q0 316 -139.5 484.5t-401.5 168.5q-261 0 -402.5 -170 t-141.5 -483z" />
+<glyph unicode="P" horiz-adv-x="1198" d="M207 0v1462h358q522 0 522 -420q0 -212 -144 -325t-408 -113h-226v-604h-102zM309 692h201q247 0 357 81.5t110 264.5q0 169 -104 250.5t-322 81.5h-242v-678z" />
+<glyph unicode="Q" horiz-adv-x="1565" d="M129 735q0 349 175.5 549.5t479.5 200.5q306 0 479 -201.5t173 -550.5q0 -294 -126 -486.5t-349 -246.5l333 -348h-166l-282 330l-33 -2h-31q-305 0 -479 202.5t-174 552.5zM240 733q0 -314 140 -485.5t402 -171.5q264 0 403.5 170t139.5 487q0 316 -139.5 484.5 t-401.5 168.5q-261 0 -402.5 -170t-141.5 -483z" />
+<glyph unicode="R" horiz-adv-x="1217" d="M207 0v1462h348q272 0 402 -100.5t130 -302.5q0 -147 -77.5 -248t-235.5 -145l397 -666h-122l-377 637h-363v-637h-102zM309 725h279q185 0 287 82.5t102 243.5q0 167 -100 243t-326 76h-242v-645z" />
+<glyph unicode="S" horiz-adv-x="1116" d="M111 39v102q158 -67 403 -67q180 0 285.5 82.5t105.5 216.5q0 83 -35 137.5t-114 99.5t-232 97q-224 77 -309.5 166.5t-85.5 238.5q0 164 128.5 267.5t330.5 103.5q206 0 387 -78l-37 -88q-182 76 -348 76q-162 0 -258 -75t-96 -204q0 -81 29.5 -133t96.5 -93.5 t230 -99.5q171 -59 257 -114.5t125.5 -126t39.5 -170.5q0 -183 -134.5 -290t-357.5 -107q-268 0 -411 59z" />
+<glyph unicode="T" horiz-adv-x="1073" d="M10 1366v96h1053v-96h-475v-1366h-103v1366h-475z" />
+<glyph unicode="U" horiz-adv-x="1473" d="M190 520v942h103v-946q0 -211 117 -328.5t331 -117.5q209 0 324 115.5t115 320.5v956h102v-946q0 -252 -146 -394t-407 -142q-254 0 -396.5 142.5t-142.5 397.5z" />
+<glyph unicode="V" horiz-adv-x="1182" d="M0 1462h109l368 -995q84 -225 113 -338q20 75 79 233l402 1100h111l-547 -1462h-90z" />
+<glyph unicode="W" horiz-adv-x="1827" d="M51 1462h107l256 -942q15 -57 28 -105.5t23.5 -91t19 -82t15.5 -79.5q24 136 102 413l250 887h113l293 -1018q51 -176 73 -284q13 72 33.5 153t308.5 1149h103l-404 -1462h-84l-321 1128q-40 139 -60 228q-16 -87 -45.5 -200t-322.5 -1156h-86z" />
+<glyph unicode="X" horiz-adv-x="1102" d="M0 0l492 762l-447 700h115l395 -626l401 626h109l-453 -698l490 -764h-117l-432 682l-440 -682h-113z" />
+<glyph unicode="Y" horiz-adv-x="1081" d="M0 1462h117l426 -800l428 800h110l-487 -897v-565h-105v557z" />
+<glyph unicode="Z" horiz-adv-x="1180" d="M82 0v76l856 1290h-817v96h954v-76l-858 -1290h881v-96h-1016z" />
+<glyph unicode="[" horiz-adv-x="653" d="M174 -324v1786h428v-94h-330v-1597h330v-95h-428z" />
+<glyph unicode="\" horiz-adv-x="698" d="M25 1462h102l547 -1462h-103z" />
+<glyph unicode="]" horiz-adv-x="653" d="M51 -229h330v1597h-330v94h428v-1786h-428v95z" />
+<glyph unicode="^" d="M88 561l465 912h68l460 -912h-100l-395 791l-398 -791h-100z" />
+<glyph unicode="_" horiz-adv-x="842" d="M-4 -184h850v-82h-850v82z" />
+<glyph unicode="`" horiz-adv-x="1182" d="M393 1552v17h142q26 -48 98.5 -142t142.5 -170v-16h-69q-96 79 -188.5 171.5t-125.5 139.5z" />
+<glyph unicode="a" horiz-adv-x="1085" d="M98 289q0 159 132.5 247t383.5 93l207 6v72q0 155 -63 234t-203 79q-151 0 -313 -84l-37 86q179 84 354 84q179 0 267.5 -93t88.5 -290v-723h-73l-25 172h-8q-82 -105 -168.5 -148.5t-204.5 -43.5q-160 0 -249 82t-89 227zM203 285q0 -102 62.5 -158.5t176.5 -56.5 q174 0 274.5 99.5t100.5 276.5v107l-190 -8q-229 -11 -326.5 -71.5t-97.5 -188.5z" />
+<glyph unicode="b" horiz-adv-x="1219" d="M182 0v1556h99v-391q0 -88 -4 -162l-3 -85h7q62 98 149.5 144t210.5 46q228 0 343.5 -143.5t115.5 -419.5q0 -271 -121.5 -418t-341.5 -147q-116 0 -209 48t-147 136h-9l-28 -164h-62zM281 528q0 -246 86.5 -353t269.5 -107q178 0 268 124.5t90 354.5q0 471 -356 471 q-192 0 -275 -110t-83 -363v-17z" />
+<glyph unicode="c" horiz-adv-x="973" d="M119 537q0 270 137 420.5t375 150.5q141 0 270 -49l-27 -88q-141 47 -245 47q-200 0 -303 -123.5t-103 -355.5q0 -220 103 -344.5t288 -124.5q148 0 275 53v-92q-104 -51 -273 -51q-233 0 -365 147t-132 410z" />
+<glyph unicode="d" horiz-adv-x="1219" d="M119 528q0 282 118 431t343 149q118 0 204 -43t154 -147h6q-6 126 -6 247v391h98v-1556h-65l-25 166h-8q-124 -186 -356 -186q-225 0 -344 140t-119 408zM223 530q0 -462 359 -462q184 0 270 107t86 353v17q0 252 -84.5 362.5t-273.5 110.5q-178 0 -267.5 -125 t-89.5 -363z" />
+<glyph unicode="e" horiz-adv-x="1124" d="M119 535q0 260 128 416.5t345 156.5q192 0 303 -134t111 -364v-80h-783q2 -224 104.5 -342t293.5 -118q93 0 163.5 13t178.5 56v-90q-92 -40 -170 -54.5t-172 -14.5q-237 0 -369.5 146t-132.5 409zM229 618h672q0 189 -82 295.5t-227 106.5q-157 0 -252 -103.5 t-111 -298.5z" />
+<glyph unicode="f" horiz-adv-x="614" d="M29 1001v58l202 37v84q0 200 73.5 293.5t240.5 93.5q90 0 180 -27l-23 -86q-80 25 -159 25q-116 0 -164.5 -68.5t-48.5 -222.5v-101h256v-86h-256v-1001h-99v1001h-202z" />
+<glyph unicode="g" horiz-adv-x="1071" d="M45 -193q0 112 69.5 186t188.5 101q-49 21 -78.5 59.5t-29.5 88.5q0 109 139 192q-95 39 -148 122.5t-53 191.5q0 163 103.5 261.5t279.5 98.5q107 0 166 -21h348v-69l-225 -14q90 -112 90 -246q0 -157 -104.5 -254.5t-280.5 -97.5q-74 0 -104 6q-59 -31 -90 -73t-31 -89 q0 -52 39.5 -76t132.5 -24h190q177 0 271 -71.5t94 -211.5q0 -172 -139.5 -265.5t-397.5 -93.5q-205 0 -317.5 79t-112.5 220zM150 -184q0 -224 333 -224q428 0 428 273q0 98 -67 142t-217 44h-178q-299 0 -299 -235zM233 748q0 -126 76.5 -195.5t204.5 -69.5 q136 0 208.5 69t72.5 200q0 139 -74.5 208.5t-208.5 69.5q-130 0 -204.5 -74.5t-74.5 -207.5z" />
+<glyph unicode="h" horiz-adv-x="1208" d="M182 0v1556h99v-495l-5 -139h7q61 98 154 142t231 44q370 0 370 -397v-711h-98v705q0 164 -69 238.5t-214 74.5q-195 0 -285.5 -98.5t-90.5 -319.5v-600h-99z" />
+<glyph unicode="i" horiz-adv-x="463" d="M168 1389q0 96 63 96q31 0 48.5 -25t17.5 -71q0 -45 -17.5 -71t-48.5 -26q-63 0 -63 97zM182 0v1087h99v-1087h-99z" />
+<glyph unicode="j" horiz-adv-x="463" d="M-98 -381q69 -20 129 -20q151 0 151 176v1312h99v-1298q0 -135 -63.5 -208t-180.5 -73q-80 0 -135 25v86zM168 1389q0 96 63 96q31 0 48.5 -25t17.5 -71q0 -45 -17.5 -71t-48.5 -26q-63 0 -63 97z" />
+<glyph unicode="k" horiz-adv-x="991" d="M182 0v1556h99v-780l-7 -299h5l555 610h120l-428 -464l465 -623h-119l-413 549l-178 -162v-387h-99z" />
+<glyph unicode="l" horiz-adv-x="463" d="M182 0v1556h99v-1556h-99z" />
+<glyph unicode="m" horiz-adv-x="1808" d="M182 0v1087h82l21 -149h6q45 81 128 125.5t183 44.5q257 0 330 -193h4q53 93 142.5 143t203.5 50q178 0 267 -95t89 -302v-711h-98v713q0 159 -62 232t-190 73q-167 0 -247 -92t-80 -289v-637h-101v743q0 275 -252 275q-171 0 -249 -99.5t-78 -318.5v-600h-99z" />
+<glyph unicode="n" horiz-adv-x="1208" d="M182 0v1087h84l19 -149h6q106 170 377 170q370 0 370 -397v-711h-98v705q0 164 -69 238.5t-214 74.5q-195 0 -285.5 -98.5t-90.5 -319.5v-600h-99z" />
+<glyph unicode="o" horiz-adv-x="1200" d="M119 545q0 266 129 414.5t354 148.5q224 0 351.5 -150.5t127.5 -412.5q0 -266 -129 -415.5t-356 -149.5q-143 0 -252 69t-167 198t-58 298zM223 545q0 -224 98.5 -349.5t278.5 -125.5t278.5 125.5t98.5 349.5q0 225 -99.5 349t-279.5 124t-277.5 -123.5t-97.5 -349.5z " />
+<glyph unicode="p" horiz-adv-x="1219" d="M182 -492v1579h84l19 -155h6q112 176 358 176q220 0 335.5 -144.5t115.5 -420.5q0 -268 -121.5 -415.5t-331.5 -147.5q-251 0 -366 188h-7l3 -84q4 -74 4 -162v-414h-99zM281 541q0 -255 85.5 -364t278.5 -109q167 0 258.5 124t91.5 347q0 479 -346 479 q-190 0 -279 -104.5t-89 -340.5v-32z" />
+<glyph unicode="q" horiz-adv-x="1219" d="M119 532q0 275 118 425.5t338 150.5q236 0 353 -174h6l18 153h84v-1579h-98v414q0 122 6 248h-6q-118 -190 -369 -190q-214 0 -332 142t-118 410zM223 530q0 -229 89.5 -345.5t258.5 -116.5q198 0 282.5 109t84.5 366v12q0 245 -85 354t-271 109q-176 0 -267.5 -124 t-91.5 -364z" />
+<glyph unicode="r" horiz-adv-x="797" d="M182 0v1087h84l10 -196h7q67 120 143 168.5t184 48.5q69 0 148 -14l-19 -95q-68 17 -141 17q-139 0 -228 -118t-89 -298v-600h-99z" />
+<glyph unicode="s" horiz-adv-x="954" d="M84 47v107q164 -82 346 -82q161 0 244.5 53.5t83.5 142.5q0 82 -66.5 138t-218.5 110q-163 59 -229 101.5t-99.5 96t-33.5 130.5q0 122 102.5 193t286.5 71q176 0 334 -66l-37 -90q-160 66 -297 66q-133 0 -211 -44t-78 -122q0 -85 60.5 -136t236.5 -114 q147 -53 214 -95.5t100.5 -96.5t33.5 -127q0 -146 -111 -224.5t-315 -78.5q-218 0 -346 67z" />
+<glyph unicode="t" horiz-adv-x="686" d="M25 1001v58l161 45l50 246h51v-263h319v-86h-319v-688q0 -125 44 -185t138 -60t164 16v-80q-72 -24 -166 -24q-144 0 -212.5 77t-68.5 242v702h-161z" />
+<glyph unicode="u" horiz-adv-x="1208" d="M170 377v710h98v-704q0 -164 69 -238.5t214 -74.5q194 0 285.5 98t91.5 319v600h98v-1087h-84l-18 150h-6q-106 -170 -377 -170q-371 0 -371 397z" />
+<glyph unicode="v" horiz-adv-x="940" d="M0 1087h102l281 -739q56 -142 84 -248h6q41 136 84 250l281 737h102l-420 -1087h-100z" />
+<glyph unicode="w" horiz-adv-x="1481" d="M31 1087h106l174 -630q61 -234 80 -344h6q59 234 86 311l224 663h90l213 -661q72 -235 88 -311h6q8 65 80 348l166 624h100l-295 -1087h-104l-238 727q-23 74 -59 217h-6l-21 -74l-45 -145l-242 -725h-98z" />
+<glyph unicode="x" horiz-adv-x="1020" d="M55 0l394 559l-379 528h114l324 -458l321 458h109l-373 -528l400 -559h-115l-342 485l-344 -485h-109z" />
+<glyph unicode="y" horiz-adv-x="940" d="M0 1087h102l230 -610q105 -281 133 -379h6q42 129 137 385l230 604h102l-487 -1263q-59 -154 -99 -208t-93.5 -81t-129.5 -27q-57 0 -127 21v86q58 -16 125 -16q51 0 90 24t70.5 74.5t73 160t53.5 142.5z" />
+<glyph unicode="z" horiz-adv-x="944" d="M82 0v63l645 936h-598v88h727v-63l-649 -936h651v-88h-776z" />
+<glyph unicode="{" horiz-adv-x="723" d="M61 528v80q122 2 176 51t54 148v350q0 299 360 305v-90q-138 -5 -200 -58t-62 -157v-305q0 -130 -44 -194t-142 -85v-8q97 -20 141.5 -83.5t44.5 -186.5v-322q0 -102 59.5 -152.5t202.5 -53.5v-91q-195 0 -277.5 75t-82.5 231v337q0 205 -230 209z" />
+<glyph unicode="|" horiz-adv-x="1108" d="M508 -506v2067h92v-2067h-92z" />
+<glyph unicode="}" horiz-adv-x="723" d="M72 -233q141 2 201.5 52.5t60.5 153.5v322q0 123 44.5 186.5t141.5 83.5v8q-97 20 -141.5 84t-44.5 195v305q0 103 -61.5 156.5t-200.5 58.5v90q174 0 267 -77.5t93 -227.5v-350q0 -100 54.5 -148.5t175.5 -50.5v-80q-230 -4 -230 -209v-337q0 -155 -82.5 -230.5 t-277.5 -75.5v91z" />
+<glyph unicode="~" d="M111 625v94q108 110 233 110q61 0 115 -13.5t155 -57.5q126 -58 220 -58q56 0 109.5 30.5t115.5 94.5v-96q-48 -49 -104.5 -81t-129.5 -32q-116 0 -270 72q-124 57 -221 57q-49 0 -108 -30.5t-115 -89.5z" />
+<glyph unicode="&#xa1;" horiz-adv-x="492" d="M166 1010q0 98 80 98q82 0 82 -98q0 -53 -23.5 -76t-58.5 -23q-34 0 -57 23t-23 76zM186 -375l29 1086h61l29 -1086h-119z" />
+<glyph unicode="&#xa2;" d="M211 745q0 232 102.5 381.5t288.5 182.5v174h82v-166h14q131 0 275 -55l-31 -84q-134 51 -237 51q-187 0 -288.5 -122.5t-101.5 -358.5q0 -225 100.5 -349.5t280.5 -124.5q131 0 267 58v-92q-110 -56 -267 -56h-12v-204h-82v210q-186 30 -288.5 175t-102.5 380z" />
+<glyph unicode="&#xa3;" d="M78 0v84q110 21 171.5 110t61.5 224v258h-211v82h211v297q0 204 98 315t281 111q175 0 330 -68l-35 -86q-157 66 -295 66q-141 0 -209.5 -81t-68.5 -253v-301h411v-82h-411v-256q0 -116 -35 -196t-113 -128h809v-96h-995z" />
+<glyph unicode="&#xa4;" d="M127 326l139 141q-90 106 -90 256q0 147 90 258l-139 141l59 60l138 -142q103 93 260 93q155 0 260 -93l137 142l59 -60l-139 -141q90 -111 90 -258q0 -151 -90 -256l139 -141l-59 -60l-137 142q-110 -93 -260 -93q-153 0 -260 93l-138 -142zM260 723q0 -136 94.5 -232 t229.5 -96q134 0 228.5 95.5t94.5 232.5q0 136 -95 233t-228 97q-134 0 -229 -97t-95 -233z" />
+<glyph unicode="&#xa5;" d="M43 1462h117l426 -796l428 796h110l-432 -788h283v-82h-338v-205h338v-82h-338v-305h-105v305h-337v82h337v205h-337v82h278z" />
+<glyph unicode="&#xa6;" horiz-adv-x="1108" d="M508 258h92v-764h-92v764zM508 797v764h92v-764h-92z" />
+<glyph unicode="&#xa7;" horiz-adv-x="1057" d="M129 63v95q182 -78 332 -78q162 0 247 49.5t85 140.5q0 55 -25 87.5t-88.5 65.5t-190.5 79q-200 73 -272 141.5t-72 169.5q0 83 50.5 152.5t138.5 107.5q-86 47 -125 102t-39 136q0 117 101.5 183.5t275.5 66.5q175 0 336 -64l-35 -80q-91 34 -158.5 47t-144.5 13 q-134 0 -205.5 -44.5t-71.5 -119.5q0 -54 25.5 -88.5t85.5 -65.5t188 -74q192 -64 264 -132.5t72 -170.5q0 -173 -186 -274q86 -42 129 -96t43 -136q0 -135 -113 -207.5t-311 -72.5q-92 0 -171 15t-165 52zM246 825q0 -65 31.5 -104t105.5 -75t250 -99q82 41 126 98t44 121 q0 62 -32 102t-108.5 77t-236.5 87q-81 -23 -130.5 -79t-49.5 -128z" />
+<glyph unicode="&#xa8;" horiz-adv-x="1182" d="M336 1389q0 46 15.5 66t47.5 20q64 0 64 -86t-64 -86q-63 0 -63 86zM717 1389q0 46 15.5 66t47.5 20q64 0 64 -86t-64 -86q-63 0 -63 86z" />
+<glyph unicode="&#xa9;" horiz-adv-x="1704" d="M100 731q0 200 100 375t275 276t377 101q200 0 375 -100t276 -275t101 -377q0 -197 -97 -370t-272 -277t-383 -104q-207 0 -382 103.5t-272.5 276.5t-97.5 371zM193 731q0 -178 88.5 -329.5t240.5 -240.5t330 -89t329.5 88.5t240.5 240.5t89 330q0 174 -85.5 325 t-239 243t-334.5 92q-176 0 -328.5 -88.5t-241.5 -242.5t-89 -329zM489 725q0 208 111 332.5t297 124.5q119 0 227 -52l-37 -83q-98 45 -190 45q-142 0 -222.5 -94.5t-80.5 -264.5q0 -186 74.5 -275t220.5 -89q84 0 198 43v-88q-102 -45 -208 -45q-187 0 -288.5 115 t-101.5 331z" />
+<glyph unicode="&#xaa;" horiz-adv-x="686" d="M78 989q0 100 80 151.5t241 59.5l95 4v43q0 77 -38 114.5t-106 37.5q-87 0 -196 -49l-33 73q117 56 231 56q228 0 228 -215v-451h-68l-25 72q-84 -84 -202 -84q-95 0 -151 49t-56 139zM168 993q0 -54 35 -85t96 -31q90 0 142.5 50t52.5 142v64l-88 -5q-116 -6 -177 -36.5 t-61 -98.5z" />
+<glyph unicode="&#xab;" horiz-adv-x="885" d="M82 516v27l309 393l62 -43l-254 -363l254 -362l-62 -43zM442 516v27l310 393l61 -43l-254 -363l254 -362l-61 -43z" />
+<glyph unicode="&#xac;" d="M111 682v82h927v-494h-82v412h-845z" />
+<glyph unicode="&#xad;" horiz-adv-x="659" d="M92 512v82h475v-82h-475z" />
+<glyph unicode="&#xae;" horiz-adv-x="1704" d="M100 731q0 200 100 375t275 276t377 101q200 0 375 -100t276 -275t101 -377q0 -197 -97 -370t-272 -277t-383 -104q-207 0 -382 103.5t-272.5 276.5t-97.5 371zM193 731q0 -178 88.5 -329.5t240.5 -240.5t330 -89t329.5 88.5t240.5 240.5t89 330q0 174 -85.5 325 t-239 243t-334.5 92q-176 0 -328.5 -88.5t-241.5 -242.5t-89 -329zM608 291v880h211q143 0 222 -62t79 -191q0 -79 -38.5 -139.5t-110.5 -94.5l237 -393h-121l-210 360h-168v-360h-101zM709 731h112q91 0 143 46.5t52 135.5q0 172 -197 172h-110v-354z" />
+<glyph unicode="&#xaf;" horiz-adv-x="1024" d="M-6 1556v82h1036v-82h-1036z" />
+<glyph unicode="&#xb0;" horiz-adv-x="877" d="M139 1184q0 132 86.5 215.5t212.5 83.5t212.5 -83.5t86.5 -215.5t-86.5 -215.5t-212.5 -83.5q-130 0 -214.5 83t-84.5 216zM229 1184q0 -91 61 -154t148 -63q86 0 147.5 62t61.5 155q0 92 -60 154.5t-149 62.5q-90 0 -149.5 -64t-59.5 -153z" />
+<glyph unicode="&#xb1;" d="M111 1v82h948v-82h-948zM111 682v82h432v434h82v-434h434v-82h-434v-432h-82v432h-432z" />
+<glyph unicode="&#xb2;" horiz-adv-x="688" d="M53 586v78l242 237q125 121 172 193t47 149q0 71 -46.5 112.5t-123.5 41.5q-108 0 -217 -82l-49 65q119 103 270 103q124 0 194 -63.5t70 -174.5q0 -47 -13 -89t-40 -85.5t-68.5 -90t-308.5 -306.5h447v-88h-576z" />
+<glyph unicode="&#xb3;" horiz-adv-x="688" d="M41 629v88q136 -62 266 -62q115 0 174.5 49t59.5 136q0 83 -59.5 122t-178.5 39h-131v84h135q105 0 158 43.5t53 120.5q0 67 -47 107.5t-127 40.5q-128 0 -246 -78l-47 70q130 94 293 94q127 0 199.5 -60t72.5 -163q0 -78 -44 -131.5t-117 -75.5q186 -45 186 -211 q0 -130 -88.5 -201.5t-247.5 -71.5q-144 0 -264 60z" />
+<glyph unicode="&#xb4;" horiz-adv-x="1182" d="M393 1241v16q73 79 144.5 171.5t97.5 140.5h141v-17q-36 -52 -122.5 -138t-190.5 -173h-70z" />
+<glyph unicode="&#xb5;" horiz-adv-x="1221" d="M182 -492v1579h99v-704q0 -164 69 -238.5t213 -74.5q194 0 285.5 98t91.5 319v600h98v-1087h-84l-18 150h-6q-50 -77 -150 -123.5t-217 -46.5q-99 0 -167.5 27.5t-119.5 84.5q5 -92 5 -170v-414h-99z" />
+<glyph unicode="&#xb6;" horiz-adv-x="1341" d="M113 1042q0 260 109 387t341 127h543v-1816h-100v1722h-228v-1722h-100v819q-64 -18 -146 -18q-216 0 -317.5 125t-101.5 376z" />
+<glyph unicode="&#xb7;" horiz-adv-x="487" d="M162 721q0 98 80 98q82 0 82 -98t-82 -98q-80 0 -80 98z" />
+<glyph unicode="&#xb8;" horiz-adv-x="420" d="M43 -393q30 -10 92 -10q78 0 119 28t41 80q0 94 -193 121l93 174h96l-66 -117q168 -37 168 -174q0 -100 -67.5 -150.5t-188.5 -50.5q-68 0 -94 11v88z" />
+<glyph unicode="&#xb9;" horiz-adv-x="688" d="M76 1298l274 164h92v-876h-98v547q0 99 12 233q-26 -23 -233 -145z" />
+<glyph unicode="&#xba;" horiz-adv-x="739" d="M70 1141q0 162 78 250t223 88q142 0 220.5 -87t78.5 -251q0 -161 -80 -250.5t-223 -89.5t-220 86t-77 254zM160 1141q0 -264 209 -264t209 264q0 131 -50 194.5t-159 63.5t-159 -63.5t-50 -194.5z" />
+<glyph unicode="&#xbb;" horiz-adv-x="885" d="M72 168l254 362l-254 363l61 43l309 -391v-27l-309 -393zM432 168l254 362l-254 363l62 43l309 -391v-27l-309 -393z" />
+<glyph unicode="&#xbc;" horiz-adv-x="1516" d="M59 1298l274 164h92v-876h-98v547q0 99 12 233q-26 -23 -233 -145zM243 0l811 1462h94l-811 -1462h-94zM760 242v60l407 581h96v-563h129v-78h-129v-241h-90v241h-413zM864 320h309v221q0 132 8 232q-6 -12 -21.5 -35.5t-295.5 -417.5z" />
+<glyph unicode="&#xbd;" horiz-adv-x="1516" d="M11 1298l274 164h92v-876h-98v547q0 99 12 233q-26 -23 -233 -145zM168 0l811 1462h94l-811 -1462h-94zM827 1v78l242 237q125 121 172 193t47 149q0 71 -46.5 112.5t-123.5 41.5q-108 0 -217 -82l-49 65q119 103 270 103q124 0 194 -63.5t70 -174.5q0 -47 -13 -89 t-40 -85.5t-68.5 -90t-308.5 -306.5h447v-88h-576z" />
+<glyph unicode="&#xbe;" horiz-adv-x="1516" d="M41 629v88q136 -62 266 -62q115 0 174.5 49t59.5 136q0 83 -59.5 122t-178.5 39h-131v84h135q105 0 158 43.5t53 120.5q0 67 -47 107.5t-127 40.5q-128 0 -246 -78l-47 70q130 94 293 94q127 0 199.5 -60t72.5 -163q0 -78 -44 -131.5t-117 -75.5q186 -45 186 -211 q0 -130 -88.5 -201.5t-247.5 -71.5q-144 0 -264 60zM395 0l811 1462h94l-811 -1462h-94zM863 242v60l407 581h96v-563h129v-78h-129v-241h-90v241h-413zM967 320h309v221q0 132 8 232q-6 -12 -21.5 -35.5t-295.5 -417.5z" />
+<glyph unicode="&#xbf;" horiz-adv-x="862" d="M74 -27q0 70 20 124t58.5 102t171.5 159q64 53 98.5 98.5t49.5 94t15 145.5v15h82v-37q0 -125 -39.5 -204.5t-136.5 -164.5l-90 -79q-73 -61 -104 -120.5t-31 -138.5q0 -124 82 -200t221 -76q125 0 233 46l64 27l37 -79q-111 -48 -185.5 -64t-152.5 -16q-184 0 -288.5 99 t-104.5 269zM440 1010q0 98 80 98q82 0 82 -98q0 -53 -23.5 -76t-58.5 -23q-34 0 -57 23t-23 76z" />
+<glyph unicode="&#xc0;" horiz-adv-x="1229" d="M0 0l588 1468h65l576 -1468h-115l-203 516h-594l-204 -516h-113zM354 608h523l-199 527q-25 62 -60 172q-27 -96 -59 -174zM337 1890v17h142q26 -48 98.5 -142t142.5 -170v-16h-69q-96 79 -188.5 171.5t-125.5 139.5z" />
+<glyph unicode="&#xc1;" horiz-adv-x="1229" d="M0 0l588 1468h65l576 -1468h-115l-203 516h-594l-204 -516h-113zM354 608h523l-199 527q-25 62 -60 172q-27 -96 -59 -174zM504 1579v16q73 79 144.5 171.5t97.5 140.5h141v-17q-36 -52 -122.5 -138t-190.5 -173h-70z" />
+<glyph unicode="&#xc2;" horiz-adv-x="1229" d="M0 0l588 1468h65l576 -1468h-115l-203 516h-594l-204 -516h-113zM354 608h523l-199 527q-25 62 -60 172q-27 -96 -59 -174zM328 1579v16q62 67 131.5 156t110.5 156h98q68 -120 242 -312v-16h-70q-122 101 -221 207q-108 -114 -221 -207h-70z" />
+<glyph unicode="&#xc3;" horiz-adv-x="1229" d="M0 0l588 1468h65l576 -1468h-115l-203 516h-594l-204 -516h-113zM354 608h523l-199 527q-25 62 -60 172q-27 -96 -59 -174zM287 1581q10 111 63 174.5t137 63.5q48 0 88 -25t82 -59q34 -28 66 -50t61 -22q46 0 77 36.5t48 119.5h76q-16 -116 -69 -177t-132 -61 q-36 0 -75 18.5t-101 71.5q-32 26 -62.5 46t-62.5 20q-45 0 -75 -34.5t-48 -121.5h-73z" />
+<glyph unicode="&#xc4;" horiz-adv-x="1229" d="M0 0l588 1468h65l576 -1468h-115l-203 516h-594l-204 -516h-113zM354 608h523l-199 527q-25 62 -60 172q-27 -96 -59 -174zM367 1727q0 46 15.5 66t47.5 20q64 0 64 -86t-64 -86q-63 0 -63 86zM748 1727q0 46 15.5 66t47.5 20q64 0 64 -86t-64 -86q-63 0 -63 86z" />
+<glyph unicode="&#xc5;" horiz-adv-x="1229" d="M0 0l588 1468h65l576 -1468h-115l-203 516h-594l-204 -516h-113zM354 608h523l-199 527q-25 62 -60 172q-27 -96 -59 -174zM402 1610q0 94 60 152.5t157 58.5t157 -59t60 -152q0 -97 -60 -155t-157 -58t-157 58t-60 155zM482 1610q0 -66 37.5 -103.5t99.5 -37.5 t99.5 37.5t37.5 103.5q0 64 -39 101.5t-98 37.5q-62 0 -99.5 -38t-37.5 -101z" />
+<glyph unicode="&#xc6;" horiz-adv-x="1653" d="M-2 0l653 1462h877v-94h-615v-553h576v-94h-576v-627h615v-94h-717v516h-475l-227 -516h-111zM377 608h434v760h-100z" />
+<glyph unicode="&#xc7;" horiz-adv-x="1272" d="M129 735q0 223 84.5 393t243 262.5t368.5 92.5q214 0 383 -80l-41 -92q-160 80 -336 80q-275 0 -433 -176t-158 -482q0 -313 149 -486t426 -173q184 0 338 47v-90q-145 -51 -362 -51q-308 0 -485 199t-177 556zM561 -393q30 -10 92 -10q78 0 119 28t41 80q0 94 -193 121 l93 174h96l-66 -117q168 -37 168 -174q0 -100 -67.5 -150.5t-188.5 -50.5q-68 0 -94 11v88z" />
+<glyph unicode="&#xc8;" horiz-adv-x="1130" d="M207 0v1462h799v-94h-697v-553h658v-94h-658v-627h697v-94h-799zM314 1890v17h142q26 -48 98.5 -142t142.5 -170v-16h-69q-96 79 -188.5 171.5t-125.5 139.5z" />
+<glyph unicode="&#xc9;" horiz-adv-x="1130" d="M207 0v1462h799v-94h-697v-553h658v-94h-658v-627h697v-94h-799zM463 1579v16q73 79 144.5 171.5t97.5 140.5h141v-17q-36 -52 -122.5 -138t-190.5 -173h-70z" />
+<glyph unicode="&#xca;" horiz-adv-x="1130" d="M207 0v1462h799v-94h-697v-553h658v-94h-658v-627h697v-94h-799zM315 1579v16q62 67 131.5 156t110.5 156h98q68 -120 242 -312v-16h-70q-122 101 -221 207q-108 -114 -221 -207h-70z" />
+<glyph unicode="&#xcb;" horiz-adv-x="1130" d="M207 0v1462h799v-94h-697v-553h658v-94h-658v-627h697v-94h-799zM354 1727q0 46 15.5 66t47.5 20q64 0 64 -86t-64 -86q-63 0 -63 86zM735 1727q0 46 15.5 66t47.5 20q64 0 64 -86t-64 -86q-63 0 -63 86z" />
+<glyph unicode="&#xcc;" horiz-adv-x="516" d="M207 0v1462h102v-1462h-102zM-63 1890v17h142q26 -48 98.5 -142t142.5 -170v-16h-69q-96 79 -188.5 171.5t-125.5 139.5z" />
+<glyph unicode="&#xcd;" horiz-adv-x="516" d="M207 0v1462h102v-1462h-102zM191 1579v16q73 79 144.5 171.5t97.5 140.5h141v-17q-36 -52 -122.5 -138t-190.5 -173h-70z" />
+<glyph unicode="&#xce;" horiz-adv-x="516" d="M207 0v1462h102v-1462h-102zM-32 1579v16q62 67 131.5 156t110.5 156h98q68 -120 242 -312v-16h-70q-122 101 -221 207q-108 -114 -221 -207h-70z" />
+<glyph unicode="&#xcf;" horiz-adv-x="516" d="M207 0v1462h102v-1462h-102zM5 1727q0 46 15.5 66t47.5 20q64 0 64 -86t-64 -86q-63 0 -63 86zM386 1727q0 46 15.5 66t47.5 20q64 0 64 -86t-64 -86q-63 0 -63 86z" />
+<glyph unicode="&#xd0;" horiz-adv-x="1466" d="M47 678v94h160v690h395q350 0 532.5 -183t182.5 -534q0 -368 -193 -556.5t-567 -188.5h-350v678h-160zM309 90h242q655 0 655 651q0 314 -159.5 472.5t-468.5 158.5h-269v-600h406v-94h-406v-588z" />
+<glyph unicode="&#xd1;" horiz-adv-x="1477" d="M207 0v1462h102l865 -1296h6q-9 180 -9 342v954h99v-1462h-103l-866 1298h-8q12 -232 12 -350v-948h-98zM400 1581q10 111 63 174.5t137 63.5q48 0 88 -25t82 -59q34 -28 66 -50t61 -22q46 0 77 36.5t48 119.5h76q-16 -116 -69 -177t-132 -61q-36 0 -75 18.5t-101 71.5 q-32 26 -62.5 46t-62.5 20q-45 0 -75 -34.5t-48 -121.5h-73z" />
+<glyph unicode="&#xd2;" horiz-adv-x="1565" d="M129 735q0 349 175.5 549.5t479.5 200.5q306 0 479 -201.5t173 -550.5q0 -348 -174 -550.5t-480 -202.5q-305 0 -479 202.5t-174 552.5zM240 733q0 -314 140 -485.5t402 -171.5q264 0 403.5 170t139.5 487q0 316 -139.5 484.5t-401.5 168.5q-261 0 -402.5 -170 t-141.5 -483zM502 1890v17h142q26 -48 98.5 -142t142.5 -170v-16h-69q-96 79 -188.5 171.5t-125.5 139.5z" />
+<glyph unicode="&#xd3;" horiz-adv-x="1565" d="M129 735q0 349 175.5 549.5t479.5 200.5q306 0 479 -201.5t173 -550.5q0 -348 -174 -550.5t-480 -202.5q-305 0 -479 202.5t-174 552.5zM240 733q0 -314 140 -485.5t402 -171.5q264 0 403.5 170t139.5 487q0 316 -139.5 484.5t-401.5 168.5q-261 0 -402.5 -170 t-141.5 -483zM686 1579v16q73 79 144.5 171.5t97.5 140.5h141v-17q-36 -52 -122.5 -138t-190.5 -173h-70z" />
+<glyph unicode="&#xd4;" horiz-adv-x="1565" d="M129 735q0 349 175.5 549.5t479.5 200.5q306 0 479 -201.5t173 -550.5q0 -348 -174 -550.5t-480 -202.5q-305 0 -479 202.5t-174 552.5zM240 733q0 -314 140 -485.5t402 -171.5q264 0 403.5 170t139.5 487q0 316 -139.5 484.5t-401.5 168.5q-261 0 -402.5 -170 t-141.5 -483zM492 1579v16q62 67 131.5 156t110.5 156h98q68 -120 242 -312v-16h-70q-122 101 -221 207q-108 -114 -221 -207h-70z" />
+<glyph unicode="&#xd5;" horiz-adv-x="1565" d="M129 735q0 349 175.5 549.5t479.5 200.5q306 0 479 -201.5t173 -550.5q0 -348 -174 -550.5t-480 -202.5q-305 0 -479 202.5t-174 552.5zM240 733q0 -314 140 -485.5t402 -171.5q264 0 403.5 170t139.5 487q0 316 -139.5 484.5t-401.5 168.5q-261 0 -402.5 -170 t-141.5 -483zM443 1581q10 111 63 174.5t137 63.5q48 0 88 -25t82 -59q34 -28 66 -50t61 -22q46 0 77 36.5t48 119.5h76q-16 -116 -69 -177t-132 -61q-36 0 -75 18.5t-101 71.5q-32 26 -62.5 46t-62.5 20q-45 0 -75 -34.5t-48 -121.5h-73z" />
+<glyph unicode="&#xd6;" horiz-adv-x="1565" d="M129 735q0 349 175.5 549.5t479.5 200.5q306 0 479 -201.5t173 -550.5q0 -348 -174 -550.5t-480 -202.5q-305 0 -479 202.5t-174 552.5zM240 733q0 -314 140 -485.5t402 -171.5q264 0 403.5 170t139.5 487q0 316 -139.5 484.5t-401.5 168.5q-261 0 -402.5 -170 t-141.5 -483zM529 1727q0 46 15.5 66t47.5 20q64 0 64 -86t-64 -86q-63 0 -63 86zM910 1727q0 46 15.5 66t47.5 20q64 0 64 -86t-64 -86q-63 0 -63 86z" />
+<glyph unicode="&#xd7;" d="M119 1130l57 58l408 -408l409 408l58 -58l-408 -407l406 -408l-58 -57l-407 408l-406 -408l-57 57l405 408z" />
+<glyph unicode="&#xd8;" horiz-adv-x="1565" d="M129 735q0 349 175.5 549.5t479.5 200.5q232 0 392 -121l108 152l72 -60l-111 -153q191 -207 191 -570q0 -348 -174 -550.5t-480 -202.5q-236 0 -395 120l-86 -120l-74 59l90 127q-188 200 -188 569zM240 733q0 -312 139 -483l739 1034q-133 102 -334 102 q-261 0 -402.5 -170t-141.5 -483zM444 182q133 -106 338 -106q264 0 403.5 170t139.5 487q0 315 -139 486z" />
+<glyph unicode="&#xd9;" horiz-adv-x="1473" d="M190 520v942h103v-946q0 -211 117 -328.5t331 -117.5q209 0 324 115.5t115 320.5v956h102v-946q0 -252 -146 -394t-407 -142q-254 0 -396.5 142.5t-142.5 397.5zM450 1890v17h142q26 -48 98.5 -142t142.5 -170v-16h-69q-96 79 -188.5 171.5t-125.5 139.5z" />
+<glyph unicode="&#xda;" horiz-adv-x="1473" d="M190 520v942h103v-946q0 -211 117 -328.5t331 -117.5q209 0 324 115.5t115 320.5v956h102v-946q0 -252 -146 -394t-407 -142q-254 0 -396.5 142.5t-142.5 397.5zM633 1579v16q73 79 144.5 171.5t97.5 140.5h141v-17q-36 -52 -122.5 -138t-190.5 -173h-70z" />
+<glyph unicode="&#xdb;" horiz-adv-x="1473" d="M190 520v942h103v-946q0 -211 117 -328.5t331 -117.5q209 0 324 115.5t115 320.5v956h102v-946q0 -252 -146 -394t-407 -142q-254 0 -396.5 142.5t-142.5 397.5zM444 1579v16q62 67 131.5 156t110.5 156h98q68 -120 242 -312v-16h-70q-122 101 -221 207 q-108 -114 -221 -207h-70z" />
+<glyph unicode="&#xdc;" horiz-adv-x="1473" d="M190 520v942h103v-946q0 -211 117 -328.5t331 -117.5q209 0 324 115.5t115 320.5v956h102v-946q0 -252 -146 -394t-407 -142q-254 0 -396.5 142.5t-142.5 397.5zM481 1727q0 46 15.5 66t47.5 20q64 0 64 -86t-64 -86q-63 0 -63 86zM862 1727q0 46 15.5 66t47.5 20 q64 0 64 -86t-64 -86q-63 0 -63 86z" />
+<glyph unicode="&#xdd;" horiz-adv-x="1081" d="M0 1462h117l426 -800l428 800h110l-487 -897v-565h-105v557zM434 1579v16q73 79 144.5 171.5t97.5 140.5h141v-17q-36 -52 -122.5 -138t-190.5 -173h-70z" />
+<glyph unicode="&#xde;" horiz-adv-x="1198" d="M207 0v1462h102v-264h256q522 0 522 -420q0 -212 -144 -325t-408 -113h-226v-340h-102zM309 428h201q247 0 357 81.5t110 264.5q0 169 -104 250.5t-322 81.5h-242v-678z" />
+<glyph unicode="&#xdf;" horiz-adv-x="1194" d="M182 0v1206q0 173 103.5 267t292.5 94q188 0 285.5 -72.5t97.5 -210.5q0 -139 -139 -250q-81 -64 -110.5 -100.5t-29.5 -75.5q0 -44 14.5 -68t51.5 -57t102 -78q106 -75 151.5 -124.5t68 -103t22.5 -120.5q0 -156 -88 -241.5t-246 -85.5q-95 0 -174.5 18.5t-126.5 48.5 v107q65 -38 148.5 -62t152.5 -24q114 0 174.5 54.5t60.5 160.5q0 83 -39 144t-149 136q-127 87 -175 147t-48 146q0 60 32.5 110t106.5 108q74 57 106.5 105.5t32.5 106.5q0 93 -70 143t-202 50q-145 0 -226 -69t-81 -196v-1214h-99z" />
+<glyph unicode="&#xe0;" horiz-adv-x="1085" d="M98 289q0 159 132.5 247t383.5 93l207 6v72q0 155 -63 234t-203 79q-151 0 -313 -84l-37 86q179 84 354 84q179 0 267.5 -93t88.5 -290v-723h-73l-25 172h-8q-82 -105 -168.5 -148.5t-204.5 -43.5q-160 0 -249 82t-89 227zM203 285q0 -102 62.5 -158.5t176.5 -56.5 q174 0 274.5 99.5t100.5 276.5v107l-190 -8q-229 -11 -326.5 -71.5t-97.5 -188.5zM255 1552v17h142q26 -48 98.5 -142t142.5 -170v-16h-69q-96 79 -188.5 171.5t-125.5 139.5z" />
+<glyph unicode="&#xe1;" horiz-adv-x="1085" d="M98 289q0 159 132.5 247t383.5 93l207 6v72q0 155 -63 234t-203 79q-151 0 -313 -84l-37 86q179 84 354 84q179 0 267.5 -93t88.5 -290v-723h-73l-25 172h-8q-82 -105 -168.5 -148.5t-204.5 -43.5q-160 0 -249 82t-89 227zM203 285q0 -102 62.5 -158.5t176.5 -56.5 q174 0 274.5 99.5t100.5 276.5v107l-190 -8q-229 -11 -326.5 -71.5t-97.5 -188.5zM422 1241v16q73 79 144.5 171.5t97.5 140.5h141v-17q-36 -52 -122.5 -138t-190.5 -173h-70z" />
+<glyph unicode="&#xe2;" horiz-adv-x="1085" d="M98 289q0 159 132.5 247t383.5 93l207 6v72q0 155 -63 234t-203 79q-151 0 -313 -84l-37 86q179 84 354 84q179 0 267.5 -93t88.5 -290v-723h-73l-25 172h-8q-82 -105 -168.5 -148.5t-204.5 -43.5q-160 0 -249 82t-89 227zM203 285q0 -102 62.5 -158.5t176.5 -56.5 q174 0 274.5 99.5t100.5 276.5v107l-190 -8q-229 -11 -326.5 -71.5t-97.5 -188.5zM251 1241v16q62 67 131.5 156t110.5 156h98q68 -120 242 -312v-16h-70q-122 101 -221 207q-108 -114 -221 -207h-70z" />
+<glyph unicode="&#xe3;" horiz-adv-x="1085" d="M98 289q0 159 132.5 247t383.5 93l207 6v72q0 155 -63 234t-203 79q-151 0 -313 -84l-37 86q179 84 354 84q179 0 267.5 -93t88.5 -290v-723h-73l-25 172h-8q-82 -105 -168.5 -148.5t-204.5 -43.5q-160 0 -249 82t-89 227zM203 285q0 -102 62.5 -158.5t176.5 -56.5 q174 0 274.5 99.5t100.5 276.5v107l-190 -8q-229 -11 -326.5 -71.5t-97.5 -188.5zM200 1243q10 111 63 174.5t137 63.5q48 0 88 -25t82 -59q34 -28 66 -50t61 -22q46 0 77 36.5t48 119.5h76q-16 -116 -69 -177t-132 -61q-36 0 -75 18.5t-101 71.5q-32 26 -62.5 46t-62.5 20 q-45 0 -75 -34.5t-48 -121.5h-73z" />
+<glyph unicode="&#xe4;" horiz-adv-x="1085" d="M98 289q0 159 132.5 247t383.5 93l207 6v72q0 155 -63 234t-203 79q-151 0 -313 -84l-37 86q179 84 354 84q179 0 267.5 -93t88.5 -290v-723h-73l-25 172h-8q-82 -105 -168.5 -148.5t-204.5 -43.5q-160 0 -249 82t-89 227zM203 285q0 -102 62.5 -158.5t176.5 -56.5 q174 0 274.5 99.5t100.5 276.5v107l-190 -8q-229 -11 -326.5 -71.5t-97.5 -188.5zM282 1389q0 46 15.5 66t47.5 20q64 0 64 -86t-64 -86q-63 0 -63 86zM663 1389q0 46 15.5 66t47.5 20q64 0 64 -86t-64 -86q-63 0 -63 86z" />
+<glyph unicode="&#xe5;" horiz-adv-x="1085" d="M98 289q0 159 132.5 247t383.5 93l207 6v72q0 155 -63 234t-203 79q-151 0 -313 -84l-37 86q179 84 354 84q179 0 267.5 -93t88.5 -290v-723h-73l-25 172h-8q-82 -105 -168.5 -148.5t-204.5 -43.5q-160 0 -249 82t-89 227zM203 285q0 -102 62.5 -158.5t176.5 -56.5 q174 0 274.5 99.5t100.5 276.5v107l-190 -8q-229 -11 -326.5 -71.5t-97.5 -188.5zM325 1456q0 94 60 152.5t157 58.5t157 -59t60 -152q0 -97 -60 -155t-157 -58t-157 58t-60 155zM405 1456q0 -66 37.5 -103.5t99.5 -37.5t99.5 37.5t37.5 103.5q0 64 -39 101.5t-98 37.5 q-62 0 -99.5 -38t-37.5 -101z" />
+<glyph unicode="&#xe6;" horiz-adv-x="1731" d="M98 289q0 154 125 243t377 97l201 6v72q0 155 -61.5 234t-198.5 79q-148 0 -305 -84l-37 86q173 84 346 84q261 0 325 -211q111 213 347 213q184 0 289.5 -134.5t105.5 -363.5v-80h-715q0 -460 348 -460q85 0 150 12t174 57v-90q-92 -41 -165 -55t-161 -14 q-295 0 -397 256q-68 -133 -168 -194.5t-252 -61.5q-156 0 -242 82.5t-86 226.5zM203 285q0 -102 61 -158.5t170 -56.5q169 0 266 99.5t97 276.5v107l-187 -8q-219 -11 -313 -71.5t-94 -188.5zM903 618h604q0 188 -77.5 295t-212.5 107q-284 0 -314 -402z" />
+<glyph unicode="&#xe7;" horiz-adv-x="973" d="M119 537q0 270 137 420.5t375 150.5q141 0 270 -49l-27 -88q-141 47 -245 47q-200 0 -303 -123.5t-103 -355.5q0 -220 103 -344.5t288 -124.5q148 0 275 53v-92q-104 -51 -273 -51q-233 0 -365 147t-132 410zM373 -393q30 -10 92 -10q78 0 119 28t41 80q0 94 -193 121 l93 174h96l-66 -117q168 -37 168 -174q0 -100 -67.5 -150.5t-188.5 -50.5q-68 0 -94 11v88z" />
+<glyph unicode="&#xe8;" horiz-adv-x="1124" d="M119 535q0 260 128 416.5t345 156.5q192 0 303 -134t111 -364v-80h-783q2 -224 104.5 -342t293.5 -118q93 0 163.5 13t178.5 56v-90q-92 -40 -170 -54.5t-172 -14.5q-237 0 -369.5 146t-132.5 409zM229 618h672q0 189 -82 295.5t-227 106.5q-157 0 -252 -103.5 t-111 -298.5zM302 1552v17h142q26 -48 98.5 -142t142.5 -170v-16h-69q-96 79 -188.5 171.5t-125.5 139.5z" />
+<glyph unicode="&#xe9;" horiz-adv-x="1124" d="M119 535q0 260 128 416.5t345 156.5q192 0 303 -134t111 -364v-80h-783q2 -224 104.5 -342t293.5 -118q93 0 163.5 13t178.5 56v-90q-92 -40 -170 -54.5t-172 -14.5q-237 0 -369.5 146t-132.5 409zM229 618h672q0 189 -82 295.5t-227 106.5q-157 0 -252 -103.5 t-111 -298.5zM452 1241v16q73 79 144.5 171.5t97.5 140.5h141v-17q-36 -52 -122.5 -138t-190.5 -173h-70z" />
+<glyph unicode="&#xea;" horiz-adv-x="1124" d="M119 535q0 260 128 416.5t345 156.5q192 0 303 -134t111 -364v-80h-783q2 -224 104.5 -342t293.5 -118q93 0 163.5 13t178.5 56v-90q-92 -40 -170 -54.5t-172 -14.5q-237 0 -369.5 146t-132.5 409zM229 618h672q0 189 -82 295.5t-227 106.5q-157 0 -252 -103.5 t-111 -298.5zM290 1241v16q62 67 131.5 156t110.5 156h98q68 -120 242 -312v-16h-70q-122 101 -221 207q-108 -114 -221 -207h-70z" />
+<glyph unicode="&#xeb;" horiz-adv-x="1124" d="M119 535q0 260 128 416.5t345 156.5q192 0 303 -134t111 -364v-80h-783q2 -224 104.5 -342t293.5 -118q93 0 163.5 13t178.5 56v-90q-92 -40 -170 -54.5t-172 -14.5q-237 0 -369.5 146t-132.5 409zM229 618h672q0 189 -82 295.5t-227 106.5q-157 0 -252 -103.5 t-111 -298.5zM331 1389q0 46 15.5 66t47.5 20q64 0 64 -86t-64 -86q-63 0 -63 86zM712 1389q0 46 15.5 66t47.5 20q64 0 64 -86t-64 -86q-63 0 -63 86z" />
+<glyph unicode="&#xec;" horiz-adv-x="463" d="M182 0v1087h99v-1087h-99zM-34 1552v17h142q26 -48 98.5 -142t142.5 -170v-16h-69q-96 79 -188.5 171.5t-125.5 139.5z" />
+<glyph unicode="&#xed;" horiz-adv-x="463" d="M182 0v1087h99v-1087h-99zM107 1241v16q73 79 144.5 171.5t97.5 140.5h141v-17q-36 -52 -122.5 -138t-190.5 -173h-70z" />
+<glyph unicode="&#xee;" horiz-adv-x="463" d="M182 0v1087h99v-1087h-99zM-58 1241v16q62 67 131.5 156t110.5 156h98q68 -120 242 -312v-16h-70q-122 101 -221 207q-108 -114 -221 -207h-70z" />
+<glyph unicode="&#xef;" horiz-adv-x="463" d="M182 0v1087h99v-1087h-99zM-21 1389q0 46 15.5 66t47.5 20q64 0 64 -86t-64 -86q-63 0 -63 86zM360 1389q0 46 15.5 66t47.5 20q64 0 64 -86t-64 -86q-63 0 -63 86z" />
+<glyph unicode="&#xf0;" horiz-adv-x="1174" d="M117 471q0 228 126.5 357.5t342.5 129.5q108 0 187.5 -33t148.5 -96l4 2q-64 270 -269 459l-270 -157l-49 77l244 146q-86 62 -199 119l45 81q147 -69 248 -145l225 137l49 -84l-202 -121q154 -151 230.5 -353t76.5 -431q0 -276 -124 -427.5t-349 -151.5 q-214 0 -339.5 130t-125.5 361zM221 463q0 -186 94.5 -289.5t268.5 -103.5q179 0 272.5 123t93.5 364q0 146 -97 228.5t-267 82.5q-185 0 -275 -100.5t-90 -304.5z" />
+<glyph unicode="&#xf1;" horiz-adv-x="1208" d="M182 0v1087h84l19 -149h6q106 170 377 170q370 0 370 -397v-711h-98v705q0 164 -69 238.5t-214 74.5q-195 0 -285.5 -98.5t-90.5 -319.5v-600h-99zM282 1243q10 111 63 174.5t137 63.5q48 0 88 -25t82 -59q34 -28 66 -50t61 -22q46 0 77 36.5t48 119.5h76 q-16 -116 -69 -177t-132 -61q-36 0 -75 18.5t-101 71.5q-32 26 -62.5 46t-62.5 20q-45 0 -75 -34.5t-48 -121.5h-73z" />
+<glyph unicode="&#xf2;" horiz-adv-x="1200" d="M119 545q0 266 129 414.5t354 148.5q224 0 351.5 -150.5t127.5 -412.5q0 -266 -129 -415.5t-356 -149.5q-143 0 -252 69t-167 198t-58 298zM223 545q0 -224 98.5 -349.5t278.5 -125.5t278.5 125.5t98.5 349.5q0 225 -99.5 349t-279.5 124t-277.5 -123.5t-97.5 -349.5z M335 1552v17h142q26 -48 98.5 -142t142.5 -170v-16h-69q-96 79 -188.5 171.5t-125.5 139.5z" />
+<glyph unicode="&#xf3;" horiz-adv-x="1200" d="M119 545q0 266 129 414.5t354 148.5q224 0 351.5 -150.5t127.5 -412.5q0 -266 -129 -415.5t-356 -149.5q-143 0 -252 69t-167 198t-58 298zM223 545q0 -224 98.5 -349.5t278.5 -125.5t278.5 125.5t98.5 349.5q0 225 -99.5 349t-279.5 124t-277.5 -123.5t-97.5 -349.5z M499 1241v16q73 79 144.5 171.5t97.5 140.5h141v-17q-36 -52 -122.5 -138t-190.5 -173h-70z" />
+<glyph unicode="&#xf4;" horiz-adv-x="1200" d="M119 545q0 266 129 414.5t354 148.5q224 0 351.5 -150.5t127.5 -412.5q0 -266 -129 -415.5t-356 -149.5q-143 0 -252 69t-167 198t-58 298zM223 545q0 -224 98.5 -349.5t278.5 -125.5t278.5 125.5t98.5 349.5q0 225 -99.5 349t-279.5 124t-277.5 -123.5t-97.5 -349.5z M309 1241v16q62 67 131.5 156t110.5 156h98q68 -120 242 -312v-16h-70q-122 101 -221 207q-108 -114 -221 -207h-70z" />
+<glyph unicode="&#xf5;" horiz-adv-x="1200" d="M119 545q0 266 129 414.5t354 148.5q224 0 351.5 -150.5t127.5 -412.5q0 -266 -129 -415.5t-356 -149.5q-143 0 -252 69t-167 198t-58 298zM223 545q0 -224 98.5 -349.5t278.5 -125.5t278.5 125.5t98.5 349.5q0 225 -99.5 349t-279.5 124t-277.5 -123.5t-97.5 -349.5z M264 1243q10 111 63 174.5t137 63.5q48 0 88 -25t82 -59q34 -28 66 -50t61 -22q46 0 77 36.5t48 119.5h76q-16 -116 -69 -177t-132 -61q-36 0 -75 18.5t-101 71.5q-32 26 -62.5 46t-62.5 20q-45 0 -75 -34.5t-48 -121.5h-73z" />
+<glyph unicode="&#xf6;" horiz-adv-x="1200" d="M119 545q0 266 129 414.5t354 148.5q224 0 351.5 -150.5t127.5 -412.5q0 -266 -129 -415.5t-356 -149.5q-143 0 -252 69t-167 198t-58 298zM223 545q0 -224 98.5 -349.5t278.5 -125.5t278.5 125.5t98.5 349.5q0 225 -99.5 349t-279.5 124t-277.5 -123.5t-97.5 -349.5z M346 1389q0 46 15.5 66t47.5 20q64 0 64 -86t-64 -86q-63 0 -63 86zM727 1389q0 46 15.5 66t47.5 20q64 0 64 -86t-64 -86q-63 0 -63 86z" />
+<glyph unicode="&#xf7;" d="M111 682v82h948v-82h-948zM504 371q0 98 80 98q82 0 82 -98q0 -53 -23.5 -76t-58.5 -23q-34 0 -57 23t-23 76zM504 1075q0 99 80 99q82 0 82 -99q0 -52 -23.5 -75t-58.5 -23q-34 0 -57 23t-23 75z" />
+<glyph unicode="&#xf8;" horiz-adv-x="1200" d="M119 545q0 266 129 414.5t354 148.5q179 0 301 -104l96 124l74 -55l-104 -137q112 -147 112 -391q0 -266 -129 -415.5t-356 -149.5q-173 0 -291 98l-86 -113l-72 58l93 120q-121 153 -121 402zM223 545q0 -200 78 -322l543 705q-98 90 -246 90q-180 0 -277.5 -123.5 t-97.5 -349.5zM362 152q94 -82 238 -82q180 0 278.5 125.5t98.5 349.5q0 190 -72 309z" />
+<glyph unicode="&#xf9;" horiz-adv-x="1208" d="M170 377v710h98v-704q0 -164 69 -238.5t214 -74.5q194 0 285.5 98t91.5 319v600h98v-1087h-84l-18 150h-6q-106 -170 -377 -170q-371 0 -371 397zM304 1552v17h142q26 -48 98.5 -142t142.5 -170v-16h-69q-96 79 -188.5 171.5t-125.5 139.5z" />
+<glyph unicode="&#xfa;" horiz-adv-x="1208" d="M170 377v710h98v-704q0 -164 69 -238.5t214 -74.5q194 0 285.5 98t91.5 319v600h98v-1087h-84l-18 150h-6q-106 -170 -377 -170q-371 0 -371 397zM495 1241v16q73 79 144.5 171.5t97.5 140.5h141v-17q-36 -52 -122.5 -138t-190.5 -173h-70z" />
+<glyph unicode="&#xfb;" horiz-adv-x="1208" d="M170 377v710h98v-704q0 -164 69 -238.5t214 -74.5q194 0 285.5 98t91.5 319v600h98v-1087h-84l-18 150h-6q-106 -170 -377 -170q-371 0 -371 397zM313 1241v16q62 67 131.5 156t110.5 156h98q68 -120 242 -312v-16h-70q-122 101 -221 207q-108 -114 -221 -207h-70z" />
+<glyph unicode="&#xfc;" horiz-adv-x="1208" d="M170 377v710h98v-704q0 -164 69 -238.5t214 -74.5q194 0 285.5 98t91.5 319v600h98v-1087h-84l-18 150h-6q-106 -170 -377 -170q-371 0 -371 397zM350 1389q0 46 15.5 66t47.5 20q64 0 64 -86t-64 -86q-63 0 -63 86zM731 1389q0 46 15.5 66t47.5 20q64 0 64 -86t-64 -86 q-63 0 -63 86z" />
+<glyph unicode="&#xfd;" horiz-adv-x="940" d="M0 1087h102l230 -610q105 -281 133 -379h6q42 129 137 385l230 604h102l-487 -1263q-59 -154 -99 -208t-93.5 -81t-129.5 -27q-57 0 -127 21v86q58 -16 125 -16q51 0 90 24t70.5 74.5t73 160t53.5 142.5zM361 1241v16q73 79 144.5 171.5t97.5 140.5h141v-17 q-36 -52 -122.5 -138t-190.5 -173h-70z" />
+<glyph unicode="&#xfe;" horiz-adv-x="1219" d="M182 -492v2048h99v-391l-7 -247h7q114 190 368 190q220 0 335.5 -144.5t115.5 -420.5q0 -268 -121.5 -415.5t-331.5 -147.5q-251 0 -366 188h-7l3 -84q4 -74 4 -162v-414h-99zM281 541q0 -255 85.5 -364t278.5 -109q167 0 258.5 124t91.5 347q0 479 -348 479 q-193 0 -279.5 -105t-86.5 -354v-18z" />
+<glyph unicode="&#xff;" horiz-adv-x="940" d="M0 1087h102l230 -610q105 -281 133 -379h6q42 129 137 385l230 604h102l-487 -1263q-59 -154 -99 -208t-93.5 -81t-129.5 -27q-57 0 -127 21v86q58 -16 125 -16q51 0 90 24t70.5 74.5t73 160t53.5 142.5zM214 1389q0 46 15.5 66t47.5 20q64 0 64 -86t-64 -86 q-63 0 -63 86zM595 1389q0 46 15.5 66t47.5 20q64 0 64 -86t-64 -86q-63 0 -63 86z" />
+<glyph unicode="&#x131;" horiz-adv-x="463" d="M182 0v1087h99v-1087h-99z" />
+<glyph unicode="&#x152;" horiz-adv-x="1839" d="M129 735q0 347 174.5 545.5t480.5 198.5q78 0 183 -17h747v-94h-655v-553h616v-94h-616v-627h655v-94h-756q-76 -16 -176 -16q-305 0 -479 200t-174 551zM240 733q0 -315 140.5 -484t401.5 -169q109 0 174 18v1266q-62 16 -172 16q-262 0 -403 -167.5t-141 -479.5z" />
+<glyph unicode="&#x153;" horiz-adv-x="1942" d="M119 545q0 266 129 414.5t354 148.5q151 0 251 -70t157 -209q110 279 399 279q192 0 303 -134t111 -364v-80h-762q2 -230 100.5 -345t276.5 -115q93 0 163.5 13t178.5 56v-90q-92 -40 -170 -54.5t-172 -14.5q-156 0 -266.5 67.5t-165.5 198.5q-59 -128 -158 -197 t-252 -69q-143 0 -252 69t-167 198t-58 298zM223 545q0 -224 98.5 -349.5t278.5 -125.5q174 0 265 122.5t91 352.5q0 224 -93 348.5t-265 124.5q-180 0 -277.5 -123.5t-97.5 -349.5zM1065 618h653q0 189 -82 295.5t-227 106.5q-155 0 -242 -104t-102 -298z" />
+<glyph unicode="&#x178;" horiz-adv-x="1081" d="M0 1462h117l426 -800l428 800h110l-487 -897v-565h-105v557zM288 1727q0 46 15.5 66t47.5 20q64 0 64 -86t-64 -86q-63 0 -63 86zM669 1727q0 46 15.5 66t47.5 20q64 0 64 -86t-64 -86q-63 0 -63 86z" />
+<glyph unicode="&#x2c6;" horiz-adv-x="1182" d="M299 1241v16q62 67 131.5 156t110.5 156h98q68 -120 242 -312v-16h-70q-122 101 -221 207q-108 -114 -221 -207h-70z" />
+<glyph unicode="&#x2da;" horiz-adv-x="1182" d="M371 1456q0 94 60 152.5t157 58.5t157 -59t60 -152q0 -97 -60 -155t-157 -58t-157 58t-60 155zM451 1456q0 -66 37.5 -103.5t99.5 -37.5t99.5 37.5t37.5 103.5q0 64 -39 101.5t-98 37.5q-62 0 -99.5 -38t-37.5 -101z" />
+<glyph unicode="&#x2dc;" horiz-adv-x="1182" d="M283 1243q10 111 63 174.5t137 63.5q48 0 88 -25t82 -59q34 -28 66 -50t61 -22q46 0 77 36.5t48 119.5h76q-16 -116 -69 -177t-132 -61q-36 0 -75 18.5t-101 71.5q-32 26 -62.5 46t-62.5 20q-45 0 -75 -34.5t-48 -121.5h-73z" />
+<glyph unicode="&#x2000;" horiz-adv-x="953" />
+<glyph unicode="&#x2001;" horiz-adv-x="1907" />
+<glyph unicode="&#x2002;" horiz-adv-x="953" />
+<glyph unicode="&#x2003;" horiz-adv-x="1907" />
+<glyph unicode="&#x2004;" horiz-adv-x="635" />
+<glyph unicode="&#x2005;" horiz-adv-x="476" />
+<glyph unicode="&#x2006;" horiz-adv-x="317" />
+<glyph unicode="&#x2007;" horiz-adv-x="317" />
+<glyph unicode="&#x2008;" horiz-adv-x="238" />
+<glyph unicode="&#x2009;" horiz-adv-x="381" />
+<glyph unicode="&#x200a;" horiz-adv-x="105" />
+<glyph unicode="&#x2010;" horiz-adv-x="659" d="M92 512v82h475v-82h-475z" />
+<glyph unicode="&#x2011;" horiz-adv-x="659" d="M92 512v82h475v-82h-475z" />
+<glyph unicode="&#x2012;" horiz-adv-x="659" d="M92 512v82h475v-82h-475z" />
+<glyph unicode="&#x2013;" horiz-adv-x="1024" d="M82 512v82h860v-82h-860z" />
+<glyph unicode="&#x2014;" horiz-adv-x="2048" d="M82 512v82h1884v-82h-1884z" />
+<glyph unicode="&#x2018;" horiz-adv-x="297" d="M29 981q32 112 81.5 251t92.5 230h65q-30 -101 -64.5 -257t-45.5 -244h-117z" />
+<glyph unicode="&#x2019;" horiz-adv-x="297" d="M29 961q29 96 61 241.5t49 259.5h117l12 -20q-75 -265 -174 -481h-65z" />
+<glyph unicode="&#x201a;" horiz-adv-x="451" d="M68 -263q29 96 61 241.5t49 259.5h117l12 -20q-75 -265 -174 -481h-65z" />
+<glyph unicode="&#x201c;" horiz-adv-x="614" d="M29 981q32 112 81.5 251t92.5 230h65q-30 -101 -64.5 -257t-45.5 -244h-117zM346 981q34 120 83 255t91 226h66q-30 -98 -63 -248.5t-48 -252.5h-117z" />
+<glyph unicode="&#x201d;" horiz-adv-x="614" d="M29 961q29 96 61 241.5t49 259.5h117l12 -20q-75 -265 -174 -481h-65zM346 961q30 98 63 248.5t48 252.5h116l13 -20q-36 -128 -85 -261t-89 -220h-66z" />
+<glyph unicode="&#x201e;" horiz-adv-x="768" d="M68 -263q29 96 61 241.5t49 259.5h117l12 -20q-75 -265 -174 -481h-65zM385 -263q30 98 63 248.5t48 252.5h116l13 -20q-36 -128 -85 -261t-89 -220h-66z" />
+<glyph unicode="&#x2022;" horiz-adv-x="770" d="M231 748q0 89 40.5 134.5t113.5 45.5t113.5 -47t40.5 -133q0 -85 -41 -133t-113 -48t-113 47t-41 134z" />
+<glyph unicode="&#x2026;" horiz-adv-x="1466" d="M162 78q0 98 80 98q82 0 82 -98t-82 -98q-80 0 -80 98zM651 78q0 98 80 98q82 0 82 -98t-82 -98q-80 0 -80 98zM1141 78q0 98 80 98q82 0 82 -98t-82 -98q-80 0 -80 98z" />
+<glyph unicode="&#x202f;" horiz-adv-x="381" />
+<glyph unicode="&#x2039;" horiz-adv-x="524" d="M82 516v27l309 393l62 -43l-254 -363l254 -362l-62 -43z" />
+<glyph unicode="&#x203a;" horiz-adv-x="524" d="M72 168l254 362l-254 363l61 43l309 -391v-27l-309 -393z" />
+<glyph unicode="&#x2044;" horiz-adv-x="246" d="M-332 0l811 1462h94l-811 -1462h-94z" />
+<glyph unicode="&#x205f;" horiz-adv-x="476" />
+<glyph unicode="&#x2074;" horiz-adv-x="688" d="M25 827v60l407 581h96v-563h129v-78h-129v-241h-90v241h-413zM129 905h309v221q0 132 8 232q-6 -12 -21.5 -35.5t-295.5 -417.5z" />
+<glyph unicode="&#x20ac;" d="M74 528v82h172q-4 38 -4 113l4 102h-172v82h184q39 272 183 425t362 153q88 0 161 -17t148 -57l-39 -86q-132 72 -270 72q-174 0 -288 -125.5t-155 -364.5h502v-82h-510l-4 -104v-24q0 -65 4 -87h449v-82h-443q30 -217 147.5 -338.5t301.5 -121.5q148 0 287 65v-94 q-81 -34 -150.5 -46.5t-140.5 -12.5q-228 0 -367.5 140t-181.5 408h-180z" />
+<glyph unicode="&#x2122;" horiz-adv-x="1485" d="M10 1384v78h522v-78h-219v-643h-86v643h-217zM608 741v721h125l221 -606l224 606h125v-721h-86v398l4 207h-7l-227 -605h-74l-221 609h-6l4 -201v-408h-82z" />
+<glyph unicode="&#x2212;" d="M111 682v82h948v-82h-948z" />
+<glyph unicode="&#xe000;" horiz-adv-x="1085" d="M0 1085h1085v-1085h-1085v1085z" />
+<glyph unicode="&#xfb01;" horiz-adv-x="1077" d="M29 1001v58l202 37v84q0 200 73.5 293.5t240.5 93.5q90 0 180 -27l-23 -86q-80 25 -159 25q-116 0 -164.5 -68.5t-48.5 -222.5v-101h256v-86h-256v-1001h-99v1001h-202zM782 1389q0 96 63 96q31 0 48.5 -25t17.5 -71q0 -45 -17.5 -71t-48.5 -26q-63 0 -63 97zM796 0v1087 h99v-1087h-99z" />
+<glyph unicode="&#xfb02;" horiz-adv-x="1077" d="M29 1001v58l202 37v84q0 200 73.5 293.5t240.5 93.5q90 0 180 -27l-23 -86q-80 25 -159 25q-116 0 -164.5 -68.5t-48.5 -222.5v-101h256v-86h-256v-1001h-99v1001h-202zM796 0v1556h99v-1556h-99z" />
+<glyph unicode="&#xfb03;" horiz-adv-x="1692" d="M29 1001v58l202 37v84q0 200 73.5 293.5t240.5 93.5q90 0 180 -27l-23 -86q-80 25 -159 25q-116 0 -164.5 -68.5t-48.5 -222.5v-101h256v-86h-256v-1001h-99v1001h-202zM643 1001v58l202 37v84q0 200 73.5 293.5t240.5 93.5q90 0 180 -27l-23 -86q-80 25 -159 25 q-116 0 -164.5 -68.5t-48.5 -222.5v-101h256v-86h-256v-1001h-99v1001h-202zM1397 1389q0 96 63 96q31 0 48.5 -25t17.5 -71q0 -45 -17.5 -71t-48.5 -26q-63 0 -63 97zM1411 0v1087h99v-1087h-99z" />
+<glyph unicode="&#xfb04;" horiz-adv-x="1692" d="M29 1001v58l202 37v84q0 200 73.5 293.5t240.5 93.5q90 0 180 -27l-23 -86q-80 25 -159 25q-116 0 -164.5 -68.5t-48.5 -222.5v-101h256v-86h-256v-1001h-99v1001h-202zM643 1001v58l202 37v84q0 200 73.5 293.5t240.5 93.5q90 0 180 -27l-23 -86q-80 25 -159 25 q-116 0 -164.5 -68.5t-48.5 -222.5v-101h256v-86h-256v-1001h-99v1001h-202zM1411 0v1556h99v-1556h-99z" />
+</font>
+</defs></svg> 
\ No newline at end of file
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/fonts/DroidSans-webfont.eot
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/fonts/DroidSans-webfont.eot
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/fonts/DroidSans-webfont.eot	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/fonts/DroidSans-webfont.eot	(revision 47450)

Property changes on: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/fonts/DroidSans-webfont.eot
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/resetPassword.jsp
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/resetPassword.jsp	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/resetPassword.jsp	(revision 47450)
@@ -0,0 +1,46 @@
+<%@ page contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<%@ taglib prefix="s" uri="/struts-tags"%>
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title><s:text name="forgotPassword.title"/></title>
+<link href="jsps/favicon.ico" rel="shortcut icon" type="image/x-icon" />
+<link href="jsps/style.css" rel="stylesheet" type="text/css" media="screen" />
+</head>
+<body>
+<div id="wrapper">
+	<jsp:include page="menu.jsp"/>
+	<div id="page">
+		<div id="page-bgtop">
+			<div id="middle">
+                <div class="middle-b">
+                    <div class="background">
+                        <div class="main">
+                        <div id="main_container" class="clearfix">
+                                <div id="mainmiddle" class="floatbox">
+                                <h2 class="title"><s:text name="forgotPassword.title"/></h2>
+                                <%--<p class="meta"><a href='<s:url value="/jsps/help.jsp#forgotPassword"/>' target="_blank"><s:text name="help"/></a></p>--%>
+                                <div class="entry">
+                                    <s:form action="resetPassword">
+                                    	<s:text name="resetPassword.securityCode.message" />
+                                        <s:textfield name="securityCode" key="resetPassword.securityCode"/>
+                                        <s:password name="password" key="registration.password"/>
+                                        <s:password name="repassword" key="registration.repassword"/>
+                                        <s:submit/>
+                                    </s:form>
+                                </div>
+								</div>
+                            </div>
+                        </div>
+                    </div>
+                </div>
+            </div>
+		</div>
+		  <div id="footer"> 
+           <jsp:include page="footer.jsp"/>
+        </div>
+	</div>
+</div>
+</body>
+</html>
\ No newline at end of file
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/MenuMatic.css
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/MenuMatic.css	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/MenuMatic.css	(revision 47450)
@@ -0,0 +1,125 @@
+/* Based partially on Matthew Carroll's keyboard accessible flavor of Suckerfish 
+ * Dropdowns by Patrick Griffiths and Dan Webb. 
+ * http://carroll.org.uk/sandbox/suckerfish/bones2.html
+ */
+
+/* ----[ LINKS ]----*/
+
+/* all menu links */
+#nav a, #subMenusContainer a{
+	text-decoration:none;
+	display:block;
+	padding:10px 20px;
+	background-color:#fff ;
+	-moz-border-radius: 7px;
+	-webkit-border-radius: 7px;
+}
+
+/* Just main menu links --[for non-javascript users this applies to submenu links as well]*/
+#nav a{
+	margin:0;
+	float:left;	
+}
+
+/* Just sub menu links */
+#subMenusContainer a, #nav li li a{
+	text-align:left;
+}
+
+/* All menu links on hover or focus */
+#nav a:hover, #nav a:focus, #subMenusContainer a:hover, #subMenusContainer a:focus, #nav a.mainMenuParentBtnFocused, #subMenusContainer a.subMenuParentBtnFocused{
+	background-color:#F6C739 ;
+	color:#FFF;
+}
+
+/* sub menu links on hover or focus */
+#subMenusContainer a:hover, 
+#subMenusContainer a:focus, 
+#nav a.mainMenuParentBtnFocused, 
+#subMenusContainer a.subMenuParentBtnFocused,
+#nav li a:hover,
+#nav li a:focus{
+	background-color:#F6C739 ;
+	color:#FFF;
+}
+
+/* Parent Sub Menu Links ---[javascript users only]*/
+.subMenuParentBtn{ 
+	background: url(../img/arrow_right.gif) right center no-repeat;  
+}
+
+/* Parent Sub Menu Links on hover or focus ---[javascript users only]*/
+.subMenuParentBtnFocused{ 
+	background: url(../img/arrow_right_over.gif) right center no-repeat;  
+}
+
+/* Parent Main Menu Links ---[javascript users only]*/
+.mainMenuParentBtn{	
+	 background: url(../img/arrow_down.gif) right center no-repeat; 
+}
+
+/* Parent Main Menu Links on hover or focus ---[javascript users only]*/
+.mainMenuParentBtnFocused{	
+	background: url(../img/arrow_down_over.gif) right center no-repeat; 
+}
+
+/* ----[ OLs ULs, LIs, and DIVs ]----*/
+
+/* Submenu Outer Wrapper - each submenu is inside a div with this class - javascript users only */
+.smOW{ 
+	display:none; 
+	position: absolute; 
+	overflow:hidden; 
+	/*the 2px left & right padding lets you have a 1px border 
+	  on the ul or ol inside since overflow is set to hidden*/
+	padding:0 2px;
+	margin:0 0 0 -2px;
+}
+
+
+/* All ULs and OLs */
+#nav, #nav ul, #nav ol, #subMenusContainer ul, #subMenusContainer ol { 
+	padding: 0;
+	margin: 0;
+	list-style: none;
+	line-height: 1em;
+}
+
+/* All submenu OLs and ULs */
+#nav ol, #nav ul, #subMenusContainer ul, #subMenusContainer ol {	
+	/*border around submenu goes here*/	 
+	background:#fff;	
+	border:1px solid #C3D46A;
+	left:0;
+}
+
+
+/* List items in main menu --[for non-javascript users this applies to submenus as well]  */
+#nav li { 
+	/*great place to use a background image as a divider*/
+	display:block;
+	list-style:none;
+	position:relative;
+	float:left;
+}
+
+#subMenusContainer li{
+	list-style: none;
+}
+
+/* main menu ul or ol elment */
+#nav{
+	display:block;
+	position: absolute;
+	list-style:none;
+	margin:0 0 0 0;
+	z-index:5;
+	top:15px;
+	left:50%;
+	text-align: center;
+	display:block;
+}
+
+#subMenusContainer{	display:block; 	position:absolute;	top:0;	left:0;	width:100%;	height:0;	overflow:visible;	z-index:1000000000; }
+
+
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/images/checkmark_24.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/images/checkmark_24.png
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/images/checkmark_24.png	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/images/checkmark_24.png	(revision 47450)

Property changes on: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/images/checkmark_24.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/images/tick.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/images/tick.png
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/images/tick.png	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/images/tick.png	(revision 47450)

Property changes on: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/images/tick.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/images/box_hint.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/images/box_hint.png
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/images/box_hint.png	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/images/box_hint.png	(revision 47450)

Property changes on: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/images/box_hint.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/forgotPassword.jsp
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/forgotPassword.jsp	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/forgotPassword.jsp	(revision 47450)
@@ -0,0 +1,43 @@
+<%@ page contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<%@ taglib prefix="s" uri="/struts-tags"%>
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title><s:text name="forgotPassword.title"/></title>
+<link href="jsps/favicon.ico" rel="shortcut icon" type="image/x-icon" />
+<link href="jsps/style.css" rel="stylesheet" type="text/css" media="screen" />
+</head>
+<body>
+<div id="wrapper">
+	<jsp:include page="menu.jsp"/>
+	<div id="page">
+        <div id="page-bgtop">
+             <div id="middle">
+                <div class="middle-b">
+                    <div class="background">
+                        <div id="main">
+                            <div id="main_container" class="clearfix">
+                                <div id="mainmiddle" class="floatbox">
+                                    <h1>Reset your password</h1>
+                                    <s:actionerror/>
+                                    <s:form action="sendPassword">
+                                        <s:textfield name="email" key="registration.email"/>
+                                        <s:submit/>
+                                    </s:form>
+                                    <s:text name="forgotPassword.message"/>
+                                </div>
+                            </div>
+                        </div>
+                    </div>
+                </div>
+            </div>
+        </div>
+        <!-- NMI This needs to be the same in all pages and the text is some properties file -->
+        <div id="footer"> 
+           <jsp:include page="footer.jsp"/>
+        </div>
+	</div>
+</div>
+</body>
+</html>
\ No newline at end of file
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/footer.jsp
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/footer.jsp	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/footer.jsp	(revision 47450)
@@ -0,0 +1,7 @@
+<%@ taglib prefix="s" uri="/struts-tags"%>
+
+<div id="footer-bgcontent">
+	<p>
+		<s:text name="footer.text"/> 
+	</p>
+</div>
\ No newline at end of file
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/table-images/patternb-head.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/table-images/patternb-head.png
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/table-images/patternb-head.png	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/table-images/patternb-head.png	(revision 47450)

Property changes on: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/table-images/patternb-head.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/images/checkmark_28.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/images/checkmark_28.png
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/images/checkmark_28.png	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/images/checkmark_28.png	(revision 47450)

Property changes on: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/images/checkmark_28.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/table-images/patternb.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/table-images/patternb.png
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/table-images/patternb.png	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/table-images/patternb.png	(revision 47450)

Property changes on: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/table-images/patternb.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/images/Line_Header.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/images/Line_Header.png
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/images/Line_Header.png	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/images/Line_Header.png	(revision 47450)

Property changes on: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/images/Line_Header.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/images/zebra_list.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/images/zebra_list.png
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/images/zebra_list.png	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/images/zebra_list.png	(revision 47450)

Property changes on: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/images/zebra_list.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/table-images/botright.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/table-images/botright.png
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/table-images/botright.png	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/table-images/botright.png	(revision 47450)

Property changes on: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/table-images/botright.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/images/info.jpg
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/images/info.jpg
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/images/info.jpg	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/images/info.jpg	(revision 47450)

Property changes on: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/images/info.jpg
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/images/box_download.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/images/box_download.png
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/images/box_download.png	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/images/box_download.png	(revision 47450)

Property changes on: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/images/box_download.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/images/box_tip.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/images/box_tip.png
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/images/box_tip.png	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/images/box_tip.png	(revision 47450)

Property changes on: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/images/box_tip.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/images/readmore.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/images/readmore.png
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/images/readmore.png	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/images/readmore.png	(revision 47450)

Property changes on: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/images/readmore.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/manuals/favicon.ico
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/manuals/favicon.ico
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/manuals/favicon.ico	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/manuals/favicon.ico	(revision 47450)

Property changes on: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/manuals/favicon.ico
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/images/footer_anchor.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/images/footer_anchor.png
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/images/footer_anchor.png	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/images/footer_anchor.png	(revision 47450)

Property changes on: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/images/footer_anchor.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/images/inprogress.jpg
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/images/inprogress.jpg
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/images/inprogress.jpg	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/images/inprogress.jpg	(revision 47450)

Property changes on: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/images/inprogress.jpg
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/manuals/administrator-manual.pdf
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/manuals/administrator-manual.pdf
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/manuals/administrator-manual.pdf	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/manuals/administrator-manual.pdf	(revision 47450)

Property changes on: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/manuals/administrator-manual.pdf
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/WEB-INF/web.xml
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/WEB-INF/web.xml	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/WEB-INF/web.xml	(revision 47450)
@@ -0,0 +1,78 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+	xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
+	xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
+	id="WebApp_ID" version="2.5">
+	<display-name>Validator Administration Panel</display-name>
+
+	<context-param>
+		<param-name>log4jConfigLocation</param-name>
+		<param-value>/WEB-INF/log4j.properties
+		</param-value>
+	</context-param>
+	<context-param>
+		<param-name>log4jRefreshInterval</param-name>
+		<param-value>1000</param-value>
+	</context-param>
+	<context-param>
+		<param-name>log4jExposeWebAppRoot</param-name>
+		<param-value>false</param-value>
+	</context-param>
+	<listener>
+		<listener-class>org.springframework.web.util.Log4jConfigListener</listener-class>
+	</listener>
+	<listener>
+		<listener-class>eu.dnetlib.validator.admin.config.ValidatorAdminContextLoaderListener</listener-class>
+	</listener>
+	<filter>
+	  <filter-name>struts2</filter-name>
+	  <filter-class>
+	    org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter
+	  </filter-class>
+	</filter>
+  
+	<filter-mapping>
+		<filter-name>struts2</filter-name>
+		<url-pattern>/*</url-pattern>
+	</filter-mapping>
+
+	<filter>
+	  <filter-name>CharacterEncodingFilter</filter-name>
+	  <filter-class>
+	    org.apache.catalina.filters.SetCharacterEncodingFilter
+	  </filter-class>
+	  <init-param>
+	    <param-name>encoding</param-name>
+	    <param-value>UTF-8</param-value>
+	  </init-param>
+	  <init-param>
+	    <param-name>ignore</param-name>
+	    <param-value>true</param-value>
+	  </init-param>
+	  
+	</filter>
+		<filter-mapping>
+	  <filter-name>CharacterEncodingFilter</filter-name>
+	  <url-pattern>/*</url-pattern>
+	</filter-mapping>
+	
+	<filter>
+	  <filter-name>AddDefaultCharsetFilter</filter-name>
+	  <filter-class>
+	    org.apache.catalina.filters.AddDefaultCharsetFilter
+	  </filter-class>
+	  <init-param>
+	    <param-name>encoding</param-name>
+	    <param-value>system</param-value>
+	  </init-param>
+	</filter>
+
+	<filter-mapping>
+	  <filter-name>AddDefaultCharsetFilter</filter-name>
+	  <url-pattern>/*</url-pattern>
+	</filter-mapping>
+	
+	<welcome-file-list>
+		<welcome-file>jsps/index.jsp</welcome-file>
+	</welcome-file-list>
+</web-app>
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/deleteJobs.jsp
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/deleteJobs.jsp	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/deleteJobs.jsp	(revision 47450)
@@ -0,0 +1,66 @@
+<%@ page contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<%@ taglib prefix="s" uri="/struts-tags"%>
+<%@ taglib prefix="sj" uri="/struts-jquery-tags"%>
+<html>
+<head>
+<link href="jsps/style.css" rel="stylesheet" type="text/css" media="screen" />
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<!--<meta http-equiv="refresh" content="13" >-->
+<title><s:text name="manageJobs.deleteJobs.title"/></title>
+<link href="jsps/favicon.ico" rel="shortcut icon" type="image/x-icon" />
+<sj:head />
+</head>
+<body class="left">
+
+<div id="wrapper">
+	<jsp:include page="menu.jsp"/>
+	<div id="page">
+		<div id="page-bgtop">
+			<div id="middle">
+                <div class="middle-b">
+                    <div class="background">
+                    	<div id="left">
+                        	<div id="left_container">
+	                             <h2 class="helpHdr">Info</h2>
+                                 <s:text name="help.browsevalidations"/>
+                            </div>
+                        </div>
+                        <div id="main">
+                            <div id="main_container" class="clearfix">
+                                <div id="mainmiddle" class="floatbox">
+                                    <h1 class="title"><s:text name="manageJobs.deleteJobs.title"/></h1>
+<%--                                     <s:if test="%{enableCuration}"> --%>
+	                                    <s:form action="curateDB">
+	                                   		 <s:select name="period" 
+	                                    		key="manageJobs.deleteJobs.deleteOld"
+ 	                          					list="#{'older':'older than', 'newer':'newer than', 'exact':'of'}"
+                                            	required="true"
+	  					                    />
+     										<sj:datepicker name="inDate" changeMonth="true" changeYear="true" displayFormat="yy-mm-dd"/>
+<%-- 	                                    	<s:textfield name="inDate" value="YYYY-MM-DD"/> --%>
+	                                    	<s:select name="mode" 
+	                                    		key="manageJobs.deleteJobs.whatToDelete"
+ 	                          					list="#{'all':'All jobs', 'compTest_only':'Compatibility Tests only', 'uncompleted_only':'Uncompleted jobs'}"
+                                            	required="true"
+	  					                    />
+<%--  	                          					list="#{'all':'All jobs', 'compTest_only':'Compatibility Tests only', 'uncompleted_only':'Uncompleted jobs','import':'Import jobs'}" --%>
+	                                    	<s:submit cssClass="button-default"/>
+	                                    </s:form>
+<%-- 	                               </s:if> --%>
+                                    
+								</div>
+                            </div>
+                        </div>
+                    </div>
+                </div>
+            </div>
+		</div>
+		<!-- NMI This needs to be the same in all pages and the text is some properties file -->
+        <div id="footer"> 
+           <jsp:include page="footer.jsp"/>
+        </div>
+	</div>
+</div>
+</body>
+</html>
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/chooseRuleCategory.jsp
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/chooseRuleCategory.jsp	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/chooseRuleCategory.jsp	(revision 47450)
@@ -0,0 +1,51 @@
+<%@ page contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<%@ taglib prefix="s" uri="/struts-tags"%>
+<html>
+<head>
+<link href="jsps/favicon.ico" rel="shortcut icon" type="image/x-icon" />
+<link href="jsps/style.css" rel="stylesheet" type="text/css" media="screen" />
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title><s:text name="chooseRuleCategory.title"/></title>
+</head>
+<body class="left">
+<div id="wrapper">
+	<jsp:include page="menu.jsp"/>
+	<div id="page">
+	<div id="page-bgtop">
+	<div id="middle">
+            <div class="middle-b">
+                <div class="background">
+			 <div id="left">
+                              <div id="left_container" >
+                                   <h2 class="helpHdr">Info</h2>
+                                   <s:text name="help.admin"/>
+                              </div>
+                         </div>
+                        <div id="main">
+                        <div id="main_container" class="clearfix">
+			<div id="content">
+				<h2 class="title"><s:text name="chooseRuleCategory.title"/></h2>
+                                <div class="entry">
+                                        <s:form action="prepareAddRule">
+                                                <s:select key="help.chooseRuleCategory.type.title" name="type" list="ruleTypes"/>
+                                                <s:radio name="jobType" list="#{'content':'OAI Content', 'usage':'OAI Usage'}" value="defaultJobType" label="%{getText(\"jobs.job_type.name\")}" title="%{getText(\"jobs.job_type.description\")}" />
+                                                <s:checkbox name="forCris" label="Is the rule for Cris Guidelines?"/>
+                                                <s:submit cssClass="button-default"/>
+                                        </s:form>
+                                </div>
+			</div>
+			</div>
+			</div>
+		</div>
+	</div>
+	</div>
+	</div>
+
+    <div id="footer">
+                <jsp:include page="footer.jsp"/>
+        </div>
+</div>
+</div>
+</body>
+</html>
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/deleteRule.jsp
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/deleteRule.jsp	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/deleteRule.jsp	(revision 47450)
@@ -0,0 +1,49 @@
+<%@ page contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<%@ taglib prefix="s" uri="/struts-tags"%>
+<html>
+<head>
+<link href="jsps/favicon.ico" rel="shortcut icon" type="image/x-icon" />
+<link href="jsps/style.css" rel="stylesheet" type="text/css" media="screen" />
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title><s:text name="deleteRule.title"/></title>
+</head>
+<body class="left">
+<div id="wrapper">
+	<jsp:include page="menu.jsp"/>
+	<div id="page">
+	<div id="page-bgtop">
+	<div id="middle">
+            <div class="middle-b">
+                <div class="background">
+			 <div id="left">
+                              <div id="left_container" >
+                                                <h2 class="helpHdr">Info</h2>
+                                                <s:text name="help.admin"/>
+                              </div>
+                         </div>
+                          <div id="main">
+                        <div id="main_container" class="clearfix">
+			<div id="content">
+			<h2 class="title"><s:text name="deleteRule.title"/></h2>
+                                <div class="entry">
+                                        <s:form action="deleteRule">
+                                                <s:select name="ruleId" list="rules" listValue="name" listKey="id"  key="deleteRule.label"/>
+						<s:submit cssClass="button-default"/>
+                                        </s:form>
+                                </div>
+			</div>
+		</div>
+	</div>
+	</div>
+	</div>
+	</div>
+	</div>
+
+    <div id="footer">
+                <jsp:include page="footer.jsp"/>
+        </div>
+</div>
+</div>
+</body>
+</html>
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/images/logo-referencia-openaire.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/images/logo-referencia-openaire.png
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/images/logo-referencia-openaire.png	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/images/logo-referencia-openaire.png	(revision 47450)

Property changes on: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/images/logo-referencia-openaire.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/images/openairepluslogo.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/images/openairepluslogo.png
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/images/openairepluslogo.png	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/images/openairepluslogo.png	(revision 47450)

Property changes on: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/images/openairepluslogo.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/images/error_icon_24.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/images/error_icon_24.png
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/images/error_icon_24.png	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/images/error_icon_24.png	(revision 47450)

Property changes on: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/images/error_icon_24.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/images/OpenAIREplus_logo.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/images/OpenAIREplus_logo.png
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/images/OpenAIREplus_logo.png	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/images/OpenAIREplus_logo.png	(revision 47450)

Property changes on: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/images/OpenAIREplus_logo.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/images/error_24.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/images/error_24.png
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/images/error_24.png	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/images/error_24.png	(revision 47450)

Property changes on: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/images/error_24.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/images/list_disc.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/images/list_disc.png
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/images/list_disc.png	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/images/list_disc.png	(revision 47450)

Property changes on: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/images/list_disc.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/images/list_checkbox.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/images/list_checkbox.png
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/images/list_checkbox.png	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/images/list_checkbox.png	(revision 47450)

Property changes on: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/images/list_checkbox.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/images/list_star.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/images/list_star.png
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/images/list_star.png	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/images/list_star.png	(revision 47450)

Property changes on: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/images/list_star.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/images/register.jpg
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/images/register.jpg
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/images/register.jpg	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/images/register.jpg	(revision 47450)

Property changes on: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/images/register.jpg
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/images/arrow_right.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/images/arrow_right.png
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/images/arrow_right.png	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/images/arrow_right.png	(revision 47450)

Property changes on: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/images/arrow_right.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/images/icon_file.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/images/icon_file.png
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/images/icon_file.png	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/images/icon_file.png	(revision 47450)

Property changes on: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/images/icon_file.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/images/tick1.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/images/tick1.png
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/images/tick1.png	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/images/tick1.png	(revision 47450)

Property changes on: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/images/tick1.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/images/middle_bg_b.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/images/middle_bg_b.png
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/images/middle_bg_b.png	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/images/middle_bg_b.png	(revision 47450)

Property changes on: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/images/middle_bg_b.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/images/e-Infrastructure_capacities_tr.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/images/e-Infrastructure_capacities_tr.png
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/images/e-Infrastructure_capacities_tr.png	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/images/e-Infrastructure_capacities_tr.png	(revision 47450)

Property changes on: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/images/e-Infrastructure_capacities_tr.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/images/toolbar_m.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/images/toolbar_m.png
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/images/toolbar_m.png	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/images/toolbar_m.png	(revision 47450)

Property changes on: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/images/toolbar_m.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/images/box_info.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/images/box_info.png
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/images/box_info.png	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/images/box_info.png	(revision 47450)

Property changes on: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/images/box_info.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/images/exclamation-icon.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/images/exclamation-icon.png
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/images/exclamation-icon.png	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/images/exclamation-icon.png	(revision 47450)

Property changes on: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/images/exclamation-icon.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/images/left_bg_l.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/images/left_bg_l.png
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/images/left_bg_l.png	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/images/left_bg_l.png	(revision 47450)

Property changes on: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/images/left_bg_l.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/images/info-left.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/images/info-left.png
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/images/info-left.png	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/images/info-left.png	(revision 47450)

Property changes on: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/images/info-left.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/images/line_dotted.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/images/line_dotted.png
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/images/line_dotted.png	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/images/line_dotted.png	(revision 47450)

Property changes on: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/images/line_dotted.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/images/menu_level2_parent.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/images/menu_level2_parent.png
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/images/menu_level2_parent.png	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/images/menu_level2_parent.png	(revision 47450)

Property changes on: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/images/menu_level2_parent.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/images/number-1.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/images/number-1.png
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/images/number-1.png	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/images/number-1.png	(revision 47450)

Property changes on: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/images/number-1.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/images/icon_download.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/images/icon_download.png
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/images/icon_download.png	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/images/icon_download.png	(revision 47450)

Property changes on: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/images/icon_download.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/images/icon_folder.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/images/icon_folder.png
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/images/icon_folder.png	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/images/icon_folder.png	(revision 47450)

Property changes on: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/images/icon_folder.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/images/middle_bg_t.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/images/middle_bg_t.png
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/images/middle_bg_t.png	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/images/middle_bg_t.png	(revision 47450)

Property changes on: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/images/middle_bg_t.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/images/icon_external.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/images/icon_external.png
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/images/icon_external.png	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/images/icon_external.png	(revision 47450)

Property changes on: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/images/icon_external.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/images/help1.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/images/help1.png
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/images/help1.png	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/images/help1.png	(revision 47450)

Property changes on: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/images/help1.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/images/info.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/images/info.png
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/images/info.png	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/images/info.png	(revision 47450)

Property changes on: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/images/info.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/images/top_icon.gif
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/images/top_icon.gif
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/images/top_icon.gif	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/images/top_icon.gif	(revision 47450)

Property changes on: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/images/top_icon.gif
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/fonts/YanoneKaffeesatz-Light-webfont.svg
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/fonts/YanoneKaffeesatz-Light-webfont.svg	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/fonts/YanoneKaffeesatz-Light-webfont.svg	(revision 47450)
@@ -0,0 +1,299 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" >
+<svg xmlns="http://www.w3.org/2000/svg">
+<metadata>
+This is a custom SVG webfont generated by Font Squirrel.
+Copyright   : Copyright c 2010 Yanone httpyanonedetypedesign All rights reservedThis Font Software is licensed under the SIL Open Font License Version 11This license is available with a FAQ at httpscriptssilorgOFL
+Designer    : Yanone
+Foundry     : Yanone
+Foundry URL : httpyanonedetypedesign
+</metadata>
+<defs>
+<font id="webfont6ZqOUGp9" horiz-adv-x="882" >
+<font-face units-per-em="2048" ascent="1638" descent="-410" />
+<missing-glyph horiz-adv-x="350" />
+<glyph unicode="&#xfb01;" horiz-adv-x="811" d="M23 926q0 63 4 84q2 14 28 14h123v129q0 92 23 164q20 66 55 106q29 35 82 58q45 20 90 26q39 6 96 6q209 0 209 -73q0 -33 -14 -68q-80 39 -193 39q-52 0 -86 -6q-31 -6 -71 -33q-39 -27 -58 -80q-20 -61 -20 -141v-127h172q0 -63 -4 -84q-2 -14 -25 -14h-143v-899 q0 -27 -29 -27h-84v926h-155zM584 0v969q0 39 20 47q18 8 94 8v-997q0 -20 -14 -23q-20 -4 -100 -4z" />
+<glyph unicode="&#xfb02;" horiz-adv-x="831" d="M20 926q0 63 5 84q2 14 28 14h123v129q0 117 31 194.5t82 110.5q53 35 94 43q47 10 98 10q133 0 236 -57v-1427q0 -27 -29 -27h-84v1397q-55 18 -117 18q-41 0 -65.5 -6t-59.5 -27q-37 -20 -55 -77q-18 -55 -18 -140v-141h205q0 -63 -5 -84q-2 -14 -24 -14h-176v-899 q0 -27 -27 -27h-86v926h-156z" />
+<glyph horiz-adv-x="518" />
+<glyph horiz-adv-x="518" />
+<glyph unicode=" "  horiz-adv-x="350" />
+<glyph unicode="&#x09;" horiz-adv-x="350" />
+<glyph unicode="&#xa0;" horiz-adv-x="350" />
+<glyph unicode="!" horiz-adv-x="385" d="M104 82q0 41 23 65q25 27 66 27q46 0 67 -24q23 -27 23 -68t-25 -66q-27 -27 -65 -26q-89 0 -89 92zM125 1415q0 20 29 27q28 6 116 6l-18 -1006q-3 -34 -25 -43q-18 -8 -88 -8z" />
+<glyph unicode="&#x22;" horiz-adv-x="495" d="M72 1544q0 57 6 60q27 12 110 2q2 -72 -10 -240q-12 -158 -22 -168q-63 -2 -64 -2q-3 22 -12 147q-8 113 -8 201zM307 1544q0 57 6 60q27 12 111 2q2 -72 -10 -240q-12 -158 -23 -168l-63 -2q-3 22 -13 147q-8 113 -8 201z" />
+<glyph unicode="#" d="M78 408q0 83 12 92q4 2 14 2h109l14 254h-149q0 83 12 92q4 2 14 2h127l9 147q4 20 20 23q25 4 82 4l-10 -174h231l8 147q4 20 21 23q25 4 84 4l-10 -174h143q0 -57 -4 -78q-4 -16 -25 -16h-118l-15 -254h162q0 -57 -4 -78q-4 -16 -25 -16h-137l-8 -162q-4 -20 -21 -23 q-25 -4 -84 -4l11 189h-232l-8 -162q-4 -20 -20 -23q-25 -4 -82 -4l10 189h-131zM313 502h232l14 254h-231z" />
+<glyph unicode="$" d="M135 72q0 12 12 43q14 35 25 45q76 -63 227 -64q233 0 234 221q0 66 -31 121q-29 51 -106 129l-230 215q-127 123 -127 236q0 100 72 166q70 63 201 76v198q0 31 22 41q25 10 80 10v-247q70 -2 125 -19q53 -14 73.5 -26.5t20.5 -20.5q0 -51 -33 -82q-72 47 -213 47 q-227 0 -227 -145q0 -80 107 -180l251 -234q133 -127 134 -287q0 -287 -271 -323v-193q0 -29 -22 -39q-25 -10 -78 -10v236q-82 4 -139.5 18t-83.5 35q-23 17 -23 33z" />
+<glyph unicode="%" horiz-adv-x="1456" d="M125 1073q0 377 289 377q143 0 207 -82q66 -84 65 -293q0 -379 -283 -379q-76 0 -118 15q-49 16 -86 53t-56 115q-18 75 -18 194zM233 1065q0 -164 39 -221.5t129 -57.5q178 0 179 289q0 166 -39 223q-41 59 -127 60q-181 0 -181 -293zM256 29l862 1421q66 -18 66 -51 q0 -10 -858 -1415q-70 14 -70 45zM772 360q0 377 289 377q143 0 207 -82q66 -84 65 -293q0 -379 -282 -378q-76 0 -119 14q-49 16 -86 53q-39 39 -58 115q-16 67 -16 194zM879 350q0 -162 41 -221q39 -57 129 -57q178 0 178 288q0 166 -39 224q-41 59 -127 59 q-182 0 -182 -293z" />
+<glyph unicode="&#x26;" horiz-adv-x="1048" d="M74 352q0 120 67 221q66 98 168 158q-168 279 -168 432q0 145 92 213q94 70 250 70q119 0 209 -29q86 -28 86 -61q0 -47 -26 -80q-100 70 -258 70q-109 0 -172 -41q-61 -39 -62 -156q0 -121 148 -361q139 -227 340 -462q35 115 34 249q0 154 -49 269q-49 117 -123 174 q80 12 215 12q106 0 181 -4q4 -16 4 -45q0 -27 -17 -39q-12 -10 -67 -10l-148 2q113 -131 113 -375q0 -190 -60 -328q113 -127 173 -159q-2 -25 -27 -60q-23 -31 -45 -30q-33 0 -162 143q-115 -145 -321 -145q-375 -1 -375 372zM190 346q0 -109 57.5 -184.5t194.5 -75.5 q162 0 250 125q-172 195 -330 436q-172 -98 -172 -301z" />
+<glyph unicode="'" horiz-adv-x="260" d="M72 1544q0 57 6 60q27 12 110 2q2 -72 -10 -240q-12 -158 -22 -168q-63 -2 -64 -2q-3 22 -12 147q-8 113 -8 201z" />
+<glyph unicode="(" horiz-adv-x="600" d="M141 659q0 180 35 359q35 176 82 282q45 102 102 193q53 84 89 119q37 37 45 37q43 0 61 -74q-295 -350 -299 -911q0 -344 98 -607q100 -266 201 -381q-18 -82 -63 -82q-14 0 -50 41q-31 37 -88 134q-55 96 -100 211q-47 121 -80 299q-33 175 -33 380z" />
+<glyph unicode=")" horiz-adv-x="600" d="M47 -324q45 57 90 136q51 90 96 200q53 133 82 295q31 172 31 357q-3 316 -92 546q-90 231 -207 365q18 74 62 74q12 0 45 -35q37 -39 86 -119q57 -90 102 -192q51 -117 84 -281q33 -166 33 -363q0 -201 -33 -372q-35 -180 -80 -299q-47 -123 -98 -213q-57 -102 -88 -137 q-37 -43 -49 -44q-46 0 -64 82z" />
+<glyph unicode="*" horiz-adv-x="964" d="M43 1051q-4 49 26.5 79.5t55.5 18.5l287 -158q2 -25 -8.5 -39t-28.5 -4zM154 602l243 272q27 27 58 -12l-199 -319q-25 -25 -55 -2q-33 22 -47 61zM424 1372q-2 14 8 20.5t33 8.5q45 4 78 -17l-31 -337q-3 -34 -55 -25zM508 870.5q8 12.5 35 20.5l229 -295 q18 -25 -12 -51q-29 -27 -74 -33l-178 332q-8 14 0 26.5zM563 940q-33 45 4 66l320 151q33 -23 39 -67q6 -41 -23 -52z" />
+<glyph unicode="+" d="M86 526v49q0 20 2 31q4 16 8 19q8 4 17 4h280v278q0 22 19 25q25 4 84 4v-307h307q0 -53 -4 -82q-2 -20 -25 -21h-278v-280q0 -20 -19 -23q-25 -4 -84 -4v307h-307z" />
+<glyph unicode="," horiz-adv-x="366" d="M92 -184q55 92 62 190q-41 25 -41 82q0 35 22 62q20 23 58 22q84 0 83 -96q0 -86 -53 -193q-51 -104 -84 -104q-37 0 -47 37z" />
+<glyph unicode="-" horiz-adv-x="591" d="M88 526v49q0 20 2 31q4 16 8 19q8 4 17 4h391q0 -53 -4 -82q-2 -20 -25 -21h-389z" />
+<glyph unicode="." horiz-adv-x="366" d="M100 82q0 41 23 65q25 27 63 27q90 0 90 -92q0 -37 -24 -66q-25 -27 -66 -26q-86 0 -86 92z" />
+<glyph unicode="/" horiz-adv-x="626" d="M20 -41l463 1573q10 25 27 31q12 4 98 4l-461 -1577q-10 -23 -28 -27q-25 -4 -99 -4z" />
+<glyph unicode="0" d="M74 606q0 309 90 467q88 156 289 156q195 0 276.5 -143.5t81.5 -452.5q0 -330 -86 -489.5t-287 -159.5q-199 0 -280 149q-84 151 -84 473zM195 592q0 -272 57 -387q59 -119 186 -119q139 0 197 133q59 137 59 420q0 252 -53 371q-51 117 -182 116q-141 0 -202.5 -135 t-61.5 -399z" />
+<glyph unicode="1" d="M74 84q0 23 323 22l29 1006q-39 -2 -266 -49q-16 23 -17 82q0 12 166 49t201 37q16 0 33 -8l-25 -1117h180l113 7q0 -113 -18 -113h-717q-2 12 -2 84z" />
+<glyph unicode="2" d="M74 43q0 4 1 11t1 9q0 10 6 23l8 16l16 25q8 12 17 29q61 100 158 211l174 196q74 80 133 187q57 102 57 202q0 80 -41 125q-39 43 -145 43q-206 0 -326 -80q-14 35 -14 86q0 16 43 41t129 43.5t184 18.5q170 0 232 -64q63 -68 63 -204q0 -111 -59 -226 q-57 -111 -136 -198l-182 -209q-111 -127 -170 -222h379l209 9q0 -115 -20 -115h-709q-8 14 -8 43z" />
+<glyph unicode="3" d="M100 -115q0 45 15 88q82 -70 217 -69q152 0 244 116.5t92 292.5q0 57 -19 101q-16 41 -51 67q-33 27 -76 41q-39 14 -90 21q-10 2 -100 6l-2 76q287 160 286 342q0 154 -182 153q-199 0 -317 -82q-12 27 -13 84q0 23 39 47.5t125 42.5q74 16 189 17q285 0 284 -238 q0 -199 -245 -370q131 -12 211 -84q82 -74 81 -224q0 -233 -126 -376q-125 -141 -334 -142q-106 0 -168 29q-60 28 -60 61z" />
+<glyph unicode="4" d="M78 403q0 102 155 394q160 297 299 422q20 18 54 18q27 0 61 -14l-6 -801l176 4l4 -43q0 -68 -37 -68h-143v-274q0 -29 -14 -37q-8 -4 -99 -4v315h-419q-31 31 -31 88zM180 422h348l19 661q-104 -115 -217 -307q-109 -186 -150 -354z" />
+<glyph unicode="5" d="M80 -123q0 53 14 94q76 -70 221 -69q186 0 272.5 133t86.5 348q0 311 -361 311q-39 0 -77 -6q-10 -2 -32 -4t-30 -4l-49 -12q-25 -6 -27 -6l58 567h626q0 -66 -10 -86q-8 -16 -53 -17l-465 4l-39 -354q55 14 143 15q70 2 140 -11q55 -10 137 -53q72 -37 115 -123t43 -207 q0 -602 -474 -602q-78 0 -133 14.5t-82 34.5q-24 19 -24 33z" />
+<glyph unicode="6" d="M78 608q0 224 37 387q37 160 102 258q63 94 150 140q84 43 182 43q223 0 223 -62q0 -39 -10 -80q-92 35 -213 35q-152 0 -252 -155q-98 -154 -111 -463q100 186 320 186q141 0 225 -98q84 -100 84 -299q0 -518 -389 -518q-86 0 -151.5 30.5t-102.5 79.5t-59 135 q-20 78 -27 170q-8 115 -8 211zM186 588q-3 -249 50 -375q53 -127 194 -127q131 0 203 106.5t72 280.5q0 317 -230 318q-181 0 -289 -203z" />
+<glyph unicode="7" d="M106 1229h738q-436 -717 -557 -1403q-115 0 -115 29q71 372 215 718q147 354 289 555q-111 -4 -535 -4q-35 1 -35 105z" />
+<glyph unicode="8" d="M82 371q0 132 74 239q72 106 184 162q-86 49 -131 90q-113 82 -113 238q0 170 100.5 258t252.5 88q356 0 356 -330q0 -207 -246 -354q76 -49 127 -92q133 -123 133 -299q0 -178 -92 -282.5t-264 -104.5q-190 0 -287 106q-94 103 -94 281zM188 377q0 -129 70 -207 q70 -80 199 -80q119 0 186 78q68 77 68 203q0 141 -121 245q-49 43 -141 97q-113 -41 -187 -133t-74 -203zM207 1106q0 -123 112 -201q25 -18 140 -86q240 117 239 293q0 127 -71 176q-74 51 -168 51q-109 0 -180.5 -59t-71.5 -174z" />
+<glyph unicode="9" d="M74 729q0 520 389 520q209 0 276 -139q70 -141 72 -485q-2 -424 -129 -631q-125 -205 -387 -205q-172 0 -172 49q0 51 8 76q68 -18 154 -18q385 0 415 616q-100 -186 -311 -186q-139 0 -227 102t-88 301zM184 748q0 -156 61.5 -236t174.5 -80q170 0 285 203v4 q0 131 -9 205q-10 86 -32 155q-25 76 -72 111t-127 35q-281 0 -281 -397z" />
+<glyph unicode=":" horiz-adv-x="366" d="M100 82q0 41 23 65q25 27 63 27q90 0 90 -92q0 -37 -24 -66q-25 -27 -66 -26q-86 0 -86 92zM100 791q0 41 23 65q25 27 63 27q90 0 90 -92q0 -37 -24 -66q-25 -27 -66 -27q-86 1 -86 93z" />
+<glyph unicode=";" horiz-adv-x="366" d="M86 -184q58 95 61 190q-41 25 -41 82q0 35 23 62q20 23 59 22q84 0 84 -96q0 -88 -55 -192.5t-84 -104.5q-39 0 -47 37zM102 791q0 37 25 65q25 27 61 27q90 0 91 -92q0 -37 -25 -66q-25 -27 -66 -27q-86 1 -86 93z" />
+<glyph unicode="&#x3c;" horiz-adv-x="817" d="M90 532q0 43 39 64l549 268q39 -37 39 -76q0 -27 -21 -34l-458 -226l487 -213q-4 -41 -18.5 -65.5t-34.5 -24.5q-10 0 -47 15l-514 225q-21 26 -21 67z" />
+<glyph unicode="=" d="M86 348v49q0 18 2 29q4 18 8 20q8 4 17 5h690q0 -59 -4 -84q-3 -18 -25 -19h-688zM86 705v49q0 20 2 30q4 16 8 19q8 4 17 4h690q0 -59 -4 -84q-3 -18 -25 -18h-688z" />
+<glyph unicode="&#x3e;" horiz-adv-x="817" d="M98 762q0 35 17 63q14 27 35 27q12 0 49 -14l514 -226q18 -31 18 -67q0 -45 -39 -64l-549 -270q-39 39 -39 76q0 29 21 37l459 225z" />
+<glyph unicode="?" horiz-adv-x="602" d="M51 1370q0 31 76 57q74 27 166 27q127 0 207 -67.5t80 -223.5q0 -80 -29 -159q-27 -72 -64 -127q-12 -18 -42.5 -58.5l-38.5 -50.5q-47 -63 -66 -96q-39 -59 -39 -140q0 -37 4 -57q6 -37 8 -39q4 -10 0 -20q-18 -23 -102 -13q-23 55 -23 125q0 96 48 179q20 37 90 131 q66 88 98 155q35 74 35 152q0 197 -197 196q-120 0 -196 -61q-15 31 -15 90zM178 82q0 41 23 65q25 27 63 27q90 0 90 -92q0 -37 -24 -66q-25 -27 -66 -26q-86 0 -86 92z" />
+<glyph unicode="@" horiz-adv-x="1542" d="M109 541q0 451 190 655q190 207 528 207q311 0 463 -160q150 -158 150 -518q0 -199 -27 -334q-29 -145 -63 -213q-37 -72 -86 -115q-43 -39 -84 -49q-37 -10 -68 -10q-78 0 -129 51q-78 -53 -227 -53q-123 -2 -195 61q-66 61 -63 248q2 180 86 254q83 74 221 74 q80 0 125 -16q0 23 1 66.5t3 62.5q2 90 -39 124.5t-125 34.5q-133 0 -219 -49q-12 25 -12 64q0 23 18 35q78 49 250 49q120 0 178 -56q57 -53 53 -186l-12 -440l-4 -94.5t-4 -73t-2 -31.5q40 -25 86 -25q25 0 49 13q20 10 57 53q31 37 58 102q25 61 43 174q18 114 18 259 q0 326 -113 458q-115 137 -389 137q-297 0 -450.5 -178t-153.5 -594q0 -215 27 -356q29 -152 74 -235q47 -88 120 -136q80 -51 154 -65q72 -14 188 -15q260 0 480 107q31 -52 30 -86q0 -25 -57 -51q-61 -29 -180 -53.5t-262 -24.5q-94 0 -158 6q-61 6 -143 29 q-77 22 -129 61q-53 41 -104.5 106.5t-82.5 166.5q-35 111 -51 237q-18 142 -18 322zM604 307q-4 -133 37 -174q43 -43 127 -43q55 0 100 25q43 23 47 65l13 367q-51 10 -101 10q-106 0 -163 -55q-56 -54 -60 -195z" />
+<glyph unicode="A" horiz-adv-x="890" d="M14 2l387 1421q4 18 39 19q31 0 49 -6l388 -1409q4 -16 -6.5 -22.5t-41.5 -6.5q-49 0 -67 2l-103 395h-426l-94 -372q-3 -25 -55 -25q-33 0 -70 4zM260 500h371l-99 379q-78 305 -86 401q-16 -137 -88 -401z" />
+<glyph unicode="B" horiz-adv-x="800" d="M113 0v1399q0 35 51 35h205q342 0 342 -312q0 -162 -62 -241q-59 -78 -139 -90q43 -4 76 -15q35 -12 78 -45q45 -35 67 -92q25 -61 25 -150q0 -121 -27 -206q-28 -89 -67 -142q-41 -53 -95 -86q-47 -29 -104 -43q-49 -12 -101 -12h-249zM225 102h137q117 0 191 88 q74 89 74 289q0 86 -19 139q-18 49 -59 76q-40 25 -80 31q-39 6 -107 6h-137v-629zM225 829h154q211 0 211 273q0 231 -219 231h-146v-504z" />
+<glyph unicode="C" horiz-adv-x="720" d="M80 649q0 205 24 359q25 156 62 237q37 84 92 133q53 47 107 64q45 14 112 14q94 0 141 -33q49 -35 50 -69q0 -37 -21 -70q-70 63 -153 64q-49 0 -86 -13q-39 -12 -80 -57q-43 -47 -70 -116.5t-45 -205.5q-16 -117 -16 -309q0 -156 20 -282q18 -113 55 -168.5t76 -76 t92 -20.5q70 0 125 27q59 29 88 63q20 -35 21 -71q0 -49 -76 -96q-72 -45 -178 -46q-55 0 -101 11q-41 10 -90 49q-51 41 -79 108q-27 61 -50 197q-20 123 -20 307z" />
+<glyph unicode="D" horiz-adv-x="845" d="M115 0v1399q0 35 51 35h205q203 0 301 -148q96 -143 96 -493q0 -244 -29 -394q-33 -166 -88 -245q-61 -86 -125 -119q-70 -35 -164 -35h-247zM227 109h138q41 0 84 14q35 12 75 55q39 41 64 117q27 78 41 203q16 137 16 303q0 287 -65.5 407.5t-210.5 120.5h-142v-1220z " />
+<glyph unicode="E" horiz-adv-x="688" d="M117 0v1405q0 29 26 29h490q0 -98 -10 -103q-2 -2 -11 -2h-385v-493h361q0 -76 -2 -88q-2 -16 -23 -17h-336v-627h404q0 -80 -2 -90q-2 -14 -23 -14h-489z" />
+<glyph unicode="F" horiz-adv-x="667" d="M117 0v1405q0 29 26 29h490q0 -92 -10 -99q-2 -2 -11 -2h-385v-495h361q0 -78 -2 -90q-2 -16 -23 -17h-336v-704q2 -27 -24 -27h-86z" />
+<glyph unicode="G" horiz-adv-x="815" d="M74 694q0 229 30 383q33 162 89 234q63 82 135 112q74 31 178 31q90 0 153 -29q61 -29 62 -65q0 -31 -16 -70q-71 55 -179 56q-113 0 -182.5 -51.5t-110 -199t-40.5 -395.5q0 -184 20 -323q18 -131 57 -187q41 -59 82 -79.5t109 -20.5q65 0 110 25q45 23 58 53v551h-201 v69q0 27 31 27h276v-721q-109 -115 -278 -114q-74 0 -133 16q-57 16 -107 61q-45 43 -78 127q-27 70 -47 207q-18 125 -18 303z" />
+<glyph unicode="H" d="M113 0v1405q0 23 14 25q20 4 98 4v-600h434v571q0 23 15 25q20 4 98 4v-1407q0 -20 -14 -23q-20 -4 -99 -4v727h-434v-700q0 -20 -14 -23q-20 -4 -98 -4z" />
+<glyph unicode="I" horiz-adv-x="335" d="M111 0v1376q0 45 16 51q15 6 98 7v-1407q0 -20 -14 -23q-20 -4 -100 -4z" />
+<glyph unicode="J" horiz-adv-x="616" d="M43 88q0 37 20 70q72 -74 173 -74q53 0 85.5 20.5t47.5 65.5q18 53 20 90q4 57 4 117v1001q0 43 15 49t98 7v-1090q0 -78 -4 -108q-8 -57 -21 -99q-14 -47 -43 -82q-27 -31 -76 -53q-51 -23 -114 -22q-100 0 -152 32q-53 35 -53 76z" />
+<glyph unicode="K" horiz-adv-x="802" d="M111 0v1405q0 23 14 25q20 4 98 4v-625l412 618q29 6 72 7q50 0 49 -21q0 -8 -6 -18l-412 -586q52 -33 118.5 -105.5t135.5 -174.5t115.5 -238t46.5 -268q0 -12 -6 -17q-12 -8 -37 -8q-57 0 -74 2q-83 280 -153.5 430.5t-159.5 239.5q-35 35 -101 65v-708q0 -20 -14 -23 q-20 -4 -98 -4z" />
+<glyph unicode="L" horiz-adv-x="671" d="M113 0v1393q0 31 14 37q10 4 100 4v-1328h406v-79q0 -27 -29 -27h-491z" />
+<glyph unicode="M" horiz-adv-x="1017" d="M113 0v1405q0 29 26 29h76l223 -719l72 -246l70 240l215 696q10 29 28 29h86v-1407q0 -20 -14 -23q-20 -4 -100 -4l4 592l18 577l-153 -512l-119 -348q-6 -18 -23 -18h-53l-115 366l-30 97l-66 215l-57 192q16 -377 20 -555l2 -579q0 -20 -14 -23q-20 -4 -96 -4z" />
+<glyph unicode="N" horiz-adv-x="931" d="M113 0v1405q0 29 26 29h80l246 -566q63 -172 254 -647q-10 170 -10 699v485q0 23 14 25q20 4 98 4v-1407q0 -27 -26 -27h-78l-252 575q-45 102 -250 642q8 -270 8 -689v-501q0 -18 -12 -23q-16 -4 -98 -4z" />
+<glyph unicode="O" horiz-adv-x="911" d="M78 727q0 391 94 559t299 168q200 0 283 -160q82 -158 82 -565q0 -414 -91 -579q-92 -170 -296.5 -170t-286.5 161q-84 164 -84 586zM203 692q0 -326 55 -461t195 -135q141 0 202 144q59 139 60 491q0 338 -55.5 473t-192.5 135q-135 0 -201 -149q-63 -146 -63 -498z" />
+<glyph unicode="P" horiz-adv-x="755" d="M113 0v1405q0 29 26 29h213q358 0 359 -390q0 -224 -99 -331q-98 -106 -268 -107h-121v-579q0 -18 -12 -23q-16 -4 -98 -4zM223 713h129q236 0 236 340q0 279 -226 278h-139v-618z" />
+<glyph unicode="Q" horiz-adv-x="911" d="M78 727q0 391 94 559t299 168q200 0 283 -160q82 -158 82 -565q0 -356 -68 -528q-70 -176 -219 -209q14 -90 45 -131q29 -39 80 -39q74 0 133 35q18 -25 18 -62q0 -33 -55 -51t-117 -18q-90 0 -145 59q-55 57 -86 195q-127 6 -199 75q-72 68 -108 230q-37 159 -37 442z M203 692q0 -326 55 -461t195 -135q141 0 202 144q59 139 60 491q0 338 -55.5 473t-192.5 135q-135 0 -201 -149q-63 -146 -63 -498z" />
+<glyph unicode="R" horiz-adv-x="774" d="M113 0v1405q0 29 26 29h213q358 0 359 -390q0 -326 -211 -411q172 -225 207 -602q2 -16 -9 -25q-8 -4 -47 -8q-47 0 -63 2q-43 414 -199 608q-10 -2 -45 -2h-121v-579q0 -18 -12 -23q-16 -4 -98 -4zM223 713h129q236 0 236 336q0 283 -226 282h-139v-618z" />
+<glyph unicode="S" horiz-adv-x="753" d="M68 88q0 43 32 80q76 -74 230 -74q246 0 245 250q0 80 -32 156q-31 70 -111 155l-221 232q-139 158 -139 291q0 125 92 200q90 76 252 76q131 0 192 -27q66 -29 66 -63q0 -37 -31 -68q-74 55 -219 56q-104 0 -170 -47q-63 -45 -64 -125q0 -94 113 -222l244 -251 q86 -92 115 -168q33 -86 32 -185q0 -170 -86 -272t-270 -102q-125 0 -199 34q-71 35 -71 74z" />
+<glyph unicode="T" horiz-adv-x="749" d="M14 1327v78q0 29 27 29h696v-80q0 -27 -26 -27h-283v-1300q0 -20 -14 -23q-20 -4 -99 -4v1327h-301z" />
+<glyph unicode="U" horiz-adv-x="935" d="M113 440v965q0 23 14 25q20 4 100 4v-998q0 -51 4 -112q2 -35 21 -93q15 -49 43 -79q25 -27 74 -48q45 -18 114 -18q143 0 230 43v1278q0 20 14 23q20 4 100 4v-1383q-47 -31 -141 -51t-203 -20q-92 0 -168 26q-70 25 -108 64q-37 37 -60 104q-23 70 -28 123 q-6 59 -6 143z" />
+<glyph unicode="V" horiz-adv-x="860" d="M12 1425q2 8 25 9h90l227 -897q35 -152 86 -435q45 279 80 435l207 856q6 41 33 41h92l-350 -1446q-74 -6 -88 -6q-43 0 -74 120l-326 1293q-3 12 -3 21q0 5 1 9z" />
+<glyph unicode="W" horiz-adv-x="1314" d="M12 1395q-1 7 -1 12q0 27 26 27h90l188 -899q35 -186 62 -398h8q12 160 55 398l158 784q6 39 33 39h80l180 -823q23 -117 27 -140l6 -42.5t8 -53.5t6 -47q2 -25 7 -62.5t7 -50.5h9q23 205 55 396l168 858q6 41 33 41h92l-289 -1446q-49 -6 -88 -6q-37 0 -62 104l-153 664 q-16 72 -62 389l-57 -387l-160 -764q-70 -4 -94 -4q-37 0 -61 122z" />
+<glyph unicode="X" horiz-adv-x="870" d="M20 0l345 743l-289 670q-6 16 10 19q12 2 119 2l104 -248q70 -162 137 -346q92 233 142 346l98 227q6 16 21 19q10 2 106 2l-297 -691l332 -720q3 -6 3 -11q0 -12 -20 -12h-116l-140 307l-143 338q-68 -170 -145 -336l-140 -295q-8 -14 -28 -14h-99z" />
+<glyph unicode="Y" horiz-adv-x="737" d="M12 1415q-2 4 -1 7q0 7 14 10q10 2 114 2l99 -293q43 -115 86 -262q49 -166 53 -193q14 106 139 457l90 270q2 12 21 17q20 4 102 4l-299 -848v-559q0 -18 -14 -23q-16 -4 -99 -4v582z" />
+<glyph unicode="Z" horiz-adv-x="802" d="M47 45q0 29 10 55l564 1231h-435q-55 0 -84 -4v78q0 29 29 29h610q12 -16 13 -39q0 -27 -13 -58l-569 -1235h461q78 0 108 13v-88q0 -27 -26 -27h-649q-19 16 -19 45z" />
+<glyph unicode="[" horiz-adv-x="847" d="M305 -406v2046q0 27 14 33q20 8 74 8h436q0 -66 -8 -86q-6 -16 -39 -16h-364v-1878h409q0 -74 -10 -90.5t-39 -16.5h-473z" />
+<glyph unicode="\" horiz-adv-x="618" d="M23 1532q-6 25 12 31q12 4 96 4l467 -1598q6 -23 -12 -26q-25 -4 -97 -4z" />
+<glyph unicode="]" horiz-adv-x="847" d="M20 -410q0 71 7 86q6 16 41 17h364v1884h-409q0 74 10 90t39 16h473v-2052q0 -29 -14.5 -35t-75.5 -6h-435z" />
+<glyph unicode="^" horiz-adv-x="878" d="M117 494l329 299l291 -267q20 -18 21 -37q0 -23 -17 -38q-14 -14 -41 -19l-264 215l-221 -190q-33 -23 -45 -23q-23 0 -37 17q-12 16 -16 43z" />
+<glyph unicode="_" horiz-adv-x="782" d="M33 -193q0 59 4 84q3 18 24 19h689v-49q0 -20 -2 -31q-2 -14 -10.5 -18.5t-14.5 -4.5h-690z" />
+<glyph unicode="`" horiz-adv-x="329" d="M0 1411q2 20 20 57q16 31 33 31q2 0 133 -108q117 -96 146 -131q-23 -66 -43 -66q-2 0 -139 102q-140 105 -150 115z" />
+<glyph unicode="a" horiz-adv-x="749" d="M74 285q0 104 24 174q23 68 72 102q45 33 94 45t115 12q109 0 168 -24v180q0 92 -41 127t-121 35q-184 0 -295 -51q-16 33 -16 65q0 29 16 41q35 23 125 37q98 16 197 16q125 0 186 -57q59 -55 59 -190v-123q0 -324 -10 -621q-119 -74 -278 -73q-39 0 -88 4 q-31 2 -78 22.5t-68 48.5q-27 35 -43 90q-18 60 -18 140zM190 289q0 -72 15 -115q16 -47 45 -65q31 -18 59 -25q27 -6 76 -6q104 0 152 45q10 160 10 387q-53 20 -133 20q-104 0 -164 -47t-60 -194z" />
+<glyph unicode="b" horiz-adv-x="819" d="M119 41v1409q0 37 20 47q16 8 92 8v-544q106 84 254 83q131 -2 199 -92q70 -92 70 -301q0 -178 -27 -299q-29 -131 -65 -196q-39 -70 -95 -113q-47 -37 -104 -51q-49 -12 -109 -12q-157 0 -235 61zM231 119q39 -37 138 -37q262 0 262 539q0 180 -45 249.5t-150 69.5 q-125 0 -205 -80v-741z" />
+<glyph unicode="c" horiz-adv-x="675" d="M82 489q0 141 24 246q25 106 58 162q34 58 86 92q57 37 96 45q51 10 105 10q74 0 123 -24.5t49 -56.5q0 -37 -15 -68q-70 47 -159 47q-43 0 -70 -8q-31 -9 -68 -37q-33 -25 -59 -74q-23 -41 -39 -135q-16 -92 -16 -205q0 -237 55 -319t168 -82q121 0 188 61 q14 -31 15 -65q0 -37 -68 -67.5t-166 -30.5q-74 0 -127 18q-51 18 -94 70q-45 53 -66 157q-20 100 -20 264z" />
+<glyph unicode="d" horiz-adv-x="821" d="M84 483q0 281 94 420q95 141 246 141q104 0 168 -45v451q0 39 20 47q18 8 95 8v-1464q-121 -61 -291 -61q-76 0 -131 16q-51 16 -103 65q-49 49 -73 152q-25 104 -25 270zM205 494q0 -174 31 -267q31 -94 73 -118q41 -23 117 -27q102 0 168 41l-2 780q-53 41 -135 41 q-109 0 -180.5 -108.5t-71.5 -341.5z" />
+<glyph unicode="e" horiz-adv-x="768" d="M78 457q0 145 22 262q22 111 56 172q33 57 86 96t98 47q51 10 104 10q258 0 258 -323q0 -156 -20 -246q-182 -37 -489 -37q0 -137 32 -223q31 -78 78 -102q45 -23 129 -23q150 0 246 70q14 -35 14 -80q0 -37 -84 -68q-88 -33 -194 -32q-80 0 -135 18q-57 18 -104.5 65.5 t-72 145.5t-24.5 248zM195 532q270 0 389 29q8 57 8 137q-2 127 -37 187q-33 57 -121 57q-49 0 -80 -14q-39 -18 -71 -54q-35 -37 -60 -124q-26 -91 -28 -218z" />
+<glyph unicode="f" horiz-adv-x="505" d="M31 926q0 63 4 84q2 14 26 14h125v129q0 96 21 160q20 66 53 104q25 31 80 60q45 25 88 30q40 6 92 6q176 0 176 -63q0 -25 -12 -64q-68 25 -152 25q-51 0 -83 -8q-45 -10 -74 -31q-37 -25 -56 -78q-20 -61 -20 -137v-133h213q0 -63 -4 -84q-2 -14 -25 -14h-184v-899 q0 -27 -29 -27h-84v926h-155z" />
+<glyph unicode="g" horiz-adv-x="823" d="M68 -186q0 72 49 139t119 119q-68 20 -103 45q-37 27 -33 63q0 78 129 180q-129 80 -129 314q0 184 93 276q94 94 245 94q43 0 92 -12h254q12 -31 13 -53q0 -45 -47 -45q-52 0 -111 12q113 -74 113 -254q0 -170 -80 -274q-78 -102 -252 -103q-74 0 -117 15 q-86 -71 -86 -117q0 -47 297 -84q135 -18 203 -66q72 -49 71 -159q0 -127 -102 -217t-295 -90q-323 0 -323 217zM182 -164q0 -68 45 -100q47 -35 174 -35q131 0 201 57q72 59 72 131q0 78 -53 109q-47 29 -177 41q-102 12 -114 14q-59 -41 -103 -102q-45 -64 -45 -115z M217 676q0 -131 43 -199q45 -70 168 -69q104 0 158 86q53 88 53 221q0 242 -205 241q-96 0 -158 -71q-59 -68 -59 -209z" />
+<glyph unicode="h" horiz-adv-x="808" d="M111 0v1450q0 37 20 47q16 8 92 8v-549q109 88 260 88q137 0 186.5 -67.5t49.5 -206.5v-743q0 -20 -14 -23q-20 -4 -101 -4v745q0 92 -35 144q-34 49 -129 49q-129 0 -217 -82v-829q0 -20 -14 -23q-20 -4 -98 -4z" />
+<glyph unicode="i" horiz-adv-x="348" d="M113 1370q0 94 67 94q63 0 64 -92q-4 -96 -70 -96q-63 0 -61 94zM117 0v969q0 39 20 47q18 8 96 8v-997q0 -18 -16 -23q-20 -4 -100 -4z" />
+<glyph unicode="j" horiz-adv-x="370" d="M-231 -305q0 39 18 63q90 -53 197 -53q94 0 120 55q27 53 27 187v1022q0 39 19 47q16 8 94 8v-1100q0 -156 -53.5 -239.5t-198.5 -83.5q-102 0 -164 28q-59 29 -59 66zM127 1370q0 94 68 94q63 0 63 -92q-4 -96 -70 -96q-63 0 -61 94z" />
+<glyph unicode="k" horiz-adv-x="800" d="M117 0v1450q0 37 20 47q16 8 92 8v-585q59 59 139.5 91.5t149.5 32.5q180 0 180 -180q0 -61 -24.5 -120.5t-65.5 -100.5q-40 -40 -67 -61q-33 -25 -58 -39q82 -14 156 -92q72 -76 94 -220q6 -43 6 -94t-6 -108q-4 -25 -20 -27q-10 -2 -107 -2q8 57 8 127q0 98 -18 162 q-35 117 -104 157q-50 29 -101 30q-20 0 -41 -5l-121 -45v-399q0 -18 -14 -23q-16 -4 -98 -4zM229 514q346 119 346 322q0 104 -104 104q-131 0 -242 -131v-295z" />
+<glyph unicode="l" horiz-adv-x="346" d="M117 0v1450q0 37 18 47q16 8 94 8v-1478q0 -20 -14 -23q-20 -4 -98 -4z" />
+<glyph unicode="m" horiz-adv-x="1210" d="M117 0v977q154 68 303 67q141 0 196 -73q113 74 261 73q141 0 186 -69q43 -68 43 -227v-721q0 -20 -14 -23q-20 -4 -99 -4v754q0 109 -26 147q-29 41 -109 41q-104 0 -188 -55v-860q0 -18 -11 -23h-2q-16 -4 -100 -4v801q-3 77 -31 110q-27 33 -108 33q-92 0 -189 -45 v-872q0 -18 -16 -23q-20 -4 -96 -4z" />
+<glyph unicode="n" horiz-adv-x="819" d="M113 0v973q168 72 331 71q158 0 220 -65q61 -65 61 -215v-737q0 -20 -14 -23q-20 -4 -101 -4v733q0 117 -34.5 164t-135.5 47q-125 0 -215 -47v-870q0 -20 -14 -23q-20 -4 -98 -4z" />
+<glyph unicode="o" horiz-adv-x="782" d="M63 510q0 535 343 534q164 0 241 -114q76 -113 76 -418q0 -532 -340 -532q-83 0 -135 18q-55 18 -98 72q-43 51 -66 163q-21 103 -21 277zM184 502q0 -164 27 -266q25 -96 65 -127t111 -31q215 0 215 438q0 254 -47 340q-49 88 -154 88q-106 0 -161.5 -98t-55.5 -344z " />
+<glyph unicode="p" horiz-adv-x="817" d="M117 -356v1319q131 82 295 81q168 0 254 -96q84 -92 84 -336q0 -154 -23 -278q-20 -115 -57 -184q-35 -66 -82 -107q-43 -37 -88 -51q-40 -12 -86 -12q-126 0 -185 73v-448q-33 -8 -59 -8q-53 0 -53 47zM229 176q55 -94 154 -94q244 6 244 508q0 209 -52 280 q-51 74 -169 74q-100 0 -177 -51v-717z" />
+<glyph unicode="q" horiz-adv-x="833" d="M82 453q0 301 110.5 446t303.5 145q135 0 223 -63v-1337q0 -33 -12 -41q-10 -8 -58 -9h-24q-6 0 -12.5 1.5t-8.5 1.5v491q-74 -109 -229 -108q-293 0 -293 473zM205 451q0 -369 209 -369h9q53 0 101 31q52 34 80 98v696q-47 37 -133 37q-266 1 -266 -493z" />
+<glyph unicode="r" horiz-adv-x="561" d="M113 0v954q133 90 274 90q147 0 148 -71q0 -37 -17 -68q-51 31 -115 31q-100 0 -176 -57v-852q0 -20 -14 -23q-20 -4 -100 -4z" />
+<glyph unicode="s" horiz-adv-x="751" d="M80 68q0 35 24 69q90 -53 224 -53q221 0 221 158q0 113 -115 198l-215 156q-82 57 -108.5 104.5t-26.5 110.5q0 109 88 170q92 63 246 63q80 0 151 -20q63 -18 86 -40.5t23 -41.5q0 -35 -27 -63q-102 66 -223 65q-96 0 -155.5 -35t-59.5 -98q0 -76 100 -143l222 -158 q139 -115 139 -254q0 -135 -88 -205q-90 -72 -248 -71q-113 0 -188 26q-70 25 -70 62z" />
+<glyph unicode="t" horiz-adv-x="608" d="M55 924q0 63 4 84q4 16 23 16h125v324q0 33 18.5 39t93.5 6v-369h248q0 -63 -4 -84q-4 -16 -20 -16h-224v-629q0 -59 5 -113q2 -37 26 -71q23 -31 64 -31q66 0 133 33q8 -31 8 -60q0 -37 -47 -55q-49 -18 -119 -18q-59 0 -98 22q-37 23 -55 70q-16 43 -23 96 q-6 49 -6 129v627h-152z" />
+<glyph unicode="u" horiz-adv-x="849" d="M119 346v649q0 25 14 27q10 2 100 2v-692q0 -147 39 -199q41 -53 158 -53q111 0 188 47v868q0 23 15 25q20 4 98 4v-973q-139 -72 -311 -71.5t-238 83.5q-63 82 -63 283z" />
+<glyph unicode="v" horiz-adv-x="727" d="M53 987q-3 9 -3 15q0 13 11 18q10 4 107 4l88 -356q37 -143 57 -244l43 -215l17 -82h2q47 281 108 543l80 325q3 22 19 25q20 4 98 4l-262 -1036q-45 -4 -76 -4q-23 0 -51 102z" />
+<glyph unicode="w" horiz-adv-x="1130" d="M49 995q-3 22 12 25q20 4 107 4l82 -373q57 -283 96 -510h6q16 94 88 445l72 375q4 29 39 28h74l88 -407q4 -14 21.5 -87t25.5 -116l19.5 -96.5l15.5 -77.5l10 -64h8q15 163 86 510l70 344q2 20 20 25q20 4 94 4q-227 -1036 -233 -1036q-45 -4 -70 -4q-14 0 -32 30 q-16 27 -29 82l-33 142q-70 287 -119 571q-57 -346 -110 -573l-56 -248q-78 -4 -88 -4q-29 0 -49 100z" />
+<glyph unicode="x" horiz-adv-x="892" d="M45 0l332 537l-285 467q-6 16 10 18q12 2 109 2l104 -164l140 -244l143 248l92 140q10 16 23 18q10 2 106 2l-297 -479l320 -516q7 -10 7 -17t-9 -8q-20 -4 -121 -4l-107 164q-71 114 -172 295q-20 -39 -170 -297l-92 -139q-8 -14 -28 -19q-25 -4 -105 -4z" />
+<glyph unicode="y" horiz-adv-x="755" d="M2 -334q0 39 21 66q61 -29 124 -29q127 0 187 264l-266 1022q-6 29 8 31q20 4 100 4l154 -602l59 -318q18 141 55 320l138 565q3 28 18 31q20 4 102 4l-270 -1087q-47 -182 -110 -256q-66 -76 -170 -76q-150 0 -150 61z" />
+<glyph unicode="z" horiz-adv-x="743" d="M59 57q0 25 13 45l481 824h-248q-166 0 -231 -11q-4 37 -4 56q0 53 36 53h566q12 -12 12 -37q0 -33 -14 -59l-477 -822h237q184 0 248 17q2 -8 2 -53q0 -70 -43 -70h-557q-21 18 -21 57z" />
+<glyph unicode="{" horiz-adv-x="581" d="M106 606q0 43 31 62q39 23 53 37q18 18 33 55t15 104q0 90 -14.5 219t-14.5 201q0 240 317 240q23 -35 23 -70q0 -37 -29 -41q-94 -2 -145 -45q-51 -41 -51 -133q0 -43 12 -174q12 -132 12 -221q0 -174 -121 -224q57 -20 90 -65q31 -43 31 -127q0 -90 -12 -225.5 t-12 -188.5q0 -131 47 -168q47 -39 164 -47q6 -28 6 -43q0 -59 -43 -59q-156 0 -222 63q-68 63 -67 211q0 78 14.5 205t14.5 219q0 80 -31 117q-29 35 -92 47q-9 22 -9 51z" />
+<glyph unicode="|" horiz-adv-x="722" d="M305 -410v2044q0 23 17 29q14 6 96 6v-2048q0 -23 -17 -27q-20 -4 -96 -4z" />
+<glyph unicode="}" horiz-adv-x="581" d="M37 -240q0 37 26 41q98 3 148 43q51 41 51 136q0 46 -12 178q-12 133 -12 219q0 98 30 147q29 47 90 76q-61 23 -90 64q-31 43 -30 129q0 90 12 225t12 188q0 127 -47 164q-49 39 -166 51q0 8 -1 18.5t-2 16.5t-1 8q0 59 41 60q156 0 221 -64q68 -63 68 -211 q0 -80 -14.5 -207t-14.5 -219q0 -80 31 -116q29 -35 92 -48q10 -25 10 -49q0 -41 -30 -63q-40 -22 -56 -37q-16 -16 -31 -53q-16 -43 -16 -107q0 -90 14.5 -219t14.5 -201q0 -238 -318 -237q-20 26 -20 67z" />
+<glyph unicode="~" horiz-adv-x="817" d="M25 535q33 49 96 88t151 39q71 0 148 -50q80 -51 139 -51q92 0 160 82q25 20 49 2q23 -16 29 -55q-90 -133 -248 -133q-76 0 -160 51q-80 49 -127 49q-41 0 -72 -14q-39 -18 -67 -41l-19.5 -15.5t-14.5 -10.5l-5 -3q-18 -8 -37 10q-20 21 -22 52z" />
+<glyph unicode="&#xa1;" horiz-adv-x="385" d="M111 948q0 41 24 66q27 27 66 26q86 0 86 -92q0 -41 -23 -65q-25 -27 -63 -27q-90 0 -90 92zM123 -406l18 1002q3 34 25 43q25 10 86 10l16 -1022q0 -20 -28 -26q-28 -7 -117 -7z" />
+<glyph unicode="&#xa2;" d="M186 461q0 524 291 575v217q0 31 25 43q20 10 78 11v-267q57 -4 102 -24.5t45 -38.5q0 -55 -14 -84q-70 45 -148 45q-51 0 -94 -16q-41 -16 -84 -62q-41 -45 -63 -147q-23 -106 -23 -252q0 -135 14 -207q16 -82 47 -115q33 -37 70 -45q41 -10 103 -10q96 0 178 63 q14 -27 14 -73q0 -29 -59 -60q-59 -33 -133 -34v-218q0 -31 -21 -38q-25 -10 -80 -11v271q-84 10 -133 43q-47 33 -82 141q-33 105 -33 293z" />
+<glyph unicode="&#xa3;" horiz-adv-x="782" d="M31 569v49q0 10 4 31q4 16 8 19q8 4 14 4h123q0 301 84 426q82 121 240 121q86 0 145.5 -27t59.5 -70q0 -37 -21 -71q-74 55 -168 55q-74 0 -119 -31q-47 -31 -77.5 -129t-30.5 -266v-8h301q0 -53 -4 -82q-2 -20 -25 -21h-272q0 -264 14 -456l375 -9q10 -37 10 -53 q0 -51 -112 -51h-381q-18 313 -19 569h-149z" />
+<glyph unicode="&#xa5;" d="M78 1415q-6 14 12 17q10 2 115 2l98 -293q37 -104 88 -267q47 -147 49 -167q4 53 138 436l94 270q2 12 20 17q20 4 103 4l-228 -641h201q0 -55 -8 -74q-8 -20 -39 -21h-189l-36 -108v-127h274q0 -57 -8 -74q-10 -20 -39 -20h-227v-342q0 -20 -15 -23q-20 -4 -98 -4v369 h-279q0 59 9 75q10 18 39 19h231v119l-43 116h-236q0 55 9 74q8 20 39 21h153z" />
+<glyph unicode="&#xa6;" horiz-adv-x="460" d="M174 -397v809q0 25 14.5 35t45 10t53.5 -8v-814q0 -29 -11 -32q-12 -6 -47 -6q-37 0 -55 6zM174 682v793q0 47 59 47q31 0 54 -9v-798q0 -25 -10.5 -33t-47.5 -8q-32 0 -55 8z" />
+<glyph unicode="&#xa7;" horiz-adv-x="749" d="M96 805q0 135 127 209l-20 22q-49 55 -66 92q-20 45 -20 93q0 100 82 161q80 59 219 60q86 0 149 -29q61 -27 74 -59q4 -12 4 -23q0 -39 -24 -69q-80 61 -197 61q-86 0 -133 -33q-49 -33 -49 -88q0 -51 69 -131q18 -20 121 -110q98 -86 135 -130q88 -94 88 -204 q0 -51 -32 -113q-31 -57 -95 -94l21 -23q53 -59 67 -92q18 -40 19 -92q0 -98 -82 -159.5t-217 -61.5q-88 0 -152 28q-61 29 -73 60q-4 8 -5 22q0 39 25 70q77 -61 197 -61q88 0 135 32.5t47 87.5q0 61 -70 131q-37 37 -118.5 109t-137.5 131q-88 101 -88 203zM203 799 q0 -74 69 -156q20 -27 174 -151q39 16 74 63q31 43 31 78q0 74 -72 158q-37 41 -174 149q-45 -14 -73.5 -59t-28.5 -82z" />
+<glyph unicode="&#xa8;" horiz-adv-x="448" d="M0 1329q0 37 20 60q20 25 60 24q40 0 61 -24q20 -23 21 -60q0 -35 -23 -61q-20 -23 -59 -23q-80 0 -80 84zM289 1329q0 33 22 60q20 25 58 24q40 0 61 -24q20 -23 21 -60q0 -35 -23 -61q-20 -23 -59 -23q-80 0 -80 84z" />
+<glyph unicode="&#xa9;" horiz-adv-x="948" d="M78 1106q0 451 409 450q197 0 293 -102q94 -100 94 -346q0 -219 -104 -336t-295 -117q-203 0 -301 99q-96 96 -96 352zM168 1100q0 -197 73.5 -277t225.5 -80q145 0 231 92.5t86 276.5q0 195 -73 279q-74 82 -222 82q-321 0 -321 -373zM311 1081q0 184 54 240 q55 59 139 59q31 0 61.5 -12t30.5 -22q0 -31 -14 -54q-35 20 -68 21q-59 0 -92 -45q-35 -47 -35 -189q0 -113 24.5 -143.5t82.5 -30.5q41 0 88 27q14 -27 14 -49q0 -14 -37 -29q-39 -16 -74 -16q-96 0 -135 44.5t-39 198.5z" />
+<glyph unicode="&#xaa;" horiz-adv-x="684" d="M100 838q0 143 64 194q66 53 178 53q76 0 143 -22v160q0 129 -147 129q-109 0 -207 -49q-15 15 -18 43q-4 29 10 43q76 66 248 65q213 0 213 -197v-608q-113 -57 -252 -57q-113 0 -172.5 47t-59.5 199zM195 831q0 -92 41 -122q40 -31 116 -31q86 0 133 31v268 q-49 20 -114 20q-90 0 -133 -31t-43 -135z" />
+<glyph unicode="&#xab;" horiz-adv-x="851" d="M57 522q0 25 76 150q63 104 154 237l75 115q18 0 35 -14q23 -18 27 -29l6 -14q0 -23 -65 -136q-59 -100 -134 -208l-65 -101q272 -403 272 -452q-27 -70 -65 -70q-316 463 -316 522zM391 512q0 20 76 141q41 66 149 224l76 104q12 0 35 -14q18 -12 27 -27l6 -14 q0 -27 -64 -129q-39 -61 -131 -195l-65 -90q266 -352 266 -399q-25 -68 -64 -68q-311 416 -311 467z" />
+<glyph unicode="&#xac;" horiz-adv-x="817" d="M68 553q0 25 12 39q12 16 29 16h622v-381q-18 -8 -55 -8q-53 0 -53 39v242h-545q-10 26 -10 53z" />
+<glyph unicode="&#xad;" horiz-adv-x="591" d="M88 526v49q0 20 2 31q4 16 8 19q8 4 17 4h391q0 -53 -4 -82q-2 -20 -25 -21h-389z" />
+<glyph unicode="&#xae;" horiz-adv-x="948" d="M78 1106q0 451 409 450q197 0 293 -102q94 -100 94 -346q0 -219 -104 -336t-295 -117q-203 0 -301 99q-96 96 -96 352zM168 1100q0 -197 73.5 -277t225.5 -80q145 0 231 92.5t86 276.5q0 195 -73 279q-74 82 -222 82q-321 0 -321 -373zM352 844v530q0 10 13 10h100 q170 0 170 -147q0 -111 -84 -152q80 -82 96 -225q0 -14 -22 -18l-3 1q-3 1 -7.5 1h-10.5h-24q-23 166 -97 225h-67v-209q0 -10 -10 -14q-6 -2 -41 -2h-13zM416 1128h47q104 0 104 109q0 90 -102 90h-49v-199z" />
+<glyph unicode="&#xaf;" horiz-adv-x="522" d="M0 1313q4 55 47 55h467q10 -25 10 -51q-2 -57 -45 -57h-473q-6 22 -6 53z" />
+<glyph unicode="&#xb0;" horiz-adv-x="757" d="M199 1335q0 186 192 187q88 0 133 -41q43 -39 43 -144q0 -92 -49 -139q-51 -47 -141 -47q-92 0 -133 39q-45 41 -45 145zM283 1331q0 -100 96 -100q106 0 106 106q0 104 -94 105q-108 0 -108 -111z" />
+<glyph unicode="&#xb1;" horiz-adv-x="884" d="M86 27v49q0 20 2 30q4 16 8 19q8 4 17 4h690q0 -57 -4 -82q-4 -20 -25 -20h-688zM88 573v50q0 20 2 30q4 16 8 19q8 4 17 4h280v278q0 22 19 25q25 4 84 4v-307h307q0 -59 -4 -84q-3 -18 -25 -19h-278v-280q0 -18 -19 -23q-25 -4 -84 -4v307h-307z" />
+<glyph unicode="&#xb2;" horiz-adv-x="819" d="M106 633q0 43 19 65q53 59 180 170q131 115 184 183q59 76 60 153q0 59 -35 99q-34 37 -123 36q-115 0 -235 -90q-25 33 -25 70q0 43 96 90q92 45 205 45q137 0 192.5 -59.5t55.5 -161.5q0 -74 -45 -150q-46 -77 -98 -129l-140 -133q-104 -98 -127 -123h439q8 -33 8 -49 q0 -57 -39 -57h-563q-9 14 -9 41z" />
+<glyph unicode="&#xb3;" horiz-adv-x="845" d="M125 672q0 39 31 63q78 -59 215 -59q111 0 174 45t63 125q0 55 -39 92q-41 39 -100 47q-41 8 -168 8q-12 14 -12 51q0 41 37 41q61 0 135 -8q106 70 106 162q0 43 -37 78q-39 35 -127 35q-138 0 -239 -80q-25 25 -25 55q0 33 17 41q90 86 284 86q131 0 189 -51 q59 -53 59 -133q0 -125 -115 -215q70 -25 109 -76q41 -53 41 -123q0 -139 -96 -213q-92 -72 -258 -72q-164 0 -228 58q-16 16 -16 43z" />
+<glyph unicode="&#xb4;" horiz-adv-x="329" d="M0 1249q74 74 119 113q94 82 110 94q45 35 50 35q18 0 34 -33q14 -31 19 -57q-14 -18 -111 -90q-102 -78 -176 -127q-10 0 -22 16q-6 8 -17 33z" />
+<glyph unicode="&#xb5;" horiz-adv-x="856" d="M119 -391v1376q0 49 55 49q37 0 55 -8v-760q0 -180 195 -180q106 0 201 41v856q0 27 12 39t43 12q37 0 55 -8v-979q-158 -68 -311 -67q-137 0 -195 73v-407q0 -45 -61 -45q-26 0 -49 8z" />
+<glyph unicode="&#x3bc;" horiz-adv-x="856" d="M119 -391v1376q0 49 55 49q37 0 55 -8v-760q0 -180 195 -180q106 0 201 41v856q0 27 12 39t43 12q37 0 55 -8v-979q-158 -68 -311 -67q-137 0 -195 73v-407q0 -45 -61 -45q-26 0 -49 8z" />
+<glyph unicode="&#xb6;" horiz-adv-x="1116" d="M88 864q0 293 107 439q109 150 299 149q135 0 237 -53v-1364q0 -41 -57 -41q-35 0 -53 8v422q-70 -35 -187 -35q-152 0 -250 109q-96 104 -96 366zM203 874q0 -387 258 -391q90 -4 157 37v805q-41 29 -139 29q-135 0 -205 -123q-71 -126 -71 -357zM885 2v1364q0 47 59 47 q18 0 53 -10v-1368q0 -22 -12 -31q-10 -8 -45 -8q-37 0 -55 6z" />
+<glyph unicode="&#xb7;" horiz-adv-x="423" d="M121 551q0 39 24.5 65.5t61.5 26.5q90 0 90 -92q0 -39 -24.5 -65.5t-65.5 -26.5q-86 0 -86 92z" />
+<glyph unicode="&#xb8;" horiz-adv-x="256" d="M0 -375q10 53 20 68q9 3 19 0q2 0 12 -5t19 -7q20 -6 41 -7q70 0 69 74q0 72 -67 72l-80 -13l39 199h73l-26 -129q4 4 37 4q41 0 71 -31q29 -29 29 -88q0 -78 -43 -118q-41 -39 -104 -39q-62 0 -109 20z" />
+<glyph unicode="&#xb9;" horiz-adv-x="833" d="M125 639q0 59 39 59h231v631l-250 -51q-14 20 -14 53q0 41 39 53q229 70 301 70q25 0 39 -6v-750h195q6 -27 6 -51q0 -55 -37 -55h-543q-6 27 -6 47z" />
+<glyph unicode="&#xba;" horiz-adv-x="710" d="M86 1020q0 217 76 328q74 106 207 106q135 0 196.5 -92t61.5 -340q0 -428 -279 -428q-133 0 -198 90q-64 88 -64 336zM184 1012q0 -186 39 -252q41 -70 125 -70q182 0 182 334q0 186 -38 256q-41 72 -121 72q-187 0 -187 -340z" />
+<glyph unicode="&#xbb;" horiz-adv-x="847" d="M88 111q0 49 266 401l-63 90q-82 117 -131 195q-66 100 -66 129q0 39 64 57q305 -420 305 -471q0 -25 -78 -143q-70 -106 -158 -222l-77 -104q-4 2 -17 6q-10 4 -27 21q-18 18 -18 41zM412 68q0 18 69 135l135 217l68 102q-264 391 -264 445q0 16 18 32q16 14 33 21l16 4 q305 -449 306 -502q0 -31 -78 -155q-92 -150 -160 -248l-78 -119l-18 6q-12 4 -29 21q-18 18 -18 41z" />
+<glyph unicode="&#xbc;" horiz-adv-x="1794" d="M125 639q0 59 39 59h231v631l-250 -51q-14 20 -14 53q0 41 39 53q229 70 301 70q25 0 39 -6v-750h195q6 -27 6 -51q0 -55 -37 -55h-543q-6 27 -6 47zM485 29l818 1401q8 27 36 26q41 0 76 -43l-819 -1411q-10 -18 -33 -18q-51 0 -78 45zM1012 205q0 27 14 63 q41 127 148 293q111 172 204 262q37 39 92 39q10 0 48 -6v-596h143q10 -27 10 -55q0 -53 -35 -53h-118v-123q0 -39 -62 -39q-20 0 -45 6v156h-383q-16 20 -16 53zM1122 254h291l4 467q-82 -76 -168 -209q-90 -141 -127 -258z" />
+<glyph unicode="&#xbd;" horiz-adv-x="1863" d="M125 639q0 59 39 59h231v631l-250 -51q-14 20 -14 53q0 41 39 53q229 70 301 70q25 0 39 -6v-750h195q6 -27 6 -51q0 -55 -37 -55h-543q-6 27 -6 47zM485 29l818 1401q8 27 36 26q41 0 76 -43l-819 -1411q-10 -18 -33 -18q-51 0 -78 45zM1133 41q0 45 18 65 q53 59 180 170q125 109 184.5 185t59.5 151q0 59 -35 99q-34 37 -123 37q-115 0 -235 -91q-25 35 -25 70q0 41 96 88q98 47 205 47q137 0 193 -59q55 -57 55 -162q0 -74 -45 -149q-46 -77 -98 -130q-53 -53 -140 -131q-96 -88 -127 -125h439q8 -33 8 -49q0 -57 -39 -57h-563 q-8 14 -8 41z" />
+<glyph unicode="&#xbe;" horiz-adv-x="1787" d="M125 672q0 39 31 63q78 -59 215 -59q111 0 174 45t63 125q0 55 -39 92q-41 39 -100 47q-41 8 -168 8q-12 14 -12 51q0 41 37 41q61 0 135 -8q106 70 106 162q0 43 -37 78q-39 35 -127 35q-138 0 -239 -80q-25 25 -25 55q0 33 17 41q90 86 284 86q131 0 189 -51 q59 -53 59 -133q0 -125 -115 -215q70 -25 109 -76q41 -53 41 -123q0 -139 -96 -213q-92 -72 -258 -72q-164 0 -228 58q-16 16 -16 43zM498 29l817 1401q8 27 37 26q41 0 75 -43l-819 -1411q-10 -18 -33 -18q-50 0 -77 45zM1006 205q0 27 14 63q41 127 147 293 q111 172 205 262q37 39 92 39q10 0 47 -6v-596h144q10 -27 10 -55q0 -53 -35 -53h-119v-123q0 -39 -61 -39q-20 0 -45 6v156h-383q-16 20 -16 53zM1116 254h291l4 467q-82 -76 -168 -209q-90 -141 -127 -258z" />
+<glyph unicode="&#xbf;" horiz-adv-x="616" d="M29 -109q0 78 28 160q25 70 64 127l82 111q51 70 65 94q37 63 37 139q0 14 -4 56q-4 33 -6 40q-4 10 0 21q18 29 102 12q23 -55 23 -125q0 -94 -47 -178q-41 -66 -90 -131q-61 -80 -101 -154q-35 -68 -35 -151q0 -199 199 -199q117 0 197 62q14 -37 14 -88q0 -29 -78 -58 q-80 -29 -164 -28q-125 0 -206 69q-80 67 -80 221zM254 946q0 37 25 66q25 27 65 26q86 0 86 -92q0 -37 -24 -65q-25 -27 -62 -27q-90 0 -90 92z" />
+<glyph unicode="&#xc0;" horiz-adv-x="890" d="M14 2l387 1421q4 18 39 19q31 0 49 -6l388 -1409q4 -16 -6.5 -22.5t-41.5 -6.5q-49 0 -67 2l-103 395h-426l-94 -372q-3 -25 -55 -25q-33 0 -70 4zM209 1821q2 20 20 57q16 31 33 31q2 0 133 -109q117 -96 146 -131q-23 -66 -43 -65q-2 0 -140 102q-139 105 -149 115z M260 500h371l-99 379q-78 305 -86 401q-16 -137 -88 -401z" />
+<glyph unicode="&#xc1;" horiz-adv-x="890" d="M14 2l387 1421q4 18 39 19q31 0 49 -6l388 -1409q4 -16 -6.5 -22.5t-41.5 -6.5q-49 0 -67 2l-103 395h-426l-94 -372q-3 -25 -55 -25q-33 0 -70 4zM260 500h371l-99 379q-78 305 -86 401q-16 -137 -88 -401zM362 1659q74 74 119 113l113 94q45 35 47 35q18 0 33 -31 q18 -35 20 -60q-18 -23 -110 -92l-176 -125q-8 0 -21 17q-10 12 -18 32z" />
+<glyph unicode="&#xc2;" horiz-adv-x="890" d="M14 2l387 1421q4 18 39 19q31 0 49 -6l388 -1409q4 -16 -6.5 -22.5t-41.5 -6.5q-49 0 -67 2l-103 395h-426l-94 -372q-3 -25 -55 -25q-33 0 -70 4zM195 1636l227 234q16 4 27 4q27 0 40 -19q199 -199 199 -219q0 -12 -26.5 -26.5t-57.5 -14.5q-141 147 -158 177 q-150 -174 -174 -175q-50 0 -77 39zM260 500h371l-99 379q-78 305 -86 401q-16 -137 -88 -401z" />
+<glyph unicode="&#xc3;" horiz-adv-x="890" d="M14 2l387 1421q4 18 39 19q31 0 49 -6l388 -1409q4 -16 -6.5 -22.5t-41.5 -6.5q-49 0 -67 2l-103 395h-426l-94 -372q-3 -25 -55 -25q-33 0 -70 4zM152 1688q84 139 208 139q45 0 95 -53q49 -51 92 -52q47 0 76 23q27 20 45 47q16 23 22 23q10 0 23 -17q10 -12 16 -33 l6 -16q-12 -27 -33 -53q-16 -20 -69 -54q-47 -29 -101 -28q-70 0 -114 53q-45 55 -78 55q-34 0 -61 -24q-29 -27 -43 -45q-16 -23 -25 -23q-32 1 -59 58zM260 500h371l-99 379q-78 305 -86 401q-16 -137 -88 -401z" />
+<glyph unicode="&#xc4;" horiz-adv-x="890" d="M14 2l387 1421q4 18 39 19q31 0 49 -6l388 -1409q4 -16 -6.5 -22.5t-41.5 -6.5q-49 0 -67 2l-103 395h-426l-94 -372q-3 -25 -55 -25q-33 0 -70 4zM223 1739q0 37 21 59q23 25 59 25q39 0 59 -23q23 -27 23 -61q0 -33 -23 -60q-23 -25 -59 -24q-80 0 -80 84zM260 500h371 l-99 379q-78 305 -86 401q-16 -137 -88 -401zM512 1739q0 37 20 59q20 25 60 25q41 0 61.5 -22.5t20.5 -61.5q0 -33 -23 -60q-20 -25 -59 -24q-80 0 -80 84z" />
+<glyph unicode="&#xc5;" horiz-adv-x="890" d="M14 2l387 1421q4 18 39 19q31 0 49 -6l388 -1409q4 -16 -6.5 -22.5t-41.5 -6.5q-49 0 -67 2l-103 395h-426l-94 -372q-3 -25 -55 -25q-33 0 -70 4zM260 500h371l-99 379q-78 305 -86 401q-16 -137 -88 -401zM260 1769q0 186 193 187q90 0 135 -41q41 -39 41 -143 q0 -186 -191 -187q-90 0 -133 41q-45 43 -45 143zM348 1765q0 -98 92 -98q102 0 103 105q0 100 -90 100q-53 0 -78 -25q-27 -27 -27 -82z" />
+<glyph unicode="&#xc6;" horiz-adv-x="1312" d="M37 2l672 1409q6 23 36 23h515q0 -78 -3 -88q-4 -16 -20 -17h-383v-493h358q0 -63 -4 -88q-2 -16 -18 -17h-336v-627h403q0 -70 -4 -90q-2 -14 -20 -14h-492v395h-401l-178 -372q-9 -25 -56 -25q-32 0 -69 4zM389 500h352v800q-78 -215 -174 -430z" />
+<glyph unicode="&#xc7;" horiz-adv-x="720" d="M80 649q0 205 24 359q25 156 62 237q37 84 92 133q53 47 107 64q45 14 112 14q94 0 141 -33q49 -35 50 -69q0 -37 -21 -70q-70 63 -153 64q-49 0 -86 -13q-39 -12 -80 -57q-43 -47 -70 -116.5t-45 -205.5q-16 -117 -16 -309q0 -156 20 -282q18 -113 55 -168.5t76 -76 t92 -20.5q70 0 125 27q59 29 88 63q20 -35 21 -71q0 -47 -66 -90q-65 -43 -159 -49l-21 -103q4 4 37 4q39 0 69.5 -30.5t30.5 -88.5q0 -78 -43 -118q-41 -39 -104 -39q-61 0 -109 20q10 53 21 68q9 3 18 0q2 0 12.5 -5t18.5 -7q23 -6 41 -7q70 0 69 74q0 72 -67 72l-80 -13 l33 173q-43 2 -90 20q-39 14 -78 57t-68 115q-27 70 -43 193q-16 126 -16 284z" />
+<glyph unicode="&#xc8;" horiz-adv-x="688" d="M117 0v1405q0 29 26 29h490q0 -98 -10 -103q-2 -2 -11 -2h-385v-493h361q0 -76 -2 -88q-2 -16 -23 -17h-336v-627h404q0 -80 -2 -90q-2 -14 -23 -14h-489zM162 1821q2 20 20 57q14 31 33 31q2 0 133 -109q115 -96 146 -131q-23 -66 -43 -65q-2 0 -140 102 q-139 105 -149 115z" />
+<glyph unicode="&#xc9;" horiz-adv-x="688" d="M117 0v1405q0 29 26 29h490q0 -98 -10 -103q-2 -2 -11 -2h-385v-493h361q0 -76 -2 -88q-2 -16 -23 -17h-336v-627h404q0 -80 -2 -90q-2 -14 -23 -14h-489zM313 1659q74 74 119 113l113 94q45 35 47 35q18 0 33 -31q18 -35 20 -60q-18 -23 -110 -92q-74 -55 -177 -125 q-8 0 -20 17q-10 12 -19 32z" />
+<glyph unicode="&#xca;" horiz-adv-x="688" d="M117 0v1405q0 29 26 29h490q0 -98 -10 -103q-2 -2 -11 -2h-385v-493h361q0 -76 -2 -88q-2 -16 -23 -17h-336v-627h404q0 -80 -2 -90q-2 -14 -23 -14h-489zM145 1636l228 234q16 4 26 4q27 0 41 -19q199 -199 199 -219q0 -12 -26.5 -26.5t-57.5 -14.5q-141 147 -158 177 q-150 -174 -174 -175q-51 0 -78 39z" />
+<glyph unicode="&#xcb;" horiz-adv-x="688" d="M117 0v1405q0 29 26 29h490q0 -98 -10 -103q-2 -2 -11 -2h-385v-493h361q0 -76 -2 -88q-2 -16 -23 -17h-336v-627h404q0 -80 -2 -90q-2 -14 -23 -14h-489zM174 1739q0 37 21 59q23 25 59 25q41 0 61.5 -22.5t20.5 -61.5q0 -33 -23 -60q-23 -25 -59 -24q-80 0 -80 84z M463 1739q0 33 22 59q23 25 58 25q41 0 61.5 -22.5t20.5 -61.5q0 -33 -23 -60q-20 -25 -59 -24q-80 0 -80 84z" />
+<glyph unicode="&#xcc;" horiz-adv-x="335" d="M-68 1821q2 27 18.5 57.5t35.5 30.5q4 0 135 -109q123 -102 143 -131q-23 -66 -43 -65q-2 0 -139 102q-140 105 -150 115zM111 0v1376q0 45 16 51q15 6 98 7v-1407q0 -20 -14 -23q-20 -4 -100 -4z" />
+<glyph unicode="&#xcd;" horiz-adv-x="335" d="M84 1659q74 74 119 113q94 82 110 94q45 35 49 35q18 0 33 -31q18 -35 21 -60q-18 -23 -111 -92l-176 -125q-10 0 -23 17q-6 8 -16 32zM111 0v1376q0 45 16 51q15 6 98 7v-1407q0 -20 -14 -23q-20 -4 -100 -4z" />
+<glyph unicode="&#xce;" horiz-adv-x="335" d="M-82 1636l227 234q16 4 27 4q25 0 41 -19q199 -199 199 -219q0 -12 -27 -26.5t-57 -14.5q-141 147 -158 177q-150 -174 -174 -175q-51 0 -78 39zM111 0v1376q0 45 16 51q15 6 98 7v-1407q0 -20 -14 -23q-20 -4 -100 -4z" />
+<glyph unicode="&#xcf;" horiz-adv-x="335" d="M-53 1739q0 33 22 59q23 25 58 25q41 0 61.5 -22.5t20.5 -61.5q0 -33 -23 -60q-20 -25 -59 -24q-80 0 -80 84zM111 0v1376q0 45 16 51q15 6 98 7v-1407q0 -20 -14 -23q-20 -4 -100 -4zM236 1739q0 33 22 59q20 25 57 25q39 0 60 -23q23 -27 22 -61q0 -33 -22 -60 q-23 -25 -60 -24q-79 0 -79 84z" />
+<glyph unicode="&#xd0;" horiz-adv-x="845" d="M25 705v49q0 8 4 28q4 16 8 19q8 4 14 4h64v594q0 35 51 35h205q203 0 301 -146q96 -141 96 -487q0 -248 -29 -400q-31 -160 -88 -245q-59 -88 -125 -121q-70 -35 -164 -35h-247v705h-90zM227 109h138q41 0 84 14q35 12 75 55q39 41 64 117q27 78 41 203q16 137 16 303 q0 287 -65.5 407.5t-210.5 120.5h-142v-524h213q0 -57 -4 -82q-3 -18 -24 -18h-185v-596z" />
+<glyph unicode="&#xd1;" horiz-adv-x="931" d="M113 0v1405q0 29 26 29h80l246 -566q63 -172 254 -647q-10 170 -10 699v485q0 23 14 25q20 4 98 4v-1407q0 -27 -26 -27h-78l-252 575q-45 102 -250 642q8 -270 8 -689v-501q0 -18 -12 -23q-16 -4 -98 -4zM190 1688q84 139 209 139q45 0 95 -53q49 -51 92 -52q47 0 76 23 q27 20 45 47q16 23 22 23q10 0 23 -17q10 -12 16 -33l6 -16q-12 -27 -33 -53q-16 -20 -69 -54q-47 -29 -101 -28q-70 0 -114 53q-47 55 -78 55q-34 0 -62 -24q-29 -27 -43 -45q-16 -23 -24 -23q-33 1 -60 58z" />
+<glyph unicode="&#xd2;" horiz-adv-x="911" d="M78 727q0 391 94 559t299 168q200 0 283 -160q82 -158 82 -565q0 -414 -91 -579q-92 -170 -296.5 -170t-286.5 161q-84 164 -84 586zM203 692q0 -326 55 -461t195 -135q141 0 202 144q59 139 60 491q0 338 -55.5 473t-192.5 135q-135 0 -201 -149q-63 -146 -63 -498z M240 1821q2 27 18 57.5t35 30.5q2 0 133 -109q127 -106 145 -131q-23 -66 -43 -65q-4 0 -141 102q-131 99 -147 115z" />
+<glyph unicode="&#xd3;" horiz-adv-x="911" d="M78 727q0 391 94 559t299 168q200 0 283 -160q82 -158 82 -565q0 -414 -91 -579q-92 -170 -296.5 -170t-286.5 161q-84 164 -84 586zM203 692q0 -326 55 -461t195 -135q141 0 202 144q59 139 60 491q0 338 -55.5 473t-192.5 135q-135 0 -201 -149q-63 -146 -63 -498z M391 1659q74 74 119 113l113 94q45 35 47 35q18 0 35 -31q14 -31 18 -60q-18 -23 -111 -92l-176 -125q-10 0 -22 17q-6 8 -17 32z" />
+<glyph unicode="&#xd4;" horiz-adv-x="911" d="M78 727q0 391 94 559t299 168q200 0 283 -160q82 -158 82 -565q0 -414 -91 -579q-92 -170 -296.5 -170t-286.5 161q-84 164 -84 586zM203 692q0 -326 55 -461t195 -135q141 0 202 144q59 139 60 491q0 338 -55.5 473t-192.5 135q-135 0 -201 -149q-63 -146 -63 -498z M223 1636l228 234q16 4 26 4q27 0 41 -19q199 -199 199 -219q0 -12 -26.5 -26.5t-57.5 -14.5q-141 147 -158 177q-150 -174 -174 -175q-51 0 -78 39z" />
+<glyph unicode="&#xd5;" horiz-adv-x="911" d="M78 727q0 391 94 559t299 168q200 0 283 -160q82 -158 82 -565q0 -414 -91 -579q-92 -170 -296.5 -170t-286.5 161q-84 164 -84 586zM180 1688q84 139 209 139q45 0 94 -53q49 -51 92 -52q47 0 76 23q27 20 45 47q16 23 23 23q12 0 24 -17q10 -12 17 -33l4 -16 q-12 -27 -33 -53q-16 -20 -69 -54q-47 -29 -101 -28q-68 0 -115 53q-49 55 -77 55q-34 0 -62 -24q-29 -27 -43 -45q-16 -23 -24 -23q-33 1 -60 58zM203 692q0 -326 55 -461t195 -135q141 0 202 144q59 139 60 491q0 338 -55.5 473t-192.5 135q-135 0 -201 -149 q-63 -146 -63 -498z" />
+<glyph unicode="&#xd6;" horiz-adv-x="911" d="M78 727q0 391 94 559t299 168q200 0 283 -160q82 -158 82 -565q0 -414 -91 -579q-92 -170 -296.5 -170t-286.5 161q-84 164 -84 586zM203 692q0 -326 55 -461t195 -135q141 0 202 144q59 139 60 491q0 338 -55.5 473t-192.5 135q-135 0 -201 -149q-63 -146 -63 -498z M252 1739q0 33 22 59q20 25 58 25q41 0 61.5 -22.5t20.5 -61.5q0 -33 -23 -60q-23 -25 -59 -24q-80 0 -80 84zM541 1739q0 33 22 59q23 25 58 25q41 0 61 -22.5t20 -61.5q0 -33 -22 -60q-20 -25 -59 -24q-80 0 -80 84z" />
+<glyph unicode="&#xd7;" d="M178 795q66 61 80 59q6 0 12 -6l170 -193l172 193q18 10 29 2q25 -18 53 -45q10 -10 11 -10l-195 -220l192 -215q-49 -49 -57 -55q-10 -8 -35 2l-170 191l-168 -191q-8 -8 -16 -8q-10 0 -18.5 6t-22.5 21l-35 34l191 215z" />
+<glyph unicode="&#xd8;" horiz-adv-x="948" d="M96 727q0 387 94 559q92 168 295 168q154 0 238 -90l43 109q70 -2 76 -37q0 -18 -58 -172q70 -166 70 -535q0 -410 -90 -579.5t-295 -169.5q-162 0 -244 92l-43 -105q-14 -2 -42.5 8.5t-30.5 28.5l2 7l8 22l26 67l25 62q-74 166 -74 565zM221 692q0 -297 43 -432 l379 1008q-55 72 -156 71q-138 0 -202 -147q-64 -146 -64 -500zM309 166q53 -72 156 -72q94 0 151 53q55 51 86 195q31 141 31 389q0 305 -43 440z" />
+<glyph unicode="&#xd9;" horiz-adv-x="935" d="M113 440v965q0 23 14 25q20 4 100 4v-998q0 -51 4 -112q2 -35 21 -93q15 -49 43 -79q25 -27 74 -48q45 -18 114 -18q143 0 230 43v1278q0 20 14 23q20 4 100 4v-1383q-47 -31 -141 -51t-203 -20q-92 0 -168 26q-70 25 -108 64q-37 37 -60 104q-23 70 -28 123 q-6 59 -6 143zM246 1821q2 20 20 57q16 31 33 31q2 0 133 -109q117 -96 146 -131q-23 -66 -43 -65q-2 0 -140 102q-139 105 -149 115z" />
+<glyph unicode="&#xda;" horiz-adv-x="935" d="M113 440v965q0 23 14 25q20 4 100 4v-998q0 -51 4 -112q2 -35 21 -93q15 -49 43 -79q25 -27 74 -48q45 -18 114 -18q143 0 230 43v1278q0 20 14 23q20 4 100 4v-1383q-47 -31 -141 -51t-203 -20q-92 0 -168 26q-70 25 -108 64q-37 37 -60 104q-23 70 -28 123 q-6 59 -6 143zM397 1659q74 74 119 113l113 94q45 35 47 35q16 0 33 -31q18 -35 20 -60q-18 -23 -111 -92l-176 -125q-8 0 -20 17q-10 12 -19 32z" />
+<glyph unicode="&#xdb;" horiz-adv-x="935" d="M113 440v965q0 23 14 25q20 4 100 4v-998q0 -51 4 -112q2 -35 21 -93q15 -49 43 -79q25 -27 74 -48q45 -18 114 -18q143 0 230 43v1278q0 20 14 23q20 4 100 4v-1383q-47 -31 -141 -51t-203 -20q-92 0 -168 26q-70 25 -108 64q-37 37 -60 104q-23 70 -28 123 q-6 59 -6 143zM229 1636l228 234q16 4 26 4q25 0 41 -19q199 -199 199 -219q0 -12 -26.5 -26.5t-57.5 -14.5q-141 147 -158 177q-150 -174 -174 -175q-51 0 -78 39z" />
+<glyph unicode="&#xdc;" horiz-adv-x="935" d="M113 440v965q0 23 14 25q20 4 100 4v-998q0 -51 4 -112q2 -35 21 -93q15 -49 43 -79q25 -27 74 -48q45 -18 114 -18q143 0 230 43v1278q0 20 14 23q20 4 100 4v-1383q-47 -31 -141 -51t-203 -20q-92 0 -168 26q-70 25 -108 64q-37 37 -60 104q-23 70 -28 123 q-6 59 -6 143zM258 1739q0 37 21 59q20 25 59 25q41 0 61.5 -22.5t20.5 -61.5q0 -33 -23 -60q-20 -25 -59 -24q-80 0 -80 84zM547 1739q0 33 22 59q20 25 58 25q41 0 61.5 -22.5t20.5 -61.5q0 -33 -23 -60q-23 -25 -59 -24q-80 0 -80 84z" />
+<glyph unicode="&#xdd;" horiz-adv-x="737" d="M12 1415q-6 14 13 17q10 2 114 2l99 -293q43 -115 86 -262q49 -166 53 -193q14 106 139 457l90 270q2 12 21 17q20 4 102 4l-299 -848v-559q0 -18 -14 -23q-16 -4 -99 -4v582zM293 1659q74 74 119 113q94 82 110 94q45 35 49 35q18 0 33 -31q18 -35 21 -60 q-18 -23 -111 -92l-176 -125q-8 0 -21 17q-10 12 -18 32z" />
+<glyph unicode="&#xde;" horiz-adv-x="755" d="M113 0v1403q0 20 14 27q10 4 61 4h35v-265h129q358 0 359 -391q0 -221 -99 -329q-98 -106 -268 -107h-121v-315q0 -20 -14 -23q-20 -4 -96 -4zM223 451h66h20h17.5t13.5 -1t9 -1h3q236 0 236 339q0 279 -226 279h-71q-12 0 -28.5 -1t-20.5 -1h-19v-614z" />
+<glyph unicode="&#xdf;" horiz-adv-x="960" d="M100 2q18 39 19 109l-2 1013q0 317 321 318q199 0 299 -90q98 -90 99 -201q0 -61 -41 -113q-43 -51 -90 -75q-49 -25 -90.5 -66t-41.5 -86q0 -39 37 -82q29 -33 90 -84l107 -90q55 -53 90 -121q37 -74 37 -155q0 -143 -82 -220q-84 -78 -225 -77q-70 0 -131 16 q-57 14 -84 32.5t-27 39.5q0 41 31 77q70 -63 190 -63q94 0 150 47q57 49 57 143q0 80 -57 156q-59 78 -123 125q-72 51 -123 115q-57 70 -57 135q0 61 41 113q39 47 92 77q51 29 90 68q41 41 41 88q0 72 -69.5 129t-201.5 57q-113 0 -165 -65q-51 -63 -52 -213l2 -1002 q0 -37 -14 -57q-12 -18 -51 -18q-18 0 -35 6q-20 8 -22 10z" />
+<glyph unicode="&#xe0;" horiz-adv-x="749" d="M74 285q0 104 24 174q23 68 72 102q45 33 94 45t115 12q109 0 168 -24v180q0 92 -41 127t-121 35q-184 0 -295 -51q-16 33 -16 65q0 29 16 41q35 23 125 37q98 16 197 16q125 0 186 -57q59 -55 59 -190v-123q0 -324 -10 -621q-119 -74 -278 -73q-39 0 -88 4 q-31 2 -78 22.5t-68 48.5q-27 35 -43 90q-18 60 -18 140zM143 1411q2 27 19 57q14 31 35 31q4 0 135 -108q123 -102 143 -131q-23 -66 -43 -66q-2 0 -139 102q-140 105 -150 115zM190 289q0 -72 15 -115q16 -47 45 -65q31 -18 59 -25q27 -6 76 -6q104 0 152 45 q10 160 10 387q-53 20 -133 20q-104 0 -164 -47t-60 -194z" />
+<glyph unicode="&#xe1;" horiz-adv-x="749" d="M74 285q0 104 24 174q23 68 72 102q45 33 94 45t115 12q109 0 168 -24v180q0 92 -41 127t-121 35q-184 0 -295 -51q-16 33 -16 65q0 29 16 41q35 23 125 37q98 16 197 16q125 0 186 -57q59 -55 59 -190v-123q0 -324 -10 -621q-119 -74 -278 -73q-39 0 -88 4 q-31 2 -78 22.5t-68 48.5q-27 35 -43 90q-18 60 -18 140zM190 289q0 -72 15 -115q16 -47 45 -65q31 -18 59 -25q27 -6 76 -6q104 0 152 45q10 160 10 387q-53 20 -133 20q-104 0 -164 -47t-60 -194zM297 1249q74 74 119 113q94 82 110 94q45 35 49 35q16 0 33 -33 q18 -35 21 -57q-14 -18 -111 -90q-102 -78 -176 -127q-10 0 -23 16q-6 8 -16 33z" />
+<glyph unicode="&#xe2;" horiz-adv-x="749" d="M74 285q0 104 24 174q23 68 72 102q45 33 94 45t115 12q109 0 168 -24v180q0 92 -41 127t-121 35q-184 0 -295 -51q-16 33 -16 65q0 29 16 41q35 23 125 37q98 16 197 16q125 0 186 -57q59 -55 59 -190v-123q0 -324 -10 -621q-119 -74 -278 -73q-39 0 -88 4 q-31 2 -78 22.5t-68 48.5q-27 35 -43 90q-18 60 -18 140zM129 1227l227 233q16 4 27 4q27 0 41 -18q199 -199 199 -219q0 -12 -27 -26.5t-57 -14.5q-137 143 -158 176q-150 -174 -174 -174q-51 0 -78 39zM190 289q0 -72 15 -115q16 -47 45 -65q31 -18 59 -25q27 -6 76 -6 q104 0 152 45q10 160 10 387q-53 20 -133 20q-104 0 -164 -47t-60 -194z" />
+<glyph unicode="&#xe3;" horiz-adv-x="749" d="M74 285q0 104 24 174q23 68 72 102q45 33 94 45t115 12q109 0 168 -24v180q0 92 -41 127t-121 35q-184 0 -295 -51q-16 33 -16 65q0 29 16 41q35 23 125 37q98 16 197 16q125 0 186 -57q59 -55 59 -190v-123q0 -324 -10 -621q-119 -74 -278 -73q-39 0 -88 4 q-31 2 -78 22.5t-68 48.5q-27 35 -43 90q-18 60 -18 140zM86 1278q84 139 209 139q45 0 94 -51q49 -53 92 -53q45 0 76 24.5t45 44.5q16 23 23 23q10 0 22 -16q10 -12 19 -33l4 -17q-14 -33 -33 -53q-20 -25 -70 -53q-47 -29 -100 -29q-66 0 -115 56q-47 53 -78 53 q-37 0 -61 -23q-27 -23 -43 -47q-16 -23 -25 -22q-32 0 -59 57zM190 289q0 -72 15 -115q16 -47 45 -65q31 -18 59 -25q27 -6 76 -6q104 0 152 45q10 160 10 387q-53 20 -133 20q-104 0 -164 -47t-60 -194z" />
+<glyph unicode="&#xe4;" horiz-adv-x="749" d="M74 285q0 104 24 174q23 68 72 102q45 33 94 45t115 12q109 0 168 -24v180q0 92 -41 127t-121 35q-184 0 -295 -51q-16 33 -16 65q0 29 16 41q35 23 125 37q98 16 197 16q125 0 186 -57q59 -55 59 -190v-123q0 -324 -10 -621q-119 -74 -278 -73q-39 0 -88 4 q-31 2 -78 22.5t-68 48.5q-27 35 -43 90q-18 60 -18 140zM158 1329q0 33 22 60q20 25 58 24q40 0 61 -24q20 -23 20 -60q0 -35 -22 -61q-20 -23 -59 -23q-80 0 -80 84zM190 289q0 -72 15 -115q16 -47 45 -65q31 -18 59 -25q27 -6 76 -6q104 0 152 45q10 160 10 387 q-53 20 -133 20q-104 0 -164 -47t-60 -194zM446 1329q0 37 21 60q20 25 59 24.5t60 -24.5q23 -27 22 -60q0 -35 -22 -61q-20 -23 -60 -23q-80 0 -80 84z" />
+<glyph unicode="&#xe5;" horiz-adv-x="749" d="M74 285q0 104 24 174q23 68 72 102q45 33 94 45t115 12q109 0 168 -24v180q0 92 -41 127t-121 35q-184 0 -295 -51q-16 33 -16 65q0 29 16 41q35 23 125 37q98 16 197 16q125 0 186 -57q59 -55 59 -190v-123q0 -324 -10 -621q-119 -74 -278 -73q-39 0 -88 4 q-31 2 -78 22.5t-68 48.5q-27 35 -43 90q-18 60 -18 140zM190 289q0 -72 15 -115q16 -47 45 -65q31 -18 59 -25q27 -6 76 -6q104 0 152 45q10 160 10 387q-53 20 -133 20q-104 0 -164 -47t-60 -194zM195 1360q0 186 192 186q88 0 133 -41q43 -39 43 -143q0 -186 -190 -186 q-86 0 -133 43q-45 43 -45 141zM283 1356q0 -98 92 -99q102 0 102 105q0 100 -90 100q-53 0 -78 -24q-26 -27 -26 -82z" />
+<glyph unicode="&#xe6;" horiz-adv-x="1267" d="M74 291q0 197 84 270q80 72 219 72q111 0 170 -25v172q0 94 -45 127q-47 35 -129 35q-170 0 -277 -59q-14 23 -14 67q0 29 18 39q86 55 312 55q96 0 155 -38q51 -35 68 -123q46 95 117 129q68 33 168 32q258 0 258 -317q0 -162 -21 -252q-86 -14 -190 -14q-156 0 -299 31 v-35q0 -125 14 -197q14 -74 49 -110.5t72 -47.5q41 -10 96 -10q154 0 254 70q14 -31 14 -103q0 -12 -37 -30q-25 -12 -104 -31q-63 -14 -137 -14q-182 0 -246 94v-35q-104 -61 -274 -61q-72 0 -111 8q-49 10 -90 35q-45 27 -69.5 94.5t-24.5 171.5zM190 289 q0 -133 47.5 -172t145.5 -39q121 0 164 43v403q-53 20 -133 21q-100 0 -164 -53q-60 -51 -60 -203zM672 586q152 -33 280 -33q68 0 107 8q8 57 8 144q-4 127 -37 182q-35 55 -121 55q-94 0 -157 -72q-66 -73 -80 -284z" />
+<glyph unicode="&#xe7;" horiz-adv-x="675" d="M82 489q0 141 24 246q25 106 58 162q34 58 86 92q57 37 96 45q51 10 105 10q74 0 123 -24.5t49 -56.5q0 -37 -15 -68q-70 47 -159 47q-43 0 -70 -8q-31 -9 -68 -37q-33 -25 -59 -74q-23 -41 -39 -135q-16 -92 -16 -205q0 -237 55 -319t168 -82q121 0 188 61 q14 -31 15 -65q0 -34 -56 -62q-57 -29 -143 -34l-21 -105q4 4 37 4q41 0 72 -31q29 -29 29 -88q0 -78 -43 -118q-41 -39 -105 -39q-61 0 -108 20q10 53 20 68q9 3 19 0l12 -5q12 -5 20 -7q20 -6 39 -7q70 0 70 74q0 72 -68 72l-80 -13l33 175q-135 8 -200 114 q-68 107 -68 393z" />
+<glyph unicode="&#xe8;" horiz-adv-x="768" d="M78 457q0 145 22 262q22 111 56 172q33 57 86 96t98 47q51 10 104 10q258 0 258 -323q0 -156 -20 -246q-182 -37 -489 -37q0 -137 32 -223q31 -78 78 -102q45 -23 129 -23q150 0 246 70q14 -35 14 -80q0 -37 -84 -68q-88 -33 -194 -32q-80 0 -135 18q-57 18 -104.5 65.5 t-72 145.5t-24.5 248zM193 1411q2 20 20 57q16 31 33 31q4 0 135 -108q123 -102 143 -131q-23 -66 -43 -66q-2 0 -139 102q-139 105 -149 115zM195 532q270 0 389 29q8 57 8 137q-2 127 -37 187q-33 57 -121 57q-49 0 -80 -14q-39 -18 -71 -54q-35 -37 -60 -124 q-26 -91 -28 -218z" />
+<glyph unicode="&#xe9;" horiz-adv-x="768" d="M78 457q0 145 22 262q22 111 56 172q33 57 86 96t98 47q51 10 104 10q258 0 258 -323q0 -156 -20 -246q-182 -37 -489 -37q0 -137 32 -223q31 -78 78 -102q45 -23 129 -23q150 0 246 70q14 -35 14 -80q0 -37 -84 -68q-88 -33 -194 -32q-80 0 -135 18q-57 18 -104.5 65.5 t-72 145.5t-24.5 248zM195 532q270 0 389 29q8 57 8 137q-2 127 -37 187q-33 57 -121 57q-49 0 -80 -14q-39 -18 -71 -54q-35 -37 -60 -124q-26 -91 -28 -218zM346 1249q74 74 119 113q94 82 110 94q45 35 50 35q18 0 34 -33q14 -31 19 -57q-14 -18 -111 -90 q-102 -78 -176 -127q-10 0 -22 16q-6 8 -17 33z" />
+<glyph unicode="&#xea;" horiz-adv-x="768" d="M78 457q0 145 22 262q22 111 56 172q33 57 86 96t98 47q51 10 104 10q258 0 258 -323q0 -156 -20 -246q-182 -37 -489 -37q0 -137 32 -223q31 -78 78 -102q45 -23 129 -23q150 0 246 70q14 -35 14 -80q0 -37 -84 -68q-88 -33 -194 -32q-80 0 -135 18q-57 18 -104.5 65.5 t-72 145.5t-24.5 248zM178 1227l228 233q16 4 26 4q27 0 41 -18q199 -199 199 -219q0 -12 -27 -26.5t-57 -14.5q-137 143 -158 176q-150 -174 -174 -174q-51 0 -78 39zM195 532q270 0 389 29q8 57 8 137q-2 127 -37 187q-33 57 -121 57q-49 0 -80 -14q-39 -18 -71 -54 q-35 -37 -60 -124q-26 -91 -28 -218z" />
+<glyph unicode="&#xeb;" horiz-adv-x="768" d="M78 457q0 145 22 262q22 111 56 172q33 57 86 96t98 47q51 10 104 10q258 0 258 -323q0 -156 -20 -246q-182 -37 -489 -37q0 -137 32 -223q31 -78 78 -102q45 -23 129 -23q150 0 246 70q14 -35 14 -80q0 -37 -84 -68q-88 -33 -194 -32q-80 0 -135 18q-57 18 -104.5 65.5 t-72 145.5t-24.5 248zM195 532q270 0 389 29q8 57 8 137q-2 127 -37 187q-33 57 -121 57q-49 0 -80 -14q-39 -18 -71 -54q-35 -37 -60 -124q-26 -91 -28 -218zM207 1329q0 33 22 60q20 25 58 24q40 0 61 -24q20 -23 21 -60q0 -35 -23 -61q-20 -23 -59 -23q-80 0 -80 84z M496 1329q0 33 22 60q23 25 57 24q39 0 60 -24q23 -27 22 -60q0 -35 -22 -61q-20 -23 -60 -23q-79 0 -79 84z" />
+<glyph unicode="&#xec;" horiz-adv-x="348" d="M-59 1411q2 27 18 57.5t35 30.5q2 0 133 -108q127 -106 145 -131q-23 -66 -43 -66q-4 0 -141 102q-131 99 -147 115zM117 0v969q0 39 20 47q18 8 96 8v-997q0 -18 -16 -23q-20 -4 -100 -4z" />
+<glyph unicode="&#xed;" horiz-adv-x="348" d="M92 1249q74 74 119 113l113 94q45 35 47 35q18 0 35 -33q14 -31 18 -57q-14 -18 -111 -90q-102 -78 -176 -127q-10 0 -22 16q-6 8 -17 33zM117 0v969q0 39 20 47q18 8 96 8v-997q0 -18 -16 -23q-20 -4 -100 -4z" />
+<glyph unicode="&#xee;" horiz-adv-x="348" d="M-76 1227l228 233q16 4 26 4q27 0 41 -18q199 -199 199 -219q0 -12 -26.5 -26.5t-57.5 -14.5q-137 143 -158 176q-150 -174 -174 -174q-51 0 -78 39zM117 0v969q0 39 20 47q18 8 96 8v-997q0 -18 -16 -23q-20 -4 -100 -4z" />
+<glyph unicode="&#xef;" horiz-adv-x="348" d="M-47 1329q0 33 22 60q20 25 58 24q40 0 61 -24q20 -23 21 -60q0 -35 -23 -61q-20 -23 -59 -23q-80 0 -80 84zM117 0v969q0 39 20 47q18 8 96 8v-997q0 -18 -16 -23q-20 -4 -100 -4zM242 1329q0 33 22 60q23 25 58 24q40 0 61 -24q20 -23 20 -60q0 -35 -22 -61 q-20 -23 -59 -23q-80 0 -80 84z" />
+<glyph unicode="&#xf0;" horiz-adv-x="892" d="M94 526q0 252 92 383q92 133 258 133q139 0 226 -92q-47 186 -158 328l-197 -78q-31 84 -20 96q2 4 10 9l135 53q-46 46 -129 110q29 55 78 56q27 0 47 -21q78 -63 113 -102l158 63q31 -84 22 -96q-2 -4 -12 -8l-99 -39q201 -268 201 -729q0 -135 -12 -234 q-12 -90 -51 -190q-35 -90 -111 -139q-74 -49 -182 -49q-188 0 -279 129q-90 130 -90 417zM207 510q0 -432 254 -432q78 0 131 41q47 37 74 121q23 74 32 159q8 72 9 199q0 111 -11 197q-86 143 -227 143q-127 0 -194.5 -112.5t-67.5 -315.5z" />
+<glyph unicode="&#xf1;" horiz-adv-x="819" d="M113 0v973q168 72 331 71q158 0 220 -65q61 -65 61 -215v-737q0 -20 -14 -23q-20 -4 -101 -4v733q0 117 -34.5 164t-135.5 47q-125 0 -215 -47v-870q0 -20 -14 -23q-20 -4 -98 -4zM141 1278q84 139 209 139q47 0 96 -51q49 -53 91 -53q47 0 77 24q25 20 43 45 q16 23 23 23q12 0 25 -16q6 -8 16 -33l4 -17q-14 -33 -33 -53q-20 -25 -69 -53q-47 -29 -101 -29q-66 0 -114 56q-47 53 -78 53q-37 0 -62 -23q-27 -23 -43 -47q-16 -23 -24 -22q-33 0 -60 57z" />
+<glyph unicode="&#xf2;" horiz-adv-x="782" d="M63 510q0 535 343 534q164 0 241 -114q76 -113 76 -418q0 -532 -340 -532q-83 0 -135 18q-55 18 -98 72q-43 51 -66 163q-21 103 -21 277zM168 1411q2 20 20 57q16 31 33 31q2 0 133 -108q117 -96 146 -131q-23 -66 -43 -66q-2 0 -140 102q-139 105 -149 115zM184 502 q0 -164 27 -266q25 -96 65 -127t111 -31q215 0 215 438q0 254 -47 340q-49 88 -154 88q-106 0 -161.5 -98t-55.5 -344z" />
+<glyph unicode="&#xf3;" horiz-adv-x="782" d="M63 510q0 535 343 534q164 0 241 -114q76 -113 76 -418q0 -532 -340 -532q-83 0 -135 18q-55 18 -98 72q-43 51 -66 163q-21 103 -21 277zM184 502q0 -164 27 -266q25 -96 65 -127t111 -31q215 0 215 438q0 254 -47 340q-49 88 -154 88q-106 0 -161.5 -98t-55.5 -344z M319 1249q74 74 119 113l113 94q45 35 47 35q16 0 33 -33q18 -35 20 -57q-14 -18 -110 -90q-102 -78 -176 -127q-8 0 -21 16q-10 12 -18 33z" />
+<glyph unicode="&#xf4;" horiz-adv-x="782" d="M63 510q0 535 343 534q164 0 241 -114q76 -113 76 -418q0 -532 -340 -532q-83 0 -135 18q-55 18 -98 72q-43 51 -66 163q-21 103 -21 277zM152 1227l227 233q16 4 27 4q25 0 40 -18q199 -199 199 -219q0 -12 -26.5 -26.5t-57.5 -14.5q-137 143 -158 176 q-150 -174 -174 -174q-50 0 -77 39zM184 502q0 -164 27 -266q25 -96 65 -127t111 -31q215 0 215 438q0 254 -47 340q-49 88 -154 88q-106 0 -161.5 -98t-55.5 -344z" />
+<glyph unicode="&#xf5;" horiz-adv-x="782" d="M63 510q0 535 343 534q164 0 241 -114q76 -113 76 -418q0 -532 -340 -532q-83 0 -135 18q-55 18 -98 72q-43 51 -66 163q-21 103 -21 277zM109 1278q84 139 208 139q45 0 95 -51q49 -53 92 -53q45 0 75.5 24.5t45.5 44.5q16 23 22 23q10 0 23 -16q6 -8 16 -33l6 -17 q-14 -33 -33 -53q-20 -25 -69 -53q-47 -29 -101 -29q-68 0 -114 56q-45 53 -78 53q-37 0 -61 -23q-27 -23 -43 -47q-16 -23 -25 -22q-32 0 -59 57zM184 502q0 -164 27 -266q25 -96 65 -127t111 -31q215 0 215 438q0 254 -47 340q-49 88 -154 88q-106 0 -161.5 -98 t-55.5 -344z" />
+<glyph unicode="&#xf6;" horiz-adv-x="782" d="M63 510q0 535 343 534q164 0 241 -114q76 -113 76 -418q0 -532 -340 -532q-83 0 -135 18q-55 18 -98 72q-43 51 -66 163q-21 103 -21 277zM180 1329q0 37 21 60q20 25 59 24.5t59 -24.5q23 -27 23 -60q0 -35 -23 -61q-20 -23 -59 -23q-80 0 -80 84zM184 502 q0 -164 27 -266q25 -96 65 -127t111 -31q215 0 215 438q0 254 -47 340q-49 88 -154 88q-106 0 -161.5 -98t-55.5 -344zM469 1329q0 33 23 60q20 25 57 24q40 0 61 -24q20 -23 21 -60q0 -35 -23 -61q-20 -23 -59 -23q-80 0 -80 84z" />
+<glyph unicode="&#xf7;" d="M86 526v49q0 20 2 31q4 16 8 19q8 4 17 4h690q0 -53 -4 -82q-2 -20 -25 -21h-688zM358 287q0 39 21 61q23 25 59 25q82 0 82 -86q0 -33 -22 -60q-23 -25 -60 -24q-80 0 -80 84zM358 856q0 37 21 59q23 25 59 25q82 0 82 -84q0 -35 -22 -61q-23 -25 -60 -25q-80 0 -80 86z " />
+<glyph unicode="&#xf8;" horiz-adv-x="866" d="M57 4q0 10 95 166q-37 117 -37 340q0 535 338 534q158 0 227 -94q59 104 74 119q68 -15 67 -49q0 -16 -92 -164q43 -123 43 -344q0 -532 -330 -532q-178 0 -245 98l-32 -52.5t-27 -46t-15 -24.5q-12 2 -41 16q-25 13 -25 33zM233 502q0 -147 17 -232l348 592 q-43 82 -147 82q-106 0 -162 -98t-56 -344zM279 174q47 -96 157 -96q215 0 215 438q0 156 -20 252z" />
+<glyph unicode="&#xf9;" horiz-adv-x="849" d="M119 346v649q0 25 14 27q10 2 100 2v-692q0 -147 39 -199q41 -53 158 -53q111 0 188 47v868q0 23 15 25q20 4 98 4v-973q-139 -72 -311 -71.5t-238 83.5q-63 82 -63 283zM197 1411q2 27 18 57q14 31 35 31q4 0 135 -108q123 -102 143 -131q-23 -66 -43 -66q-4 0 -141 102 q-131 99 -147 115z" />
+<glyph unicode="&#xfa;" horiz-adv-x="849" d="M119 346v649q0 25 14 27q10 2 100 2v-692q0 -147 39 -199q41 -53 158 -53q111 0 188 47v868q0 23 15 25q20 4 98 4v-973q-139 -72 -311 -71.5t-238 83.5q-63 82 -63 283zM348 1249q74 74 119 113l113 94q45 35 47 35q18 0 35 -33q14 -31 18 -57q-14 -18 -111 -90 q-102 -78 -176 -127q-10 0 -22 16q-6 8 -17 33z" />
+<glyph unicode="&#xfb;" horiz-adv-x="849" d="M119 346v649q0 25 14 27q10 2 100 2v-692q0 -147 39 -199q41 -53 158 -53q111 0 188 47v868q0 23 15 25q20 4 98 4v-973q-139 -72 -311 -71.5t-238 83.5q-63 82 -63 283zM180 1227l228 233q16 4 26 4q25 0 41 -18q199 -199 199 -219q0 -12 -26.5 -26.5t-57.5 -14.5 q-137 143 -158 176q-150 -174 -174 -174q-51 0 -78 39z" />
+<glyph unicode="&#xfc;" horiz-adv-x="849" d="M119 346v649q0 25 14 27q10 2 100 2v-692q0 -147 39 -199q41 -53 158 -53q111 0 188 47v868q0 23 15 25q20 4 98 4v-973q-139 -72 -311 -71.5t-238 83.5q-63 82 -63 283zM209 1329q0 33 22 60q23 25 58 24q40 0 61 -24q20 -23 21 -60q0 -35 -23 -61q-20 -23 -59 -23 q-80 0 -80 84zM498 1329q0 33 22 60q20 25 58 24q40 0 61 -24q20 -23 20 -60q0 -35 -22 -61q-20 -23 -59 -23q-80 0 -80 84z" />
+<glyph unicode="&#xfd;" horiz-adv-x="755" d="M2 -334q0 39 21 66q61 -29 124 -29q127 0 187 264l-266 1022q-6 29 8 31q20 4 100 4l154 -602l59 -318q18 141 55 320l138 565q3 28 18 31q20 4 102 4l-270 -1087q-47 -182 -110 -256q-66 -76 -170 -76q-150 0 -150 61zM309 1249q74 74 119 113l113 94q45 35 47 35 q16 0 33 -33q18 -35 20 -57q-14 -18 -111 -90q-102 -78 -176 -127q-8 0 -20 16q-10 12 -19 33z" />
+<glyph unicode="&#xfe;" horiz-adv-x="817" d="M117 -365v1815q0 37 18 47q16 8 94 8v-489q78 27 183 26q168 0 254 -98q84 -96 84 -342q0 -158 -25 -274q-25 -115 -61 -181q-35 -61 -89 -104q-43 -35 -90 -49q-39 -12 -82 -12q-117 0 -174 63v-446q-23 -8 -65 -9q-29 0 -37 9q-10 9 -10 36zM229 158q47 -78 144 -78 q29 0 59 10q29 10 66 43q41 37 65.5 84t44.5 150q18 96 19 223q0 203 -54 278q-53 74 -163 74q-102 0 -181 -53v-731z" />
+<glyph unicode="&#xff;" horiz-adv-x="755" d="M2 -334q0 39 21 66q61 -29 124 -29q127 0 187 264l-266 1022q-6 29 8 31q20 4 100 4l154 -602l59 -318q18 141 55 320l138 565q3 28 18 31q20 4 102 4l-270 -1087q-47 -182 -110 -256q-66 -76 -170 -76q-150 0 -150 61zM170 1329q0 33 23 60q20 25 57 24q40 0 61 -24 q20 -23 21 -60q0 -35 -23 -61q-20 -23 -59 -23q-80 0 -80 84zM459 1329q0 33 22 60q23 25 58 24q40 0 61 -24q20 -23 21 -60q0 -35 -23 -61q-20 -23 -59 -23q-80 0 -80 84z" />
+<glyph unicode="&#x131;" horiz-adv-x="348" d="M117 0v969q0 39 20 47q18 8 96 8v-997q0 -18 -16 -23q-20 -4 -100 -4z" />
+<glyph unicode="&#x141;" horiz-adv-x="671" d="M12 721q0 20 17 31l84 26v615q0 31 14 37q10 4 100 4v-617l209 68q18 -57 18.5 -78t-16.5 -29l-211 -69v-603h406v-79q0 -27 -29 -27h-491v670l-84 -27q-17 66 -17 78z" />
+<glyph unicode="&#x142;" horiz-adv-x="346" d="M-2 694q0 18 2 22.5t14 8.5l103 33v692q0 37 18 47q16 8 94 8v-708l105 34l12 -47q4 -20 4 -30q0 -16 -2 -20.5t-14 -8.5l-105 -35v-663q0 -18 -14 -23q-16 -4 -98 -4v651l-103 -33q-4 16 -7 26.5t-5 19.5q-4 20 -4 30z" />
+<glyph unicode="&#x152;" horiz-adv-x="1282" d="M74 725q0 391 94 559q96 170 295 170q178 0 262 -133v84q0 29 27 29h477q0 -78 -2 -88q-4 -16 -21 -17h-383v-493h359q0 -76 -2 -88q-2 -16 -23 -17h-334v-627h404q0 -80 -2 -90q-2 -14 -25 -14h-475v133q-84 -152 -279 -151q-201 0 -288 161q-84 156 -84 582zM199 692 q0 -322 57 -465q55 -137 193 -137q139 0 194 145.5t55 495.5q0 338 -51 479q-49 135 -182 136q-137 0 -203 -152q-63 -148 -63 -502z" />
+<glyph unicode="&#x153;" horiz-adv-x="1314" d="M76 510q0 535 340 534q203 0 270 -170q47 102 125 138q72 33 176 32q258 0 258 -317q0 -162 -20 -252q-180 -37 -490 -37q0 -111 17 -188q14 -68 51 -104.5t69 -45.5q41 -10 95 -10q158 0 254 70q14 -35 14 -105q0 -12 -37 -30q-27 -12 -104 -31q-63 -14 -138 -14 q-113 0 -180 32q-70 33 -108 127q-82 -160 -262 -159q-86 0 -141.5 18t-100.5 72q-45 55 -68 163q-20 103 -20 277zM197 502q0 -164 26 -266q25 -96 66 -127q39 -31 110 -31q215 0 215 438q0 252 -49 338q-51 88 -151 88q-106 0 -161.5 -98t-55.5 -342zM735 532 q272 0 391 29q8 57 9 144q-4 133 -35 184q-33 53 -123 53q-46 0 -80 -12q-39 -14 -74 -51q-37 -41 -61 -125q-23 -83 -27 -222z" />
+<glyph unicode="&#x160;" horiz-adv-x="753" d="M68 88q0 43 32 80q76 -74 230 -74q246 0 245 250q0 80 -32 156q-31 70 -111 155l-221 232q-139 158 -139 291q0 125 92 200q90 76 252 76q131 0 192 -27q66 -29 66 -63q0 -37 -31 -68q-74 55 -219 56q-104 0 -170 -47q-63 -45 -64 -125q0 -94 113 -222l244 -251 q86 -92 115 -168q33 -86 32 -185q0 -170 -86 -272t-270 -102q-125 0 -199 34q-71 35 -71 74zM166 1829q14 33 27 47q18 23 30.5 22.5t61.5 -49.5q63 -63 92 -96l43 -47l80 96q57 66 67 76l27 25q47 -29 47 -56q0 -23 -102 -137q-100 -113 -121 -113t-127 103 q-100 98 -125 129z" />
+<glyph unicode="&#x161;" horiz-adv-x="751" d="M80 68q0 35 24 69q90 -53 224 -53q221 0 221 158q0 113 -115 198l-215 156q-82 57 -108.5 104.5t-26.5 110.5q0 109 88 170q92 63 246 63q80 0 151 -20q63 -18 86 -40.5t23 -41.5q0 -35 -27 -63q-102 66 -223 65q-96 0 -155.5 -35t-59.5 -98q0 -76 100 -143l222 -158 q139 -115 139 -254q0 -135 -88 -205q-90 -72 -248 -71q-113 0 -188 26q-70 25 -70 62zM170 1419q14 33 25 47q16 23 32 23q14 0 62 -47q63 -63 92 -96l43 -50l80 97q43 49 67 73l27 27q47 -29 47 -55q0 -23 -102 -138q-100 -113 -121 -112.5t-127 102.5q-80 78 -125 129z " />
+<glyph unicode="&#x178;" horiz-adv-x="737" d="M12 1415q-6 14 13 17q10 2 114 2l99 -293q43 -115 86 -262q49 -166 53 -193q14 106 139 457l90 270q2 12 21 17q20 4 102 4l-299 -848v-559q0 -18 -14 -23q-16 -4 -99 -4v582zM156 1739q0 33 22 59q23 25 58 25q41 0 61 -22.5t20 -61.5q0 -33 -22 -60q-20 -25 -59 -24 q-80 0 -80 84zM444 1739q0 37 21 59q23 25 59 25q39 0 60 -23q23 -27 22 -61q0 -33 -22 -60q-23 -25 -60 -24q-80 0 -80 84z" />
+<glyph unicode="&#x17d;" horiz-adv-x="802" d="M47 45q0 29 10 55l564 1231h-435q-55 0 -84 -4v78q0 29 29 29h610q12 -16 13 -39q0 -27 -13 -58l-569 -1235h461q78 0 108 13v-88q0 -27 -26 -27h-649q-19 16 -19 45zM195 1829q14 33 26 47q18 23 30.5 22.5t61.5 -49.5q63 -63 93 -96l43 -47l79 96q43 49 70 76l25 25 q47 -29 47 -56q0 -25 -100.5 -137.5t-123.5 -112.5q-20 0 -127 103q-99 98 -124 129z" />
+<glyph unicode="&#x17e;" horiz-adv-x="743" d="M59 57q0 25 13 45l481 824h-248q-166 0 -231 -11q-4 37 -4 56q0 53 36 53h566q12 -12 12 -37q0 -33 -14 -59l-477 -822h237q184 0 248 17q2 -8 2 -53q0 -70 -43 -70h-557q-21 18 -21 57zM139 1419q14 33 25 47q16 23 33 23q14 0 61 -47q63 -63 92 -96l43 -50l80 97 q29 33 70 73l24 27q47 -29 47 -55q0 -23 -102 -138q-100 -113 -121 -112q-18 0 -125 102q-94 90 -127 129z" />
+<glyph unicode="&#x17f;" horiz-adv-x="354" d="M106 2q14 43 15 119v1081q0 166 86 238q88 72 252 71q98 0 167.5 -30.5t69.5 -59.5q0 -43 -28 -78q-86 68 -211 68q-119 0 -172 -57q-51 -53 -52 -195v-1122q0 -33 -14 -43t-51 -10q-44 0 -62 18z" />
+<glyph unicode="&#x192;" horiz-adv-x="974" d="M33 -338q0 35 14 66q63 -25 152 -25q53 0 84 6q35 6 71 27q39 20 58 74q20 57 20 133v979h-278v49q0 10 4 30q4 16 8 19q8 4 14 4h252v139q0 98 21 162q20 68 53 102.5t80 53.5q59 23 88 24q49 4 92 4q86 0 131 -18t45 -45q0 -33 -12 -64q-68 25 -152 25q-52 0 -86 -6 q-33 -6 -71.5 -26.5t-57.5 -74.5q-18 -52 -18 -135v-141h325q0 -59 -4 -84q-3 -18 -24 -18h-297v-975q0 -100 -21 -164q-20 -68 -53 -102.5t-80 -53.5q-59 -23 -88 -24q-49 -4 -92 -4q-80 0 -131 20q-47 18 -47 43z" />
+<glyph unicode="&#x237;" horiz-adv-x="370" d="M-231 -305q0 39 18 63q90 -53 197 -53q94 0 120 55q27 53 27 187v1022q0 39 19 47q16 8 94 8v-1100q0 -156 -53.5 -239.5t-198.5 -83.5q-102 0 -164 28q-59 29 -59 66z" />
+<glyph unicode="&#x2c6;" horiz-adv-x="491" d="M0 1227l227 233q16 4 27 4q25 0 41 -18q199 -199 199 -219q0 -12 -27 -26.5t-57 -14.5q-137 143 -158 176q-150 -174 -174 -174q-51 0 -78 39z" />
+<glyph unicode="&#x2c7;" horiz-adv-x="473" d="M0 1419q14 33 25 47q16 23 32 23q14 0 62 -47q63 -63 92 -96l43 -50l80 97q43 49 67 73l27 27q47 -29 47 -55q0 -23 -102 -138q-100 -113 -121 -112.5t-127 102.5q-80 78 -125 129z" />
+<glyph unicode="&#x2d8;" horiz-adv-x="497" d="M0 1413q0 43 63 62q63 -178 183 -179q49 0 84 27t51 55q2 4 35 74q18 31 49 12q33 -18 35 -51q-72 -225 -256 -225q-102 0 -172 82q-72 84 -72 143z" />
+<glyph unicode="&#x2d9;" horiz-adv-x="131" d="M2 1370q0 94 68 94q63 0 63 -92q-4 -96 -70 -96q-63 0 -61 94z" />
+<glyph unicode="&#x2da;" horiz-adv-x="366" d="M0 1360q0 186 193 186q90 0 135 -41q41 -39 41 -143q0 -186 -191 -186q-88 0 -133 43t-45 141zM88 1356q0 -98 92 -99q102 0 103 105q0 100 -90 100q-53 0 -78 -24q-27 -27 -27 -82z" />
+<glyph unicode="&#x2db;" horiz-adv-x="260" d="M0 -233q0 90 57 167q55 76 127 99q20 12 39 8q27 -6 37 -41q-63 -35 -110.5 -96.5t-47.5 -124.5q0 -90 82 -90q29 0 62 16q12 -25 14 -41q0 -20 -2 -24q-8 -39 -100 -39q-158 0 -158 166z" />
+<glyph unicode="&#x2dc;" horiz-adv-x="581" d="M0 1278q84 139 209 139q45 0 94 -51q49 -53 92 -53q45 0 76 24.5t45 44.5q16 23 23 23q10 0 22 -16q10 -12 19 -33l4 -17q-14 -33 -33 -53q-20 -25 -70 -53q-47 -29 -100 -29q-66 0 -115 56q-47 53 -78 53q-37 0 -61 -23q-27 -23 -43 -47q-16 -23 -25 -22q-32 0 -59 57z " />
+<glyph unicode="&#x2dd;" horiz-adv-x="604" d="M106 1212l205 304q12 23 41 22q12 0 25 -6q12 12 33 12q28 0 49 -18.5t24 -48.5l-229 -297q-10 -16 -31 -17q-18 0 -33 13l-2 -5q-10 -10 -26 -10q-20 0 -37 15q-15 11 -19 36z" />
+<glyph unicode="&#x394;" horiz-adv-x="899" d="M57 0l328 1366q16 74 82 74q39 0 55 -15l338 -1425h-803zM188 106h545l-270 1164h-6z" />
+<glyph unicode="&#x2206;" horiz-adv-x="899" d="M57 0l328 1366q16 74 82 74q39 0 55 -15l338 -1425h-803zM188 106h545l-270 1164h-6z" />
+<glyph unicode="&#x3a9;" horiz-adv-x="942" d="M94 49q0 57 39 57h133q-168 248 -168 666q0 356 95 518q96 164 301 164q193 0 272 -154q78 -150 78 -520q0 -240 -56 -415q-55 -178 -118 -259h168q10 -35 10 -51q0 -55 -43 -55h-273q80 121 140 315q59 197 59 410q0 334 -59 475q-57 137 -191 137q-137 0 -202 -133 q-66 -135 -66 -461q0 -223 57.5 -427.5t132.5 -315.5h-301q-8 22 -8 49z" />
+<glyph unicode="&#x2126;" horiz-adv-x="942" d="M94 49q0 57 39 57h133q-168 248 -168 666q0 356 95 518q96 164 301 164q193 0 272 -154q78 -150 78 -520q0 -240 -56 -415q-55 -178 -118 -259h168q10 -35 10 -51q0 -55 -43 -55h-273q80 121 140 315q59 197 59 410q0 334 -59 475q-57 137 -191 137q-137 0 -202 -133 q-66 -135 -66 -461q0 -223 57.5 -427.5t132.5 -315.5h-301q-8 22 -8 49z" />
+<glyph unicode="&#x3c0;" horiz-adv-x="903" d="M70 963q0 61 41 61h710q10 -27 10 -53q0 -55 -43 -56h-81v-882q0 -41 -60 -41q-31 0 -53 8v915h-295v-882q0 -41 -59 -41q-23 0 -54 8v915h-106q-10 25 -10 48z" />
+<glyph unicode="&#x2000;" horiz-adv-x="976" />
+<glyph unicode="&#x2001;" horiz-adv-x="1955" />
+<glyph unicode="&#x2002;" horiz-adv-x="976" />
+<glyph unicode="&#x2003;" horiz-adv-x="1955" />
+<glyph unicode="&#x2004;" horiz-adv-x="651" />
+<glyph unicode="&#x2005;" horiz-adv-x="487" />
+<glyph unicode="&#x2006;" horiz-adv-x="325" />
+<glyph unicode="&#x2007;" horiz-adv-x="325" />
+<glyph unicode="&#x2008;" horiz-adv-x="243" />
+<glyph unicode="&#x2009;" horiz-adv-x="389" />
+<glyph unicode="&#x200a;" horiz-adv-x="106" />
+<glyph unicode="&#x2010;" horiz-adv-x="591" d="M88 526v49q0 20 2 31q4 16 8 19q8 4 17 4h391q0 -53 -4 -82q-2 -20 -25 -21h-389z" />
+<glyph unicode="&#x2011;" horiz-adv-x="591" d="M88 526v49q0 20 2 31q4 16 8 19q8 4 17 4h391q0 -53 -4 -82q-2 -20 -25 -21h-389z" />
+<glyph unicode="&#x2012;" horiz-adv-x="591" d="M88 526v49q0 20 2 31q4 16 8 19q8 4 17 4h391q0 -53 -4 -82q-2 -20 -25 -21h-389z" />
+<glyph unicode="&#x2013;" horiz-adv-x="890" d="M88 526v49q0 20 2 31q4 16 8 19q8 4 17 4h690q0 -53 -4 -82q-2 -20 -25 -21h-688z" />
+<glyph unicode="&#x2014;" horiz-adv-x="1431" d="M12 526v49q0 20 2 31q4 16 9 19q8 4 16 4h1382q0 -53 -4 -82q-2 -20 -24 -21h-1381z" />
+<glyph unicode="&#x2018;" horiz-adv-x="323" d="M76 1284q0 90 49 213t76 123q41 0 47 -37q-45 -88 -47 -231q41 -25 41 -82q0 -33 -23 -60q-23 -25 -57 -24q-86 0 -86 98z" />
+<glyph unicode="&#x2019;" horiz-adv-x="323" d="M78 1212q45 92 47 232q-41 25 -41 82q0 35 22 61q20 23 60 23q84 0 84 -99q0 -90 -49 -212.5t-76 -122.5q-39 -1 -47 36z" />
+<glyph unicode="&#x201a;" horiz-adv-x="319" d="M78 -193q45 92 47 232q-41 25 -41 82q0 35 22 61q20 23 60 23q84 0 84 -99q0 -90 -49 -212.5t-76 -122.5q-39 -1 -47 36z" />
+<glyph unicode="&#x201c;" horiz-adv-x="608" d="M76 1284q0 90 49 213t76 123q41 0 47 -37q-45 -88 -47 -231q41 -25 41 -82q0 -33 -23 -60q-23 -25 -57 -24q-86 0 -86 98zM360 1284q0 96 48 213q49 123 77 123q39 0 47 -37q-45 -88 -47 -231q39 -25 39 -82q0 -33 -22 -60q-23 -25 -58 -24q-84 0 -84 98z" />
+<glyph unicode="&#x201d;" horiz-adv-x="608" d="M78 1212q45 92 47 232q-41 25 -41 82q0 35 22 61q20 23 60 23q84 0 84 -99q0 -90 -49 -212.5t-76 -122.5q-39 -1 -47 36zM360 1212q43 80 50 232q-41 25 -41 82q0 33 22 59q23 25 58 25q84 0 83 -99q0 -90 -49 -212.5t-73 -122.5q-41 -1 -50 36z" />
+<glyph unicode="&#x201e;" horiz-adv-x="604" d="M78 -193q45 92 47 232q-41 25 -41 82q0 35 22 61q20 23 60 23q84 0 84 -99q0 -90 -49 -212.5t-76 -122.5q-39 -1 -47 36zM360 -193q43 82 50 232q-41 25 -41 82q0 35 22 61q20 23 58 23q84 0 83 -99q0 -90 -49 -212.5t-73 -122.5q-41 -1 -50 36z" />
+<glyph unicode="&#x2020;" horiz-adv-x="880" d="M76 985q0 37 26 64l260 -31q20 -6 24.5 -28.5t-9.5 -37.5l-248 -28q-23 -4 -39 16q-14 16 -14 45zM381 16l29 889q4 16 14 23q16 8 27 6q15 -3 24 -12l29 -879q4 -25 -17 -41q-16 -14 -45 -14q-43 -1 -61 28zM381 1395q-4 25 16.5 39t48.5 14q39 0 60 -27l-29 -366 q-6 -23 -28.5 -27t-36.5 10zM500 976.5q-4 24.5 8 39.5l246 31q25 8 39 -12.5t14 -51.5q0 -41 -27 -61l-258 28q-18 2 -22 26.5z" />
+<glyph unicode="&#x2021;" horiz-adv-x="880" d="M76 449q0 39 26 61l258 -29q18 -6 22.5 -28.5t-7.5 -36.5l-246 -31q-25 -8 -39 12.5t-14 51.5zM76 985q0 37 26 64l260 -31q20 -6 24.5 -28.5t-9.5 -37.5l-248 -28q-23 -4 -39 16q-14 16 -14 45zM377 20l31 357q4 23 26.5 27t36.5 -11l31 -344q2 -27 -14.5 -41t-51.5 -14 q-36 -1 -59 26zM381 1395q-4 25 16.5 39t48.5 14q39 0 60 -27l-29 -366q-6 -23 -28.5 -27t-36.5 10zM403 504v393q0 29 23 35q27 6 55 -8v-392q0 -29 -22 -34q-22 -6 -56 6zM494 440q-3 22 12 37l248 29q25 4 39 -14q14 -16 14 -48q0 -39 -27 -63l-258 31q-24 5 -28 28z M500 976.5q-4 24.5 8 39.5l246 31q25 8 39 -12.5t14 -51.5q0 -41 -27 -61l-258 28q-18 2 -22 26.5z" />
+<glyph unicode="&#x2022;" horiz-adv-x="436" d="M104 578q0 55 33 94t90 39q59 0 95 -37q35 -39 34 -96q0 -53 -34 -95q-33 -39 -95 -39q-123 1 -123 134z" />
+<glyph unicode="&#x2026;" horiz-adv-x="997" d="M90 82q0 41 23 65q25 27 63 27q90 0 90 -92q0 -37 -24 -66q-25 -27 -66 -26q-86 0 -86 92zM412 82q0 37 24 65q25 27 62 27q90 0 90 -92q0 -37 -25 -66q-25 -27 -65 -26q-86 0 -86 92zM733 82q0 41 23 65q25 27 63 27q90 0 90 -92q0 -37 -24 -66q-25 -27 -66 -26 q-86 0 -86 92z" />
+<glyph unicode="&#x202f;" horiz-adv-x="389" />
+<glyph unicode="&#x2030;" horiz-adv-x="2050" d="M125 1075q0 377 289 377q143 0 207 -82q66 -84 65 -293q0 -379 -283 -379q-76 0 -118 15q-49 16 -86 53t-55.5 114.5t-18.5 194.5zM229 25l865 1427q66 -18 65 -51q0 -4 -215 -361l-430 -708l-215 -352q-70 14 -70 45zM233 1067q0 -164 39 -221.5t129 -57.5 q178 0 179 289q0 166 -39 223q-41 59 -127 60q-181 0 -181 -293zM748 360q0 377 288 377q141 0 207 -84t66 -293q0 -379 -281 -378q-145 0 -213 75q-67 78 -67 303zM856 352q0 -164 41 -223q39 -57 127 -57q180 0 180 288q0 160 -41 224q-41 61 -125 61q-182 0 -182 -293z M1364 360q0 377 291 377q141 0 206.5 -84t65.5 -293q0 -379 -282 -378q-76 0 -119 14q-49 16 -86 53q-39 39 -58 115q-18 76 -18 196zM1473 352q0 -162 40.5 -221t128.5 -59q178 0 179 288q0 164 -39 224q-41 61 -127 61q-182 0 -182 -293z" />
+<glyph unicode="&#x2039;" horiz-adv-x="522" d="M57 512q0 53 305 512q18 0 35 -14q23 -18 27 -29l6 -14q0 -23 -65 -138q-66 -117 -134 -217l-65 -100q272 -395 272 -442q-27 -70 -65 -70q-316 453 -316 512z" />
+<glyph unicode="&#x203a;" horiz-adv-x="522" d="M88 67.5q0 22.5 68 133.5q37 61 137 211l67 100q-266 397 -266 455q0 39 70 57q303 -457 303 -512q0 -23 -78 -154q-68 -113 -158 -241l-77 -117l-19 6q-12 4 -29 21q-18 18 -18 40.5z" />
+<glyph unicode="&#x2044;" horiz-adv-x="399" d="M-250 27l817 1400q8 27 37 27q43 0 76 -43l-819 -1411q-8 -18 -33 -18q-51 0 -78 45z" />
+<glyph unicode="&#x205f;" horiz-adv-x="487" />
+<glyph unicode="&#x2074;" horiz-adv-x="837" d="M106 797q0 27 15 63q41 127 147 293q111 172 205 262q37 39 92 39q10 0 47 -6v-596h144q10 -27 10 -55q0 -53 -35 -54h-119v-122q0 -39 -61 -39q-20 0 -45 6v155h-383q-17 21 -17 54zM217 846h291l4 467q-86 -78 -168 -207q-90 -139 -127 -260z" />
+<glyph unicode="&#x20ac;" d="M45 430q0 57 8 74q10 20 39 20h135v29q0 94 6 170h-188q0 57 8 74q10 20 39 20h152q23 135 59 219q39 86 96 131q53 41 107 58q55 16 114.5 16t108.5 -16.5t66 -32.5q20 -20 20 -31q0 -53 -22 -76q-10 8 -60 31q-43 18 -90 19q-41 0 -82 -11q-37 -8 -78 -40.5t-71 -98.5 q-33 -72 -47 -168h333q0 -53 -10 -73.5t-37 -20.5h-299q-6 -76 -6 -170v-29h277q0 -59 -9 -75q-8 -18 -39 -19h-225q10 -113 30.5 -182.5t59.5 -104.5q37 -33 72 -43q37 -10 86 -10q125 0 199 74q18 -37 18 -76q0 -31 -71.5 -69.5t-163.5 -38.5q-72 0 -127.5 16t-102.5 57 q-49 43 -80 140q-29 92 -39 237h-186z" />
+<glyph unicode="&#x2122;" horiz-adv-x="1083" d="M70 1368v45q0 16 20 21h414v-45q0 -20 -19 -21h-155v-565q0 -12 -11 -17q-6 -2 -59 -2v584h-190zM553 784v629q0 20 20 21h43l103 -285l49 -125l41 123l98 266q6 20 21 21h49v-629q0 -12 -10 -17q-12 -4 -60 -4l2 234q0 35 6 237l-22 -65q-6 -20 -12.5 -35.5t-10.5 -26.5 q-2 -6 -4 -13t-4 -11l-2 -4l-67 -176q-4 -10 -11 -11h-43l-71 187l-56 151q8 -182 9 -235l2 -211q0 -14 -9 -17q-12 -4 -61 -4z" />
+<glyph unicode="&#x2202;" horiz-adv-x="892" d="M94 526q0 252 92 383q92 133 258 133q139 0 226 -92q-77 304 -357 516q23 55 78 56q27 0 45 -19q197 -151 289 -368q94 -223 94 -543q0 -135 -12 -234q-12 -90 -51 -190q-35 -90 -111 -139q-74 -49 -182 -49q-188 0 -279 129q-90 130 -90 417zM207 510q0 -432 254 -432 q78 0 131 41q47 37 74 121q23 74 32 159q8 72 9 199q0 111 -11 197q-86 143 -227 143q-127 0 -194.5 -112.5t-67.5 -315.5z" />
+<glyph unicode="&#x220f;" horiz-adv-x="903" d="M70 1372q0 61 41 62h710q10 -27 10 -54q0 -55 -43 -55h-81v-1679q0 -41 -60 -41q-20 0 -53 8v1712h-295v-1679q0 -41 -59 -41q-23 0 -54 8v1712h-106q-10 24 -10 47z" />
+<glyph unicode="&#x2211;" horiz-adv-x="829" d="M119 -389l334 821l-332 1002h555q6 -31 6 -43q0 -63 -39 -64h-360l286 -903l-293 -707h410q6 -25 6 -49q0 -57 -39 -57h-534z" />
+<glyph unicode="&#x2212;" d="M86 526v49q0 20 2 31q4 16 8 19q8 4 17 4h690q0 -53 -4 -82q-2 -20 -25 -21h-688z" />
+<glyph unicode="&#x221a;" horiz-adv-x="952" d="M113 453q20 27 65 26q43 0 49 -30l162 -605l209 1590h305q8 -23 8 -54q0 -53 -39 -53h-174l-225 -1665q-8 -57 -76 -57q-27 0 -61 10z" />
+<glyph unicode="&#x221e;" horiz-adv-x="1273" d="M106 547q0 121 62 207q59 84 211 84q104 0 162 -50q59 -51 108 -135q55 90 111 135q61 49 153 50q119 0 187 -76q70 -80 69 -215q0 -291 -247 -301q-27 -2 -76 8q-141 29 -215 186q-119 -184 -262 -184q-127 0 -195 82q-68 83 -68 209zM217 547q0 -78 41 -131.5 t117 -53.5q68 0 119 48q47 45 94 135l-2 8q-25 72 -70 119q-45 49 -106 51q-53 4 -91 -12q-102 -37 -102 -164zM692 543q78 -188 199 -189q77 0 123 49q45 47 45 144q0 137 -105 174q-23 8 -63 4q-31 0 -60 -12q-27 -12 -38 -25l-33 -39q-5 -6 -68 -106z" />
+<glyph unicode="&#x222b;" horiz-adv-x="974" d="M33 -338q0 35 14 66q63 -25 152 -25q53 0 84 6q35 6 71 27q39 20 58 74q20 57 20 133v1220q0 98 21 162q20 68 53 102.5t80 53.5q59 23 88 24q49 4 92 4q86 0 131 -18t45 -45q0 -33 -12 -64q-68 25 -152 25q-52 0 -86 -6q-33 -6 -71.5 -26.5t-57.5 -74.5 q-18 -52 -18 -135v-1218q0 -100 -21 -164q-20 -68 -53 -102.5t-80 -53.5q-59 -23 -88 -24q-49 -4 -92 -4q-80 0 -131 20q-47 18 -47 43z" />
+<glyph unicode="&#x2248;" horiz-adv-x="817" d="M31 393q37 49 94 84q66 39 141 39q71 0 148 -49q78 -49 139 -49q84 0 182 80q18 10 35 -6q14 -14 21 -48q-90 -133 -246 -133q-84 0 -156 51.5t-123 51.5q-90 0 -160 -82q-27 -18 -49 4q-24 24 -26 57zM31 657q96 127 241 127q68 0 146 -51q74 -49 135 -49q96 0 160 82 q16 16 35 10q20 -6 28 -24q6 -31 -2 -62q-80 -111 -225 -110q-78 0 -156 49q-77 49 -129 49q-31 0 -65 -10q-27 -8 -47 -21q-14 -8 -41 -29q-6 -6 -13.5 -10l-11.5 -6l-4 -2q-14 -8 -31 8q-18 18 -20 49z" />
+<glyph unicode="&#x2260;" horiz-adv-x="817" d="M49 281v49q0 20 2 30q2 14 10.5 18.5t14.5 4.5h221l94 254h-342v49q0 18 2 29q4 16 10 20q8 4 15 4h352l100 271q10 29 39 28q33 0 74 -39l-96 -260h221q0 -57 -4 -82q-4 -20 -25 -20h-229l-92 -254h350q0 -57 -4 -82q-4 -20 -25 -20h-360l-98 -271q-10 -23 -39 -22 q-41 0 -74 39l92 254h-209z" />
+<glyph unicode="&#x2264;" horiz-adv-x="851" d="M104 578q0 43 39 63l549 270q37 -37 41 -75q0 -25 -22 -37l-459 -226l487 -211q-4 -41 -18 -65q-16 -25 -33 -25q-20 0 -49 15l-514 225q-21 27 -21 66zM119 0q0 57 4 82q4 20 24 20h603q0 -59 -5 -84q-3 -18 -24 -18h-602z" />
+<glyph unicode="&#x2265;" horiz-adv-x="841" d="M104 815q2 39 19 64q16 27 35 26q10 0 47 -14l514 -225q20 -27 20 -68q0 -43 -39 -63l-550 -271q-37 39 -37 76q0 29 20 37l459 225zM119 0q0 57 4 82q4 20 24 20h586q0 -59 -4 -84q-3 -18 -24 -18h-586z" />
+<glyph unicode="&#x25ca;" horiz-adv-x="958" d="M74 717l409 727l410 -727l-410 -727zM197 717l286 -504l285 504l-285 506z" />
+<glyph unicode="&#xe000;" horiz-adv-x="1025" d="M0 1025h1025v-1025h-1025v1025z" />
+<glyph unicode="&#xfb00;" horiz-adv-x="940" d="M31 926q0 63 4 84q2 14 26 14h125v152q0 113 33 180t90 100q51 29 101 39q47 10 96 10q113 0 213 -65q80 74 237 73q176 0 177 -71q0 -25 -13 -56q-63 25 -151 25q-53 0 -84 -8q-47 -12 -74 -31q-41 -27 -57 -78q-18 -55 -19 -137v-133h213q0 -63 -4 -84q-2 -14 -22 -14 h-187v-899q0 -27 -28 -27h-84v926h-324v-899q0 -27 -29 -27h-84v926h-155zM299 1024h324v129q0 125 36 207q-63 45 -161 45q-31 0 -60 -6q-23 -4 -61 -25q-35 -16 -58 -69q-20 -47 -20 -125v-156z" />
+<glyph unicode="&#xfb03;" horiz-adv-x="1257" d="M29 926q0 63 4 84q2 14 28 14h123v152q0 113 33 180q33 70 88 100q51 29 101 39q47 10 98 10q113 0 213 -65q80 74 252 73q207 0 207 -73q0 -37 -13 -68q-80 39 -192 39q-52 0 -86 -6q-33 -6 -74 -33q-39 -27 -57 -80q-18 -55 -19 -141v-127h172q0 -63 -4 -84 q-2 -14 -24 -14h-144v-899q0 -27 -28 -27h-84v926h-326v-899q0 -27 -27 -27h-86v926h-155zM297 1024h326v129q0 129 36 207q-63 45 -161 45q-34 0 -62 -6q-23 -4 -61 -25q-35 -16 -58 -69q-20 -47 -20 -125v-156zM1028 0v969q0 39 21 47q18 8 92 8v-997q0 -18 -13 -23 q-16 -4 -100 -4z" />
+<glyph unicode="&#xfb04;" horiz-adv-x="1280" d="M29 926q0 63 4 84q2 14 28 14h123v152q0 113 33 180q33 70 88 100q51 29 101 39q47 10 98 10q109 0 207 -61q70 70 217 69q138 0 233 -55l-2 -2h2v-1429q0 -18 -12 -23q-16 -4 -98 -4v1391q-55 18 -117 18q-53 0 -72 -4q-31 -6 -61 -27q-33 -20 -49.5 -75.5t-16.5 -133.5 v-145h172q0 -63 -4 -84q-2 -14 -24 -14h-144v-899q0 -27 -28 -27h-84v926h-326v-899q0 -27 -27 -27h-86v926h-155zM297 1024h326v129q0 125 34 207q-63 45 -159 45q-34 0 -62 -6q-23 -4 -61 -25q-35 -16 -58 -69q-20 -47 -20 -125v-156z" />
+<glyph horiz-adv-x="1351" d="M55 924q0 63 4 84q4 16 23 16h125v324q0 33 18.5 39t93.5 6v-369h248q0 -63 -4 -84q-4 -16 -20 -16h-224v-629q0 -59 5 -113q2 -37 26 -71q23 -31 64 -31q66 0 133 33q8 -31 8 -60q0 -37 -47 -55q-49 -18 -119 -18q-59 0 -98 22q-37 23 -55 70q-16 43 -23 96 q-6 49 -6 129v627h-152zM670 57q0 25 12 45l481 824h-248q-166 0 -231 -11q-4 37 -4 56q0 53 37 53h565q12 -12 12 -37q0 -33 -14 -59l-477 -822h237q184 0 248 17q2 -8 2 -53q0 -70 -43 -70h-557q-20 18 -20 57z" />
+<glyph horiz-adv-x="835" d="M92 479q0 158 35 279q33 115 98 176q61 59 131 84q74 27 150 26q133 0 217 -73v-1069q0 -160 -92 -236q-90 -76 -250 -76q-115 0 -188.5 31t-73.5 70q0 37 24 67q111 -61 242 -61q90 0 157.5 49t67.5 172v160q-35 -41 -96 -68q-68 -29 -137 -28q-137 0 -211 108 q-74 106 -74 389zM213 479q0 -395 195 -395q145 0 204 141v676q-43 47 -135 47q-45 0 -92 -20q-39 -16 -84 -68q-41 -47 -65 -145q-23 -91 -23 -236z" />
+<glyph horiz-adv-x="503" d="M27 926q0 63 4 84q2 14 28 14h123v248q0 240 221 239q135 0 136 -59q0 -33 -13 -57q-37 18 -104 18q-61 0 -94 -30.5t-33 -122.5v-236h213q0 -63 -4 -84q-2 -14 -25 -14h-184v-899q0 -27 -29 -27h-84v926h-155z" />
+<glyph horiz-adv-x="921" d="M94 436q0 125 64 203q66 82 166 111q-76 8 -137.5 67.5t-61.5 175.5q0 141 92 232q90 88 248 100v197q0 29 22 39q18 8 80 8v-246q86 -8 158 -43q70 -35 100 -63q29 -29 29 -52q0 -41 -41 -94q-102 145 -293 146q-127 0 -201 -60q-78 -61 -77 -170q0 -172 213 -172 q68 0 135 10l-17 -110q-178 -6 -268 -82t-90 -189q0 -94 67.5 -155.5t200.5 -61.5q215 0 326 162q47 -47 47 -90q0 -14 -18 -39q-25 -33 -50 -55q-35 -33 -96 -55q-70 -27 -143 -35v-187q0 -29 -23 -39q-25 -10 -80 -10v234q-352 12 -352 323z" />
+<glyph horiz-adv-x="1351" d="M88 815q0 304 86 449t287 145q100 0 170 -68q72 -68 71 -233q0 -47 -12 -119q-12 -70 -31 -76l259 33v205q0 61 24 80q27 20 90 20v-290l234 34q0 -66 -9 -84q-10 -23 -40 -26q-104 -15 -185 -25v-553q0 -135 19 -180q18 -47 79 -47q92 0 144 22q8 -27 8 -63 q0 -55 -178 -55q-104 0 -146 61q-41 63 -40 262v541q-455 -53 -713 -53q0 -119 16 -205q14 -78 53 -113q35 -33 68 -41q31 -8 90 -8q158 0 248 154q33 -39 33 -86q0 -27 -31 -64q-33 -39 -100 -72q-74 -35 -162 -34q-78 0 -139 20q-57 18 -103 70q-49 55 -69.5 149 t-20.5 250zM205 885q66 0 151.5 6t141.5 12l53 6q27 6 35 70q10 72 10 104q0 129 -37 181q-37 53 -106 53q-94 0 -166 -96q-74 -98 -82 -336z" />
+<glyph horiz-adv-x="987" d="M106 2q14 43 15 119v1083q0 166 86 234q88 70 258 69q59 0 119 -16q57 -16 84 -37q29 -23 28 -35q0 -27 -28 -80q-84 66 -211 66q-119 0 -172 -59q-51 -57 -52 -207v-115h676q16 -33 -14 -98l-270 -410q133 -18 227 -102q92 -82 92 -232q0 -203 -104 -332 q-102 -127 -295 -126q-78 0 -133 16q-51 14 -72 35q-18 18 -18 37q0 41 26 79q84 -59 191 -59q132 0 209 92q76 90 75 250q0 186 -166 242q-74 27 -202 28l315 482h-537v-860q0 -47 -14 -64q-14 -18 -51 -18q-44 0 -62 18z" />
+<glyph horiz-adv-x="735" d="M51 926q0 90 10 96q2 2 11 2h575q18 -34 -12 -98l-273 -410q137 -18 228 -100q92 -83 92 -234q0 -203 -104 -332q-102 -127 -293 -126q-80 0 -135 18q-59 20 -74 35q-16 16 -17 35q0 45 27 79q90 -59 190 -59q132 0 209 92q78 94 78 250q0 182 -166 242q-74 25 -202 28 l313 482h-457z" />
+<glyph horiz-adv-x="1058" d="M6 924q0 63 4 84q4 16 23 16h168v324q0 33 18.5 39t91.5 6v-369h662q20 -31 -12 -98l-271 -410q133 -18 228 -102q90 -82 90 -232q0 -207 -101 -332q-102 -127 -289 -126q-70 0 -124 16q-51 14 -68 31q-18 18 -18 32q0 33 26 82q84 -53 180 -53q127 0 201 92t74 250 q0 182 -166 242q-74 27 -203 28l314 480h-523v-883q0 -31 -14 -37q-10 -4 -96 -4v924h-195z" />
+<glyph horiz-adv-x="1675" d="M100 717q0 338 201 536q205 201 537 201q330 0 534 -201q203 -201 203 -536.5t-203 -536.5q-205 -201 -534 -200q-332 0 -537 200q-201 199 -201 537zM371 637q0 -37 43 -37h10q2 0 6 1l4 1q8 0 10 -2l119 -192v-70q0 -16 -12 -16q-6 0 -14 4q-4 2 -13 2q-37 0 -37 -39 q0 -35 43 -35q8 0 37 4t35 4q4 0 37 -4t37 -4q45 0 45 37t-33 37q-14 0 -20 -2q-4 -2 -7 -3q-2 -1 -4 -1q-12 0 -12 16v74l119 186q2 6 8 6q4 0 8 -1t6 -1h13q27 0 32 19q16 -18 31 -19h17q4 0 7 1l3 1q12 0 12 -26v-232q0 -25 -12 -24q-6 0 -12.5 2t-14.5 2q-35 0 -35 -35 q0 -37 41 -37q2 0 7.5 1t12.5 2t15 1q37 4 41 4q8 0 37 -4t31 -4q43 0 43 35q0 37 -35 37q-8 0 -14.5 -2t-12.5 -2q-12 0 -12 26v199l139 -252q27 -49 64 -49q55 0 55 90v242q0 25 14 24h11q39 0 39 35q0 39 -41 39q-18 0 -33 -2q-29 -4 -33 -4q-6 0 -35 4q-14 2 -31 2 q-23 0 -34 -12q-10 -10 -11 -27q0 -35 37 -35h17q23 0 22 -24v-201l-143 262l-4 12q-2 25 -39 25q-14 0 -24.5 -2t-29 -2t-30.5 2t-23 2q-29 0 -34 -23q-10 23 -35 23q-18 0 -35 -2q-33 -4 -39 -4t-35 4q-14 2 -31 2q-39 0 -38 -39q0 -37 38 -37q6 0 11 2q-2 -4 -13.5 -23.5 t-19.5 -35.5q-27 -45 -29 -54l-69 113h4q45 0 45 35q0 39 -41 39q-8 0 -33 -4t-31 -4q-2 0 -34.5 4t-36.5 4q-41 0 -41 -39zM461 795q0 -41 43 -41q25 0 45 6q14 4 34.5 4t32.5 -4q18 -6 35 -6q43 0 43 41q0 35 -35 34l-5 -1q-5 -1 -9 -1h-14q-10 0 -10 25v229q0 25 10 25 h14q4 0 9 -1l5 -1q8 0 23 10q12 9 12 25q0 37 -43 37q-18 0 -33 -2l-36 -5q-10 0 -39 5q-14 2 -35 2q-47 0 -47 -37q0 -12 10 -23q12 -12 27 -12q2 0 6 1t8 1h14q10 0 11 -25v-229q0 -25 -11 -25h-14q-4 0 -8 1t-6 1q-37 1 -37 -34zM731 1057q0 -63 39 -111q47 -59 111 -108 q76 -59 112 -109q37 49 113 109q68 53 111 106q41 51 40.5 112.5t-36.5 94.5q-39 35 -91 35q-88 0 -137 -90q-49 90 -137 90q-49 0 -88 -35q-37 -33 -37 -94z" />
+<glyph horiz-adv-x="350" />
+</font>
+</defs></svg> 
\ No newline at end of file
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/images/page_bg_img.jpg
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/images/page_bg_img.jpg
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/images/page_bg_img.jpg	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/images/page_bg_img.jpg	(revision 47450)

Property changes on: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/images/page_bg_img.jpg
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/images/img07.jpg
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/images/img07.jpg
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/images/img07.jpg	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/images/img07.jpg	(revision 47450)

Property changes on: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/images/img07.jpg
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/images/module_separator_m.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/images/module_separator_m.png
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/images/module_separator_m.png	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/images/module_separator_m.png	(revision 47450)

Property changes on: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/images/module_separator_m.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/images/number-2.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/images/number-2.png
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/images/number-2.png	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/images/number-2.png	(revision 47450)

Property changes on: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/images/number-2.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/images/spinner.gif
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/images/spinner.gif
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/images/spinner.gif	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/images/spinner.gif	(revision 47450)

Property changes on: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/images/spinner.gif
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/images/page_bg.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/images/page_bg.png
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/images/page_bg.png	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/images/page_bg.png	(revision 47450)

Property changes on: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/images/page_bg.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/images/img03.gif
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/images/img03.gif
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/images/img03.gif	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/images/img03.gif	(revision 47450)

Property changes on: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/images/img03.gif
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/images/img04.jpg
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/images/img04.jpg
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/images/img04.jpg	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/images/img04.jpg	(revision 47450)

Property changes on: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/images/img04.jpg
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/images/img01.jpg
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/images/img01.jpg
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/images/img01.jpg	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/images/img01.jpg	(revision 47450)

Property changes on: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/images/img01.jpg
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/fonts/kreon-regular-webfont.eot
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/fonts/kreon-regular-webfont.eot
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/fonts/kreon-regular-webfont.eot	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/fonts/kreon-regular-webfont.eot	(revision 47450)

Property changes on: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/fonts/kreon-regular-webfont.eot
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/registrationsReport.jsp
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/registrationsReport.jsp	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/registrationsReport.jsp	(revision 47450)
@@ -0,0 +1,74 @@
+<%@ page contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<%@ taglib prefix="s" uri="/struts-tags"%>
+<%@ taglib prefix="sj" uri="/struts-jquery-tags"%>
+<html>
+<head>
+<link href="jsps/style.css" rel="stylesheet" type="text/css" media="screen" />
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<!--<meta http-equiv="refresh" content="13" >-->
+<title><s:text name="manageJobs.sendReports.title"/></title>
+<link href="jsps/favicon.ico" rel="shortcut icon" type="image/x-icon" />
+<sj:head />
+</head>
+<body class="left">
+
+<div id="wrapper">
+	<jsp:include page="menu.jsp"/>
+	<div id="page">
+		<div id="page-bgtop">
+			<div id="middle">
+                <div class="middle-b">
+                    <div class="background">
+                    	<div id="left">
+                        	<div id="left_container">
+	                             <h2 class="helpHdr">Info</h2>
+                                 <s:text name="help.browsevalidations"/>
+                            </div>
+                        </div>
+                        <div id="main">
+                            <div id="main_container" class="clearfix">
+                                <div id="mainmiddle" class="floatbox">
+                                    <h1 class="title"><s:text name="manageJobs.sendReports.title"/></h1>
+<%--                                     <s:if test="%{enableCuration}"> --%>
+	                                    <s:form action="sendRegistrationsReport">
+	                                   		 <s:select name="month" 
+ 	                                    		key="manageJobs.sendReports.selectMonth"
+  	                          					list="#{'January-01':'January','February-02':'February','March-03':'March',
+  	                          					'April-04':'April','May-05':'May','June-06':'June',
+  	                          					'July-07':'July','August-08':'August','September-09':'September',
+  	                          					'October-10':'October','November-11':'November','December-12':'December'}"
+                                             	required="true"
+ 	  					                    />
+ 	  					                    <s:select name="year" 
+ 	                                    		key="manageJobs.sendReports.selectYear"
+  	                          					list="#{'2013':'2013','2014':'2014','2015':'2015'}"
+                                             	required="true"
+ 	  					                    />
+<%--      										<sj:datepicker name="manageJobs.sendReports.selectDateFrom" changeMonth="true" changeYear="true" displayFormat="yy-mm-dd"/> --%>
+<%--      										<sj:datepicker name="manageJobs.sendReports.selectMonthDateTo" changeMonth="true" changeYear="true" displayFormat="yy-mm-dd"/> --%>
+     										
+<%-- 	                                    	<s:select name="mode"  --%>
+<%-- 	                                    		key="manageJobs.deleteJobs.whatToDelete" --%>
+<%--  	                          					list="#{'all':'All jobs', 'compTest_only':'Compatibility Tests only', 'uncompleted_only':'Uncompleted jobs'}" --%>
+<%--                                             	required="true" --%>
+<%-- 	  					                    /> --%>
+	                                    	<s:submit cssClass="button-default"/>
+	                                    </s:form>
+<%-- 	                               </s:if> --%>
+                                    
+								</div>
+                            </div>
+                        </div>
+                    </div>
+                </div>
+            </div>
+		</div>
+		<!-- NMI This needs to be the same in all pages and the text is some properties file -->
+        <div id="footer"> 
+           <jsp:include page="footer.jsp"/>
+        </div>
+	</div>
+</div>
+</body>
+</html>
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/signin.jsp
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/signin.jsp	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/signin.jsp	(revision 47450)
@@ -0,0 +1,76 @@
+<%@ page contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<%@ taglib prefix="s" uri="/struts-tags"%>
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title><s:text name="login.title"/></title>
+<link href="jsps/favicon.ico" rel="shortcut icon" type="image/x-icon" />
+<link href="jsps/style.css" rel="stylesheet" type="text/css" media="screen" />
+</head>
+<body>
+<div id="wrapper">
+	<jsp:include page="menu.jsp"/>
+	<div id="page">
+		<div id="page-bgtop">
+			<div id="middle">
+                <div class="middle-b">
+                    <div class="background">
+                        <div class="main">
+                        <div id="main_container" class="clearfix">
+                                <div id="mainmiddle" class="floatbox">
+                                    <s:actionerror/>
+                                    <div class="post">
+                                        <h2 class="title"><s:text name="login.title"/></h2>
+                                        <s:text name="login.description"/>
+                                        <%--<p class="meta"><a href='<s:url value="/jsps/help.jsp#login"/>' target="_blank"><s:text name="help"/></a></p>--%>
+                                        <div class="entry">
+                                            <s:form action="Login">
+                                                <s:if test="%{repoMode.trim().toLowerCase().equals(\"dnet\")}">
+                                                    <s:textfield name="email" key="registration.username"/>
+                                                </s:if>
+                                                <s:else>
+                                                    <s:textfield name="email" key="registration.email"/>
+                                                </s:else>
+                                                <s:password name="password" key="registration.password"/>
+                                                <%-- <s:checkbox name="rememberme" key="registration.rememberme"/> --%>
+                                                <s:submit/>
+                                            </s:form>
+                                            <a href='<s:url value="forgotPassword" />'><s:text name="login.forgotpassword"/></a>
+                                        </div>
+                                    </div>
+                                    <div class="post">
+                                        <h2 class="title"><s:text name="registration.title"/></h2>
+                                        <s:text name="registration.description"/>
+                                        <%--<p class="meta"><a href='<s:url value="/jsps/help.jsp#registration"/>' target="_blank"><s:text name="help"/></a></p>--%>
+                                        <div class="entry">
+                                            <%-- <s:if test="%{@gr.uoa.di.validatorweb.configs.Constants@isModeLdap()}">
+                                                <s:text name="registration.ldap.message"/>
+                                            </s:if> --%>
+                                            <s:form action="Register">
+                                                <s:if test="%{repoMode.trim().toLowerCase().equals(\"dnet\")}">
+                                                    <s:textfield name="username" key="registration.username"/>
+                                                    <s:textfield name="firstName" key="registration.firstName"/>
+                                                    <s:textfield name="lastName" key="registration.lastName"/>
+                                                </s:if>
+                                                <s:textfield name="email" key="registration.email"/>
+                                                <s:password name="password" key="registration.password"/>
+                                                <s:password name="repassword" key="registration.repassword"/>
+                                                <s:submit/>
+                                            </s:form>
+                                        </div>
+                                    </div>
+								</div>
+                            </div>
+                        </div>
+                    </div>
+                </div>
+            </div>
+		</div>
+		  <div id="footer"> 
+           <jsp:include page="footer.jsp"/>
+        </div>
+	</div>
+</div>
+</body>
+</html>
\ No newline at end of file
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/login.jsp
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/login.jsp	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/login.jsp	(revision 47450)
@@ -0,0 +1,86 @@
+<%@ page contentType="text/html; charset=UTF-8"
+    pageEncoding="UTF-8"%>
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<%@ taglib prefix="s" uri="/struts-tags"%>
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title><s:text name="login.title"/></title>
+<link href="jsps/favicon.ico" rel="shortcut icon" type="image/x-icon" />
+<link href="jsps/style.css" rel="stylesheet" type="text/css" media="screen" />
+</head>
+<body>
+<div id="wrapper">
+	<jsp:include page="menu.jsp"/>
+	<div id="page">
+        <div id="page-bgtop">
+             <div id="middle">
+                <div class="middle-b">
+                    <div class="background">
+                        <div id="main">
+                            <div id="main_container" class="clearfix">
+                                <div id="mainmiddle" class="floatbox">
+                                <h1>Sign In </h1>
+	                                <div class="notes">
+    		                            <s:text name="login.overview"/>
+   		                            </div>
+                                    <s:actionerror/>
+                                    <div class="post width45 separator float-left">
+                                        <h2><s:text name="login.title"/></h2>
+                                        <s:text name="login.description"/>
+                                        <%--<p class="meta"><a href='<s:url value="/jsps/help.jsp#login"/>' target="_blank"><s:text name="help"/></a></p>--%>
+                                        <div class="entry">
+                                            <s:form action="Login">
+                                            	
+                                            	<s:hidden name="url" value="%{#request['javax.servlet.forward.servlet_path']}"/>
+            									<s:hidden name="params" value="%{#request['javax.servlet.forward.query_string']}"/>  
+    
+                                                <s:textfield name="email_username" key="registration.username_email"/>
+                                                <s:password name="password_login" key="registration.password"/>
+
+                                                <%-- <s:checkbox name="rememberme" key="registration.rememberme"/> --%>
+                                                <s:submit  cssClass="button-default" value="Sign In"/>
+                                            </s:form>
+                                            <a class="smallfont" href='<s:url action="forgotPassword"/>'><s:text name="login.forgotpassword"/></a>
+                                        </div>
+                                    </div>
+                                    
+                                    <div class="post width45 float-left">
+                                        <h2><s:text name="menu.account.registration.title"/></h2>
+                                        <div class="entry">
+                                            <!-- NMI take the following out if everything works fine
+                                            <a href='<s:url action="go2registration" />'><s:text name="menu.account.registration" /></a>
+                                            -->
+                                        <s:text name="registration.description"/>
+                                        <%--<p class="meta"><a href='<s:url value="/jsps/help.jsp#registration"/>' target="_blank"><s:text name="help"/></a></p>--%>
+                                        
+                                            <%-- <s:if test="%{@gr.uoa.di.validatorweb.configs.Constants@isModeLdap()}">
+                                                <s:text name="registration.ldap.message"/>
+                                            </s:if> --%>
+                                            <s:form action="Register">
+                                                <s:textfield name="username" key="registration.username" requiredLabel="true"/>
+                                                <s:textfield name="firstName" key="registration.firstName" requiredLabel="true"/>
+                                                <s:textfield name="lastName" key="registration.lastName" requiredLabel="true"/>
+                                                <s:textfield name="email" key="registration.email" requiredLabel="true"/>
+                                                <s:textfield name="institution" key="registration.institution" />
+                                                <s:password name="password" key="registration.password" requiredLabel="true"/>
+                                                <s:password name="repassword" key="registration.repassword" requiredLabel="true"/>
+                                                <s:submit cssClass="button-default" value="Register"/>
+                                            </s:form>
+                                        </div>
+                                </div>
+                                 </div>
+                             </div>
+                         </div>
+                    </div>
+                </div>
+            </div>        
+        </div>
+        <!-- NMI This needs to be the same in all pages and the text is some properties file -->
+        <div id="footer"> 
+		<jsp:include page="footer.jsp"/>
+	</div>
+	</div>
+</div>
+</body>
+</html>
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/rules.jsp
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/rules.jsp	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/rules.jsp	(revision 47450)
@@ -0,0 +1,3 @@
+<%@ taglib prefix="s" uri="/struts-tags"%>
+
+<s:property value="#request['jsonization']" escape="false"/>
\ No newline at end of file
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/fonts/yanonekaffeesatz.css
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/fonts/yanonekaffeesatz.css	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/fonts/yanonekaffeesatz.css	(revision 47450)
@@ -0,0 +1,13 @@
+/* Copyright (C) YOOtheme GmbH, YOOtheme Proprietary Use License (http://www.yootheme.com/license) */
+
+@font-face {
+	font-family: 'YanoneKaffeesatzLight';
+	src: url('YanoneKaffeesatz-Light-webfont.eot');
+	src: url('YanoneKaffeesatz-Light-webfont.eot?#iefix') format('embedded-opentype'),
+		url('YanoneKaffeesatz-Light-webfont.woff') format('woff'),
+		url('YanoneKaffeesatz-Light-webfont.ttf') format('truetype'),
+		url('YanoneKaffeesatz-Light-webfont.svg#YanoneKaffeesatzLight') format('svg');
+	font-weight: normal;
+	font-style: normal;
+}
+
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/images/img02.jpg
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/images/img02.jpg
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/images/img02.jpg	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/images/img02.jpg	(revision 47450)

Property changes on: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/images/img02.jpg
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/feedback.jsp
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/feedback.jsp	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/feedback.jsp	(revision 47450)
@@ -0,0 +1,45 @@
+<%@ page contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<%@ taglib prefix="s" uri="/struts-tags"%>
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<link href="jsps/style.css" rel="stylesheet" type="text/css" media="screen" />
+<title><s:text name="feedback.title"/></title>
+<link href="jsps/favicon.ico" rel="shortcut icon" type="image/x-icon" />
+</head>
+<body>
+<div id="wrapper">
+	<jsp:include page="menu.jsp"/>
+	<div id="page">
+		<div id="page-bgtop">
+			<div id="middle">
+                <div class="middle-b">
+                    <div class="background">
+                        <div class="main">
+                        <div id="main_container" class="clearfix">
+                                <div id="mainmiddle" class="floatbox">
+                                    <h2 class="title"><s:text name="feedback.title"/></h2>
+                                    <s:actionerror/>
+                                    <s:text name="feedback.loggedin"/>
+                                    <div class="entry">
+                                        <s:form action="sendFeedback">
+                                            <s:select name="reason" list="#{'validator form: feedback':'Feedback', 'validator form: bug':'Report a Bug', 'validator form: other':'Other'}" key="feedback.reason"/>
+                                            <s:textarea name="message" cols="50" rows="10" key="feedback.message"/>
+                                            <s:submit/>
+                                        </s:form>
+                                    </div>
+								</div>
+                            </div>
+                        </div>
+                    </div>
+                </div>
+            </div>
+		</div>
+		  <div id="footer"> 
+           <jsp:include page="footer.jsp"/>
+        </div>
+	</div>
+</div>
+</body>
+</html>
\ No newline at end of file
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/fonts/kreon-regular-webfont.woff
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/fonts/kreon-regular-webfont.woff
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/fonts/kreon-regular-webfont.woff	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/fonts/kreon-regular-webfont.woff	(revision 47450)

Property changes on: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/fonts/kreon-regular-webfont.woff
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/fonts/OpenSans-Light-webfont.eot
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/fonts/OpenSans-Light-webfont.eot
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/fonts/OpenSans-Light-webfont.eot	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/fonts/OpenSans-Light-webfont.eot	(revision 47450)

Property changes on: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/fonts/OpenSans-Light-webfont.eot
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/fonts/DroidSans-webfont.woff
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/fonts/DroidSans-webfont.woff
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/fonts/DroidSans-webfont.woff	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/fonts/DroidSans-webfont.woff	(revision 47450)

Property changes on: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/fonts/DroidSans-webfont.woff
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/fonts/OpenSans-Light-webfont.woff
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/fonts/OpenSans-Light-webfont.woff
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/fonts/OpenSans-Light-webfont.woff	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/fonts/OpenSans-Light-webfont.woff	(revision 47450)

Property changes on: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/fonts/OpenSans-Light-webfont.woff
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/fonts/YanoneKaffeesatz-Light-webfont.eot
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/fonts/YanoneKaffeesatz-Light-webfont.eot
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/fonts/YanoneKaffeesatz-Light-webfont.eot	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/fonts/YanoneKaffeesatz-Light-webfont.eot	(revision 47450)

Property changes on: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/fonts/YanoneKaffeesatz-Light-webfont.eot
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/fonts/DroidSans-webfont.svg
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/fonts/DroidSans-webfont.svg	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/fonts/DroidSans-webfont.svg	(revision 47450)
@@ -0,0 +1,251 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" >
+<svg xmlns="http://www.w3.org/2000/svg">
+<metadata>
+This is a custom SVG webfont generated by Font Squirrel.
+Copyright   : Digitized data copyright  2007 Google Corporation
+Foundry     : Ascender Corporation
+Foundry URL : httpwwwascendercorpcom
+</metadata>
+<defs>
+<font id="DroidSansRegular" horiz-adv-x="1128" >
+<font-face units-per-em="2048" ascent="1638" descent="-410" />
+<missing-glyph horiz-adv-x="532" />
+<glyph unicode=" "  horiz-adv-x="532" />
+<glyph unicode="&#x09;" horiz-adv-x="532" />
+<glyph unicode="&#xa0;" horiz-adv-x="532" />
+<glyph unicode="!" horiz-adv-x="551" d="M147 111q0 38 10 64.5t27 43t40 24t50 7.5q26 0 49.5 -7.5t40.5 -24t27 -43t10 -64.5q0 -37 -10 -63.5t-27 -43.5t-40.5 -25t-49.5 -8q-27 0 -50 8t-40 25t-27 43.5t-10 63.5zM164 1462h223l-51 -1048h-121z" />
+<glyph unicode="&#x22;" horiz-adv-x="823" d="M133 1462h197l-41 -528h-115zM494 1462h196l-41 -528h-114z" />
+<glyph unicode="#" horiz-adv-x="1323" d="M51 428v137h285l65 328h-274v137h299l82 432h147l-82 -432h293l84 432h144l-84 -432h262v-137h-289l-63 -328h280v-137h-307l-82 -428h-147l84 428h-291l-82 -428h-144l78 428h-258zM483 565h291l64 328h-291z" />
+<glyph unicode="$" d="M123 172v172q33 -16 76.5 -32.5t91.5 -29.5t98.5 -21.5t97.5 -8.5v434q-89 30 -154.5 63t-108.5 75.5t-64 97.5t-21 129q0 67 24.5 122.5t70 97t110 68t143.5 35.5v180h138v-176q100 -5 184.5 -26t151.5 -52l-66 -145q-56 25 -126 45.5t-144 26.5v-422q88 -31 155.5 -64 t113 -74.5t68.5 -95t23 -125.5q0 -70 -25 -127t-71.5 -99t-113 -69.5t-150.5 -39.5v-230h-138v221q-50 0 -101 4.5t-99 13.5t-90 22t-74 30zM315 1049q0 -36 8.5 -64.5t28.5 -52t53 -42.5t82 -36v369q-89 -16 -130.5 -60.5t-41.5 -113.5zM625 262q93 14 138.5 63t45.5 121 q0 33 -10 60.5t-31.5 50t-56.5 41.5t-86 37v-373z" />
+<glyph unicode="%" horiz-adv-x="1690" d="M102 1026q0 108 17.5 193t54 143.5t93 89.5t134.5 31q75 0 131.5 -31t95 -89.5t58 -143.5t19.5 -193t-18 -194t-55 -145t-94.5 -90.5t-136.5 -31.5q-73 0 -129 31.5t-94 90.5t-57 145t-19 194zM250 1026q0 -165 35.5 -247.5t115.5 -82.5q156 0 156 330q0 328 -156 328 q-80 0 -115.5 -81.5t-35.5 -246.5zM362 0l812 1462h157l-811 -1462h-158zM985 440q0 108 17.5 193t54 143.5t93 89.5t134.5 31q75 0 131.5 -31t94.5 -89.5t57.5 -143.5t19.5 -193t-17.5 -193.5t-54.5 -144.5t-94.5 -90.5t-136.5 -31.5q-74 0 -130 31.5t-93.5 90.5 t-56.5 144.5t-19 193.5zM1133 440q0 -165 35.5 -247t115.5 -82q156 0 156 329q0 328 -156 328q-80 0 -115.5 -81.5t-35.5 -246.5z" />
+<glyph unicode="&#x26;" horiz-adv-x="1438" d="M109 381q0 78 20 139t58.5 111t94 93t126.5 85q-31 36 -61 74.5t-52.5 82t-36.5 93t-14 106.5q0 75 25 134.5t72 101t116 63t157 21.5q83 0 148.5 -21.5t111 -63t69.5 -101t24 -134.5q0 -64 -25 -118.5t-67 -101t-96.5 -86t-114.5 -75.5l352 -372q27 29 48.5 59t38.5 64 t30.5 73t23.5 86h184q-15 -66 -35.5 -121.5t-47 -104.5t-59 -91.5t-71.5 -83.5l277 -293h-225l-168 172q-49 -45 -97 -80.5t-102 -60t-116 -38t-140 -13.5q-105 0 -188.5 26.5t-141 78t-88 126t-30.5 170.5zM299 387q0 -54 17.5 -99.5t50.5 -78t81 -50.5t109 -18 q58 0 107 11.5t91 31.5t78 47t68 58l-387 407q-52 -33 -92 -64.5t-67.5 -67.5t-41.5 -78.5t-14 -98.5zM422 1165q0 -34 8 -66.5t24.5 -65t42.5 -66t62 -70.5q59 35 102 66t71 63t42 67t14 76q0 36 -12.5 66.5t-36 52.5t-56.5 34.5t-75 12.5q-86 0 -136 -44.5t-50 -125.5z " />
+<glyph unicode="'" horiz-adv-x="463" d="M133 1462h197l-41 -528h-115z" />
+<glyph unicode="(" horiz-adv-x="616" d="M82 561q0 125 18 246.5t55 236t93.5 220t134.5 198.5h172q-140 -193 -212.5 -424t-72.5 -475q0 -119 18.5 -237t54 -231t88.5 -219t122 -200h-170q-78 90 -134.5 193t-93.5 215.5t-55 232.5t-18 244z" />
+<glyph unicode=")" horiz-adv-x="616" d="M61 1462h172q78 -93 134.5 -198.5t94 -220t55.5 -236t18 -246.5q0 -124 -18 -244t-55.5 -232.5t-94 -215.5t-134.5 -193h-170q69 94 122 200t89 219t54 231t18 237q0 244 -72 475t-213 424z" />
+<glyph unicode="*" d="M82 1081l29 193l391 -111l-43 393h205l-43 -393l397 111l26 -193l-378 -28l245 -326l-178 -96l-176 358l-158 -358l-184 96l242 326z" />
+<glyph unicode="+" d="M102 647v150h387v389h150v-389h387v-150h-387v-385h-150v385h-387z" />
+<glyph unicode="," horiz-adv-x="512" d="M63 -264q15 61 29.5 127t28 131.5t24.5 128t19 115.5h198l15 -23q-14 -54 -33.5 -115t-43 -123t-49 -123.5t-50.5 -117.5h-138z" />
+<glyph unicode="-" horiz-adv-x="659" d="M82 465v168h496v-168h-496z" />
+<glyph unicode="." horiz-adv-x="549" d="M147 111q0 38 10 64.5t27 43t40 24t50 7.5q26 0 49.5 -7.5t40.5 -24t27 -43t10 -64.5q0 -37 -10 -63.5t-27 -43.5t-40.5 -25t-49.5 -8q-27 0 -50 8t-40 25t-27 43.5t-10 63.5z" />
+<glyph unicode="/" horiz-adv-x="764" d="M20 0l545 1462h178l-544 -1462h-179z" />
+<glyph unicode="0" d="M98 733q0 177 25.5 317t81 236.5t144 147.5t214.5 51q119 0 207 -50.5t146 -147t87 -236.5t29 -318q0 -177 -25.5 -317t-82 -237t-145.5 -148t-216 -51q-118 0 -205.5 51t-145 148t-86 237t-28.5 317zM283 733q0 -150 15 -262t48 -186.5t86.5 -112t130.5 -37.5t131 37 t88.5 111t50 186.5t15.5 263.5q0 150 -15.5 262t-50 186t-88.5 111t-131 37t-130.5 -37t-86.5 -111t-48 -186t-15 -262z" />
+<glyph unicode="1" d="M178 1163l383 299h150v-1462h-176v913q0 43 0.5 92t2 97.5t3 93t2.5 78.5q-17 -18 -30 -31t-26.5 -25t-28.5 -25.5t-36 -31.5l-148 -121z" />
+<glyph unicode="2" d="M96 0v156l350 381q75 81 134 148t100.5 131t63.5 128.5t22 140.5q0 59 -17 104t-48.5 76.5t-74.5 47.5t-96 16q-95 0 -171.5 -38.5t-145.5 -98.5l-102 119q40 36 86 67.5t99 54.5t112 36.5t124 13.5q96 0 173.5 -27t131.5 -77.5t83.5 -123t29.5 -163.5q0 -85 -26.5 -162 t-73 -151.5t-111 -149.5t-139.5 -156l-281 -299v-8h689v-166h-912z" />
+<glyph unicode="3" d="M82 59v170q87 -46 188.5 -71t194.5 -25q92 0 159 20t110.5 57t64 91t20.5 121q0 68 -26.5 116.5t-75.5 80t-119.5 46.5t-159.5 15h-133v151h133q81 0 144 20t105.5 57t64.5 88t22 112q0 52 -18 93t-51 69.5t-79 43.5t-102 15q-107 0 -188.5 -33.5t-155.5 -87.5l-92 125 q38 31 84.5 58t101.5 47.5t117.5 32.5t132.5 12q108 0 189.5 -27t136.5 -75.5t83 -115t28 -145.5q0 -73 -23 -133t-64.5 -104t-99.5 -72.5t-129 -40.5v-6q177 -22 269 -112.5t92 -235.5q0 -96 -32.5 -176t-98.5 -138t-167 -90t-239 -32q-109 0 -205.5 17t-181.5 62z" />
+<glyph unicode="4" d="M23 328v159l663 983h188v-976h213v-166h-213v-328h-176v328h-675zM201 494h497v356q0 56 1.5 117.5t3.5 120t4.5 109.5t3.5 85h-9q-7 -20 -17.5 -44.5t-23 -49t-25.5 -47.5t-24 -39z" />
+<glyph unicode="5" d="M131 59v172q33 -23 77.5 -41t93.5 -30t98.5 -18.5t91.5 -6.5q79 0 141 18.5t105 57.5t66 98t23 140q0 143 -88 218.5t-256 75.5q-27 0 -58.5 -2.5t-63 -6.5t-60 -8.5t-49.5 -8.5l-90 57l55 688h690v-166h-532l-39 -419q32 6 84.5 13t124.5 7q99 0 184.5 -27.5t149 -81.5 t99.5 -134t36 -185q0 -114 -34 -205t-101 -154t-165.5 -96.5t-226.5 -33.5q-51 0 -100.5 5t-95 14.5t-86.5 24.5t-74 35z" />
+<glyph unicode="6" d="M113 625q0 105 10.5 209t37 199.5t72.5 177.5t117 142.5t170 95t232 34.5q19 0 42 -1t46.5 -3.5t45 -6t38.5 -8.5v-155q-35 12 -79 18t-87 6q-90 0 -158.5 -21.5t-118.5 -60.5t-83.5 -93t-54.5 -119.5t-31 -139.5t-13 -154h12q20 36 48.5 67.5t66.5 54t85.5 35.5 t106.5 13q95 0 172 -29.5t131 -86.5t83.5 -139.5t29.5 -188.5q0 -114 -31 -205t-89 -154.5t-140 -97.5t-184 -34q-100 0 -187.5 39t-151.5 119t-101 201t-37 286zM295 506q0 -67 18.5 -133.5t55 -119.5t91.5 -86.5t128 -33.5q60 0 109.5 20.5t85.5 62t55.5 105t19.5 150.5 q0 70 -16.5 125.5t-49.5 94.5t-82.5 60t-115.5 21q-67 0 -122.5 -23.5t-94.5 -61t-60.5 -85.5t-21.5 -96z" />
+<glyph unicode="7" d="M90 1296v166h940v-145l-555 -1317h-194l563 1296h-754z" />
+<glyph unicode="8" d="M106 373q0 75 22.5 135t60.5 108t90 85t110 65q-49 31 -92 67.5t-74.5 81.5t-50 99.5t-18.5 120.5q0 87 33.5 152.5t90.5 109.5t131.5 66t155.5 22q84 0 158.5 -22t131 -66t89.5 -110t33 -154q0 -67 -20 -121t-55 -97.5t-83 -78t-104 -62.5q58 -31 113.5 -69t99 -85.5 t70 -106.5t26.5 -132q0 -92 -33.5 -166.5t-94 -126.5t-145 -80t-186.5 -28q-110 0 -195.5 27t-144 77.5t-89 123.5t-30.5 165zM285 371q0 -53 16 -97.5t50 -76t86 -49t124 -17.5q70 0 123.5 17.5t89.5 50t54 78.5t18 102q0 52 -19.5 94t-56 78t-87.5 68t-114 63l-30 14 q-126 -60 -190 -137.5t-64 -187.5zM332 1126q0 -57 17.5 -98t48.5 -73t74.5 -57.5t94.5 -49.5q48 22 90.5 48t74 59t49.5 75t18 96q0 101 -63 154t-173 53q-106 0 -168.5 -53t-62.5 -154z" />
+<glyph unicode="9" d="M106 991q0 114 31.5 205.5t89 155t140 97.5t184.5 34q101 0 188 -39t151 -119t101 -201.5t37 -285.5q0 -105 -10.5 -209.5t-37 -199.5t-72.5 -177.5t-117 -142.5t-170 -94.5t-232 -34.5q-19 0 -42 1t-46 3.5t-45 5.5t-39 8v156q35 -13 79 -19t87 -6q135 0 222 47 t138 127.5t72.5 187.5t26.5 226h-13q-20 -36 -48 -67t-66 -54t-86 -36t-107 -13q-95 0 -172 29.5t-131 86.5t-83.5 139.5t-29.5 188.5zM283 991q0 -70 16.5 -125.5t49.5 -94.5t82.5 -60t115.5 -21q68 0 123 23.5t94 61t60.5 85.5t21.5 96q0 67 -18.5 133.5t-55 120 t-91.5 86.5t-128 33q-60 0 -109.5 -20t-85.5 -62t-55.5 -105.5t-19.5 -150.5z" />
+<glyph unicode=":" horiz-adv-x="549" d="M147 111q0 38 10 64.5t27 43t40 24t50 7.5q26 0 49.5 -7.5t40.5 -24t27 -43t10 -64.5q0 -37 -10 -63.5t-27 -43.5t-40.5 -25t-49.5 -8q-27 0 -50 8t-40 25t-27 43.5t-10 63.5zM147 987q0 39 10 65.5t27 43t40 23.5t50 7q26 0 49.5 -7t40.5 -23.5t27 -43t10 -65.5 q0 -37 -10 -63t-27 -43t-40.5 -25t-49.5 -8q-27 0 -50 8t-40 25t-27 43t-10 63z" />
+<glyph unicode=";" horiz-adv-x="549" d="M63 -264q15 61 29.5 127t28 131.5t24.5 128t19 115.5h198l15 -23q-14 -54 -33.5 -115t-43 -123t-49 -123.5t-50.5 -117.5h-138zM147 987q0 39 10 65.5t27 43t40 23.5t50 7q26 0 49.5 -7t40.5 -23.5t27 -43t10 -65.5q0 -37 -10 -63t-27 -43t-40.5 -25t-49.5 -8 q-27 0 -50 8t-40 25t-27 43t-10 63z" />
+<glyph unicode="&#x3c;" d="M102 662v102l924 481v-160l-735 -364l735 -322v-161z" />
+<glyph unicode="=" d="M102 442v150h924v-150h-924zM102 852v149h924v-149h-924z" />
+<glyph unicode="&#x3e;" d="M102 238v161l736 322l-736 364v160l924 -481v-102z" />
+<glyph unicode="?" horiz-adv-x="872" d="M37 1382q81 42 175 71.5t191 29.5q93 0 167.5 -25.5t126.5 -73.5t80 -117.5t28 -156.5q0 -67 -13.5 -119.5t-40.5 -97.5t-67 -87t-94 -89q-52 -45 -85 -78.5t-52 -65t-26 -64.5t-7 -77v-18h-139v37q0 57 7.5 103t27 86t52.5 78.5t83 80.5q48 41 82 74.5t55.5 68t32 74 t10.5 92.5q0 48 -15 87.5t-43.5 68t-71 44t-98.5 15.5q-83 0 -158 -26t-145 -60zM233 111q0 38 10 64.5t27 43t40 24t50 7.5q26 0 49.5 -7.5t40.5 -24t27 -43t10 -64.5q0 -37 -10 -63.5t-27 -43.5t-40.5 -25t-49.5 -8q-27 0 -50 8t-40 25t-27 43.5t-10 63.5z" />
+<glyph unicode="@" horiz-adv-x="1774" d="M109 575q0 188 59 350.5t168.5 281.5t265 187t348.5 68q156 0 287 -50.5t226.5 -145t148.5 -230t53 -305.5q0 -62 -9.5 -124.5t-28 -119t-47 -105t-66.5 -84.5t-86.5 -56.5t-106.5 -20.5q-45 0 -81.5 15t-62.5 40t-42.5 57.5t-22.5 67.5h-4q-18 -37 -45 -70t-62.5 -57.5 t-80 -38.5t-97.5 -14q-77 0 -136.5 28t-100.5 78.5t-62.5 121.5t-21.5 157q0 101 29.5 185t85 145t134.5 95t177 34q45 0 90 -4t86 -11t75.5 -15.5t57.5 -16.5l-23 -416q-1 -22 -1.5 -35.5t-0.5 -21.5v-12v-7q0 -53 10.5 -87t27.5 -54t38.5 -27.5t44.5 -7.5q46 0 81 30.5 t58.5 82.5t35.5 122t12 148q0 142 -43 252.5t-119 186.5t-180.5 115.5t-227.5 39.5q-169 0 -298 -55.5t-216.5 -155t-132.5 -236t-45 -298.5q0 -151 39.5 -268t116 -197t190 -121t260.5 -41q61 0 120.5 7t115 19t105.5 27.5t93 32.5v-141q-86 -38 -194 -60t-238 -22 q-179 0 -319.5 51t-238 148.5t-148.5 238t-51 319.5zM662 602q0 -133 50.5 -192.5t135.5 -59.5q55 0 94 22.5t64 64t38 99t17 126.5l14 253q-28 8 -66.5 14.5t-80.5 6.5q-74 0 -124.5 -29t-82 -76t-45.5 -107t-14 -122z" />
+<glyph unicode="A" horiz-adv-x="1245" d="M0 0l537 1468h170l538 -1468h-190l-160 453h-545l-162 -453h-188zM410 618h426l-148 424q-6 18 -14.5 44t-17.5 56t-18 62.5t-17 63.5q-7 -31 -16 -64t-18 -63.5t-17.5 -56t-14.5 -42.5z" />
+<glyph unicode="B" horiz-adv-x="1272" d="M199 0v1462h399q128 0 225.5 -19.5t163 -63t98.5 -114t33 -173.5q0 -62 -19.5 -116t-56.5 -95t-91.5 -68.5t-123.5 -36.5v-10q69 -12 129.5 -34.5t105.5 -62t71 -99.5t26 -146q0 -100 -32.5 -178.5t-94 -133t-149.5 -83.5t-199 -29h-485zM385 158h266q88 0 147.5 20 t96 56t52.5 86.5t16 111.5q0 56 -16.5 103t-54 80.5t-99.5 52t-154 18.5h-254v-528zM385 842h244q84 0 141 15t92 44.5t50.5 74t15.5 103.5q0 120 -77 172t-243 52h-223v-461z" />
+<glyph unicode="C" horiz-adv-x="1235" d="M125 733q0 166 43.5 304t128 237t209.5 154t287 55q108 0 206 -22t177 -64l-78 -156q-63 32 -137 55t-168 23q-107 0 -194 -40.5t-148.5 -116.5t-95 -185t-33.5 -246q0 -141 29.5 -250.5t88.5 -184.5t147 -114t206 -39q89 0 169 17.5t158 40.5v-162q-39 -15 -78 -26.5 t-81.5 -18.5t-91 -10.5t-107.5 -3.5q-164 0 -284 54t-198.5 153t-116.5 238t-38 308z" />
+<glyph unicode="D" horiz-adv-x="1401" d="M199 0v1462h407q153 0 277 -46t211 -136.5t134.5 -224.5t47.5 -310q0 -185 -48 -324.5t-139 -233t-223.5 -140.5t-300.5 -47h-366zM385 160h162q264 0 398 146t134 433q0 146 -33 252.5t-96 175.5t-155 102.5t-209 33.5h-201v-1143z" />
+<glyph unicode="E" horiz-adv-x="1081" d="M199 0v1462h759v-164h-573v-452h535v-162h-535v-520h573v-164h-759z" />
+<glyph unicode="F" horiz-adv-x="1006" d="M199 0v1462h759v-164h-573v-516h535v-164h-535v-618h-186z" />
+<glyph unicode="G" horiz-adv-x="1413" d="M125 733q0 172 47.5 311t138.5 236.5t224.5 150t304.5 52.5q111 0 213 -22t190 -64l-72 -162q-36 17 -77.5 32t-85.5 26.5t-90.5 18.5t-92.5 7q-122 0 -216 -40.5t-157.5 -116.5t-96.5 -185t-33 -246q0 -130 27.5 -238t87.5 -186t155 -121t229 -43q44 0 80.5 2.5 t67.5 6.5t58.5 9.5t53.5 10.5v436h-299v164h484v-717q-55 -18 -111 -32t-115 -23.5t-124 -14.5t-140 -5q-157 0 -278 52.5t-204 150t-126 237t-43 313.5z" />
+<glyph unicode="H" horiz-adv-x="1436" d="M199 0v1462h186v-616h666v616h186v-1462h-186v682h-666v-682h-186z" />
+<glyph unicode="I" horiz-adv-x="694" d="M82 0v102l172 41v1176l-172 41v102h530v-102l-172 -41v-1176l172 -41v-102h-530z" />
+<glyph unicode="J" horiz-adv-x="555" d="M-184 -205q34 -9 73 -14.5t84 -5.5q37 0 74.5 9.5t68 34.5t49.5 69t19 112v1462h187v-1442q0 -105 -29.5 -182t-82 -127.5t-126 -75t-162.5 -24.5q-51 0 -89 6.5t-66 17.5v160z" />
+<glyph unicode="K" horiz-adv-x="1186" d="M199 0v1462h186v-731l121 168l452 563h209l-520 -637l539 -825h-211l-451 698l-139 -114v-584h-186z" />
+<glyph unicode="L" horiz-adv-x="1006" d="M199 0v1462h186v-1296h573v-166h-759z" />
+<glyph unicode="M" horiz-adv-x="1782" d="M199 0v1462h276l412 -1192h6l414 1192h276v-1462h-186v887q0 52 2 119t5 128q4 71 7 144h-8l-447 -1278h-153l-443 1280h-8q6 -74 10 -147q4 -63 6.5 -132.5t2.5 -126.5v-874h-172z" />
+<glyph unicode="N" horiz-adv-x="1493" d="M199 0v1462h213l716 -1204h7q-3 76 -7 150q0 32 -2 66l-4 66q-2 34 -2 65v57v800h174v-1462h-215l-719 1210h-8q6 -77 10 -153q4 -65 6.5 -136t2.5 -128v-793h-172z" />
+<glyph unicode="O" horiz-adv-x="1520" d="M125 735q0 170 38 308.5t117 236.5t199 151.5t283 53.5q155 0 272.5 -53.5t197.5 -152t120.5 -237t40.5 -309.5q0 -169 -40.5 -308t-120.5 -238t-198.5 -153t-273.5 -54q-163 0 -282.5 54t-198 153t-116.5 238.5t-38 309.5zM322 733q0 -137 26 -246.5t79.5 -186t136 -117 t196.5 -40.5t196.5 40.5t136 117t78.5 186t25 246.5q0 138 -25 247t-78 184.5t-135 116t-196 40.5t-197 -40.5t-137 -116t-80 -184.5t-26 -247z" />
+<glyph unicode="P" horiz-adv-x="1180" d="M199 0v1462h362q134 0 231 -28.5t160 -83t93 -134.5t30 -182q0 -91 -27.5 -175t-90.5 -148.5t-166.5 -103t-255.5 -38.5h-150v-569h-186zM385 727h129q93 0 162.5 16t115 51.5t68.5 92t23 137.5q0 142 -82 210.5t-256 68.5h-160v-576z" />
+<glyph unicode="Q" horiz-adv-x="1518" d="M125 735q0 170 38 308.5t117 236.5t199 151.5t283 53.5q155 0 272.5 -53.5t197.5 -152t120.5 -237t40.5 -309.5q0 -131 -24.5 -244t-72 -203.5t-118.5 -156.5t-164 -104q43 -94 111.5 -165.5t158.5 -131.5l-121 -142q-103 73 -189.5 172t-137.5 226q-17 -2 -37.5 -3 t-38.5 -1q-163 0 -282.5 54t-198 153t-116.5 238.5t-38 309.5zM322 733q0 -137 26 -246.5t79.5 -186t136 -117t196.5 -40.5t196.5 40.5t136 117t78.5 186t25 246.5q0 138 -25 247t-78 184.5t-135 116t-196 40.5t-197 -40.5t-137 -116t-80 -184.5t-26 -247z" />
+<glyph unicode="R" horiz-adv-x="1208" d="M199 0v1462h356q266 0 393 -103t127 -312q0 -87 -24.5 -152t-65 -111.5t-92.5 -77.5t-107 -51l398 -655h-219l-351 604h-229v-604h-186zM385 762h164q90 0 153 17.5t103.5 52t59 86t18.5 120.5q0 72 -20.5 122t-62 82t-105 46.5t-150.5 14.5h-160v-541z" />
+<glyph unicode="S" horiz-adv-x="1063" d="M104 49v178q34 -16 77.5 -31.5t91.5 -27.5t99 -19.5t101 -7.5q160 0 236.5 60t76.5 172q0 54 -14.5 94t-51 73.5t-97.5 65t-154 68.5q-89 35 -154.5 76.5t-108 93.5t-63 118t-20.5 150q0 88 32 157t90 116.5t138.5 72.5t177.5 25q119 0 214 -22.5t169 -57.5l-67 -156 q-65 29 -147.5 50.5t-170.5 21.5q-122 0 -189 -56.5t-67 -152.5q0 -57 15 -98.5t50 -75t92.5 -63t141.5 -62.5q91 -36 159.5 -74t114.5 -86t69.5 -111t23.5 -149q0 -97 -34.5 -173.5t-98.5 -129.5t-156 -80.5t-207 -27.5q-111 0 -207.5 17.5t-161.5 51.5z" />
+<glyph unicode="T" horiz-adv-x="1063" d="M20 1298v164h1022v-164h-417v-1298h-187v1298h-418z" />
+<glyph unicode="U" horiz-adv-x="1430" d="M184 520v942h187v-952q0 -175 86.5 -271t261.5 -96q89 0 153 27t105 76t61 117t21 149v952h186v-948q0 -114 -33 -212t-99.5 -170t-167 -113t-236.5 -41q-128 0 -226 38.5t-164.5 109.5t-100.5 170.5t-34 221.5z" />
+<glyph unicode="V" horiz-adv-x="1163" d="M0 1462h197l295 -927q29 -91 50 -175.5t38 -158.5q15 74 38 158.5t54 181.5l293 921h198l-489 -1462h-187z" />
+<glyph unicode="W" horiz-adv-x="1810" d="M20 1462h197l223 -889q12 -46 22 -95.5t18.5 -98.5t15.5 -94.5t12 -83.5q5 37 12.5 86t17.5 103t21.5 109.5t24.5 104.5l225 858h197l229 -856q15 -56 29.5 -112t27 -108.5t22 -99.5t15.5 -85q4 38 10 83t14 94.5t17.5 101t20.5 100.5l200 882h199l-367 -1462h-188 l-254 938q-14 51 -27 105t-24 101q-12 55 -23 107q-11 -51 -22 -106q-10 -47 -22.5 -103t-26.5 -110l-242 -932h-188z" />
+<glyph unicode="X" horiz-adv-x="1120" d="M0 0l453 764l-422 698h198l332 -559l334 559h190l-421 -692l456 -770h-211l-354 635l-367 -635h-188z" />
+<glyph unicode="Y" horiz-adv-x="1079" d="M0 1462h203l336 -739l340 739h200l-446 -893v-569h-187v559z" />
+<glyph unicode="Z" horiz-adv-x="1104" d="M82 0v145l711 1151h-691v166h899v-145l-710 -1151h731v-166h-940z" />
+<glyph unicode="[" horiz-adv-x="621" d="M164 -324v1786h405v-149h-223v-1487h223v-150h-405z" />
+<glyph unicode="\" horiz-adv-x="764" d="M23 1462h178l544 -1462h-178z" />
+<glyph unicode="]" horiz-adv-x="621" d="M51 -174h223v1487h-223v149h406v-1786h-406v150z" />
+<glyph unicode="^" horiz-adv-x="1090" d="M41 549l459 924h102l447 -924h-161l-337 735l-349 -735h-161z" />
+<glyph unicode="_" horiz-adv-x="842" d="M-4 -184h850v-140h-850v140z" />
+<glyph unicode="`" horiz-adv-x="1182" d="M393 1548v21h219q16 -34 37.5 -74.5t44.5 -81t47 -78.5t45 -67v-27h-120q-35 28 -76 69.5t-79.5 85.5t-70 84.5t-47.5 67.5z" />
+<glyph unicode="a" horiz-adv-x="1087" d="M94 307q0 164 115.5 252t351.5 96l184 7v69q0 67 -14.5 112t-42 72.5t-68 39.5t-92.5 12q-83 0 -154.5 -24t-137.5 -58l-64 137q74 40 165 68t191 28q102 0 176.5 -20.5t123 -65t72.5 -113.5t24 -167v-752h-131l-37 152h-8q-33 -45 -66 -77.5t-72 -53.5t-87 -31t-111 -10 q-69 0 -127 19.5t-100.5 60t-66.5 102t-24 145.5zM283 305q0 -92 48.5 -135t127.5 -43q61 0 113 19t90 57.5t59.5 97t21.5 137.5v99l-143 -7q-90 -4 -151 -20t-97.5 -44.5t-52.5 -69t-16 -91.5z" />
+<glyph unicode="b" horiz-adv-x="1200" d="M174 0v1556h182v-376q0 -35 -1 -74.5t-3 -73.5q-2 -40 -4 -78h8q23 35 52 65t67.5 52t86.5 34.5t108 12.5q94 0 171 -36t131.5 -107.5t84.5 -177.5t30 -246q0 -141 -30 -247.5t-84.5 -178.5t-131.5 -108.5t-171 -36.5q-59 0 -107 13t-86.5 34.5t-68 50.5t-52.5 61h-12 l-37 -139h-133zM356 551q0 -101 13.5 -179.5t46 -132t86.5 -81t135 -27.5q135 0 198.5 109t63.5 313q0 208 -63.5 311t-200.5 103q-80 0 -133.5 -25.5t-86 -77.5t-46 -130t-13.5 -183z" />
+<glyph unicode="c" horiz-adv-x="948" d="M113 543q0 157 38 266.5t104.5 178t155.5 99.5t191 31q78 0 152.5 -17t124.5 -42l-54 -154q-23 10 -51 19.5t-58 17t-59 12t-55 4.5q-157 0 -229 -100.5t-72 -312.5q0 -211 72.5 -308.5t220.5 -97.5q81 0 146.5 18.5t119.5 43.5v-162q-54 -29 -115.5 -44t-150.5 -15 q-101 0 -189 31.5t-153 100t-102 175t-37 256.5z" />
+<glyph unicode="d" horiz-adv-x="1200" d="M113 547q0 141 30 247.5t85 178.5t132 108.5t170 36.5q59 0 107 -13t86.5 -35t68.5 -51t52 -61h12q-3 34 -6 65q-2 26 -4 53.5t-2 43.5v436h182v-1556h-147l-27 147h-8q-22 -34 -51.5 -64.5t-68 -53.5t-86.5 -36t-108 -13q-93 0 -170 36t-132 107.5t-85 177.5t-30 246z M301 545q0 -209 63.5 -311.5t200.5 -102.5q76 0 128.5 23t85 70t48 117.5t17.5 164.5v41q0 101 -13.5 179.5t-46 132t-86.5 81t-135 27.5q-135 0 -198.5 -109t-63.5 -313z" />
+<glyph unicode="e" horiz-adv-x="1096" d="M113 541q0 136 33 243t93 181.5t143.5 113.5t184.5 39q99 0 178 -35.5t134 -100t84.5 -155t29.5 -200.5v-113h-692q5 -193 81.5 -284t227.5 -91q51 0 94.5 5t84 14.5t78.5 24t77 32.5v-162q-40 -19 -78.5 -33t-79 -23t-84 -13t-94.5 -4q-110 0 -201 37t-156.5 108 t-101.5 176t-36 240zM305 662h492q0 68 -13.5 124.5t-42 96.5t-72.5 62t-106 22q-114 0 -180.5 -78t-77.5 -227z" />
+<glyph unicode="f" horiz-adv-x="674" d="M29 961v75l194 68v96q0 107 22.5 177.5t65 112.5t104.5 59.5t140 17.5q59 0 108.5 -11.5t88.5 -25.5l-47 -141q-31 11 -67.5 19.5t-76.5 8.5t-69 -9.5t-48 -33.5t-28.5 -65.5t-9.5 -106.5v-104h245v-137h-245v-961h-183v961h-194z" />
+<glyph unicode="g" horiz-adv-x="1061" d="M37 -186q0 60 19.5 105.5t52.5 78.5t76.5 54t90.5 32q-42 19 -69 60t-27 94q0 61 32 105.5t101 86.5q-43 18 -78.5 49.5t-60 72t-38 88.5t-13.5 99q0 89 25 159t74 119t122 75t170 26q37 0 76.5 -5.5t66.5 -14.5h363v-113l-197 -27q28 -35 47 -89.5t19 -123.5 q0 -76 -23.5 -140.5t-71 -111.5t-117.5 -73.5t-163 -26.5q-22 0 -44 0.5t-36 3.5q-17 -10 -33.5 -22.5t-30 -28.5t-22 -36t-8.5 -44q0 -27 12 -43.5t32.5 -25.5t48.5 -12t59 -3h176q93 0 157 -23.5t104.5 -63.5t58.5 -94.5t18 -115.5q0 -88 -32.5 -158t-99.5 -118.5 t-169.5 -74.5t-241.5 -26q-107 0 -187 21t-133 61t-79.5 96.5t-26.5 127.5zM209 -180q0 -37 13 -69t42.5 -55t78 -36.5t120.5 -13.5q186 0 278.5 57.5t92.5 165.5q0 46 -12 75t-39.5 45.5t-72.5 22.5t-110 6h-176q-35 0 -73 -8t-69.5 -30t-52 -60.5t-20.5 -99.5zM301 745 q0 -115 54 -171t153 -56q100 0 151.5 55.5t51.5 174.5q0 123 -52.5 181t-152.5 58q-99 0 -152 -60t-53 -182z" />
+<glyph unicode="h" horiz-adv-x="1206" d="M174 0v1556h182v-462l-8 -144h10q25 43 59.5 74.5t75.5 52.5t87 31t94 10q183 0 275.5 -95.5t92.5 -305.5v-717h-182v707q0 130 -52.5 195t-164.5 65q-81 0 -136 -26t-88.5 -77t-48 -125t-14.5 -170v-569h-182z" />
+<glyph unicode="i" horiz-adv-x="530" d="M160 1395q0 60 30.5 87t75.5 27q22 0 41.5 -6.5t34 -20.5t23 -35.5t8.5 -51.5q0 -58 -31.5 -86.5t-75.5 -28.5q-45 0 -75.5 28t-30.5 87zM174 0v1098h182v-1098h-182z" />
+<glyph unicode="j" horiz-adv-x="530" d="M-68 -319q26 -10 53 -15.5t62 -5.5q27 0 50 7.5t40.5 27t27 52t9.5 83.5v1268h182v-1256q0 -77 -17 -138.5t-53 -105t-90.5 -67t-129.5 -23.5q-48 0 -79.5 7t-54.5 18v148zM160 1395q0 60 30.5 87t75.5 27q22 0 41.5 -6.5t34 -20.5t23 -35.5t8.5 -51.5q0 -58 -31.5 -86.5 t-75.5 -28.5q-45 0 -75.5 28t-30.5 87z" />
+<glyph unicode="k" horiz-adv-x="1016" d="M174 0v1556h180v-714l-16 -275h4l135 170l293 361h211l-401 -475l428 -623h-209l-336 504l-109 -82v-422h-180z" />
+<glyph unicode="l" horiz-adv-x="530" d="M174 0v1556h182v-1556h-182z" />
+<glyph unicode="m" horiz-adv-x="1835" d="M174 0v1098h148l26 -148h10q24 43 57 74.5t72.5 52.5t84 31t90.5 10q120 0 199.5 -44t117.5 -138h8q26 47 62.5 81t80 56.5t91.5 33.5t98 11q175 0 263.5 -95.5t88.5 -305.5v-717h-182v707q0 130 -50 195t-155 65q-73 0 -124 -23.5t-83.5 -69t-47.5 -113t-15 -155.5v-606 h-183v707q0 130 -49.5 195t-154.5 65q-77 0 -129 -26t-83.5 -77t-45 -125t-13.5 -170v-569h-182z" />
+<glyph unicode="n" horiz-adv-x="1206" d="M174 0v1098h148l26 -148h10q25 43 59.5 74.5t75.5 52.5t87 31t94 10q183 0 275.5 -95.5t92.5 -305.5v-717h-182v707q0 130 -52.5 195t-164.5 65q-81 0 -136 -26t-88.5 -77t-48 -125t-14.5 -170v-569h-182z" />
+<glyph unicode="o" horiz-adv-x="1182" d="M113 551q0 136 33.5 241.5t95.5 178t151.5 110t200.5 37.5q103 0 190 -37.5t150.5 -110t99 -178t35.5 -241.5q0 -137 -33.5 -243.5t-96 -179t-151.5 -110.5t-200 -38q-103 0 -190 38t-150.5 110.5t-99 179t-35.5 243.5zM301 551q0 -209 68.5 -314.5t222.5 -105.5 t221.5 105.5t67.5 314.5t-68.5 312.5t-222.5 103.5t-221.5 -103.5t-67.5 -312.5z" />
+<glyph unicode="p" horiz-adv-x="1200" d="M174 -492v1590h148l26 -148h8q23 35 52 65.5t67.5 53t86.5 36t108 13.5q94 0 171 -36t131.5 -107.5t84.5 -177.5t30 -246q0 -141 -30 -247.5t-84.5 -178.5t-131.5 -108.5t-171 -36.5q-59 0 -107 13t-86.5 34.5t-68 50.5t-52.5 61h-12q3 -34 6 -65q2 -26 4 -53.5t2 -43.5 v-469h-182zM356 551q0 -101 13.5 -179.5t46 -132t86.5 -81t135 -27.5q135 0 198.5 109t63.5 313q0 208 -63.5 311t-200.5 103q-76 0 -128.5 -23t-85 -70t-48 -117t-17.5 -165v-41z" />
+<glyph unicode="q" horiz-adv-x="1200" d="M113 547q0 141 30 247.5t85 178.5t132 108.5t170 36.5q59 0 107 -13.5t86 -36t68 -53t53 -65.5h8l27 148h147v-1590h-182v469q0 19 2 48t4 56q3 32 6 66h-12q-22 -34 -51.5 -64.5t-68 -53.5t-86.5 -36t-108 -13q-93 0 -170 36t-132 107.5t-85 177.5t-30 246zM301 545 q0 -209 63.5 -311.5t200.5 -102.5q76 0 128.5 23t85 70t48 117.5t17.5 164.5v41q0 101 -13.5 179.5t-46 132t-86.5 81t-135 27.5q-135 0 -198.5 -109t-63.5 -313z" />
+<glyph unicode="r" horiz-adv-x="817" d="M174 0v1098h148l22 -201h8q25 43 53.5 83t64 70.5t79.5 49t100 18.5q29 0 65 -2.5t62 -7.5l-24 -168q-28 5 -57.5 8.5t-55.5 3.5q-63 0 -115 -25.5t-89.5 -73t-58 -114t-20.5 -147.5v-592h-182z" />
+<glyph unicode="s" horiz-adv-x="924" d="M90 49v166q31 -16 69 -31.5t80 -27.5t86.5 -19.5t88.5 -7.5q65 0 110.5 11t74 31.5t41.5 50t13 65.5q0 31 -10 56t-36.5 49.5t-72.5 49.5t-118 56t-129.5 61t-97.5 67t-61.5 85.5t-21.5 115.5q0 70 27.5 124.5t77.5 91.5t120 56t156 19q97 0 177.5 -21t152.5 -55 l-63 -147q-65 29 -133.5 50.5t-139.5 21.5q-102 0 -151 -33.5t-49 -95.5q0 -35 11.5 -61t39.5 -49t75 -46.5t117 -52.5q72 -30 128.5 -60t96.5 -67.5t61 -85.5t21 -115q0 -80 -29 -140t-83.5 -100.5t-131.5 -60.5t-173 -20q-109 0 -187 17.5t-137 51.5z" />
+<glyph unicode="t" horiz-adv-x="694" d="M33 961v81l155 78l78 230h105v-252h276v-137h-276v-637q0 -97 31.5 -146t103.5 -49q18 0 40.5 2t43.5 5t38.5 7t26.5 7v-138q-13 -6 -33 -12t-44 -10.5t-50 -7t-51 -2.5q-62 0 -115 16t-91.5 55t-60.5 105.5t-22 167.5v637h-155z" />
+<glyph unicode="u" horiz-adv-x="1206" d="M164 381v717h182v-707q0 -130 53 -195t164 -65q81 0 136 26t88.5 76.5t48 124.5t14.5 170v570h182v-1098h-147l-27 147h-10q-25 -43 -59.5 -74.5t-75.5 -52t-87 -30.5t-94 -10q-91 0 -160 23t-115 72t-69.5 125t-23.5 181z" />
+<glyph unicode="v" horiz-adv-x="981" d="M0 1098h188l199 -611q11 -33 26 -85t30 -106t27.5 -102t16.5 -73h7q5 25 17 73t27 102t30 106t26 85l199 611h188l-375 -1098h-231z" />
+<glyph unicode="w" horiz-adv-x="1528" d="M20 1098h191l131 -584q10 -45 20 -97.5t19 -104t16 -97t11 -74.5h6q5 26 13.5 69.5t19 92t21.5 96t21 80.5l179 619h196l172 -619q9 -34 20.5 -80t22.5 -93.5t20 -91.5t13 -73h6q3 26 9.5 69.5t15.5 95.5t19.5 106.5t21.5 101.5l137 584h186l-284 -1098h-215l-168 616 q-4 18 -10 40.5t-12 47.5t-12.5 51t-12.5 51q-14 58 -29 120h-6q-14 -63 -27 -121q-11 -50 -23.5 -103t-23.5 -90l-172 -612h-211z" />
+<glyph unicode="x" horiz-adv-x="1024" d="M35 0l373 563l-353 535h207l250 -410l250 410h207l-355 -535l373 -563h-207l-268 436l-270 -436h-207z" />
+<glyph unicode="y" horiz-adv-x="1001" d="M10 1098h189l215 -613q14 -40 28.5 -84t27 -88t21.5 -85t13 -76h6q5 25 16 68t24.5 91.5t28 95.5t25.5 80l199 611h188l-434 -1241q-28 -81 -60.5 -145.5t-75.5 -109.5t-101 -69.5t-138 -24.5q-52 0 -90 5.5t-65 11.5v145q21 -5 53 -8.5t67 -3.5q48 0 83 11.5t61 33.5 t44.5 54t33.5 73l57 160z" />
+<glyph unicode="z" horiz-adv-x="903" d="M82 0v125l536 836h-503v137h688v-146l-524 -815h542v-137h-739z" />
+<glyph unicode="{" horiz-adv-x="725" d="M61 492v155q125 0 190.5 43t65.5 146v333q0 78 27 133t74.5 90.5t113 52t142.5 17.5v-149q-40 -1 -72.5 -7.5t-55 -24t-34.5 -48t-12 -78.5v-332q0 -105 -59.5 -166.5t-174.5 -81.5v-12q115 -20 174.5 -81t59.5 -167v-331q0 -48 12 -78.5t34.5 -48t55 -24t72.5 -7.5v-150 q-77 1 -142.5 17.5t-113 52t-74.5 90.5t-27 133v334q0 103 -65.5 146t-190.5 43z" />
+<glyph unicode="|" d="M489 -492v2048h150v-2048h-150z" />
+<glyph unicode="}" horiz-adv-x="725" d="M51 -174q40 1 72.5 7.5t55 24t34.5 48t12 78.5v331q0 106 59.5 167t174.5 81v12q-115 20 -174.5 81.5t-59.5 166.5v332q0 48 -12 78.5t-34.5 48t-55 24t-72.5 7.5v149q77 -1 142.5 -17.5t113 -52t74.5 -90.5t27 -133v-333q0 -52 16.5 -88t49 -58.5t80.5 -32.5t110 -10 v-155q-125 0 -190.5 -43t-65.5 -146v-334q0 -78 -27 -133t-74.5 -90.5t-113 -52t-142.5 -17.5v150z" />
+<glyph unicode="~" d="M102 586v162q100 108 248 108q29 0 54 -2.5t52.5 -9t61 -19t80.5 -32.5q37 -16 64.5 -27t51 -17.5t43.5 -9t42 -2.5q28 0 58 9.5t59.5 26t57.5 38.5t52 47v-162q-99 -108 -248 -108q-29 0 -54 2.5t-52.5 9t-61 19t-80.5 32.5q-37 16 -64.5 27t-50 17.5t-43 9t-42.5 2.5 q-28 0 -58 -9.5t-59.5 -26t-57.5 -38.5t-53 -47z" />
+<glyph unicode="&#xa1;" horiz-adv-x="551" d="M147 979q0 37 10 63t27.5 43t40.5 25t49 8q27 0 50 -8t40.5 -25t27 -43t9.5 -63q0 -38 -9.5 -64.5t-27 -43t-40.5 -24t-50 -7.5q-26 0 -49 7.5t-40.5 24t-27.5 43t-10 64.5zM162 -373l51 1049h121l51 -1049h-223z" />
+<glyph unicode="&#xa2;" d="M188 743q0 141 26.5 242.5t75 169.5t118 105.5t155.5 50.5v172h137v-164q72 -3 140 -19.5t114 -39.5l-53 -154q-23 10 -51 19.5t-58 17t-59.5 12t-54.5 4.5q-157 0 -229 -101t-72 -313q0 -210 72.5 -307.5t220.5 -97.5q81 0 146.5 18.5t119.5 42.5v-161q-50 -28 -105 -43 t-131 -17v-200h-137v206q-87 13 -156 50.5t-118 104t-75 166t-26 236.5z" />
+<glyph unicode="&#xa3;" d="M68 0v154q44 11 80.5 31.5t63 54.5t41.5 82.5t15 115.5v213h-198v137h198v324q0 87 29.5 155.5t82 116t125.5 72.5t161 25q106 0 193 -22.5t153 -57.5l-66 -144q-56 29 -126.5 50.5t-145.5 21.5q-48 0 -89 -13.5t-71 -43t-46.5 -76.5t-16.5 -113v-295h376v-137h-376v-211 q0 -62 -11.5 -106.5t-31 -76.5t-45 -53.5t-52.5 -37.5h748v-166h-991z" />
+<glyph unicode="&#xa4;" d="M123 1065l98 98l127 -129q47 32 101 50t114 18t113.5 -18t99.5 -50l129 129l99 -96l-130 -129q31 -46 49.5 -100.5t18.5 -114.5t-17.5 -115t-50.5 -100l127 -127l-96 -96l-129 127q-46 -31 -99.5 -48.5t-113.5 -17.5t-115 18t-100 50l-127 -127l-96 96l127 127 q-31 45 -48.5 99t-17.5 114q0 59 17.5 112.5t48.5 100.5zM324 723q0 -50 18.5 -93.5t51 -76t76 -51.5t93.5 -19q51 0 95.5 19t77.5 51.5t52 76t19 93.5q0 51 -19 95.5t-52 77.5t-77.5 52t-95.5 19q-50 0 -93.5 -19t-76 -52t-51 -77.5t-18.5 -95.5z" />
+<glyph unicode="&#xa5;" d="M29 1462h192l342 -739l346 739h191l-385 -768h239v-137h-301v-158h301v-137h-301v-262h-178v262h-301v137h301v158h-301v137h234z" />
+<glyph unicode="&#xa6;" d="M489 289h150v-781h-150v781zM489 776v780h150v-780h-150z" />
+<glyph unicode="&#xa7;" horiz-adv-x="995" d="M121 55v158q31 -15 69 -30t80 -26.5t86.5 -18.5t87.5 -7q69 0 115.5 12t74 31.5t39 45t11.5 52.5q0 29 -8.5 51.5t-34 45t-72.5 47t-123 55.5q-73 31 -130.5 62t-97.5 70t-60.5 89t-20.5 117q0 51 13 92.5t35.5 73.5t51.5 54.5t60 37.5q-75 38 -117.5 95t-42.5 141 q0 61 27.5 110t77.5 83t120 52.5t156 18.5q97 0 175.5 -20t150.5 -52l-56 -139q-65 28 -135 47.5t-141 19.5q-99 0 -150 -29.5t-51 -86.5q0 -27 12 -50t40.5 -45t76 -45.5t117.5 -52.5q72 -28 128.5 -60.5t95.5 -71.5t60 -87.5t21 -110.5q0 -52 -12 -94.5t-32.5 -76.5 t-46.5 -58.5t-54 -40.5q69 -38 107 -92.5t38 -132.5q0 -71 -29.5 -126.5t-83.5 -94t-131.5 -58.5t-173.5 -20q-108 0 -186 16.5t-137 48.5zM291 831q0 -37 14 -68.5t45.5 -60.5t82 -56.5t122.5 -57.5l35 -15q20 13 40.5 31t37 41t27 51t10.5 62q0 38 -13 70t-45.5 61.5 t-86.5 58t-136 58.5q-25 -8 -48.5 -23.5t-42.5 -38t-30.5 -51.5t-11.5 -62z" />
+<glyph unicode="&#xa8;" horiz-adv-x="1182" d="M307 1395q0 54 28 78t68 24q39 0 68 -24.5t29 -77.5t-29 -78t-68 -25q-40 0 -68 25t-28 78zM682 1395q0 54 28 78t68 24q19 0 36.5 -6t30.5 -18.5t21 -31.5t8 -46q0 -53 -29 -78t-67 -25q-40 0 -68 25t-28 78z" />
+<glyph unicode="&#xa9;" horiz-adv-x="1704" d="M100 731q0 104 27 200t75.5 179.5t117.5 152.5t152.5 117.5t179.5 75.5t200 27t200 -27t179.5 -75.5t152.5 -117.5t117.5 -152.5t75.5 -179.5t27 -200t-27 -200t-75.5 -179.5t-117.5 -152t-152.5 -117.5t-179.5 -75.5t-200 -26.5t-200 26.5t-179.5 75.5t-152.5 117.5 t-117.5 152t-75.5 179.5t-27 200zM209 731q0 -133 50.5 -250t138 -204.5t204.5 -138t250 -50.5t250 50.5t204.5 138t138 204.5t50.5 250t-50.5 250t-138 204.5t-204.5 138t-250 50.5t-250 -50.5t-204.5 -138t-138 -204.5t-50.5 -250zM479 733q0 101 27 184.5t79.5 143.5 t129 93.5t176.5 33.5q63 0 129 -16.5t125 -45.5l-62 -127q-52 26 -100.5 40t-91.5 14q-61 0 -108 -22t-79 -63.5t-48.5 -101.5t-16.5 -135q0 -78 14.5 -138t45 -101t78 -62.5t114.5 -21.5q23 0 50 3.5t55.5 9.5t56.5 14.5t53 17.5v-131q-24 -11 -48.5 -20t-51 -16 t-56.5 -10.5t-65 -3.5q-102 0 -178 33t-126.5 94t-76 146t-25.5 188z" />
+<glyph unicode="&#xaa;" horiz-adv-x="678" d="M68 989q0 102 70.5 156t213.5 59l99 4v31q0 72 -30.5 100.5t-86.5 28.5q-48 0 -93 -14.5t-87 -36.5l-48 100q51 26 109.5 44t118.5 18q125 0 184.5 -53t59.5 -175v-454h-91l-28 82q-18 -22 -37.5 -39.5t-43 -30t-51.5 -19t-63 -6.5q-43 0 -79 13t-62 38.5t-40.5 64 t-14.5 89.5zM199 987q0 -51 25 -73.5t67 -22.5q34 0 63 10.5t50.5 32.5t34 54.5t12.5 76.5v49l-74 -4q-51 -3 -85 -12t-54.5 -24t-29.5 -36.5t-9 -50.5z" />
+<glyph unicode="&#xab;" horiz-adv-x="997" d="M82 526v27l309 414l117 -78l-238 -348l238 -348l-117 -78zM489 526v27l310 414l116 -78l-237 -348l237 -348l-116 -78z" />
+<glyph unicode="&#xac;" d="M102 647v150h924v-535h-149v385h-775z" />
+<glyph unicode="&#xad;" horiz-adv-x="659" d="M82 465v168h496v-168h-496z" />
+<glyph unicode="&#xae;" horiz-adv-x="1704" d="M100 731q0 104 27 200t75.5 179.5t117.5 152.5t152.5 117.5t179.5 75.5t200 27t200 -27t179.5 -75.5t152.5 -117.5t117.5 -152.5t75.5 -179.5t27 -200t-27 -200t-75.5 -179.5t-117.5 -152t-152.5 -117.5t-179.5 -75.5t-200 -26.5t-200 26.5t-179.5 75.5t-152.5 117.5 t-117.5 152t-75.5 179.5t-27 200zM209 731q0 -133 50.5 -250t138 -204.5t204.5 -138t250 -50.5t250 50.5t204.5 138t138 204.5t50.5 250t-50.5 250t-138 204.5t-204.5 138t-250 50.5t-250 -50.5t-204.5 -138t-138 -204.5t-50.5 -250zM586 285v893h233q168 0 247 -65t79 -200 q0 -48 -13.5 -85.5t-36 -66t-51 -48.5t-59.5 -33q67 -110 120 -197q23 -37 44 -72.5t37.5 -63.5t26.5 -45l10 -17h-179l-206 352h-95v-352h-157zM743 768h72q91 0 130.5 36t39.5 105q0 74 -41.5 103.5t-130.5 29.5h-70v-274z" />
+<glyph unicode="&#xaf;" horiz-adv-x="1024" d="M-6 1556v140h1036v-140h-1036z" />
+<glyph unicode="&#xb0;" horiz-adv-x="877" d="M123 1167q0 65 25 122.5t67.5 100.5t100 68t122.5 25t122.5 -25t100.5 -68t68 -100.5t25 -122.5t-25 -122t-68 -99.5t-100.5 -67t-122.5 -24.5t-122.5 24.5t-100 67t-67.5 99.5t-25 122zM246 1167q0 -39 15 -73.5t41 -60.5t61 -41t75 -15t75 15t61.5 41t41.5 60.5 t15 73.5q0 40 -15 75.5t-41.5 62t-61.5 42t-75 15.5t-75 -15.5t-61 -42t-41 -62t-15 -75.5z" />
+<glyph unicode="&#xb1;" d="M102 0v150h924v-150h-924zM102 647v150h387v389h150v-389h387v-150h-387v-385h-150v385h-387z" />
+<glyph unicode="&#xb2;" horiz-adv-x="678" d="M49 586v112l209 228q57 62 93 104.5t56 76t27.5 63t7.5 63.5q0 65 -33 97t-87 32q-51 0 -97.5 -25t-91.5 -63l-78 94q54 48 120.5 80.5t148.5 32.5q60 0 108.5 -16.5t82.5 -48t52.5 -77t18.5 -102.5q0 -50 -14.5 -93t-41.5 -85.5t-66.5 -88t-90.5 -100.5l-148 -157h396 v-127h-572z" />
+<glyph unicode="&#xb3;" horiz-adv-x="678" d="M31 625v133q63 -34 129 -53t119 -19q98 0 142 41.5t44 114.5q0 74 -53.5 107.5t-149.5 33.5h-98v113h98q92 0 134 39.5t42 103.5q0 32 -10 55.5t-27.5 38.5t-41 22t-50.5 7q-59 0 -107.5 -20.5t-99.5 -57.5l-69 96q29 23 59.5 41.5t64.5 31.5t72 20.5t82 7.5 q69 0 121.5 -17t87.5 -47t52.5 -71.5t17.5 -90.5q0 -78 -40.5 -131t-109.5 -77q88 -23 132 -76t44 -131q0 -60 -20 -110t-61.5 -85.5t-104.5 -55.5t-149 -20q-70 0 -131.5 12.5t-118.5 43.5z" />
+<glyph unicode="&#xb4;" horiz-adv-x="1182" d="M393 1241v27q22 29 45.5 67t47 78.5t44.5 81t37 74.5h219v-21q-16 -27 -47.5 -67.5t-70 -84.5t-79 -85.5t-75.5 -69.5h-121z" />
+<glyph unicode="&#xb5;" horiz-adv-x="1217" d="M174 -492v1590h182v-707q0 -130 53 -195t164 -65q82 0 137 26t88.5 76.5t47.5 124.5t14 170v570h182v-1098h-147l-27 147h-10q-48 -83 -120 -125t-175 -42q-72 0 -125 23t-88 65q1 -38 3 -78q2 -35 2.5 -77.5t0.5 -84.5v-320h-182z" />
+<glyph unicode="&#xb6;" horiz-adv-x="1341" d="M113 1042q0 147 32.5 245.5t92 158.5t142.5 85t183 25h563v-1816h-120v1657h-207v-1657h-121v819q-61 -18 -146 -18q-95 0 -172.5 25.5t-132 84.5t-84.5 155t-30 236z" />
+<glyph unicode="&#xb7;" horiz-adv-x="549" d="M147 723q0 38 10 64.5t27 43t40 24t50 7.5q26 0 49.5 -7.5t40.5 -24t27 -43t10 -64.5q0 -37 -10 -63t-27 -43t-40.5 -25t-49.5 -8q-27 0 -50 8t-40 25t-27 43t-10 63z" />
+<glyph unicode="&#xb8;" horiz-adv-x="420" d="M35 -375q15 -3 39.5 -4.5t40.5 -1.5q71 0 111 21.5t40 70.5q0 24 -13 41.5t-36 30.5t-54.5 22.5t-68.5 18.5l90 176h121l-57 -115q34 -8 63 -21t50.5 -33.5t34 -49.5t12.5 -68q0 -97 -70.5 -151t-220.5 -54q-22 0 -44.5 3t-37.5 6v108z" />
+<glyph unicode="&#xb9;" horiz-adv-x="678" d="M63 1274l244 188h135v-876h-145v516q0 25 0.5 55t2 60t3 58t2.5 50q-14 -17 -33 -37t-41 -37l-94 -73z" />
+<glyph unicode="&#xba;" horiz-adv-x="717" d="M66 1133q0 83 20.5 147.5t58.5 108.5t92.5 67t122.5 23q62 0 115.5 -23t92.5 -67t61 -108.5t22 -147.5t-20.5 -148t-59 -109.5t-93 -68t-122.5 -23.5q-63 0 -116 23.5t-92 68t-60.5 109.5t-21.5 148zM197 1133q0 -119 37.5 -179.5t123.5 -60.5q85 0 122.5 60.5 t37.5 179.5q0 120 -37.5 177.5t-122.5 57.5q-86 0 -123.5 -57.5t-37.5 -177.5z" />
+<glyph unicode="&#xbb;" horiz-adv-x="997" d="M84 193l238 348l-238 348l117 78l309 -414v-27l-309 -411zM492 193l237 348l-237 348l116 78l310 -414v-27l-310 -411z" />
+<glyph unicode="&#xbc;" horiz-adv-x="1509" d="M63 1274l244 188h135v-876h-145v516q0 25 0.5 55t2 60t3 58t2.5 50q-14 -17 -33 -37t-41 -37l-94 -73zM234 0l811 1462h157l-811 -1462h-157zM776 193v111l377 579h141v-563h125v-127h-125v-192h-143v192h-375zM922 320h229v195q0 42 1.5 91.5t4.5 98.5q-5 -11 -15 -29.5 t-21 -39.5t-23 -41l-21 -35z" />
+<glyph unicode="&#xbd;" horiz-adv-x="1509" d="M44 1274l244 188h135v-876h-145v516q0 25 0.5 55t2 60t3 58t2.5 50q-14 -17 -33 -37t-41 -37l-94 -73zM213 0l811 1462h157l-811 -1462h-157zM868 1v112l209 228q57 62 93 104.5t56 76t27.5 63t7.5 63.5q0 65 -33 97t-87 32q-51 0 -97.5 -25t-91.5 -63l-78 94 q54 48 120.5 80.5t148.5 32.5q60 0 108.5 -16.5t82.5 -48t52.5 -77t18.5 -102.5q0 -50 -14.5 -93t-41.5 -85.5t-66.5 -88t-90.5 -100.5l-148 -157h396v-127h-572z" />
+<glyph unicode="&#xbe;" horiz-adv-x="1509" d="M31 625v133q63 -34 129 -53t119 -19q98 0 142 41.5t44 114.5q0 74 -53.5 107.5t-149.5 33.5h-98v113h98q92 0 134 39.5t42 103.5q0 32 -10 55.5t-27.5 38.5t-41 22t-50.5 7q-59 0 -107.5 -20.5t-99.5 -57.5l-69 96q29 23 59.5 41.5t64.5 31.5t72 20.5t82 7.5 q69 0 121.5 -17t87.5 -47t52.5 -71.5t17.5 -90.5q0 -78 -40.5 -131t-109.5 -77q88 -23 132 -76t44 -131q0 -60 -20 -110t-61.5 -85.5t-104.5 -55.5t-149 -20q-70 0 -131.5 12.5t-118.5 43.5zM328 0l811 1462h157l-811 -1462h-157zM843 193v111l377 579h141v-563h125v-127 h-125v-192h-143v192h-375zM989 320h229v195q0 42 1.5 91.5t4.5 98.5q-5 -11 -15 -29.5t-21 -39.5t-23 -41l-21 -35z" />
+<glyph unicode="&#xbf;" horiz-adv-x="872" d="M68 -20q0 68 13.5 120t40 97t67 87t94.5 89q52 45 85 78.5t52 64.5t26 64.5t7 76.5v19h139v-37q0 -58 -8 -103.5t-27.5 -86t-52 -78.5t-82.5 -80q-48 -41 -82 -74.5t-55.5 -68t-32 -74t-10.5 -92.5q0 -48 15 -87.5t43.5 -68t71 -44t97.5 -15.5q84 0 159 25.5t144 60.5 l64 -146q-82 -42 -176 -71t-191 -29q-93 0 -167.5 25.5t-126 73.5t-79.5 117t-28 157zM385 979q0 37 10 63t27.5 43t40.5 25t49 8q27 0 50 -8t40.5 -25t27 -43t9.5 -63q0 -38 -9.5 -64.5t-27 -43t-40.5 -24t-50 -7.5q-26 0 -49 7.5t-40.5 24t-27.5 43t-10 64.5z" />
+<glyph unicode="&#xc0;" horiz-adv-x="1245" d="M0 0l537 1468h170l538 -1468h-190l-160 453h-545l-162 -453h-188zM410 618h426l-148 424q-6 18 -14.5 44t-17.5 56t-18 62.5t-17 63.5q-7 -31 -16 -64t-18 -63.5t-17.5 -56t-14.5 -42.5zM326 1886v21h219q16 -34 37.5 -74.5t44.5 -81t47 -78.5t45 -67v-27h-120 q-35 28 -76 69.5t-79.5 85.5t-70 84.5t-47.5 67.5z" />
+<glyph unicode="&#xc1;" horiz-adv-x="1245" d="M0 0l537 1468h170l538 -1468h-190l-160 453h-545l-162 -453h-188zM410 618h426l-148 424q-6 18 -14.5 44t-17.5 56t-18 62.5t-17 63.5q-7 -31 -16 -64t-18 -63.5t-17.5 -56t-14.5 -42.5zM534 1579v27q22 29 45.5 67t47 78.5t44.5 81t37 74.5h219v-21q-16 -27 -47.5 -67.5 t-70 -84.5t-79 -85.5t-75.5 -69.5h-121z" />
+<glyph unicode="&#xc2;" horiz-adv-x="1245" d="M0 0l537 1468h170l538 -1468h-190l-160 453h-545l-162 -453h-188zM410 618h426l-148 424q-6 18 -14.5 44t-17.5 56t-18 62.5t-17 63.5q-7 -31 -16 -64t-18 -63.5t-17.5 -56t-14.5 -42.5zM289 1579v27q26 29 60 67t67.5 78.5t63 81t45.5 74.5h192q16 -34 45.5 -74.5 t63 -81t68 -78.5t59.5 -67v-27h-121q-51 34 -105 82.5t-106 103.5q-54 -55 -107 -103.5t-104 -82.5h-121z" />
+<glyph unicode="&#xc3;" horiz-adv-x="1245" d="M0 0l537 1468h170l538 -1468h-190l-160 453h-545l-162 -453h-188zM410 618h426l-148 424q-6 18 -14.5 44t-17.5 56t-18 62.5t-17 63.5q-7 -31 -16 -64t-18 -63.5t-17.5 -56t-14.5 -42.5zM264 1579q5 60 21.5 109t43 83.5t63.5 53t83 18.5q42 0 82.5 -17.5t78.5 -38.5 t72.5 -38.5t63.5 -17.5q45 0 68 26t38 88h105q-5 -60 -21.5 -108.5t-43 -83t-63.5 -53.5t-83 -19q-40 0 -79.5 17.5t-77.5 39t-73 39t-67 17.5q-45 0 -69 -26.5t-38 -88.5h-104z" />
+<glyph unicode="&#xc4;" horiz-adv-x="1245" d="M0 0l537 1468h170l538 -1468h-190l-160 453h-545l-162 -453h-188zM410 618h426l-148 424q-6 18 -14.5 44t-17.5 56t-18 62.5t-17 63.5q-7 -31 -16 -64t-18 -63.5t-17.5 -56t-14.5 -42.5zM340 1733q0 54 28 78t68 24q39 0 68 -24.5t29 -77.5t-29 -78t-68 -25q-40 0 -68 25 t-28 78zM715 1733q0 54 28 78t68 24q19 0 36.5 -6t30.5 -18.5t21 -31.5t8 -46q0 -53 -29 -78t-67 -25q-40 0 -68 25t-28 78z" />
+<glyph unicode="&#xc5;" horiz-adv-x="1245" d="M0 0l537 1468h170l538 -1468h-190l-160 453h-545l-162 -453h-188zM410 618h426l-148 424q-6 18 -14.5 44t-17.5 56t-18 62.5t-17 63.5q-7 -31 -16 -64t-18 -63.5t-17.5 -56t-14.5 -42.5zM396 1581q0 51 16 90.5t45.5 67.5t70.5 42.5t91 14.5q48 0 90 -14.5t73 -42 t48.5 -67t17.5 -89.5q0 -51 -17.5 -91.5t-48 -68.5t-72.5 -42.5t-91 -14.5q-50 0 -91 14.5t-70.5 42.5t-45.5 67.5t-16 90.5zM506 1581q0 -53 28.5 -83t84.5 -30q49 0 80.5 30t31.5 83t-31.5 83t-80.5 30q-50 0 -81.5 -30t-31.5 -83z" />
+<glyph unicode="&#xc6;" horiz-adv-x="1745" d="M-2 0l655 1462h969v-164h-573v-452h534v-162h-534v-520h573v-164h-760v453h-475l-203 -453h-186zM459 618h403v680h-108z" />
+<glyph unicode="&#xc7;" horiz-adv-x="1235" d="M125 733q0 166 43.5 304t128 237t209.5 154t287 55q108 0 206 -22t177 -64l-78 -156q-63 32 -137 55t-168 23q-107 0 -194 -40.5t-148.5 -116.5t-95 -185t-33.5 -246q0 -141 29.5 -250.5t88.5 -184.5t147 -114t206 -39q89 0 169 17.5t158 40.5v-162q-39 -15 -78 -26.5 t-81.5 -18.5t-91 -10.5t-107.5 -3.5q-164 0 -284 54t-198.5 153t-116.5 238t-38 308zM543 -375q15 -3 39.5 -4.5t40.5 -1.5q71 0 111 21.5t40 70.5q0 24 -13 41.5t-36 30.5t-54.5 22.5t-68.5 18.5l90 176h121l-57 -115q34 -8 63 -21t50.5 -33.5t34 -49.5t12.5 -68 q0 -97 -70.5 -151t-220.5 -54q-22 0 -44.5 3t-37.5 6v108z" />
+<glyph unicode="&#xc8;" horiz-adv-x="1081" d="M199 0v1462h759v-164h-573v-452h535v-162h-535v-520h573v-164h-759zM320 1886v21h219q16 -34 37.5 -74.5t44.5 -81t47 -78.5t45 -67v-27h-120q-35 28 -76 69.5t-79.5 85.5t-70 84.5t-47.5 67.5z" />
+<glyph unicode="&#xc9;" horiz-adv-x="1081" d="M199 0v1462h759v-164h-573v-452h535v-162h-535v-520h573v-164h-759zM456 1579v27q22 29 45.5 67t47 78.5t44.5 81t37 74.5h219v-21q-16 -27 -47.5 -67.5t-70 -84.5t-79 -85.5t-75.5 -69.5h-121z" />
+<glyph unicode="&#xca;" horiz-adv-x="1081" d="M199 0v1462h759v-164h-573v-452h535v-162h-535v-520h573v-164h-759zM243 1579v27q26 29 60 67t67.5 78.5t63 81t45.5 74.5h192q16 -34 45.5 -74.5t63 -81t68 -78.5t59.5 -67v-27h-121q-51 34 -105 82.5t-106 103.5q-54 -55 -107 -103.5t-104 -82.5h-121z" />
+<glyph unicode="&#xcb;" horiz-adv-x="1081" d="M199 0v1462h759v-164h-573v-452h535v-162h-535v-520h573v-164h-759zM296 1733q0 54 28 78t68 24q39 0 68 -24.5t29 -77.5t-29 -78t-68 -25q-40 0 -68 25t-28 78zM671 1733q0 54 28 78t68 24q19 0 36.5 -6t30.5 -18.5t21 -31.5t8 -46q0 -53 -29 -78t-67 -25q-40 0 -68 25 t-28 78z" />
+<glyph unicode="&#xcc;" horiz-adv-x="694" d="M82 0v102l172 41v1176l-172 41v102h530v-102l-172 -41v-1176l172 -41v-102h-530zM62 1886v21h219q16 -34 37.5 -74.5t44.5 -81t47 -78.5t45 -67v-27h-120q-35 28 -76 69.5t-79.5 85.5t-70 84.5t-47.5 67.5z" />
+<glyph unicode="&#xcd;" horiz-adv-x="694" d="M82 0v102l172 41v1176l-172 41v102h530v-102l-172 -41v-1176l172 -41v-102h-530zM257 1579v27q22 29 45.5 67t47 78.5t44.5 81t37 74.5h219v-21q-16 -27 -47.5 -67.5t-70 -84.5t-79 -85.5t-75.5 -69.5h-121z" />
+<glyph unicode="&#xce;" horiz-adv-x="694" d="M82 0v102l172 41v1176l-172 41v102h530v-102l-172 -41v-1176l172 -41v-102h-530zM17 1579v27q26 29 60 67t67.5 78.5t63 81t45.5 74.5h192q16 -34 45.5 -74.5t63 -81t68 -78.5t59.5 -67v-27h-121q-51 34 -105 82.5t-106 103.5q-54 -55 -107 -103.5t-104 -82.5h-121z" />
+<glyph unicode="&#xcf;" horiz-adv-x="694" d="M82 0v102l172 41v1176l-172 41v102h530v-102l-172 -41v-1176l172 -41v-102h-530zM64 1733q0 54 28 78t68 24q39 0 68 -24.5t29 -77.5t-29 -78t-68 -25q-40 0 -68 25t-28 78zM439 1733q0 54 28 78t68 24q19 0 36.5 -6t30.5 -18.5t21 -31.5t8 -46q0 -53 -29 -78t-67 -25 q-40 0 -68 25t-28 78z" />
+<glyph unicode="&#xd0;" horiz-adv-x="1401" d="M47 643v162h152v657h407q153 0 277 -46t211 -136.5t134.5 -224.5t47.5 -310q0 -185 -48 -324.5t-139 -233t-223.5 -140.5t-300.5 -47h-366v643h-152zM385 160h162q264 0 398 146t134 433q0 146 -33 252.5t-96 175.5t-155 102.5t-209 33.5h-201v-498h336v-162h-336v-483z " />
+<glyph unicode="&#xd1;" horiz-adv-x="1493" d="M199 0v1462h213l716 -1204h7q-3 76 -7 150q0 32 -2 66l-4 66q-2 34 -2 65v57v800h174v-1462h-215l-719 1210h-8q6 -77 10 -153q4 -65 6.5 -136t2.5 -128v-793h-172zM397 1579q5 60 21.5 109t43 83.5t63.5 53t83 18.5q42 0 82.5 -17.5t78.5 -38.5t72.5 -38.5t63.5 -17.5 q45 0 68 26t38 88h105q-5 -60 -21.5 -108.5t-43 -83t-63.5 -53.5t-83 -19q-40 0 -79.5 17.5t-77.5 39t-73 39t-67 17.5q-45 0 -69 -26.5t-38 -88.5h-104z" />
+<glyph unicode="&#xd2;" horiz-adv-x="1520" d="M125 735q0 170 38 308.5t117 236.5t199 151.5t283 53.5q155 0 272.5 -53.5t197.5 -152t120.5 -237t40.5 -309.5q0 -169 -40.5 -308t-120.5 -238t-198.5 -153t-273.5 -54q-163 0 -282.5 54t-198 153t-116.5 238.5t-38 309.5zM322 733q0 -137 26 -246.5t79.5 -186t136 -117 t196.5 -40.5t196.5 40.5t136 117t78.5 186t25 246.5q0 138 -25 247t-78 184.5t-135 116t-196 40.5t-197 -40.5t-137 -116t-80 -184.5t-26 -247zM477 1886v21h219q16 -34 37.5 -74.5t44.5 -81t47 -78.5t45 -67v-27h-120q-35 28 -76 69.5t-79.5 85.5t-70 84.5t-47.5 67.5z" />
+<glyph unicode="&#xd3;" horiz-adv-x="1520" d="M125 735q0 170 38 308.5t117 236.5t199 151.5t283 53.5q155 0 272.5 -53.5t197.5 -152t120.5 -237t40.5 -309.5q0 -169 -40.5 -308t-120.5 -238t-198.5 -153t-273.5 -54q-163 0 -282.5 54t-198 153t-116.5 238.5t-38 309.5zM322 733q0 -137 26 -246.5t79.5 -186t136 -117 t196.5 -40.5t196.5 40.5t136 117t78.5 186t25 246.5q0 138 -25 247t-78 184.5t-135 116t-196 40.5t-197 -40.5t-137 -116t-80 -184.5t-26 -247zM651 1579v27q22 29 45.5 67t47 78.5t44.5 81t37 74.5h219v-21q-16 -27 -47.5 -67.5t-70 -84.5t-79 -85.5t-75.5 -69.5h-121z" />
+<glyph unicode="&#xd4;" horiz-adv-x="1520" d="M125 735q0 170 38 308.5t117 236.5t199 151.5t283 53.5q155 0 272.5 -53.5t197.5 -152t120.5 -237t40.5 -309.5q0 -169 -40.5 -308t-120.5 -238t-198.5 -153t-273.5 -54q-163 0 -282.5 54t-198 153t-116.5 238.5t-38 309.5zM322 733q0 -137 26 -246.5t79.5 -186t136 -117 t196.5 -40.5t196.5 40.5t136 117t78.5 186t25 246.5q0 138 -25 247t-78 184.5t-135 116t-196 40.5t-197 -40.5t-137 -116t-80 -184.5t-26 -247zM432 1579v27q26 29 60 67t67.5 78.5t63 81t45.5 74.5h192q16 -34 45.5 -74.5t63 -81t68 -78.5t59.5 -67v-27h-121 q-51 34 -105 82.5t-106 103.5q-54 -55 -107 -103.5t-104 -82.5h-121z" />
+<glyph unicode="&#xd5;" horiz-adv-x="1520" d="M125 735q0 170 38 308.5t117 236.5t199 151.5t283 53.5q155 0 272.5 -53.5t197.5 -152t120.5 -237t40.5 -309.5q0 -169 -40.5 -308t-120.5 -238t-198.5 -153t-273.5 -54q-163 0 -282.5 54t-198 153t-116.5 238.5t-38 309.5zM322 733q0 -137 26 -246.5t79.5 -186t136 -117 t196.5 -40.5t196.5 40.5t136 117t78.5 186t25 246.5q0 138 -25 247t-78 184.5t-135 116t-196 40.5t-197 -40.5t-137 -116t-80 -184.5t-26 -247zM383 1579q5 60 21.5 109t43 83.5t63.5 53t83 18.5q42 0 82.5 -17.5t78.5 -38.5t72.5 -38.5t63.5 -17.5q45 0 68 26t38 88h105 q-5 -60 -21.5 -108.5t-43 -83t-63.5 -53.5t-83 -19q-40 0 -79.5 17.5t-77.5 39t-73 39t-67 17.5q-45 0 -69 -26.5t-38 -88.5h-104z" />
+<glyph unicode="&#xd6;" horiz-adv-x="1520" d="M125 735q0 170 38 308.5t117 236.5t199 151.5t283 53.5q155 0 272.5 -53.5t197.5 -152t120.5 -237t40.5 -309.5q0 -169 -40.5 -308t-120.5 -238t-198.5 -153t-273.5 -54q-163 0 -282.5 54t-198 153t-116.5 238.5t-38 309.5zM322 733q0 -137 26 -246.5t79.5 -186t136 -117 t196.5 -40.5t196.5 40.5t136 117t78.5 186t25 246.5q0 138 -25 247t-78 184.5t-135 116t-196 40.5t-197 -40.5t-137 -116t-80 -184.5t-26 -247zM477 1733q0 54 28 78t68 24q39 0 68 -24.5t29 -77.5t-29 -78t-68 -25q-40 0 -68 25t-28 78zM852 1733q0 54 28 78t68 24 q19 0 36.5 -6t30.5 -18.5t21 -31.5t8 -46q0 -53 -29 -78t-67 -25q-40 0 -68 25t-28 78z" />
+<glyph unicode="&#xd7;" d="M141 1042l105 105l317 -318l322 318l104 -103l-321 -321l319 -320l-102 -102l-322 317l-317 -315l-103 103l316 317z" />
+<glyph unicode="&#xd8;" horiz-adv-x="1520" d="M125 735q0 170 38 308.5t117 236.5t199 151.5t283 53.5q94 0 174.5 -21t146.5 -59l80 127l137 -78l-92 -149q91 -99 138 -244t47 -328q0 -169 -40.5 -308t-120.5 -238t-198.5 -153t-273.5 -54q-189 0 -322 71l-78 -127l-137 78l90 145q-97 100 -142.5 249t-45.5 339z M322 733q0 -131 23 -235.5t71 -182.5l579 945q-48 29 -105 45t-128 16q-114 0 -197 -40.5t-137 -116t-80 -184.5t-26 -247zM530 201q47 -28 104 -43t126 -15q114 0 196.5 40.5t136 117t78.5 186t25 246.5q0 257 -88 408z" />
+<glyph unicode="&#xd9;" horiz-adv-x="1430" d="M184 520v942h187v-952q0 -175 86.5 -271t261.5 -96q89 0 153 27t105 76t61 117t21 149v952h186v-948q0 -114 -33 -212t-99.5 -170t-167 -113t-236.5 -41q-128 0 -226 38.5t-164.5 109.5t-100.5 170.5t-34 221.5zM454 1886v21h219q16 -34 37.5 -74.5t44.5 -81t47 -78.5 t45 -67v-27h-120q-35 28 -76 69.5t-79.5 85.5t-70 84.5t-47.5 67.5z" />
+<glyph unicode="&#xda;" horiz-adv-x="1430" d="M184 520v942h187v-952q0 -175 86.5 -271t261.5 -96q89 0 153 27t105 76t61 117t21 149v952h186v-948q0 -114 -33 -212t-99.5 -170t-167 -113t-236.5 -41q-128 0 -226 38.5t-164.5 109.5t-100.5 170.5t-34 221.5zM590 1579v27q22 29 45.5 67t47 78.5t44.5 81t37 74.5h219 v-21q-16 -27 -47.5 -67.5t-70 -84.5t-79 -85.5t-75.5 -69.5h-121z" />
+<glyph unicode="&#xdb;" horiz-adv-x="1430" d="M184 520v942h187v-952q0 -175 86.5 -271t261.5 -96q89 0 153 27t105 76t61 117t21 149v952h186v-948q0 -114 -33 -212t-99.5 -170t-167 -113t-236.5 -41q-128 0 -226 38.5t-164.5 109.5t-100.5 170.5t-34 221.5zM379 1579v27q26 29 60 67t67.5 78.5t63 81t45.5 74.5h192 q16 -34 45.5 -74.5t63 -81t68 -78.5t59.5 -67v-27h-121q-51 34 -105 82.5t-106 103.5q-54 -55 -107 -103.5t-104 -82.5h-121z" />
+<glyph unicode="&#xdc;" horiz-adv-x="1430" d="M184 520v942h187v-952q0 -175 86.5 -271t261.5 -96q89 0 153 27t105 76t61 117t21 149v952h186v-948q0 -114 -33 -212t-99.5 -170t-167 -113t-236.5 -41q-128 0 -226 38.5t-164.5 109.5t-100.5 170.5t-34 221.5zM432 1733q0 54 28 78t68 24q39 0 68 -24.5t29 -77.5 t-29 -78t-68 -25q-40 0 -68 25t-28 78zM807 1733q0 54 28 78t68 24q19 0 36.5 -6t30.5 -18.5t21 -31.5t8 -46q0 -53 -29 -78t-67 -25q-40 0 -68 25t-28 78z" />
+<glyph unicode="&#xdd;" horiz-adv-x="1079" d="M0 1462h203l336 -739l340 739h200l-446 -893v-569h-187v559zM442 1579v27q22 29 45.5 67t47 78.5t44.5 81t37 74.5h219v-21q-16 -27 -47.5 -67.5t-70 -84.5t-79 -85.5t-75.5 -69.5h-121z" />
+<glyph unicode="&#xde;" horiz-adv-x="1180" d="M199 0v1462h186v-252h176q134 0 231 -28.5t160 -83t93 -134.5t30 -182q0 -91 -27.5 -175t-90.5 -148.5t-166.5 -103t-255.5 -38.5h-150v-317h-186zM385 475h129q93 0 162.5 16t115 51.5t68.5 92t23 137.5q0 143 -82 211t-256 68h-160v-576z" />
+<glyph unicode="&#xdf;" horiz-adv-x="1233" d="M174 0v1200q0 104 31.5 174.5t88 113t134.5 61t170 18.5t168 -19t130 -57t84 -96t30 -135q0 -57 -21.5 -101.5t-53 -81t-69 -66.5t-69 -57.5t-53 -54.5t-21.5 -57q0 -21 7 -37.5t26.5 -36t54.5 -44t92 -62.5q56 -37 100 -73t74.5 -77t47 -89t16.5 -110q0 -87 -28 -150 t-78.5 -103.5t-121 -60t-155.5 -19.5q-97 0 -166.5 17.5t-122.5 51.5v166q26 -16 58.5 -31.5t68.5 -27.5t74 -19.5t75 -7.5q56 0 96.5 12.5t66.5 35t38 54.5t12 72q0 36 -8.5 65.5t-30 57.5t-57.5 57t-92 64q-63 40 -105.5 74t-69 67.5t-37.5 68.5t-11 77q0 54 20.5 93.5 t51.5 71t67 58.5t67 56t51.5 62.5t20.5 77.5q0 42 -16.5 73t-46.5 51.5t-71.5 30t-92.5 9.5q-49 0 -93 -9.5t-77 -33.5t-52.5 -65.5t-19.5 -106.5v-1202h-182z" />
+<glyph unicode="&#xe0;" horiz-adv-x="1087" d="M94 307q0 164 115.5 252t351.5 96l184 7v69q0 67 -14.5 112t-42 72.5t-68 39.5t-92.5 12q-83 0 -154.5 -24t-137.5 -58l-64 137q74 40 165 68t191 28q102 0 176.5 -20.5t123 -65t72.5 -113.5t24 -167v-752h-131l-37 152h-8q-33 -45 -66 -77.5t-72 -53.5t-87 -31t-111 -10 q-69 0 -127 19.5t-100.5 60t-66.5 102t-24 145.5zM283 305q0 -92 48.5 -135t127.5 -43q61 0 113 19t90 57.5t59.5 97t21.5 137.5v99l-143 -7q-90 -4 -151 -20t-97.5 -44.5t-52.5 -69t-16 -91.5zM285 1548v21h219q16 -34 37.5 -74.5t44.5 -81t47 -78.5t45 -67v-27h-120 q-35 28 -76 69.5t-79.5 85.5t-70 84.5t-47.5 67.5z" />
+<glyph unicode="&#xe1;" horiz-adv-x="1087" d="M94 307q0 164 115.5 252t351.5 96l184 7v69q0 67 -14.5 112t-42 72.5t-68 39.5t-92.5 12q-83 0 -154.5 -24t-137.5 -58l-64 137q74 40 165 68t191 28q102 0 176.5 -20.5t123 -65t72.5 -113.5t24 -167v-752h-131l-37 152h-8q-33 -45 -66 -77.5t-72 -53.5t-87 -31t-111 -10 q-69 0 -127 19.5t-100.5 60t-66.5 102t-24 145.5zM283 305q0 -92 48.5 -135t127.5 -43q61 0 113 19t90 57.5t59.5 97t21.5 137.5v99l-143 -7q-90 -4 -151 -20t-97.5 -44.5t-52.5 -69t-16 -91.5zM446 1241v27q22 29 45.5 67t47 78.5t44.5 81t37 74.5h219v-21 q-16 -27 -47.5 -67.5t-70 -84.5t-79 -85.5t-75.5 -69.5h-121z" />
+<glyph unicode="&#xe2;" horiz-adv-x="1087" d="M94 307q0 164 115.5 252t351.5 96l184 7v69q0 67 -14.5 112t-42 72.5t-68 39.5t-92.5 12q-83 0 -154.5 -24t-137.5 -58l-64 137q74 40 165 68t191 28q102 0 176.5 -20.5t123 -65t72.5 -113.5t24 -167v-752h-131l-37 152h-8q-33 -45 -66 -77.5t-72 -53.5t-87 -31t-111 -10 q-69 0 -127 19.5t-100.5 60t-66.5 102t-24 145.5zM283 305q0 -92 48.5 -135t127.5 -43q61 0 113 19t90 57.5t59.5 97t21.5 137.5v99l-143 -7q-90 -4 -151 -20t-97.5 -44.5t-52.5 -69t-16 -91.5zM228 1241v27q26 29 60 67t67.5 78.5t63 81t45.5 74.5h192q16 -34 45.5 -74.5 t63 -81t68 -78.5t59.5 -67v-27h-121q-51 34 -105 82.5t-106 103.5q-54 -55 -107 -103.5t-104 -82.5h-121z" />
+<glyph unicode="&#xe3;" horiz-adv-x="1087" d="M94 307q0 164 115.5 252t351.5 96l184 7v69q0 67 -14.5 112t-42 72.5t-68 39.5t-92.5 12q-83 0 -154.5 -24t-137.5 -58l-64 137q74 40 165 68t191 28q102 0 176.5 -20.5t123 -65t72.5 -113.5t24 -167v-752h-131l-37 152h-8q-33 -45 -66 -77.5t-72 -53.5t-87 -31t-111 -10 q-69 0 -127 19.5t-100.5 60t-66.5 102t-24 145.5zM283 305q0 -92 48.5 -135t127.5 -43q61 0 113 19t90 57.5t59.5 97t21.5 137.5v99l-143 -7q-90 -4 -151 -20t-97.5 -44.5t-52.5 -69t-16 -91.5zM191 1241q5 60 21.5 109t43 83.5t63.5 53t83 18.5q42 0 82.5 -17.5t78.5 -38.5 t72.5 -38.5t63.5 -17.5q45 0 68 26t38 88h105q-5 -60 -21.5 -108.5t-43 -83t-63.5 -53.5t-83 -19q-40 0 -79.5 17.5t-77.5 39t-73 39t-67 17.5q-45 0 -69 -26.5t-38 -88.5h-104z" />
+<glyph unicode="&#xe4;" horiz-adv-x="1087" d="M94 307q0 164 115.5 252t351.5 96l184 7v69q0 67 -14.5 112t-42 72.5t-68 39.5t-92.5 12q-83 0 -154.5 -24t-137.5 -58l-64 137q74 40 165 68t191 28q102 0 176.5 -20.5t123 -65t72.5 -113.5t24 -167v-752h-131l-37 152h-8q-33 -45 -66 -77.5t-72 -53.5t-87 -31t-111 -10 q-69 0 -127 19.5t-100.5 60t-66.5 102t-24 145.5zM283 305q0 -92 48.5 -135t127.5 -43q61 0 113 19t90 57.5t59.5 97t21.5 137.5v99l-143 -7q-90 -4 -151 -20t-97.5 -44.5t-52.5 -69t-16 -91.5zM273 1395q0 54 28 78t68 24q39 0 68 -24.5t29 -77.5t-29 -78t-68 -25 q-40 0 -68 25t-28 78zM648 1395q0 54 28 78t68 24q19 0 36.5 -6t30.5 -18.5t21 -31.5t8 -46q0 -53 -29 -78t-67 -25q-40 0 -68 25t-28 78z" />
+<glyph unicode="&#xe5;" horiz-adv-x="1087" d="M94 307q0 164 115.5 252t351.5 96l184 7v69q0 67 -14.5 112t-42 72.5t-68 39.5t-92.5 12q-83 0 -154.5 -24t-137.5 -58l-64 137q74 40 165 68t191 28q102 0 176.5 -20.5t123 -65t72.5 -113.5t24 -167v-752h-131l-37 152h-8q-33 -45 -66 -77.5t-72 -53.5t-87 -31t-111 -10 q-69 0 -127 19.5t-100.5 60t-66.5 102t-24 145.5zM283 305q0 -92 48.5 -135t127.5 -43q61 0 113 19t90 57.5t59.5 97t21.5 137.5v99l-143 -7q-90 -4 -151 -20t-97.5 -44.5t-52.5 -69t-16 -91.5zM331 1456q0 51 16 90.5t45.5 67.5t70.5 42.5t91 14.5q48 0 90 -14.5t73 -42 t48.5 -67t17.5 -89.5q0 -51 -17.5 -91.5t-48 -68.5t-72.5 -42.5t-91 -14.5q-50 0 -91 14.5t-70.5 42.5t-45.5 67.5t-16 90.5zM441 1456q0 -53 28.5 -83t84.5 -30q49 0 80.5 30t31.5 83t-31.5 83t-80.5 30q-50 0 -81.5 -30t-31.5 -83z" />
+<glyph unicode="&#xe6;" horiz-adv-x="1706" d="M94 307q0 164 115.5 252t351.5 96l184 7v69q0 67 -14.5 112t-42 72.5t-68 39.5t-92.5 12q-83 0 -154.5 -24t-137.5 -58l-64 137q74 40 165 68t191 28q131 0 214 -42.5t126 -135.5q51 85 134 131.5t186 46.5q97 0 174 -35.5t131 -100t82.5 -155t28.5 -200.5v-113h-672 q5 -193 78.5 -284t220.5 -91q49 0 91.5 5t81.5 14.5t76 24t74 32.5v-162q-39 -19 -76.5 -33t-77 -23t-82 -13t-91.5 -4q-138 0 -239 57t-163 172q-34 -54 -72 -96.5t-85.5 -72t-105.5 -45t-132 -15.5q-71 0 -132.5 19.5t-106.5 60t-71 102t-26 145.5zM283 305 q0 -92 48.5 -135t127.5 -43q61 0 113 19t90 57.5t59.5 97t21.5 137.5v99l-143 -7q-90 -4 -151 -20t-97.5 -44.5t-52.5 -69t-16 -91.5zM936 662h471q0 68 -13 124.5t-40.5 96.5t-69.5 62t-100 22q-110 0 -173.5 -78t-74.5 -227z" />
+<glyph unicode="&#xe7;" horiz-adv-x="948" d="M113 543q0 157 38 266.5t104.5 178t155.5 99.5t191 31q78 0 152.5 -17t124.5 -42l-54 -154q-23 10 -51 19.5t-58 17t-59 12t-55 4.5q-157 0 -229 -100.5t-72 -312.5q0 -211 72.5 -308.5t220.5 -97.5q81 0 146.5 18.5t119.5 43.5v-162q-54 -29 -115.5 -44t-150.5 -15 q-101 0 -189 31.5t-153 100t-102 175t-37 256.5zM357 -375q15 -3 39.5 -4.5t40.5 -1.5q71 0 111 21.5t40 70.5q0 24 -13 41.5t-36 30.5t-54.5 22.5t-68.5 18.5l90 176h121l-57 -115q34 -8 63 -21t50.5 -33.5t34 -49.5t12.5 -68q0 -97 -70.5 -151t-220.5 -54q-22 0 -44.5 3 t-37.5 6v108z" />
+<glyph unicode="&#xe8;" horiz-adv-x="1096" d="M113 541q0 136 33 243t93 181.5t143.5 113.5t184.5 39q99 0 178 -35.5t134 -100t84.5 -155t29.5 -200.5v-113h-692q5 -193 81.5 -284t227.5 -91q51 0 94.5 5t84 14.5t78.5 24t77 32.5v-162q-40 -19 -78.5 -33t-79 -23t-84 -13t-94.5 -4q-110 0 -201 37t-156.5 108 t-101.5 176t-36 240zM305 662h492q0 68 -13.5 124.5t-42 96.5t-72.5 62t-106 22q-114 0 -180.5 -78t-77.5 -227zM285 1548v21h219q16 -34 37.5 -74.5t44.5 -81t47 -78.5t45 -67v-27h-120q-35 28 -76 69.5t-79.5 85.5t-70 84.5t-47.5 67.5z" />
+<glyph unicode="&#xe9;" horiz-adv-x="1096" d="M113 541q0 136 33 243t93 181.5t143.5 113.5t184.5 39q99 0 178 -35.5t134 -100t84.5 -155t29.5 -200.5v-113h-692q5 -193 81.5 -284t227.5 -91q51 0 94.5 5t84 14.5t78.5 24t77 32.5v-162q-40 -19 -78.5 -33t-79 -23t-84 -13t-94.5 -4q-110 0 -201 37t-156.5 108 t-101.5 176t-36 240zM305 662h492q0 68 -13.5 124.5t-42 96.5t-72.5 62t-106 22q-114 0 -180.5 -78t-77.5 -227zM475 1241v27q22 29 45.5 67t47 78.5t44.5 81t37 74.5h219v-21q-16 -27 -47.5 -67.5t-70 -84.5t-79 -85.5t-75.5 -69.5h-121z" />
+<glyph unicode="&#xea;" horiz-adv-x="1096" d="M113 541q0 136 33 243t93 181.5t143.5 113.5t184.5 39q99 0 178 -35.5t134 -100t84.5 -155t29.5 -200.5v-113h-692q5 -193 81.5 -284t227.5 -91q51 0 94.5 5t84 14.5t78.5 24t77 32.5v-162q-40 -19 -78.5 -33t-79 -23t-84 -13t-94.5 -4q-110 0 -201 37t-156.5 108 t-101.5 176t-36 240zM305 662h492q0 68 -13.5 124.5t-42 96.5t-72.5 62t-106 22q-114 0 -180.5 -78t-77.5 -227zM224 1241v27q26 29 60 67t67.5 78.5t63 81t45.5 74.5h192q16 -34 45.5 -74.5t63 -81t68 -78.5t59.5 -67v-27h-121q-51 34 -105 82.5t-106 103.5 q-54 -55 -107 -103.5t-104 -82.5h-121z" />
+<glyph unicode="&#xeb;" horiz-adv-x="1096" d="M113 541q0 136 33 243t93 181.5t143.5 113.5t184.5 39q99 0 178 -35.5t134 -100t84.5 -155t29.5 -200.5v-113h-692q5 -193 81.5 -284t227.5 -91q51 0 94.5 5t84 14.5t78.5 24t77 32.5v-162q-40 -19 -78.5 -33t-79 -23t-84 -13t-94.5 -4q-110 0 -201 37t-156.5 108 t-101.5 176t-36 240zM305 662h492q0 68 -13.5 124.5t-42 96.5t-72.5 62t-106 22q-114 0 -180.5 -78t-77.5 -227zM269 1395q0 54 28 78t68 24q39 0 68 -24.5t29 -77.5t-29 -78t-68 -25q-40 0 -68 25t-28 78zM644 1395q0 54 28 78t68 24q19 0 36.5 -6t30.5 -18.5t21 -31.5 t8 -46q0 -53 -29 -78t-67 -25q-40 0 -68 25t-28 78z" />
+<glyph unicode="&#xec;" horiz-adv-x="530" d="M174 0v1098h182v-1098h-182zM-34 1548v21h219q16 -34 37.5 -74.5t44.5 -81t47 -78.5t45 -67v-27h-120q-35 28 -76 69.5t-79.5 85.5t-70 84.5t-47.5 67.5z" />
+<glyph unicode="&#xed;" horiz-adv-x="530" d="M174 0v1098h182v-1098h-182zM185 1241v27q22 29 45.5 67t47 78.5t44.5 81t37 74.5h219v-21q-16 -27 -47.5 -67.5t-70 -84.5t-79 -85.5t-75.5 -69.5h-121z" />
+<glyph unicode="&#xee;" horiz-adv-x="530" d="M174 0v1098h182v-1098h-182zM-67 1241v27q26 29 60 67t67.5 78.5t63 81t45.5 74.5h192q16 -34 45.5 -74.5t63 -81t68 -78.5t59.5 -67v-27h-121q-51 34 -105 82.5t-106 103.5q-54 -55 -107 -103.5t-104 -82.5h-121z" />
+<glyph unicode="&#xef;" horiz-adv-x="530" d="M174 0v1098h182v-1098h-182zM-18 1395q0 54 28 78t68 24q39 0 68 -24.5t29 -77.5t-29 -78t-68 -25q-40 0 -68 25t-28 78zM357 1395q0 54 28 78t68 24q19 0 36.5 -6t30.5 -18.5t21 -31.5t8 -46q0 -53 -29 -78t-67 -25q-40 0 -68 25t-28 78z" />
+<glyph unicode="&#xf0;" horiz-adv-x="1182" d="M111 477q0 119 31.5 211t90.5 155t143 95.5t189 32.5q102 0 179 -29.5t120 -89.5l8 4q-31 118 -91 214t-150 177l-256 -153l-74 114l217 131q-40 28 -82.5 55.5t-89.5 53.5l70 123q65 -32 126 -68t120 -80l227 138l74 -113l-195 -117q67 -65 122.5 -143t95 -171.5 t61.5 -204t22 -239.5q0 -142 -33.5 -252t-96 -186t-151.5 -115.5t-200 -39.5q-104 0 -191.5 33t-151 96.5t-99 156t-35.5 211.5zM303 471q0 -76 16.5 -138.5t52 -107.5t90 -69.5t130.5 -24.5q154 0 221.5 99.5t67.5 295.5q0 56 -17 109.5t-52 94.5t-90 66t-130 25 q-77 0 -131.5 -23t-89.5 -67t-51.5 -109.5t-16.5 -150.5z" />
+<glyph unicode="&#xf1;" horiz-adv-x="1206" d="M174 0v1098h148l26 -148h10q25 43 59.5 74.5t75.5 52.5t87 31t94 10q183 0 275.5 -95.5t92.5 -305.5v-717h-182v707q0 130 -52.5 195t-164.5 65q-81 0 -136 -26t-88.5 -77t-48 -125t-14.5 -170v-569h-182zM251 1241q5 60 21.5 109t43 83.5t63.5 53t83 18.5 q42 0 82.5 -17.5t78.5 -38.5t72.5 -38.5t63.5 -17.5q45 0 68 26t38 88h105q-5 -60 -21.5 -108.5t-43 -83t-63.5 -53.5t-83 -19q-40 0 -79.5 17.5t-77.5 39t-73 39t-67 17.5q-45 0 -69 -26.5t-38 -88.5h-104z" />
+<glyph unicode="&#xf2;" horiz-adv-x="1182" d="M113 551q0 136 33.5 241.5t95.5 178t151.5 110t200.5 37.5q103 0 190 -37.5t150.5 -110t99 -178t35.5 -241.5q0 -137 -33.5 -243.5t-96 -179t-151.5 -110.5t-200 -38q-103 0 -190 38t-150.5 110.5t-99 179t-35.5 243.5zM301 551q0 -209 68.5 -314.5t222.5 -105.5 t221.5 105.5t67.5 314.5t-68.5 312.5t-222.5 103.5t-221.5 -103.5t-67.5 -312.5zM353 1548v21h219q16 -34 37.5 -74.5t44.5 -81t47 -78.5t45 -67v-27h-120q-35 28 -76 69.5t-79.5 85.5t-70 84.5t-47.5 67.5z" />
+<glyph unicode="&#xf3;" horiz-adv-x="1182" d="M113 551q0 136 33.5 241.5t95.5 178t151.5 110t200.5 37.5q103 0 190 -37.5t150.5 -110t99 -178t35.5 -241.5q0 -137 -33.5 -243.5t-96 -179t-151.5 -110.5t-200 -38q-103 0 -190 38t-150.5 110.5t-99 179t-35.5 243.5zM301 551q0 -209 68.5 -314.5t222.5 -105.5 t221.5 105.5t67.5 314.5t-68.5 312.5t-222.5 103.5t-221.5 -103.5t-67.5 -312.5zM473 1241v27q22 29 45.5 67t47 78.5t44.5 81t37 74.5h219v-21q-16 -27 -47.5 -67.5t-70 -84.5t-79 -85.5t-75.5 -69.5h-121z" />
+<glyph unicode="&#xf4;" horiz-adv-x="1182" d="M113 551q0 136 33.5 241.5t95.5 178t151.5 110t200.5 37.5q103 0 190 -37.5t150.5 -110t99 -178t35.5 -241.5q0 -137 -33.5 -243.5t-96 -179t-151.5 -110.5t-200 -38q-103 0 -190 38t-150.5 110.5t-99 179t-35.5 243.5zM301 551q0 -209 68.5 -314.5t222.5 -105.5 t221.5 105.5t67.5 314.5t-68.5 312.5t-222.5 103.5t-221.5 -103.5t-67.5 -312.5zM253 1241v27q26 29 60 67t67.5 78.5t63 81t45.5 74.5h192q16 -34 45.5 -74.5t63 -81t68 -78.5t59.5 -67v-27h-121q-51 34 -105 82.5t-106 103.5q-54 -55 -107 -103.5t-104 -82.5h-121z" />
+<glyph unicode="&#xf5;" horiz-adv-x="1182" d="M113 551q0 136 33.5 241.5t95.5 178t151.5 110t200.5 37.5q103 0 190 -37.5t150.5 -110t99 -178t35.5 -241.5q0 -137 -33.5 -243.5t-96 -179t-151.5 -110.5t-200 -38q-103 0 -190 38t-150.5 110.5t-99 179t-35.5 243.5zM301 551q0 -209 68.5 -314.5t222.5 -105.5 t221.5 105.5t67.5 314.5t-68.5 312.5t-222.5 103.5t-221.5 -103.5t-67.5 -312.5zM228 1241q5 60 21.5 109t43 83.5t63.5 53t83 18.5q42 0 82.5 -17.5t78.5 -38.5t72.5 -38.5t63.5 -17.5q45 0 68 26t38 88h105q-5 -60 -21.5 -108.5t-43 -83t-63.5 -53.5t-83 -19 q-40 0 -79.5 17.5t-77.5 39t-73 39t-67 17.5q-45 0 -69 -26.5t-38 -88.5h-104z" />
+<glyph unicode="&#xf6;" horiz-adv-x="1182" d="M113 551q0 136 33.5 241.5t95.5 178t151.5 110t200.5 37.5q103 0 190 -37.5t150.5 -110t99 -178t35.5 -241.5q0 -137 -33.5 -243.5t-96 -179t-151.5 -110.5t-200 -38q-103 0 -190 38t-150.5 110.5t-99 179t-35.5 243.5zM301 551q0 -209 68.5 -314.5t222.5 -105.5 t221.5 105.5t67.5 314.5t-68.5 312.5t-222.5 103.5t-221.5 -103.5t-67.5 -312.5zM300 1395q0 54 28 78t68 24q39 0 68 -24.5t29 -77.5t-29 -78t-68 -25q-40 0 -68 25t-28 78zM675 1395q0 54 28 78t68 24q19 0 36.5 -6t30.5 -18.5t21 -31.5t8 -46q0 -53 -29 -78t-67 -25 q-40 0 -68 25t-28 78z" />
+<glyph unicode="&#xf7;" d="M102 647v150h924v-150h-924zM449 373q0 35 9 58.5t24.5 38.5t36 21.5t44.5 6.5q23 0 44 -6.5t37 -21.5t25 -38.5t9 -58.5q0 -33 -9 -56.5t-25 -39t-37 -22.5t-44 -7q-24 0 -44.5 7t-36 22.5t-24.5 39t-9 56.5zM449 1071q0 35 9 58.5t24.5 38.5t36 21.5t44.5 6.5 q23 0 44 -6.5t37 -21.5t25 -38.5t9 -58.5q0 -33 -9 -56.5t-25 -39t-37 -22.5t-44 -7q-24 0 -44.5 7t-36 22.5t-24.5 39t-9 56.5z" />
+<glyph unicode="&#xf8;" horiz-adv-x="1182" d="M115 551q0 136 33.5 241.5t95.5 178t151.5 110t200.5 37.5q63 0 119.5 -14.5t105.5 -42.5l68 108l131 -73l-80 -129q62 -73 96.5 -177.5t34.5 -238.5q0 -137 -33.5 -243.5t-96 -179t-151.5 -110.5t-200 -38q-125 0 -223 53l-68 -109l-131 74l80 131q-63 72 -98 178.5 t-35 243.5zM303 551q0 -84 9.5 -149.5t31.5 -116.5l397 647q-29 17 -66.5 26t-82.5 9q-154 0 -221.5 -103.5t-67.5 -312.5zM446 164q31 -17 67 -25t81 -8q154 0 221.5 105.5t67.5 314.5q0 159 -39 258z" />
+<glyph unicode="&#xf9;" horiz-adv-x="1206" d="M164 381v717h182v-707q0 -130 53 -195t164 -65q81 0 136 26t88.5 76.5t48 124.5t14.5 170v570h182v-1098h-147l-27 147h-10q-25 -43 -59.5 -74.5t-75.5 -52t-87 -30.5t-94 -10q-91 0 -160 23t-115 72t-69.5 125t-23.5 181zM300 1548v21h219q16 -34 37.5 -74.5t44.5 -81 t47 -78.5t45 -67v-27h-120q-35 28 -76 69.5t-79.5 85.5t-70 84.5t-47.5 67.5z" />
+<glyph unicode="&#xfa;" horiz-adv-x="1206" d="M164 381v717h182v-707q0 -130 53 -195t164 -65q81 0 136 26t88.5 76.5t48 124.5t14.5 170v570h182v-1098h-147l-27 147h-10q-25 -43 -59.5 -74.5t-75.5 -52t-87 -30.5t-94 -10q-91 0 -160 23t-115 72t-69.5 125t-23.5 181zM489 1241v27q22 29 45.5 67t47 78.5t44.5 81 t37 74.5h219v-21q-16 -27 -47.5 -67.5t-70 -84.5t-79 -85.5t-75.5 -69.5h-121z" />
+<glyph unicode="&#xfb;" horiz-adv-x="1206" d="M164 381v717h182v-707q0 -130 53 -195t164 -65q81 0 136 26t88.5 76.5t48 124.5t14.5 170v570h182v-1098h-147l-27 147h-10q-25 -43 -59.5 -74.5t-75.5 -52t-87 -30.5t-94 -10q-91 0 -160 23t-115 72t-69.5 125t-23.5 181zM266 1241v27q26 29 60 67t67.5 78.5t63 81 t45.5 74.5h192q16 -34 45.5 -74.5t63 -81t68 -78.5t59.5 -67v-27h-121q-51 34 -105 82.5t-106 103.5q-54 -55 -107 -103.5t-104 -82.5h-121z" />
+<glyph unicode="&#xfc;" horiz-adv-x="1206" d="M164 381v717h182v-707q0 -130 53 -195t164 -65q81 0 136 26t88.5 76.5t48 124.5t14.5 170v570h182v-1098h-147l-27 147h-10q-25 -43 -59.5 -74.5t-75.5 -52t-87 -30.5t-94 -10q-91 0 -160 23t-115 72t-69.5 125t-23.5 181zM309 1395q0 54 28 78t68 24q39 0 68 -24.5 t29 -77.5t-29 -78t-68 -25q-40 0 -68 25t-28 78zM684 1395q0 54 28 78t68 24q19 0 36.5 -6t30.5 -18.5t21 -31.5t8 -46q0 -53 -29 -78t-67 -25q-40 0 -68 25t-28 78z" />
+<glyph unicode="&#xfd;" horiz-adv-x="1001" d="M10 1098h189l215 -613q14 -40 28.5 -84t27 -88t21.5 -85t13 -76h6q5 25 16 68t24.5 91.5t28 95.5t25.5 80l199 611h188l-434 -1241q-28 -81 -60.5 -145.5t-75.5 -109.5t-101 -69.5t-138 -24.5q-52 0 -90 5.5t-65 11.5v145q21 -5 53 -8.5t67 -3.5q48 0 83 11.5t61 33.5 t44.5 54t33.5 73l57 160zM407 1241v27q22 29 45.5 67t47 78.5t44.5 81t37 74.5h219v-21q-16 -27 -47.5 -67.5t-70 -84.5t-79 -85.5t-75.5 -69.5h-121z" />
+<glyph unicode="&#xfe;" horiz-adv-x="1200" d="M174 -492v2048h182v-458l-8 -148h8q23 35 52 65.5t67.5 53t86.5 36t108 13.5q94 0 171 -36t131.5 -107.5t84.5 -177.5t30 -246q0 -141 -30 -247.5t-84.5 -178.5t-131.5 -108.5t-171 -36.5q-59 0 -107 13t-86.5 34.5t-68 50.5t-52.5 61h-12q3 -34 6 -65q2 -26 4 -53.5 t2 -43.5v-469h-182zM356 551q0 -101 13.5 -179.5t46 -132t86.5 -81t135 -27.5q135 0 198.5 109t63.5 313q0 208 -63.5 311t-200.5 103q-76 0 -128.5 -23t-85 -70t-48 -117t-17.5 -165v-41z" />
+<glyph unicode="&#xff;" horiz-adv-x="1001" d="M10 1098h189l215 -613q14 -40 28.5 -84t27 -88t21.5 -85t13 -76h6q5 25 16 68t24.5 91.5t28 95.5t25.5 80l199 611h188l-434 -1241q-28 -81 -60.5 -145.5t-75.5 -109.5t-101 -69.5t-138 -24.5q-52 0 -90 5.5t-65 11.5v145q21 -5 53 -8.5t67 -3.5q48 0 83 11.5t61 33.5 t44.5 54t33.5 73l57 160zM228 1395q0 54 28 78t68 24q39 0 68 -24.5t29 -77.5t-29 -78t-68 -25q-40 0 -68 25t-28 78zM603 1395q0 54 28 78t68 24q19 0 36.5 -6t30.5 -18.5t21 -31.5t8 -46q0 -53 -29 -78t-67 -25q-40 0 -68 25t-28 78z" />
+<glyph unicode="&#x131;" horiz-adv-x="530" d="M174 0v1098h182v-1098h-182z" />
+<glyph unicode="&#x152;" horiz-adv-x="1823" d="M125 735q0 170 38 308.5t117 236.5t199 151.5t283 53.5q98 0 182 -23h756v-164h-574v-452h535v-162h-535v-520h574v-164h-758q-43 -9 -88.5 -14.5t-93.5 -5.5q-163 0 -282.5 54t-198 153t-116.5 238.5t-38 309.5zM322 733q0 -137 26 -246.5t79.5 -186t136 -117 t196.5 -40.5q52 0 97 9t83 24v1112q-38 16 -82.5 24.5t-95.5 8.5q-114 0 -197 -40.5t-137 -116t-80 -184.5t-26 -247z" />
+<glyph unicode="&#x153;" horiz-adv-x="1864" d="M113 551q0 136 33.5 241.5t95.5 178t151.5 110t200.5 37.5q121 0 218.5 -55.5t160.5 -161.5q60 105 152.5 161t209.5 56q99 0 178 -35.5t134 -100t84.5 -155t29.5 -200.5v-113h-692q5 -193 81.5 -284t227.5 -91q51 0 94.5 5t84 14.5t78.5 24t77 32.5v-162 q-40 -19 -78.5 -33t-79 -23t-84 -13t-94.5 -4q-130 0 -232 56t-167 165q-63 -109 -162 -165t-227 -56q-103 0 -190 38t-150.5 110.5t-99 179t-35.5 243.5zM301 551q0 -209 68.5 -314.5t222.5 -105.5q150 0 219.5 100.5t69.5 309.5q0 220 -70 323t-221 103 q-154 0 -221.5 -103.5t-67.5 -312.5zM1073 662h492q0 68 -13.5 124.5t-42 96.5t-72.5 62t-106 22q-114 0 -180.5 -78t-77.5 -227z" />
+<glyph unicode="&#x178;" horiz-adv-x="1079" d="M0 1462h203l336 -739l340 739h200l-446 -893v-569h-187v559zM257 1733q0 54 28 78t68 24q39 0 68 -24.5t29 -77.5t-29 -78t-68 -25q-40 0 -68 25t-28 78zM632 1733q0 54 28 78t68 24q19 0 36.5 -6t30.5 -18.5t21 -31.5t8 -46q0 -53 -29 -78t-67 -25q-40 0 -68 25t-28 78z " />
+<glyph unicode="&#x2c6;" horiz-adv-x="1182" d="M258 1241v27q26 29 60 67t67.5 78.5t63 81t45.5 74.5h192q16 -34 45.5 -74.5t63 -81t68 -78.5t59.5 -67v-27h-121q-51 34 -105 82.5t-106 103.5q-54 -55 -107 -103.5t-104 -82.5h-121z" />
+<glyph unicode="&#x2da;" horiz-adv-x="1182" d="M365 1456q0 51 16 90.5t45.5 67.5t70.5 42.5t91 14.5q48 0 90 -14.5t73 -42t48.5 -67t17.5 -89.5q0 -51 -17.5 -91.5t-48 -68.5t-72.5 -42.5t-91 -14.5q-50 0 -91 14.5t-70.5 42.5t-45.5 67.5t-16 90.5zM475 1456q0 -53 28.5 -83t84.5 -30q49 0 80.5 30t31.5 83t-31.5 83 t-80.5 30q-50 0 -81.5 -30t-31.5 -83z" />
+<glyph unicode="&#x2dc;" horiz-adv-x="1182" d="M258 1241q5 60 21.5 109t43 83.5t63.5 53t83 18.5q42 0 82.5 -17.5t78.5 -38.5t72.5 -38.5t63.5 -17.5q45 0 68 26t38 88h105q-5 -60 -21.5 -108.5t-43 -83t-63.5 -53.5t-83 -19q-40 0 -79.5 17.5t-77.5 39t-73 39t-67 17.5q-45 0 -69 -26.5t-38 -88.5h-104z" />
+<glyph unicode="&#x2000;" horiz-adv-x="953" />
+<glyph unicode="&#x2001;" horiz-adv-x="1907" />
+<glyph unicode="&#x2002;" horiz-adv-x="953" />
+<glyph unicode="&#x2003;" horiz-adv-x="1907" />
+<glyph unicode="&#x2004;" horiz-adv-x="635" />
+<glyph unicode="&#x2005;" horiz-adv-x="476" />
+<glyph unicode="&#x2006;" horiz-adv-x="317" />
+<glyph unicode="&#x2007;" horiz-adv-x="317" />
+<glyph unicode="&#x2008;" horiz-adv-x="238" />
+<glyph unicode="&#x2009;" horiz-adv-x="381" />
+<glyph unicode="&#x200a;" horiz-adv-x="105" />
+<glyph unicode="&#x2010;" horiz-adv-x="659" d="M82 465v168h496v-168h-496z" />
+<glyph unicode="&#x2011;" horiz-adv-x="659" d="M82 465v168h496v-168h-496z" />
+<glyph unicode="&#x2012;" horiz-adv-x="659" d="M82 465v168h496v-168h-496z" />
+<glyph unicode="&#x2013;" horiz-adv-x="1024" d="M82 465v168h860v-168h-860z" />
+<glyph unicode="&#x2014;" horiz-adv-x="2048" d="M82 465v168h1884v-168h-1884z" />
+<glyph unicode="&#x2018;" horiz-adv-x="358" d="M23 983q14 54 33.5 115t42.5 123t49 123.5t51 117.5h137q-15 -61 -29.5 -127t-27.5 -131.5t-24 -127.5t-19 -115h-199z" />
+<glyph unicode="&#x2019;" horiz-adv-x="358" d="M23 961q14 60 28.5 126t28 132t24.5 128t19 115h199l14 -22q-14 -55 -33.5 -115.5t-43 -123t-49 -123.5t-50.5 -117h-137z" />
+<glyph unicode="&#x201a;" horiz-adv-x="512" d="M63 -264q15 61 29.5 127t28 131.5t24.5 128t19 115.5h198l15 -23q-14 -54 -33.5 -115t-43 -123t-49 -123.5t-50.5 -117.5h-138z" />
+<glyph unicode="&#x201c;" horiz-adv-x="743" d="M23 983q14 54 33.5 115t42.5 123t49 123.5t51 117.5h137q-15 -61 -29.5 -127t-27.5 -131.5t-24 -127.5t-19 -115h-199zM408 983q14 54 33.5 115t42.5 123t49 123.5t51 117.5h137q-15 -61 -29.5 -127t-27.5 -131.5t-24 -127.5t-19 -115h-199z" />
+<glyph unicode="&#x201d;" horiz-adv-x="743" d="M23 961q14 60 28.5 126t28 132t24.5 128t19 115h199l14 -22q-14 -55 -33.5 -115.5t-43 -123t-49 -123.5t-50.5 -117h-137zM408 961q14 60 28.5 126t28 132t24.5 128t19 115h199l14 -22q-14 -55 -33.5 -115.5t-43 -123t-49 -123.5t-50.5 -117h-137z" />
+<glyph unicode="&#x201e;" horiz-adv-x="897" d="M63 -264q15 61 29.5 127t28 131.5t24.5 128t19 115.5h198l15 -23q-14 -54 -33.5 -115t-43 -123t-49 -123.5t-50.5 -117.5h-138zM449 -264q14 61 28.5 127t28 131.5t24.5 128t19 115.5h199l14 -23q-14 -54 -33.5 -115t-43 -123t-49 -123.5t-50.5 -117.5h-137z" />
+<glyph unicode="&#x2022;" horiz-adv-x="770" d="M150 748q0 71 18 121t49.5 81.5t74.5 45.5t93 14q49 0 92 -14t75 -45.5t50.5 -81.5t18.5 -121q0 -70 -18.5 -120t-50.5 -81.5t-75 -46.5t-92 -15q-50 0 -93 15t-74.5 46.5t-49.5 81.5t-18 120z" />
+<glyph unicode="&#x2026;" horiz-adv-x="1647" d="M147 111q0 38 10 64.5t27 43t40 24t50 7.5q26 0 49.5 -7.5t40.5 -24t27 -43t10 -64.5q0 -37 -10 -63.5t-27 -43.5t-40.5 -25t-49.5 -8q-27 0 -50 8t-40 25t-27 43.5t-10 63.5zM696 111q0 38 10 64.5t27 43t40 24t50 7.5q26 0 49.5 -7.5t40.5 -24t27 -43t10 -64.5 q0 -37 -10 -63.5t-27 -43.5t-40.5 -25t-49.5 -8q-27 0 -50 8t-40 25t-27 43.5t-10 63.5zM1245 111q0 38 9.5 64.5t27 43t40.5 24t50 7.5q26 0 49.5 -7.5t40.5 -24t27 -43t10 -64.5q0 -37 -10 -63.5t-27 -43.5t-40.5 -25t-49.5 -8q-54 0 -90.5 33t-36.5 107z" />
+<glyph unicode="&#x202f;" horiz-adv-x="381" />
+<glyph unicode="&#x2039;" horiz-adv-x="590" d="M82 526v27l309 414l117 -78l-238 -348l238 -348l-117 -78z" />
+<glyph unicode="&#x203a;" horiz-adv-x="590" d="M82 193l237 348l-237 348l117 78l309 -414v-27l-309 -411z" />
+<glyph unicode="&#x2044;" horiz-adv-x="266" d="M-352 0l811 1462h157l-811 -1462h-157z" />
+<glyph unicode="&#x205f;" horiz-adv-x="476" />
+<glyph unicode="&#x20ac;" d="M63 502v137h148q-2 23 -2 38v44q0 22 1 45t1 31h-148v137h160q18 125 62 226t111.5 173t159.5 111t206 39q97 0 177 -21.5t159 -70.5l-80 -146q-51 31 -110.5 52.5t-131.5 21.5q-69 0 -128 -26t-106 -75.5t-80.5 -121t-51.5 -162.5h432v-137h-447q0 -15 -1 -29 q-1 -12 -1 -25v-22v-39q0 -21 2 -43h385v-137h-366q34 -175 126.5 -267t241.5 -92q75 0 142.5 16t126.5 42v-162q-59 -28 -125.5 -43.5t-157.5 -15.5q-115 0 -206 36.5t-158.5 104t-111.5 164t-65 217.5h-164z" />
+<glyph unicode="&#x2122;" horiz-adv-x="1534" d="M37 1354v108h522v-108h-199v-613h-127v613h-196zM625 741v721h186l180 -551l191 551h178v-721h-127v428q0 9 0.5 24t0.5 33l2 34q0 18 1 30h-6l-195 -549h-100l-186 549h-7q1 -16 2 -33t1.5 -32t1 -27t0.5 -18v-439h-123z" />
+<glyph unicode="&#xe000;" horiz-adv-x="1100" d="M0 1100h1100v-1100h-1100v1100z" />
+<glyph unicode="&#xfb01;" horiz-adv-x="1204" d="M29 961v75l194 68v96q0 107 22.5 177.5t65 112.5t104.5 59.5t140 17.5q59 0 108.5 -11.5t88.5 -25.5l-47 -141q-31 11 -67.5 19.5t-76.5 8.5t-69 -9.5t-48 -33.5t-28.5 -65.5t-9.5 -106.5v-104h245v-137h-245v-961h-183v961h-194zM834 1395q0 60 30.5 87t75.5 27 q22 0 41.5 -6.5t34 -20.5t23 -35.5t8.5 -51.5q0 -58 -31.5 -86.5t-75.5 -28.5q-45 0 -75.5 28t-30.5 87zM848 0v1098h182v-1098h-182z" />
+<glyph unicode="&#xfb02;" horiz-adv-x="1204" d="M29 961v75l194 68v96q0 107 22.5 177.5t65 112.5t104.5 59.5t140 17.5q59 0 108.5 -11.5t88.5 -25.5l-47 -141q-31 11 -67.5 19.5t-76.5 8.5t-69 -9.5t-48 -33.5t-28.5 -65.5t-9.5 -106.5v-104h245v-137h-245v-961h-183v961h-194zM848 0v1556h182v-1556h-182z" />
+<glyph unicode="&#xfb03;" horiz-adv-x="1878" d="M29 961v75l194 68v96q0 107 22.5 177.5t65 112.5t104.5 59.5t140 17.5q59 0 108.5 -11.5t88.5 -25.5l-47 -141q-31 11 -67.5 19.5t-76.5 8.5t-69 -9.5t-48 -33.5t-28.5 -65.5t-9.5 -106.5v-104h245v-137h-245v-961h-183v961h-194zM703 961v75l194 68v96q0 107 22.5 177.5 t65 112.5t104.5 59.5t140 17.5q59 0 108.5 -11.5t88.5 -25.5l-47 -141q-31 11 -67.5 19.5t-76.5 8.5t-69 -9.5t-48 -33.5t-28.5 -65.5t-9.5 -106.5v-104h245v-137h-245v-961h-183v961h-194zM1508 1395q0 60 30.5 87t75.5 27q22 0 41.5 -6.5t34 -20.5t23 -35.5t8.5 -51.5 q0 -58 -31.5 -86.5t-75.5 -28.5q-45 0 -75.5 28t-30.5 87zM1522 0v1098h182v-1098h-182z" />
+<glyph unicode="&#xfb04;" horiz-adv-x="1878" d="M29 961v75l194 68v96q0 107 22.5 177.5t65 112.5t104.5 59.5t140 17.5q59 0 108.5 -11.5t88.5 -25.5l-47 -141q-31 11 -67.5 19.5t-76.5 8.5t-69 -9.5t-48 -33.5t-28.5 -65.5t-9.5 -106.5v-104h245v-137h-245v-961h-183v961h-194zM703 961v75l194 68v96q0 107 22.5 177.5 t65 112.5t104.5 59.5t140 17.5q59 0 108.5 -11.5t88.5 -25.5l-47 -141q-31 11 -67.5 19.5t-76.5 8.5t-69 -9.5t-48 -33.5t-28.5 -65.5t-9.5 -106.5v-104h245v-137h-245v-961h-183v961h-194zM1522 0v1556h182v-1556h-182z" />
+<glyph horiz-adv-x="678" d="M12 778v111l377 579h141v-563h125v-127h-125v-192h-143v192h-375zM158 905h229v195q0 42 1.5 91.5t4.5 98.5q-5 -11 -15 -29.5t-21 -39.5t-23 -41l-21 -35z" />
+</font>
+</defs></svg> 
\ No newline at end of file
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/fonts/kreon-regular-webfont.svg
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/fonts/kreon-regular-webfont.svg	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/fonts/kreon-regular-webfont.svg	(revision 47450)
@@ -0,0 +1,234 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" >
+<svg xmlns="http://www.w3.org/2000/svg">
+<metadata></metadata>
+<defs>
+<font id="KreonRegular" horiz-adv-x="1333" >
+<font-face units-per-em="2048" ascent="1638" descent="-410" />
+<missing-glyph horiz-adv-x="491" />
+<glyph horiz-adv-x="0" />
+<glyph horiz-adv-x="2048" />
+<glyph unicode=" "  horiz-adv-x="491" />
+<glyph unicode="&#x09;" horiz-adv-x="491" />
+<glyph unicode="&#xa0;" horiz-adv-x="491" />
+<glyph unicode="!" horiz-adv-x="548" d="M135 1386l240 27l43 -78l-76 -850h-141zM152 112.5q0 51.5 34.5 86t85 34.5t87 -35.5t36.5 -85t-36.5 -85t-87 -35.5t-85 34.5t-34.5 86z" />
+<glyph unicode="&#x22;" horiz-adv-x="661" d="M74 1411l190 21l35 -62l-59 -414h-113zM362 1411l191 21l35 -62l-60 -414h-112z" />
+<glyph unicode="#" horiz-adv-x="1323" d="M59 602l27 47h281l86 234h-283l-27 106l27 47h338l141 379h135l23 -29l-131 -350h207l137 379h135l23 -29l-127 -350h192q12 0 12 -16v-137h-262l-84 -234h250q12 0 12 -16v-137h-319l-143 -398h-136l-22 27l135 371h-209l-145 -398h-135l-23 27l135 371h-223zM535 649 h206l84 234h-204z" />
+<glyph unicode="$" horiz-adv-x="987" d="M68 1028q0 92 25.5 151.5t70.5 104.5q90 90 242 121v385h184v-377q137 -12 272 -59l29 -353h-141l-91 222q-61 20 -154 20t-157.5 -43t-64.5 -131q0 -102 102 -168q45 -31 100.5 -54.5t128 -56t136 -77.5t102.5 -95q74 -92 74 -200.5t-27 -175t-72 -115.5 q-90 -92 -237 -123v-397h-184v387q-182 8 -318 76v346h148l36 -219q88 -33 177 -33q176 0 241 115q23 39 23 101t-38 112.5t-125 93.5t-172 77.5t-153.5 83t-112.5 119t-44 162.5z" />
+<glyph unicode="%" horiz-adv-x="1472" d="M63 1059q0 61 17.5 123.5t52.5 113.5q80 117 219 117t217 -106q72 -100 72 -246q0 -154 -80 -256q-80 -104 -209 -105q-143 0 -221 119q-68 101 -68 240zM180 27l907 1388h173l8 -29l-897 -1386h-178zM215 1058q0 -93 38 -157.5t99 -64.5t98 65.5t37 158.5t-35.5 156.5 t-100 63.5t-100.5 -64.5t-36 -157.5zM836 348q0 139 69 238q80 117 217 116q139 0 217 -108q72 -96 72 -246q0 -152 -78 -254q-80 -102 -211 -102q-139 0 -219 117q-67 100 -67 239zM989 346q0 -94 37 -157.5t98.5 -63.5t97 64.5t35.5 158.5t-35.5 157.5t-100 63.5 t-98.5 -64.5t-34 -158.5z" />
+<glyph unicode="&#x26;" horiz-adv-x="1376" d="M66 412q0 217 258 422q-111 188 -111 319q0 150 94 244q100 100 244.5 100t226.5 -81t82 -206q0 -186 -262 -407q88 -121 182 -230l107 -127q53 111 78 226h-93l-32 143h319l23 -29q-45 -268 -150 -456l-16 -27q123 -127 158 -137q8 2 25.5 15.5t37.5 27.5l59 39l86 -189 q-78 -66 -209 -65.5t-290 137.5q-150 -139 -365 -139q-197 0 -325 123q-127 119 -127 297zM279 402.5q0 -97.5 68.5 -166t187.5 -68.5t217 94q-170 199 -336 428q-63 -61 -100 -125.5t-37 -162zM408 1194q0 -98 98 -258q160 145 160 274q0 66 -36 99.5t-96.5 33.5t-93 -46 t-32.5 -103z" />
+<glyph unicode="'" horiz-adv-x="372" d="M74 1391l190 20l35 -61l-59 -414h-113z" />
+<glyph unicode="(" horiz-adv-x="565" d="M104 600q0 160 23 302t55 259q57 201 146 359h172q-133 -266 -183 -633q-18 -137 -18 -293t21.5 -296t52.5 -257q43 -166 127 -373h-172l-15 31q-129 260 -186 604q-23 137 -23 297z" />
+<glyph unicode=")" horiz-adv-x="565" d="M66 -332q84 207 120 348q80 307 80 580q0 522 -200 924h172q223 -418 223 -926q0 -266 -76 -543q-47 -168 -133 -352l-14 -31h-172z" />
+<glyph unicode="*" horiz-adv-x="741" d="M72 1038l12 47l231 86l-243 78l32 115l50 12l188 -153l-47 247l115 25l32 -35l-41 -237l187 170l82 -88l-13 -48l-231 -86l244 -77l-33 -115l-49 -12l-189 153l47 -248l-114 -24l-33 35l41 237l-186 -170zM336 1169l18 -26h35l14 28l-16 29h-37z" />
+<glyph unicode="+" horiz-adv-x="821" d="M70 645v125l26 29h242v262h154v-262h256v-154h-256v-307h-127l-27 24v283h-268z" />
+<glyph unicode="," horiz-adv-x="438" d="M45 -211l102 209l-53 235l215 39q23 -90 23 -156.5t-17.5 -130t-44.5 -116.5q-49 -100 -118 -170l-107 61v29z" />
+<glyph unicode="-" horiz-adv-x="817" d="M119 500v125l24 28h543q12 0 12 -16v-137h-579z" />
+<glyph unicode="." horiz-adv-x="425" d="M92 112.5q0 51.5 35 86t85 34.5t87 -35.5t37 -85t-36 -85t-87 -35.5t-86 34.5t-35 86z" />
+<glyph unicode="/" horiz-adv-x="944" d="M45 27l672 1386h184l-2 -29l-672 -1384h-176z" />
+<glyph unicode="0" horiz-adv-x="1193" d="M94 702q0 483 260 650q96 61 242 61q266 0 395 -221q109 -184 109 -490q0 -481 -262 -649q-96 -61 -242 -61q-266 0 -395 223q-107 182 -107 487zM309 702q0 -371 158 -493q53 -41 129 -41q145 0 221 156q68 139 68 378q0 373 -158 494q-55 41 -132 41t-131 -42t-87 -114 q-68 -141 -68 -379z" />
+<glyph unicode="1" horiz-adv-x="741" d="M51 1286l428 133l41 -18v-1239l191 -25v-137h-605l-22 135l231 35v1016l-233 -47z" />
+<glyph unicode="2" horiz-adv-x="1060" d="M45 1135q72 131 189.5 204.5t265.5 73.5q180 0 295 -86q131 -96 131 -283q0 -190 -226 -477q-119 -154 -212 -250t-132 -141h412l80 219h135l-43 -395h-834l-24 141q41 45 102.5 109.5t130 141.5t138 161t125.5 168q125 182 133 303v14q0 98 -68 154q-59 45 -131 45 q-102 0 -182 -53l-56 -172z" />
+<glyph unicode="3" horiz-adv-x="1071" d="M55 1139q72 131 196 202.5t296 71.5q162 0 280 -90q129 -100 129 -272q0 -117 -62.5 -202t-166.5 -122q92 -31 160 -106q86 -96 86 -212t-42 -193t-108 -126q-131 -98 -301 -98q-287 0 -456 139l108 164q150 -127 320 -127q135 0 199.5 63.5t64.5 140.5t-28 122t-75 75 q-86 55 -235 56h-105v176q213 0 308 41q119 53 118 196q0 100 -67 154q-59 47 -139 47t-124 -17.5t-73 -33.5l-76 -168z" />
+<glyph unicode="4" horiz-adv-x="1060" d="M4 557l590 858h221v-835h168v-177h-168v-235l166 -27v-139h-651v139l282 33v229h-540zM205 580h407v583z" />
+<glyph unicode="5" horiz-adv-x="1028" d="M39 133l100 158q133 -123 301 -123q131 0 219 86q86 82 86 213q0 164 -116 240q-94 61 -287 61q-94 0 -180 -12v592l65 65h654v-176h-525v-295h50q35 0 99 -3t150 -31.5t154 -84.5q152 -127 152 -342q0 -213 -160 -354q-156 -135 -373 -135q-125 0 -224.5 41t-164.5 100z " />
+<glyph unicode="6" horiz-adv-x="1140" d="M88 694q0 311 148 514q71 101 174.5 159t211 58t174 -21.5t115.5 -51.5q76 -47 131 -127l-194 -138l-103 146q-49 16 -107 16t-118.5 -37.5t-105.5 -105.5q-96 -141 -109 -344q47 53 126 93t179.5 40t182 -29.5t141.5 -87.5q127 -123 127 -327q0 -190 -123 -320 q-131 -139 -326 -139q-264 0 -407 227q-117 188 -117 475zM336 430q70 -262 266 -262q121 0 184 84q59 76 60 192q0 121 -70 199t-174 78q-113 0 -188 -84q-74 -82 -78 -207z" />
+<glyph unicode="7" horiz-adv-x="909" d="M55 989v424h807l37 -53l-428 -1360h-211l-10 55l448 1182h-462l-52 -248h-129z" />
+<glyph unicode="8" horiz-adv-x="1089" d="M84 377q0 242 250 381q-78 51 -132.5 125.5t-54.5 172t36 162t93 109.5q121 98 273 98q158 0 274 -90q125 -100 125 -254q0 -143 -125 -245q-35 -31 -73 -58q127 -76 170 -133q86 -111 86 -248q0 -176 -142 -295q-131 -113 -317 -112q-190 0 -322 96q-141 107 -141 291z M299 383q0 -104 86 -166q72 -51 143.5 -51t116.5 17.5t76 45.5q70 66 70 152q0 139 -185 233q-51 27 -108 56q-199 -109 -199 -287zM362 1100.5q0 -56.5 19.5 -91t50.5 -59.5q47 -39 150 -86q65 41 108 91.5t43 123t-51 121.5t-133 49t-134.5 -46t-52.5 -102.5z" />
+<glyph unicode="9" horiz-adv-x="1112" d="M86 133l115 160q143 -125 297 -125q274 0 303 446q-61 -59 -140 -85.5t-155 -26.5t-156 28.5t-137 83.5q-125 117 -125 324q0 203 117 340q125 143 344 143q248 0 371 -233q100 -190 100 -496q0 -293 -127 -487q-61 -96 -157.5 -154.5t-203 -58.5t-174 15.5t-120.5 37.5 q-74 31 -152 88zM303 956q0 -137 70 -211q64 -67 164 -67q43 0 86 15.5t77 45.5q80 72 88 176q-35 229 -153 304q-43 27 -100 26q-100 0 -166 -73.5t-66 -215.5z" />
+<glyph unicode=":" horiz-adv-x="481" d="M119 399.5q0 51.5 35.5 86t86 34.5t86 -35.5t35.5 -85t-35.5 -85t-86 -35.5t-86 34.5t-35.5 86zM119 884q0 50 35.5 86t86 36t86 -37t35.5 -87.5t-35.5 -85t-87 -34.5t-86 36t-34.5 86z" />
+<glyph unicode=";" horiz-adv-x="499" d="M90 -211l103 209l-54 235l215 39q23 -90 23 -156.5t-17.5 -130t-44.5 -116.5q-49 -100 -118 -170l-107 61v29zM117 679q0 50 35.5 86t86 36t86 -37t35.5 -87t-35.5 -85t-87 -35t-86 36t-34.5 86z" />
+<glyph unicode="&#x3c;" horiz-adv-x="866" d="M59 627v139l670 405v-192l-473 -285l473 -282v-199z" />
+<glyph unicode="=" horiz-adv-x="923" d="M125 475v156h674v-156h-674zM125 733v156h674v-156h-674z" />
+<glyph unicode="&#x3e;" horiz-adv-x="866" d="M137 213v199l473 282l-473 285v192l670 -405v-139z" />
+<glyph unicode="?" horiz-adv-x="835" d="M80 1028l35 326q174 61 282.5 61t177 -25.5t113.5 -68.5q88 -84 88 -215q0 -174 -129 -293q-39 -35 -78 -63l-75 -54q-94 -68 -103 -168q-2 -25 -2 -43l-162 -2l-4 21q-8 29 -8 89t25.5 105t64.5 80t84 65.5t84 65.5q90 78 90 181q0 61 -44 107t-130 46q-88 0 -129 -18 l-55 -197h-125zM193 113.5q0 50.5 34.5 85t84.5 34.5t87 -35.5t37 -85t-37 -85t-87 -35.5t-84.5 35.5t-34.5 86z" />
+<glyph unicode="@" horiz-adv-x="1701" d="M63 553q0 184 67 329.5t177 247.5q229 207 567 207q326 0 539 -207q102 -96 160.5 -229t58.5 -261t-27.5 -221t-78.5 -165q-113 -156 -289 -156q-119 0 -174 64q-98 -63 -221 -64q-166 0 -275 103q-121 115 -121 319q0 231 152 348q117 88 272 88q109 0 203 -45l74 29 l55 -18v-586q0 -43 16.5 -55.5t43 -12.5t59.5 24.5t59 72.5q59 102 59.5 235t-38.5 234.5t-111 173.5q-156 156 -413 155q-266 0 -443 -172q-176 -172 -176 -442q0 -313 184 -486q168 -159 455 -159q143 0 240 39l37 -9l-58 -176q-100 -31 -261 -30.5t-307.5 56.5 t-252.5 163q-231 225 -232 606zM643 528q0 -141 74 -217q59 -61 176 -61q61 0 119 47q-2 20 -2 39v440q-61 31 -118.5 31t-100.5 -16.5t-76 -49.5q-72 -76 -72 -213z" />
+<glyph unicode="A" horiz-adv-x="1245" d="M-2 127l106 37l414 1251h197l436 -1251l94 -37l-22 -127h-482v121l181 43l-99 303h-438l-94 -303l176 -41v-123h-442zM438 643h328l-168 514z" />
+<glyph unicode="B" horiz-adv-x="1181" d="M94 1262v153h473q221 0 353 -104q124 -99 124 -264q0 -120 -65 -211q-59 -84 -145 -111q111 -23 186 -102q82 -86 82 -213t-44 -205t-116 -123q-123 -82 -332 -82h-489l-21 143l125 29v1077zM430 176h160q201 0 270 115q27 45 27 110.5t-25.5 108.5t-68.5 68 q-80 45 -207 45h-156v-447zM430 799h90q158 0 233.5 54t75.5 171q0 215 -274 215h-125v-440z" />
+<glyph unicode="C" horiz-adv-x="1191" d="M70 692q0 340 209 541q190 182 483 182q131 0 303 -39l39 -372h-139l-80 221q-39 14 -135.5 14t-185.5 -43t-150 -115q-129 -152 -129 -368q0 -236 141 -389q143 -156 381 -156q88 0 161.5 26.5t106.5 51.5l60 -162q-129 -92 -363 -92q-283 0 -483 180q-219 199 -219 520 z" />
+<glyph unicode="D" horiz-adv-x="1296" d="M100 145l125 29v1077l-123 13v151h387q334 0 531 -178q203 -182 203 -520t-195 -529q-193 -188 -530 -188h-377zM428 176l16 -2q563 0 564 545q0 246 -148 387q-143 135 -383 135l-49 -2v-1063z" />
+<glyph unicode="E" horiz-adv-x="1103" d="M98 145l125 27v1079l-123 11v153h873l41 -385h-129l-78 209h-381v-430h324v-176h-324v-457h401l72 207h129l-41 -383h-868z" />
+<glyph unicode="F" horiz-adv-x="1046" d="M98 145l125 27v1079l-123 11v153h873l43 -385h-127l-82 209h-381v-430h324v-176h-324v-453l332 -47l-13 -133h-626z" />
+<glyph unicode="G" horiz-adv-x="1259" d="M68 690q0 328 198 527q198 198 511 198h3q154 0 320 -43l30 -371h-149l-74 228q-61 10 -151 10t-180.5 -41t-153.5 -113q-139 -158 -139 -389q0 -240 147 -383q150 -145 399 -145q70 0 111 8l2 301l-233 29l36 145h400v-622q-147 -37 -321.5 -37t-308.5 47t-234 137 q-213 190 -213 514z" />
+<glyph unicode="H" horiz-adv-x="1376" d="M100 147l123 23v1079l-123 11v155h430l21 -153l-123 -21v-424h520v432l-117 11v155h424l21 -153l-123 -21v-1075l123 -16v-150h-424l-21 147l117 23v471h-520v-475l125 -16v-150h-432z" />
+<glyph unicode="I" horiz-adv-x="653" d="M94 147l129 23v1079l-129 11v155h447l20 -153l-133 -21v-1075l133 -16v-150h-448z" />
+<glyph unicode="J" horiz-adv-x="751" d="M16 96l109 162q90 -84 149 -84q76 0 76 113v954l-157 21l20 153h469v-155l-127 -11v-944q0 -182 -109 -262q-70 -51 -161 -51q-160 0 -269 104z" />
+<glyph unicode="K" horiz-adv-x="1255" d="M94 147l129 23v1079l-129 8v158h438l19 -151l-123 -23v-577l477 581l-145 23v147h452v-149l-67 -15l-393 -473l354 -612l113 -21v-145h-285l-324 608l-182 -219v-223l125 -16v-150h-440z" />
+<glyph unicode="L" horiz-adv-x="1046" d="M98 145l125 23v1083l-123 11v153h441l18 -151l-133 -23v-1065h401l72 207h129l-41 -383h-868z" />
+<glyph unicode="M" horiz-adv-x="1748" d="M92 145l129 27v1075l-102 10v158h422l331 -1147l345 1147h399l20 -158l-106 -16v-1075l112 -23l-8 -143h-397l-16 147l118 27v1053l-362 -1196h-236l-350 1206v-1069l121 -23v-145h-395z" />
+<glyph unicode="N" horiz-adv-x="1425" d="M96 145l129 27v1075l-123 13v155h428l517 -1218v1050l-127 17v151h403l27 -153l-131 -25v-1237h-304l-518 1221v-891l2 -146q0 -12 2 -18l117 -21v-145h-397z" />
+<glyph unicode="O" d="M88 705q0 303 143 499q156 213 435 213t436 -213q145 -199 145 -499q0 -301 -145 -500q-157 -213 -436 -213t-435 213q-143 197 -143 500zM303 700q0 -221 90 -370q96 -162 273 -162q178 0 276 162q90 147 90 370q0 225 -90 377q-100 164 -276 164t-273 -164 q-90 -152 -90 -377z" />
+<glyph unicode="P" horiz-adv-x="1132" d="M94 143l131 29v1077l-129 11v155h432q285 0 430 -129q131 -119 132 -323q0 -240 -162 -359q-143 -104 -404 -104h-94v-322q51 -10 297 -41l-6 -137h-606zM430 676h86q188 0 279 86q79 76 79 203q0 274 -372 274h-72v-563z" />
+<glyph unicode="Q" d="M88 705q0 303 143 499q156 213 435 213t436 -213q145 -199 145 -499q0 -301 -145 -500q-157 -213 -436 -213t-435 213q-143 197 -143 500zM303 700q0 -221 90 -370q96 -162 273 -162q178 0 276 162q90 147 90 370q0 225 -90 377q-100 164 -276 164t-273 -164 q-90 -152 -90 -377zM530 -131l80 86l430 -154l13 -67l-183 -162q-88 72 -171 146.5t-169 150.5z" />
+<glyph unicode="R" horiz-adv-x="1196" d="M94 143l131 29v1077l-129 11v155h432q285 0 430 -129q131 -119 132 -323q0 -141 -72 -239.5t-195 -150.5l199 -407l117 -25v-141h-285l-229 524q-49 -6 -101 -6h-94v-348l162 -29v-141h-477zM430 694h86q182 0 279 88q79 70 79 183q0 274 -372 274h-72v-545z" />
+<glyph unicode="S" horiz-adv-x="1038" d="M96 1035.5q0 99.5 36 167t97 114.5q129 98 316 98q180 0 346 -61l29 -353h-142l-90 222q-61 20 -154.5 20t-158 -43t-64.5 -131q0 -102 103 -168q45 -31 100 -54.5t128 -56t136.5 -77.5t102.5 -95q74 -91 74 -209q0 -119 -41 -197q-40 -77 -107 -126q-127 -94 -336 -94 t-365 78l15 346h143l37 -219q88 -33 176 -33q176 0 242 115q23 38 23 98q0 63 -38 115q-38 50 -125 93.5t-172 78t-154 83t-113 119t-44 170z" />
+<glyph unicode="T" horiz-adv-x="1187" d="M29 1036l43 379h1044l45 -379h-125l-86 203h-256v-1063l238 -41l-19 -135h-630l-27 135l233 41v1063h-251l-84 -203h-125z" />
+<glyph unicode="U" horiz-adv-x="1325" d="M61 1262v153h474v-151l-142 -19v-768q0 -145 72 -227t219 -82q190 0 258 164q25 59 25 147v768l-125 19v149h413v-151l-116 -21v-772q0 -238 -144 -365q-124 -114 -314 -114h-3q-236 0 -363 126t-127 353v778z" />
+<glyph unicode="V" horiz-adv-x="1185" d="M14 1276v139h463l17 -127l-187 -39l301 -930l305 934l-184 35v127h449v-139l-78 -27l-414 -1249h-188l-410 1249z" />
+<glyph unicode="W" horiz-adv-x="1830" d="M31 1274v141h440l18 -127l-149 -33l186 -1024l305 1147h205l307 -1155l193 1037l-168 30l12 125h441v-139l-121 -39l-242 -1237h-270l-275 1047l-276 -1047h-272l-232 1243z" />
+<glyph unicode="X" horiz-adv-x="1175" d="M41 0v127l90 14l334 545l-338 561l-86 25v143h457l16 -125l-145 -30l239 -392l230 389l-121 29v129h416v-149l-89 -15l-333 -549l331 -542l91 -25v-135h-463v127l129 10l-232 383l-225 -385l115 -14v-121h-416z" />
+<glyph unicode="Y" horiz-adv-x="1153" d="M8 1262v153h436l15 -135l-131 -25l278 -512l250 514l-117 23v135h400v-153l-88 -21l-369 -737v-334l238 -41l-21 -129h-635l-20 129l235 41v346l-389 727z" />
+<glyph unicode="Z" horiz-adv-x="1132" d="M76 158l727 1081h-531l-41 -219h-129v395h906l24 -190q-66 -100 -151.5 -233.5t-179 -276t-186.5 -282.5t-169 -257h522l39 217h131v-393h-929z" />
+<glyph unicode="[" horiz-adv-x="657" d="M160 -338v1751l16 25h475q12 0 13 -15v-137h-310v-1501h310v-135q0 -16 -13 -17h-469z" />
+<glyph unicode="\" horiz-adv-x="942" d="M43 1391v24h182l674 -1388l-16 -27h-166z" />
+<glyph unicode="]" horiz-adv-x="657" d="M-6 -215h309v1501h-309v137q0 14 12 15h475l17 -25v-1751l-23 -29h-469q-12 0 -12 17v135z" />
+<glyph unicode="^" horiz-adv-x="907" d="M106 1151l322 332h53l320 -334l-4 -10h-166l-178 121l-177 -121h-163z" />
+<glyph unicode="_" horiz-adv-x="1153" d="M10 -27l29 27h1091q12 0 13 -14v-140h-1133v127z" />
+<glyph unicode="`" horiz-adv-x="618" d="M106 1294l123 146l64 -17l219 -323l-76 -76z" />
+<glyph unicode="a" horiz-adv-x="942" d="M74 253.5q0 108.5 44 172t115 100.5q125 63 367 68v145q0 41 -38 75t-118 34q-76 0 -112 -33l-41 -133l-215 63q47 170 231 230q66 20 148 20q160 0 244.5 -79.5t84.5 -208.5v-525q0 -43 29 -43q14 0 43 15l45 -109q-63 -53 -141 -53q-117 0 -148 92q-90 -94 -229 -94 t-224 77.5t-85 186zM268 283.5q0 -50.5 15.5 -76t38 -40.5t47 -20.5t55.5 -5.5t62.5 13.5t54.5 31.5q43 33 59 82v176q-135 0 -198.5 -21.5t-98.5 -55t-35 -84z" />
+<glyph unicode="b" horiz-adv-x="1003" d="M4 1458l260 39l62 -65v-492q86 55 188 55t176 -34.5t127 -98.5q113 -135 113 -356q0 -279 -152 -412q-117 -102 -286 -102q-113 0 -197 47q-98 -49 -107 -51l-47 28v1327l-118 -8zM326 199q16 -20 62 -37t91 -17t88 15.5t80 56.5q88 90 88 277q0 176 -76 266 q-65 80 -167 80q-49 0 -95.5 -19.5t-70.5 -48.5v-573z" />
+<glyph unicode="c" horiz-adv-x="884" d="M74 477q0 268 143 408q114 110 294 110h3q133 0 231 -69q80 -55 107 -117l-203 -96l-65 118q-41 10 -68 11q-248 0 -248 -361q0 -154 75 -245t198 -91q57 0 120.5 21.5t104.5 62.5l45 -143q-123 -94 -299 -94q-184 0 -303 119q-135 131 -135 366z" />
+<glyph unicode="d" horiz-adv-x="1028" d="M74 481q0 279 151 412q117 102 287 102q86 0 164 -32v380l-117 -8l-18 123l256 43l63 -69v-1250q0 -43 29 -43q14 0 43 15l45 -109q-63 -53 -153 -53q-1 0 -2 -1q-89 0 -124 68q-95 -68 -202 -68l-2 1q-108 0 -181 34.5t-127 98.5q-113 135 -112 356zM268 494 q0 -176 76 -267q66 -80 168.5 -80t163.5 66v578q-18 18 -62.5 34.5t-89.5 16.5t-88 -15.5t-80 -56.5q-88 -90 -88 -276z" />
+<glyph unicode="e" horiz-adv-x="909" d="M108 706q36 96 99 158q123 131 307 131q135 0 227 -71q95 -76 95 -199q0 -63 -21.5 -123.5t-83.5 -109.5q-139 -111 -455 -115q33 -162 166 -213q46 -18 102 -18q3 0 6 -1q52 -1 89 9q39 10 68 22q55 27 77 49l45 -143q-23 -23 -75 -45q-112 -46 -221 -46q-91 0 -181 32 q-178 63 -246 247q-35 91 -35 213q0 126 37 223zM266 528q150 0 223.5 23.5t112.5 61.5t39 95.5t-30.5 94.5t-89 37t-98.5 -18.5t-73 -55.5q-72 -84 -84 -238z" />
+<glyph unicode="f" horiz-adv-x="690" d="M35 975l14 20h154v187q0 156 84 239q74 74 196 74q141 0 262 -86q25 -16 31 -23l-145 -169l-131 120q-12 4 -29 4q-82 0 -82 -135v-211h232q10 0 10 -12v-141h-242v-697l234 -34v-111h-512l-25 111l117 24v707h-140z" />
+<glyph unicode="g" horiz-adv-x="999" d="M37 -258q0 193 170 276q-49 41 -49 130t80 169q-158 104 -158 301q0 164 113 271q109 106 265 106t267 -90l203 103l43 -7l20 -170l-184 -22q49 -90 49 -185.5t-34 -163t-89 -112.5q-109 -90 -266 -90q-51 0 -90 8l-51 -80l8 -34q20 -4 87.5 -13.5t156 -30t151 -52 t98.5 -68.5q62 -69 62 -173q0 -101 -37 -169q-37 -70 -96 -117q-121 -92 -295 -92q-184 0 -299 78q-125 84 -125 227zM217 -229q0 -68 76 -113q70 -41 180 -41q109 0 182 47q78 47 78 111.5t-56 90t-157.5 47t-157.5 38.5q-145 -59 -145 -180zM274 644q0 -75 16.5 -116 t43.5 -65q51 -51 134 -51t138.5 55t55.5 160q0 104 -58.5 159.5t-136.5 55.5h-8q-84 -4 -134.5 -63.5t-50.5 -134.5z" />
+<glyph unicode="h" horiz-adv-x="1067" d="M37 1458l256 43l63 -69v-510q101 73 238 73h4q213 0 279 -155q24 -51 24 -125v-6v-566l123 -32v-111h-408l-24 111l125 28v539q0 92 -43 126t-91 34t-80 -8.5t-61 -20.5q-57 -25 -86 -53v-613l121 -32v-111h-407l-25 111l127 28v1204l-117 -8z" />
+<glyph unicode="i" horiz-adv-x="548" d="M59 950l252 45l66 -65v-787l121 -32v-111h-410l-22 111l127 28v697l-113 -9zM127 1364q0 53 37 90t90 37t90 -39t37 -90t-37 -88t-90 -37t-90 37t-37 90z" />
+<glyph unicode="j" horiz-adv-x="497" d="M-76 -504l78 150q14 -10 39.5 -28.5t60.5 -18.5q72 0 72 125v1112l-108 -9l-19 123l248 45l63 -65v-1184q0 -162 -66.5 -232.5t-178.5 -70.5q-104 0 -189 53zM106 1364q0 53 37 90t90 37t90 -39t37 -90t-36.5 -88t-91 -37t-90.5 37t-36 90z" />
+<glyph unicode="k" horiz-adv-x="993" d="M37 1458l256 43l63 -69v-891l314 325h-101l-16 129h326l49 -94l-318 -307l236 -455l108 -24v-115h-256l-233 453l-109 -105v-213l121 -24v-111h-407l-25 111l127 28v1204l-117 -8z" />
+<glyph unicode="l" horiz-adv-x="532" d="M35 1458l256 43l65 -69v-1289l129 -32v-111h-417l-25 111l129 28v1204l-117 -8z" />
+<glyph unicode="m" horiz-adv-x="1632" d="M59 950q27 4 62 11.5t69.5 13.5t67.5 11t53 9l60 -75q97 76 254 76h3q158 0 234 -99q133 98 299 98q213 0 283 -155q24 -51 24 -125v-6v-566l121 -32v-111h-409l-23 111l127 28v539q0 86 -51 127q-43 33 -108.5 33t-122 -25t-84.5 -49v-21l2 -59v-541l122 -32v-111h-407 l-25 111l125 28v539q0 92 -43 126t-106.5 34t-123 -27t-85.5 -53v-615l119 -32v-111h-408l-25 111l130 28v697l-113 -9z" />
+<glyph unicode="n" horiz-adv-x="1085" d="M59 950q27 4 62 11.5t69.5 13.5t67.5 11t53 9l60 -75q97 75 241 75h4q213 0 281 -155q23 -53 23 -131v-564l122 -34v-111h-407l-25 111l125 28v539q0 92 -43 126t-106.5 34t-123 -27t-85.5 -53v-615l119 -32v-111h-408l-25 111l130 28v697l-113 -9z" />
+<glyph unicode="o" horiz-adv-x="1013" d="M74 502q0 119 34.5 211t96.5 155q119 127 303 127q188 0 311 -135t123 -362q0 -238 -131 -375q-121 -131 -303 -131q-190 0 -311 139q-123 138 -123 371zM268 478q0 -163 66 -248t172 -85t174 83t68 253t-65 265.5t-175 95.5q-117 0 -180 -101q-60 -96 -60 -263z" />
+<glyph unicode="p" horiz-adv-x="1034" d="M39 952l256 43l55 -59q92 59 194.5 59t176.5 -34.5t127 -98.5q113 -135 113 -356q0 -279 -152 -412q-117 -102 -287 -102q-94 0 -164 31v-431l250 -45v-108h-536l-25 108l127 31v1260l-117 -9zM358 197q18 -20 62.5 -36t89.5 -16t88 15.5t82 56.5q86 90 86 277 q0 176 -74 266q-68 80 -168 80t-166 -66v-577z" />
+<glyph unicode="q" horiz-adv-x="1001" d="M74 481q0 279 151 412q117 102 287 102q102 0 184 -41l117 43l47 -39v-1331l113 -39v-149h-527l-22 129l252 49v428q-82 -53 -185.5 -53t-177 34.5t-127.5 98.5q-113 135 -112 356zM268 494q0 -176 76 -267q66 -80 168.5 -80t163.5 66v578q-18 18 -62.5 34.5t-89.5 16.5 t-88 -15.5t-80 -56.5q-88 -90 -88 -276z" />
+<glyph unicode="r" horiz-adv-x="829" d="M59 950q115 18 242 43l64 -94q82 94 213 94q90 0 152.5 -45t92.5 -110l-202 -103l-64 99q-70 0 -125 -60q-57 -59 -57 -158v-442q0 -8 35 -14l231 -49v-111h-553l-25 111l127 28v690h-112z" />
+<glyph unicode="s" horiz-adv-x="827" d="M49 207l211 80l49 -119q47 -20 87 -20q3 0 6 -1q36 1 58 7q24 6 46 18q47 31 47 90q0 76 -93 116t-160 72.5t-112 69.5q-92 78 -92 205q0 125 101 201q94 69 225 69q66 0 121 -18.5t96 -46.5q78 -53 121 -137l-209 -80l-47 104q-41 21 -88 21h-2q-46 0 -84 -28 q-39 -28 -39 -81t51 -87t141 -70.5t138.5 -69.5t74.5 -70q52 -69 52 -153q0 -81 -31 -133q-31 -54 -80 -89q-95 -65 -230 -65h-4q-115 0 -223 63q-100 61 -131 152z" />
+<glyph unicode="t" horiz-adv-x="665" d="M8 975l15 20h182v342l164 39l10 -30v-351h213q10 0 10 -12v-141h-223v-588q0 -66 19.5 -85t49 -19t50 6t39.5 16q38 17 61 35q4 -14 43 -135q-29 -27 -84 -53.5t-143 -26.5t-148.5 53t-60.5 174v623h-168z" />
+<glyph unicode="u" horiz-adv-x="1044" d="M25 950l254 45l63 -67v-555q0 -193 113 -217q31 -8 58.5 -8t55 7t54.5 21q59 33 77 80v575h-106l-19 119l250 47l60 -69v-723q0 -68 37 -68l36 4l29 -92q-57 -57 -133 -57q-106 0 -139 92q-96 -92 -230 -92q-225 0 -301 184q-26 61 -26 148v6v501h-113z" />
+<glyph unicode="v" horiz-adv-x="956" d="M0 977l248 18l260 -755l252 620h-111l-14 117l248 18l65 -77l-381 -928h-161l-310 870h-80z" />
+<glyph unicode="w" horiz-adv-x="1441" d="M10 979l273 20l159 -784l193 758h223l209 -760l158 639h-92l-15 127l228 18l45 -71l-224 -932h-241l-195 731l-188 -731h-244l-184 858h-90z" />
+<glyph unicode="x" horiz-adv-x="950" d="M57 129h86l213 367l-215 364h-84v135h230l217 -360l196 360h185v-129h-78l-219 -372l217 -361h88v-133h-240l-207 346l-198 -346h-182z" />
+<glyph unicode="y" horiz-adv-x="983" d="M2 979l254 16l276 -829l259 686h-107l-14 125l248 18l53 -69q-184 -522 -329.5 -896t-169 -422t-54.5 -87q-72 -84 -185 -84q-90 0 -182 82l76 141q57 -70 121 -70q66 0 112 123q14 35 27 66l45 121l-332 952h-82z" />
+<glyph unicode="z" horiz-adv-x="866" d="M88 0v158l469 682q-160 4 -321 4l-29 -160h-119v311h690v-159l-471 -682h326l29 168h116v-322h-690z" />
+<glyph unicode="{" horiz-adv-x="690" d="M14 477v170q98 0 163 57.5t65 167.5l-2 78l-2 92q0 205 53 293q66 111 252 111q53 0 101 -9.5t50 -10.5t6 -1l-61 -196l-145 49q-63 -35 -64 -201l2 -205q0 -297 -215 -313q215 -8 215 -311l-2 -180q0 -143 29 -197q12 -23 35 -33l145 49l61 -196q-121 -23 -157 -23 q-182 0 -254 127q-51 90 -51 283l4 198q0 141 -142 187q-41 14 -86 14z" />
+<glyph unicode="|" horiz-adv-x="505" d="M160 -438v1859h186v-1859h-186z" />
+<glyph unicode="}" horiz-adv-x="690" d="M-10 -309l61 196l146 -49q63 29 63 230l-2 180q0 305 217 317q-217 0 -217 307l2 205q0 166 -63 201l-146 -49l-61 196q123 20 190.5 20.5t127 -28t91.5 -82.5q53 -86 54 -293l-2 -92l-2 -78q0 -111 64.5 -168t162.5 -57v-170q-92 0 -160 -51q-68 -53 -67 -150l4 -198 q0 -193 -52 -283q-72 -127 -254 -127q-43 0 -83.5 8.5t-73.5 14.5z" />
+<glyph unicode="~" horiz-adv-x="839" d="M51 1186l2 26q35 74 76 107q80 63 164 63q70 0 158 -47l63 -30q29 -14 53 -15l113 101l121 -140q-109 -121 -213 -121q-55 0 -116.5 29t-96.5 42t-80 13t-77 -31.5t-46 -68.5z" />
+<glyph unicode="&#xa1;" horiz-adv-x="520" d="M121 -387l65 901h142l75 -850l-43 -78zM137 887q0 51 35 86t85 35t87 -36t37 -85t-37 -85t-87 -36t-85 35t-35 86z" />
+<glyph unicode="&#xa2;" horiz-adv-x="894" d="M63 477q0 233 105 367q92 115 242 141v420h184v-420q96 -18 168 -80q47 -39 80 -96l-203 -96l-66 118q-41 10 -67 11q-248 0 -248 -361q0 -154 75 -245t197 -91q57 0 121 21.5t105 62.5l45 -143q-90 -68 -207 -86v-430h-184v430q-150 31 -242 145q-104 127 -105 332z" />
+<glyph unicode="&#xa3;" horiz-adv-x="1079" d="M61 42q0 32 21.5 78t64.5 83q82 82 114 213t40 276h-182v135l16 19h172l-4 192q0 289 205 355q59 20 123.5 20t115 -12t91.5 -29q66 -29 114 -65l-145 -187l-164 140q-96 -4 -125 -82q-18 -49 -18 -226v-106h286q14 0 15 -17v-137h-307q-14 -276 -82 -413q113 -8 315 -82 q39 -14 61 -15l156 105l80 -217q-72 -78 -231 -78q-100 0 -197.5 31.5t-145 46t-102.5 14.5t-89 -28.5t-44 -61.5h-149q-2 4 -3 10q-2 6 -2 38z" />
+<glyph unicode="&#xa4;" horiz-adv-x="1232" d="M104 317l138 138q-78 113 -78 254q0 143 82 260l-142 143l142 145l153 -153q98 55 216 55t216 -57l156 155l143 -145l-147 -145q82 -117 82 -258q0 -139 -78 -252l143 -140l-143 -145l-149 147q-102 -59 -222 -59t-223 57l-147 -145zM358 709q0 -113 72 -186.5t184 -73.5 q113 0 184.5 73.5t71.5 186.5t-71.5 186.5t-184.5 73.5t-184.5 -73.5t-71.5 -186.5z" />
+<glyph unicode="&#xa5;" horiz-adv-x="1249" d="M51 1266v149h424l14 -129l-124 -26l284 -451l281 453l-121 22v131h389v-149l-78 -21l-385 -612h223v-158h-225v-43h225v-158h-225v-104l234 -41l-17 -129h-631l-18 129l227 41v104h-243v158h243v43h-243v158h229l-381 614z" />
+<glyph unicode="&#xa6;" horiz-adv-x="528" d="M166 -381v778h196v-778h-196zM166 635v778h196v-778h-196z" />
+<glyph unicode="&#xa7;" horiz-adv-x="1030" d="M98 -254l17 346h139l29 -231q98 -29 165.5 -29t110.5 9t76 32q76 47 76 122t-44 118t-112 78.5t-144.5 69.5t-144.5 79q-156 100 -156 244.5t113 246.5q-117 98 -117 240q0 147 119 244q123 100 305 100q176 0 357 -61l26 -353h-141l-88 232q-57 20 -150.5 20t-154 -45 t-60.5 -104.5t32 -96t80 -66.5t104.5 -52.5t123 -55t124 -72.5t91.5 -81q66 -80 66 -197.5t-111 -228.5q94 -90 95 -219q0 -178 -142 -279q-125 -86 -321 -86q-113 0 -196 21.5t-167 54.5zM324 622.5q0 -63.5 61 -106.5t131 -74q117 -55 162 -80q47 63 47 110.5t-31.5 83.5 t-82 65.5t-113 57.5t-123.5 58q-51 -51 -51 -114.5z" />
+<glyph unicode="&#xa8;" horiz-adv-x="790" d="M106 1246q0 48 34 85t84 37t86 -37t36 -86t-37 -84t-85 -35t-83 36t-35 84zM442 1247q0 47 36 84t86 37t85 -37t35 -85t-36 -84t-84 -36t-85 37t-37 84z" />
+<glyph unicode="&#xa9;" horiz-adv-x="1466" d="M66 765q0 138 52 260t142 213t212 143.5t260 52.5t260 -52.5t213 -143.5t143.5 -213t52.5 -260t-52.5 -260t-143.5 -212t-213 -142.5t-260 -52.5t-260 52.5t-212 142.5t-142 212t-52 260zM246 766q0 -102 38 -190.5t105 -153.5q141 -143 344 -143t345.5 142t142.5 345 t-142.5 345t-345.5 142t-345 -142t-142 -345zM375 752q0 182 112 290q106 104 273 105q57 0 94 -4l53 -10l19 -248h-97l-28 104l-37 2q-104 0 -168 -57t-64 -166t61.5 -173.5t153 -64.5t164.5 45l54 -133q-98 -63 -192.5 -63t-164 26.5t-121.5 73.5q-113 104 -112 273z" />
+<glyph unicode="&#xaa;" horiz-adv-x="700" d="M78 1019.5q0 67.5 27.5 106.5t72.5 60q76 35 219 35v18q0 47 -23.5 61.5t-45.5 14.5q-31 0 -62 -6l-8 -49l-178 34q18 78 92 123q63 37 150.5 37t137.5 -27.5t72.5 -74.5t26.5 -110.5t4 -138.5t3 -93.5t14 -18.5l26 6l31 -94q-59 -45 -121.5 -45t-93.5 49 q-53 -53 -143.5 -53t-145.5 49t-55 116.5zM242 1038q0 -20 13 -39.5t50 -19.5q70 0 92 51v88q-156 0 -155 -80z" />
+<glyph unicode="&#xab;" horiz-adv-x="944" d="M12 694l437 439l110 -111l-330 -330l330 -332l-110 -108zM360 694l394 396l110 -111l-286 -287l286 -289l-110 -108z" />
+<glyph unicode="&#xac;" horiz-adv-x="1204" d="M100 778v131l23 23h928l22 -23v-413q0 -14 -16 -15h-144v297h-813z" />
+<glyph unicode="&#xad;" horiz-adv-x="825" d="M-57 639v176h938v-176h-938z" />
+<glyph unicode="&#xae;" horiz-adv-x="1466" d="M66 765q0 138 52 260t142 213t212 143.5t260 52.5t260 -52.5t213 -143.5t143.5 -213t52.5 -260t-52.5 -260t-143.5 -212t-213 -142.5t-260 -52.5t-260 52.5t-212 142.5t-142 212t-52 260zM246 766q0 -102 38 -190.5t105 -153.5q141 -143 344 -143t345.5 142t142.5 345 t-142.5 345t-345.5 142t-345 -142t-142 -345zM467 1026v119h205q174 0 262 -74q80 -65 80 -178q0 -147 -133 -211l94 -172l63 -12v-103h-180l-117 252q-23 -4 -43 -4h-41v-131l95 -23v-94h-275l-8 99l47 16v506zM657 776h29q178 0 178 116t-170 116h-37v-232z" />
+<glyph unicode="&#xaf;" horiz-adv-x="905" d="M117 1257v156h671v-156h-671z" />
+<glyph unicode="&#xb0;" horiz-adv-x="624" d="M68 1220.5q0 118.5 63 194.5q66 78 180 78q113 0 181 -78q66 -78 65.5 -195.5t-65 -194.5t-182 -77t-180 77t-62.5 195.5zM229 1221q0 -82 41 -119q14 -14 40 -14.5t41.5 13t25.5 34.5q18 37 18 86q0 78 -43 114q-16 14 -41.5 14.5t-41 -13t-23.5 -33.5q-17 -35 -17 -82z " />
+<glyph unicode="&#xb1;" horiz-adv-x="931" d="M129 346v156h674v-156h-674zM129 842v155h258v240h156v-240h260v-155h-260v-264h-156v264h-258z" />
+<glyph unicode="&#xb2;" horiz-adv-x="614" d="M72 1286q29 86 96.5 126t123.5 40t92 -11t65 -34q66 -51 65.5 -123t-25 -119t-58.5 -82.5t-69.5 -62.5t-56.5 -45h107l30 69h86l-22 -188h-391l-21 88l72 64q131 121 158.5 169.5t27.5 79.5q0 68 -67 68q-23 0 -43 -8l-31 -74z" />
+<glyph unicode="&#xb3;" horiz-adv-x="604" d="M72 934l63 108q35 -29 68 -50t78 -21t66.5 21.5t21.5 56.5q0 59 -146 59v98q125 0 125 72q0 16 -14.5 32.5t-34.5 16.5q-53 0 -57 -10l-29 -62l-135 45q59 152 233 152q72 0 115 -31q82 -59 82 -127q0 -106 -100 -129q45 -10 82.5 -40.5t37.5 -87t-20.5 -90.5t-52.5 -56 q-66 -43 -154 -43q-143 0 -229 86z" />
+<glyph unicode="&#xb4;" horiz-adv-x="641" d="M106 1124l238 310l66 16l125 -166l-345 -250z" />
+<glyph unicode="&#xb6;" horiz-adv-x="1196" d="M57 1024q0 154 95 258q123 133 354 133h575v-164h-98v-1251h-174v1251h-92v-979l-2 -67q0 -82 -187 -232l-135 185l139 88v366q-225 10 -350 121t-125 291z" />
+<glyph unicode="&#xb7;" horiz-adv-x="485" d="M121 489v328h219l27 -31l-2 -297h-244z" />
+<glyph unicode="&#xb8;" horiz-adv-x="831" d="M147 -510l89 176l145 -96q78 0 117 55q14 20 14 58t-37 73t-125 35l-26 2l-35 39l71 199h203l-47 -119q76 -20 132.5 -74.5t56.5 -158t-83 -174t-229 -70.5q-147 0 -246 55z" />
+<glyph unicode="&#xb9;" horiz-adv-x="485" d="M70 1399l241 69l23 -32v-478l74 -16v-86h-302l-6 82l78 14v367l-90 -16z" />
+<glyph unicode="&#xba;" horiz-adv-x="684" d="M70 1152q0 77 21.5 134t58.5 94q74 76 192 76q121 0 195 -76q78 -82 77 -227q0 -221 -163 -285q-51 -20 -109 -20q-186 0 -252 170q-20 57 -20 134zM233 1146.5q0 -65.5 28 -106.5t81 -41t82 40t29 107.5t-28 112t-82 44.5t-82 -45.5t-28 -111z" />
+<glyph unicode="&#xbb;" horiz-adv-x="946" d="M82 403l285 289l-285 287l111 111l393 -400l-393 -395zM387 1022l113 111l436 -443l-436 -438l-111 108l328 330z" />
+<glyph unicode="&#xbc;" horiz-adv-x="1343" d="M63 1362l273 78l24 -17v-114q0 -12 -2 -25v-524q0 -18 74 -19v-96h-338v92l92 15v522l-106 -17zM193 4l684 1411h182l-2 -29l-682 -1409l-176 23zM686 221v150l318 420h180v-435h96v-135h-96v-108l86 -13v-100h-422l-8 90l172 25v106h-326zM827 356h185v238z" />
+<glyph unicode="&#xbd;" horiz-adv-x="1435" d="M68 1362l272 78l25 -17v-114q0 -12 -3 -25v-524q0 -18 74 -19v-96h-338v92l92 15v522l-106 -17zM197 4l684 1411h182l-2 -29l-682 -1409l-176 23zM776 608q45 92 110.5 139.5t151.5 47.5t135.5 -18.5t79.5 -51.5q63 -63 64 -164q0 -141 -154 -311q-43 -49 -84 -94 l-20 -23h182l43 115h92l-26 -248h-514l-27 100q37 39 93 93.5t110 117.5q127 156 127 264q0 47 -29 63.5t-53 16.5q-27 0 -58 -12l-49 -117z" />
+<glyph unicode="&#xbe;" horiz-adv-x="1445" d="M59 1251q45 121 187 168q49 16 105.5 16.5t103.5 -13t82 -38.5q78 -55 77 -159q0 -61 -32.5 -109.5t-92.5 -66.5q66 -18 102 -63.5t36 -108.5q0 -119 -97 -185q-84 -59 -186 -59q-166 0 -262 72l111 114q59 -47 133 -47t112 55q13 18 13 47q0 113 -172 113h-27v119h27 q80 0 108 14q57 29 57 79t-36.5 73.5t-69.5 23.5q-35 0 -76 -16l-47 -100zM305 4l682 1411h184l-2 -29l-682 -1409l-176 23zM784 221v150l318 420h180v-435h96v-135h-96v-108l86 -13v-100h-422l-8 90l172 25v106h-326zM926 356h184v238z" />
+<glyph unicode="&#xbf;" horiz-adv-x="800" d="M47 -126q0 128 57.5 212t144.5 148.5t135 116.5t48 130v25l162 2l4 -21q6 -31 6 -88t-25.5 -106t-63.5 -87t-82 -67.5t-81 -64.5q-90 -78 -90 -172q0 -98 86 -140q31 -14 70 -14q84 0 135 19l53 194h125l-35 -323q-66 -23 -136.5 -41.5t-160.5 -18.5q-170 0 -261 84 t-91 212zM385 876.5q0 51.5 35 86t86 34.5t87 -35.5t36 -86t-37 -85t-88 -34.5t-85 34.5t-34 86z" />
+<glyph unicode="&#xc0;" horiz-adv-x="1245" d="M-2 127l106 37l414 1251h197l436 -1251l94 -37l-22 -127h-482v121l181 43l-99 307h-438l-94 -307l176 -41v-123h-442zM387 1726l115 168l69 -12l287 -317l-76 -90zM438 643h328l-168 514z" />
+<glyph unicode="&#xc1;" horiz-adv-x="1245" d="M-2 127l106 37l414 1251h197l436 -1251l94 -37l-22 -127h-482v121l181 43l-99 303h-438l-94 -303l176 -41v-123h-442zM387 1597l293 304l68 8l118 -187l-399 -229zM438 643h328l-168 514z" />
+<glyph unicode="&#xc2;" horiz-adv-x="1245" d="M-2 127l106 37l414 1251h197l436 -1251l94 -37l-22 -127h-482v121l181 43l-99 303h-438l-94 -303l176 -41v-123h-442zM274 1499l322 332h53l320 -334l-4 -10h-166l-178 121l-177 -121h-163zM438 643h328l-168 514z" />
+<glyph unicode="&#xc3;" horiz-adv-x="1245" d="M-2 127l106 37l414 1251h197l436 -1251l94 -37l-22 -127h-482v121l181 43l-99 303h-438l-94 -303l176 -41v-123h-442zM274 1559v34q45 100 148 144q45 18 113.5 18t127 -32.5t105.5 -67.5l18 -13l125 115l121 -137q-113 -125 -205 -125q-49 0 -83.5 15.5t-66.5 34 t-64.5 33.5t-87 15t-87 -34.5t-49.5 -69.5zM438 643h328l-168 514z" />
+<glyph unicode="&#xc4;" horiz-adv-x="1245" d="M-2 127l106 37l414 1251h197l436 -1251l94 -37l-22 -127h-482v121l181 43l-99 303h-438l-94 -303l176 -41v-123h-442zM311 1788q0 53 37 92t91.5 39t92 -39t37.5 -93t-40 -92t-91 -38t-89 39t-38 92zM438 643h328l-168 514zM674 1789q0 52 39 91t93 39t92 -39t38 -92 t-39 -92t-91 -39t-92 40t-40 92z" />
+<glyph unicode="&#xc5;" horiz-adv-x="1236" d="M-6 127l106 37l394 1192q-86 59 -86 170q0 86 59 145t145 60q86 0 146.5 -60.5t60.5 -157t-88 -157.5l416 -1192l94 -37l-22 -127h-482v121l181 43l-99 303h-438l-94 -303l176 -41v-123h-443zM434 643h328l-168 514zM535 1526q0 -37 21.5 -57.5t57 -20.5t57 20.5 t21.5 57.5t-21.5 57.5t-57 20.5t-57 -20.5t-21.5 -57.5z" />
+<glyph unicode="&#xc6;" horiz-adv-x="1609" d="M-25 127l107 37l524 1251h873l41 -385h-129l-78 209h-381v-430h323v-176h-323v-457h401l72 207h129l-41 -383h-868l-21 145l125 27v356h-319l-146 -364l180 -41v-123h-442zM481 705h248v546l-29 2z" />
+<glyph unicode="&#xc7;" horiz-adv-x="1193" d="M72 692q0 340 207 541q193 182 485 182q131 0 303 -39l39 -372h-139l-80 221q-39 14 -134.5 14t-185.5 -43t-153 -115q-127 -147 -127 -368q0 -236 141 -389q143 -156 381 -156q88 0 161.5 26.5t106.5 51.5l60 -162q-113 -80 -320 -90l-29 -74q72 -18 124.5 -69.5 t52.5 -148.5t-78 -163.5t-213 -66.5q-100 0 -219 49l-13 4l84 164l136 -88q72 0 108 51q14 18 14 53t-33.5 68.5t-117.5 33.5l-25 3l-33 34l58 160q-238 43 -391 217q-170 193 -170 471z" />
+<glyph unicode="&#xc8;" horiz-adv-x="1103" d="M98 145l125 27v1079l-123 11v153h873l41 -385h-129l-78 209h-381v-430h324v-176h-324v-457h401l72 207h129l-41 -383h-868zM301 1726l117 168l69 -12l285 -317l-74 -90z" />
+<glyph unicode="&#xc9;" horiz-adv-x="1103" d="M98 145l125 27v1079l-123 11v153h873l41 -385h-129l-78 209h-381v-430h324v-176h-324v-457h401l72 207h129l-41 -383h-868zM387 1597l295 304l70 8l116 -187l-399 -229z" />
+<glyph unicode="&#xca;" horiz-adv-x="1103" d="M98 145l125 27v1079l-123 11v153h873l41 -385h-129l-78 209h-381v-430h324v-176h-324v-457h401l72 207h129l-41 -383h-868zM207 1499l321 332h54l319 -334l-4 -10h-166l-178 121l-176 -121h-164z" />
+<glyph unicode="&#xcb;" horiz-adv-x="1103" d="M98 145l125 27v1079l-123 11v153h873l41 -385h-129l-78 209h-381v-430h324v-176h-324v-457h401l72 207h129l-41 -383h-868zM258 1810q0 53 37 92.5t91 39.5t92 -39t38 -93.5t-40 -92.5t-91 -38t-89 39t-38 92zM621 1811.5q0 52.5 38.5 91.5t93 39t92.5 -39t38 -93 q0 -53 -39 -92t-91.5 -39t-92 40t-39.5 92.5z" />
+<glyph unicode="&#xcc;" horiz-adv-x="655" d="M78 147l147 23v1079l-129 11v155h447l20 -153l-133 -21v-1075l133 -16v-150h-448zM78 1726l117 168l65 -12l287 -317l-74 -90z" />
+<glyph unicode="&#xcd;" horiz-adv-x="653" d="M94 147l129 23v1079l-129 11v155h447l20 -153l-133 -21v-1075l133 -16v-150h-448zM96 1597l293 304l70 8l116 -187l-399 -229z" />
+<glyph unicode="&#xce;" horiz-adv-x="653" d="M-20 1499l321 332h53l320 -334l-4 -10h-166l-178 121l-176 -121h-164zM94 147l129 23v1079l-129 11v155h447l20 -153l-133 -21v-1075l133 -16v-150h-448z" />
+<glyph unicode="&#xcf;" horiz-adv-x="653" d="M43 1634q0 53 37 91t88 38t91 -37.5t40 -91.5q0 -53 -40 -91t-91 -38t-88 38t-37 91zM94 147l129 23v1079l-129 11v155h447l20 -153l-133 -21v-1075l133 -16v-150h-448zM371 1633.5q0 54.5 39 92t92 37.5t89 -38.5t36 -91t-37 -90.5t-89 -38t-91 37t-39 91.5z" />
+<glyph unicode="&#xd0;" horiz-adv-x="1294" d="M76 637v139l20 23h127v452l-123 13v151h387q334 0 531 -178q203 -182 203 -520t-195 -529q-193 -188 -530 -188h-377l-21 145l125 29v463h-147zM426 176h49q264 0 399 148q132 139 132 401q0 129 -42 227.5t-120 161.5q-152 129 -418 129v-444h340q14 0 14 -17v-145h-354 v-461z" />
+<glyph unicode="&#xd1;" horiz-adv-x="1425" d="M96 145l129 27v1075l-123 13v155h428l517 -1218v1050l-127 17v151h403l27 -153l-131 -25v-1237h-240l-582 1223v-893l2 -146q0 -12 2 -18l117 -21v-145h-397zM342 1559v34q45 100 150 144q43 18 111.5 18t126.5 -32.5t106 -67.5l18 -13l125 115l121 -137 q-113 -125 -205 -125q-49 0 -84 15.5t-66.5 34t-64.5 33.5t-87 15t-87 -34.5t-49 -69.5z" />
+<glyph unicode="&#xd2;" d="M88 705q0 303 143 499q156 213 435 213t436 -213q145 -199 145 -499q0 -301 -145 -500q-157 -213 -436 -213t-435 213q-143 197 -143 500zM303 700q0 -221 90 -370q96 -162 273 -162q178 0 276 162q90 147 90 370q0 225 -90 377q-100 164 -276 164t-273 -164 q-90 -152 -90 -377zM428 1726l115 168l67 -12l287 -317l-74 -90z" />
+<glyph unicode="&#xd3;" d="M88 705q0 303 143 499q156 213 435 213t436 -213q145 -199 145 -499q0 -301 -145 -500q-157 -213 -436 -213t-435 213q-143 197 -143 500zM303 700q0 -221 90 -370q96 -162 273 -162q178 0 276 162q90 147 90 370q0 225 -90 377q-100 164 -276 164t-273 -164 q-90 -152 -90 -377zM449 1597l292 304l70 8l117 -187l-400 -229z" />
+<glyph unicode="&#xd4;" d="M88 705q0 303 143 499q156 213 435 213t436 -213q145 -199 145 -499q0 -301 -145 -500q-157 -213 -436 -213t-435 213q-143 197 -143 500zM303 700q0 -221 90 -370q96 -162 273 -162q178 0 276 162q90 147 90 370q0 225 -90 377q-100 164 -276 164t-273 -164 q-90 -152 -90 -377zM319 1499l322 332h53l320 -334l-2 -10h-168l-178 121l-177 -121h-167z" />
+<glyph unicode="&#xd5;" d="M88 705q0 303 143 499q156 213 435 213t436 -213q145 -199 145 -499q0 -301 -145 -500q-157 -213 -436 -213t-435 213q-143 197 -143 500zM297 1559v34q45 100 145 144q45 18 117 18t135.5 -38t110.5 -75l125 115l121 -137q-66 -82 -148 -113q-29 -12 -66.5 -12 t-73.5 15.5t-66.5 34t-63.5 33.5t-86 15q-84 0 -139 -104zM303 700q0 -221 90 -370q96 -162 273 -162q178 0 276 162q90 147 90 370q0 225 -90 377q-100 164 -276 164t-273 -164q-90 -152 -90 -377z" />
+<glyph unicode="&#xd6;" d="M88 705q0 303 143 499q156 213 435 213t436 -213q145 -199 145 -499q0 -301 -145 -500q-157 -213 -436 -213t-435 213q-143 197 -143 500zM303 700q0 -221 90 -370q96 -162 273 -162q178 0 276 162q90 147 90 370q0 225 -90 377q-100 164 -276 164t-273 -164 q-90 -152 -90 -377zM371 1810q0 53 36.5 92.5t91 39.5t92.5 -39t38 -93.5t-40 -92.5t-91.5 -38t-89 39t-37.5 92zM733 1811.5q0 52.5 39 91.5t93.5 39t92 -39t37.5 -93q0 -53 -38.5 -92t-91 -39t-92.5 40t-40 92.5z" />
+<glyph unicode="&#xd7;" horiz-adv-x="978" d="M100 1008l109 108l283 -282l274 274l111 -109l-277 -276l272 -270l-108 -109l-272 270l-277 -276l-109 111l277 276z" />
+<glyph unicode="&#xd8;" d="M88 691.5q0 156.5 36 285.5t107 227q156 213 435 213q104 0 194 -33l70 154h200l-2 -39l-100 -217q111 -98 165 -250.5t54 -311.5t-36.5 -288t-108.5 -227q-158 -213 -436 -213q-123 0 -215 39l-64 -140h-192l-7 37l99 213q-100 98 -149.5 246t-49.5 304.5zM303 704.5 q0 -221.5 78 -358.5l401 873q-55 23 -132 22.5t-145.5 -45.5t-111.5 -119q-90 -151 -90 -372.5zM528 199q61 -31 145.5 -31t154 44t114.5 118q90 147 90 372t-96 381z" />
+<glyph unicode="&#xd9;" horiz-adv-x="1306" d="M61 1262v153h474v-151l-142 -19v-768q0 -309 283 -309q188 0 250 164q23 59 22 147v768l-125 19v149h414v-151l-117 -21v-772q0 -238 -137 -365q-121 -115 -313 -114q-236 0 -359 126t-123 353v778zM420 1726l115 168l69 -12l287 -317l-76 -90z" />
+<glyph unicode="&#xda;" horiz-adv-x="1306" d="M61 1262v153h474v-151l-142 -19v-768q0 -309 283 -309q188 0 250 164q23 59 22 147v768l-125 19v149h414v-151l-117 -21v-772q0 -238 -137 -365q-121 -115 -313 -114q-236 0 -359 126t-123 353v778zM485 1597l295 304l70 8l115 -187l-398 -229z" />
+<glyph unicode="&#xdb;" horiz-adv-x="1306" d="M61 1262v153h474v-151l-142 -19v-768q0 -309 283 -309q188 0 250 164q23 59 22 147v768l-125 19v149h414v-151l-117 -21v-772q0 -238 -137 -365q-121 -115 -313 -114q-236 0 -359 126t-123 353v778zM326 1499l321 332h53l320 -334l-2 -10h-168l-178 121l-176 -121h-168z " />
+<glyph unicode="&#xdc;" horiz-adv-x="1325" d="M61 1262v153h474v-151l-142 -19v-768q0 -145 72 -227t219 -82q190 0 258 164q25 59 25 147v768l-125 19v149h413v-151l-116 -21v-772q0 -238 -144 -365q-125 -115 -317 -114q-236 0 -363 126t-127 353v778zM395 1810q0 53 37 92.5t91.5 39.5t92 -39t37.5 -93.5t-40 -92.5 t-91 -38t-89 39t-38 92zM758 1811.5q0 52.5 39 91.5t93 39t92 -39t38 -93q0 -53 -39 -92t-91 -39t-92 40t-40 92.5z" />
+<glyph unicode="&#xdd;" horiz-adv-x="1153" d="M8 1262v153h436l15 -135l-137 -25l284 -524l258 526l-125 23v135h400v-153l-88 -21l-369 -737v-334l238 -41l-21 -129h-635l-20 129l235 41v346l-389 727zM412 1597l295 304l69 8l115 -187l-397 -229z" />
+<glyph unicode="&#xde;" horiz-adv-x="1075" d="M94 147l129 23v1079l-129 11v155h447l20 -153l-133 -21l4 -76q301 0 451.5 -103.5t150.5 -320.5q0 -219 -162 -331q-143 -98 -403 -99h-41v-145l236 -37v-129h-551zM428 487h33q199 0 278.5 64.5t79.5 173.5q0 141 -94 197.5t-281 56.5h-16v-492z" />
+<glyph unicode="&#xdf;" horiz-adv-x="1079" d="M66 0v119l104 20v948q0 203 106 314q96 96 263 96q143 0 243 -80q111 -88 111 -233q0 -94 -34 -154.5t-75 -103.5t-74.5 -76t-33.5 -70q8 -45 92 -88q268 -139 268 -358q0 -160 -114 -260q-102 -90 -244 -90q-119 0 -229 49l110 192q27 -23 53.5 -48t49.5 -40 q72 0 126 53.5t54 147.5q0 88 -90 162q-39 31 -84 58.5t-84 59.5q-90 72 -90 158q0 59 32.5 100.5t72.5 82t73 92t33 133.5q-4 66 -52 112.5t-118 46.5q-176 0 -177 -217v-1126h-292z" />
+<glyph unicode="&#xe0;" horiz-adv-x="942" d="M74 253.5q0 108.5 44 172t115 100.5q125 63 367 68v145q0 41 -38 75t-118 34q-76 0 -112 -33l-41 -133l-215 63q47 170 231 230q66 20 148 20q160 0 244.5 -79.5t84.5 -208.5v-525q0 -43 29 -43q14 0 43 15l45 -109q-63 -53 -141 -53q-117 0 -148 92q-90 -94 -229 -94 t-224 77.5t-85 186zM256 1294l123 146l63 -17l220 -323l-76 -76zM268 283.5q0 -50.5 15.5 -76t38 -40.5t47 -20.5t55.5 -5.5t62.5 13.5t54.5 31.5q43 33 59 82v176q-135 0 -198.5 -21.5t-98.5 -55t-35 -84z" />
+<glyph unicode="&#xe1;" horiz-adv-x="942" d="M74 253.5q0 108.5 44 172t115 100.5q125 63 367 68v145q0 41 -38 75t-118 34q-76 0 -112 -33l-41 -133l-215 63q47 170 231 230q66 20 148 20q160 0 244.5 -79.5t84.5 -208.5v-525q0 -43 29 -43q14 0 43 15l45 -109q-63 -53 -141 -53q-117 0 -148 92q-90 -94 -229 -94 t-224 77.5t-85 186zM268 283.5q0 -50.5 15.5 -76t38 -40.5t47 -20.5t55.5 -5.5t62.5 13.5t54.5 31.5q43 33 59 82v176q-135 0 -198.5 -21.5t-98.5 -55t-35 -84zM270 1174l236 305l65 16l123 -164l-340 -248z" />
+<glyph unicode="&#xe2;" horiz-adv-x="942" d="M74 253.5q0 108.5 44 172t115 100.5q125 63 367 68v145q0 41 -38 75t-118 34q-76 0 -112 -33l-41 -133l-215 63q47 170 231 230q66 20 148 20q160 0 244.5 -79.5t84.5 -208.5v-525q0 -43 29 -43q14 0 43 15l45 -109q-63 -53 -141 -53q-117 0 -148 92q-90 -94 -229 -94 t-224 77.5t-85 186zM123 1108l272 326h68l274 -328l-12 -23h-160l-137 107l-137 -107h-158zM268 283.5q0 -50.5 15.5 -76t38 -40.5t47 -20.5t55.5 -5.5t62.5 13.5t54.5 31.5q43 33 59 82v176q-135 0 -198.5 -21.5t-98.5 -55t-35 -84z" />
+<glyph unicode="&#xe3;" horiz-adv-x="942" d="M74 253.5q0 108.5 44 172t115 100.5q125 63 367 68v145q0 41 -38 75t-118 34q-76 0 -112 -33l-41 -133l-215 63q47 170 231 230q66 20 148 20q160 0 244.5 -79.5t84.5 -208.5v-525q0 -43 29 -43q14 0 43 15l45 -109q-63 -53 -141 -53q-117 0 -148 92q-90 -94 -229 -94 t-224 77.5t-85 186zM143 1198q0 57 54 115q66 72 163 71q74 0 177 -59q25 -14 47 -22l2 -7l94 97l115 -136q-43 -47 -89.5 -79.5t-94.5 -32.5t-77.5 12t-57 25.5t-54 26t-57.5 12.5q-74 0 -113 -93zM268 283.5q0 -50.5 15.5 -76t38 -40.5t47 -20.5t55.5 -5.5t62.5 13.5 t54.5 31.5q43 33 59 82v176q-135 0 -198.5 -21.5t-98.5 -55t-35 -84z" />
+<glyph unicode="&#xe4;" horiz-adv-x="942" d="M74 253.5q0 108.5 44 172t115 100.5q125 63 367 68v145q0 41 -38 75t-118 34q-76 0 -112 -33l-41 -133l-215 63q47 170 231 230q66 20 148 20q160 0 244.5 -79.5t84.5 -208.5v-525q0 -43 29 -43q14 0 43 15l45 -109q-63 -53 -141 -53q-117 0 -148 92q-90 -94 -229 -94 t-224 77.5t-85 186zM141 1278q0 53 37 90t90 37t90 -37t37 -90t-36.5 -90t-90.5 -37q-53 0 -90 37t-37 90zM268 283.5q0 -50.5 15.5 -76t38 -40.5t47 -20.5t55.5 -5.5t62.5 13.5t54.5 31.5q43 33 59 82v176q-135 0 -198.5 -21.5t-98.5 -55t-35 -84zM471 1278q0 53 37 90 t90 37t90 -37t37 -90t-37 -90t-90 -37t-90 37t-37 90z" />
+<glyph unicode="&#xe5;" horiz-adv-x="942" d="M74 253.5q0 108.5 44 172t115 100.5q125 63 367 68v145q0 41 -38 75t-118 34q-76 0 -112 -33l-41 -133l-215 63q47 170 231 230q66 20 148 20q160 0 244.5 -79.5t84.5 -208.5v-525q0 -43 29 -43q14 0 43 15l45 -109q-63 -53 -141 -53q-117 0 -148 92q-90 -94 -229 -94 t-224 77.5t-85 186zM268 283.5q0 -50.5 15.5 -76t38 -40.5t47 -20.5t55.5 -5.5t62.5 13.5t54.5 31.5q43 33 59 82v176q-135 0 -198.5 -21.5t-98.5 -55t-35 -84zM268 1290q0 82 56.5 138.5t139.5 56.5t139 -56.5t56 -138.5t-56 -138t-139 -56t-139.5 56t-56.5 138zM389 1290 q0 -31 21.5 -52t52.5 -21t53.5 21.5t22.5 51.5q0 31 -22.5 52.5t-53.5 21.5t-52.5 -21.5t-21.5 -52.5z" />
+<glyph unicode="&#xe6;" horiz-adv-x="1441" d="M74 252.5q0 107.5 46 171t122 100.5q135 70 358 70v145q0 41 -38 75t-118 34q-76 0 -112 -33l-41 -133l-215 63q47 170 231 230q66 20 148 20q198 0 286 -131q131 131 318 131q137 0 229 -69q96 -72 96 -199q0 -213 -278 -283q-98 -25 -236 -24h-36q-18 0 -39 2 q20 -193 163 -254q51 -23 124 -23t131.5 29t80.5 47l39 -139q-25 -27 -98.5 -58.5t-182 -31.5t-210 46t-166.5 144q-53 -127 -182 -174q-47 -18 -107 -18q-143 0 -228 77.5t-85 185zM268 274q0 -72 54 -106q37 -27 85 -27t79.5 13.5t54.5 31.5q43 33 59 82v176 q-332 0 -332 -170zM795 573h75q135 0 196.5 19.5t92.5 49.5t31 63.5t-6 55t-21.5 39t-43 30t-68.5 12.5t-83 -16.5t-77 -51.5q-82 -78 -96 -201z" />
+<glyph unicode="&#xe7;" horiz-adv-x="882" d="M74 477q0 268 143 408q115 111 297 110q133 0 231 -69q80 -55 107 -117l-203 -96l-65 118q-41 10 -68 11q-248 0 -248 -361q0 -154 75 -245t198 -91q57 0 120.5 21.5t104.5 62.5l45 -143q-92 -74 -227 -90l-25 -72q53 -14 96 -52t43 -116t-62.5 -130t-172.5 -52 q-84 0 -180 39l67 135l111 -76q61 0 92 43q10 16 10 39q0 90 -145 90l-25 31l43 123q-156 27 -252 141q-111 129 -110 338z" />
+<glyph unicode="&#xe8;" horiz-adv-x="927" d="M72 485q0 -242 133 -370q125 -123 334 -123q141 0 258 67q25 14 32 23l-45 143q-47 -47 -145 -69q-39 -10 -94.5 -10.5t-102.5 18t-82 49.5q-61 57 -84 164q315 4 455 115q105 83 105 233q0 61 -26 112.5t-69 86.5q-92 72 -227 71q-184 0 -307 -131q-135 -141 -135 -379z M266 528q12 154 84 238q66 74 170 74q59 0 90 -37t31 -94.5t-39 -95.5t-96 -56q-90 -29 -240 -29zM317 1378l121 162l66 -16l233 -303l-84 -88z" />
+<glyph unicode="&#xe9;" horiz-adv-x="909" d="M71.5 486q0.5 124 37 219.5t98.5 158.5q123 131 307 131q135 0 227 -71q95 -76 95 -199q0 -63 -21.5 -123.5t-83.5 -109.5q-139 -111 -455 -115q33 -162 166 -213q47 -18 102.5 -18.5t94.5 9t68 21.5q55 27 77 49l45 -143q-23 -23 -75 -45q-205 -84 -402 -14 q-178 63 -246 247q-35 92 -34.5 216zM266 528q150 0 223.5 23.5t112.5 61.5t39 95.5t-30.5 94.5t-89 37t-98.5 -18.5t-73 -55.5q-72 -84 -84 -238zM319 1174l236 305l66 16l122 -164l-340 -248z" />
+<glyph unicode="&#xea;" horiz-adv-x="927" d="M71.5 486q0.5 124 37 219.5t98.5 158.5q123 131 307 131q135 0 227 -71q95 -76 95 -199q0 -63 -21.5 -123.5t-83.5 -109.5q-139 -111 -455 -115q33 -162 166 -213q47 -18 102.5 -18.5t94.5 9t68 21.5q55 27 77 49l45 -143q-23 -23 -75 -45q-205 -84 -402 -14 q-178 63 -246 247q-35 92 -34.5 216zM199 1108l272 326h68l274 -328l-12 -23h-160l-137 107l-137 -107h-158zM266 528q150 0 223.5 23.5t112.5 61.5t39 95.5t-30.5 94.5t-89 37t-98.5 -18.5t-73 -55.5q-72 -84 -84 -238z" />
+<glyph unicode="&#xeb;" horiz-adv-x="927" d="M71.5 486q0.5 124 37 219.5t98.5 158.5q123 131 307 131q135 0 227 -71q95 -76 95 -199q0 -63 -21.5 -123.5t-83.5 -109.5q-139 -111 -455 -115q33 -162 166 -213q47 -18 102.5 -18.5t94.5 9t68 21.5q55 27 77 49l45 -143q-23 -23 -75 -45q-205 -84 -402 -14 q-178 63 -246 247q-35 92 -34.5 216zM217 1282q0 47 32 80t80 33t80.5 -34t32.5 -80t-33.5 -79t-80.5 -33t-79 33t-32 80zM266 528q150 0 223.5 23.5t112.5 61.5t39 95.5t-30.5 94.5t-89 37t-98.5 -18.5t-73 -55.5q-72 -84 -84 -238zM524 1283q0 46 32 79t80 33t81 -34 t33 -80t-34 -79t-81 -33t-79 34t-32 80z" />
+<glyph unicode="&#xec;" horiz-adv-x="548" d="M59 950l21 -123l113 9v-697l-127 -28l22 -111h410v111l-121 32v787l-66 65zM59 1333l123 164l66 -16l233 -305l-82 -89z" />
+<glyph unicode="&#xed;" horiz-adv-x="548" d="M59 950l252 45l66 -65v-787l121 -32v-111h-410l-22 111l127 28v697l-113 -9zM66 1174l235 305l66 16l120 -164l-337 -246z" />
+<glyph unicode="&#xee;" horiz-adv-x="548" d="M-23 1114l256 309h50l256 -307l-11 -16h-137l-135 110l-137 -110h-133zM59 950l252 45l66 -65v-787l121 -32v-111h-410l-22 111l127 28v697l-113 -9z" />
+<glyph unicode="&#xef;" horiz-adv-x="548" d="M-2 1282q0 47 31.5 80t80 33t81 -34t32.5 -80t-33.5 -79t-81 -33t-79 33t-31.5 80zM59 950l252 45l66 -65v-787l121 -32v-111h-410l-22 111l127 28v697l-113 -9zM283 1283q0 46 32.5 79t79.5 33t81 -34t34 -80t-35 -79t-81 -33t-78.5 34t-32.5 80z" />
+<glyph unicode="&#xf0;" horiz-adv-x="1046" d="M72 438q0 190 108 328q115 139 293 139q170 0 260 -94q-45 156 -155 274l-218 -122l-65 116l166 113q-84 63 -207 121l76 182q154 -59 303 -184l219 149l100 -164l-198 -112q188 -229 207 -529v-41q0 -256 -107 -426q-123 -197 -348 -196q-213 0 -330 143 q-104 125 -104 303zM266 438q0 -125 68 -197.5t174 -72.5q195 0 244 274q0 141 -80 222q-68 68 -178 67q-115 0 -175 -90q-53 -78 -53 -203z" />
+<glyph unicode="&#xf1;" horiz-adv-x="1085" d="M59 950q27 4 62 11.5t69.5 13.5t67.5 11t53 9l60 -75q98 76 245 75q213 0 281 -155q23 -53 23 -131v-564l122 -34v-111h-407l-25 111l125 28v539q0 92 -43 126t-106.5 34t-123 -27t-85.5 -53v-615l119 -32v-111h-408l-25 111l130 28v697l-113 -9zM246 1198q0 57 53 115 q66 72 164 71q74 0 176 -59q25 -14 47 -22l2 -7l94 97l115 -136q-43 -47 -89 -79.5t-94 -32.5t-78 12t-57.5 25.5t-54 26t-57.5 12.5q-74 0 -113 -93z" />
+<glyph unicode="&#xf2;" horiz-adv-x="1013" d="M74 502q0 -119 31.5 -212t91.5 -159q121 -139 311 -139q182 0 303 131q131 137 131 375q0 227 -123 362t-311 135q-184 0 -303 -127q-131 -137 -131 -366zM268 485q0 250 135 330q45 27 105 27q111 0 175.5 -95.5t64.5 -265.5t-68 -253t-174.5 -83t-172 85t-65.5 255z M319 1333l123 164l66 -16l233 -307l-82 -89z" />
+<glyph unicode="&#xf3;" horiz-adv-x="1013" d="M74 502q0 119 34.5 211t96.5 155q119 127 303 127q188 0 311 -135t123 -362q0 -238 -131 -375q-121 -131 -303 -131q-190 0 -311 139q-123 138 -123 371zM268.5 480q-0.5 -165 65 -250t172 -85t174.5 83t68 253t-65 265.5t-175 95.5q-117 0 -180 -101q-59 -96 -59.5 -261 zM326 1174l235 305l66 16l123 -164l-340 -248z" />
+<glyph unicode="&#xf4;" horiz-adv-x="1011" d="M74 502q0 119 34.5 211t96.5 155q119 127 303 127q188 0 311 -135t123 -362q0 -238 -131 -375q-121 -131 -303 -131q-190 0 -311 139q-123 138 -123 371zM223 1114l256 309h49l256 -307l-8 -16h-135l-137 110l-137 -110h-134zM268.5 480q-0.5 -165 65 -250t172 -85 t174.5 83t68 253t-65 265.5t-175 95.5q-117 0 -180 -101q-59 -96 -59.5 -261z" />
+<glyph unicode="&#xf5;" horiz-adv-x="1011" d="M74 502q0 119 34.5 211t96.5 155q119 127 303 127q188 0 311 -135t123 -362q0 -238 -131 -375q-121 -131 -303 -131q-190 0 -311 139q-123 138 -123 371zM193 1196q0 57 53 115q70 74 164 73q72 0 176 -59q27 -14 49 -22l2 -7l94 95l115 -136q-45 -47 -89 -78.5 t-94.5 -31.5t-80 11t-56.5 26q-68 37 -112.5 37t-72.5 -29t-38 -64zM268.5 480q-0.5 -165 65 -250t172 -85t174.5 83t68 253t-65 265.5t-175 95.5q-117 0 -180 -101q-59 -96 -59.5 -261z" />
+<glyph unicode="&#xf6;" horiz-adv-x="1011" d="M74 502q0 119 34.5 211t96.5 155q119 127 303 127q188 0 311 -135t123 -362q0 -238 -131 -375q-121 -131 -303 -131q-190 0 -311 139q-123 138 -123 371zM246 1282q0 47 31.5 80t80 33t81 -34t32.5 -80t-34 -79t-81 -33t-78.5 33t-31.5 80zM268.5 480q-0.5 -165 65 -250 t172 -85t174.5 83t68 253t-65 265.5t-175 95.5q-117 0 -180 -101q-59 -96 -59.5 -261zM553 1283q0 46 31.5 79t80 33t81 -34t32.5 -80t-33.5 -79t-81 -33t-79 34t-31.5 80z" />
+<glyph unicode="&#xf7;" horiz-adv-x="858" d="M92 520v156h674v-156h-674zM328 284q0 46 31.5 78.5t79.5 32.5t81 -33.5t33 -79.5t-34 -79t-81 -33t-78.5 34t-31.5 80zM328 915.5q0 47.5 31.5 80t79.5 32.5t81 -33.5t33 -80t-34 -79t-81 -32.5t-78.5 32.5t-31.5 80z" />
+<glyph unicode="&#xf8;" horiz-adv-x="1011" d="M74 498q0 231 131 370q119 127 303 127q61 0 125 -18l108 237h174l-2 -26l-131 -291q158 -139 158 -399q0 -238 -129 -375q-123 -131 -303 -131q-61 0 -127 18l-94 -211h-168l-6 27l120 266q-160 137 -159 406zM268 493.5q0 -147.5 43 -227.5l256 563q-29 8 -59 9 q-119 0 -179.5 -98.5t-60.5 -246zM446 154q25 -8 62 -9q104 0 170.5 83t66.5 240t-47 245z" />
+<glyph unicode="&#xf9;" horiz-adv-x="1044" d="M25 950l20 -119h113v-501q0 -170 98 -260q86 -78 229 -78q133 0 230 92q33 -92 139 -92q76 0 133 57l-29 92l-36 -4q-37 0 -37 68v723l-60 69l-250 -47l19 -119h106v-575q-18 -47 -77 -80q-53 -29 -95.5 -29t-74 7.5t-56.5 29.5q-55 53 -55 189v555l-63 67zM236 1333 l120 164l66 -16l235 -307l-84 -89z" />
+<glyph unicode="&#xfa;" horiz-adv-x="1044" d="M25 950l254 45l63 -67v-555q0 -193 113 -217q31 -8 58.5 -8.5t55 7t54.5 21.5q59 33 77 80v575h-106l-19 119l250 47l60 -69v-723q0 -68 37 -68l36 4l29 -92q-57 -57 -133 -57q-106 0 -139 92q-96 -92 -230 -92q-225 0 -301 184q-27 63 -26 154v501h-113zM305 1174 l236 305l65 16l123 -164l-340 -248z" />
+<glyph unicode="&#xfb;" horiz-adv-x="1044" d="M25 950l254 45l63 -67v-555q0 -193 113 -217q31 -8 58.5 -8.5t55 7t54.5 21.5q59 33 77 80v575h-106l-19 119l250 47l60 -69v-723q0 -68 37 -68l36 4l29 -92q-57 -57 -133 -57q-106 0 -139 92q-96 -92 -230 -92q-225 0 -301 184q-27 63 -26 154v501h-113zM201 1114 l256 309h49l256 -307l-10 -16h-138l-135 110l-137 -110h-133z" />
+<glyph unicode="&#xfc;" horiz-adv-x="1044" d="M25 950l254 45l63 -67v-555q0 -193 113 -217q31 -8 58.5 -8.5t55 7t54.5 21.5q59 33 77 80v575h-106l-19 119l250 47l60 -69v-723q0 -68 37 -68l36 4l29 -92q-57 -57 -133 -57q-106 0 -139 92q-96 -92 -230 -92q-225 0 -301 184q-27 63 -26 154v501h-113zM256 1282 q0 47 31.5 80t80 33t81 -34t32.5 -80t-33.5 -79t-81 -33t-79 33t-31.5 80zM563 1283q0 46 32 79t80 33t80.5 -34t32.5 -80t-33.5 -79t-80.5 -33t-79 34t-32 80z" />
+<glyph unicode="&#xfd;" horiz-adv-x="983" d="M2 979l254 16l276 -829l259 686h-107l-14 125l248 18l53 -69q-184 -522 -329.5 -896t-169 -422t-54.5 -87q-72 -84 -185 -84q-90 0 -182 82l76 141q57 -70 121 -70q66 0 112 123q14 35 27 66l45 121l-332 952h-82zM283 1174l235 305l66 16l123 -164l-340 -248z" />
+<glyph unicode="&#xfe;" horiz-adv-x="1007" d="M8 1466l260 39l62 -65v-500q86 55 188.5 55t176 -34.5t126.5 -98.5q113 -135 113 -356q0 -279 -152 -412q-117 -102 -286 -102q-102 0 -170 33q4 -66 4 -93v-329l245 -49v-113h-530l-14 110l112 27v1774l-116 -9zM330 197q18 -20 63 -36t90 -16t88 15.5t80 56.5 q88 90 88 277q0 172 -75 264q-62 80 -168 80q-49 0 -95.5 -19.5t-70.5 -48.5v-573z" />
+<glyph unicode="&#xff;" horiz-adv-x="978" d="M0 979l248 16l276 -829l264 694h-108l-14 117l249 18l52 -69q-164 -463 -284 -769.5t-158 -403.5t-61.5 -145t-53.5 -87q-72 -84 -185 -84q-90 0 -182 82l76 141q57 -70 121 -70q66 0 112 123q14 35 27 66l45 121l-332 960h-76zM215 1282q0 47 32 80t80 33t80.5 -34 t32.5 -80t-33.5 -79t-80.5 -33t-79 33t-32 80zM522 1283q0 46 32 79t80 33t81 -34t33 -80t-34 -79t-81 -33t-79 34t-32 80z" />
+<glyph unicode="&#x152;" horiz-adv-x="1787" d="M88 705q0 303 143 499q156 213 435 213l55 -2h936l41 -385h-129l-78 209h-381v-430h324v-176h-324v-457h401l72 207h129l-41 -383h-872q-70 -8 -133 -8q-279 0 -435 213q-143 197 -143 500zM303 700q0 -215 111 -370q113 -162 293 -162q133 0 200 72v923 q-96 78 -199.5 78t-178 -45t-123.5 -119q-102 -152 -103 -377z" />
+<glyph unicode="&#x153;" horiz-adv-x="1587" d="M74 498q0 233 131 370q119 127 303 127q219 0 342 -174q63 86 153.5 130t172 44t140 -18.5t101.5 -52.5q96 -76 96 -203q0 -145 -104 -229q-139 -111 -455 -115q33 -162 166 -213q47 -18 102.5 -18.5t94.5 9t67 21.5q55 27 78 49l45 -143q-23 -23 -75 -45 q-109 -45 -215 -45q-248 0 -373 168q-61 -84 -149.5 -126t-185.5 -42t-176 35.5t-136 103.5q-123 137 -123 367zM268.5 480q-0.5 -165 65 -250t172 -85t174.5 83t68 253t-65 265.5t-175 95.5q-117 0 -180 -101q-59 -96 -59.5 -261zM944 528q150 0 223.5 23.5t112.5 61.5 t39 95.5t-31 94.5t-89 37t-98 -18.5t-73 -55.5q-72 -84 -84 -238z" />
+<glyph unicode="&#x2000;" horiz-adv-x="971" />
+<glyph unicode="&#x2001;" horiz-adv-x="1942" />
+<glyph unicode="&#x2002;" horiz-adv-x="971" />
+<glyph unicode="&#x2003;" horiz-adv-x="1942" />
+<glyph unicode="&#x2004;" horiz-adv-x="647" />
+<glyph unicode="&#x2005;" horiz-adv-x="485" />
+<glyph unicode="&#x2006;" horiz-adv-x="323" />
+<glyph unicode="&#x2007;" horiz-adv-x="323" />
+<glyph unicode="&#x2008;" horiz-adv-x="242" />
+<glyph unicode="&#x2009;" horiz-adv-x="388" />
+<glyph unicode="&#x200a;" horiz-adv-x="107" />
+<glyph unicode="&#x2010;" horiz-adv-x="817" d="M119 500v125l24 28h543q12 0 12 -16v-137h-579z" />
+<glyph unicode="&#x2011;" horiz-adv-x="817" d="M119 500v125l24 28h543q12 0 12 -16v-137h-579z" />
+<glyph unicode="&#x2012;" horiz-adv-x="817" d="M119 500v125l24 28h543q12 0 12 -16v-137h-579z" />
+<glyph unicode="&#x2013;" horiz-adv-x="987" d="M111 616v154h759v-154h-759z" />
+<glyph unicode="&#x2014;" horiz-adv-x="1294" d="M111 616v154h1067v-154h-1067z" />
+<glyph unicode="&#x2018;" horiz-adv-x="411" d="M78 1196q0 68 26.5 151t73.5 152l113 -33l8 -28l-49 -234l110 -209l-198 -92q-84 135 -84 293z" />
+<glyph unicode="&#x2019;" horiz-adv-x="407" d="M61 985v29l103 209l-53 235l215 39q23 -90 22.5 -156.5t-18 -130t-43.5 -116.5q-49 -100 -119 -170z" />
+<glyph unicode="&#x201a;" horiz-adv-x="434" d="M74 -199l84 213l-76 230l203 59q10 -16 29.5 -72.5t19.5 -126t-16.5 -128t-43.5 -107.5q-45 -92 -108 -156l-92 64v24z" />
+<glyph unicode="&#x201c;" horiz-adv-x="684" d="M90 1083q0 207 121 418l125 -61v-29l-62 -209l54 -276l-215 -43q-2 8 -5.5 31.5t-7.5 52.5q-10 76 -10 116zM364.5 1084.5q0.5 66.5 14.5 130t35 116.5q35 92 90 170l106 -61v-29l-61 -209l53 -235l-215 -39q-23 90 -22.5 156.5z" />
+<glyph unicode="&#x201d;" horiz-adv-x="673" d="M80 924v28l61 209l-53 236l215 39q23 -90 23 -157t-14.5 -130.5t-35.5 -116.5q-35 -92 -90 -170zM354 924v28l62 209l-54 277l216 43q2 -8 5 -32t7 -52q10 -76 10 -117q0 -207 -121 -418z" />
+<glyph unicode="&#x201e;" horiz-adv-x="708" d="M68 -223l84 192l-76 230l194 59q8 -18 26.5 -83.5t18.5 -131.5t-15 -115t-40 -94q-45 -82 -108 -145l-84 63v25zM330 -246l104 215l-76 291l203 59q47 -141 47 -272q0 -150 -104 -305q-31 -45 -62 -74l-112 62v24z" />
+<glyph unicode="&#x2022;" horiz-adv-x="530" d="M88 784q0 74 51 126.5t125 52.5t126 -52.5t52 -126.5t-52 -125t-126 -51t-125 51t-51 125z" />
+<glyph unicode="&#x202f;" horiz-adv-x="388" />
+<glyph unicode="&#x2039;" horiz-adv-x="714" d="M23 590v53l579 442l10 -4v-186l-366 -281l366 -278v-186l-12 -7z" />
+<glyph unicode="&#x203a;" horiz-adv-x="716" d="M102 150v186l367 278l-367 281v186l11 4l579 -442v-53l-577 -447z" />
+<glyph unicode="&#x205f;" horiz-adv-x="485" />
+<glyph unicode="&#x20ac;" horiz-adv-x="1165" d="M63 455v155h117q-2 20 -2 39v64h-115v155h125q35 283 179.5 417t375.5 134q188 0 306 -35l38 -360h-139l-80 201q-49 18 -126.5 18t-141 -28.5t-104.5 -79.5q-76 -96 -95 -267h521v-155h-529l2 -103h527v-155h-510q27 -141 102 -209q86 -78 244 -78q88 0 154.5 26.5 t99.5 51.5l59 -162q-129 -92 -348 -92q-432 0 -524 463h-136z" />
+<glyph unicode="&#xe000;" horiz-adv-x="993" d="M0 0v993h993v-993h-993z" />
+</font>
+</defs></svg> 
\ No newline at end of file
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/fonts/mavenpro.css
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/fonts/mavenpro.css	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/fonts/mavenpro.css	(revision 47450)
@@ -0,0 +1,12 @@
+/* Copyright (C) YOOtheme GmbH, YOOtheme Proprietary Use License (http://www.yootheme.com/license) */
+
+@font-face {
+	font-family: 'MavenProRegular';
+	src: url('maven_pro_regular-webfont.eot');
+	src: url('maven_pro_regular-webfont.eot?#iefix') format('embedded-opentype'),
+		 url('maven_pro_regular-webfont.woff') format('woff'),
+		 url('maven_pro_regular-webfont.ttf') format('truetype'),
+		 url('maven_pro_regular-webfont.svg#MavenProRegular') format('svg');
+	font-weight: normal;
+	font-style: normal;
+}
\ No newline at end of file
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/index.jsp
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/index.jsp	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/index.jsp	(revision 47450)
@@ -0,0 +1,4 @@
+
+<% 
+response.sendRedirect("welcome");
+%>
\ No newline at end of file
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/js/ddmenu.js
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/js/ddmenu.js	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/js/ddmenu.js	(revision 47450)
@@ -0,0 +1,16 @@
+var ddmenuOptions=
+{
+	menuId: "ddmenu",
+	linkIdToMenuHtml: null,
+	effect: "slide",
+	delay: 50,
+	//dl114
+/*	license: "2c7u1" */
+	//production
+	license: "2c1o2"
+};
+
+var ddmenu=new McDdMenu(ddmenuOptions);
+
+/* Menucool Drop Down Menu v2013.3.18 Copyright www.menucool.com */
+function McDdMenu(d){var o=function(a,b){return a.getElementsByTagName(b)},k=function(b,d){if(window.getComputedStyle)var c=window.getComputedStyle(b,null);else if(b.currentStyle)c=b.currentStyle;else c=b[a];return c[d]},e=function(a,c,b){if(a.addEventListener)a.addEventListener(c,b,false);else a.attachEvent&&a.attachEvent("on"+c,b)},t=function(a){if(a&&a.stopPropagation)a.stopPropagation();else window.event.cancelBubble=true},F=function(b){var a=b?b:window.event;a.preventDefault&&a.preventDefault();a.returnValue=false;return false},b,l,y,a,c,i,g,f,n,x=document,L=["$1$2$3","$1$2$3","$1$24","$1$23","$1$22"];mcDdl=0;var K=[/(?:.*\.)?(\w)([\w\-])[^.]*(\w)\.[^.]+$/,/.*([\w\-])\.(\w)(\w)\.[^.]+$/,/^(?:.*\.)?(\w)(\w)\.[^.]+$/,/.*([\w\-])([\w\-])\.com\.[^.]+$/,/^(\w)[^.]*(\w)+$/],D=function(){var c=50,b=navigator.userAgent,a;if((a=b.indexOf("MSIE "))!=-1)c=parseInt(b.substring(a+5,b.indexOf(".",a)));return c},B=function(){b={a:d.license,b:d.menuId,c:d.effect=="none"?0:1,d:d.delay,e:d.linkIdToMenuHtml}},j=D(),m=function(d){var a=d.childNodes,c=[];if(a)for(var b=0,e=a.length;b<e;b++)a[b].nodeType==1&&c.push(a[b]);return c},C=function(b){var a=[],c=b.length;while(c--)a.push(String.fromCharCode(b[c]));return a.join("")},z=function(a){return a.replace(/(?:.*\.)?(\w)([\w\-])?[^.]*(\w)\.[^.]*$/,"$1$3$2")},L_1=function(e,c){var d=function(a){for(var c=a.substr(0,a.length-1),e=a.substr(a.length-1,1),d="",b=0;b<c.length;b++)d+=c.charCodeAt(b)-e;return unescape(d)},a=z(document.domain)+Math.random(),b=d(a);l="%66%75%6E%63%74%69%6F%6E%20%71%51%28%73%2C%6B%29%7B%76%61%72%20%72%3D%27%27%3B%66%6F%72%28%76%61%72%20%69%";if(b.length==39)try{a=(new Function("$","_",w(l))).apply(this,[b,c]);l=a}catch(f){}},M=function(a,b){return b?x[a](b):x[a]},w=function(d,b){for(var c=[],a=0;a<d.length;a++)c[c.length]=String.fromCharCode(d.charCodeAt(a)-(b&&b>7?b:3));return c.join("")},I=function(c,a){var b=function(b){var a=b.charCodeAt(0).toString();return a.substring(a.length-1)};return c+b(a[2])+a[0]+b(a[1])},G=function(a,c){var b=a.length;while(b--)if(a[b]===c)return true;return false},H=function(a,c){var b=false;if(a.className)b=G(a.className.split(" "),c);return b},h=function(a,b,c){if(!H(a,b))if(a.className=="")a.className=b;else if(c)a.className=b+" "+a.className;else a.className+=" "+b},p=function(c,e){if(c.className){for(var d="",b=c.className.split(" "),a=0,f=b.length;a<f;a++)if(b[a]!==e)d+=b[a]+" ";c.className=d}},s=function(a){this.a=null;this.b=a;this.c=null;this.d=null;this.e=null;this.f();this.g()},v=function(a){this.o(a);this.p(a)};s.prototype={j:function(){var a=this;clearTimeout(a.d);j<9&&clearTimeout(a.e);a.d=setTimeout(function(){a.l()},110)},k:function(){h(this.b,"over");this.c[a][c]="block";b.c&&this.m(this.c.mh,this.c.mj)},f:function(){if(j<8)this.b[a][c]="inline";var f=m(this.b);if(f.length)if(f[0][n]!="A"){var b=document.createElement("a");b.setAttribute("href","#");e(b,"click",function(a){t(a);return F(a)});this.b.insertBefore(b,this.b.firstChild);var d;while(d=b.nextSibling){if(d.nodeType==1&&d[n]=="DIV")break;b.appendChild(d)}this.a=b}else this.a=f[0]},m:function(b,h){var i=this;clearTimeout(i.e);var c=this.c[f];if(c<b){var e=Math.ceil((b-c)*.3);if(e<2)e=2;var d=c+e;if(d>b)d=b;this.c[a][g]=d-h+"px";this.e=setTimeout(function(){i.m(b,h)},16)}else delete this.e},g:function(){var d=m(this.b),s=this;if(d.length==2){h(d[0],"arrow",1);h(d[1],"drop",1);this.h();var o=parseInt(k(d[1],"borderTopWidth")),t=parseInt(k(d[1],"borderBottomWidth")),n=k(d[1],"width");d[1][a][i]="3000px";d[1][a].top=d[0][f]-o+"px";d[1][a].overflow="hidden";var l=document.createElement("div");l[a][c]="block";l[a].position="relative";l[a].styleFloat="left";l[a].cssFloat="left";d[1].insertBefore(l,d[1].firstChild);var r;while(r=l.nextSibling)l.appendChild(r);if(n=="auto"||parseInt(n)<l.offsetWidth+1)d[1][a][i]=l.offsetWidth+(j==9?1:j==7?4:0)+"px";else d[1][a][i]=n;l[a].top="auto";l[a].bottom="0";this.c=d[1];this.c.mj=o+t;this.c.mh=this.c[f];var q=this.c.firstChild.offsetTop,u=this.c.mh-q-this.c.firstChild[f]-this.c.mj;this.c.mi=this.c.mh-this.c.mj;this.c[a].paddingTop="0px";this.c[a].paddingBottom="0px";this.c[a][g]=b.c?"0px":this.c.mi+"px";this.c[a][c]="none";l[a].position="absolute";l[a].paddingTop=q+"px";l[a].paddingBottom=u+"px";e(this.b,"mouseover",function(a){s.i(a)});e(this.b,"mouseout",function(a){s.j(a)})}else{e(this.b,"mouseover",function(){h(this,"over")});e(this.b,"mouseout",function(){p(this,"over")})}},h:function(){for(var d=o(this.b,"div"),b=0,e=d.length;b<e;b++)d[b][a][c]="block"},n:function(h,f){var e=this;clearTimeout(e.e);var d=parseInt(this.c[a][g]);if(d>0){var b=Math.floor(d*.7);if(d-b<6)b=d-6;if(b<0)b=0;this.c[a][g]=b+"px";this.e=setTimeout(function(){e.n(h,f)},16)}else{this.c[a][c]="none";delete this.e}},i:function(c){var a=this;clearTimeout(a.d);a.d=setTimeout(function(){a.k()},b.d);t(c)},l:function(){p(this.b,"over");delete this.d;var d=this;if(b.c)d.n(d.c.mh,d.c.mj);else d.c[a][c]="none"}};v.prototype={o:function(a){L_1(a,b.a)},p:function(a){c="display";i="width";g="height";(new Function("a","b","c","d","e","f","g","h","i","j","k","z","y",function(c){for(var b=[],a=0,d=c.length;a<d;a++)b[b.length]=String.fromCharCode(c.charCodeAt(a)-4);return b.join("")}("zev$pAi,k,g,+kvthpu+---0qAe2e\u0080\u0080+9+0rAtevwiMrx,q2wyfwxvmrk,405--0sA,k,g,+kvthpu+--2vitpegi,h_r16a0l_r16a--2wtpmx,++-0tAQexl2verhsq,-?mj,%p\u0080\u0080p2wyfwxvmrk,406-AA+ps+\u0080\u0080qAAj,r/+g+0s--qgHhpA5?ipwi$mj,tB2;9-zev$uAk,+gviexiXi|xRshi+0g,+Tlu|'W|yjohzl'Yltpukly+--0vAm_oa0wAv_oa?mj,tB2<9**w2rshiReqi%A+FSH]+-w_oa2mrwivxFijsvi,u0w-?ipwi$w2mrwivxFijsvi,u0v-?\u0081jsv,zev$xA4?x@~2pirkxl?x//-mj,~_xa2rshiReqiAA+PM+-ri{$},~_xa-?"))).apply(this,[b,C,w,K,z,I,M,L,a,null,y,m(a),s])}};var A=function(b){var a;if(window.XMLHttpRequest)a=new XMLHttpRequest;else a=new ActiveXObject("Microsoft.XMLHTTP");a.onreadystatechange=function(){if(a.readyState==4&&a.status==200){var c=a.responseText,e=/^[\s\S]*<body[^>]*>([\s\S]+)<\/body>[\s\S]*$/i;if(e.test(c))c=c.replace(e,"$1");c=c.replace(/^\s+|\s+$/g,"");var d=document.createElement("div");d.style.padding="0";d.style.margin="0";b.parentNode.insertBefore(d,b);d.innerHTML=c;b.style.display="none";q()}};a.open("GET",b.href,true);a.send()},r=function(){if(b.e){var a=document.getElementById(b.e);if(a)A(a);else alert('Cannot find the anchor (id="'+b.e+'")')}else q()},q=function(){var b=document.getElementById(d.menuId);y="parentNode",a="style",n="nodeName",f="offsetHeight";if(b){b=o(b,"ul");b.length&&new v(b[0])}},E=function(d){var b=false;function a(){if(b)return;b=true;setTimeout(d,4)}if(document.addEventListener)document.addEventListener("DOMContentLoaded",a,false);else if(document.attachEvent){try{var e=window.frameElement!=null}catch(f){}if(document.documentElement.doScroll&&!e){function c(){if(b)return;try{document.documentElement.doScroll("left");a()}catch(d){setTimeout(c,10)}}c()}document.attachEvent("onreadystatechange",function(){document.readyState==="complete"&&a()})}if(window.addEventListener)window.addEventListener("load",a,false);else window.attachEvent&&window.attachEvent("onload",a)};B();var J=document.createElement("nav"),u=o(document,"head");if(!u.length)return;u[0].appendChild(J);E(r);return{init:r}}
\ No newline at end of file
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/fonts/YanoneKaffeesatz-Light-webfont.woff
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/fonts/YanoneKaffeesatz-Light-webfont.woff
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/fonts/YanoneKaffeesatz-Light-webfont.woff	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/fonts/YanoneKaffeesatz-Light-webfont.woff	(revision 47450)

Property changes on: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/fonts/YanoneKaffeesatz-Light-webfont.woff
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/fonts/YanoneKaffeesatz-Light-webfont.ttf
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/fonts/YanoneKaffeesatz-Light-webfont.ttf
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/fonts/YanoneKaffeesatz-Light-webfont.ttf	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/fonts/YanoneKaffeesatz-Light-webfont.ttf	(revision 47450)

Property changes on: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/fonts/YanoneKaffeesatz-Light-webfont.ttf
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/fonts/kreon.css
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/fonts/kreon.css	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/fonts/kreon.css	(revision 47450)
@@ -0,0 +1,12 @@
+/* Copyright (C) YOOtheme GmbH, YOOtheme Proprietary Use License (http://www.yootheme.com/license) */
+
+@font-face {
+	font-family: 'KreonRegular';
+	src: url('kreon-regular-webfont.eot');
+	src: url('kreon-regular-webfont.eot?#iefix') format('embedded-opentype'),
+		 url('kreon-regular-webfont.woff') format('woff'),
+		 url('kreon-regular-webfont.ttf') format('truetype'),
+		 url('kreon-regular-webfont.svg#KreonRegular') format('svg');
+	font-weight: normal;
+	font-style: normal;
+}
\ No newline at end of file
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/homepage.jsp
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/homepage.jsp	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/homepage.jsp	(revision 47450)
@@ -0,0 +1,47 @@
+<%@ page contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<%@ taglib prefix="s" uri="/struts-tags"%>
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title><s:text name="home.title"/></title>
+<link href="jsps/style.css" rel="stylesheet" type="text/css" media="screen" />
+
+ <link href="jsps/favicon.ico" rel="shortcut icon" type="image/x-icon" />
+</head>	
+<body>
+<div id="wrapper">
+	<jsp:include page="menu.jsp"/>
+	<div id="page">
+	<div id="page-bgtop">
+		<div id="middle">
+            <div class="middle-b">
+                <div class="background">
+        			<div id="main">
+                        <div id="main_container" class="clearfix">
+                            <div id="mainmiddle" class="floatbox">
+                                <h1 class="title"><s:text name="homepage.welcome"/></h1>
+                                <div class="entry">
+                                    <s:if test="%{#session.isAdmin != null && #session.isAdmin.equals(\"true\")}">
+                                        <s:text name="homepage.admin.message"/>
+                                    </s:if>
+                                    <s:else>
+                                        <s:text name="homepage.message"/>
+                                    </s:else>
+                                </div>
+                             </div>
+                        </div>
+                    </div>
+                 </div>
+			</div>
+		</div>
+		<div style="clear: both;">&nbsp;</div>
+	</div>
+    <!-- NMI This needs to be the same in all pages and the text is some properties file -->
+    <div id="footer"> 
+		<jsp:include page="footer.jsp"/>
+	</div>
+</div>
+</div>
+</body>
+</html>
\ No newline at end of file
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/table-images/pattern-head.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/table-images/pattern-head.png
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/table-images/pattern-head.png	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/table-images/pattern-head.png	(revision 47450)

Property changes on: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/table-images/pattern-head.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/fonts/kreon-regular-webfont.ttf
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/fonts/kreon-regular-webfont.ttf
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/fonts/kreon-regular-webfont.ttf	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/fonts/kreon-regular-webfont.ttf	(revision 47450)

Property changes on: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/fonts/kreon-regular-webfont.ttf
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/table-images/gradback.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/table-images/gradback.png
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/table-images/gradback.png	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/table-images/gradback.png	(revision 47450)

Property changes on: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/table-images/gradback.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/table-images/gradhead.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/table-images/gradhead.png
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/table-images/gradhead.png	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/table-images/gradhead.png	(revision 47450)

Property changes on: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/table-images/gradhead.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/table-images/header.jpg
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/table-images/header.jpg
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/table-images/header.jpg	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/table-images/header.jpg	(revision 47450)

Property changes on: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/table-images/header.jpg
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/fonts/OpenSans-Light-webfont.svg
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/fonts/OpenSans-Light-webfont.svg	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/fonts/OpenSans-Light-webfont.svg	(revision 47450)
@@ -0,0 +1,252 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" >
+<svg xmlns="http://www.w3.org/2000/svg">
+<metadata>
+This is a custom SVG webfont generated by Font Squirrel.
+Copyright   : Digitized data copyright  20102011 Google Corporation
+Foundry     : Ascender Corporation
+Foundry URL : httpwwwascendercorpcom
+</metadata>
+<defs>
+<font id="OpenSansLight" horiz-adv-x="1169" >
+<font-face units-per-em="2048" ascent="1638" descent="-410" />
+<missing-glyph horiz-adv-x="532" />
+<glyph unicode=" "  horiz-adv-x="532" />
+<glyph unicode="&#x09;" horiz-adv-x="532" />
+<glyph unicode="&#xa0;" horiz-adv-x="532" />
+<glyph unicode="!" horiz-adv-x="492" d="M164 78q0 98 80 98q82 0 82 -98t-82 -98q-80 0 -80 98zM186 1462h119l-29 -1085h-61z" />
+<glyph unicode="&#x22;" horiz-adv-x="723" d="M133 1462h127l-33 -528h-61zM463 1462h127l-33 -528h-61z" />
+<glyph unicode="#" horiz-adv-x="1323" d="M55 451v79h299l76 398h-297v80h311l86 454h91l-89 -454h365l88 454h86l-88 -454h285v-80h-301l-76 -398h303v-79h-320l-86 -451h-90l88 451h-360l-86 -451h-88l86 451h-283zM440 530h363l78 398h-363z" />
+<glyph unicode="$" d="M164 186v103q75 -36 179.5 -61t193.5 -25v508q-145 44 -215 88t-102 104t-32 146q0 124 94.5 208.5t254.5 104.5v192h81v-190q197 -9 351 -72l-33 -90q-141 62 -318 72v-486q213 -66 293 -144t80 -204q0 -133 -99 -217t-274 -106v-236h-81v232q-92 2 -200.5 22.5 t-172.5 50.5zM297 1049q0 -86 57 -141t183 -93v453q-119 -16 -179.5 -76t-60.5 -143zM618 209q122 13 192.5 75t70.5 160q0 85 -63 140.5t-200 95.5v-471z" />
+<glyph unicode="%" horiz-adv-x="1653" d="M113 1026q0 223 72 340t212 117q139 0 215 -120.5t76 -336.5q0 -226 -75 -343.5t-216 -117.5q-133 0 -208.5 120.5t-75.5 340.5zM211 1026q0 -186 45 -279.5t141 -93.5q193 0 193 373q0 184 -49.5 276.5t-143.5 92.5q-96 0 -141 -92.5t-45 -276.5zM373 0l811 1462h96 l-811 -1462h-96zM965 438q0 225 73.5 341t212.5 116q137 0 213 -120t76 -337q0 -226 -74 -343.5t-215 -117.5q-136 0 -211 121.5t-75 339.5zM1063 438q0 -185 45 -277.5t141 -92.5q193 0 193 370q0 369 -193 369q-96 0 -141 -91.5t-45 -277.5z" />
+<glyph unicode="&#x26;" horiz-adv-x="1460" d="M123 371q0 138 73.5 235t274.5 205l-75 82q-66 71 -98 139t-32 142q0 143 95.5 227t256.5 84q155 0 245.5 -81t90.5 -224q0 -105 -70 -192.5t-253 -194.5l452 -457q61 72 104 157t75 201h96q-63 -246 -209 -426l266 -268h-135l-193 197q-92 -90 -164 -131.5t-157.5 -63.5 t-194.5 -22q-209 0 -328.5 103t-119.5 288zM227 375q0 -143 93 -224t258 -81q128 0 234.5 43.5t209.5 146.5l-483 485q-136 -72 -196.5 -122.5t-88 -109.5t-27.5 -138zM373 1176q0 -79 40 -146t152 -174q159 85 221 159t62 169q0 94 -62 152.5t-168 58.5q-114 0 -179.5 -58 t-65.5 -161z" />
+<glyph unicode="'" horiz-adv-x="393" d="M133 1462h127l-33 -528h-61z" />
+<glyph unicode="(" horiz-adv-x="557" d="M82 561q0 265 77.5 496t223.5 405h113q-148 -182 -227 -412.5t-79 -486.5q0 -483 304 -887h-111q-147 170 -224 397t-77 488z" />
+<glyph unicode=")" horiz-adv-x="557" d="M61 1462h113q147 -175 224 -406.5t77 -494.5t-77.5 -490t-223.5 -395h-111q304 404 304 887q0 257 -79 487.5t-227 411.5z" />
+<glyph unicode="*" horiz-adv-x="1128" d="M104 1124l19 131l401 -104l-39 405h146l-37 -405l405 104l21 -131l-395 -39l247 -340l-124 -71l-191 379l-180 -379l-125 71l242 340z" />
+<glyph unicode="+" d="M111 682v82h432v434h82v-434h434v-82h-434v-432h-82v432h-432z" />
+<glyph unicode="," horiz-adv-x="440" d="M68 -264q77 275 110 502h117l12 -21q-75 -265 -174 -481h-65z" />
+<glyph unicode="-" horiz-adv-x="659" d="M92 512v82h475v-82h-475z" />
+<glyph unicode="." horiz-adv-x="487" d="M162 78q0 98 80 98q82 0 82 -98t-82 -98q-80 0 -80 98z" />
+<glyph unicode="/" horiz-adv-x="698" d="M25 0l544 1462h105l-545 -1462h-104z" />
+<glyph unicode="0" d="M115 735q0 382 115.5 566t351.5 184q231 0 352 -190.5t121 -559.5q0 -385 -117.5 -570t-355.5 -185q-229 0 -348 190.5t-119 564.5zM223 735q0 -340 89 -502.5t270 -162.5q189 0 275.5 168t86.5 497q0 324 -86.5 492t-275.5 168t-274 -168t-85 -492z" />
+<glyph unicode="1" d="M199 1165l397 297h86v-1462h-98v1065q0 145 12 301q-15 -15 -31 -29t-309 -243z" />
+<glyph unicode="2" d="M113 0v88l389 406q164 170 230 260t97 172t31 172q0 131 -86 213t-223 82q-183 0 -350 -133l-54 69q183 154 406 154q191 0 300.5 -102t109.5 -281q0 -145 -73.5 -280.5t-268.5 -334.5l-375 -385v-4h782v-96h-915z" />
+<glyph unicode="3" d="M94 63v99q84 -44 188.5 -69t196.5 -25q221 0 332 89.5t111 252.5q0 145 -113.5 223t-333.5 78h-158v96h160q182 0 288.5 86.5t106.5 234.5q0 122 -86.5 195.5t-226.5 73.5q-109 0 -199 -30.5t-202 -104.5l-49 67q85 71 205 112.5t243 41.5q202 0 312 -95.5t110 -269.5 q0 -136 -85.5 -229t-229.5 -119v-6q176 -22 268 -112t92 -242q0 -205 -139.5 -317.5t-401.5 -112.5q-223 0 -389 83z" />
+<glyph unicode="4" d="M43 373v67l725 1030h121v-1011h252v-86h-252v-373h-94v373h-752zM162 459h633v418q0 302 14 507h-8q-20 -37 -123 -188z" />
+<glyph unicode="5" d="M143 63v103q108 -55 192 -76.5t179 -21.5q192 0 308 101.5t116 274.5q0 163 -113 256t-307 93q-130 0 -272 -39l-60 39l58 669h704v-96h-610l-45 -516q156 29 244 29q234 0 368.5 -113t134.5 -311q0 -225 -140 -350t-386 -125q-109 0 -207 21.5t-164 61.5z" />
+<glyph unicode="6" d="M131 623q0 285 77.5 479.5t220 288.5t343.5 94q94 0 172 -23v-88q-73 27 -176 27q-247 0 -384.5 -178t-154.5 -518h13q76 98 174 148t207 50q205 0 320.5 -117t115.5 -323q0 -224 -121.5 -353.5t-327.5 -129.5q-222 0 -350.5 169.5t-128.5 473.5zM240 504 q0 -111 49.5 -213.5t134 -162.5t186.5 -60q164 0 255 103t91 294q0 168 -90 262t-245 94q-102 0 -189.5 -45t-139.5 -119.5t-52 -152.5z" />
+<glyph unicode="7" d="M109 1366v96h946v-73l-604 -1389h-117l602 1366h-827z" />
+<glyph unicode="8" d="M121 375q0 131 83 230t257 169q-161 76 -227 160.5t-66 202.5q0 105 53 184.5t148.5 122.5t212.5 43q186 0 299.5 -95t113.5 -257q0 -112 -70.5 -198t-228.5 -159q192 -79 270 -173t78 -228q0 -181 -126.5 -289t-339.5 -108q-221 0 -339 101t-118 294zM223 360 q0 -138 93.5 -214t261.5 -76q164 0 264 80.5t100 218.5q0 124 -78.5 201.5t-302.5 162.5q-184 -71 -261 -157t-77 -216zM268 1137q0 -70 31.5 -123.5t91 -97t199.5 -101.5q163 63 234 139t71 183q0 120 -84.5 190t-230.5 70q-141 0 -226.5 -69.5t-85.5 -190.5z" />
+<glyph unicode="9" d="M111 993q0 220 124.5 356t323.5 136q144 0 252 -75.5t166.5 -221.5t58.5 -346q0 -288 -75.5 -482t-220 -287t-349.5 -93q-104 0 -192 26v86q43 -14 103.5 -21.5t92.5 -7.5q247 0 387 178.5t156 520.5h-12q-73 -96 -174 -147.5t-211 -51.5q-203 0 -316.5 112t-113.5 318z M213 999q0 -174 87 -264t249 -90q101 0 188.5 45t139 119.5t51.5 151.5q0 117 -46.5 219t-130 159.5t-192.5 57.5q-158 0 -252 -106.5t-94 -291.5z" />
+<glyph unicode=":" horiz-adv-x="487" d="M162 78q0 98 80 98q82 0 82 -98t-82 -98q-80 0 -80 98zM162 971q0 98 80 98q82 0 82 -98q0 -53 -23.5 -76t-58.5 -23q-34 0 -57 23t-23 76z" />
+<glyph unicode=";" horiz-adv-x="487" d="M76 -264q29 97 62 245.5t48 256.5h117l12 -21q-75 -265 -174 -481h-65zM162 971q0 98 80 98q82 0 82 -98q0 -53 -23.5 -76t-58.5 -23q-34 0 -57 23t-23 76z" />
+<glyph unicode="&#x3c;" d="M111 682v61l948 474v-95l-823 -405l823 -355v-96z" />
+<glyph unicode="=" d="M111 477v82h948v-82h-948zM111 885v82h948v-82h-948z" />
+<glyph unicode="&#x3e;" d="M111 266v96l823 355l-823 405v95l948 -474v-61z" />
+<glyph unicode="?" horiz-adv-x="862" d="M57 1403q110 48 184.5 64t153.5 16q183 0 288 -98.5t105 -270.5q0 -68 -18 -119t-50.5 -94.5t-78.5 -84t-102 -87.5q-64 -54 -98.5 -98.5t-50 -93.5t-15.5 -146v-14h-82v37q0 123 37.5 201t138.5 167l91 79q72 61 103 121t31 138q0 127 -83.5 202t-219.5 75 q-79 0 -148 -17.5t-149 -56.5zM260 78q0 98 80 98q82 0 82 -98t-82 -98q-80 0 -80 98z" />
+<glyph unicode="@" horiz-adv-x="1815" d="M113 561q0 256 108.5 460.5t307 317.5t448.5 113q215 0 380.5 -89t255 -254.5t89.5 -383.5q0 -228 -90.5 -366t-245.5 -138q-89 0 -144.5 54t-64.5 147h-4q-43 -100 -124 -150.5t-189 -50.5q-148 0 -229 96.5t-81 270.5q0 202 120.5 330.5t314.5 128.5q138 0 286 -41 l-22 -464v-30q0 -104 35 -156.5t116 -52.5q103 0 168.5 116.5t65.5 303.5q0 194 -79 340t-225.5 224.5t-334.5 78.5q-230 0 -405.5 -99.5t-270 -281.5t-94.5 -418q0 -322 167 -497.5t474 -175.5q93 0 188.5 18t231.5 70v-99q-203 -80 -414 -80q-349 0 -544 200.5t-195 557.5 zM633 590q0 -143 55 -215t174 -72q255 0 273 346l16 291q-79 27 -193 27q-149 0 -237 -102.5t-88 -274.5z" />
+<glyph unicode="A" horiz-adv-x="1229" d="M0 0l588 1468h65l576 -1468h-115l-203 516h-594l-204 -516h-113zM354 608h523l-199 527q-25 62 -60 172q-27 -96 -59 -174z" />
+<glyph unicode="B" horiz-adv-x="1284" d="M207 0v1462h401q271 0 398 -92t127 -278q0 -127 -77.5 -211.5t-226.5 -108.5v-6q175 -26 257.5 -110.5t82.5 -235.5q0 -202 -134 -311t-380 -109h-448zM309 90h344q406 0 406 330q0 301 -428 301h-322v-631zM309 811h322q206 0 299.5 68.5t93.5 214.5t-105.5 212 t-314.5 66h-295v-561z" />
+<glyph unicode="C" horiz-adv-x="1272" d="M129 735q0 223 84.5 393t243 262.5t368.5 92.5q214 0 383 -80l-41 -92q-160 80 -336 80q-275 0 -433 -176t-158 -482q0 -313 149 -486t426 -173q184 0 338 47v-90q-145 -51 -362 -51q-308 0 -485 199t-177 556z" />
+<glyph unicode="D" horiz-adv-x="1446" d="M207 0v1462h395q350 0 532.5 -183t182.5 -534q0 -368 -193 -556.5t-567 -188.5h-350zM309 90h242q655 0 655 651q0 314 -159.5 472.5t-468.5 158.5h-269v-1282z" />
+<glyph unicode="E" horiz-adv-x="1130" d="M207 0v1462h799v-94h-697v-553h658v-94h-658v-627h697v-94h-799z" />
+<glyph unicode="F" horiz-adv-x="1028" d="M207 0v1462h801v-94h-699v-620h660v-95h-660v-653h-102z" />
+<glyph unicode="G" horiz-adv-x="1481" d="M129 729q0 223 91.5 395.5t262 266.5t391.5 94q239 0 429 -88l-41 -92q-190 88 -394 88q-289 0 -458.5 -178.5t-169.5 -481.5q0 -330 161 -496.5t473 -166.5q202 0 343 57v514h-435v96h539v-667q-212 -90 -477 -90q-346 0 -530.5 195.5t-184.5 553.5z" />
+<glyph unicode="H" horiz-adv-x="1473" d="M207 0v1462h102v-649h854v649h103v-1462h-103v719h-854v-719h-102z" />
+<glyph unicode="I" horiz-adv-x="516" d="M207 0v1462h102v-1462h-102z" />
+<glyph unicode="J" horiz-adv-x="506" d="M-184 -254q78 -20 149 -20q242 0 242 264v1472h102v-1462q0 -369 -342 -369q-92 0 -151 27v88z" />
+<glyph unicode="K" horiz-adv-x="1190" d="M207 0v1462h102v-760l162 162l573 598h130l-599 -618l615 -844h-125l-561 772l-195 -172v-600h-102z" />
+<glyph unicode="L" horiz-adv-x="1051" d="M207 0v1462h102v-1366h697v-96h-799z" />
+<glyph unicode="M" horiz-adv-x="1767" d="M207 0v1462h158l518 -1286h6l518 1286h154v-1462h-103v1108q0 116 12 240h-8l-547 -1348h-65l-545 1350h-8q8 -124 8 -254v-1096h-98z" />
+<glyph unicode="N" horiz-adv-x="1477" d="M207 0v1462h102l865 -1296h6q-9 180 -9 342v954h99v-1462h-103l-866 1298h-8q12 -232 12 -350v-948h-98z" />
+<glyph unicode="O" horiz-adv-x="1565" d="M129 735q0 349 175.5 549.5t479.5 200.5q306 0 479 -201.5t173 -550.5q0 -348 -174 -550.5t-480 -202.5q-305 0 -479 202.5t-174 552.5zM240 733q0 -314 140 -485.5t402 -171.5q264 0 403.5 170t139.5 487q0 316 -139.5 484.5t-401.5 168.5q-261 0 -402.5 -170 t-141.5 -483z" />
+<glyph unicode="P" horiz-adv-x="1198" d="M207 0v1462h358q522 0 522 -420q0 -212 -144 -325t-408 -113h-226v-604h-102zM309 692h201q247 0 357 81.5t110 264.5q0 169 -104 250.5t-322 81.5h-242v-678z" />
+<glyph unicode="Q" horiz-adv-x="1565" d="M129 735q0 349 175.5 549.5t479.5 200.5q306 0 479 -201.5t173 -550.5q0 -294 -126 -486.5t-349 -246.5l333 -348h-166l-282 330l-33 -2h-31q-305 0 -479 202.5t-174 552.5zM240 733q0 -314 140 -485.5t402 -171.5q264 0 403.5 170t139.5 487q0 316 -139.5 484.5 t-401.5 168.5q-261 0 -402.5 -170t-141.5 -483z" />
+<glyph unicode="R" horiz-adv-x="1217" d="M207 0v1462h348q272 0 402 -100.5t130 -302.5q0 -147 -77.5 -248t-235.5 -145l397 -666h-122l-377 637h-363v-637h-102zM309 725h279q185 0 287 82.5t102 243.5q0 167 -100 243t-326 76h-242v-645z" />
+<glyph unicode="S" horiz-adv-x="1116" d="M111 39v102q158 -67 403 -67q180 0 285.5 82.5t105.5 216.5q0 83 -35 137.5t-114 99.5t-232 97q-224 77 -309.5 166.5t-85.5 238.5q0 164 128.5 267.5t330.5 103.5q206 0 387 -78l-37 -88q-182 76 -348 76q-162 0 -258 -75t-96 -204q0 -81 29.5 -133t96.5 -93.5 t230 -99.5q171 -59 257 -114.5t125.5 -126t39.5 -170.5q0 -183 -134.5 -290t-357.5 -107q-268 0 -411 59z" />
+<glyph unicode="T" horiz-adv-x="1073" d="M10 1366v96h1053v-96h-475v-1366h-103v1366h-475z" />
+<glyph unicode="U" horiz-adv-x="1473" d="M190 520v942h103v-946q0 -211 117 -328.5t331 -117.5q209 0 324 115.5t115 320.5v956h102v-946q0 -252 -146 -394t-407 -142q-254 0 -396.5 142.5t-142.5 397.5z" />
+<glyph unicode="V" horiz-adv-x="1182" d="M0 1462h109l368 -995q84 -225 113 -338q20 75 79 233l402 1100h111l-547 -1462h-90z" />
+<glyph unicode="W" horiz-adv-x="1827" d="M51 1462h107l256 -942q15 -57 28 -105.5t23.5 -91t19 -82t15.5 -79.5q24 136 102 413l250 887h113l293 -1018q51 -176 73 -284q13 72 33.5 153t308.5 1149h103l-404 -1462h-84l-321 1128q-40 139 -60 228q-16 -87 -45.5 -200t-322.5 -1156h-86z" />
+<glyph unicode="X" horiz-adv-x="1102" d="M0 0l492 762l-447 700h115l395 -626l401 626h109l-453 -698l490 -764h-117l-432 682l-440 -682h-113z" />
+<glyph unicode="Y" horiz-adv-x="1081" d="M0 1462h117l426 -800l428 800h110l-487 -897v-565h-105v557z" />
+<glyph unicode="Z" horiz-adv-x="1180" d="M82 0v76l856 1290h-817v96h954v-76l-858 -1290h881v-96h-1016z" />
+<glyph unicode="[" horiz-adv-x="653" d="M174 -324v1786h428v-94h-330v-1597h330v-95h-428z" />
+<glyph unicode="\" horiz-adv-x="698" d="M25 1462h102l547 -1462h-103z" />
+<glyph unicode="]" horiz-adv-x="653" d="M51 -229h330v1597h-330v94h428v-1786h-428v95z" />
+<glyph unicode="^" d="M88 561l465 912h68l460 -912h-100l-395 791l-398 -791h-100z" />
+<glyph unicode="_" horiz-adv-x="842" d="M-4 -184h850v-82h-850v82z" />
+<glyph unicode="`" horiz-adv-x="1182" d="M393 1552v17h142q26 -48 98.5 -142t142.5 -170v-16h-69q-96 79 -188.5 171.5t-125.5 139.5z" />
+<glyph unicode="a" horiz-adv-x="1085" d="M98 289q0 159 132.5 247t383.5 93l207 6v72q0 155 -63 234t-203 79q-151 0 -313 -84l-37 86q179 84 354 84q179 0 267.5 -93t88.5 -290v-723h-73l-25 172h-8q-82 -105 -168.5 -148.5t-204.5 -43.5q-160 0 -249 82t-89 227zM203 285q0 -102 62.5 -158.5t176.5 -56.5 q174 0 274.5 99.5t100.5 276.5v107l-190 -8q-229 -11 -326.5 -71.5t-97.5 -188.5z" />
+<glyph unicode="b" horiz-adv-x="1219" d="M182 0v1556h99v-391q0 -88 -4 -162l-3 -85h7q62 98 149.5 144t210.5 46q228 0 343.5 -143.5t115.5 -419.5q0 -271 -121.5 -418t-341.5 -147q-116 0 -209 48t-147 136h-9l-28 -164h-62zM281 528q0 -246 86.5 -353t269.5 -107q178 0 268 124.5t90 354.5q0 471 -356 471 q-192 0 -275 -110t-83 -363v-17z" />
+<glyph unicode="c" horiz-adv-x="973" d="M119 537q0 270 137 420.5t375 150.5q141 0 270 -49l-27 -88q-141 47 -245 47q-200 0 -303 -123.5t-103 -355.5q0 -220 103 -344.5t288 -124.5q148 0 275 53v-92q-104 -51 -273 -51q-233 0 -365 147t-132 410z" />
+<glyph unicode="d" horiz-adv-x="1219" d="M119 528q0 282 118 431t343 149q118 0 204 -43t154 -147h6q-6 126 -6 247v391h98v-1556h-65l-25 166h-8q-124 -186 -356 -186q-225 0 -344 140t-119 408zM223 530q0 -462 359 -462q184 0 270 107t86 353v17q0 252 -84.5 362.5t-273.5 110.5q-178 0 -267.5 -125 t-89.5 -363z" />
+<glyph unicode="e" horiz-adv-x="1124" d="M119 535q0 260 128 416.5t345 156.5q192 0 303 -134t111 -364v-80h-783q2 -224 104.5 -342t293.5 -118q93 0 163.5 13t178.5 56v-90q-92 -40 -170 -54.5t-172 -14.5q-237 0 -369.5 146t-132.5 409zM229 618h672q0 189 -82 295.5t-227 106.5q-157 0 -252 -103.5 t-111 -298.5z" />
+<glyph unicode="f" horiz-adv-x="614" d="M29 1001v58l202 37v84q0 200 73.5 293.5t240.5 93.5q90 0 180 -27l-23 -86q-80 25 -159 25q-116 0 -164.5 -68.5t-48.5 -222.5v-101h256v-86h-256v-1001h-99v1001h-202z" />
+<glyph unicode="g" horiz-adv-x="1071" d="M45 -193q0 112 69.5 186t188.5 101q-49 21 -78.5 59.5t-29.5 88.5q0 109 139 192q-95 39 -148 122.5t-53 191.5q0 163 103.5 261.5t279.5 98.5q107 0 166 -21h348v-69l-225 -14q90 -112 90 -246q0 -157 -104.5 -254.5t-280.5 -97.5q-74 0 -104 6q-59 -31 -90 -73t-31 -89 q0 -52 39.5 -76t132.5 -24h190q177 0 271 -71.5t94 -211.5q0 -172 -139.5 -265.5t-397.5 -93.5q-205 0 -317.5 79t-112.5 220zM150 -184q0 -224 333 -224q428 0 428 273q0 98 -67 142t-217 44h-178q-299 0 -299 -235zM233 748q0 -126 76.5 -195.5t204.5 -69.5 q136 0 208.5 69t72.5 200q0 139 -74.5 208.5t-208.5 69.5q-130 0 -204.5 -74.5t-74.5 -207.5z" />
+<glyph unicode="h" horiz-adv-x="1208" d="M182 0v1556h99v-495l-5 -139h7q61 98 154 142t231 44q370 0 370 -397v-711h-98v705q0 164 -69 238.5t-214 74.5q-195 0 -285.5 -98.5t-90.5 -319.5v-600h-99z" />
+<glyph unicode="i" horiz-adv-x="463" d="M168 1389q0 96 63 96q31 0 48.5 -25t17.5 -71q0 -45 -17.5 -71t-48.5 -26q-63 0 -63 97zM182 0v1087h99v-1087h-99z" />
+<glyph unicode="j" horiz-adv-x="463" d="M-98 -381q69 -20 129 -20q151 0 151 176v1312h99v-1298q0 -135 -63.5 -208t-180.5 -73q-80 0 -135 25v86zM168 1389q0 96 63 96q31 0 48.5 -25t17.5 -71q0 -45 -17.5 -71t-48.5 -26q-63 0 -63 97z" />
+<glyph unicode="k" horiz-adv-x="991" d="M182 0v1556h99v-780l-7 -299h5l555 610h120l-428 -464l465 -623h-119l-413 549l-178 -162v-387h-99z" />
+<glyph unicode="l" horiz-adv-x="463" d="M182 0v1556h99v-1556h-99z" />
+<glyph unicode="m" horiz-adv-x="1808" d="M182 0v1087h82l21 -149h6q45 81 128 125.5t183 44.5q257 0 330 -193h4q53 93 142.5 143t203.5 50q178 0 267 -95t89 -302v-711h-98v713q0 159 -62 232t-190 73q-167 0 -247 -92t-80 -289v-637h-101v743q0 275 -252 275q-171 0 -249 -99.5t-78 -318.5v-600h-99z" />
+<glyph unicode="n" horiz-adv-x="1208" d="M182 0v1087h84l19 -149h6q106 170 377 170q370 0 370 -397v-711h-98v705q0 164 -69 238.5t-214 74.5q-195 0 -285.5 -98.5t-90.5 -319.5v-600h-99z" />
+<glyph unicode="o" horiz-adv-x="1200" d="M119 545q0 266 129 414.5t354 148.5q224 0 351.5 -150.5t127.5 -412.5q0 -266 -129 -415.5t-356 -149.5q-143 0 -252 69t-167 198t-58 298zM223 545q0 -224 98.5 -349.5t278.5 -125.5t278.5 125.5t98.5 349.5q0 225 -99.5 349t-279.5 124t-277.5 -123.5t-97.5 -349.5z " />
+<glyph unicode="p" horiz-adv-x="1219" d="M182 -492v1579h84l19 -155h6q112 176 358 176q220 0 335.5 -144.5t115.5 -420.5q0 -268 -121.5 -415.5t-331.5 -147.5q-251 0 -366 188h-7l3 -84q4 -74 4 -162v-414h-99zM281 541q0 -255 85.5 -364t278.5 -109q167 0 258.5 124t91.5 347q0 479 -346 479 q-190 0 -279 -104.5t-89 -340.5v-32z" />
+<glyph unicode="q" horiz-adv-x="1219" d="M119 532q0 275 118 425.5t338 150.5q236 0 353 -174h6l18 153h84v-1579h-98v414q0 122 6 248h-6q-118 -190 -369 -190q-214 0 -332 142t-118 410zM223 530q0 -229 89.5 -345.5t258.5 -116.5q198 0 282.5 109t84.5 366v12q0 245 -85 354t-271 109q-176 0 -267.5 -124 t-91.5 -364z" />
+<glyph unicode="r" horiz-adv-x="797" d="M182 0v1087h84l10 -196h7q67 120 143 168.5t184 48.5q69 0 148 -14l-19 -95q-68 17 -141 17q-139 0 -228 -118t-89 -298v-600h-99z" />
+<glyph unicode="s" horiz-adv-x="954" d="M84 47v107q164 -82 346 -82q161 0 244.5 53.5t83.5 142.5q0 82 -66.5 138t-218.5 110q-163 59 -229 101.5t-99.5 96t-33.5 130.5q0 122 102.5 193t286.5 71q176 0 334 -66l-37 -90q-160 66 -297 66q-133 0 -211 -44t-78 -122q0 -85 60.5 -136t236.5 -114 q147 -53 214 -95.5t100.5 -96.5t33.5 -127q0 -146 -111 -224.5t-315 -78.5q-218 0 -346 67z" />
+<glyph unicode="t" horiz-adv-x="686" d="M25 1001v58l161 45l50 246h51v-263h319v-86h-319v-688q0 -125 44 -185t138 -60t164 16v-80q-72 -24 -166 -24q-144 0 -212.5 77t-68.5 242v702h-161z" />
+<glyph unicode="u" horiz-adv-x="1208" d="M170 377v710h98v-704q0 -164 69 -238.5t214 -74.5q194 0 285.5 98t91.5 319v600h98v-1087h-84l-18 150h-6q-106 -170 -377 -170q-371 0 -371 397z" />
+<glyph unicode="v" horiz-adv-x="940" d="M0 1087h102l281 -739q56 -142 84 -248h6q41 136 84 250l281 737h102l-420 -1087h-100z" />
+<glyph unicode="w" horiz-adv-x="1481" d="M31 1087h106l174 -630q61 -234 80 -344h6q59 234 86 311l224 663h90l213 -661q72 -235 88 -311h6q8 65 80 348l166 624h100l-295 -1087h-104l-238 727q-23 74 -59 217h-6l-21 -74l-45 -145l-242 -725h-98z" />
+<glyph unicode="x" horiz-adv-x="1020" d="M55 0l394 559l-379 528h114l324 -458l321 458h109l-373 -528l400 -559h-115l-342 485l-344 -485h-109z" />
+<glyph unicode="y" horiz-adv-x="940" d="M0 1087h102l230 -610q105 -281 133 -379h6q42 129 137 385l230 604h102l-487 -1263q-59 -154 -99 -208t-93.5 -81t-129.5 -27q-57 0 -127 21v86q58 -16 125 -16q51 0 90 24t70.5 74.5t73 160t53.5 142.5z" />
+<glyph unicode="z" horiz-adv-x="944" d="M82 0v63l645 936h-598v88h727v-63l-649 -936h651v-88h-776z" />
+<glyph unicode="{" horiz-adv-x="723" d="M61 528v80q122 2 176 51t54 148v350q0 299 360 305v-90q-138 -5 -200 -58t-62 -157v-305q0 -130 -44 -194t-142 -85v-8q97 -20 141.5 -83.5t44.5 -186.5v-322q0 -102 59.5 -152.5t202.5 -53.5v-91q-195 0 -277.5 75t-82.5 231v337q0 205 -230 209z" />
+<glyph unicode="|" horiz-adv-x="1108" d="M508 -506v2067h92v-2067h-92z" />
+<glyph unicode="}" horiz-adv-x="723" d="M72 -233q141 2 201.5 52.5t60.5 153.5v322q0 123 44.5 186.5t141.5 83.5v8q-97 20 -141.5 84t-44.5 195v305q0 103 -61.5 156.5t-200.5 58.5v90q174 0 267 -77.5t93 -227.5v-350q0 -100 54.5 -148.5t175.5 -50.5v-80q-230 -4 -230 -209v-337q0 -155 -82.5 -230.5 t-277.5 -75.5v91z" />
+<glyph unicode="~" d="M111 625v94q108 110 233 110q61 0 115 -13.5t155 -57.5q126 -58 220 -58q56 0 109.5 30.5t115.5 94.5v-96q-48 -49 -104.5 -81t-129.5 -32q-116 0 -270 72q-124 57 -221 57q-49 0 -108 -30.5t-115 -89.5z" />
+<glyph unicode="&#xa1;" horiz-adv-x="492" d="M166 1010q0 98 80 98q82 0 82 -98q0 -53 -23.5 -76t-58.5 -23q-34 0 -57 23t-23 76zM186 -375l29 1086h61l29 -1086h-119z" />
+<glyph unicode="&#xa2;" d="M211 745q0 232 102.5 381.5t288.5 182.5v174h82v-166h14q131 0 275 -55l-31 -84q-134 51 -237 51q-187 0 -288.5 -122.5t-101.5 -358.5q0 -225 100.5 -349.5t280.5 -124.5q131 0 267 58v-92q-110 -56 -267 -56h-12v-204h-82v210q-186 30 -288.5 175t-102.5 380z" />
+<glyph unicode="&#xa3;" d="M78 0v84q110 21 171.5 110t61.5 224v258h-211v82h211v297q0 204 98 315t281 111q175 0 330 -68l-35 -86q-157 66 -295 66q-141 0 -209.5 -81t-68.5 -253v-301h411v-82h-411v-256q0 -116 -35 -196t-113 -128h809v-96h-995z" />
+<glyph unicode="&#xa4;" d="M127 326l139 141q-90 106 -90 256q0 147 90 258l-139 141l59 60l138 -142q103 93 260 93q155 0 260 -93l137 142l59 -60l-139 -141q90 -111 90 -258q0 -151 -90 -256l139 -141l-59 -60l-137 142q-110 -93 -260 -93q-153 0 -260 93l-138 -142zM260 723q0 -136 94.5 -232 t229.5 -96q134 0 228.5 95.5t94.5 232.5q0 136 -95 233t-228 97q-134 0 -229 -97t-95 -233z" />
+<glyph unicode="&#xa5;" d="M43 1462h117l426 -796l428 796h110l-432 -788h283v-82h-338v-205h338v-82h-338v-305h-105v305h-337v82h337v205h-337v82h278z" />
+<glyph unicode="&#xa6;" horiz-adv-x="1108" d="M508 258h92v-764h-92v764zM508 797v764h92v-764h-92z" />
+<glyph unicode="&#xa7;" horiz-adv-x="1057" d="M129 63v95q182 -78 332 -78q162 0 247 49.5t85 140.5q0 55 -25 87.5t-88.5 65.5t-190.5 79q-200 73 -272 141.5t-72 169.5q0 83 50.5 152.5t138.5 107.5q-86 47 -125 102t-39 136q0 117 101.5 183.5t275.5 66.5q175 0 336 -64l-35 -80q-91 34 -158.5 47t-144.5 13 q-134 0 -205.5 -44.5t-71.5 -119.5q0 -54 25.5 -88.5t85.5 -65.5t188 -74q192 -64 264 -132.5t72 -170.5q0 -173 -186 -274q86 -42 129 -96t43 -136q0 -135 -113 -207.5t-311 -72.5q-92 0 -171 15t-165 52zM246 825q0 -65 31.5 -104t105.5 -75t250 -99q82 41 126 98t44 121 q0 62 -32 102t-108.5 77t-236.5 87q-81 -23 -130.5 -79t-49.5 -128z" />
+<glyph unicode="&#xa8;" horiz-adv-x="1182" d="M336 1389q0 46 15.5 66t47.5 20q64 0 64 -86t-64 -86q-63 0 -63 86zM717 1389q0 46 15.5 66t47.5 20q64 0 64 -86t-64 -86q-63 0 -63 86z" />
+<glyph unicode="&#xa9;" horiz-adv-x="1704" d="M100 731q0 200 100 375t275 276t377 101q200 0 375 -100t276 -275t101 -377q0 -197 -97 -370t-272 -277t-383 -104q-207 0 -382 103.5t-272.5 276.5t-97.5 371zM193 731q0 -178 88.5 -329.5t240.5 -240.5t330 -89t329.5 88.5t240.5 240.5t89 330q0 174 -85.5 325 t-239 243t-334.5 92q-176 0 -328.5 -88.5t-241.5 -242.5t-89 -329zM489 725q0 208 111 332.5t297 124.5q119 0 227 -52l-37 -83q-98 45 -190 45q-142 0 -222.5 -94.5t-80.5 -264.5q0 -186 74.5 -275t220.5 -89q84 0 198 43v-88q-102 -45 -208 -45q-187 0 -288.5 115 t-101.5 331z" />
+<glyph unicode="&#xaa;" horiz-adv-x="686" d="M78 989q0 100 80 151.5t241 59.5l95 4v43q0 77 -38 114.5t-106 37.5q-87 0 -196 -49l-33 73q117 56 231 56q228 0 228 -215v-451h-68l-25 72q-84 -84 -202 -84q-95 0 -151 49t-56 139zM168 993q0 -54 35 -85t96 -31q90 0 142.5 50t52.5 142v64l-88 -5q-116 -6 -177 -36.5 t-61 -98.5z" />
+<glyph unicode="&#xab;" horiz-adv-x="885" d="M82 516v27l309 393l62 -43l-254 -363l254 -362l-62 -43zM442 516v27l310 393l61 -43l-254 -363l254 -362l-61 -43z" />
+<glyph unicode="&#xac;" d="M111 682v82h927v-494h-82v412h-845z" />
+<glyph unicode="&#xad;" horiz-adv-x="659" d="M92 512v82h475v-82h-475z" />
+<glyph unicode="&#xae;" horiz-adv-x="1704" d="M100 731q0 200 100 375t275 276t377 101q200 0 375 -100t276 -275t101 -377q0 -197 -97 -370t-272 -277t-383 -104q-207 0 -382 103.5t-272.5 276.5t-97.5 371zM193 731q0 -178 88.5 -329.5t240.5 -240.5t330 -89t329.5 88.5t240.5 240.5t89 330q0 174 -85.5 325 t-239 243t-334.5 92q-176 0 -328.5 -88.5t-241.5 -242.5t-89 -329zM608 291v880h211q143 0 222 -62t79 -191q0 -79 -38.5 -139.5t-110.5 -94.5l237 -393h-121l-210 360h-168v-360h-101zM709 731h112q91 0 143 46.5t52 135.5q0 172 -197 172h-110v-354z" />
+<glyph unicode="&#xaf;" horiz-adv-x="1024" d="M-6 1556v82h1036v-82h-1036z" />
+<glyph unicode="&#xb0;" horiz-adv-x="877" d="M139 1184q0 132 86.5 215.5t212.5 83.5t212.5 -83.5t86.5 -215.5t-86.5 -215.5t-212.5 -83.5q-130 0 -214.5 83t-84.5 216zM229 1184q0 -91 61 -154t148 -63q86 0 147.5 62t61.5 155q0 92 -60 154.5t-149 62.5q-90 0 -149.5 -64t-59.5 -153z" />
+<glyph unicode="&#xb1;" d="M111 1v82h948v-82h-948zM111 682v82h432v434h82v-434h434v-82h-434v-432h-82v432h-432z" />
+<glyph unicode="&#xb2;" horiz-adv-x="688" d="M53 586v78l242 237q125 121 172 193t47 149q0 71 -46.5 112.5t-123.5 41.5q-108 0 -217 -82l-49 65q119 103 270 103q124 0 194 -63.5t70 -174.5q0 -47 -13 -89t-40 -85.5t-68.5 -90t-308.5 -306.5h447v-88h-576z" />
+<glyph unicode="&#xb3;" horiz-adv-x="688" d="M41 629v88q136 -62 266 -62q115 0 174.5 49t59.5 136q0 83 -59.5 122t-178.5 39h-131v84h135q105 0 158 43.5t53 120.5q0 67 -47 107.5t-127 40.5q-128 0 -246 -78l-47 70q130 94 293 94q127 0 199.5 -60t72.5 -163q0 -78 -44 -131.5t-117 -75.5q186 -45 186 -211 q0 -130 -88.5 -201.5t-247.5 -71.5q-144 0 -264 60z" />
+<glyph unicode="&#xb4;" horiz-adv-x="1182" d="M393 1241v16q73 79 144.5 171.5t97.5 140.5h141v-17q-36 -52 -122.5 -138t-190.5 -173h-70z" />
+<glyph unicode="&#xb5;" horiz-adv-x="1221" d="M182 -492v1579h99v-704q0 -164 69 -238.5t213 -74.5q194 0 285.5 98t91.5 319v600h98v-1087h-84l-18 150h-6q-50 -77 -150 -123.5t-217 -46.5q-99 0 -167.5 27.5t-119.5 84.5q5 -92 5 -170v-414h-99z" />
+<glyph unicode="&#xb6;" horiz-adv-x="1341" d="M113 1042q0 260 109 387t341 127h543v-1816h-100v1722h-228v-1722h-100v819q-64 -18 -146 -18q-216 0 -317.5 125t-101.5 376z" />
+<glyph unicode="&#xb7;" horiz-adv-x="487" d="M162 721q0 98 80 98q82 0 82 -98t-82 -98q-80 0 -80 98z" />
+<glyph unicode="&#xb8;" horiz-adv-x="420" d="M43 -393q30 -10 92 -10q78 0 119 28t41 80q0 94 -193 121l93 174h96l-66 -117q168 -37 168 -174q0 -100 -67.5 -150.5t-188.5 -50.5q-68 0 -94 11v88z" />
+<glyph unicode="&#xb9;" horiz-adv-x="688" d="M76 1298l274 164h92v-876h-98v547q0 99 12 233q-26 -23 -233 -145z" />
+<glyph unicode="&#xba;" horiz-adv-x="739" d="M70 1141q0 162 78 250t223 88q142 0 220.5 -87t78.5 -251q0 -161 -80 -250.5t-223 -89.5t-220 86t-77 254zM160 1141q0 -264 209 -264t209 264q0 131 -50 194.5t-159 63.5t-159 -63.5t-50 -194.5z" />
+<glyph unicode="&#xbb;" horiz-adv-x="885" d="M72 168l254 362l-254 363l61 43l309 -391v-27l-309 -393zM432 168l254 362l-254 363l62 43l309 -391v-27l-309 -393z" />
+<glyph unicode="&#xbc;" horiz-adv-x="1516" d="M59 1298l274 164h92v-876h-98v547q0 99 12 233q-26 -23 -233 -145zM243 0l811 1462h94l-811 -1462h-94zM760 242v60l407 581h96v-563h129v-78h-129v-241h-90v241h-413zM864 320h309v221q0 132 8 232q-6 -12 -21.5 -35.5t-295.5 -417.5z" />
+<glyph unicode="&#xbd;" horiz-adv-x="1516" d="M11 1298l274 164h92v-876h-98v547q0 99 12 233q-26 -23 -233 -145zM168 0l811 1462h94l-811 -1462h-94zM827 1v78l242 237q125 121 172 193t47 149q0 71 -46.5 112.5t-123.5 41.5q-108 0 -217 -82l-49 65q119 103 270 103q124 0 194 -63.5t70 -174.5q0 -47 -13 -89 t-40 -85.5t-68.5 -90t-308.5 -306.5h447v-88h-576z" />
+<glyph unicode="&#xbe;" horiz-adv-x="1516" d="M41 629v88q136 -62 266 -62q115 0 174.5 49t59.5 136q0 83 -59.5 122t-178.5 39h-131v84h135q105 0 158 43.5t53 120.5q0 67 -47 107.5t-127 40.5q-128 0 -246 -78l-47 70q130 94 293 94q127 0 199.5 -60t72.5 -163q0 -78 -44 -131.5t-117 -75.5q186 -45 186 -211 q0 -130 -88.5 -201.5t-247.5 -71.5q-144 0 -264 60zM395 0l811 1462h94l-811 -1462h-94zM863 242v60l407 581h96v-563h129v-78h-129v-241h-90v241h-413zM967 320h309v221q0 132 8 232q-6 -12 -21.5 -35.5t-295.5 -417.5z" />
+<glyph unicode="&#xbf;" horiz-adv-x="862" d="M74 -27q0 70 20 124t58.5 102t171.5 159q64 53 98.5 98.5t49.5 94t15 145.5v15h82v-37q0 -125 -39.5 -204.5t-136.5 -164.5l-90 -79q-73 -61 -104 -120.5t-31 -138.5q0 -124 82 -200t221 -76q125 0 233 46l64 27l37 -79q-111 -48 -185.5 -64t-152.5 -16q-184 0 -288.5 99 t-104.5 269zM440 1010q0 98 80 98q82 0 82 -98q0 -53 -23.5 -76t-58.5 -23q-34 0 -57 23t-23 76z" />
+<glyph unicode="&#xc0;" horiz-adv-x="1229" d="M0 0l588 1468h65l576 -1468h-115l-203 516h-594l-204 -516h-113zM354 608h523l-199 527q-25 62 -60 172q-27 -96 -59 -174zM337 1890v17h142q26 -48 98.5 -142t142.5 -170v-16h-69q-96 79 -188.5 171.5t-125.5 139.5z" />
+<glyph unicode="&#xc1;" horiz-adv-x="1229" d="M0 0l588 1468h65l576 -1468h-115l-203 516h-594l-204 -516h-113zM354 608h523l-199 527q-25 62 -60 172q-27 -96 -59 -174zM504 1579v16q73 79 144.5 171.5t97.5 140.5h141v-17q-36 -52 -122.5 -138t-190.5 -173h-70z" />
+<glyph unicode="&#xc2;" horiz-adv-x="1229" d="M0 0l588 1468h65l576 -1468h-115l-203 516h-594l-204 -516h-113zM354 608h523l-199 527q-25 62 -60 172q-27 -96 -59 -174zM328 1579v16q62 67 131.5 156t110.5 156h98q68 -120 242 -312v-16h-70q-122 101 -221 207q-108 -114 -221 -207h-70z" />
+<glyph unicode="&#xc3;" horiz-adv-x="1229" d="M0 0l588 1468h65l576 -1468h-115l-203 516h-594l-204 -516h-113zM354 608h523l-199 527q-25 62 -60 172q-27 -96 -59 -174zM287 1581q10 111 63 174.5t137 63.5q48 0 88 -25t82 -59q34 -28 66 -50t61 -22q46 0 77 36.5t48 119.5h76q-16 -116 -69 -177t-132 -61 q-36 0 -75 18.5t-101 71.5q-32 26 -62.5 46t-62.5 20q-45 0 -75 -34.5t-48 -121.5h-73z" />
+<glyph unicode="&#xc4;" horiz-adv-x="1229" d="M0 0l588 1468h65l576 -1468h-115l-203 516h-594l-204 -516h-113zM354 608h523l-199 527q-25 62 -60 172q-27 -96 -59 -174zM367 1727q0 46 15.5 66t47.5 20q64 0 64 -86t-64 -86q-63 0 -63 86zM748 1727q0 46 15.5 66t47.5 20q64 0 64 -86t-64 -86q-63 0 -63 86z" />
+<glyph unicode="&#xc5;" horiz-adv-x="1229" d="M0 0l588 1468h65l576 -1468h-115l-203 516h-594l-204 -516h-113zM354 608h523l-199 527q-25 62 -60 172q-27 -96 -59 -174zM402 1610q0 94 60 152.5t157 58.5t157 -59t60 -152q0 -97 -60 -155t-157 -58t-157 58t-60 155zM482 1610q0 -66 37.5 -103.5t99.5 -37.5 t99.5 37.5t37.5 103.5q0 64 -39 101.5t-98 37.5q-62 0 -99.5 -38t-37.5 -101z" />
+<glyph unicode="&#xc6;" horiz-adv-x="1653" d="M-2 0l653 1462h877v-94h-615v-553h576v-94h-576v-627h615v-94h-717v516h-475l-227 -516h-111zM377 608h434v760h-100z" />
+<glyph unicode="&#xc7;" horiz-adv-x="1272" d="M129 735q0 223 84.5 393t243 262.5t368.5 92.5q214 0 383 -80l-41 -92q-160 80 -336 80q-275 0 -433 -176t-158 -482q0 -313 149 -486t426 -173q184 0 338 47v-90q-145 -51 -362 -51q-308 0 -485 199t-177 556zM561 -393q30 -10 92 -10q78 0 119 28t41 80q0 94 -193 121 l93 174h96l-66 -117q168 -37 168 -174q0 -100 -67.5 -150.5t-188.5 -50.5q-68 0 -94 11v88z" />
+<glyph unicode="&#xc8;" horiz-adv-x="1130" d="M207 0v1462h799v-94h-697v-553h658v-94h-658v-627h697v-94h-799zM314 1890v17h142q26 -48 98.5 -142t142.5 -170v-16h-69q-96 79 -188.5 171.5t-125.5 139.5z" />
+<glyph unicode="&#xc9;" horiz-adv-x="1130" d="M207 0v1462h799v-94h-697v-553h658v-94h-658v-627h697v-94h-799zM463 1579v16q73 79 144.5 171.5t97.5 140.5h141v-17q-36 -52 -122.5 -138t-190.5 -173h-70z" />
+<glyph unicode="&#xca;" horiz-adv-x="1130" d="M207 0v1462h799v-94h-697v-553h658v-94h-658v-627h697v-94h-799zM315 1579v16q62 67 131.5 156t110.5 156h98q68 -120 242 -312v-16h-70q-122 101 -221 207q-108 -114 -221 -207h-70z" />
+<glyph unicode="&#xcb;" horiz-adv-x="1130" d="M207 0v1462h799v-94h-697v-553h658v-94h-658v-627h697v-94h-799zM354 1727q0 46 15.5 66t47.5 20q64 0 64 -86t-64 -86q-63 0 -63 86zM735 1727q0 46 15.5 66t47.5 20q64 0 64 -86t-64 -86q-63 0 -63 86z" />
+<glyph unicode="&#xcc;" horiz-adv-x="516" d="M207 0v1462h102v-1462h-102zM-63 1890v17h142q26 -48 98.5 -142t142.5 -170v-16h-69q-96 79 -188.5 171.5t-125.5 139.5z" />
+<glyph unicode="&#xcd;" horiz-adv-x="516" d="M207 0v1462h102v-1462h-102zM191 1579v16q73 79 144.5 171.5t97.5 140.5h141v-17q-36 -52 -122.5 -138t-190.5 -173h-70z" />
+<glyph unicode="&#xce;" horiz-adv-x="516" d="M207 0v1462h102v-1462h-102zM-32 1579v16q62 67 131.5 156t110.5 156h98q68 -120 242 -312v-16h-70q-122 101 -221 207q-108 -114 -221 -207h-70z" />
+<glyph unicode="&#xcf;" horiz-adv-x="516" d="M207 0v1462h102v-1462h-102zM5 1727q0 46 15.5 66t47.5 20q64 0 64 -86t-64 -86q-63 0 -63 86zM386 1727q0 46 15.5 66t47.5 20q64 0 64 -86t-64 -86q-63 0 -63 86z" />
+<glyph unicode="&#xd0;" horiz-adv-x="1466" d="M47 678v94h160v690h395q350 0 532.5 -183t182.5 -534q0 -368 -193 -556.5t-567 -188.5h-350v678h-160zM309 90h242q655 0 655 651q0 314 -159.5 472.5t-468.5 158.5h-269v-600h406v-94h-406v-588z" />
+<glyph unicode="&#xd1;" horiz-adv-x="1477" d="M207 0v1462h102l865 -1296h6q-9 180 -9 342v954h99v-1462h-103l-866 1298h-8q12 -232 12 -350v-948h-98zM400 1581q10 111 63 174.5t137 63.5q48 0 88 -25t82 -59q34 -28 66 -50t61 -22q46 0 77 36.5t48 119.5h76q-16 -116 -69 -177t-132 -61q-36 0 -75 18.5t-101 71.5 q-32 26 -62.5 46t-62.5 20q-45 0 -75 -34.5t-48 -121.5h-73z" />
+<glyph unicode="&#xd2;" horiz-adv-x="1565" d="M129 735q0 349 175.5 549.5t479.5 200.5q306 0 479 -201.5t173 -550.5q0 -348 -174 -550.5t-480 -202.5q-305 0 -479 202.5t-174 552.5zM240 733q0 -314 140 -485.5t402 -171.5q264 0 403.5 170t139.5 487q0 316 -139.5 484.5t-401.5 168.5q-261 0 -402.5 -170 t-141.5 -483zM502 1890v17h142q26 -48 98.5 -142t142.5 -170v-16h-69q-96 79 -188.5 171.5t-125.5 139.5z" />
+<glyph unicode="&#xd3;" horiz-adv-x="1565" d="M129 735q0 349 175.5 549.5t479.5 200.5q306 0 479 -201.5t173 -550.5q0 -348 -174 -550.5t-480 -202.5q-305 0 -479 202.5t-174 552.5zM240 733q0 -314 140 -485.5t402 -171.5q264 0 403.5 170t139.5 487q0 316 -139.5 484.5t-401.5 168.5q-261 0 -402.5 -170 t-141.5 -483zM686 1579v16q73 79 144.5 171.5t97.5 140.5h141v-17q-36 -52 -122.5 -138t-190.5 -173h-70z" />
+<glyph unicode="&#xd4;" horiz-adv-x="1565" d="M129 735q0 349 175.5 549.5t479.5 200.5q306 0 479 -201.5t173 -550.5q0 -348 -174 -550.5t-480 -202.5q-305 0 -479 202.5t-174 552.5zM240 733q0 -314 140 -485.5t402 -171.5q264 0 403.5 170t139.5 487q0 316 -139.5 484.5t-401.5 168.5q-261 0 -402.5 -170 t-141.5 -483zM492 1579v16q62 67 131.5 156t110.5 156h98q68 -120 242 -312v-16h-70q-122 101 -221 207q-108 -114 -221 -207h-70z" />
+<glyph unicode="&#xd5;" horiz-adv-x="1565" d="M129 735q0 349 175.5 549.5t479.5 200.5q306 0 479 -201.5t173 -550.5q0 -348 -174 -550.5t-480 -202.5q-305 0 -479 202.5t-174 552.5zM240 733q0 -314 140 -485.5t402 -171.5q264 0 403.5 170t139.5 487q0 316 -139.5 484.5t-401.5 168.5q-261 0 -402.5 -170 t-141.5 -483zM443 1581q10 111 63 174.5t137 63.5q48 0 88 -25t82 -59q34 -28 66 -50t61 -22q46 0 77 36.5t48 119.5h76q-16 -116 -69 -177t-132 -61q-36 0 -75 18.5t-101 71.5q-32 26 -62.5 46t-62.5 20q-45 0 -75 -34.5t-48 -121.5h-73z" />
+<glyph unicode="&#xd6;" horiz-adv-x="1565" d="M129 735q0 349 175.5 549.5t479.5 200.5q306 0 479 -201.5t173 -550.5q0 -348 -174 -550.5t-480 -202.5q-305 0 -479 202.5t-174 552.5zM240 733q0 -314 140 -485.5t402 -171.5q264 0 403.5 170t139.5 487q0 316 -139.5 484.5t-401.5 168.5q-261 0 -402.5 -170 t-141.5 -483zM529 1727q0 46 15.5 66t47.5 20q64 0 64 -86t-64 -86q-63 0 -63 86zM910 1727q0 46 15.5 66t47.5 20q64 0 64 -86t-64 -86q-63 0 -63 86z" />
+<glyph unicode="&#xd7;" d="M119 1130l57 58l408 -408l409 408l58 -58l-408 -407l406 -408l-58 -57l-407 408l-406 -408l-57 57l405 408z" />
+<glyph unicode="&#xd8;" horiz-adv-x="1565" d="M129 735q0 349 175.5 549.5t479.5 200.5q232 0 392 -121l108 152l72 -60l-111 -153q191 -207 191 -570q0 -348 -174 -550.5t-480 -202.5q-236 0 -395 120l-86 -120l-74 59l90 127q-188 200 -188 569zM240 733q0 -312 139 -483l739 1034q-133 102 -334 102 q-261 0 -402.5 -170t-141.5 -483zM444 182q133 -106 338 -106q264 0 403.5 170t139.5 487q0 315 -139 486z" />
+<glyph unicode="&#xd9;" horiz-adv-x="1473" d="M190 520v942h103v-946q0 -211 117 -328.5t331 -117.5q209 0 324 115.5t115 320.5v956h102v-946q0 -252 -146 -394t-407 -142q-254 0 -396.5 142.5t-142.5 397.5zM450 1890v17h142q26 -48 98.5 -142t142.5 -170v-16h-69q-96 79 -188.5 171.5t-125.5 139.5z" />
+<glyph unicode="&#xda;" horiz-adv-x="1473" d="M190 520v942h103v-946q0 -211 117 -328.5t331 -117.5q209 0 324 115.5t115 320.5v956h102v-946q0 -252 -146 -394t-407 -142q-254 0 -396.5 142.5t-142.5 397.5zM633 1579v16q73 79 144.5 171.5t97.5 140.5h141v-17q-36 -52 -122.5 -138t-190.5 -173h-70z" />
+<glyph unicode="&#xdb;" horiz-adv-x="1473" d="M190 520v942h103v-946q0 -211 117 -328.5t331 -117.5q209 0 324 115.5t115 320.5v956h102v-946q0 -252 -146 -394t-407 -142q-254 0 -396.5 142.5t-142.5 397.5zM444 1579v16q62 67 131.5 156t110.5 156h98q68 -120 242 -312v-16h-70q-122 101 -221 207 q-108 -114 -221 -207h-70z" />
+<glyph unicode="&#xdc;" horiz-adv-x="1473" d="M190 520v942h103v-946q0 -211 117 -328.5t331 -117.5q209 0 324 115.5t115 320.5v956h102v-946q0 -252 -146 -394t-407 -142q-254 0 -396.5 142.5t-142.5 397.5zM481 1727q0 46 15.5 66t47.5 20q64 0 64 -86t-64 -86q-63 0 -63 86zM862 1727q0 46 15.5 66t47.5 20 q64 0 64 -86t-64 -86q-63 0 -63 86z" />
+<glyph unicode="&#xdd;" horiz-adv-x="1081" d="M0 1462h117l426 -800l428 800h110l-487 -897v-565h-105v557zM434 1579v16q73 79 144.5 171.5t97.5 140.5h141v-17q-36 -52 -122.5 -138t-190.5 -173h-70z" />
+<glyph unicode="&#xde;" horiz-adv-x="1198" d="M207 0v1462h102v-264h256q522 0 522 -420q0 -212 -144 -325t-408 -113h-226v-340h-102zM309 428h201q247 0 357 81.5t110 264.5q0 169 -104 250.5t-322 81.5h-242v-678z" />
+<glyph unicode="&#xdf;" horiz-adv-x="1194" d="M182 0v1206q0 173 103.5 267t292.5 94q188 0 285.5 -72.5t97.5 -210.5q0 -139 -139 -250q-81 -64 -110.5 -100.5t-29.5 -75.5q0 -44 14.5 -68t51.5 -57t102 -78q106 -75 151.5 -124.5t68 -103t22.5 -120.5q0 -156 -88 -241.5t-246 -85.5q-95 0 -174.5 18.5t-126.5 48.5 v107q65 -38 148.5 -62t152.5 -24q114 0 174.5 54.5t60.5 160.5q0 83 -39 144t-149 136q-127 87 -175 147t-48 146q0 60 32.5 110t106.5 108q74 57 106.5 105.5t32.5 106.5q0 93 -70 143t-202 50q-145 0 -226 -69t-81 -196v-1214h-99z" />
+<glyph unicode="&#xe0;" horiz-adv-x="1085" d="M98 289q0 159 132.5 247t383.5 93l207 6v72q0 155 -63 234t-203 79q-151 0 -313 -84l-37 86q179 84 354 84q179 0 267.5 -93t88.5 -290v-723h-73l-25 172h-8q-82 -105 -168.5 -148.5t-204.5 -43.5q-160 0 -249 82t-89 227zM203 285q0 -102 62.5 -158.5t176.5 -56.5 q174 0 274.5 99.5t100.5 276.5v107l-190 -8q-229 -11 -326.5 -71.5t-97.5 -188.5zM255 1552v17h142q26 -48 98.5 -142t142.5 -170v-16h-69q-96 79 -188.5 171.5t-125.5 139.5z" />
+<glyph unicode="&#xe1;" horiz-adv-x="1085" d="M98 289q0 159 132.5 247t383.5 93l207 6v72q0 155 -63 234t-203 79q-151 0 -313 -84l-37 86q179 84 354 84q179 0 267.5 -93t88.5 -290v-723h-73l-25 172h-8q-82 -105 -168.5 -148.5t-204.5 -43.5q-160 0 -249 82t-89 227zM203 285q0 -102 62.5 -158.5t176.5 -56.5 q174 0 274.5 99.5t100.5 276.5v107l-190 -8q-229 -11 -326.5 -71.5t-97.5 -188.5zM422 1241v16q73 79 144.5 171.5t97.5 140.5h141v-17q-36 -52 -122.5 -138t-190.5 -173h-70z" />
+<glyph unicode="&#xe2;" horiz-adv-x="1085" d="M98 289q0 159 132.5 247t383.5 93l207 6v72q0 155 -63 234t-203 79q-151 0 -313 -84l-37 86q179 84 354 84q179 0 267.5 -93t88.5 -290v-723h-73l-25 172h-8q-82 -105 -168.5 -148.5t-204.5 -43.5q-160 0 -249 82t-89 227zM203 285q0 -102 62.5 -158.5t176.5 -56.5 q174 0 274.5 99.5t100.5 276.5v107l-190 -8q-229 -11 -326.5 -71.5t-97.5 -188.5zM251 1241v16q62 67 131.5 156t110.5 156h98q68 -120 242 -312v-16h-70q-122 101 -221 207q-108 -114 -221 -207h-70z" />
+<glyph unicode="&#xe3;" horiz-adv-x="1085" d="M98 289q0 159 132.5 247t383.5 93l207 6v72q0 155 -63 234t-203 79q-151 0 -313 -84l-37 86q179 84 354 84q179 0 267.5 -93t88.5 -290v-723h-73l-25 172h-8q-82 -105 -168.5 -148.5t-204.5 -43.5q-160 0 -249 82t-89 227zM203 285q0 -102 62.5 -158.5t176.5 -56.5 q174 0 274.5 99.5t100.5 276.5v107l-190 -8q-229 -11 -326.5 -71.5t-97.5 -188.5zM200 1243q10 111 63 174.5t137 63.5q48 0 88 -25t82 -59q34 -28 66 -50t61 -22q46 0 77 36.5t48 119.5h76q-16 -116 -69 -177t-132 -61q-36 0 -75 18.5t-101 71.5q-32 26 -62.5 46t-62.5 20 q-45 0 -75 -34.5t-48 -121.5h-73z" />
+<glyph unicode="&#xe4;" horiz-adv-x="1085" d="M98 289q0 159 132.5 247t383.5 93l207 6v72q0 155 -63 234t-203 79q-151 0 -313 -84l-37 86q179 84 354 84q179 0 267.5 -93t88.5 -290v-723h-73l-25 172h-8q-82 -105 -168.5 -148.5t-204.5 -43.5q-160 0 -249 82t-89 227zM203 285q0 -102 62.5 -158.5t176.5 -56.5 q174 0 274.5 99.5t100.5 276.5v107l-190 -8q-229 -11 -326.5 -71.5t-97.5 -188.5zM282 1389q0 46 15.5 66t47.5 20q64 0 64 -86t-64 -86q-63 0 -63 86zM663 1389q0 46 15.5 66t47.5 20q64 0 64 -86t-64 -86q-63 0 -63 86z" />
+<glyph unicode="&#xe5;" horiz-adv-x="1085" d="M98 289q0 159 132.5 247t383.5 93l207 6v72q0 155 -63 234t-203 79q-151 0 -313 -84l-37 86q179 84 354 84q179 0 267.5 -93t88.5 -290v-723h-73l-25 172h-8q-82 -105 -168.5 -148.5t-204.5 -43.5q-160 0 -249 82t-89 227zM203 285q0 -102 62.5 -158.5t176.5 -56.5 q174 0 274.5 99.5t100.5 276.5v107l-190 -8q-229 -11 -326.5 -71.5t-97.5 -188.5zM325 1456q0 94 60 152.5t157 58.5t157 -59t60 -152q0 -97 -60 -155t-157 -58t-157 58t-60 155zM405 1456q0 -66 37.5 -103.5t99.5 -37.5t99.5 37.5t37.5 103.5q0 64 -39 101.5t-98 37.5 q-62 0 -99.5 -38t-37.5 -101z" />
+<glyph unicode="&#xe6;" horiz-adv-x="1731" d="M98 289q0 154 125 243t377 97l201 6v72q0 155 -61.5 234t-198.5 79q-148 0 -305 -84l-37 86q173 84 346 84q261 0 325 -211q111 213 347 213q184 0 289.5 -134.5t105.5 -363.5v-80h-715q0 -460 348 -460q85 0 150 12t174 57v-90q-92 -41 -165 -55t-161 -14 q-295 0 -397 256q-68 -133 -168 -194.5t-252 -61.5q-156 0 -242 82.5t-86 226.5zM203 285q0 -102 61 -158.5t170 -56.5q169 0 266 99.5t97 276.5v107l-187 -8q-219 -11 -313 -71.5t-94 -188.5zM903 618h604q0 188 -77.5 295t-212.5 107q-284 0 -314 -402z" />
+<glyph unicode="&#xe7;" horiz-adv-x="973" d="M119 537q0 270 137 420.5t375 150.5q141 0 270 -49l-27 -88q-141 47 -245 47q-200 0 -303 -123.5t-103 -355.5q0 -220 103 -344.5t288 -124.5q148 0 275 53v-92q-104 -51 -273 -51q-233 0 -365 147t-132 410zM373 -393q30 -10 92 -10q78 0 119 28t41 80q0 94 -193 121 l93 174h96l-66 -117q168 -37 168 -174q0 -100 -67.5 -150.5t-188.5 -50.5q-68 0 -94 11v88z" />
+<glyph unicode="&#xe8;" horiz-adv-x="1124" d="M119 535q0 260 128 416.5t345 156.5q192 0 303 -134t111 -364v-80h-783q2 -224 104.5 -342t293.5 -118q93 0 163.5 13t178.5 56v-90q-92 -40 -170 -54.5t-172 -14.5q-237 0 -369.5 146t-132.5 409zM229 618h672q0 189 -82 295.5t-227 106.5q-157 0 -252 -103.5 t-111 -298.5zM302 1552v17h142q26 -48 98.5 -142t142.5 -170v-16h-69q-96 79 -188.5 171.5t-125.5 139.5z" />
+<glyph unicode="&#xe9;" horiz-adv-x="1124" d="M119 535q0 260 128 416.5t345 156.5q192 0 303 -134t111 -364v-80h-783q2 -224 104.5 -342t293.5 -118q93 0 163.5 13t178.5 56v-90q-92 -40 -170 -54.5t-172 -14.5q-237 0 -369.5 146t-132.5 409zM229 618h672q0 189 -82 295.5t-227 106.5q-157 0 -252 -103.5 t-111 -298.5zM452 1241v16q73 79 144.5 171.5t97.5 140.5h141v-17q-36 -52 -122.5 -138t-190.5 -173h-70z" />
+<glyph unicode="&#xea;" horiz-adv-x="1124" d="M119 535q0 260 128 416.5t345 156.5q192 0 303 -134t111 -364v-80h-783q2 -224 104.5 -342t293.5 -118q93 0 163.5 13t178.5 56v-90q-92 -40 -170 -54.5t-172 -14.5q-237 0 -369.5 146t-132.5 409zM229 618h672q0 189 -82 295.5t-227 106.5q-157 0 -252 -103.5 t-111 -298.5zM290 1241v16q62 67 131.5 156t110.5 156h98q68 -120 242 -312v-16h-70q-122 101 -221 207q-108 -114 -221 -207h-70z" />
+<glyph unicode="&#xeb;" horiz-adv-x="1124" d="M119 535q0 260 128 416.5t345 156.5q192 0 303 -134t111 -364v-80h-783q2 -224 104.5 -342t293.5 -118q93 0 163.5 13t178.5 56v-90q-92 -40 -170 -54.5t-172 -14.5q-237 0 -369.5 146t-132.5 409zM229 618h672q0 189 -82 295.5t-227 106.5q-157 0 -252 -103.5 t-111 -298.5zM331 1389q0 46 15.5 66t47.5 20q64 0 64 -86t-64 -86q-63 0 -63 86zM712 1389q0 46 15.5 66t47.5 20q64 0 64 -86t-64 -86q-63 0 -63 86z" />
+<glyph unicode="&#xec;" horiz-adv-x="463" d="M182 0v1087h99v-1087h-99zM-34 1552v17h142q26 -48 98.5 -142t142.5 -170v-16h-69q-96 79 -188.5 171.5t-125.5 139.5z" />
+<glyph unicode="&#xed;" horiz-adv-x="463" d="M182 0v1087h99v-1087h-99zM107 1241v16q73 79 144.5 171.5t97.5 140.5h141v-17q-36 -52 -122.5 -138t-190.5 -173h-70z" />
+<glyph unicode="&#xee;" horiz-adv-x="463" d="M182 0v1087h99v-1087h-99zM-58 1241v16q62 67 131.5 156t110.5 156h98q68 -120 242 -312v-16h-70q-122 101 -221 207q-108 -114 -221 -207h-70z" />
+<glyph unicode="&#xef;" horiz-adv-x="463" d="M182 0v1087h99v-1087h-99zM-21 1389q0 46 15.5 66t47.5 20q64 0 64 -86t-64 -86q-63 0 -63 86zM360 1389q0 46 15.5 66t47.5 20q64 0 64 -86t-64 -86q-63 0 -63 86z" />
+<glyph unicode="&#xf0;" horiz-adv-x="1174" d="M117 471q0 228 126.5 357.5t342.5 129.5q108 0 187.5 -33t148.5 -96l4 2q-64 270 -269 459l-270 -157l-49 77l244 146q-86 62 -199 119l45 81q147 -69 248 -145l225 137l49 -84l-202 -121q154 -151 230.5 -353t76.5 -431q0 -276 -124 -427.5t-349 -151.5 q-214 0 -339.5 130t-125.5 361zM221 463q0 -186 94.5 -289.5t268.5 -103.5q179 0 272.5 123t93.5 364q0 146 -97 228.5t-267 82.5q-185 0 -275 -100.5t-90 -304.5z" />
+<glyph unicode="&#xf1;" horiz-adv-x="1208" d="M182 0v1087h84l19 -149h6q106 170 377 170q370 0 370 -397v-711h-98v705q0 164 -69 238.5t-214 74.5q-195 0 -285.5 -98.5t-90.5 -319.5v-600h-99zM282 1243q10 111 63 174.5t137 63.5q48 0 88 -25t82 -59q34 -28 66 -50t61 -22q46 0 77 36.5t48 119.5h76 q-16 -116 -69 -177t-132 -61q-36 0 -75 18.5t-101 71.5q-32 26 -62.5 46t-62.5 20q-45 0 -75 -34.5t-48 -121.5h-73z" />
+<glyph unicode="&#xf2;" horiz-adv-x="1200" d="M119 545q0 266 129 414.5t354 148.5q224 0 351.5 -150.5t127.5 -412.5q0 -266 -129 -415.5t-356 -149.5q-143 0 -252 69t-167 198t-58 298zM223 545q0 -224 98.5 -349.5t278.5 -125.5t278.5 125.5t98.5 349.5q0 225 -99.5 349t-279.5 124t-277.5 -123.5t-97.5 -349.5z M335 1552v17h142q26 -48 98.5 -142t142.5 -170v-16h-69q-96 79 -188.5 171.5t-125.5 139.5z" />
+<glyph unicode="&#xf3;" horiz-adv-x="1200" d="M119 545q0 266 129 414.5t354 148.5q224 0 351.5 -150.5t127.5 -412.5q0 -266 -129 -415.5t-356 -149.5q-143 0 -252 69t-167 198t-58 298zM223 545q0 -224 98.5 -349.5t278.5 -125.5t278.5 125.5t98.5 349.5q0 225 -99.5 349t-279.5 124t-277.5 -123.5t-97.5 -349.5z M499 1241v16q73 79 144.5 171.5t97.5 140.5h141v-17q-36 -52 -122.5 -138t-190.5 -173h-70z" />
+<glyph unicode="&#xf4;" horiz-adv-x="1200" d="M119 545q0 266 129 414.5t354 148.5q224 0 351.5 -150.5t127.5 -412.5q0 -266 -129 -415.5t-356 -149.5q-143 0 -252 69t-167 198t-58 298zM223 545q0 -224 98.5 -349.5t278.5 -125.5t278.5 125.5t98.5 349.5q0 225 -99.5 349t-279.5 124t-277.5 -123.5t-97.5 -349.5z M309 1241v16q62 67 131.5 156t110.5 156h98q68 -120 242 -312v-16h-70q-122 101 -221 207q-108 -114 -221 -207h-70z" />
+<glyph unicode="&#xf5;" horiz-adv-x="1200" d="M119 545q0 266 129 414.5t354 148.5q224 0 351.5 -150.5t127.5 -412.5q0 -266 -129 -415.5t-356 -149.5q-143 0 -252 69t-167 198t-58 298zM223 545q0 -224 98.5 -349.5t278.5 -125.5t278.5 125.5t98.5 349.5q0 225 -99.5 349t-279.5 124t-277.5 -123.5t-97.5 -349.5z M264 1243q10 111 63 174.5t137 63.5q48 0 88 -25t82 -59q34 -28 66 -50t61 -22q46 0 77 36.5t48 119.5h76q-16 -116 -69 -177t-132 -61q-36 0 -75 18.5t-101 71.5q-32 26 -62.5 46t-62.5 20q-45 0 -75 -34.5t-48 -121.5h-73z" />
+<glyph unicode="&#xf6;" horiz-adv-x="1200" d="M119 545q0 266 129 414.5t354 148.5q224 0 351.5 -150.5t127.5 -412.5q0 -266 -129 -415.5t-356 -149.5q-143 0 -252 69t-167 198t-58 298zM223 545q0 -224 98.5 -349.5t278.5 -125.5t278.5 125.5t98.5 349.5q0 225 -99.5 349t-279.5 124t-277.5 -123.5t-97.5 -349.5z M346 1389q0 46 15.5 66t47.5 20q64 0 64 -86t-64 -86q-63 0 -63 86zM727 1389q0 46 15.5 66t47.5 20q64 0 64 -86t-64 -86q-63 0 -63 86z" />
+<glyph unicode="&#xf7;" d="M111 682v82h948v-82h-948zM504 371q0 98 80 98q82 0 82 -98q0 -53 -23.5 -76t-58.5 -23q-34 0 -57 23t-23 76zM504 1075q0 99 80 99q82 0 82 -99q0 -52 -23.5 -75t-58.5 -23q-34 0 -57 23t-23 75z" />
+<glyph unicode="&#xf8;" horiz-adv-x="1200" d="M119 545q0 266 129 414.5t354 148.5q179 0 301 -104l96 124l74 -55l-104 -137q112 -147 112 -391q0 -266 -129 -415.5t-356 -149.5q-173 0 -291 98l-86 -113l-72 58l93 120q-121 153 -121 402zM223 545q0 -200 78 -322l543 705q-98 90 -246 90q-180 0 -277.5 -123.5 t-97.5 -349.5zM362 152q94 -82 238 -82q180 0 278.5 125.5t98.5 349.5q0 190 -72 309z" />
+<glyph unicode="&#xf9;" horiz-adv-x="1208" d="M170 377v710h98v-704q0 -164 69 -238.5t214 -74.5q194 0 285.5 98t91.5 319v600h98v-1087h-84l-18 150h-6q-106 -170 -377 -170q-371 0 -371 397zM304 1552v17h142q26 -48 98.5 -142t142.5 -170v-16h-69q-96 79 -188.5 171.5t-125.5 139.5z" />
+<glyph unicode="&#xfa;" horiz-adv-x="1208" d="M170 377v710h98v-704q0 -164 69 -238.5t214 -74.5q194 0 285.5 98t91.5 319v600h98v-1087h-84l-18 150h-6q-106 -170 -377 -170q-371 0 -371 397zM495 1241v16q73 79 144.5 171.5t97.5 140.5h141v-17q-36 -52 -122.5 -138t-190.5 -173h-70z" />
+<glyph unicode="&#xfb;" horiz-adv-x="1208" d="M170 377v710h98v-704q0 -164 69 -238.5t214 -74.5q194 0 285.5 98t91.5 319v600h98v-1087h-84l-18 150h-6q-106 -170 -377 -170q-371 0 -371 397zM313 1241v16q62 67 131.5 156t110.5 156h98q68 -120 242 -312v-16h-70q-122 101 -221 207q-108 -114 -221 -207h-70z" />
+<glyph unicode="&#xfc;" horiz-adv-x="1208" d="M170 377v710h98v-704q0 -164 69 -238.5t214 -74.5q194 0 285.5 98t91.5 319v600h98v-1087h-84l-18 150h-6q-106 -170 -377 -170q-371 0 -371 397zM350 1389q0 46 15.5 66t47.5 20q64 0 64 -86t-64 -86q-63 0 -63 86zM731 1389q0 46 15.5 66t47.5 20q64 0 64 -86t-64 -86 q-63 0 -63 86z" />
+<glyph unicode="&#xfd;" horiz-adv-x="940" d="M0 1087h102l230 -610q105 -281 133 -379h6q42 129 137 385l230 604h102l-487 -1263q-59 -154 -99 -208t-93.5 -81t-129.5 -27q-57 0 -127 21v86q58 -16 125 -16q51 0 90 24t70.5 74.5t73 160t53.5 142.5zM361 1241v16q73 79 144.5 171.5t97.5 140.5h141v-17 q-36 -52 -122.5 -138t-190.5 -173h-70z" />
+<glyph unicode="&#xfe;" horiz-adv-x="1219" d="M182 -492v2048h99v-391l-7 -247h7q114 190 368 190q220 0 335.5 -144.5t115.5 -420.5q0 -268 -121.5 -415.5t-331.5 -147.5q-251 0 -366 188h-7l3 -84q4 -74 4 -162v-414h-99zM281 541q0 -255 85.5 -364t278.5 -109q167 0 258.5 124t91.5 347q0 479 -348 479 q-193 0 -279.5 -105t-86.5 -354v-18z" />
+<glyph unicode="&#xff;" horiz-adv-x="940" d="M0 1087h102l230 -610q105 -281 133 -379h6q42 129 137 385l230 604h102l-487 -1263q-59 -154 -99 -208t-93.5 -81t-129.5 -27q-57 0 -127 21v86q58 -16 125 -16q51 0 90 24t70.5 74.5t73 160t53.5 142.5zM214 1389q0 46 15.5 66t47.5 20q64 0 64 -86t-64 -86 q-63 0 -63 86zM595 1389q0 46 15.5 66t47.5 20q64 0 64 -86t-64 -86q-63 0 -63 86z" />
+<glyph unicode="&#x131;" horiz-adv-x="463" d="M182 0v1087h99v-1087h-99z" />
+<glyph unicode="&#x152;" horiz-adv-x="1839" d="M129 735q0 347 174.5 545.5t480.5 198.5q78 0 183 -17h747v-94h-655v-553h616v-94h-616v-627h655v-94h-756q-76 -16 -176 -16q-305 0 -479 200t-174 551zM240 733q0 -315 140.5 -484t401.5 -169q109 0 174 18v1266q-62 16 -172 16q-262 0 -403 -167.5t-141 -479.5z" />
+<glyph unicode="&#x153;" horiz-adv-x="1942" d="M119 545q0 266 129 414.5t354 148.5q151 0 251 -70t157 -209q110 279 399 279q192 0 303 -134t111 -364v-80h-762q2 -230 100.5 -345t276.5 -115q93 0 163.5 13t178.5 56v-90q-92 -40 -170 -54.5t-172 -14.5q-156 0 -266.5 67.5t-165.5 198.5q-59 -128 -158 -197 t-252 -69q-143 0 -252 69t-167 198t-58 298zM223 545q0 -224 98.5 -349.5t278.5 -125.5q174 0 265 122.5t91 352.5q0 224 -93 348.5t-265 124.5q-180 0 -277.5 -123.5t-97.5 -349.5zM1065 618h653q0 189 -82 295.5t-227 106.5q-155 0 -242 -104t-102 -298z" />
+<glyph unicode="&#x178;" horiz-adv-x="1081" d="M0 1462h117l426 -800l428 800h110l-487 -897v-565h-105v557zM288 1727q0 46 15.5 66t47.5 20q64 0 64 -86t-64 -86q-63 0 -63 86zM669 1727q0 46 15.5 66t47.5 20q64 0 64 -86t-64 -86q-63 0 -63 86z" />
+<glyph unicode="&#x2c6;" horiz-adv-x="1182" d="M299 1241v16q62 67 131.5 156t110.5 156h98q68 -120 242 -312v-16h-70q-122 101 -221 207q-108 -114 -221 -207h-70z" />
+<glyph unicode="&#x2da;" horiz-adv-x="1182" d="M371 1456q0 94 60 152.5t157 58.5t157 -59t60 -152q0 -97 -60 -155t-157 -58t-157 58t-60 155zM451 1456q0 -66 37.5 -103.5t99.5 -37.5t99.5 37.5t37.5 103.5q0 64 -39 101.5t-98 37.5q-62 0 -99.5 -38t-37.5 -101z" />
+<glyph unicode="&#x2dc;" horiz-adv-x="1182" d="M283 1243q10 111 63 174.5t137 63.5q48 0 88 -25t82 -59q34 -28 66 -50t61 -22q46 0 77 36.5t48 119.5h76q-16 -116 -69 -177t-132 -61q-36 0 -75 18.5t-101 71.5q-32 26 -62.5 46t-62.5 20q-45 0 -75 -34.5t-48 -121.5h-73z" />
+<glyph unicode="&#x2000;" horiz-adv-x="953" />
+<glyph unicode="&#x2001;" horiz-adv-x="1907" />
+<glyph unicode="&#x2002;" horiz-adv-x="953" />
+<glyph unicode="&#x2003;" horiz-adv-x="1907" />
+<glyph unicode="&#x2004;" horiz-adv-x="635" />
+<glyph unicode="&#x2005;" horiz-adv-x="476" />
+<glyph unicode="&#x2006;" horiz-adv-x="317" />
+<glyph unicode="&#x2007;" horiz-adv-x="317" />
+<glyph unicode="&#x2008;" horiz-adv-x="238" />
+<glyph unicode="&#x2009;" horiz-adv-x="381" />
+<glyph unicode="&#x200a;" horiz-adv-x="105" />
+<glyph unicode="&#x2010;" horiz-adv-x="659" d="M92 512v82h475v-82h-475z" />
+<glyph unicode="&#x2011;" horiz-adv-x="659" d="M92 512v82h475v-82h-475z" />
+<glyph unicode="&#x2012;" horiz-adv-x="659" d="M92 512v82h475v-82h-475z" />
+<glyph unicode="&#x2013;" horiz-adv-x="1024" d="M82 512v82h860v-82h-860z" />
+<glyph unicode="&#x2014;" horiz-adv-x="2048" d="M82 512v82h1884v-82h-1884z" />
+<glyph unicode="&#x2018;" horiz-adv-x="297" d="M29 981q32 112 81.5 251t92.5 230h65q-30 -101 -64.5 -257t-45.5 -244h-117z" />
+<glyph unicode="&#x2019;" horiz-adv-x="297" d="M29 961q29 96 61 241.5t49 259.5h117l12 -20q-75 -265 -174 -481h-65z" />
+<glyph unicode="&#x201a;" horiz-adv-x="451" d="M68 -263q29 96 61 241.5t49 259.5h117l12 -20q-75 -265 -174 -481h-65z" />
+<glyph unicode="&#x201c;" horiz-adv-x="614" d="M29 981q32 112 81.5 251t92.5 230h65q-30 -101 -64.5 -257t-45.5 -244h-117zM346 981q34 120 83 255t91 226h66q-30 -98 -63 -248.5t-48 -252.5h-117z" />
+<glyph unicode="&#x201d;" horiz-adv-x="614" d="M29 961q29 96 61 241.5t49 259.5h117l12 -20q-75 -265 -174 -481h-65zM346 961q30 98 63 248.5t48 252.5h116l13 -20q-36 -128 -85 -261t-89 -220h-66z" />
+<glyph unicode="&#x201e;" horiz-adv-x="768" d="M68 -263q29 96 61 241.5t49 259.5h117l12 -20q-75 -265 -174 -481h-65zM385 -263q30 98 63 248.5t48 252.5h116l13 -20q-36 -128 -85 -261t-89 -220h-66z" />
+<glyph unicode="&#x2022;" horiz-adv-x="770" d="M231 748q0 89 40.5 134.5t113.5 45.5t113.5 -47t40.5 -133q0 -85 -41 -133t-113 -48t-113 47t-41 134z" />
+<glyph unicode="&#x2026;" horiz-adv-x="1466" d="M162 78q0 98 80 98q82 0 82 -98t-82 -98q-80 0 -80 98zM651 78q0 98 80 98q82 0 82 -98t-82 -98q-80 0 -80 98zM1141 78q0 98 80 98q82 0 82 -98t-82 -98q-80 0 -80 98z" />
+<glyph unicode="&#x202f;" horiz-adv-x="381" />
+<glyph unicode="&#x2039;" horiz-adv-x="524" d="M82 516v27l309 393l62 -43l-254 -363l254 -362l-62 -43z" />
+<glyph unicode="&#x203a;" horiz-adv-x="524" d="M72 168l254 362l-254 363l61 43l309 -391v-27l-309 -393z" />
+<glyph unicode="&#x2044;" horiz-adv-x="246" d="M-332 0l811 1462h94l-811 -1462h-94z" />
+<glyph unicode="&#x205f;" horiz-adv-x="476" />
+<glyph unicode="&#x2074;" horiz-adv-x="688" d="M25 827v60l407 581h96v-563h129v-78h-129v-241h-90v241h-413zM129 905h309v221q0 132 8 232q-6 -12 -21.5 -35.5t-295.5 -417.5z" />
+<glyph unicode="&#x20ac;" d="M74 528v82h172q-4 38 -4 113l4 102h-172v82h184q39 272 183 425t362 153q88 0 161 -17t148 -57l-39 -86q-132 72 -270 72q-174 0 -288 -125.5t-155 -364.5h502v-82h-510l-4 -104v-24q0 -65 4 -87h449v-82h-443q30 -217 147.5 -338.5t301.5 -121.5q148 0 287 65v-94 q-81 -34 -150.5 -46.5t-140.5 -12.5q-228 0 -367.5 140t-181.5 408h-180z" />
+<glyph unicode="&#x2122;" horiz-adv-x="1485" d="M10 1384v78h522v-78h-219v-643h-86v643h-217zM608 741v721h125l221 -606l224 606h125v-721h-86v398l4 207h-7l-227 -605h-74l-221 609h-6l4 -201v-408h-82z" />
+<glyph unicode="&#x2212;" d="M111 682v82h948v-82h-948z" />
+<glyph unicode="&#xe000;" horiz-adv-x="1085" d="M0 1085h1085v-1085h-1085v1085z" />
+<glyph unicode="&#xfb01;" horiz-adv-x="1077" d="M29 1001v58l202 37v84q0 200 73.5 293.5t240.5 93.5q90 0 180 -27l-23 -86q-80 25 -159 25q-116 0 -164.5 -68.5t-48.5 -222.5v-101h256v-86h-256v-1001h-99v1001h-202zM782 1389q0 96 63 96q31 0 48.5 -25t17.5 -71q0 -45 -17.5 -71t-48.5 -26q-63 0 -63 97zM796 0v1087 h99v-1087h-99z" />
+<glyph unicode="&#xfb02;" horiz-adv-x="1077" d="M29 1001v58l202 37v84q0 200 73.5 293.5t240.5 93.5q90 0 180 -27l-23 -86q-80 25 -159 25q-116 0 -164.5 -68.5t-48.5 -222.5v-101h256v-86h-256v-1001h-99v1001h-202zM796 0v1556h99v-1556h-99z" />
+<glyph unicode="&#xfb03;" horiz-adv-x="1692" d="M29 1001v58l202 37v84q0 200 73.5 293.5t240.5 93.5q90 0 180 -27l-23 -86q-80 25 -159 25q-116 0 -164.5 -68.5t-48.5 -222.5v-101h256v-86h-256v-1001h-99v1001h-202zM643 1001v58l202 37v84q0 200 73.5 293.5t240.5 93.5q90 0 180 -27l-23 -86q-80 25 -159 25 q-116 0 -164.5 -68.5t-48.5 -222.5v-101h256v-86h-256v-1001h-99v1001h-202zM1397 1389q0 96 63 96q31 0 48.5 -25t17.5 -71q0 -45 -17.5 -71t-48.5 -26q-63 0 -63 97zM1411 0v1087h99v-1087h-99z" />
+<glyph unicode="&#xfb04;" horiz-adv-x="1692" d="M29 1001v58l202 37v84q0 200 73.5 293.5t240.5 93.5q90 0 180 -27l-23 -86q-80 25 -159 25q-116 0 -164.5 -68.5t-48.5 -222.5v-101h256v-86h-256v-1001h-99v1001h-202zM643 1001v58l202 37v84q0 200 73.5 293.5t240.5 93.5q90 0 180 -27l-23 -86q-80 25 -159 25 q-116 0 -164.5 -68.5t-48.5 -222.5v-101h256v-86h-256v-1001h-99v1001h-202zM1411 0v1556h99v-1556h-99z" />
+</font>
+</defs></svg> 
\ No newline at end of file
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/fonts/maven_pro_regular-webfont.svg
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/fonts/maven_pro_regular-webfont.svg	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/fonts/maven_pro_regular-webfont.svg	(revision 47450)
@@ -0,0 +1,245 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" >
+<svg xmlns="http://www.w3.org/2000/svg">
+<metadata>
+This is a custom SVG webfont generated by Font Squirrel.
+Copyright   : Copyright c 2011 by Vissol Ltd All rights reserved
+Designer    : Joe Prince
+Foundry     : Joe Prince
+</metadata>
+<defs>
+<font id="webfontOM8fITNz" horiz-adv-x="1529" >
+<font-face units-per-em="2048" ascent="1638" descent="-410" />
+<missing-glyph horiz-adv-x="692" />
+<glyph unicode=" "  horiz-adv-x="692" />
+<glyph unicode="&#x09;" horiz-adv-x="692" />
+<glyph unicode="&#xa0;" horiz-adv-x="692" />
+<glyph unicode="!" horiz-adv-x="761" d="M303 0v164h164v-164h-164zM311 1366h148l-15 -1022h-118z" />
+<glyph unicode="&#x22;" horiz-adv-x="780" d="M440 1384h170l-37 -411h-98zM203 973l-37 411h170l-35 -411h-98z" />
+<glyph unicode="#" horiz-adv-x="1210" d="M850 1071h125l-43 -242h147v-122h-168l-57 -326h166v-123h-186l-37 -219h-125l37 219h-271l-39 -219h-125l39 219h-168v123h189l55 326h-186v122h209l41 242h125l-41 -242h270zM729 381l57 326h-272l-55 -326h270z" />
+<glyph unicode="$" horiz-adv-x="1181" d="M1055 348q0 -156 -105.5 -250t-296.5 -110v-209h-110v205q-207 6 -377 96v160q158 -104 377 -109v520q-76 23 -117 37t-101.5 44t-92 63.5t-55 87t-23.5 121.5q0 143 95 249.5t294 126.5v209h110v-205q166 -8 314 -81v-152q-150 84 -314 86v-469q88 -29 147.5 -55.5 t124 -73.5t97.5 -120t33 -171zM301 1004q0 -78 61.5 -121t180.5 -80v428q-242 -34 -242 -227zM653 135q254 33 254 213q0 106 -65.5 165.5t-188.5 102.5v-481z" />
+<glyph unicode="%" horiz-adv-x="1777" d="M442 1360q123 0 209 -83t86 -294q0 -113 -26.5 -190.5t-71.5 -116.5t-93 -55.5t-104 -16.5q-57 0 -104 16.5t-93 55.5t-73 116.5t-27 190.5q0 111 27 189.5t73 116.5t93 54.5t104 16.5zM442 711q84 0 133.5 55t49.5 217t-49.5 216t-133.5 54q-86 0 -135 -54t-49 -216 t50 -217t134 -55zM1384 1366l-858 -1366h-131l858 1366h131zM1339 6q-57 0 -104 16.5t-93 55.5t-73 116.5t-27 190.5t27 190.5t73 116.5t93 55.5t104 16.5q55 0 103.5 -16.5t93.5 -55.5t71.5 -116.5t26.5 -190.5t-26.5 -190.5t-71.5 -116.5t-93.5 -55.5t-103.5 -16.5z M1339 657q-84 0 -134 -55t-50 -217t50 -217t134 -55t133.5 55t49.5 217t-49.5 217t-133.5 55z" />
+<glyph unicode="&#x26;" horiz-adv-x="1310" d="M1014 272l227 -272h-192l-125 152q-162 -168 -385 -168q-111 0 -198 38.5t-134 101t-71.5 127t-24.5 126.5q0 119 56 220t220 191q-135 168 -135 283q0 127 91 218t218 91q131 0 221 -87t90 -214q0 -109 -59 -183.5t-192 -152.5l297 -354q57 100 83 205h134 q-33 -177 -121 -322zM565 1233q-70 0 -120 -48t-50 -116q0 -72 129 -213q131 70 171 116t40 105q0 68 -49 112t-121 44zM545 127q172 0 291 129l-357 428q-78 -41 -128 -85t-68.5 -87t-22.5 -67.5t-4 -63.5q0 -33 12.5 -71t42 -82t90 -72.5t144.5 -28.5z" />
+<glyph unicode="'" horiz-adv-x="509" d="M203 973l-37 411h170l-35 -411h-98z" />
+<glyph unicode="(" horiz-adv-x="706" d="M418 1483h155q-29 -47 -59.5 -112.5t-74.5 -180.5t-72.5 -264.5t-28.5 -300.5q0 -150 28.5 -300.5t72.5 -264t76 -180t58 -111.5h-155q-227 408 -228 856q1 450 228 858z" />
+<glyph unicode=")" horiz-adv-x="706" d="M291 1483q227 -408 227 -856q0 -451 -227 -858h-158q29 47 59.5 111.5t75.5 180t74 265t29 301.5q0 195 -53.5 396.5t-98.5 296.5t-86 163h158z" />
+<glyph unicode="*" horiz-adv-x="841" d="M666 1270l-177 -80l177 -78l-56 -98l-153 112l16 -184h-111l21 184l-156 -112l-55 98l178 78l-178 80l55 94l156 -111l-21 187h111l-16 -187l153 111z" />
+<glyph unicode="+" horiz-adv-x="1128" d="M926 674v-123h-301v-301h-123v301h-303v123h303v303h123v-303h301z" />
+<glyph unicode="," horiz-adv-x="641" d="M303 172h168l-172 -401h-147z" />
+<glyph unicode="-" horiz-adv-x="950" d="M786 682v-143h-624v143h624z" />
+<glyph unicode="." horiz-adv-x="671" d="M260 0v164h164v-164h-164z" />
+<glyph unicode="/" horiz-adv-x="827" d="M723 1548h135l-754 -1749h-133z" />
+<glyph unicode="0" horiz-adv-x="1345" d="M671.5 1378q538.5 0 538.5 -700.5t-538.5 -700.5t-538.5 700.5t538.5 700.5zM671.5 113q61.5 0 110.5 10t104.5 45t92.5 94.5t60.5 164.5t23.5 251q0 178 -34 298t-95.5 174t-121.5 73.5t-140 19.5t-140.5 -19.5t-122 -73.5t-95 -174t-33.5 -298q0 -145 23.5 -250.5 t60 -165t92 -94.5t104.5 -45t110.5 -10z" />
+<glyph unicode="1" horiz-adv-x="923" d="M463 1366h168v-1366h-148v1212l-272 -180v174z" />
+<glyph unicode="2" horiz-adv-x="1189" d="M401 147h619v-147h-862v129q102 76 208.5 169t223.5 215t189.5 252t72.5 234q0 238 -322 238q-190 0 -358 -119v162q172 104 371 104q233 0 344.5 -112.5t111.5 -272.5q0 -111 -56 -232.5t-151.5 -236t-190 -206t-200.5 -177.5z" />
+<glyph unicode="3" horiz-adv-x="1193" d="M788 739q10 -4 26.5 -12t58.5 -39t75 -67.5t59.5 -99t26.5 -132.5q0 -78 -27.5 -147.5t-84 -129t-157.5 -94t-235 -34.5q-197 0 -364 86v151q160 -90 346 -90q182 0 278.5 67.5t96.5 194.5t-98.5 194.5t-284.5 67.5h-150v142h156q150 0 228.5 56t78.5 162.5t-83 164 t-240 57.5q-152 0 -295 -72v150q147 70 311 69q233 0 344 -108.5t111 -259.5q0 -172 -148 -260z" />
+<glyph unicode="4" horiz-adv-x="1210" d="M889 547h194v-137h-194v-410h-148v410h-663v157l645 799h166v-819zM242 547h499v608z" />
+<glyph unicode="5" horiz-adv-x="1202" d="M248 1366h702v-145h-575l-39 -406q121 37 266 37q84 0 153.5 -18.5t136 -63.5t105.5 -135t39 -217t-39 -217t-105.5 -135.5t-136 -63.5t-153.5 -18q-236 0 -391 84v153q150 -94 381 -94q80 0 138 19.5t89 46t47.5 69.5t20.5 77t4 79q0 92 -24.5 152.5t-71.5 88t-93.5 37 t-109.5 9.5q-96 0 -177 -16.5t-112 -33.5l-33 -14l-92 94z" />
+<glyph unicode="6" horiz-adv-x="1193" d="M598 874q215 0 340 -115.5t125 -314.5q0 -84 -25.5 -162.5t-78 -147t-145.5 -109.5t-216 -41q-465 0 -465 641q0 141 25.5 257.5t65.5 193.5t96.5 135.5t111.5 90t118.5 51t111 25.5t94.5 6q109 0 198 -26v-137q-102 25 -182 24q-47 0 -92 -6t-113.5 -32.5t-122 -73 t-97.5 -136.5t-58 -213q133 90 309 90zM598 123q102 0 172 38t98.5 98t37.5 103.5t9 83.5q0 139 -81.5 215t-235.5 76q-201 0 -317 -116q2 -141 27.5 -241.5t57 -149t83 -75t79 -29.5t70.5 -3z" />
+<glyph unicode="7" horiz-adv-x="1175" d="M143 1366h932v-137l-592 -1229h-164l596 1219h-772v147z" />
+<glyph unicode="8" horiz-adv-x="1191" d="M842 739q10 -4 25.5 -11t54.5 -34.5t69.5 -62.5t55 -95.5t24.5 -129.5q0 -78 -25.5 -149t-79 -134.5t-148.5 -101t-220 -37.5q-240 0 -356.5 127t-116.5 295q0 203 184 307l51 24l-20 11q-12 6 -44 30.5t-56.5 55t-44 84t-19.5 112.5q0 145 103.5 249.5t318.5 104.5 t318.5 -103t103.5 -251q0 -184 -148 -274zM324 1030q0 -111 72.5 -173t201.5 -62t201.5 62.5t72.5 172.5q0 209 -274 209t-274 -209zM598 123q86 0 149.5 23.5t96.5 56.5t52 76t23.5 71.5t4.5 55.5q0 123 -84 188t-242 65t-242 -65.5t-84 -187.5q0 -27 4.5 -55.5t23.5 -71.5 t52 -76t96.5 -56.5t149.5 -23.5z" />
+<glyph unicode="9" horiz-adv-x="1202" d="M584 494q-215 0 -340 115.5t-125 314.5q0 84 25.5 162.5t77.5 147.5t145.5 109.5t216.5 40.5q465 0 465 -643q0 -195 -48.5 -340t-116 -223t-160.5 -124t-160.5 -58t-137.5 -12q-104 0 -199 24v139q84 -25 183 -24q47 0 92 6t113.5 32.5t120.5 73t97.5 136.5t57.5 213 q-121 -90 -307 -90zM584 1245q-102 0 -172 -38t-98.5 -98t-38 -103t-9.5 -84q0 -139 82 -215t236 -76q207 0 317 117q-2 141 -27.5 241.5t-57.5 148.5t-83 74.5t-78.5 29.5t-70.5 3z" />
+<glyph unicode=":" horiz-adv-x="800" d="M324 98v164h163v-164h-163zM324 754v164h163v-164h-163z" />
+<glyph unicode=";" horiz-adv-x="854" d="M352 754v164h164v-164h-164zM350 172h168l-172 -401h-147z" />
+<glyph unicode="&#x3c;" horiz-adv-x="1351" d="M246 621l844 383v-164l-672 -289l672 -291v-162l-844 383v140z" />
+<glyph unicode="=" horiz-adv-x="1306" d="M1049 524v-143h-789v143h789zM1049 840v-142h-789v142h789z" />
+<glyph unicode="&#x3e;" horiz-adv-x="1329" d="M1112 621v-140l-842 -383v162l670 291l-670 289v164z" />
+<glyph unicode="?" horiz-adv-x="993" d="M391 0v164h164v-164h-164zM449 1382q61 0 120.5 -14t129 -50t112.5 -117t43 -197q0 -82 -31.5 -142.5t-77.5 -98.5l-90 -76q-45 -38 -76.5 -101.5t-31.5 -151.5v-90h-148v100q0 104 32 181t77 120t90 78t77 79t32 102q0 231 -269 231q-156 0 -274 -90v160q113 77 285 77z " />
+<glyph unicode="@" horiz-adv-x="1869" d="M1040 596q74 0 152 -10q2 14 2 43q0 35 -6 59.5t-23.5 50t-60.5 39t-109 13.5q-143 0 -256 -43l17 118q123 41 239 41q156 0 237 -70.5t81 -207.5q0 -59 -11.5 -142.5t-17.5 -137.5t-4 -107.5t30.5 -79t86.5 -25.5q90 0 169 114t79 312q0 145 -55.5 262t-144.5 186.5 t-191.5 106.5t-206.5 37q-311 0 -554 -230.5t-243 -553.5q0 -154 51 -270.5t123 -177t163 -98.5t153.5 -47t113.5 -9q254 0 430 100l-18 -92q-172 -82 -428 -82q-86 0 -174.5 22.5t-178.5 74.5t-158.5 127t-112.5 192.5t-44 259.5q0 244 133 445.5t334 309t410 107.5 q82 0 171 -21.5t180 -73t162.5 -126t116.5 -189t45 -254.5q0 -221 -91 -362t-242 -141q-137 0 -191 100q-96 -100 -295 -100q-143 0 -225 62t-82 171q0 49 16.5 94t59.5 94.5t138 79t230 29.5zM903 184q49 0 88 8.5t65.5 17.5t47 31.5t31 37t18.5 46t11 46t6.5 51.5t5.5 47 q-55 8 -136 8q-326 0 -325 -178q0 -115 188 -115z" />
+<glyph unicode="A" horiz-adv-x="1325" d="M735 1366l543 -1366h-158l-164 426h-589l-164 -426h-160l545 1366h147zM422 567h479l-239 625z" />
+<glyph unicode="B" horiz-adv-x="1271" d="M940 727q10 -2 24.5 -8t54.5 -33t69.5 -61.5t54 -98t24.5 -139.5q0 -387 -495 -387h-494v1366h453q455 0 454 -367q0 -55 -15 -104t-36.5 -78t-42 -50.5t-37.5 -29.5zM684 137q156 0 246 54.5t90 203.5q0 63 -21.5 108.5t-52.5 71t-80 39t-91 17.5t-97 4h-352v-498h358z M938 989q0 133 -72.5 184.5t-220.5 51.5h-319v-451h338q125 0 199.5 43t74.5 172z" />
+<glyph unicode="C" horiz-adv-x="1286" d="M272 684q0 -291 121 -426t381 -135q209 0 400 80v-142q-199 -78 -416 -77q-633 0 -633 700t633 700q219 0 416 -79v-142q-195 82 -400 82q-260 0 -381 -135t-121 -426z" />
+<glyph unicode="D" horiz-adv-x="1372" d="M178 1366h428q641 0 641 -682q0 -684 -641 -684h-428v1366zM596 139q262 0 383 131t121 414t-121 414t-383 131h-270v-1090h270z" />
+<glyph unicode="E" horiz-adv-x="1159" d="M326 1227v-471h628v-144h-628v-473h714v-139h-862v1366h862v-139h-714z" />
+<glyph unicode="F" horiz-adv-x="1097" d="M178 1366h838v-139h-690v-471h606v-144h-606v-612h-148v1366z" />
+<glyph unicode="G" horiz-adv-x="1386" d="M758 600v143h477v-653q-221 -106 -477 -106q-633 0 -633 700t633 700q227 0 430 -86v-143q-199 88 -414 88q-260 0 -381 -135t-121 -424q0 -291 121 -425t381 -134q164 0 313 49v426h-329z" />
+<glyph unicode="H" horiz-adv-x="1380" d="M1053 1366h147v-1366h-147v612h-727v-612h-148v1366h148v-612h727v612z" />
+<glyph unicode="I" horiz-adv-x="501" d="M178 1366h148v-1366h-148v1366z" />
+<glyph unicode="J" horiz-adv-x="915" d="M573 1366h148v-958q0 -125 -35 -213.5t-95.5 -131.5t-124 -61t-136.5 -18q-147 0 -271 71v154q117 -82 252 -82q139 0 200.5 68.5t61.5 224.5v946z" />
+<glyph unicode="K" horiz-adv-x="1294" d="M571 727l633 -727h-194l-535 623l-149 -164v-459h-148v1366h148v-704l632 704h199z" />
+<glyph unicode="L" horiz-adv-x="1067" d="M326 143h698v-143h-846v1366h148v-1223z" />
+<glyph unicode="M" horiz-adv-x="1619" d="M1278 1366h160v-1366h-148v1124l-483 -696l-481 696v-1124h-148v1366h160l469 -694z" />
+<glyph unicode="N" horiz-adv-x="1490" d="M1161 1366h148v-1366h-166l-817 1151v-1151h-148v1366h168l815 -1151v1151z" />
+<glyph unicode="O" d="M758 1384q635 0 635 -700t-635 -700q-633 0 -633 700t633 700zM758 123q254 0 370.5 135t116.5 426t-116.5 426t-370.5 135q-252 0 -369 -135t-117 -426t117 -426t369 -135z" />
+<glyph unicode="P" horiz-adv-x="1220" d="M662 1366q229 0 351 -108.5t122 -313.5t-122 -313.5t-351 -108.5h-338v-522h-148v1366h486zM643 664q109 0 181.5 23.5t105.5 68.5t45 88t12 100t-12 100t-45 88.5t-105.5 69t-181.5 23.5h-319v-561h319z" />
+<glyph unicode="Q" d="M1393 684q0 -651 -553 -698q41 -170 268 -176v-134q-113 0 -196 30t-127 81t-65.5 98t-29.5 101q-565 37 -565 698q0 700 633 700q635 0 635 -700zM758 123q254 0 370.5 135t116.5 426t-116.5 426t-370.5 135q-252 0 -369 -135t-117 -426t117 -426t369 -135z" />
+<glyph unicode="R" horiz-adv-x="1271" d="M829 573l375 -573h-174l-356 551h-348v-551h-148v1366h502q223 0 343 -101.5t120 -295.5q0 -88 -28 -160t-63.5 -112t-84.5 -69.5t-80 -39t-58 -15.5zM672 690q102 0 170.5 23.5t99.5 65.5t42 83t11 96.5t-11 96.5t-42 83t-99.5 65.5t-170.5 23.5h-346v-537h346z" />
+<glyph unicode="S" horiz-adv-x="1150" d="M272 1004q0 -70 56.5 -117t139.5 -69.5t181.5 -57.5t181 -76t139 -127t56.5 -209q0 -170 -128 -267t-357 -97q-223 0 -404 96v160q162 -109 393 -109q348 0 349 217q0 92 -56.5 154.5t-139.5 91.5l-181 60q-98 32 -181 65t-139.5 105.5t-56.5 179.5q0 158 114.5 269 t356.5 111q174 0 342 -81v-152q-152 86 -328 86q-164 0 -251 -60t-87 -173z" />
+<glyph unicode="T" horiz-adv-x="1163" d="M25 1366h1112v-143h-482v-1223h-147v1223h-483v143z" />
+<glyph unicode="U" horiz-adv-x="1476" d="M1141 1366h147v-805q0 -281 -143.5 -429t-411.5 -148t-411.5 148.5t-143.5 428.5v805h148v-813q0 -434 407.5 -434t407.5 434v813z" />
+<glyph unicode="V" horiz-adv-x="1251" d="M1061 1366h158l-525 -1366h-145l-524 1366h157l441 -1155z" />
+<glyph unicode="W" horiz-adv-x="1947" d="M1765 1366h156l-440 -1366h-150l-358 1114l-359 -1114h-151l-438 1366h155l359 -1143l360 1143h148l358 -1143z" />
+<glyph unicode="X" horiz-adv-x="1206" d="M690 690l484 -690h-177l-397 563l-395 -563h-180l485 692l-473 674h176l387 -549l385 549h180z" />
+<glyph unicode="Y" horiz-adv-x="1224" d="M1012 1366h178l-508 -739v-627h-147v627l-510 739h178l405 -596z" />
+<glyph unicode="Z" horiz-adv-x="1247" d="M1104 1366v-125l-785 -1094h785v-147h-973v129l780 1090h-759v147h952z" />
+<glyph unicode="[" horiz-adv-x="784" d="M391 1286v-1384h223v-140h-370v1663h370v-139h-223z" />
+<glyph unicode="\" horiz-adv-x="753" d="M59 1548l752 -1749h-133l-754 1749h135z" />
+<glyph unicode="]" horiz-adv-x="780" d="M393 1286h-221v139h369v-1663h-369v140h221v1384z" />
+<glyph unicode="^" horiz-adv-x="1146" d="M600 1413l213 -444h-123l-145 325l-148 -325h-123l213 444h113z" />
+<glyph unicode="_" horiz-adv-x="1118" d="M0 -49h1118v-90h-1118v90z" />
+<glyph unicode="`" horiz-adv-x="448" d="M244 1391l116 -236h-96l-170 236h150z" />
+<glyph unicode="a" horiz-adv-x="1093" d="M522 1040q215 0 328 -108.5t113 -317.5v-307q0 -98 -45.5 -167.5t-117 -100.5t-134 -43t-123.5 -12q-47 0 -96.5 6t-112 27.5t-108.5 55t-78.5 96t-32.5 144.5q0 70 25.5 125.5t62.5 90t94 59t101 36t104.5 17.5t86 7t60.5 1l164 -10q0 137 -75.5 195.5t-223.5 58.5 q-166 0 -299 -49v143q151 53 307 53zM815 307v197q-68 12 -182 12q-371 0 -371 -203q0 -193 281 -192q272 0 272 186z" />
+<glyph unicode="b" horiz-adv-x="1167" d="M569 1040q70 0 131.5 -12t125 -47t109.5 -90t74.5 -149.5t28.5 -217.5q0 -135 -31.5 -236.5t-77.5 -157.5t-110.5 -91t-119 -45t-111.5 -10q-111 0 -193 27.5t-123 63.5t-66.5 86t-30.5 82.5t-5 63.5v1106h147v-414q123 41 252 41zM588 119q57 0 103 13t95.5 51t77 125 t27.5 216q0 199 -76 289t-246 90q-127 0 -252 -51v-553q1 -180 271 -180z" />
+<glyph unicode="c" horiz-adv-x="966" d="M266 512q0 -205 83 -296t265 -91q154 0 287 57v-143q-143 -55 -303 -55q-72 0 -134.5 12t-128 48t-111.5 92.5t-75.5 152.5t-29.5 223q0 156 43 265.5t116.5 163.5t150.5 76.5t169 22.5q154 0 303 -57v-141q-139 57 -287 57q-182 0 -265 -92t-83 -295z" />
+<glyph unicode="d" horiz-adv-x="1150" d="M129 524q0 152 41 258.5t113.5 159.5t147.5 74.5t165 21.5q135 0 254 -39v412h147v-1106q0 -41 -12 -84t-50 -102.5t-130 -97t-227 -37.5q-57 0 -111.5 10t-118 45t-109.5 91t-78 157.5t-32 236.5zM276 524q0 -129 28 -216t77 -125t94 -51t103 -13q272 0 272 180v553 q-125 51 -254 51q-168 0 -244 -90t-76 -289z" />
+<glyph unicode="e" horiz-adv-x="1136" d="M578 1040q94 0 170.5 -29.5t121.5 -69.5t79 -104.5t48.5 -109.5t22.5 -108.5t8 -78.5v-44l-4 -72h-745q14 -154 94 -223.5t237 -69.5q223 0 351 76v-152q-150 -72 -365 -71q-90 0 -165 21.5t-147.5 74.5t-113.5 159.5t-41 258.5v7.5v7.5q0 527 449 527zM279 555h598 q0 35 -8.5 78t-34 110.5t-92 112.5t-164.5 45q-152 0 -220.5 -79t-78.5 -267z" />
+<glyph unicode="f" horiz-adv-x="675" d="M612 1317q-49 0 -74.5 -4t-61.5 -24.5t-53 -73t-17 -136.5v-57h280v-135h-280v-887h-148v887h-176v135h176v55q0 106 27.5 182t62.5 112t89.5 56.5t83 22.5t67.5 2q55 0 98 -12v-131q-41 8 -74 8z" />
+<glyph unicode="g" horiz-adv-x="1101" d="M557 1040q131 0 220 -36.5t125 -94t48.5 -99.5t12.5 -83v-770q0 -68 -19.5 -125t-64.5 -111.5t-137.5 -85t-223.5 -30.5q-143 0 -291 37v139q131 -37 275 -37q98 0 164.5 17.5t96.5 50t41 64.5t11 77v102q-115 -37 -240 -37q-68 0 -127 11.5t-120.5 45.5t-105.5 88 t-71.5 144t-27.5 209q0 160 43 271.5t115.5 162.5t138 70.5t137.5 19.5zM815 203v530q0 172 -258 172q-55 0 -98 -13t-90 -50t-73 -120t-26 -206q0 -115 24.5 -189.5t72 -110.5t95.5 -48t113 -12q123 0 240 47z" />
+<glyph unicode="h" horiz-adv-x="1181" d="M649 1040q188 0 290.5 -113.5t102.5 -320.5v-606h-147v606q0 287 -262 287q-143 0 -293 -62v-831h-147v1411h147v-436q155 65 309 65z" />
+<glyph unicode="i" horiz-adv-x="540" d="M348 0v1022h-147v-1022h147zM356 1366v-162h-163v162h163z" />
+<glyph unicode="j" horiz-adv-x="514" d="M207 1366h164v-162h-164v162zM215 1022h147v-1081q0 -336 -356 -336v137q127 2 168 50t41 157v1073z" />
+<glyph unicode="k" horiz-adv-x="1124" d="M559 553l492 -553h-197l-391 449l-127 -138v-311h-148v1411h148v-891l459 502h200z" />
+<glyph unicode="l" horiz-adv-x="552" d="M354 0h-147v1411h147v-1411z" />
+<glyph unicode="m" horiz-adv-x="1824" d="M1251 1040q186 0 288.5 -98t102.5 -276v-666h-147v666q0 43 -8 76.5t-32.5 71.5t-79 58.5t-134.5 20.5q-129 0 -283 -51q33 -74 33 -176v-666h-147v666q0 45 -8.5 78.5t-33 70.5t-80.5 57.5t-138 20.5q-125 0 -244 -37v-856h-147v942q197 98 409 98q168 0 270 -84 q197 84 379 84z" />
+<glyph unicode="n" horiz-adv-x="1189" d="M600 1040q193 0 299.5 -98t106.5 -276v-666h-148v666q0 43 -9 76.5t-35 71.5t-84 58.5t-146 20.5q-129 0 -269 -41v-852h-147v940q201 100 432 100z" />
+<glyph unicode="o" horiz-adv-x="1155" d="M579.5 1040q92.5 0 170 -22.5t151.5 -76.5t117 -163.5t43 -265.5t-43 -265.5t-117 -163.5t-151.5 -76.5t-170 -22.5t-169 22.5t-150.5 76.5t-117 163.5t-43 265.5t43 265.5t117 163.5t150.5 76.5t169 22.5zM580 119q174 0 253.5 93t79.5 300t-79.5 300t-253.5 93 t-253 -94t-79 -299t79 -299t253 -94z" />
+<glyph unicode="p" horiz-adv-x="1159" d="M588 1040q57 0 111.5 -10t118 -45t109.5 -92t77.5 -158.5t31.5 -236.5q0 -152 -41 -258.5t-113.5 -159.5t-147.5 -74.5t-165 -21.5q-125 0 -254 39v-402h-147v1096q0 41 12.5 84t50 103.5t130 98t227.5 37.5zM569 121q168 0 244 89t76 290q0 129 -27.5 215t-77 125 t-94.5 52t-102 13q-272 0 -273 -182v-551q117 -51 254 -51z" />
+<glyph unicode="q" horiz-adv-x="1150" d="M115 498q0 135 31.5 236.5t77.5 158.5t109.5 92t118 45t111.5 10q111 0 193 -27.5t123 -63.5t66.5 -86t30.5 -82.5t5 -63.5v-1096h-147v402q-117 -39 -252 -39q-90 0 -165 21.5t-147.5 74.5t-113.5 159.5t-41 258.5zM262 500q0 -201 76 -290t244 -89q135 0 252 51v551 q0 182 -271 182q-57 0 -102 -13t-94.5 -52t-77 -125t-27.5 -215z" />
+<glyph unicode="r" horiz-adv-x="702" d="M662 897q-168 -4 -349 -53v-844h-147v940q231 98 496 98v-141z" />
+<glyph unicode="s" horiz-adv-x="872" d="M248 743q0 -53 56 -85.5t137 -54t162 -51.5t137.5 -101.5t56.5 -182.5q0 -133 -99.5 -208.5t-275.5 -75.5q-170 0 -309 77v156q147 -90 303 -90q233 0 233 141q0 76 -56 119t-137 64.5t-162 47t-137.5 86t-56.5 158.5q0 123 89.5 210t273.5 87q131 0 262 -63v-148 q-117 70 -246 70q-231 0 -231 -156z" />
+<glyph unicode="t" horiz-adv-x="706" d="M375 887v-623q0 -78 32.5 -109.5t114.5 -31.5q63 0 117 24v-139q-68 -25 -135 -24q-41 0 -80 9t-88 35.5t-79 89t-30 154.5v615h-178v135h178v289h148v-289h264v-135h-264z" />
+<glyph unicode="u" horiz-adv-x="1202" d="M877 1022h147v-592q0 -213 -111.5 -329.5t-316.5 -116.5t-316.5 116.5t-111.5 329.5v592h147v-600q0 -156 68 -228.5t213 -72.5q143 0 212 72.5t69 228.5v600z" />
+<glyph unicode="v" horiz-adv-x="1062" d="M842 1022h157l-393 -1022h-149l-391 1022h157l309 -838z" />
+<glyph unicode="w" horiz-adv-x="1603" d="M1368 1022h156l-340 -1022h-150l-233 764l-234 -764h-149l-340 1022h155l261 -791l235 791h141l238 -791z" />
+<glyph unicode="x" horiz-adv-x="1032" d="M600 514l363 -514h-177l-274 389l-274 -389h-181l365 518l-354 504h174l268 -379l268 379h180l-356 -504z" />
+<glyph unicode="y" horiz-adv-x="1028" d="M807 1022h158l-418 -1122q-109 -295 -322 -295q-49 0 -96 18v135q41 -18 88 -18q39 0 77 28.5t62.5 68.5t45 81t28.5 70l10 28l-377 1006h158l291 -809z" />
+<glyph unicode="z" horiz-adv-x="950" d="M840 1022v-129l-561 -752h561v-141h-748v133l557 748h-543v141h734z" />
+<glyph unicode="{" horiz-adv-x="763" d="M463 72q0 -88 39 -122t121 -38v-137q-150 0 -229 78.5t-79 228.5v319q0 111 -129 150v100q129 33 129 148v319q0 150 79 229.5t229 79.5v-139q-82 -4 -121 -36.5t-39 -123.5v-329q0 -119 -119 -199q119 -80 119 -199v-329z" />
+<glyph unicode="|" horiz-adv-x="907" d="M526 -203h-147v1565h147v-1565z" />
+<glyph unicode="}" horiz-adv-x="753" d="M315 72v329q0 117 121 199q-121 82 -121 199v329q0 90 -37.5 123t-121.5 37v139q150 0 228.5 -79.5t78.5 -229.5v-319q0 -115 129 -148v-100q-129 -39 -129 -150v-319q0 -150 -79 -228.5t-228 -78.5v137q82 4 120.5 38t38.5 122z" />
+<glyph unicode="~" horiz-adv-x="1024" d="M823 639v-123q-57 -72 -122.5 -79t-127.5 26l-122 64q-61 32 -127 25t-123 -79v125q57 72 122.5 79t127.5 -26l122 -65q61 -33 127 -26t123 79z" />
+<glyph unicode="&#xa1;" horiz-adv-x="741" d="M467 1022v-162h-164v162h164zM459 -344h-148l15 1022h118z" />
+<glyph unicode="&#xa2;" horiz-adv-x="976" d="M897 1014q-125 51 -266 55v-772q143 4 266 57v-143q-125 -49 -266 -55v-156h-103v158q-412 41 -411 526q0 268 116.5 388t294.5 136v158h103v-156q131 -2 266 -55v-141zM264 684q0 -178 63.5 -270t200.5 -111v762q-137 -20 -200.5 -111.5t-63.5 -269.5z" />
+<glyph unicode="&#xa3;" horiz-adv-x="1136" d="M727 1243q-299 0 -299 -233v-299h412v-136h-412v-415q51 -6 145.5 -25.5t154.5 -30t143 -7.5t153 30v-150q-100 -39 -229 -29.5t-230.5 38t-229.5 31.5t-231 -48v150q80 39 177 45v411h-177v136h177v293q0 158 105.5 269t328.5 111q162 0 309 -79v-150q-139 88 -297 88z " />
+<glyph unicode="&#xa5;" horiz-adv-x="1232" d="M1204 1366l-444 -645h256v-123h-322v-192h322v-123h-322v-283h-147v283h-322v123h322v192h-322v123h256l-444 645h180l404 -588l403 588h180z" />
+<glyph unicode="&#xa7;" horiz-adv-x="1112" d="M1008 629q0 -76 -51.5 -130.5t-125.5 -78.5q72 -59 72 -158q0 -131 -111.5 -204.5t-310.5 -73.5q-203 0 -350 73v152q135 -84 340 -84q285 0 285 137q0 61 -48.5 102.5t-218.5 79.5q-184 43 -277 101.5t-93 181.5q0 164 186 223q-82 51 -82 144q0 119 100.5 204.5 t309.5 85.5q156 0 297 -61v-145q-131 70 -285 69q-274 0 -274 -153q0 -25 8 -40.5t68.5 -44t179.5 -55.5q84 -18 140 -38.5t116.5 -56.5t92.5 -94t32 -136zM743 514q117 35 117 115q0 61 -49 102t-217 80q-98 23 -176 49q-152 -29 -152 -133q0 -25 8.5 -40t70 -44t179.5 -55 q135 -29 219 -74z" />
+<glyph unicode="&#xa8;" horiz-adv-x="788" d="M162 1155v162h162v-162h-162zM465 1155v162h162v-162h-162z" />
+<glyph unicode="&#xa9;" horiz-adv-x="1593" d="M799 -16q-289 0 -495 204.5t-206 493.5q0 291 206 495.5t495 204.5q291 0 495.5 -204.5t204.5 -495.5q0 -289 -204.5 -493.5t-495.5 -204.5zM799 1311q-258 0 -442.5 -184.5t-184.5 -444.5q0 -258 184.5 -442.5t442.5 -184.5q260 0 443 184.5t183 442.5q0 260 -183 444.5 t-443 184.5zM535 682q0 -170 70.5 -249t221.5 -79q121 0 234 47v-82q-115 -45 -244 -45q-369 0 -368 408q0 410 368 410q129 0 244 -45v-82q-109 45 -234 45q-152 0 -222 -79t-70 -249z" />
+<glyph unicode="&#xaa;" horiz-adv-x="806" d="M381 1382q246 0 246 -235v-172q0 -72 -46 -115t-92.5 -53t-95.5 -10t-96 10t-94 54t-47 118q0 186 297 186l92 -6q0 143 -168 144q-92 0 -164 -29v80q72 28 168 28zM545 977v108q-37 6 -101 7q-207 0 -206 -111q0 -109 155 -109q152 1 152 105z" />
+<glyph unicode="&#xab;" horiz-adv-x="1132" d="M608 911l-364 -389l364 -391h-198l-347 391l347 389h198zM997 911l-364 -389l364 -391h-198l-346 391l346 389h198z" />
+<glyph unicode="&#xac;" horiz-adv-x="1273" d="M199 664h876v-340h-135v204h-741v136z" />
+<glyph unicode="&#xad;" horiz-adv-x="950" d="M786 682v-143h-624v143h624z" />
+<glyph unicode="&#xae;" horiz-adv-x="1593" d="M926 618l219 -335h-103l-206 323h-205v-323h-86v798h293q131 0 201.5 -58t70.5 -173q0 -63 -22.5 -111.5t-57.5 -72t-58 -33t-46 -15.5zM834 688q113 0 150.5 43t37.5 112.5t-38 112.5t-150 43h-203v-311h203zM799 -16q-289 0 -495 204.5t-206 493.5q0 291 206 495.5 t495 204.5q291 0 495.5 -204.5t204.5 -495.5q0 -289 -204.5 -493.5t-495.5 -204.5zM799 1311q-258 0 -442.5 -184.5t-184.5 -444.5q0 -258 184.5 -442.5t442.5 -184.5q260 0 443 184.5t183 442.5q0 260 -183 444.5t-443 184.5z" />
+<glyph unicode="&#xaf;" horiz-adv-x="825" d="M176 1180v108h479v-108h-479z" />
+<glyph unicode="&#xb0;" horiz-adv-x="792" d="M391 1370q109 0 166 -58.5t57 -168.5q0 -227 -223 -227.5t-223 227t223 227.5zM391 989q78 0 114 36t36 118q0 80 -36 116.5t-114 36.5q-80 0 -114.5 -36.5t-34.5 -116.5q0 -82 34.5 -118t114.5 -36z" />
+<glyph unicode="&#xb1;" horiz-adv-x="1198" d="M657 721h301v-123h-301v-303h-122v303h-304v123h304v301h122v-301zM231 68v122h727v-122h-727z" />
+<glyph unicode="&#xb2;" horiz-adv-x="671" d="M240 1028h331v-80h-462v70q133 98 252.5 230t119.5 239q0 125 -172 125q-106 0 -192 -62v86q90 55 198 56q125 0 185.5 -60.5t60.5 -144.5q1 -197 -321 -459z" />
+<glyph unicode="&#xb3;" horiz-adv-x="661" d="M444 1346q6 -2 14.5 -6.5t31 -20.5t40 -36.5t31.5 -54.5t14 -71q0 -90 -66.5 -153.5t-203.5 -63.5q-102 0 -196 45v82q90 -49 186 -49q203 0 203 141t-207 141h-80v76h84q164 0 164 119q0 117 -174 117q-88 0 -158 -37v80q82 37 168 37q125 0 184.5 -58.5t59.5 -138.5 q0 -49 -23.5 -86t-48.5 -49z" />
+<glyph unicode="&#xb4;" horiz-adv-x="483" d="M240 1391h151l-170 -236h-98z" />
+<glyph unicode="&#xb5;" horiz-adv-x="1247" d="M891 1022h147v-938q-193 -100 -430 -100q-152 2 -258 82v-496h-147v1452h147v-664q0 -45 9.5 -78.5t35 -70.5t83 -57.5t145.5 -20.5q135 0 268 39v852z" />
+<glyph unicode="&#xb6;" horiz-adv-x="911" d="M549 1366h203v-1366h-136v524h-67q-229 0 -350 108.5t-121 313.5q0 203 121 311.5t350 108.5z" />
+<glyph unicode="&#xb7;" horiz-adv-x="636" d="M399 639v-164h-161v164h161z" />
+<glyph unicode="&#xb8;" horiz-adv-x="518" d="M399 -10l-129 -236h-155l168 236h116z" />
+<glyph unicode="&#xb9;" horiz-adv-x="491" d="M244 1683h90v-735h-78v651l-147 -96v94z" />
+<glyph unicode="&#xba;" horiz-adv-x="854" d="M422 1384q266 0 266 -294q0 -293 -266 -293q-113 0 -189.5 64.5t-76.5 228.5q0 86 23.5 147t64.5 92t84 43t94 12zM422 872q98 0 141 51.5t43 166t-43 167t-141 52.5q-96 0 -140 -52.5t-44 -167t44 -166t140 -51.5z" />
+<glyph unicode="&#xbb;" horiz-adv-x="1132" d="M526 911h197l348 -389l-348 -391h-197l363 391zM137 911h197l348 -389l-348 -391h-197l363 391z" />
+<glyph unicode="&#xbc;" horiz-adv-x="1433" d="M1225 295h104v-74h-104v-221h-80v221h-357v84l347 428h90v-438zM877 295h268v326zM240 1380h92v-733h-80v651l-146 -98v94zM1042 1403h97l-895 -1448h-97z" />
+<glyph unicode="&#xbd;" horiz-adv-x="1460" d="M240 1380h92v-733h-80v651l-146 -98v94zM999 80h332v-80h-461v70q133 98 252 229t119 238q0 127 -172 127q-104 0 -192 -64v88q98 55 198 55q127 0 186.5 -60t59.5 -146q0 -195 -322 -457zM1042 1403h97l-895 -1448h-97z" />
+<glyph unicode="&#xbe;" horiz-adv-x="1654" d="M471 1042q6 -2 14.5 -6t31 -20.5t39.5 -35.5t31.5 -53t14.5 -71q0 -90 -65.5 -154.5t-204.5 -64.5q-98 0 -197 47v80q94 -47 189 -47q201 0 200 141q0 68 -53 104.5t-154 36.5h-79v74h84q164 0 163.5 119t-174.5 119q-84 0 -157 -39v82q82 37 168 37q125 0 184 -58.5 t59 -140.5q0 -49 -23.5 -86t-45.5 -49zM1446 295h104v-74h-104v-221h-80v221h-356v84l346 428h90v-438zM1098 295h268v326zM1264 1403h96l-895 -1448h-96z" />
+<glyph unicode="&#xbf;" horiz-adv-x="989" d="M610 1022v-162h-164v162h164zM553 -360q-47 0 -93 7t-105.5 31.5t-102.5 64.5t-74 111.5t-31 165.5q0 82 32 141.5t77 97.5l90 76q45 38 77 101.5t32 151.5v92h147v-102q0 -104 -31.5 -181.5t-76.5 -119t-90.5 -77.5t-77 -80t-31.5 -100q0 -233 270 -233q141 0 275 90 v-160q-115 -77 -287 -77z" />
+<glyph unicode="&#xc0;" horiz-adv-x="1325" d="M735 1366l543 -1366h-158l-164 426h-589l-164 -426h-160l545 1366h147zM422 567h479l-239 625zM590 1718l117 -235h-99l-170 235h152z" />
+<glyph unicode="&#xc1;" horiz-adv-x="1325" d="M43 0l545 1366h147l543 -1366h-158l-164 426h-589l-164 -426h-160zM422 567h479l-239 625zM731 1718h152l-170 -235h-99z" />
+<glyph unicode="&#xc2;" horiz-adv-x="1325" d="M735 1366l543 -1366h-158l-164 426h-589l-164 -426h-160l545 1366h147zM422 567h479l-239 625zM705 1731l163 -248h-114l-92 145l-93 -145h-114l163 248h87z" />
+<glyph unicode="&#xc3;" horiz-adv-x="1325" d="M948 1526q-53 -66 -114.5 -73t-117.5 23l-112 59q-55 30 -116.5 22.5t-114.5 -72.5v117q53 66 114.5 71.5t116.5 -23.5l112 -60q56 -30 117.5 -23.5t114.5 71.5v-112zM735 1366l543 -1366h-158l-164 426h-589l-164 -426h-160l545 1366h147zM422 567h479l-239 625z" />
+<glyph unicode="&#xc4;" horiz-adv-x="1325" d="M428 1483v164h164v-164h-164zM731 1483v164h164v-164h-164zM735 1366l543 -1366h-158l-164 426h-589l-164 -426h-160l545 1366h147zM422 567h479l-239 625z" />
+<glyph unicode="&#xc5;" horiz-adv-x="1325" d="M735 1366l543 -1366h-158l-164 426h-589l-164 -426h-160l545 1366h147zM422 567h479l-239 625zM661.5 1759q79.5 0 122.5 -43t43 -125t-43 -125t-122.5 -43t-122.5 43t-43 125t43 125t122.5 43zM662 1493q49 0 70.5 22.5t21.5 76t-21.5 77t-70.5 23.5q-51 0 -72 -23.5 t-21 -77t21 -76t72 -22.5z" />
+<glyph unicode="&#xc6;" horiz-adv-x="1939" d="M1126 1225v-471h607v-144h-607v-469h691v-141h-838v428h-506l-252 -428h-170l811 1366h955v-141h-691zM979 575v644h-45l-375 -644h420z" />
+<glyph unicode="&#xc7;" horiz-adv-x="1286" d="M774 1247q-260 0 -381 -134t-121 -425t121 -426t381 -135q209 0 400 80v-141q-172 -68 -357 -78l-125 -232h-155l163 232q-575 35 -575 698q0 700 633 700q217 0 416 -77v-142q-187 80 -400 80z" />
+<glyph unicode="&#xc8;" horiz-adv-x="1159" d="M596 1718l117 -235h-99l-170 235h152zM326 1227v-471h628v-144h-628v-473h714v-139h-862v1366h862v-139h-714z" />
+<glyph unicode="&#xc9;" horiz-adv-x="1159" d="M680 1718h151l-169 -235h-97zM326 1227v-471h628v-144h-628v-473h714v-139h-862v1366h862v-139h-714z" />
+<glyph unicode="&#xca;" horiz-adv-x="1159" d="M662 1731l165 -248h-114l-92 145l-95 -145h-114l166 248h84zM326 1227v-471h628v-144h-628v-473h714v-139h-862v1366h862v-139h-714z" />
+<glyph unicode="&#xcb;" horiz-adv-x="1159" d="M395 1483v164h162v-164h-162zM698 1483v164h162v-164h-162zM326 1227v-471h628v-144h-628v-473h714v-139h-862v1366h862v-139h-714z" />
+<glyph unicode="&#xcc;" horiz-adv-x="501" d="M178 0v1366h148v-1366h-148zM184 1718l117 -235h-98l-170 235h151z" />
+<glyph unicode="&#xcd;" horiz-adv-x="501" d="M326 0v1366h-148v-1366h148zM319 1718h152l-170 -235h-98z" />
+<glyph unicode="&#xce;" horiz-adv-x="501" d="M326 0v1366h-148v-1366h148zM295 1731l164 -248h-115l-92 145l-92 -145h-115l164 248h86z" />
+<glyph unicode="&#xcf;" horiz-adv-x="501" d="M326 0v1366h-148v-1366h148zM18 1483v164h164v-164h-164zM322 1483v164h163v-164h-163z" />
+<glyph unicode="&#xd0;" horiz-adv-x="1468" d="M696 1366q641 0 641 -682q0 -684 -641 -684h-428v621h-159v122h159v623h428zM686 139q262 0 383 131t121 414t-121 414t-383 131h-270v-486h350v-122h-350v-482h270z" />
+<glyph unicode="&#xd1;" horiz-adv-x="1490" d="M1161 1366h148v-1366h-166l-817 1151v-1151h-148v1366h168l815 -1151v1151zM1032 1526q-53 -66 -114.5 -73t-117.5 23l-113 59q-56 30 -117.5 22.5t-114.5 -72.5v117q53 66 114.5 71.5t117.5 -23.5l113 -60q56 -30 117.5 -23.5t114.5 71.5v-112z" />
+<glyph unicode="&#xd2;" d="M125 684q0 700 633 700t633 -700t-633 -700t-633 700zM272 684q0 -291 117 -426t369 -135t368.5 135t116.5 426t-116.5 426t-368.5 135t-369 -135t-117 -426zM713 1718l116 -235h-96l-170 235h150z" />
+<glyph unicode="&#xd3;" d="M758 1384q633 0 633 -700t-633 -700t-633 700t633 700zM758 123q252 0 368.5 135t116.5 426t-116.5 426t-368.5 135t-369 -135t-117 -426t117 -426t369 -135zM801 1718h151l-170 -235h-96z" />
+<glyph unicode="&#xd4;" d="M758 1384q633 0 633 -700t-633 -700t-633 700t633 700zM758 123q252 0 368.5 135t116.5 426t-116.5 426t-368.5 135t-369 -135t-117 -426t117 -426t369 -135zM801 1731l164 -248h-115l-92 145l-92 -145h-115l164 248h86z" />
+<glyph unicode="&#xd5;" d="M758 1384q635 0 635 -700t-635 -700q-633 0 -633 700t633 700zM758 123q254 0 370.5 135t116.5 426t-116.5 426t-370.5 135q-252 0 -369 -135t-117 -426t117 -426t369 -135zM1047 1526q-53 -66 -115 -73t-118 23l-113 59q-56 30 -116.5 22.5t-113.5 -72.5v117 q53 66 113.5 71.5t116.5 -23.5l113 -60q56 -30 117.5 -23.5t115.5 71.5v-112z" />
+<glyph unicode="&#xd6;" d="M524 1483v164h164v-164h-164zM827 1483v164h164v-164h-164zM758 1384q633 0 633 -700t-633 -700t-633 700t633 700zM758 123q252 0 368.5 135t116.5 426t-116.5 426t-368.5 135t-369 -135t-117 -426t117 -426t369 -135z" />
+<glyph unicode="&#xd7;" horiz-adv-x="985" d="M705 160l-209 276l-207 -276h-131l272 364l-272 365h131l207 -277l209 277h131l-273 -365l273 -364h-131z" />
+<glyph unicode="&#xd8;" d="M1415 1366l-160 -188q137 -174 138 -494q0 -702 -635 -702q-254 0 -410 118l-86 -100h-160l158 188q-135 172 -135 496q0 700 633 700q256 0 411 -118l86 100h160zM272 684q0 -252 84 -383l721 856q-115 88 -319 88q-252 0 -369 -135t-117 -426zM1245 684q0 244 -84 381 l-721 -856q115 -88 318 -88q254 0 370.5 135t116.5 428z" />
+<glyph unicode="&#xd9;" horiz-adv-x="1476" d="M672 1718l116 -235h-96l-172 235h152zM1141 1366h147v-805q0 -281 -143.5 -429t-411.5 -148t-411.5 148.5t-143.5 428.5v805h148v-813q0 -434 407.5 -434t407.5 434v813z" />
+<glyph unicode="&#xda;" horiz-adv-x="1476" d="M795 1718h151l-170 -235h-98zM1141 1366h147v-805q0 -281 -143.5 -429t-411.5 -148t-411.5 148.5t-143.5 428.5v805h148v-813q0 -434 407.5 -434t407.5 434v813z" />
+<glyph unicode="&#xdb;" horiz-adv-x="1476" d="M776 1731l164 -248h-115l-92 145l-92 -145h-115l164 248h86zM1141 1366h147v-805q0 -281 -143.5 -429t-411.5 -148t-411.5 148.5t-143.5 428.5v805h148v-813q0 -434 407.5 -434t407.5 434v813z" />
+<glyph unicode="&#xdc;" horiz-adv-x="1476" d="M500 1483v164h164v-164h-164zM803 1483v164h164v-164h-164zM1141 1366h147v-805q0 -281 -143.5 -429t-411.5 -148t-411.5 148.5t-143.5 428.5v805h148v-813q0 -434 407.5 -434t407.5 434v813z" />
+<glyph unicode="&#xdd;" horiz-adv-x="1224" d="M655 1718h150l-170 -235h-96zM1012 1366h178l-508 -739v-627h-147v627l-510 739h178l405 -596z" />
+<glyph unicode="&#xde;" horiz-adv-x="1167" d="M590 1159q227 0 349 -109.5t122 -314.5t-122 -313.5t-349 -108.5h-266v-313h-148v1366h148v-207h266zM569 455q109 0 181.5 23.5t105.5 68.5t45 88t12 100.5t-12 100.5t-45 88t-105.5 68.5t-181.5 23.5h-245v-561h245z" />
+<glyph unicode="&#xdf;" horiz-adv-x="1255" d="M889 705q10 -4 27.5 -12.5t61.5 -39t76.5 -66.5t60.5 -94.5t28 -123.5q0 -170 -150.5 -269.5t-384.5 -99.5v133q162 0 274.5 61.5t112.5 188.5q0 129 -120.5 188.5t-266.5 59.5v129q145 0 232.5 62.5t87.5 181.5q0 123 -85 183t-222 60q-141 0 -217 -87t-76 -300v-860 h-148v868q0 113 23.5 203t73 162t136.5 111.5t208 39.5q229 0 341.5 -112.5t112.5 -267.5q0 -51 -19.5 -100.5t-46 -84.5t-54 -61.5t-46.5 -40.5z" />
+<glyph unicode="&#xe0;" horiz-adv-x="1093" d="M522 1040q215 0 328 -108.5t113 -315.5v-309q0 -98 -45.5 -167.5t-117 -100.5t-134 -43t-123.5 -12q-47 0 -96.5 6t-112 27.5t-108.5 55t-78.5 96t-32.5 144.5q0 70 25.5 125.5t62.5 90t94 59t101 36t104.5 17.5t86 7t60.5 1l164 -10q0 137 -75.5 195.5t-223.5 58.5 q-166 0 -299 -49v143q151 53 307 53zM815 307v197q-68 12 -182 12q-371 0 -371 -203q0 -193 281 -192q272 0 272 186zM506 1391l117 -236h-97l-170 236h150z" />
+<glyph unicode="&#xe1;" horiz-adv-x="1093" d="M522 1040q215 0 328 -108.5t113 -315.5v-309q0 -98 -45.5 -167.5t-117 -100.5t-134 -43t-123.5 -12q-47 0 -96.5 6t-112 27.5t-108.5 55t-78.5 96t-32.5 144.5q0 70 25.5 125.5t62.5 90t94 59t101 36t104.5 17.5t86 7t60.5 1l164 -10q0 137 -75.5 195.5t-223.5 58.5 q-166 0 -299 -49v143q151 53 307 53zM815 307v197q-68 12 -182 12q-371 0 -371 -203q0 -193 281 -192q272 0 272 186zM584 1391h151l-170 -236h-98z" />
+<glyph unicode="&#xe2;" horiz-adv-x="1093" d="M522 1040q215 0 328 -108.5t113 -315.5v-309q0 -98 -45.5 -167.5t-117 -100.5t-134 -43t-123.5 -12q-47 0 -96.5 6t-112 27.5t-108.5 55t-78.5 96t-32.5 144.5q0 70 25.5 125.5t62.5 90t94 59t101 36t104.5 17.5t86 7t60.5 1l164 -10q0 137 -75.5 195.5t-223.5 58.5 q-166 0 -299 -49v143q151 53 307 53zM815 307v197q-68 12 -182 12q-371 0 -371 -203q0 -193 281 -192q272 0 272 186zM612 1401l164 -246h-114l-93 143l-92 -143h-115l164 246h86z" />
+<glyph unicode="&#xe3;" horiz-adv-x="1093" d="M522 1040q215 0 328 -108.5t113 -315.5v-309q0 -98 -45.5 -167.5t-117 -100.5t-134 -43t-123.5 -12q-47 0 -96.5 6t-112 27.5t-108.5 55t-78.5 96t-32.5 144.5q0 70 25.5 125.5t62.5 90t93 59t101 36t105.5 17.5t85 7t59.5 1l166 -10q0 137 -75.5 195.5t-223.5 58.5 q-150 0 -299 -47v141q141 53 307 53zM815 307v197q-68 12 -182 12q-371 0 -371 -201q0 -195 281 -194q272 0 272 186zM846 1198q-53 -66 -114.5 -73t-118.5 23l-112 59q-56 30 -117.5 23t-115.5 -73v117q53 66 114.5 72t118.5 -24l112 -59q56 -30 118 -24t115 72v-113z" />
+<glyph unicode="&#xe4;" horiz-adv-x="1093" d="M336 1155v162h164v-162h-164zM639 1155v162h164v-162h-164zM522 1040q215 0 328 -108.5t113 -315.5v-309q0 -98 -45.5 -167.5t-117 -100.5t-134 -43t-123.5 -12q-47 0 -96.5 6t-112 27.5t-108.5 55t-78.5 96t-32.5 144.5q0 70 25.5 125.5t62.5 90t94 59t101 36 t104.5 17.5t86 7t60.5 1l164 -10q0 137 -75.5 195.5t-223.5 58.5q-166 0 -299 -49v143q151 53 307 53zM815 307v197q-68 12 -182 12q-371 0 -371 -203q0 -193 281 -192q272 0 272 186z" />
+<glyph unicode="&#xe5;" horiz-adv-x="1093" d="M522 1040q215 0 328 -108.5t113 -315.5v-309q0 -98 -45.5 -167.5t-117 -100.5t-134 -43t-123.5 -12q-47 0 -96.5 6t-112 27.5t-108.5 55t-78.5 96t-32.5 144.5q0 70 25.5 125.5t62.5 90t94 59t101 36t104.5 17.5t86 7t60.5 1l164 -10q0 137 -75.5 195.5t-223.5 58.5 q-166 0 -299 -49v143q151 53 307 53zM815 307v197q-68 12 -182 12q-371 0 -371 -203q0 -193 281 -192q272 0 272 186zM559 1432q80 0 123 -43t43 -125t-43 -125t-123 -43t-123 43t-43 125t43 125t123 43zM559 1163q49 0 70.5 23.5t21.5 77t-21.5 76t-70.5 22.5 q-51 0 -71.5 -22.5t-20.5 -76t20.5 -77t71.5 -23.5z" />
+<glyph unicode="&#xe6;" horiz-adv-x="1824" d="M1255 1040q94 0 171 -29.5t122 -69.5t79 -104.5t48.5 -109.5t22.5 -108.5t8 -78.5v-44l-4 -72h-746q14 -154 94 -223.5t240 -69.5q219 0 350 76v-152q-154 -72 -366 -71q-248 0 -365 151q-104 -152 -370 -151q-47 0 -96.5 6t-112 27.5t-108.5 55t-78.5 96t-32.5 144.5 q0 70 25.5 125.5t62.5 90t93 59t101 36t105.5 17.5t85 7t59.5 1l166 -10q0 137 -76 195.5t-223 58.5q-166 0 -299 -49v143q152 53 305 53q268 0 377 -168q112 168 362 168zM809 307v197q-66 12 -180 12q-371 0 -371 -203q0 -193 281 -192q270 0 270 186zM956 555h598 q0 35 -8 78t-33.5 110.5t-92 112.5t-165.5 45q-150 0 -219.5 -79t-79.5 -267z" />
+<glyph unicode="&#xe7;" horiz-adv-x="966" d="M614 899q-182 0 -265 -92t-83 -295q0 -205 83 -296t265 -91q154 0 287 57v-143q-115 -41 -225 -53l-127 -230h-156l164 228q-86 4 -157.5 30.5t-138 83t-104.5 162t-38 252.5q0 156 43 265.5t116.5 163.5t150.5 76.5t169 22.5q154 0 303 -57v-141q-140 57 -287 57z" />
+<glyph unicode="&#xe8;" horiz-adv-x="1136" d="M578 1040q94 0 170.5 -29.5t121.5 -69.5t79 -104.5t48.5 -109.5t22.5 -108.5t8 -78.5v-44l-4 -72h-745q14 -154 94 -223.5t237 -69.5q223 0 351 76v-152q-150 -72 -365 -71q-90 0 -165 21.5t-147.5 74.5t-113.5 159.5t-41 258.5v10q-2 532 449 532zM279 555h598 q0 35 -8.5 78t-34 110.5t-92 112.5t-164.5 45q-152 0 -220.5 -79t-78.5 -267zM547 1391l117 -236h-99l-170 236h152z" />
+<glyph unicode="&#xe9;" horiz-adv-x="1136" d="M578 1040q94 0 170.5 -29.5t121.5 -69.5t79 -104.5t48.5 -109.5t22.5 -108.5t8 -78.5v-44l-4 -72h-745q14 -154 94 -223.5t237 -69.5q223 0 351 76v-152q-150 -72 -365 -71q-90 0 -165 21.5t-147.5 74.5t-113.5 159.5t-41 258.5v10q-2 532 449 532zM279 555h598 q0 35 -8.5 78t-34 110.5t-92 112.5t-164.5 45q-152 0 -220.5 -79t-78.5 -267zM623 1391h151l-170 -236h-98z" />
+<glyph unicode="&#xea;" horiz-adv-x="1136" d="M578 1040q94 0 170.5 -29.5t121.5 -69.5t79 -104.5t48.5 -109.5t22.5 -108.5t8 -78.5v-44l-4 -72h-745q14 -154 94 -223.5t237 -69.5q223 0 351 76v-152q-150 -72 -365 -71q-90 0 -165 21.5t-147.5 74.5t-113.5 159.5t-41 258.5v10q-2 532 449 532zM279 555h598 q0 35 -8.5 78t-34 110.5t-92 112.5t-164.5 45q-152 0 -220.5 -79t-78.5 -267zM621 1401l163 -246h-114l-92 143l-93 -143h-114l164 246h86z" />
+<glyph unicode="&#xeb;" horiz-adv-x="1136" d="M578 1040q94 0 170.5 -29.5t121.5 -69.5t79 -104.5t48.5 -109.5t22.5 -108.5t8 -78.5v-44l-4 -72h-745q14 -154 94 -223.5t237 -69.5q223 0 351 76v-152q-150 -72 -365 -71q-90 0 -165 21.5t-147.5 74.5t-113.5 159.5t-41 258.5v10q-2 532 449 532zM279 555h598 q0 35 -8.5 78t-34 110.5t-92 112.5t-164.5 45q-152 0 -220.5 -79t-78.5 -267zM344 1155v162h164v-162h-164zM647 1155v162h164v-162h-164z" />
+<glyph unicode="&#xec;" horiz-adv-x="552" d="M203 0v1022h147v-1022h-147zM209 1391l117 -236h-99l-170 236h152z" />
+<glyph unicode="&#xed;" horiz-adv-x="552" d="M350 0v1022h-147v-1022h147zM342 1391h152l-170 -236h-97z" />
+<glyph unicode="&#xee;" horiz-adv-x="552" d="M350 0v1022h-147v-1022h147zM317 1401l166 -246h-114l-93 143l-94 -143h-114l165 246h84z" />
+<glyph unicode="&#xef;" horiz-adv-x="552" d="M350 0v1022h-147v-1022h147zM43 1155v162h162v-162h-162zM346 1155v162h162v-162h-162z" />
+<glyph unicode="&#xf0;" horiz-adv-x="1193" d="M852 1223q197 -193 197 -596q0 -643 -465 -643q-123 0 -216.5 41t-145.5 109.5t-77.5 147t-25.5 162.5q0 199 125 314.5t340 115.5q186 0 307 -90q-25 244 -174 365l-230 -129l-55 98l170 94q-86 33 -192 33q-41 0 -111 -8v137q66 10 127 10q184 0 328 -86l190 107 l53 -98zM584 123q43 0 70.5 3t78.5 29.5t83 75t57.5 148.5t27.5 242q-111 117 -317 116q-154 0 -236 -75.5t-82 -215.5q0 -41 9.5 -84t38 -103t98.5 -98t172 -38z" />
+<glyph unicode="&#xf1;" horiz-adv-x="1189" d="M600 1040q193 0 299.5 -98t106.5 -276v-666h-148v666q0 43 -9 76.5t-35 71.5t-84 58.5t-146 20.5q-129 0 -269 -41v-852h-147v940q201 100 432 100zM874 1198q-53 -66 -114.5 -73t-117.5 23l-113 59q-56 30 -116.5 23t-113.5 -73v117q53 66 113.5 72t116.5 -24l113 -59 q56 -30 117.5 -24t114.5 72v-113z" />
+<glyph unicode="&#xf2;" horiz-adv-x="1155" d="M100 512q0 156 43 265.5t117 163.5t151.5 76.5t170 22.5t169 -22.5t150.5 -76.5t117 -163.5t43 -265.5t-43 -265.5t-117 -163.5t-150.5 -76.5t-169 -22.5t-170 22.5t-151.5 76.5t-117 163.5t-43 265.5zM248 512q0 -207 80 -300t254 -93t252.5 94t78.5 299t-78.5 299 t-252.5 94t-254 -93t-80 -300zM514 1391l117 -236h-99l-170 236h152z" />
+<glyph unicode="&#xf3;" horiz-adv-x="1155" d="M581.5 1040q92.5 0 169 -22.5t150.5 -76.5t117 -163.5t43 -265.5t-43 -265.5t-117 -163.5t-150.5 -76.5t-169 -22.5t-170 22.5t-151.5 76.5t-117 163.5t-43 265.5t43 265.5t117 163.5t151.5 76.5t170 22.5zM582 119q174 0 252.5 94t78.5 299t-78.5 299t-252.5 94 t-254 -93t-80 -300t80 -300t254 -93zM647 1391h152l-170 -236h-99z" />
+<glyph unicode="&#xf4;" horiz-adv-x="1155" d="M100 512q0 156 43 265.5t117 163.5t151.5 76.5t170 22.5t169 -22.5t150.5 -76.5t117 -163.5t43 -265.5t-43 -265.5t-117 -163.5t-150.5 -76.5t-169 -22.5t-170 22.5t-151.5 76.5t-117 163.5t-43 265.5zM248 512q0 -207 80 -300t254 -93t252.5 94t78.5 299t-78.5 299 t-252.5 94t-254 -93t-80 -300zM623 1401l165 -246h-114l-92 143l-95 -143h-114l166 246h84z" />
+<glyph unicode="&#xf5;" horiz-adv-x="1155" d="M100 512q0 156 43 265.5t117 163.5t150.5 76.5t169 22.5t170 -22.5t151.5 -76.5t117 -163.5t43 -265.5t-43 -265.5t-117 -163.5t-151.5 -76.5t-170 -22.5t-169 22.5t-150.5 76.5t-117 163.5t-43 265.5zM248 512q0 -207 79 -300t253 -93t253.5 93t79.5 300t-79.5 300 t-253.5 93t-253 -93t-79 -300zM877 1198q-53 -66 -115 -73t-118 23l-113 59q-56 30 -116.5 24t-113.5 -72v115q53 66 113.5 73t116.5 -23l113 -60q56 -31 117.5 -24t115.5 73v-115z" />
+<glyph unicode="&#xf6;" horiz-adv-x="1155" d="M100 512q0 156 43 265.5t117 163.5t151.5 76.5t170 22.5t169 -22.5t150.5 -76.5t117 -163.5t43 -265.5t-43 -265.5t-117 -163.5t-150.5 -76.5t-169 -22.5t-170 22.5t-151.5 76.5t-117 163.5t-43 265.5zM248 512q0 -207 80 -300t254 -93t252.5 94t78.5 299t-78.5 299 t-252.5 94t-254 -93t-80 -300zM348 1155v162h162v-162h-162zM651 1155v162h162v-162h-162z" />
+<glyph unicode="&#xf7;" horiz-adv-x="1286" d="M561 735v164h164v-164h-164zM561 152v163h164v-163h-164zM1059 465v123h-832v-123h832z" />
+<glyph unicode="&#xf8;" horiz-adv-x="1175" d="M938 1022h160l-125 -150q94 -131 94 -360q0 -156 -43 -265.5t-116.5 -163.5t-150.5 -76.5t-169 -22.5q-182 0 -297 79l-55 -63h-160l127 152q-96 133 -97 360q0 156 43.5 265.5t117 163.5t151.5 76.5t170 22.5q180 0 297 -82zM254 512q0 -158 45 -246l496 586 q-78 53 -207 53q-174 0 -254 -93t-80 -300zM920 512q0 156 -46 246l-493 -588q76 -51 207 -51q174 0 253 93t79 300z" />
+<glyph unicode="&#xf9;" horiz-adv-x="1202" d="M877 1022h147v-592q0 -213 -111.5 -329.5t-316.5 -116.5t-316.5 116.5t-111.5 329.5v592h147v-600q0 -156 68 -228.5t213 -72.5q143 0 212 72.5t69 228.5v600zM535 1391l116 -236h-98l-170 236h152z" />
+<glyph unicode="&#xfa;" horiz-adv-x="1202" d="M877 1022h147v-592q0 -213 -111.5 -329.5t-316.5 -116.5t-316.5 116.5t-111.5 329.5v592h147v-600q0 -156 68 -228.5t213 -72.5q143 0 212 72.5t69 228.5v600zM657 1391h150l-170 -236h-96z" />
+<glyph unicode="&#xfb;" horiz-adv-x="1202" d="M877 1022h147v-592q0 -213 -111.5 -329.5t-316.5 -116.5t-316.5 116.5t-111.5 329.5v592h147v-600q0 -156 68 -228.5t213 -72.5q143 0 212 72.5t69 228.5v600zM637 1401l166 -246h-115l-92 143l-92 -143h-115l164 246h84z" />
+<glyph unicode="&#xfc;" horiz-adv-x="1202" d="M877 1022h147v-592q0 -213 -111.5 -329.5t-316.5 -116.5t-316.5 116.5t-111.5 329.5v592h147v-600q0 -156 68 -228.5t213 -72.5q143 0 212 72.5t69 228.5v600zM362 1155v162h164v-162h-164zM666 1155v162h163v-162h-163z" />
+<glyph unicode="&#xfd;" horiz-adv-x="1028" d="M807 1022h158l-418 -1122q-109 -295 -320 -295q-51 0 -98 18v135q41 -18 88 -18q63 0 118.5 68.5t80.5 138.5l24 69l-377 1006h158l293 -809zM565 1391h152l-170 -236h-98z" />
+<glyph unicode="&#xfe;" horiz-adv-x="1136" d="M569 1026q70 0 131.5 -12.5t125 -47t109.5 -90t74.5 -149.5t28.5 -217q0 -152 -42 -258.5t-114.5 -159.5t-148.5 -74.5t-164 -21.5q-129 0 -252 41v-414h-147v1776h147v-414q123 41 252 41zM569 133q170 0 246 89t76 288t-76 289t-246 90q-135 0 -252 -51v-654 q117 -51 252 -51z" />
+<glyph unicode="&#xff;" horiz-adv-x="1028" d="M807 1022h158l-418 -1122q-109 -295 -320 -295q-51 0 -98 18v135q41 -18 88 -18q63 0 118.5 68.5t80.5 138.5l24 69l-377 1006h158l293 -809zM279 1155v162h161v-162h-161zM582 1155v162h161v-162h-161z" />
+<glyph unicode="&#x152;" horiz-adv-x="2029" d="M1894 1227h-716v-471h628v-144h-628v-473h716v-139h-864v27q-117 -43 -274 -43q-633 0 -633 700t633 700q160 0 274 -45v27h864v-139zM756 123q170 0 274 59v1004q-109 59 -274 59q-252 0 -369 -135t-117 -426t117 -426t369 -135z" />
+<glyph unicode="&#x153;" horiz-adv-x="1921" d="M1356 1040q94 0 170 -29.5t122 -69.5t78.5 -104.5t47 -109.5t22.5 -108.5t8 -78.5v-44l-2 -72h-745q14 -154 94 -223.5t238 -69.5q219 0 350 76v-152q-150 -72 -365 -71q-276 0 -393 190q-119 -190 -399 -190q-92 0 -169 22.5t-151 76.5t-117 163.5t-43 265.5t43 265.5 t117 163.5t150.5 76.5t169.5 22.5q279 0 397 -186q113 186 377 186zM582 119q174 0 253.5 93t79.5 300t-79.5 300t-253.5 93t-253 -93t-79 -300t79 -300t253 -93zM1055 555h600q0 33 -8.5 77t-35 111.5t-93 112.5t-162.5 45q-152 0 -221.5 -79t-79.5 -267z" />
+<glyph unicode="&#x178;" horiz-adv-x="1224" d="M375 1483v164h164v-164h-164zM678 1483v164h164v-164h-164zM1012 1366h178l-508 -739v-627h-147v627l-510 739h178l405 -596z" />
+<glyph unicode="&#x2c6;" horiz-adv-x="823" d="M457 1401l164 -246h-115l-92 143l-92 -143h-115l166 246h84z" />
+<glyph unicode="&#x2dc;" horiz-adv-x="1038" d="M791 1198q-53 -66 -115 -73t-118 23l-113 59q-56 30 -116.5 23t-113.5 -73v117q53 66 113.5 72t116.5 -24l113 -59q56 -30 117.5 -24t115.5 72v-113z" />
+<glyph unicode="&#x2000;" horiz-adv-x="878" />
+<glyph unicode="&#x2001;" horiz-adv-x="1759" />
+<glyph unicode="&#x2002;" horiz-adv-x="878" />
+<glyph unicode="&#x2003;" horiz-adv-x="1759" />
+<glyph unicode="&#x2004;" horiz-adv-x="585" />
+<glyph unicode="&#x2005;" horiz-adv-x="438" />
+<glyph unicode="&#x2006;" horiz-adv-x="292" />
+<glyph unicode="&#x2007;" horiz-adv-x="292" />
+<glyph unicode="&#x2008;" horiz-adv-x="219" />
+<glyph unicode="&#x2009;" horiz-adv-x="350" />
+<glyph unicode="&#x200a;" horiz-adv-x="96" />
+<glyph unicode="&#x2010;" horiz-adv-x="950" d="M786 682v-143h-624v143h624z" />
+<glyph unicode="&#x2011;" horiz-adv-x="950" d="M786 682v-143h-624v143h624z" />
+<glyph unicode="&#x2012;" horiz-adv-x="950" d="M786 682v-143h-624v143h624z" />
+<glyph unicode="&#x2013;" horiz-adv-x="1146" d="M1001 655v-127h-860v127h860z" />
+<glyph unicode="&#x2014;" horiz-adv-x="1824" d="M1663 664v-136h-1501v136h1501z" />
+<glyph unicode="&#x2018;" horiz-adv-x="522" d="M264 1384l152 -401h-148l-172 401h168z" />
+<glyph unicode="&#x2019;" horiz-adv-x="522" d="M248 1384h168l-172 -401h-148z" />
+<glyph unicode="&#x201a;" horiz-adv-x="614" d="M299 172h166l-170 -401h-148z" />
+<glyph unicode="&#x201c;" horiz-adv-x="800" d="M543 1384l151 -401h-147l-172 401h168zM264 1384l152 -401h-148l-172 401h168z" />
+<glyph unicode="&#x201d;" horiz-adv-x="792" d="M248 1384h168l-172 -401h-148zM526 1384h168l-172 -401h-147z" />
+<glyph unicode="&#x201e;" horiz-adv-x="892" d="M299 172h166l-170 -401h-148zM578 172h167l-172 -401h-147z" />
+<glyph unicode="&#x2022;" horiz-adv-x="849" d="M657 684q0 -98 -69.5 -168t-165.5 -70q-98 0 -168 70t-70 168t70 167t168 69q96 0 165.5 -69t69.5 -167z" />
+<glyph unicode="&#x2026;" horiz-adv-x="1576" d="M219 0v164h164v-164h-164zM1200 0v164h162v-164h-162zM711 0v164h161v-164h-161z" />
+<glyph unicode="&#x202f;" horiz-adv-x="350" />
+<glyph unicode="&#x2039;" horiz-adv-x="710" d="M608 911l-364 -389l364 -391h-198l-347 391l347 389h198z" />
+<glyph unicode="&#x203a;" horiz-adv-x="776" d="M137 911h197l348 -389l-348 -391h-197l363 391z" />
+<glyph unicode="&#x205f;" horiz-adv-x="438" />
+<glyph unicode="&#x20ac;" horiz-adv-x="1390" d="M883 1245q-207 0 -325 -84t-157 -260h658v-123h-674q-4 -61 -4 -94q0 -37 4 -94h674v-123h-658q39 -176 157 -260t325 -84q209 0 399 80v-142q-203 -78 -416 -77q-524 0 -614 483h-150v123h136q-4 61 -4.5 94t4.5 94h-136v123h150q90 483 614 483q215 0 416 -79v-142 q-194 82 -399 82z" />
+<glyph unicode="&#x2122;" horiz-adv-x="1550" d="M100 1366h557v-72h-241v-610h-74v610h-242v72zM1313 1366h80v-682h-74v561l-242 -348l-241 348v-561h-74v682h80l235 -346z" />
+<glyph unicode="&#xe000;" horiz-adv-x="1020" d="M0 1020h1020v-1020h-1020v1020z" />
+<glyph unicode="&#xfb01;" horiz-adv-x="1202" d="M1040 0v1022h-147v-1022h147zM1049 1366v-162h-164v162h164zM616 1317q-39 0 -59 -2t-54 -14.5t-52.5 -35t-33 -70.5t-14.5 -116v-55h287v-137h-287v-887h-143v887h-176v137h176v53q0 106 28.5 182t63.5 112t89.5 56.5t82 22.5t66.5 2q53 0 100 -10v-133q-41 8 -74 8z " />
+<glyph unicode="&#xfb02;" horiz-adv-x="1220" d="M1040 0v1411h-147v-1411h147zM616 1317q-39 0 -59 -2t-54 -14.5t-52.5 -35t-33 -70.5t-14.5 -116v-55h287v-137h-287v-887h-143v887h-176v137h176v53q0 106 28.5 182t63.5 112t89.5 56.5t82 22.5t66.5 2q53 0 100 -10v-133q-41 8 -74 8z" />
+<glyph unicode="&#xfb03;" horiz-adv-x="1892" d="M1700 0v1022h-147v-1022h147zM1708 1366v-162h-163v162h163zM1288 1317q-49 0 -74.5 -4t-61.5 -24.5t-53 -73t-17 -136.5v-57h280v-135h-280v-887h-148v887h-176v135h176v55q0 106 27.5 182t62.5 112t89.5 56.5t83 22.5t67.5 2q55 0 98 -12v-131q-41 8 -74 8zM612 1317 q-49 0 -74.5 -4t-61.5 -24.5t-53 -73t-17 -136.5v-57h280v-135h-280v-887h-148v887h-176v135h176v55q0 106 27.5 182t62.5 112t89.5 56.5t83 22.5t67.5 2q55 0 98 -12v-131q-41 8 -74 8z" />
+<glyph unicode="&#xfb04;" horiz-adv-x="1904" d="M1706 0h-147v1411h147v-1411zM1288 1317q-49 0 -74.5 -4t-61.5 -24.5t-53 -73t-17 -136.5v-57h280v-135h-280v-887h-148v887h-176v135h176v55q0 106 27.5 182t62.5 112t89.5 56.5t83 22.5t67.5 2q55 0 98 -12v-131q-41 8 -74 8zM612 1317q-49 0 -74.5 -4t-61.5 -24.5 t-53 -73t-17 -136.5v-57h280v-135h-280v-887h-148v887h-176v135h176v55q0 106 27.5 182t62.5 112t89.5 56.5t83 22.5t67.5 2q55 0 98 -12v-131q-41 8 -74 8z" />
+</font>
+</defs></svg> 
\ No newline at end of file
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/fonts/opensans.css
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/fonts/opensans.css	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/fonts/opensans.css	(revision 47450)
@@ -0,0 +1,13 @@
+/* Copyright (C) YOOtheme GmbH, YOOtheme Proprietary Use License (http://www.yootheme.com/license) */
+
+@font-face {
+	font-family: 'OpenSansLight';
+	src: url('OpenSans-Light-webfont.eot');
+	src: url('OpenSans-Light-webfont.eot?#iefix') format('embedded-opentype'),
+		url('OpenSans-Light-webfont.woff') format('woff'),
+		url('OpenSans-Light-webfont.ttf') format('truetype'),
+		url('OpenSans-Light-webfont.svg#OpenSansLight') format('svg');
+	font-weight: normal;
+	font-style: normal;
+}
+
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/favicon.ico
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/favicon.ico
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/favicon.ico	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/favicon.ico	(revision 47450)

Property changes on: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/favicon.ico
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/fonts/DroidSans-webfont.eot
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/fonts/DroidSans-webfont.eot
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/fonts/DroidSans-webfont.eot	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/fonts/DroidSans-webfont.eot	(revision 47450)

Property changes on: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/fonts/DroidSans-webfont.eot
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/resetPassword.jsp
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/resetPassword.jsp	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/resetPassword.jsp	(revision 47450)
@@ -0,0 +1,46 @@
+<%@ page contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<%@ taglib prefix="s" uri="/struts-tags"%>
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title><s:text name="forgotPassword.title"/></title>
+<link href="jsps/favicon.ico" rel="shortcut icon" type="image/x-icon" />
+<link href="jsps/style.css" rel="stylesheet" type="text/css" media="screen" />
+</head>
+<body>
+<div id="wrapper">
+	<jsp:include page="menu.jsp"/>
+	<div id="page">
+		<div id="page-bgtop">
+			<div id="middle">
+                <div class="middle-b">
+                    <div class="background">
+                        <div class="main">
+                        <div id="main_container" class="clearfix">
+                                <div id="mainmiddle" class="floatbox">
+                                <h2 class="title"><s:text name="forgotPassword.title"/></h2>
+                                <%--<p class="meta"><a href='<s:url value="/jsps/help.jsp#forgotPassword"/>' target="_blank"><s:text name="help"/></a></p>--%>
+                                <div class="entry">
+                                    <s:form action="resetPassword">
+                                    	<s:text name="resetPassword.securityCode.message" />
+                                        <s:textfield name="securityCode" key="resetPassword.securityCode"/>
+                                        <s:password name="password" key="registration.password"/>
+                                        <s:password name="repassword" key="registration.repassword"/>
+                                        <s:submit/>
+                                    </s:form>
+                                </div>
+								</div>
+                            </div>
+                        </div>
+                    </div>
+                </div>
+            </div>
+		</div>
+		  <div id="footer"> 
+           <jsp:include page="footer.jsp"/>
+        </div>
+	</div>
+</div>
+</body>
+</html>
\ No newline at end of file
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/registration.jsp
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/registration.jsp	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/registration.jsp	(revision 47450)
@@ -0,0 +1,44 @@
+<%@ page contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<%@ taglib prefix="s" uri="/struts-tags"%>
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title><s:text name="registration.title"/></title>
+<link href="jsps/favicon.ico" rel="shortcut icon" type="image/x-icon" />
+<link href="jsps/style.css" rel="stylesheet" type="text/css" media="screen" />
+</head>
+<body>
+<div id="wrapper">
+	<jsp:include page="menu.jsp"/>
+	<div id="page">
+	<div id="page-bgtop">
+		<div class="content">
+			<div class="main">
+				<h2 class="title"><s:text name="registration.title"/></h2>
+				<s:text name="registration.description"/>
+				<%--<p class="meta"><a href='<s:url value="/jsps/help.jsp#registration"/>' target="_blank"><s:text name="help"/></a></p>--%>
+				<div class="entry">
+					<%-- <s:if test="%{@gr.uoa.di.validatorweb.configs.Constants@isModeLdap()}">
+						<s:text name="registration.ldap.message"/>
+					</s:if> --%>
+					<s:form action="Register">
+						<s:if test="%{repoMode.trim().toLowerCase().equals(\"dnet\")}">
+							<s:textfield name="username" key="registration.username"/>
+							<s:textfield name="firstName" key="registration.firstName"/>
+							<s:textfield name="lastName" key="registration.lastName"/>
+						</s:if>
+						<s:textfield name="email" key="registration.email"/>
+						<s:password name="password" key="registration.password"/>
+						<s:password name="repassword" key="registration.repassword"/>
+						<s:submit value="Register" cssClass="button-default"/>
+					</s:form>
+				</div>
+			</div>
+		</div>
+		
+	</div>
+	</div>
+</div>
+</body>
+</html>
\ No newline at end of file
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/manuals/user-manual.pdf
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/manuals/user-manual.pdf
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/manuals/user-manual.pdf	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/manuals/user-manual.pdf	(revision 47450)

Property changes on: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/manuals/user-manual.pdf
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/ddmenu.css
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/ddmenu.css	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/jsps/ddmenu.css	(revision 47450)
@@ -0,0 +1,159 @@
+
+/*  Generated by www.menucool.com/drop-down-menu  */
+
+/* main menu
+----------------------------*/
+#ddmenu
+{
+    display:block;
+    font-family: "YanoneKaffeesatzLight";
+    text-align:center;
+    letter-spacing:normal;
+	float: right;
+        position: absolute;
+        bottom: 0;
+        right: 0;
+}
+
+#ddmenu ul
+{ 
+    width:100%;
+    margin:0; /*If above width is not 100% and you want this menu to align in the center of its container, set it as { margin: 0 auto; }*/
+    padding:0;
+    display:inline-block;
+    list-style:none;
+    position:relative;
+    font-size:0;
+    *z-index:999;
+}
+
+#ddmenu li
+{
+    margin:0;
+    padding:0;
+    display:inline-block;
+    position:relative;
+ float: left;
+        font-size: 22px;
+        text-transform: uppercase;
+        line-height:50px
+}
+
+#ddmenu a
+{
+    padding:0 12px;
+    font-weight:normal;
+    text-decoration:none;
+    display:inline-block;
+    outline:0;
+    position:relative;
+    white-space:nowrap;
+	color:#3440B5;
+}
+
+#ddmenu li.over
+{
+    z-index:9999999998;
+}
+
+/* links without sub-menu */
+#ddmenu li.over a
+{
+        color: #2D72D6;
+        background: #D0D0D0;
+}
+
+/* links with sub-menu */
+#ddmenu a.arrow
+{
+}
+#ddmenu li.over a.arrow
+{
+background: #D0D0D0 url(images/menu_dropdown_level1_parent_blue.png) 50% 100% no-repeat;
+    z-index:9999999999;
+    /*text-decoration:underline;*/
+}
+
+#ddmenu div 
+{
+    padding:0;
+    margin:0;
+}              
+        
+/* sub-menu layout
+----------------------------*/
+     
+
+#ddmenu div.drop
+{
+    position:absolute;
+    text-align:left;
+    background:#3440B5;
+    color: #bcbcbc;
+	font-size:18px;
+    padding:20px;
+    line-height:30px;
+}
+  
+#ddmenu div
+{
+    display:none;
+}
+/* sub-menu offset
+----------------------------*/
+
+#ddmenu div.drop
+{
+    left:0px;/*Use this property to change offset of the sub-menu*/
+}
+#ddmenu div.dropToLeft
+{
+    left:auto; right:0px;
+}
+#ddmenu div.dropToLeft2
+{
+    left:auto; right:-120px;
+}
+  
+/* links in sub menu
+----------------------------*/
+
+#ddmenu div.drop a
+{
+    background:#3440B5;
+    color:#bcbcbc;
+    text-decoration:none;    
+    display:block;
+    text-align:left;    
+    position:static;
+    padding:0 0;
+}
+
+#ddmenu div.drop a:hover
+{
+    color:#00B5F0;
+}
+
+/* blocks within the sub-menu
+----------------------------*/
+
+#ddmenu div.drop div
+{
+    background:none;    
+}  
+
+#ddmenu div.column
+{
+    width:auto;
+    float:left; /*align each column in one row*/
+    padding:0 10px; /*padding of each column*/
+}
+
+#ddmenu div.column div
+{
+   padding:0px 10px; /*sub-div within div.column. 10px for indent.*/
+}
+
+/* useful when http://www.menucool.com/ddmenu/one-menu-for-all-pages
+----------------------------*/
+#ddmenuLink {display:none;}
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/META-INF/MANIFEST.MF
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/META-INF/MANIFEST.MF	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2/src/main/webapp/META-INF/MANIFEST.MF	(revision 47450)
@@ -0,0 +1,3 @@
+Manifest-Version: 1.0
+Class-Path: 
+
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2	(revision 47450)

Property changes on: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.2
___________________________________________________________________
Added: svn:ignore
## -0,0 +1,6 ##
+target
+.classpath
+.settings
+.project
+*.sh
+*.iml
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/chooseRuleSet.jsp
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/chooseRuleSet.jsp	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/chooseRuleSet.jsp	(revision 47450)
@@ -0,0 +1,49 @@
+<%@ page contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<%@ taglib prefix="s" uri="/struts-tags"%>
+<html>
+<head>
+<link href="jsps/favicon.ico" rel="shortcut icon" type="image/x-icon" />
+<link href="jsps/style.css" rel="stylesheet" type="text/css" media="screen" />
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title><s:text name="chooseRuleSet.title"/></title>
+</head>
+<body class="left">
+<div id="wrapper">
+	<jsp:include page="menu.jsp"/>
+	<div id="page">
+	<div id="page-bgtop">
+	<div id="middle">
+            <div class="middle-b">
+                <div class="background">
+			 <div id="left">
+                              <div id="left_container" >
+                                   <h2 class="helpHdr">Info</h2>
+                                   <s:text name="help.admin"/>
+                              </div>
+                         </div>
+                        <div id="main">
+                        <div id="main_container" class="clearfix">
+			<div id="content">
+				<h2 class="title"><s:text name="chooseRuleSet.title"/></h2>
+                                <div class="entry">
+                                        <s:form action="getRulesForSet">
+                                                <s:select name="setId" list="sets" listValue="name" listKey="id" key="chooseRuleSet.label"/>
+                                                <s:submit cssClass="button-default"/>
+                                        </s:form>
+                                </div>
+			</div>
+			</div>
+			</div>
+		</div>
+	</div>
+	</div>
+	</div>
+
+    <div id="footer">
+                <jsp:include page="footer.jsp"/>
+        </div>
+</div>
+</div>
+</body>
+</html>
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/editRule.jsp
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/editRule.jsp	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/editRule.jsp	(revision 47450)
@@ -0,0 +1,121 @@
+<%@ page contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<%@ taglib prefix="s" uri="/struts-tags"%>
+<html>
+<head>
+<link href="jsps/favicon.ico" rel="shortcut icon" type="image/x-icon" />
+<link href="jsps/style.css" rel="stylesheet" type="text/css" media="screen" />
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<s:if test="%{#session.isAdmin != null && #session.isAdmin.equals(\"true\")}">
+        <s:set name="isAdmin" value="true"/>
+</s:if>
+<s:else>
+        <s:set name="isAdmin" value="false"/>
+</s:else>
+<title>
+        <s:if test="%{#isAdmin}">
+                <s:text name="editRule.title"/>
+        </s:if>
+        <s:else>
+                <s:text name="editRule.title2"/>
+        </s:else>
+</title>
+
+</head>
+<body class="left">
+<div id="wrapper">
+	<jsp:include page="menu.jsp"/>
+	<div id="page">
+	<div id="page-bgtop">
+	<div id="middle">
+            <div class="middle-b">
+                <div class="background">
+			 <div id="left">
+                              <div id="left_container" >
+                                   <h2 class="helpHdr">Info</h2>
+                                   <s:text name="help.admin"/>
+                              </div>
+                         </div>
+                        <div id="main">
+                        <div id="main_container" class="clearfix">
+			<div id="content">
+				<s:if test="%{#isAdmin}">
+                                        <h2 class="title"><s:text name="editRule.title"/></h2>
+                                </s:if>
+                                <s:else>
+                                        <h2 class="title"><s:text name="editRule.title2"/></h2>
+                                </s:else>
+                                <div class="entry">
+                                        <s:form action="editRule">
+                                        		<s:hidden name="funct"/>
+                                                <s:hidden name="rule.id" value="%{rule.id}"/>
+                                                <s:hidden name="rule.for_cris"/>
+                                                <s:iterator value="ruleValues" var="ruleValue">
+                                                        <s:set name="label" value="%{#ruleValue.fieldName}"/>
+                                                        <s:set name="dscr" value="%{#ruleValue.fieldName+\".description\"}"/>
+                                                        <s:set name="tltp" value="%{#ruleValue.fieldName+\".name\"}"/>
+                                                        <s:if test="%{#label.equals(\"xmlvocabulary_rule.terms\") || #label.equals(\"rules.description\")}">
+                                                                <s:textarea name="inputs" value="%{#ruleValue.fieldValue}" title="%{getText(#dscr)}" label="%{getText(#tltp)}" cols="50" rows="10" disabled='%{!#isAdmin}'/>
+                                                        </s:if>
+                                                        <s:elseif test="%{#label.equals(\"xmlcrisclassvocabulary_rule.terms\") || #label.equals(\"xmlcrisreferentialintegrity_rule.terms\")}">
+                                                                <s:textarea name="inputs" value="%{#ruleValue.fieldValue}" title="%{getText(#dscr)}" label="%{getText(#tltp)}" cols="50" rows="10" disabled='%{!#isAdmin}'/>
+                                                        </s:elseif>
+                                                        <s:elseif test="%{#label.equals(\"xmlvocabulary_rule.terms_type\")}">
+                                                                <s:select label="%{getText(#tltp)}" name="inputs" value="%{#ruleValue.fieldValue}" list="#{'whitelist':'whitelist', 'blacklist':'blacklist'}" title="%{getText(#dscr)}"/>
+                                                        </s:elseif>
+                                                        <s:elseif test="%{#label.equals(\"rules.mandatory\")}">
+                                                                <s:select label="%{getText(#tltp)}" name="inputs" value="%{rule.mandatory}" list="#{'true':'true', 'false':'false'}" title="%{getText(#dscr)}"/>
+                                                        </s:elseif>
+                                                        <s:elseif test="%{#label.equals(\"rules.cris_entity\")}">
+                                                                <s:select label="%{getText(#tltp)}" name="inputs" list="entityTypes" value="%{rule.entity_type}" title="%{getText(#dscr)}"/>
+                                                        </s:elseif>
+														<s:elseif test="%{#label.matches('.*success')}">
+															<s:select label="%{getText(#tltp)}" name="inputs" value="%{#ruleValue.fieldValue}" list="#{'>0':'>0', 'all':'all', '0':'0', '1':'1'}" title="%{getText(#dscr)}"/>
+														</s:elseif>
+                                                        <s:elseif test="%{#label.equals(\"chain_rule.type\")}">
+                                                                <s:select label="%{getText(#tltp)}" name="inputs" value="%{#ruleValue.fieldValue}" list="#{'or':'or', 'and':'and', 'horn':'horn'}" title="%{getText(#dscr)}"/>
+                                                        </s:elseif>
+                                                        <s:elseif test="%{#label.equals(\"chain_rule.rule_1\")}">
+                                                                <s:select name="inputs" list="rules" listValue="name" listKey="id"  value="%{#ruleValue.fieldValue}" label="%{getText(#tltp)}" title="%{getText(#dscr)}"/>
+                                                        </s:elseif>
+                                                        <s:elseif test="%{#label.equals(\"chain_rule.rule_2\")}">
+                                                                <s:select name="inputs" list="rules" listValue="name" listKey="id"  value="%{#ruleValue.fieldValue}" label="%{getText(#tltp)}" title="%{getText(#dscr)}"/>
+                                                        </s:elseif>
+                                                        <s:elseif test="%{#label.equals(\"rules.provider_information\")}">
+<%-- 															<s:if test="%{rule.job_type.equals(\"OAI Usage\")}"> --%>
+															<s:textfield name="inputs" value="%{#ruleValue.fieldValue}" title="%{getText(#dscr)}" label="%{getText(#tltp)}" disabled='%{!#isAdmin}'/>
+<%--                                                         	</s:if> --%>
+														</s:elseif>
+                                                        <s:else>
+                                                                <s:textfield name="inputs" value="%{#ruleValue.fieldValue}" title="%{getText(#dscr)}" label="%{getText(#tltp)}" disabled='%{!#isAdmin}'/>
+                                                        </s:else>
+                                                </s:iterator>
+<%--                                                 <s:textfield name="rule.entity_type" label="%{getText(\"jobs.entity_type.name\")}" title="%{getText(\"jobs.entity_type.description\")}" /> --%>
+                                                <s:textfield name="rule.job_type" label="%{getText(\"jobs.job_type.name\")}" title="%{getText(\"jobs.job_type.description\")}" readonly='true'/>
+                                                <s:textfield name="rule.type" label="%{getText(\"rules.type.name\")}" title="%{getText(\"rules.type.description\")}" readonly='true'/>
+                                                <s:if test="%{#isAdmin}">
+                                                 	<s:if test="%{funct.equals(\"edit\")}">
+                                                        <s:submit value="Update" cssClass="button-default"/>
+                                                    </s:if>
+                                                    <s:elseif test="%{funct.equals(\"clone\")}">
+                                                    	<s:submit value="Clone" cssClass="button-default"/>
+                                                    </s:elseif>
+                                                </s:if>
+                                        </s:form>
+                                </div>
+
+			</div>
+			</div>
+			</div>
+		</div>
+	</div>
+	</div>
+	</div>
+
+    <div id="footer">
+                <jsp:include page="footer.jsp"/>
+        </div>
+</div>
+</div>
+</body>
+</html>
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/chooseRuleForClone.jsp
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/chooseRuleForClone.jsp	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/chooseRuleForClone.jsp	(revision 47450)
@@ -0,0 +1,50 @@
+<%@ page contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<%@ taglib prefix="s" uri="/struts-tags"%>
+<html>
+<head>
+<link href="jsps/favicon.ico" rel="shortcut icon" type="image/x-icon" />
+<link href="jsps/style.css" rel="stylesheet" type="text/css" media="screen" />
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title><s:text name="chooseRuleForEdit.title"/></title>
+</head>
+<body class="left">
+<div id="wrapper">
+	<jsp:include page="menu.jsp"/>
+	<div id="page">
+	<div id="page-bgtop">
+	<div id="middle">
+            <div class="middle-b">
+                <div class="background">
+			 <div id="left">
+                              <div id="left_container" >
+                                   <h2 class="helpHdr">Info</h2>
+                                   <s:text name="help.admin"/>
+                              </div>
+                         </div>
+                        <div id="main">
+                        <div id="main_container" class="clearfix">
+			<div id="content">
+				<h2 class="title"><s:text name="chooseRuleForEdit.title"/></h2>
+                               <div class="entry">
+					<s:form action="prepareEditRule">
+                           <s:select name="ruleId" list="rules" listValue="name" listKey="id"  key="chooseRuleForClone.label"/>
+                           <s:hidden name="funct" value="clone"/>
+                           <s:submit cssClass="button-default"/>
+                    </s:form>
+                                </div>
+			</div>
+			</div>
+			</div>
+		</div>
+	</div>
+	</div>
+	</div>
+
+    <div id="footer">
+                <jsp:include page="footer.jsp"/>
+        </div>
+        </div>
+</div>
+</body>
+</html>
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/js/mootools-1.2.5.1-more.js
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/js/mootools-1.2.5.1-more.js	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/js/mootools-1.2.5.1-more.js	(revision 47450)
@@ -0,0 +1,2192 @@
+//MooTools More, <http://mootools.net/more>. Copyright (c) 2006-2009 Aaron Newton <http://clientcide.com/>, Valerio Proietti <http://mad4milk.net> & the MooTools team <http://mootools.net/developers>, MIT Style License.
+
+/*
+---
+
+script: More.js
+
+name: More
+
+description: MooTools More
+
+license: MIT-style license
+
+requires:
+  - Core/MooTools
+
+provides: [MooTools.More]
+
+...
+*/
+
+MooTools.More = {
+	'version': '1.2.5.1',
+	'build': '254884f2b83651bf95260eed5c6cceb838e22d8e'
+};
+
+
+/*
+---
+
+script: MooTools.Lang.js
+
+name: MooTools.Lang
+
+description: Provides methods for localization.
+
+license: MIT-style license
+
+authors:
+  - Aaron Newton
+
+requires:
+  - Core/Events
+  - /MooTools.More
+
+provides: [Lang]
+
+...
+*/
+
+(function(){
+
+	var data = {
+		language: 'en-US',
+		languages: {
+			'en-US': {}
+		},
+		cascades: ['en-US']
+	};
+	
+	var cascaded;
+
+	MooTools.lang = new Events();
+
+	$extend(MooTools.lang, {
+
+		setLanguage: function(lang){
+			if (!data.languages[lang]) return this;
+			data.language = lang;
+			this.load();
+			this.fireEvent('langChange', lang);
+			return this;
+		},
+
+		load: function() {
+			var langs = this.cascade(this.getCurrentLanguage());
+			cascaded = {};
+			$each(langs, function(set, setName){
+				cascaded[setName] = this.lambda(set);
+			}, this);
+		},
+
+		getCurrentLanguage: function(){
+			return data.language;
+		},
+
+		addLanguage: function(lang){
+			data.languages[lang] = data.languages[lang] || {};
+			return this;
+		},
+
+		cascade: function(lang){
+			var cascades = (data.languages[lang] || {}).cascades || [];
+			cascades.combine(data.cascades);
+			cascades.erase(lang).push(lang);
+			var langs = cascades.map(function(lng){
+				return data.languages[lng];
+			}, this);
+			return $merge.apply(this, langs);
+		},
+
+		lambda: function(set) {
+			(set || {}).get = function(key, args){
+				return $lambda(set[key]).apply(this, $splat(args));
+			};
+			return set;
+		},
+
+		get: function(set, key, args){
+			if (cascaded && cascaded[set]) return (key ? cascaded[set].get(key, args) : cascaded[set]);
+		},
+
+		set: function(lang, set, members){
+			this.addLanguage(lang);
+			langData = data.languages[lang];
+			if (!langData[set]) langData[set] = {};
+			$extend(langData[set], members);
+			if (lang == this.getCurrentLanguage()){
+				this.load();
+				this.fireEvent('langChange', lang);
+			}
+			return this;
+		},
+
+		list: function(){
+			return Hash.getKeys(data.languages);
+		}
+
+	});
+
+})();
+
+
+/*
+---
+
+script: Log.js
+
+name: Log
+
+description: Provides basic logging functionality for plugins to implement.
+
+license: MIT-style license
+
+authors:
+  - Guillermo Rauch
+  - Thomas Aylott
+  - Scott Kyle
+
+requires:
+  - Core/Class
+  - /MooTools.More
+
+provides: [Log]
+
+...
+*/
+
+(function(){
+
+var global = this;
+
+var log = function(){
+	if (global.console && console.log){
+		try {
+			console.log.apply(console, arguments);
+		} catch(e) {
+			console.log(Array.slice(arguments));
+		}
+	} else {
+		Log.logged.push(arguments);
+	}
+	return this;
+};
+
+var disabled = function(){
+	this.logged.push(arguments);
+	return this;
+};
+
+this.Log = new Class({
+	
+	logged: [],
+	
+	log: disabled,
+	
+	resetLog: function(){
+		this.logged.empty();
+		return this;
+	},
+
+	enableLog: function(){
+		this.log = log;
+		this.logged.each(function(args){
+			this.log.apply(this, args);
+		}, this);
+		return this.resetLog();
+	},
+
+	disableLog: function(){
+		this.log = disabled;
+		return this;
+	}
+	
+});
+
+Log.extend(new Log).enableLog();
+
+// legacy
+Log.logger = function(){
+	return this.log.apply(this, arguments);
+};
+
+})();
+
+
+/*
+---
+
+script: Class.Refactor.js
+
+name: Class.Refactor
+
+description: Extends a class onto itself with new property, preserving any items attached to the class's namespace.
+
+license: MIT-style license
+
+authors:
+  - Aaron Newton
+
+requires:
+  - Core/Class
+  - /MooTools.More
+
+# Some modules declare themselves dependent on Class.Refactor
+provides: [Class.refactor, Class.Refactor]
+
+...
+*/
+
+Class.refactor = function(original, refactors){
+
+	$each(refactors, function(item, name){
+		var origin = original.prototype[name];
+		if (origin && (origin = origin._origin ? origin._origin: origin) && typeof item == 'function') original.implement(name, function(){
+			var old = this.previous;
+			this.previous = origin;
+			var value = item.apply(this, arguments);
+			this.previous = old;
+			return value;
+		}); else original.implement(name, item);
+	});
+
+	return original;
+
+};
+
+
+/*
+---
+
+script: Class.Binds.js
+
+name: Class.Binds
+
+description: Automagically binds specified methods in a class to the instance of the class.
+
+license: MIT-style license
+
+authors:
+  - Aaron Newton
+
+requires:
+  - Core/Class
+  - /MooTools.More
+
+provides: [Class.Binds]
+
+...
+*/
+
+Class.Mutators.Binds = function(binds){
+    return binds;
+};
+
+Class.Mutators.initialize = function(initialize){
+	return function(){
+		$splat(this.Binds).each(function(name){
+			var original = this[name];
+			if (original) this[name] = original.bind(this);
+		}, this);
+		return initialize.apply(this, arguments);
+	};
+};
+
+
+/*
+---
+
+script: Class.Occlude.js
+
+name: Class.Occlude
+
+description: Prevents a class from being applied to a DOM element twice.
+
+license: MIT-style license.
+
+authors:
+  - Aaron Newton
+
+requires: 
+  - Core/Class
+  - Core/Element
+  - /MooTools.More
+
+provides: [Class.Occlude]
+
+...
+*/
+
+Class.Occlude = new Class({
+
+	occlude: function(property, element){
+		element = document.id(element || this.element);
+		var instance = element.retrieve(property || this.property);
+		if (instance && !$defined(this.occluded))
+			return this.occluded = instance;
+
+		this.occluded = false;
+		element.store(property || this.property, this);
+		return this.occluded;
+	}
+
+});
+
+
+/*
+---
+
+script: Chain.Wait.js
+
+name: Chain.Wait
+
+description: value, Adds a method to inject pauses between chained events.
+
+license: MIT-style license.
+
+authors:
+  - Aaron Newton
+
+requires: 
+  - Core/Chain
+  - Core/Element
+  - Core/Fx
+  - /MooTools.More
+
+provides: [Chain.Wait]
+
+...
+*/
+
+(function(){
+
+	var wait = {
+		wait: function(duration){
+			return this.chain(function(){
+				this.callChain.delay($pick(duration, 500), this);
+			}.bind(this));
+		}
+	};
+
+	Chain.implement(wait);
+
+	if (window.Fx){
+		Fx.implement(wait);
+		['Css', 'Tween', 'Elements'].each(function(cls){
+			if (Fx[cls]) Fx[cls].implement(wait);
+		});
+	}
+
+	Element.implement({
+		chains: function(effects){
+			$splat($pick(effects, ['tween', 'morph', 'reveal'])).each(function(effect){
+				effect = this.get(effect);
+				if (!effect) return;
+				effect.setOptions({
+					link:'chain'
+				});
+			}, this);
+			return this;
+		},
+		pauseFx: function(duration, effect){
+			this.chains(effect).get($pick(effect, 'tween')).wait(duration);
+			return this;
+		}
+	});
+
+})();
+
+
+/*
+---
+
+script: Element.Measure.js
+
+name: Element.Measure
+
+description: Extends the Element native object to include methods useful in measuring dimensions.
+
+credits: "Element.measure / .expose methods by Daniel Steigerwald License: MIT-style license. Copyright: Copyright (c) 2008 Daniel Steigerwald, daniel.steigerwald.cz"
+
+license: MIT-style license
+
+authors:
+  - Aaron Newton
+
+requires:
+  - Core/Element.Style
+  - Core/Element.Dimensions
+  - /MooTools.More
+
+provides: [Element.Measure]
+
+...
+*/
+
+Element.implement({
+
+	measure: function(fn){
+		var vis = function(el) {
+			return !!(!el || el.offsetHeight || el.offsetWidth);
+		};
+		if (vis(this)) return fn.apply(this);
+		var parent = this.getParent(),
+			restorers = [],
+			toMeasure = []; 
+		while (!vis(parent) && parent != document.body) {
+			toMeasure.push(parent.expose());
+			parent = parent.getParent();
+		}
+		var restore = this.expose();
+		var result = fn.apply(this);
+		restore();
+		toMeasure.each(function(restore){
+			restore();
+		});
+		return result;
+	},
+
+	expose: function(){
+		if (this.getStyle('display') != 'none') return $empty;
+		var before = this.style.cssText;
+		this.setStyles({
+			display: 'block',
+			position: 'absolute',
+			visibility: 'hidden'
+		});
+		return function(){
+			this.style.cssText = before;
+		}.bind(this);
+	},
+
+	getDimensions: function(options){
+		options = $merge({computeSize: false},options);
+		var dim = {};
+		var getSize = function(el, options){
+			return (options.computeSize)?el.getComputedSize(options):el.getSize();
+		};
+		var parent = this.getParent('body');
+		if (parent && this.getStyle('display') == 'none'){
+			dim = this.measure(function(){
+				return getSize(this, options);
+			});
+		} else if (parent){
+			try { //safari sometimes crashes here, so catch it
+				dim = getSize(this, options);
+			}catch(e){}
+		} else {
+			dim = {x: 0, y: 0};
+		}
+		return $chk(dim.x) ? $extend(dim, {width: dim.x, height: dim.y}) : $extend(dim, {x: dim.width, y: dim.height});
+	},
+
+	getComputedSize: function(options){
+		//legacy support for my stupid spelling error
+		if (options && options.plains) options.planes = options.plains;
+		
+		options = $merge({
+			styles: ['padding','border'],
+			planes: {
+				height: ['top','bottom'],
+				width: ['left','right']
+			},
+			mode: 'both'
+		}, options);
+		
+		var size = {width: 0,height: 0};
+		switch (options.mode){
+			case 'vertical':
+				delete size.width;
+				delete options.planes.width;
+				break;
+			case 'horizontal':
+				delete size.height;
+				delete options.planes.height;
+				break;
+		}
+		var getStyles = [];
+		//this function might be useful in other places; perhaps it should be outside this function?
+		$each(options.planes, function(plane, key){
+			plane.each(function(edge){
+				options.styles.each(function(style){
+					getStyles.push((style == 'border') ? style + '-' + edge + '-' + 'width' : style + '-' + edge);
+				});
+			});
+		});
+		var styles = {};
+		getStyles.each(function(style){ styles[style] = this.getComputedStyle(style); }, this);
+		var subtracted = [];
+		$each(options.planes, function(plane, key){ //keys: width, height, planes: ['left', 'right'], ['top','bottom']
+			var capitalized = key.capitalize();
+			size['total' + capitalized] = size['computed' + capitalized] = 0;
+			plane.each(function(edge){ //top, left, right, bottom
+				size['computed' + edge.capitalize()] = 0;
+				getStyles.each(function(style, i){ //padding, border, etc.
+					//'padding-left'.test('left') size['totalWidth'] = size['width'] + [padding-left]
+					if (style.test(edge)){
+						styles[style] = styles[style].toInt() || 0; //styles['padding-left'] = 5;
+						size['total' + capitalized] = size['total' + capitalized] + styles[style];
+						size['computed' + edge.capitalize()] = size['computed' + edge.capitalize()] + styles[style];
+					}
+					//if width != width (so, padding-left, for instance), then subtract that from the total
+					if (style.test(edge) && key != style &&
+						(style.test('border') || style.test('padding')) && !subtracted.contains(style)){
+						subtracted.push(style);
+						size['computed' + capitalized] = size['computed' + capitalized]-styles[style];
+					}
+				});
+			});
+		});
+
+		['Width', 'Height'].each(function(value){
+			var lower = value.toLowerCase();
+			if(!$chk(size[lower])) return;
+
+			size[lower] = size[lower] + this['offset' + value] + size['computed' + value];
+			size['total' + value] = size[lower] + size['total' + value];
+			delete size['computed' + value];
+		}, this);
+
+		return $extend(styles, size);
+	}
+
+});
+
+/*
+---
+
+script: Element.Position.js
+
+name: Element.Position
+
+description: Extends the Element native object to include methods useful positioning elements relative to others.
+
+license: MIT-style license
+
+authors:
+  - Aaron Newton
+
+requires:
+  - Core/Element.Dimensions
+  - /Element.Measure
+
+provides: [Element.Position]
+
+...
+*/
+
+(function(){
+
+var original = Element.prototype.position;
+
+Element.implement({
+
+	position: function(options){
+		//call original position if the options are x/y values
+		if (options && ($defined(options.x) || $defined(options.y))) return original ? original.apply(this, arguments) : this;
+		$each(options||{}, function(v, k){ if (!$defined(v)) delete options[k]; });
+		options = $merge({
+			// minimum: { x: 0, y: 0 },
+			// maximum: { x: 0, y: 0},
+			relativeTo: document.body,
+			position: {
+				x: 'center', //left, center, right
+				y: 'center' //top, center, bottom
+			},
+			edge: false,
+			offset: {x: 0, y: 0},
+			returnPos: false,
+			relFixedPosition: false,
+			ignoreMargins: false,
+			ignoreScroll: false,
+			allowNegative: false
+		}, options);
+		//compute the offset of the parent positioned element if this element is in one
+		var parentOffset = {x: 0, y: 0}, 
+				parentPositioned = false;
+		/* dollar around getOffsetParent should not be necessary, but as it does not return
+		 * a mootools extended element in IE, an error occurs on the call to expose. See:
+		 * http://mootools.lighthouseapp.com/projects/2706/tickets/333-element-getoffsetparent-inconsistency-between-ie-and-other-browsers */
+		var offsetParent = this.measure(function(){
+			return document.id(this.getOffsetParent());
+		});
+		if (offsetParent && offsetParent != this.getDocument().body){
+			parentOffset = offsetParent.measure(function(){
+				return this.getPosition();
+			});
+			parentPositioned = offsetParent != document.id(options.relativeTo);
+			options.offset.x = options.offset.x - parentOffset.x;
+			options.offset.y = options.offset.y - parentOffset.y;
+		}
+		//upperRight, bottomRight, centerRight, upperLeft, bottomLeft, centerLeft
+		//topRight, topLeft, centerTop, centerBottom, center
+		var fixValue = function(option){
+			if ($type(option) != 'string') return option;
+			option = option.toLowerCase();
+			var val = {};
+			
+			if (option.test('left')) val.x = 'left';
+			else if (option.test('right')) val.x = 'right';
+			else val.x = 'center';
+			
+			if (option.test('upper') || option.test('top')) val.y = 'top';
+			else if (option.test('bottom')) val.y = 'bottom';
+			else val.y = 'center';
+			
+			return val;
+		};
+		options.edge = fixValue(options.edge);
+		options.position = fixValue(options.position);
+		if (!options.edge){
+			if (options.position.x == 'center' && options.position.y == 'center') options.edge = {x:'center', y:'center'};
+			else options.edge = {x:'left', y:'top'};
+		}
+
+		this.setStyle('position', 'absolute');
+		var rel = document.id(options.relativeTo) || document.body,
+				calc = rel == document.body ? window.getScroll() : rel.getPosition(),
+				top = calc.y, left = calc.x;
+
+		var dim = this.getDimensions({computeSize: true, styles:['padding', 'border','margin']});
+		var pos = {},
+				prefY = options.offset.y,
+				prefX = options.offset.x,
+				winSize = window.getSize();
+		switch(options.position.x){
+			case 'left':
+				pos.x = left + prefX;
+				break;
+			case 'right':
+				pos.x = left + prefX + rel.offsetWidth;
+				break;
+			default: //center
+				pos.x = left + ((rel == document.body ? winSize.x : rel.offsetWidth)/2) + prefX;
+				break;
+		}
+		switch(options.position.y){
+			case 'top':
+				pos.y = top + prefY;
+				break;
+			case 'bottom':
+				pos.y = top + prefY + rel.offsetHeight;
+				break;
+			default: //center
+				pos.y = top + ((rel == document.body ? winSize.y : rel.offsetHeight)/2) + prefY;
+				break;
+		}
+		if (options.edge){
+			var edgeOffset = {};
+
+			switch(options.edge.x){
+				case 'left':
+					edgeOffset.x = 0;
+					break;
+				case 'right':
+					edgeOffset.x = -dim.x-dim.computedRight-dim.computedLeft;
+					break;
+				default: //center
+					edgeOffset.x = -(dim.totalWidth/2);
+					break;
+			}
+			switch(options.edge.y){
+				case 'top':
+					edgeOffset.y = 0;
+					break;
+				case 'bottom':
+					edgeOffset.y = -dim.y-dim.computedTop-dim.computedBottom;
+					break;
+				default: //center
+					edgeOffset.y = -(dim.totalHeight/2);
+					break;
+			}
+			pos.x += edgeOffset.x;
+			pos.y += edgeOffset.y;
+		}
+		pos = {
+			left: ((pos.x >= 0 || parentPositioned || options.allowNegative) ? pos.x : 0).toInt(),
+			top: ((pos.y >= 0 || parentPositioned || options.allowNegative) ? pos.y : 0).toInt()
+		};
+		var xy = {left: 'x', top: 'y'};
+		['minimum', 'maximum'].each(function(minmax) {
+			['left', 'top'].each(function(lr) {
+				var val = options[minmax] ? options[minmax][xy[lr]] : null;
+				if (val != null && ((minmax == 'minimum') ? pos[lr] < val: pos[lr] > val)) pos[lr] = val;
+			});
+		});
+		if (rel.getStyle('position') == 'fixed' || options.relFixedPosition){
+			var winScroll = window.getScroll();
+			pos.top+= winScroll.y;
+			pos.left+= winScroll.x;
+		}
+		var relScroll = rel.getScroll();
+		if (options.ignoreScroll) {
+			pos.top -= relScroll.y;
+			pos.left -= relScroll.x;
+		} else {
+			pos.top += relScroll.y;
+			pos.left += relScroll.x;
+		}
+		if (options.ignoreMargins) {
+			pos.left += (
+				options.edge.x == 'right' ? dim['margin-right'] : 
+				options.edge.x == 'center' ? -dim['margin-left'] + ((dim['margin-right'] + dim['margin-left'])/2) : 
+					- dim['margin-left']
+			);
+			pos.top += (
+				options.edge.y == 'bottom' ? dim['margin-bottom'] : 
+				options.edge.y == 'center' ? -dim['margin-top'] + ((dim['margin-bottom'] + dim['margin-top'])/2) : 
+					- dim['margin-top']
+			);
+		}
+		pos.left = Math.ceil(pos.left);
+		pos.top = Math.ceil(pos.top);
+		if (options.returnPos) return pos;
+		else this.setStyles(pos);
+		return this;
+	}
+
+});
+
+})();
+
+
+/*
+---
+
+script: Element.Shortcuts.js
+
+name: Element.Shortcuts
+
+description: Extends the Element native object to include some shortcut methods.
+
+license: MIT-style license
+
+authors:
+  - Aaron Newton
+
+requires:
+  - Core/Element.Style
+  - /MooTools.More
+
+provides: [Element.Shortcuts]
+
+...
+*/
+
+Element.implement({
+
+	isDisplayed: function(){
+		return this.getStyle('display') != 'none';
+	},
+
+	isVisible: function(){
+		var w = this.offsetWidth,
+			h = this.offsetHeight;
+		return (w == 0 && h == 0) ? false : (w > 0 && h > 0) ? true : this.style.display != 'none';
+	},
+
+	toggle: function(){
+		return this[this.isDisplayed() ? 'hide' : 'show']();
+	},
+
+	hide: function(){
+		var d;
+		try {
+			//IE fails here if the element is not in the dom
+			d = this.getStyle('display');
+		} catch(e){}
+		if (d == "none") return this;
+		return this.store('element:_originalDisplay', d || '').setStyle('display', 'none');
+	},
+
+	show: function(display){
+		if (!display && this.isDisplayed()) return this;
+		display = display || this.retrieve('element:_originalDisplay') || 'block';
+		return this.setStyle('display', (display == 'none') ? 'block' : display);
+	},
+
+	swapClass: function(remove, add){
+		return this.removeClass(remove).addClass(add);
+	}
+});
+
+Document.implement({
+	clearSelection: function(){
+		if (document.selection && document.selection.empty) {
+			document.selection.empty();
+		} else if (window.getSelection) {
+			var selection = window.getSelection();
+			if (selection && selection.removeAllRanges) selection.removeAllRanges();
+		}
+	}
+});
+
+/*
+---
+
+script: Fx.Elements.js
+
+name: Fx.Elements
+
+description: Effect to change any number of CSS properties of any number of Elements.
+
+license: MIT-style license
+
+authors:
+  - Valerio Proietti
+
+requires:
+  - Core/Fx.CSS
+  - /MooTools.More
+
+provides: [Fx.Elements]
+
+...
+*/
+
+Fx.Elements = new Class({
+
+	Extends: Fx.CSS,
+
+	initialize: function(elements, options){
+		this.elements = this.subject = $$(elements);
+		this.parent(options);
+	},
+
+	compute: function(from, to, delta){
+		var now = {};
+
+		for (var i in from){
+			var iFrom = from[i], iTo = to[i], iNow = now[i] = {};
+			for (var p in iFrom) iNow[p] = this.parent(iFrom[p], iTo[p], delta);
+		}
+
+		return now;
+	},
+
+	set: function(now){
+		for (var i in now){
+			if (!this.elements[i]) continue;
+
+			var iNow = now[i];
+			for (var p in iNow) this.render(this.elements[i], p, iNow[p], this.options.unit);
+		}
+
+		return this;
+	},
+
+	start: function(obj){
+		if (!this.check(obj)) return this;
+		var from = {}, to = {};
+
+		for (var i in obj){
+			if (!this.elements[i]) continue;
+
+			var iProps = obj[i], iFrom = from[i] = {}, iTo = to[i] = {};
+
+			for (var p in iProps){
+				var parsed = this.prepare(this.elements[i], p, iProps[p]);
+				iFrom[p] = parsed.from;
+				iTo[p] = parsed.to;
+			}
+		}
+
+		return this.parent(from, to);
+	}
+
+});
+
+
+/*
+---
+
+script: Fx.Accordion.js
+
+name: Fx.Accordion
+
+description: An Fx.Elements extension which allows you to easily create accordion type controls.
+
+license: MIT-style license
+
+authors:
+  - Valerio Proietti
+
+requires:
+  - Core/Element.Event
+  - /Fx.Elements
+
+provides: [Fx.Accordion]
+
+...
+*/
+
+Fx.Accordion = new Class({
+
+	Extends: Fx.Elements,
+
+	options: {/*
+		onActive: $empty(toggler, section),
+		onBackground: $empty(toggler, section),
+		*/
+		fixedHeight: false,
+		fixedWidth: false,
+		display: 0,
+		show: false,
+		height: true,
+		width: false,
+		opacity: true,
+		alwaysHide: false,
+		trigger: 'click',
+		initialDisplayFx: true,
+		returnHeightToAuto: true
+	},
+
+	initialize: function(){
+		var params = Array.link(arguments, {
+			'container': Element.type, //deprecated
+			'options': Object.type,
+			'togglers': $defined,
+			'elements': $defined
+		});
+		this.parent(params.elements, params.options);
+		this.togglers = $$(params.togglers);
+		this.previous = -1;
+		this.internalChain = new Chain();
+		if (this.options.alwaysHide) this.options.wait = true;
+		if ($chk(this.options.show)){
+			this.options.display = false;
+			this.previous = this.options.show;
+		}
+		if (this.options.start){
+			this.options.display = false;
+			this.options.show = false;
+		}
+		this.effects = {};
+		if (this.options.opacity) this.effects.opacity = 'fullOpacity';
+		if (this.options.width) this.effects.width = this.options.fixedWidth ? 'fullWidth' : 'offsetWidth';
+		if (this.options.height) this.effects.height = this.options.fixedHeight ? 'fullHeight' : 'scrollHeight';
+		for (var i = 0, l = this.togglers.length; i < l; i++) this.addSection(this.togglers[i], this.elements[i]);
+		this.elements.each(function(el, i){
+			if (this.options.show === i){
+				this.fireEvent('active', [this.togglers[i], el]);
+			} else {
+				for (var fx in this.effects) el.setStyle(fx, 0);
+			}
+		}, this);
+		if ($chk(this.options.display) || this.options.initialDisplayFx === false) this.display(this.options.display, this.options.initialDisplayFx);
+		if (this.options.fixedHeight !== false) this.options.returnHeightToAuto = false;
+		this.addEvent('complete', this.internalChain.callChain.bind(this.internalChain));
+	},
+
+	addSection: function(toggler, element){
+		toggler = document.id(toggler);
+		element = document.id(element);
+		var test = this.togglers.contains(toggler);
+		this.togglers.include(toggler);
+		this.elements.include(element);
+		var idx = this.togglers.indexOf(toggler);
+		var displayer = this.display.bind(this, idx);
+		toggler.store('accordion:display', displayer);
+		toggler.addEvent(this.options.trigger, displayer);
+		if (this.options.height) element.setStyles({'padding-top': 0, 'border-top': 'none', 'padding-bottom': 0, 'border-bottom': 'none'});
+		if (this.options.width) element.setStyles({'padding-left': 0, 'border-left': 'none', 'padding-right': 0, 'border-right': 'none'});
+		element.fullOpacity = 1;
+		if (this.options.fixedWidth) element.fullWidth = this.options.fixedWidth;
+		if (this.options.fixedHeight) element.fullHeight = this.options.fixedHeight;
+		element.setStyle('overflow', 'hidden');
+		if (!test){
+			for (var fx in this.effects) element.setStyle(fx, 0);
+		}
+		return this;
+	},
+
+	removeSection: function(toggler, displayIndex) {
+		var idx = this.togglers.indexOf(toggler);
+		var element = this.elements[idx];
+		var remover = function(){
+			this.togglers.erase(toggler);
+			this.elements.erase(element);
+			this.detach(toggler);
+		}.bind(this);
+		if (this.now == idx || displayIndex != undefined) this.display($pick(displayIndex, idx - 1 >= 0 ? idx - 1 : 0)).chain(remover);
+		else remover();
+		return this;
+	},
+
+	detach: function(toggler){
+		var remove = function(toggler) {
+			toggler.removeEvent(this.options.trigger, toggler.retrieve('accordion:display'));
+		}.bind(this);
+		if (!toggler) this.togglers.each(remove);
+		else remove(toggler);
+		return this;
+	},
+
+	display: function(index, useFx){
+		if (!this.check(index, useFx)) return this;
+		useFx = $pick(useFx, true);
+		index = ($type(index) == 'element') ? this.elements.indexOf(index) : index;
+		if (index == this.previous && !this.options.alwaysHide) return this;
+		if (this.options.returnHeightToAuto){
+			var prev = this.elements[this.previous];
+			if (prev && !this.selfHidden){
+				for (var fx in this.effects){
+					prev.setStyle(fx, prev[this.effects[fx]]);
+				}
+			}
+		}
+		if ((this.timer && this.options.wait) || (index === this.previous && !this.options.alwaysHide)) return this;
+		this.previous = index;
+		var obj = {};
+		this.elements.each(function(el, i){
+			obj[i] = {};
+			var hide;
+			if (i != index){
+				hide = true;
+			} else if (this.options.alwaysHide && ((el.offsetHeight > 0 && this.options.height) || el.offsetWidth > 0 && this.options.width)){
+				hide = true;
+				this.selfHidden = true;
+			}
+			this.fireEvent(hide ? 'background' : 'active', [this.togglers[i], el]);
+			for (var fx in this.effects) obj[i][fx] = hide ? 0 : el[this.effects[fx]];
+		}, this);
+		this.internalChain.clearChain();
+		this.internalChain.chain(function(){
+			if (this.options.returnHeightToAuto && !this.selfHidden){
+				var el = this.elements[index];
+				if (el) el.setStyle('height', 'auto');
+			};
+		}.bind(this));
+		return useFx ? this.start(obj) : this.set(obj);
+	}
+
+});
+
+/*
+	Compatibility with 1.2.0
+*/
+var Accordion = new Class({
+
+	Extends: Fx.Accordion,
+
+	initialize: function(){
+		this.parent.apply(this, arguments);
+		var params = Array.link(arguments, {'container': Element.type});
+		this.container = params.container;
+	},
+
+	addSection: function(toggler, element, pos){
+		toggler = document.id(toggler);
+		element = document.id(element);
+		var test = this.togglers.contains(toggler);
+		var len = this.togglers.length;
+		if (len && (!test || pos)){
+			pos = $pick(pos, len - 1);
+			toggler.inject(this.togglers[pos], 'before');
+			element.inject(toggler, 'after');
+		} else if (this.container && !test){
+			toggler.inject(this.container);
+			element.inject(this.container);
+		}
+		return this.parent.apply(this, arguments);
+	}
+
+});
+
+/*
+---
+
+script: Fx.Move.js
+
+name: Fx.Move
+
+description: Defines Fx.Move, a class that works with Element.Position.js to transition an element from one location to another.
+
+license: MIT-style license
+
+authors:
+  - Aaron Newton
+
+requires:
+  - Core/Fx.Morph
+  - /Element.Position
+
+provides: [Fx.Move]
+
+...
+*/
+
+Fx.Move = new Class({
+
+	Extends: Fx.Morph,
+
+	options: {
+		relativeTo: document.body,
+		position: 'center',
+		edge: false,
+		offset: {x: 0, y: 0}
+	},
+
+	start: function(destination){
+		var element = this.element,
+			topLeft = element.getStyles('top', 'left');
+		if (topLeft.top == 'auto' || topLeft.left == 'auto'){
+			element.setPosition(element.getPosition(element.getOffsetParent()));
+		}
+		return this.parent(element.position($merge(this.options, destination, {returnPos: true})));
+	}
+
+});
+
+Element.Properties.move = {
+
+	set: function(options){
+		var morph = this.retrieve('move');
+		if (morph) morph.cancel();
+		return this.eliminate('move').store('move:options', $extend({link: 'cancel'}, options));
+	},
+
+	get: function(options){
+		if (options || !this.retrieve('move')){
+			if (options || !this.retrieve('move:options')) this.set('move', options);
+			this.store('move', new Fx.Move(this, this.retrieve('move:options')));
+		}
+		return this.retrieve('move');
+	}
+
+};
+
+Element.implement({
+
+	move: function(options){
+		this.get('move').start(options);
+		return this;
+	}
+
+});
+
+
+/*
+---
+
+script: Fx.Reveal.js
+
+name: Fx.Reveal
+
+description: Defines Fx.Reveal, a class that shows and hides elements with a transition.
+
+license: MIT-style license
+
+authors:
+  - Aaron Newton
+
+requires:
+  - Core/Fx.Morph
+  - /Element.Shortcuts
+  - /Element.Measure
+
+provides: [Fx.Reveal]
+
+...
+*/
+
+Fx.Reveal = new Class({
+
+	Extends: Fx.Morph,
+
+	options: {/*	  
+		onShow: $empty(thisElement),
+		onHide: $empty(thisElement),
+		onComplete: $empty(thisElement),
+		heightOverride: null,
+		widthOverride: null, */
+		link: 'cancel',
+		styles: ['padding', 'border', 'margin'],
+		transitionOpacity: !Browser.Engine.trident4,
+		mode: 'vertical',
+		display: function(){
+			return this.element.get('tag') != 'tr' ? 'block' : 'table-row';
+		},
+		hideInputs: Browser.Engine.trident ? 'select, input, textarea, object, embed' : false,
+		opacity: 1
+	},
+
+	dissolve: function(){
+		try {
+			if (!this.hiding && !this.showing){
+				if (this.element.getStyle('display') != 'none'){
+					this.hiding = true;
+					this.showing = false;
+					this.hidden = true;
+					this.cssText = this.element.style.cssText;
+					var startStyles = this.element.getComputedSize({
+						styles: this.options.styles,
+						mode: this.options.mode
+					});
+					this.element.setStyle('display', $lambda(this.options.display).apply(this));
+					if (this.options.transitionOpacity) startStyles.opacity = this.options.opacity;
+					var zero = {};
+					$each(startStyles, function(style, name){
+						zero[name] = [style, 0];
+					}, this);
+					this.element.setStyle('overflow', 'hidden');
+					var hideThese = this.options.hideInputs ? this.element.getElements(this.options.hideInputs) : null;
+					this.$chain.unshift(function(){
+						if (this.hidden){
+							this.hiding = false;
+							$each(startStyles, function(style, name){
+								startStyles[name] = style;
+							}, this);
+							this.element.style.cssText = this.cssText;
+							this.element.setStyle('display', 'none');
+							if (hideThese) hideThese.setStyle('visibility', 'visible');
+						}
+						this.fireEvent('hide', this.element);
+						this.callChain();
+					}.bind(this));
+					if (hideThese) hideThese.setStyle('visibility', 'hidden');
+					this.start(zero);
+				} else {
+					this.callChain.delay(10, this);
+					this.fireEvent('complete', this.element);
+					this.fireEvent('hide', this.element);
+				}
+			} else if (this.options.link == 'chain'){
+				this.chain(this.dissolve.bind(this));
+			} else if (this.options.link == 'cancel' && !this.hiding){
+				this.cancel();
+				this.dissolve();
+			}
+		} catch(e){
+			this.hiding = false;
+			this.element.setStyle('display', 'none');
+			this.callChain.delay(10, this);
+			this.fireEvent('complete', this.element);
+			this.fireEvent('hide', this.element);
+		}
+		return this;
+	},
+
+	reveal: function(){
+		try {
+			if (!this.showing && !this.hiding){
+				if (this.element.getStyle('display') == 'none'){
+					this.showing = true;
+					this.hiding = this.hidden =  false;
+					var startStyles;
+					this.cssText = this.element.style.cssText;
+					//toggle display, but hide it
+					this.element.measure(function(){
+						//create the styles for the opened/visible state
+						startStyles = this.element.getComputedSize({
+							styles: this.options.styles,
+							mode: this.options.mode
+						});
+					}.bind(this));
+					$each(startStyles, function(style, name){
+						startStyles[name] = style;
+					});
+					//if we're overridding height/width
+					if ($chk(this.options.heightOverride)) startStyles.height = this.options.heightOverride.toInt();
+					if ($chk(this.options.widthOverride)) startStyles.width = this.options.widthOverride.toInt();
+					if (this.options.transitionOpacity) {
+						this.element.setStyle('opacity', 0);
+						startStyles.opacity = this.options.opacity;
+					}
+					//create the zero state for the beginning of the transition
+					var zero = {
+						height: 0,
+						display: $lambda(this.options.display).apply(this)
+					};
+					$each(startStyles, function(style, name){ zero[name] = 0; });
+					//set to zero
+					this.element.setStyles($merge(zero, {overflow: 'hidden'}));
+					//hide inputs
+					var hideThese = this.options.hideInputs ? this.element.getElements(this.options.hideInputs) : null;
+					if (hideThese) hideThese.setStyle('visibility', 'hidden');
+					//start the effect
+					this.start(startStyles);
+					this.$chain.unshift(function(){
+						this.element.style.cssText = this.cssText;
+						this.element.setStyle('display', $lambda(this.options.display).apply(this));
+						if (!this.hidden) this.showing = false;
+						if (hideThese) hideThese.setStyle('visibility', 'visible');
+						this.callChain();
+						this.fireEvent('show', this.element);
+					}.bind(this));
+				} else {
+					this.callChain();
+					this.fireEvent('complete', this.element);
+					this.fireEvent('show', this.element);
+				}
+			} else if (this.options.link == 'chain'){
+				this.chain(this.reveal.bind(this));
+			} else if (this.options.link == 'cancel' && !this.showing){
+				this.cancel();
+				this.reveal();
+			}
+		} catch(e){
+			this.element.setStyles({
+				display: $lambda(this.options.display).apply(this),
+				visiblity: 'visible',
+				opacity: this.options.opacity
+			});
+			this.showing = false;
+			this.callChain.delay(10, this);
+			this.fireEvent('complete', this.element);
+			this.fireEvent('show', this.element);
+		}
+		return this;
+	},
+
+	toggle: function(){
+		if (this.element.getStyle('display') == 'none'){
+			this.reveal();
+		} else {
+			this.dissolve();
+		}
+		return this;
+	},
+
+	cancel: function(){
+		this.parent.apply(this, arguments);
+		this.element.style.cssText = this.cssText;
+		this.hiding = false;
+		this.showing = false;
+		return this;
+	}
+
+});
+
+Element.Properties.reveal = {
+
+	set: function(options){
+		var reveal = this.retrieve('reveal');
+		if (reveal) reveal.cancel();
+		return this.eliminate('reveal').store('reveal:options', options);
+	},
+
+	get: function(options){
+		if (options || !this.retrieve('reveal')){
+			if (options || !this.retrieve('reveal:options')) this.set('reveal', options);
+			this.store('reveal', new Fx.Reveal(this, this.retrieve('reveal:options')));
+		}
+		return this.retrieve('reveal');
+	}
+
+};
+
+Element.Properties.dissolve = Element.Properties.reveal;
+
+Element.implement({
+
+	reveal: function(options){
+		this.get('reveal', options).reveal();
+		return this;
+	},
+
+	dissolve: function(options){
+		this.get('reveal', options).dissolve();
+		return this;
+	},
+
+	nix: function(){
+		var params = Array.link(arguments, {destroy: Boolean.type, options: Object.type});
+		this.get('reveal', params.options).dissolve().chain(function(){
+			this[params.destroy ? 'destroy' : 'dispose']();
+		}.bind(this));
+		return this;
+	},
+
+	wink: function(){
+		var params = Array.link(arguments, {duration: Number.type, options: Object.type});
+		var reveal = this.get('reveal', params.options);
+		reveal.reveal().chain(function(){
+			(function(){
+				reveal.dissolve();
+			}).delay(params.duration || 2000);
+		});
+	}
+
+
+});
+
+/*
+---
+
+script: Fx.Scroll.js
+
+name: Fx.Scroll
+
+description: Effect to smoothly scroll any element, including the window.
+
+license: MIT-style license
+
+authors:
+  - Valerio Proietti
+
+requires:
+  - Core/Fx
+  - Core/Element.Event
+  - Core/Element.Dimensions
+  - /MooTools.More
+
+provides: [Fx.Scroll]
+
+...
+*/
+
+Fx.Scroll = new Class({
+
+	Extends: Fx,
+
+	options: {
+		offset: {x: 0, y: 0},
+		wheelStops: true
+	},
+
+	initialize: function(element, options){
+		this.element = this.subject = document.id(element);
+		this.parent(options);
+		var cancel = this.cancel.bind(this, false);
+
+		if ($type(this.element) != 'element') this.element = document.id(this.element.getDocument().body);
+
+		var stopper = this.element;
+
+		if (this.options.wheelStops){
+			this.addEvent('start', function(){
+				stopper.addEvent('mousewheel', cancel);
+			}, true);
+			this.addEvent('complete', function(){
+				stopper.removeEvent('mousewheel', cancel);
+			}, true);
+		}
+	},
+
+	set: function(){
+		var now = Array.flatten(arguments);
+		if (Browser.Engine.gecko) now = [Math.round(now[0]), Math.round(now[1])];
+		this.element.scrollTo(now[0] + this.options.offset.x, now[1] + this.options.offset.y);
+	},
+
+	compute: function(from, to, delta){
+		return [0, 1].map(function(i){
+			return Fx.compute(from[i], to[i], delta);
+		});
+	},
+
+	start: function(x, y){
+		if (!this.check(x, y)) return this;
+		var scrollSize = this.element.getScrollSize(),
+			scroll = this.element.getScroll(), 
+			values = {x: x, y: y};
+		for (var z in values){
+			var max = scrollSize[z];
+			if ($chk(values[z])) values[z] = ($type(values[z]) == 'number') ? values[z] : max;
+			else values[z] = scroll[z];
+			values[z] += this.options.offset[z];
+		}
+		return this.parent([scroll.x, scroll.y], [values.x, values.y]);
+	},
+
+	toTop: function(){
+		return this.start(false, 0);
+	},
+
+	toLeft: function(){
+		return this.start(0, false);
+	},
+
+	toRight: function(){
+		return this.start('right', false);
+	},
+
+	toBottom: function(){
+		return this.start(false, 'bottom');
+	},
+
+	toElement: function(el){
+		var position = document.id(el).getPosition(this.element);
+		return this.start(position.x, position.y);
+	},
+
+	scrollIntoView: function(el, axes, offset){
+		axes = axes ? $splat(axes) : ['x','y'];
+		var to = {};
+		el = document.id(el);
+		var pos = el.getPosition(this.element);
+		var size = el.getSize();
+		var scroll = this.element.getScroll();
+		var containerSize = this.element.getSize();
+		var edge = {
+			x: pos.x + size.x,
+			y: pos.y + size.y
+		};
+		['x','y'].each(function(axis) {
+			if (axes.contains(axis)) {
+				if (edge[axis] > scroll[axis] + containerSize[axis]) to[axis] = edge[axis] - containerSize[axis];
+				if (pos[axis] < scroll[axis]) to[axis] = pos[axis];
+			}
+			if (to[axis] == null) to[axis] = scroll[axis];
+			if (offset && offset[axis]) to[axis] = to[axis] + offset[axis];
+		}, this);
+		if (to.x != scroll.x || to.y != scroll.y) this.start(to.x, to.y);
+		return this;
+	},
+
+	scrollToCenter: function(el, axes, offset){
+		axes = axes ? $splat(axes) : ['x', 'y'];
+		el = $(el);
+		var to = {},
+			pos = el.getPosition(this.element),
+			size = el.getSize(),
+			scroll = this.element.getScroll(),
+			containerSize = this.element.getSize(),
+			edge = {
+				x: pos.x + size.x,
+				y: pos.y + size.y
+			};
+
+		['x','y'].each(function(axis){
+			if(axes.contains(axis)){
+				to[axis] = pos[axis] - (containerSize[axis] - size[axis])/2;
+			}
+			if(to[axis] == null) to[axis] = scroll[axis];
+			if(offset && offset[axis]) to[axis] = to[axis] + offset[axis];
+		}, this);
+		if (to.x != scroll.x || to.y != scroll.y) this.start(to.x, to.y);
+		return this;
+	}
+
+});
+
+
+/*
+---
+
+script: Fx.Slide.js
+
+name: Fx.Slide
+
+description: Effect to slide an element in and out of view.
+
+license: MIT-style license
+
+authors:
+  - Valerio Proietti
+
+requires:
+  - Core/Fx
+  - Core/Element.Style
+  - /MooTools.More
+
+provides: [Fx.Slide]
+
+...
+*/
+
+Fx.Slide = new Class({
+
+	Extends: Fx,
+
+	options: {
+		mode: 'vertical',
+		wrapper: false,
+		hideOverflow: true,
+		resetHeight: false
+	},
+
+	initialize: function(element, options){
+		this.addEvent('complete', function(){
+			this.open = (this.wrapper['offset' + this.layout.capitalize()] != 0);
+			if (this.open && this.options.resetHeight) this.wrapper.setStyle('height', '');
+			if (this.open && Browser.Engine.webkit419) this.element.dispose().inject(this.wrapper);
+		}, true);
+		this.element = this.subject = document.id(element);
+		this.parent(options);
+		var wrapper = this.element.retrieve('wrapper');
+		var styles = this.element.getStyles('margin', 'position', 'overflow');
+		if (this.options.hideOverflow) styles = $extend(styles, {overflow: 'hidden'});
+		if (this.options.wrapper) wrapper = document.id(this.options.wrapper).setStyles(styles);
+		this.wrapper = wrapper || new Element('div', {
+			styles: styles
+		}).wraps(this.element);
+		this.element.store('wrapper', this.wrapper).setStyle('margin', 0);
+		this.now = [];
+		this.open = true;
+	},
+
+	vertical: function(){
+		this.margin = 'margin-top';
+		this.layout = 'height';
+		this.offset = this.element.offsetHeight;
+	},
+
+	horizontal: function(){
+		this.margin = 'margin-left';
+		this.layout = 'width';
+		this.offset = this.element.offsetWidth;
+	},
+
+	set: function(now){
+		this.element.setStyle(this.margin, now[0]);
+		this.wrapper.setStyle(this.layout, now[1]);
+		return this;
+	},
+
+	compute: function(from, to, delta){
+		return [0, 1].map(function(i){
+			return Fx.compute(from[i], to[i], delta);
+		});
+	},
+
+	start: function(how, mode){
+		if (!this.check(how, mode)) return this;
+		this[mode || this.options.mode]();
+		var margin = this.element.getStyle(this.margin).toInt();
+		var layout = this.wrapper.getStyle(this.layout).toInt();
+		var caseIn = [[margin, layout], [0, this.offset]];
+		var caseOut = [[margin, layout], [-this.offset, 0]];
+		var start;
+		switch (how){
+			case 'in': start = caseIn; break;
+			case 'out': start = caseOut; break;
+			case 'toggle': start = (layout == 0) ? caseIn : caseOut;
+		}
+		return this.parent(start[0], start[1]);
+	},
+
+	slideIn: function(mode){
+		return this.start('in', mode);
+	},
+
+	slideOut: function(mode){
+		return this.start('out', mode);
+	},
+
+	hide: function(mode){
+		this[mode || this.options.mode]();
+		this.open = false;
+		return this.set([-this.offset, 0]);
+	},
+
+	show: function(mode){
+		this[mode || this.options.mode]();
+		this.open = true;
+		return this.set([0, this.offset]);
+	},
+
+	toggle: function(mode){
+		return this.start('toggle', mode);
+	}
+
+});
+
+Element.Properties.slide = {
+
+	set: function(options){
+		var slide = this.retrieve('slide');
+		if (slide) slide.cancel();
+		return this.eliminate('slide').store('slide:options', $extend({link: 'cancel'}, options));
+	},
+
+	get: function(options){
+		if (options || !this.retrieve('slide')){
+			if (options || !this.retrieve('slide:options')) this.set('slide', options);
+			this.store('slide', new Fx.Slide(this, this.retrieve('slide:options')));
+		}
+		return this.retrieve('slide');
+	}
+
+};
+
+Element.implement({
+
+	slide: function(how, mode){
+		how = how || 'toggle';
+		var slide = this.get('slide'), toggle;
+		switch (how){
+			case 'hide': slide.hide(mode); break;
+			case 'show': slide.show(mode); break;
+			case 'toggle':
+				var flag = this.retrieve('slide:flag', slide.open);
+				slide[flag ? 'slideOut' : 'slideIn'](mode);
+				this.store('slide:flag', !flag);
+				toggle = true;
+			break;
+			default: slide.start(how, mode);
+		}
+		if (!toggle) this.eliminate('slide:flag');
+		return this;
+	}
+
+});
+
+
+/*
+---
+
+script: Fx.SmoothScroll.js
+
+name: Fx.SmoothScroll
+
+description: Class for creating a smooth scrolling effect to all internal links on the page.
+
+license: MIT-style license
+
+authors:
+  - Valerio Proietti
+
+requires:
+  - Core/Selectors
+  - /Fx.Scroll
+
+provides: [Fx.SmoothScroll]
+
+...
+*/
+
+var SmoothScroll = Fx.SmoothScroll = new Class({
+
+	Extends: Fx.Scroll,
+
+	initialize: function(options, context){
+		context = context || document;
+		this.doc = context.getDocument();
+		var win = context.getWindow();
+		this.parent(this.doc, options);
+		this.links = $$(this.options.links || this.doc.links);
+		var location = win.location.href.match(/^[^#]*/)[0] + '#';
+		this.links.each(function(link){
+			if (link.href.indexOf(location) != 0) {return;}
+			var anchor = link.href.substr(location.length);
+			if (anchor) this.useLink(link, anchor);
+		}, this);
+		if (!Browser.Engine.webkit419) {
+			this.addEvent('complete', function(){
+				win.location.hash = this.anchor;
+			}, true);
+		}
+	},
+
+	useLink: function(link, anchor){
+		var el;
+		link.addEvent('click', function(event){
+			if (el !== false && !el) el = document.id(anchor) || this.doc.getElement('a[name=' + anchor + ']');
+			if (el) {
+				event.preventDefault();
+				this.anchor = anchor;
+				this.toElement(el).chain(function(){
+					this.fireEvent('scrolledTo', [link, el]);
+				}.bind(this));
+				link.blur();
+			}
+		}.bind(this));
+	}
+});
+
+/*
+---
+
+script: Fx.Sort.js
+
+name: Fx.Sort
+
+description: Defines Fx.Sort, a class that reorders lists with a transition.
+
+license: MIT-style license
+
+authors:
+  - Aaron Newton
+
+requires:
+  - Core/Element.Dimensions
+  - /Fx.Elements
+  - /Element.Measure
+
+provides: [Fx.Sort]
+
+...
+*/
+
+Fx.Sort = new Class({
+
+	Extends: Fx.Elements,
+
+	options: {
+		mode: 'vertical'
+	},
+
+	initialize: function(elements, options){
+		this.parent(elements, options);
+		this.elements.each(function(el){
+			if (el.getStyle('position') == 'static') el.setStyle('position', 'relative');
+		});
+		this.setDefaultOrder();
+	},
+
+	setDefaultOrder: function(){
+		this.currentOrder = this.elements.map(function(el, index){
+			return index;
+		});
+	},
+
+	sort: function(newOrder){
+		if ($type(newOrder) != 'array') return false;
+		var top = 0,
+			left = 0,
+			next = {},
+			zero = {},
+			vert = this.options.mode == 'vertical';
+		var current = this.elements.map(function(el, index){
+			var size = el.getComputedSize({styles: ['border', 'padding', 'margin']});
+			var val;
+			if (vert){
+				val = {
+					top: top,
+					margin: size['margin-top'],
+					height: size.totalHeight
+				};
+				top += val.height - size['margin-top'];
+			} else {
+				val = {
+					left: left,
+					margin: size['margin-left'],
+					width: size.totalWidth
+				};
+				left += val.width;
+			}
+			var plane = vert ? 'top' : 'left';
+			zero[index] = {};
+			var start = el.getStyle(plane).toInt();
+			zero[index][plane] = start || 0;
+			return val;
+		}, this);
+		this.set(zero);
+		newOrder = newOrder.map(function(i){ return i.toInt(); });
+		if (newOrder.length != this.elements.length){
+			this.currentOrder.each(function(index){
+				if (!newOrder.contains(index)) newOrder.push(index);
+			});
+			if (newOrder.length > this.elements.length)
+				newOrder.splice(this.elements.length-1, newOrder.length - this.elements.length);
+		}
+		var margin = top = left = 0;
+		newOrder.each(function(item, index){
+			var newPos = {};
+			if (vert){
+				newPos.top = top - current[item].top - margin;
+				top += current[item].height;
+			} else {
+				newPos.left = left - current[item].left;
+				left += current[item].width;
+			}
+			margin = margin + current[item].margin;
+			next[item]=newPos;
+		}, this);
+		var mapped = {};
+		$A(newOrder).sort().each(function(index){
+			mapped[index] = next[index];
+		});
+		this.start(mapped);
+		this.currentOrder = newOrder;
+		return this;
+	},
+
+	rearrangeDOM: function(newOrder){
+		newOrder = newOrder || this.currentOrder;
+		var parent = this.elements[0].getParent();
+		var rearranged = [];
+		this.elements.setStyle('opacity', 0);
+		//move each element and store the new default order
+		newOrder.each(function(index){
+			rearranged.push(this.elements[index].inject(parent).setStyles({
+				top: 0,
+				left: 0
+			}));
+		}, this);
+		this.elements.setStyle('opacity', 1);
+		this.elements = $$(rearranged);
+		this.setDefaultOrder();
+		return this;
+	},
+
+	getDefaultOrder: function(){
+		return this.elements.map(function(el, index){
+			return index;
+		});
+	},
+
+	forward: function(){
+		return this.sort(this.getDefaultOrder());
+	},
+
+	backward: function(){
+		return this.sort(this.getDefaultOrder().reverse());
+	},
+
+	reverse: function(){
+		return this.sort(this.currentOrder.reverse());
+	},
+
+	sortByElements: function(elements){
+		return this.sort(elements.map(function(el){
+			return this.elements.indexOf(el);
+		}, this));
+	},
+
+	swap: function(one, two){
+		if ($type(one) == 'element') one = this.elements.indexOf(one);
+		if ($type(two) == 'element') two = this.elements.indexOf(two);
+		
+		var newOrder = $A(this.currentOrder);
+		newOrder[this.currentOrder.indexOf(one)] = two;
+		newOrder[this.currentOrder.indexOf(two)] = one;
+		return this.sort(newOrder);
+	}
+
+});
+
+/*
+---
+
+script: Request.JSONP.js
+
+name: Request.JSONP
+
+description: Defines Request.JSONP, a class for cross domain javascript via script injection.
+
+license: MIT-style license
+
+authors:
+  - Aaron Newton
+  - Guillermo Rauch
+
+requires:
+  - Core/Element
+  - Core/Request
+  - /Log
+
+provides: [Request.JSONP]
+
+...
+*/
+
+Request.JSONP = new Class({
+
+	Implements: [Chain, Events, Options, Log],
+
+	options: {/*
+		onRetry: $empty(intRetries),
+		onRequest: $empty(scriptElement),
+		onComplete: $empty(data),
+		onSuccess: $empty(data),
+		onCancel: $empty(),
+		log: false,
+		*/
+		url: '',
+		data: {},
+		retries: 0,
+		timeout: 0,
+		link: 'ignore',
+		callbackKey: 'callback',
+		injectScript: document.head
+	},
+
+	initialize: function(options){
+		this.setOptions(options);
+		if (this.options.log) this.enableLog();
+		this.running = false;
+		this.requests = 0;
+		this.triesRemaining = [];
+	},
+
+	check: function(){
+		if (!this.running) return true;
+		switch (this.options.link){
+			case 'cancel': this.cancel(); return true;
+			case 'chain': this.chain(this.caller.bind(this, arguments)); return false;
+		}
+		return false;
+	},
+
+	send: function(options){
+		if (!$chk(arguments[1]) && !this.check(options)) return this;
+
+		var type = $type(options), 
+				old = this.options, 
+				index = $chk(arguments[1]) ? arguments[1] : this.requests++;
+		if (type == 'string' || type == 'element') options = {data: options};
+
+		options = $extend({data: old.data, url: old.url}, options);
+
+		if (!$chk(this.triesRemaining[index])) this.triesRemaining[index] = this.options.retries;
+		var remaining = this.triesRemaining[index];
+
+		(function(){
+			var script = this.getScript(options);
+			this.log('JSONP retrieving script with url: ' + script.get('src'));
+			this.fireEvent('request', script);
+			this.running = true;
+
+			(function(){
+				if (remaining){
+					this.triesRemaining[index] = remaining - 1;
+					if (script){
+						script.destroy();
+						this.send(options, index).fireEvent('retry', this.triesRemaining[index]);
+					}
+				} else if(this.running && script && this.options.timeout){
+					script.destroy();
+					this.cancel().fireEvent('failure');
+				}
+			}).delay(this.options.timeout, this);
+		}).delay(Browser.Engine.trident ? 50 : 0, this);
+		return this;
+	},
+
+	cancel: function(){
+		if (!this.running) return this;
+		this.running = false;
+		this.fireEvent('cancel');
+		return this;
+	},
+
+	getScript: function(options){
+		var index = Request.JSONP.counter,
+				data;
+		Request.JSONP.counter++;
+
+		switch ($type(options.data)){
+			case 'element': data = document.id(options.data).toQueryString(); break;
+			case 'object': case 'hash': data = Hash.toQueryString(options.data);
+		}
+
+		var src = options.url + 
+			 (options.url.test('\\?') ? '&' :'?') + 
+			 (options.callbackKey || this.options.callbackKey) + 
+			 '=Request.JSONP.request_map.request_'+ index + 
+			 (data ? '&' + data : '');
+		if (src.length > 2083) this.log('JSONP '+ src +' will fail in Internet Explorer, which enforces a 2083 bytes length limit on URIs');
+
+		var script = new Element('script', {type: 'text/javascript', src: src});
+		Request.JSONP.request_map['request_' + index] = function(){ this.success(arguments, script); }.bind(this);
+		return script.inject(this.options.injectScript);
+	},
+
+	success: function(args, script){
+		if (!this.running) return false;
+		if (script) script.destroy();
+		this.running = false;
+		this.log('JSONP successfully retrieved: ', args);
+		this.fireEvent('complete', args).fireEvent('success', args).callChain();
+	}
+
+});
+
+Request.JSONP.counter = 0;
+Request.JSONP.request_map = {};
+
+
+/*
+---
+
+script: Form.Validator.Swedish.js
+
+name: Form.Validator.Swedish
+
+description: Form Validator messages for Swedish.
+
+license: MIT-style license
+
+authors:
+  - Martin Lundgren
+
+requires:
+  - /Lang
+
+provides: [Form.Validator.Swedish]
+
+...
+*/
+
+MooTools.lang.set('sv-SE', 'Form.Validator', {
+
+	required: 'Fältet är obligatoriskt.',
+	minLength: 'Ange minst {minLength} tecken (du angav {length} tecken).',
+	maxLength: 'Ange högst {maxLength} tecken (du angav {length} tecken). ',
+	integer: 'Ange ett heltal i fältet. Tal med decimaler (t.ex. 1,25) är inte tillåtna.',
+	numeric: 'Ange endast numeriska värden i detta fält (t.ex. "1" eller "1.1" eller "-1" eller "-1,1").',
+	digits: 'Använd endast siffror och skiljetecken i detta fält (till exempel ett telefonnummer med bindestreck tillåtet).',
+	alpha: 'Använd endast bokstäver (a-ö) i detta fält. Inga mellanslag eller andra tecken är tillåtna.',
+	alphanum: 'Använd endast bokstäver (a-ö) och siffror (0-9) i detta fält. Inga mellanslag eller andra tecken är tillåtna.',
+	dateSuchAs: 'Ange ett giltigt datum som t.ex. {date}',
+	dateInFormatMDY: 'Ange ett giltigt datum som t.ex. YYYY-MM-DD (i.e. "1999-12-31")',
+	email: 'Ange en giltig e-postadress. Till exempel "erik@domain.com".',
+	url: 'Ange en giltig webbadress som http://www.google.com.',
+	currencyDollar: 'Ange en giltig belopp. Exempelvis 100,00.',
+	oneRequired: 'Vänligen ange minst ett av dessa alternativ.',
+	errorPrefix: 'Fel: ',
+	warningPrefix: 'Varning: ',
+
+	// Form.Validator.Extras
+	noSpace: 'Det får inte finnas några mellanslag i detta fält.',
+	reqChkByNode: 'Inga objekt är valda.',
+	requiredChk: 'Detta är ett obligatoriskt fält.',
+	reqChkByName: 'Välj en {label}.',
+	match: 'Detta fält måste matcha {matchName}',
+	startDate: 'startdatumet',
+	endDate: 'slutdatum',
+	currendDate: 'dagens datum',
+	afterDate: 'Datumet bör vara samma eller senare än {label}.',
+	beforeDate: 'Datumet bör vara samma eller tidigare än {label}.',
+	startMonth: 'Välj en start månad',
+	sameMonth: 'Dessa två datum måste vara i samma månad - du måste ändra det ena eller det andra.'
+
+});
+
+
+/*
+---
+
+script: Form.Validator.Ukrainian.js
+
+name: Form.Validator.Ukrainian
+
+description: Form Validator messages in Ukrainian (utf-8).
+
+license: MIT-style license
+
+authors:
+  - Slik
+
+requires:
+  - /Lang
+
+provides: [Form.Validator.Ukrainian]
+
+...
+*/
+
+MooTools.lang.set('uk-UA', 'Form.Validator', {
+
+	required: 'Це поле повинне бути заповненим.',
+	minLength: 'Введіть хоча б {minLength} символів (Ви ввели {length}).',
+	maxLength: 'Кількість символів не може бути більше {maxLength} (Ви ввели {length}).',
+	integer: 'Введіть в це поле число. Дробові числа (наприклад 1.25) не дозволені.',
+	numeric: 'Введіть в це поле число (наприклад "1" або "1.1", або "-1", або "-1.1").',
+	digits: 'В цьому полі ви можете використовувати лише цифри і знаки пунктіації (наприклад, телефонний номер з знаками дефізу або з крапками).',
+	alpha: 'В цьому полі можна використовувати лише латинські літери (a-z). Пробіли і інші символи заборонені.',
+	alphanum: 'В цьому полі можна використовувати лише латинські літери (a-z) і цифри (0-9). Пробіли і інші символи заборонені.',
+	dateSuchAs: 'Введіть коректну дату {date}.',
+	dateInFormatMDY: 'Введіть дату в форматі ММ/ДД/РРРР (наприклад "12/31/2009").',
+	email: 'Введіть коректну адресу електронної пошти (наприклад "name@domain.com").',
+	url: 'Введіть коректне інтернет-посилання (наприклад http://www.google.com).',
+	currencyDollar: 'Введіть суму в доларах (наприклад "$100.00").',
+	oneRequired: 'Заповніть одне з полів.',
+	errorPrefix: 'Помилка: ',
+	warningPrefix: 'Увага: '
+
+});
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/MenuMatic.css
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/MenuMatic.css	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/MenuMatic.css	(revision 47450)
@@ -0,0 +1,125 @@
+/* Based partially on Matthew Carroll's keyboard accessible flavor of Suckerfish 
+ * Dropdowns by Patrick Griffiths and Dan Webb. 
+ * http://carroll.org.uk/sandbox/suckerfish/bones2.html
+ */
+
+/* ----[ LINKS ]----*/
+
+/* all menu links */
+#nav a, #subMenusContainer a{
+	text-decoration:none;
+	display:block;
+	padding:10px 20px;
+	background-color:#fff ;
+	-moz-border-radius: 7px;
+	-webkit-border-radius: 7px;
+}
+
+/* Just main menu links --[for non-javascript users this applies to submenu links as well]*/
+#nav a{
+	margin:0;
+	float:left;	
+}
+
+/* Just sub menu links */
+#subMenusContainer a, #nav li li a{
+	text-align:left;
+}
+
+/* All menu links on hover or focus */
+#nav a:hover, #nav a:focus, #subMenusContainer a:hover, #subMenusContainer a:focus, #nav a.mainMenuParentBtnFocused, #subMenusContainer a.subMenuParentBtnFocused{
+	background-color:#F6C739 ;
+	color:#FFF;
+}
+
+/* sub menu links on hover or focus */
+#subMenusContainer a:hover, 
+#subMenusContainer a:focus, 
+#nav a.mainMenuParentBtnFocused, 
+#subMenusContainer a.subMenuParentBtnFocused,
+#nav li a:hover,
+#nav li a:focus{
+	background-color:#F6C739 ;
+	color:#FFF;
+}
+
+/* Parent Sub Menu Links ---[javascript users only]*/
+.subMenuParentBtn{ 
+	background: url(../img/arrow_right.gif) right center no-repeat;  
+}
+
+/* Parent Sub Menu Links on hover or focus ---[javascript users only]*/
+.subMenuParentBtnFocused{ 
+	background: url(../img/arrow_right_over.gif) right center no-repeat;  
+}
+
+/* Parent Main Menu Links ---[javascript users only]*/
+.mainMenuParentBtn{	
+	 background: url(../img/arrow_down.gif) right center no-repeat; 
+}
+
+/* Parent Main Menu Links on hover or focus ---[javascript users only]*/
+.mainMenuParentBtnFocused{	
+	background: url(../img/arrow_down_over.gif) right center no-repeat; 
+}
+
+/* ----[ OLs ULs, LIs, and DIVs ]----*/
+
+/* Submenu Outer Wrapper - each submenu is inside a div with this class - javascript users only */
+.smOW{ 
+	display:none; 
+	position: absolute; 
+	overflow:hidden; 
+	/*the 2px left & right padding lets you have a 1px border 
+	  on the ul or ol inside since overflow is set to hidden*/
+	padding:0 2px;
+	margin:0 0 0 -2px;
+}
+
+
+/* All ULs and OLs */
+#nav, #nav ul, #nav ol, #subMenusContainer ul, #subMenusContainer ol { 
+	padding: 0;
+	margin: 0;
+	list-style: none;
+	line-height: 1em;
+}
+
+/* All submenu OLs and ULs */
+#nav ol, #nav ul, #subMenusContainer ul, #subMenusContainer ol {	
+	/*border around submenu goes here*/	 
+	background:#fff;	
+	border:1px solid #C3D46A;
+	left:0;
+}
+
+
+/* List items in main menu --[for non-javascript users this applies to submenus as well]  */
+#nav li { 
+	/*great place to use a background image as a divider*/
+	display:block;
+	list-style:none;
+	position:relative;
+	float:left;
+}
+
+#subMenusContainer li{
+	list-style: none;
+}
+
+/* main menu ul or ol elment */
+#nav{
+	display:block;
+	position: absolute;
+	list-style:none;
+	margin:0 0 0 0;
+	z-index:5;
+	top:15px;
+	left:50%;
+	text-align: center;
+	display:block;
+}
+
+#subMenusContainer{	display:block; 	position:absolute;	top:0;	left:0;	width:100%;	height:0;	overflow:visible;	z-index:1000000000; }
+
+
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/images/EC_logo_blue_multi_horizontal.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/images/EC_logo_blue_multi_horizontal.png
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/images/EC_logo_blue_multi_horizontal.png	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/images/EC_logo_blue_multi_horizontal.png	(revision 47450)

Property changes on: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/images/EC_logo_blue_multi_horizontal.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/images/opendoar.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/images/opendoar.png
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/images/opendoar.png	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/images/opendoar.png	(revision 47450)

Property changes on: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/images/opendoar.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/images/list_check.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/images/list_check.png
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/images/list_check.png	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/images/list_check.png	(revision 47450)

Property changes on: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/images/list_check.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/images/error.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/images/error.png
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/images/error.png	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/images/error.png	(revision 47450)

Property changes on: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/images/error.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/images/BG_Footer_f5.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/images/BG_Footer_f5.png
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/images/BG_Footer_f5.png	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/images/BG_Footer_f5.png	(revision 47450)

Property changes on: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/images/BG_Footer_f5.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/corneeded.jsp
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/corneeded.jsp	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/corneeded.jsp	(revision 47450)
@@ -0,0 +1,25 @@
+<%@ page contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<%@ taglib prefix="s" uri="/struts-tags"%>
+<html>
+<head>
+<link href="jsps/style.css" rel="stylesheet" type="text/css" media="screen" />
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title><s:text name="corneeded.title"/></title>
+</head>
+<body>
+<div id="wrapper">
+	<jsp:include page="menu.jsp"/>
+	<div id="page">
+	<div id="page-bgtop">
+		<div id="content">
+			<s:actionerror/>
+			<br>
+			<s:text name="corneeded.back"/>
+		</div>
+		<div style="clear: both;">&nbsp;</div>
+	</div>
+	</div>
+</div>
+</body>
+</html>
\ No newline at end of file
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/images/BG_Header_f5.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/images/BG_Header_f5.png
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/images/BG_Header_f5.png	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/images/BG_Header_f5.png	(revision 47450)

Property changes on: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/images/BG_Header_f5.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/forgotPassword.jsp
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/forgotPassword.jsp	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/forgotPassword.jsp	(revision 47450)
@@ -0,0 +1,43 @@
+<%@ page contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<%@ taglib prefix="s" uri="/struts-tags"%>
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title><s:text name="forgotPassword.title"/></title>
+<link href="jsps/favicon.ico" rel="shortcut icon" type="image/x-icon" />
+<link href="jsps/style.css" rel="stylesheet" type="text/css" media="screen" />
+</head>
+<body>
+<div id="wrapper">
+	<jsp:include page="menu.jsp"/>
+	<div id="page">
+        <div id="page-bgtop">
+             <div id="middle">
+                <div class="middle-b">
+                    <div class="background">
+                        <div id="main">
+                            <div id="main_container" class="clearfix">
+                                <div id="mainmiddle" class="floatbox">
+                                    <h1>Reset your password</h1>
+                                    <s:actionerror/>
+                                    <s:form action="sendPassword">
+                                        <s:textfield name="email" key="registration.email"/>
+                                        <s:submit/>
+                                    </s:form>
+                                    <s:text name="forgotPassword.message"/>
+                                </div>
+                            </div>
+                        </div>
+                    </div>
+                </div>
+            </div>
+        </div>
+        <!-- NMI This needs to be the same in all pages and the text is some properties file -->
+        <div id="footer"> 
+           <jsp:include page="footer.jsp"/>
+        </div>
+	</div>
+</div>
+</body>
+</html>
\ No newline at end of file
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/images/pluslogo_sm.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/images/pluslogo_sm.png
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/images/pluslogo_sm.png	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/images/pluslogo_sm.png	(revision 47450)

Property changes on: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/images/pluslogo_sm.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/images/compliant.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/images/compliant.png
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/images/compliant.png	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/images/compliant.png	(revision 47450)

Property changes on: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/images/compliant.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/footer.jsp
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/footer.jsp	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/footer.jsp	(revision 47450)
@@ -0,0 +1,7 @@
+<%@ taglib prefix="s" uri="/struts-tags"%>
+
+<div id="footer-bgcontent">
+	<p>
+		<s:text name="footer.text"/> 
+	</p>
+</div>
\ No newline at end of file
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/images/list_arrow.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/images/list_arrow.png
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/images/list_arrow.png	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/images/list_arrow.png	(revision 47450)

Property changes on: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/images/list_arrow.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/table-images/right.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/table-images/right.png
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/table-images/right.png	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/table-images/right.png	(revision 47450)

Property changes on: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/table-images/right.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/table-images/pattern.gif
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/table-images/pattern.gif
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/table-images/pattern.gif	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/table-images/pattern.gif	(revision 47450)

Property changes on: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/table-images/pattern.gif
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/images/arrow_left.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/images/arrow_left.png
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/images/arrow_left.png	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/images/arrow_left.png	(revision 47450)

Property changes on: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/images/arrow_left.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/images/box_alert.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/images/box_alert.png
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/images/box_alert.png	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/images/box_alert.png	(revision 47450)

Property changes on: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/images/box_alert.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/images/register.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/images/register.png
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/images/register.png	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/images/register.png	(revision 47450)

Property changes on: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/images/register.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/table-images/back.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/table-images/back.png
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/table-images/back.png	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/table-images/back.png	(revision 47450)

Property changes on: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/table-images/back.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/table-images/patternb-head.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/table-images/patternb-head.png
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/table-images/patternb-head.png	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/table-images/patternb-head.png	(revision 47450)

Property changes on: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/table-images/patternb-head.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/images/wrong.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/images/wrong.png
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/images/wrong.png	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/images/wrong.png	(revision 47450)

Property changes on: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/images/wrong.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/images/help2.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/images/help2.png
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/images/help2.png	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/images/help2.png	(revision 47450)

Property changes on: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/images/help2.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/table-images/patternb.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/table-images/patternb.png
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/table-images/patternb.png	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/table-images/patternb.png	(revision 47450)

Property changes on: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/table-images/patternb.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/table-images/botright.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/table-images/botright.png
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/table-images/botright.png	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/table-images/botright.png	(revision 47450)

Property changes on: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/table-images/botright.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/table-images/left.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/table-images/left.png
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/table-images/left.png	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/table-images/left.png	(revision 47450)

Property changes on: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/table-images/left.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/images/footer_bg_m.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/images/footer_bg_m.png
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/images/footer_bg_m.png	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/images/footer_bg_m.png	(revision 47450)

Property changes on: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/images/footer_bg_m.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/images/number-3.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/images/number-3.png
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/images/number-3.png	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/images/number-3.png	(revision 47450)

Property changes on: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/images/number-3.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/manuals/favicon.ico
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/manuals/favicon.ico
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/manuals/favicon.ico	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/manuals/favicon.ico	(revision 47450)

Property changes on: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/manuals/favicon.ico
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/images/external_link.gif
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/images/external_link.gif
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/images/external_link.gif	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/images/external_link.gif	(revision 47450)

Property changes on: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/images/external_link.gif
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/images/logo_openaire.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/images/logo_openaire.png
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/images/logo_openaire.png	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/images/logo_openaire.png	(revision 47450)

Property changes on: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/images/logo_openaire.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/images/help.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/images/help.png
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/images/help.png	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/images/help.png	(revision 47450)

Property changes on: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/images/help.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/menu.jsp
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/menu.jsp	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/menu.jsp	(revision 47450)
@@ -0,0 +1,160 @@
+<%@ page contentType="text/html;charset=UTF-8" pageEncoding="UTF-8"%>
+<%@ taglib prefix="s" uri="/struts-tags"%>
+
+<link href="jsps/ddmenu.css" rel="stylesheet" type="text/css" media="screen" />
+<script src="jsps/js/ddmenu.js" type="text/javascript"></script>
+
+
+	<div id="header">
+	<div id="topmenu">
+		<ul>
+				<s:if test="%{#session.email == null}">
+					<li   style="float: right;">
+						<a href='<s:url action="go2login" />'><s:text name="menu.account.login" /></a>
+					</li>
+				</s:if>
+				
+				<s:else>
+					<li  style="float: right;">
+						<a href='<s:url action="logout" />'><s:text name="menu.account.logout" />(<s:property value="#session.email" />)</a>
+					</li>
+					<li  style="float: right;">
+						<a href='<s:url action="userDetails" />'><s:text name="menu.account.edit" /></a>
+					</li>
+				</s:else>
+		</ul>
+	</div>
+			<s:if test="%{deployEnvironment.trim().toLowerCase().equals(\"lareferencia\")}">
+				<div id="logoLareferencia"></div>
+			</s:if>
+			<s:else>
+				<div id="logo">
+					<a id="logo" href="https://www.openaire.eu">
+					<img src="jsps/images/openairepluslogo.png" alt="openairepluslogo" width="171" height="120">
+					</a>
+				</div>
+			</s:else>
+		<nav id="ddmenu">
+			<ul>
+				<li><a href='<s:url action="welcome" />'><s:text name="menu.home" /></a></li>
+				
+<%-- 						<s:if test="%{repoMode.trim().toLowerCase().equals(\"dnet\")}"> --%>
+				<li>
+					<s:text name="home.manageRules" />
+					<div>
+					<div class="column">
+						<s:if test="%{#session.isAdmin != null && #session.isAdmin.equals(\"true\")}">
+						
+							<a href='<s:url action="populateRuleCategories" />'>
+								<s:text name="home.manageRules.addRule" />
+							</a>
+							<a href='<s:url action="populateRuleListForEdit" />'>
+								<s:text name="home.manageRules.editRule" />
+							</a>
+							<a href='<s:url action="populateRuleListForClone" />'>
+								<s:text name="home.manageRules.cloneRule" />
+							</a>
+							<a href='<s:url action="populateRuleList" />'>
+								<s:text name="home.manageRules.deleteRule" />
+							</a>
+						</s:if>
+						<s:else>
+							<a href='<s:url action="populateRuleListForEdit" />'>
+								<s:text name="home.manageRules.viewRule" />
+							</a>
+						</s:else>
+					</div>
+					</div>					
+				</li>
+				
+				<li>
+					<s:text name="home.manageRulesets" />
+					<div>
+					<div class="column">
+						<s:if test="%{#session.isAdmin != null && #session.isAdmin.equals(\"true\")}">
+							<a href='<s:url action="getRulesForSet" />'>
+								<s:text name="home.manageRulesets.createRuleSet" />
+							</a>
+							<a href='<s:url action="getRuleSets" />'>
+								<s:text name="home.manageRulesets.editRuleSet" />
+							</a>
+							<a href='<s:url action="getRuleSetsForDeletion" />'>
+								<s:text name="home.manageRulesets.deleteRuleSet" />
+							</a>
+						</s:if>
+						<s:else>
+							<a href='<s:url action="getRuleSets" />'>
+								<s:text name="home.manageRulesets.viewRuleSet" />
+							</a>
+						</s:else>
+					</div>
+					</div>					
+				</li>
+				
+				
+				<li>
+					<s:text name="home.manageJobs" />
+					<div>
+					<div class="column">
+					  <s:if test="%{#session.isAdmin != null && #session.isAdmin.equals(\"true\")}">
+						<a href='<s:url action="deleteJobs" />'>
+							<s:text name="home.manageJobs.deleteJobs" />
+						</a>
+						
+							<s:if test="%{!deployEnvironment.trim().toLowerCase().equals(\"lareferencia\")}">
+							<a href='<s:url action="registrationsReport" />'>
+								<s:text name="home.manageJobs.sendReport" />
+							</a>
+							</s:if>
+					  </s:if>
+<%-- 					  		<s:if test="%{!deployEnvironment.trim().toLowerCase().equals(\"lareferencia\")}"> --%>
+<%-- 								<a href='<s:url action="getRuleSetsForDeletion" />'> --%>
+<%-- 									<s:text name="home.manageJobs.viewStats" /> --%>
+<!-- 								</a> -->
+<%-- 							</s:if> --%>
+					</div>
+					</div>					
+				</li>
+				
+				<s:if test="%{!deployEnvironment.trim().toLowerCase().equals(\"lareferencia\")}">
+					<s:if test="%{#session.isAdmin != null && #session.isAdmin.equals(\"true\")}">
+<!-- 						<li> -->
+<%-- 							<s:text name="home.manageUsers" /> --%>
+<!-- 							<div> -->
+<!-- 							<div class="column"> -->
+<%-- 								<a href='<s:url action="getRulesForSet" />'> --%>
+<%-- 									<s:text name="home.manageUsers.addUser" /> --%>
+<!-- 								</a> -->
+<%-- 								<a href='<s:url action="getRuleSets" />'> --%>
+<%-- 									<s:text name="home.manageUsers.editUser" /> --%>
+<!-- 								</a> -->
+<%-- 								<a href='<s:url action="getRuleSetsForDeletion" />'> --%>
+<%-- 									<s:text name="home.manageUsers.makeAdmin" /> --%>
+<!-- 								</a> -->
+<!-- 							</div> -->
+<!-- 							</div>					 -->
+<!-- 						</li> -->
+					</s:if>
+				</s:if>
+				<li>
+					<s:text name="menu.about" />
+					<div>
+					<div class="column">
+						<a href="http://www.openaire.eu//support/faq/repman" target="_blank">
+							<s:text name="menu.about.faq" />
+						</a>
+						<a href='<s:url action="help" />'>
+							<s:text name="menu.about.help" />
+						</a>
+						<a href='<s:url action="feedback" />'>
+							<s:text name="menu.about.feedback" />
+						</a>
+					</div>
+					</div>
+				</li>
+
+			</ul>
+			</nav>
+			
+			<div style="clear:both"></div>
+		</div>
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/help.jsp
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/help.jsp	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/help.jsp	(revision 47450)
@@ -0,0 +1,43 @@
+<%@ page contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<%@ taglib prefix="s" uri="/struts-tags"%>
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title><s:text name="home.title"/></title>
+<link href="jsps/style.css" rel="stylesheet" type="text/css" media="screen" />
+
+ <link href="jsps/favicon.ico" rel="shortcut icon" type="image/x-icon" />
+</head>
+<body>
+<div id="wrapper">
+        <jsp:include page="menu.jsp"/>
+        <div id="page">
+        <div id="page-bgtop">
+                <div id="middle">
+            <div class="middle-b">
+                <div class="background">
+                                <div id="main">
+                        <div id="main_container" class="clearfix">
+                            <div id="mainmiddle" class="floatbox">
+                                    <h1><s:text name="instructions.welcome"/></h1>
+                                    <div class="entry">
+                                    	<s:text name="instructions.message"/>
+                                    </div>
+                             </div>
+                        </div>
+                    </div>
+                 </div>
+                        </div>
+                </div>
+                <div style="clear: both;">&nbsp;</div>
+        </div>
+    <!-- NMI This needs to be the same in all pages and the text is some properties file -->
+    <div id="footer">
+                <jsp:include page="footer.jsp"/>
+        </div>
+</div>
+</div>
+</body>
+</html>
+
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/manuals/OpenAIRE_registration.pdf
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/manuals/OpenAIRE_registration.pdf
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/manuals/OpenAIRE_registration.pdf	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/manuals/OpenAIRE_registration.pdf	(revision 47450)

Property changes on: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/manuals/OpenAIRE_registration.pdf
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/WEB-INF/log4j.properties
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/WEB-INF/log4j.properties	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/WEB-INF/log4j.properties	(revision 47450)
@@ -0,0 +1,36 @@
+log4j.rootLogger = WARN, R
+
+log4j.logger.eu.dnetlib = INFO
+log4j.logger.org.springframework = INFO, S
+log4j.additivity.org.springframework = false
+
+log4j.logger.com.opensymphony.xwork2.ognl.OgnlValueStack = FATAL
+log4j.logger.com.opensymphony.xwork2.ObjectFactory = FATAL
+
+log4j.appender.R=org.apache.log4j.RollingFileAppender
+log4j.appender.R.File=/var/log/dnet/validator/validator-admin.log
+log4j.appender.R.MaxFileSize=10MB
+log4j.appender.R.MaxBackupIndex=10
+log4j.appender.R.layout=org.apache.log4j.PatternLayout
+log4j.appender.R.layout.ConversionPattern= %d %p %t [%c] - %m%n
+
+log4j.appender.S=org.apache.log4j.RollingFileAppender
+log4j.appender.S.File=/var/log/dnet/validator/validator-admin-spring.log
+log4j.appender.S.MaxFileSize=10MB
+log4j.appender.S.MaxBackupIndex=10
+log4j.appender.S.layout=org.apache.log4j.PatternLayout
+log4j.appender.S.layout.ConversionPattern= %d %p %t [%c] - %m%n
+
+#log4j.rootLogger = ERROR, stdout
+#
+#log4j.logger.gr.uoa = INFO, stdout
+#log4j.logger.org.springframework = INFO, stdout
+#log4j.additivity.org.springframework = false
+#
+#log4j.logger.com.opensymphony.xwork2.ognl.OgnlValueStack = FATAL, stdout
+#log4j.logger.com.opensymphony.xwork2.ObjectFactory = FATAL, stdout
+#
+#log4j.appender.stdout=org.apache.log4j.ConsoleAppender
+#log4j.appender.stdout.Target=System.out
+#log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
+#log4j.appender.stdout.layout.ConversionPattern=%d %p %t [%c] - %m%n
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/java/eu/dnetlib/validator/admin/api/impls/ValidatorAdminApiImpl.java
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/java/eu/dnetlib/validator/admin/api/impls/ValidatorAdminApiImpl.java	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/java/eu/dnetlib/validator/admin/api/impls/ValidatorAdminApiImpl.java	(revision 47450)
@@ -0,0 +1,499 @@
+package eu.dnetlib.validator.admin.api.impls;
+
+import java.io.BufferedReader;
+import java.io.StringReader;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.Properties;
+
+import org.apache.log4j.Logger;
+import org.springframework.transaction.annotation.Propagation;
+import org.springframework.transaction.annotation.Transactional;
+
+import eu.dnetlib.domain.functionality.validator.Rule;
+import eu.dnetlib.domain.functionality.validator.RuleSet;
+import eu.dnetlib.domain.functionality.validator.StoredJob;
+import eu.dnetlib.validator.admin.actions.rules.FieldPair;
+import eu.dnetlib.validator.admin.api.ValidatorAdminAPI;
+import eu.dnetlib.validator.admin.api.ValidatorAdminException;
+import eu.dnetlib.validator.admin.constants.FieldNames;
+import eu.dnetlib.validator.admin.constants.FieldsAndDetails;
+import eu.dnetlib.validator.admin.constants.TypesAndTableNames;
+import eu.dnetlib.validator.admin.constants.fielddetails.FieldDetails;
+import eu.dnetlib.validator.commons.dao.jobs.JobsDAO;
+import eu.dnetlib.validator.commons.dao.rules.RulesDAO;
+import eu.dnetlib.validator.commons.dao.rules.RulesetsDAO;
+import eu.dnetlib.validator.commons.dao.users.UsersDAO;
+import eu.dnetlib.validator.commons.email.Emailer;
+
+
+/**
+ * 
+ * @author Nikon Gasparis
+ *
+ */
+
+@Transactional(propagation = Propagation.REQUIRED)
+public class ValidatorAdminApiImpl implements ValidatorAdminAPI {
+	
+	private JobsDAO jobsDao;
+	private RulesetsDAO rulesetsDao;
+	private RulesDAO rulesDao;
+	private UsersDAO usersDao;
+
+	private EmailBuilder emailBuilder;
+	
+	private Emailer emailer = null;
+	private List<String> masterAdmins = new ArrayList<String>();
+	private List<String> secondaryAdmins = new ArrayList<String>();
+	private String registrationsReportEmail;
+	private static Logger logger = Logger.getLogger(ValidatorAdminApiImpl.class);
+
+	public void start(){
+	}
+
+	@Override
+	public Rule getRule(int ruleId) throws ValidatorAdminException {
+		try {
+			logger.debug("getting rule with id: "+ruleId);
+			return rulesDao.get(ruleId);
+		} catch (Exception e) {
+			logger.error("Error getting rule ", e);
+			throw new ValidatorAdminException(e);
+		}
+		
+	}
+		
+	@Override
+	public List<FieldPair> getRuleValuePairs(Rule rule) throws ValidatorAdminException {
+		try {
+			logger.debug("getting rule value pairs");
+			boolean forUsage = false;
+			if( rule.getJob_type().equals("usage"))
+				forUsage = true;
+			List<String> labels = this.getRuleLabels(rule.getType(), forUsage, rule.isFor_cris());
+
+			List<FieldPair> ruleValues = new ArrayList<FieldPair>();
+			for (String fieldName : labels) {
+				FieldPair pair = new FieldPair();
+//				String fieldValue=null;
+				pair.setFieldName(fieldName);
+				if (fieldName.split("\\.")[1].equals(FieldNames.RULE_NAME)) {
+					pair.setFieldValue(rule.getName());
+				}
+				else if (fieldName.split("\\.")[1].equals(FieldNames.RULE_DESCRIPTION)) {
+					pair.setFieldValue(rule.getDescription());
+				}
+				else if (fieldName.split("\\.")[1].equals(FieldNames.RULE_MANDATORY)) {
+					pair.setFieldValue(Boolean.toString(rule.isMandatory()));
+				}				
+				else if (fieldName.split("\\.")[1].equals(FieldNames.RULE_WEIGHT)) {
+					pair.setFieldValue(Integer.toString(rule.getWeight()));
+				}
+				else if (fieldName.split("\\.")[1].equals(FieldNames.RULE_PROVIDER_INFORMATION)) {
+					pair.setFieldValue(rule.getProvider_information());
+				}
+				else{
+					pair.setFieldValue(rule.getConfiguration().getProperty(fieldName.split("\\.")[1]));
+				}				
+				logger.debug("getting rule value pairs-addpair: "+fieldName+"-"+rule.getConfiguration().getProperty(fieldName.split("\\.")[1]));
+				ruleValues.add(pair);
+			}
+			return ruleValues;
+		} catch (Exception e) {
+			logger.error("Error getting ruleValue pairs", e);
+			throw new ValidatorAdminException(e);
+		}
+
+	}	
+
+	
+	@Override
+	public List<Rule> getAllRules() throws ValidatorAdminException {
+		try {
+			logger.debug("getting all rules ");
+			return rulesDao.getAllRules();
+		} catch (Exception e) {
+			logger.error("Error getting all rules  to rule pair", e);
+			throw new ValidatorAdminException(e);
+		}	
+	}	
+	
+	@Override
+	@Transactional(propagation = Propagation.REQUIRED)
+	public String storeRule(Rule rule, String[] inputs, Boolean updateExisting) throws ValidatorAdminException {
+		try {
+			logger.debug("edit rule using the inputs of the user");
+			List<String> fields = new ArrayList<String>();
+			List<FieldDetails> generalFields = FieldsAndDetails.getFieldsAndDetails("Rules");
+			List<FieldDetails> usageFields = FieldsAndDetails.getFieldsAndDetails("usage_rules");
+			List<FieldDetails> crisFields = FieldsAndDetails.getFieldsAndDetails("cris_rules");
+			List<FieldDetails> subFields = FieldsAndDetails.getFieldsAndDetails(TypesAndTableNames.getTableNameOfType(rule.getType()));
+			for (FieldDetails field : generalFields) {
+				if (field.isForDet() && !field.getFieldName().equals(FieldNames.RULE_TYPE) && !field.getFieldName().equals(FieldNames.RULE_JOBTYPE))
+					fields.add(field.getFieldName());
+			}
+			if (subFields != null) {
+				for (FieldDetails field : subFields) {
+					if (field.isForDet())
+						fields.add(field.getFieldName());
+				}
+			}
+			if (rule.getJob_type().toLowerCase().contains("usage")) {
+				for (FieldDetails field : usageFields) {
+					if (field.isForDet())
+						fields.add(field.getFieldName());
+				}
+			}
+			if (rule.isFor_cris()) {
+				for (FieldDetails field : crisFields) {
+					if (field.isForDet())
+						fields.add(field.getFieldName());
+				}
+			}
+			Properties pros = new Properties();
+			logger.debug("Fields: " + fields);
+			for (int i = 0; i < inputs.length; i++) {
+				logger.debug("input-" + i + " : "+ inputs[i]);
+			}
+			for (int i = 0; i < inputs.length; i++) {
+				logger.debug("Field: " + fields.get(i) + " - input: " + inputs[i]);
+				if (fields.get(i).equals(FieldNames.RULE_NAME)) {
+					rule.setName(inputs[i]);
+				}
+				else if (fields.get(i).equals(FieldNames.RULE_DESCRIPTION)) {
+					rule.setDescription(inputs[i]);
+				}
+				else if (fields.get(i).equals(FieldNames.RULE_MANDATORY)) {
+					rule.setMandatory(Boolean.parseBoolean(inputs[i]));
+				}				
+				else if (fields.get(i).equals(FieldNames.RULE_WEIGHT)) {
+					rule.setWeight(Integer.parseInt(inputs[i]));
+				}
+				else if (fields.get(i).equals(FieldNames.RULE_PROVIDER_INFORMATION)) {
+					rule.setProvider_information(inputs[i]);
+				}
+				else if (fields.get(i).equals(FieldNames.RULE_CRIS_ENTITY)) {
+					rule.setEntity_type(inputs[i]);
+				}
+				else{
+					if (fields.get(i).equals(FieldNames.RULE_VOCABULARY_WORDS)) {
+						String words = "";
+						BufferedReader bf = new BufferedReader(new StringReader(inputs[i]));
+						String line;
+						while ((line = bf.readLine()) != null) {
+							words += ",";
+							words += line;
+						}
+						words = words.substring(1);
+						pros.setProperty(fields.get(i), words);
+					} else if (fields.get(i).equals(FieldNames.RULE_NOTCONNFUSEDFIELDS)) {
+						String ncfields = "";
+						BufferedReader bf = new BufferedReader(new StringReader(inputs[i]));
+						String line;
+						while ((line = bf.readLine()) != null)
+							ncfields += line + "\n";
+						ncfields = ncfields.substring(0, ncfields.lastIndexOf('\n'));
+						pros.setProperty(fields.get(i), ncfields);
+					
+					}else  
+						pros.setProperty(fields.get(i), inputs[i]);
+				}
+			}
+			rule.setConfiguration(pros);
+			
+			if (!updateExisting)
+				rule.setId(-1);
+			rulesDao.save(rule);
+			return null;
+
+		} catch (Exception e) {
+			logger.error("Error storing rule", e);
+			throw new ValidatorAdminException(e);
+		}
+	}
+		
+	@Override
+	public List<String> getRuleLabels(String ruleType, Boolean forUsage, Boolean forCris) throws ValidatorAdminException {
+		try {
+			logger.debug("getting rule labels for type " + ruleType);
+			List<String> labels = new ArrayList<String>();
+			List<FieldDetails> generalFields = FieldsAndDetails.getFieldsAndDetails("Rules");
+			List<FieldDetails> usageFields = FieldsAndDetails.getFieldsAndDetails("usage_rules");
+			List<FieldDetails> crisFields = FieldsAndDetails.getFieldsAndDetails("cris_rules");
+			List<FieldDetails> subFields = FieldsAndDetails.getFieldsAndDetails(TypesAndTableNames.getTableNameOfType(ruleType));
+			for (FieldDetails field : generalFields) {
+				if (field.isForDet() && !field.getFieldName().equals(FieldNames.RULE_TYPE) && !field.getFieldName().equals(FieldNames.RULE_JOBTYPE))
+					labels.add(field.getTableName() + "." + field.getFieldName());
+			}
+			if (subFields != null) {
+				for (FieldDetails field : subFields) {
+					if (field.isForDet())
+						labels.add(field.getTableName() + "." + field.getFieldName());
+				}
+			}
+			if (forUsage) {
+				for (FieldDetails field : usageFields) {
+					if (field.isForDet())
+						labels.add(field.getTableName().split("_")[1] + "." + field.getFieldName());
+				}
+			}
+			if (forCris) {
+				for (FieldDetails field :crisFields) {
+					if (field.isForDet())
+						labels.add(field.getTableName().split("_")[1] + "." + field.getFieldName());
+				}
+			}
+			return labels;
+		}catch (Exception e) {
+			logger.error("getting rule labels for type " + ruleType, e);
+			throw new ValidatorAdminException(e);
+		}			
+	}
+	
+	@Override
+	public List<RuleSet> getRuleSets() throws ValidatorAdminException {
+		try {
+			logger.debug("Getting all rule sets");
+			return rulesetsDao.getRuleSets();
+		} catch (Exception e) {
+			logger.error("Error getting all rule sets", e);
+			throw new ValidatorAdminException(e);
+		}
+	}
+	
+	@Override
+	public String deleteRule(int ruleId) throws ValidatorAdminException {
+		try {
+			logger.debug("deleting rule with id "+ruleId);
+			return rulesDao.delete(ruleId);
+		}
+		catch (Exception e) {
+			logger.error("Error deleting rule with id "+ruleId, e);
+			throw new ValidatorAdminException(e);
+		}
+	}
+	
+	@Override
+	public RuleSet getRuleSet(int setId) throws ValidatorAdminException {
+		try {
+			logger.debug("getting ruleSet with id: " + setId);
+			return rulesetsDao.get(setId);
+		} catch (Exception e) {
+			logger.error("Error getting ruleSet with id: " + setId, e);
+			throw new ValidatorAdminException(e);
+		}
+	}
+	
+	@Override
+	public void storeRuleSet(RuleSet ruleSet, boolean updateExisting) throws ValidatorAdminException {
+		try {
+			if (updateExisting)
+				logger.debug("editing rule set " + ruleSet.getId());
+			else
+				logger.debug("creating rule set " + ruleSet.getName());
+			
+			rulesetsDao.save(ruleSet);
+			
+			} catch (Exception e) {
+				logger.error("Error storing ruleSet " + ruleSet.getName(), e);
+			throw new ValidatorAdminException(e);
+		}
+		
+	}
+	
+	@Override
+	public void deleteRuleSet(int setId) throws ValidatorAdminException {
+		try {
+			logger.debug("deleting rule set " + setId);
+			rulesetsDao.delete(setId);
+		} catch (Exception e) {
+			logger.error("Error deleting rule set " + setId, e);
+			throw new ValidatorAdminException(e);
+		}
+	}	
+	
+	@Override
+	@Transactional(propagation = Propagation.REQUIRED)
+	public int deleteOldJobs(String date, String period, String mode) throws ValidatorAdminException {
+		int jobsDeleted = 0;
+		try {
+			logger.debug("Deleting jobs " + period + " than "+date);
+			if (mode.equalsIgnoreCase("uncompleted_only")) {
+				jobsDeleted = jobsDao.deleteUncompletedJobs();
+			}
+			else if (mode.equalsIgnoreCase("compTest_only"))
+				jobsDeleted = jobsDao.deleteOld(date, period, "Compatibility Test");
+			else if (mode.equalsIgnoreCase("all"))
+				jobsDeleted = jobsDao.deleteOld(date, period, null);
+			else if (mode.equalsIgnoreCase("import"))
+				jobsDao.importOldJobs();;
+		} catch (Exception e) {
+			logger.error("Error deleting old jobs", e);
+			throw new ValidatorAdminException(e);
+		}
+		return jobsDeleted;
+	}
+
+	public Emailer getEmailer() {
+		return emailer;
+	}
+	public JobsDAO getJobsDao() {
+		return jobsDao;
+	}
+
+	public void setJobsDao(JobsDAO jobsDao) {
+		this.jobsDao = jobsDao;
+	}
+
+	public RulesetsDAO getRulesetsDao() {
+		return rulesetsDao;
+	}
+
+	public void setRulesetsDao(RulesetsDAO rulesetsDao) {
+		this.rulesetsDao = rulesetsDao;
+	}
+
+	public RulesDAO getRulesDao() {
+		return rulesDao;
+	}
+
+	public void setRulesDao(RulesDAO rulesDao) {
+		this.rulesDao = rulesDao;
+	}
+
+	public UsersDAO getUsersDao() {
+		return usersDao;
+	}
+
+	public void setUsersDao(UsersDAO usersDao) {
+		this.usersDao = usersDao;
+	}
+
+	public void setEmailer(Emailer emailer) {
+		this.emailer = emailer;
+	}
+
+	
+	public String getRegistrationsReportEmail() {
+		return registrationsReportEmail;
+	}
+
+	public void setRegistrationsReportEmail(String registrationsReportEmail) {
+		this.registrationsReportEmail = registrationsReportEmail;
+	}
+
+	public EmailBuilder getEmailBuilder() {
+		return emailBuilder;
+	}
+
+	public void setEmailBuilder(EmailBuilder emailBuilder) {
+		this.emailBuilder = emailBuilder;
+	}
+
+	@Override
+	public boolean userIsMasterAdmin(String user)
+			throws ValidatorAdminException {
+		logger.debug("checking if user " + user + " is master admin");
+		if (this.masterAdmins.contains(user)) {
+			logger.debug("is master admin");
+			return true;
+		} else {
+			logger.debug("isn't master admin");
+			return false;
+		}
+	}
+	
+	@Override
+	public boolean userIsSecondaryAdmin(String user)
+			throws ValidatorAdminException {
+		logger.debug("checking if user " + user + " is secondary admin");
+		if (this.secondaryAdmins.contains(user)) {
+			logger.debug("is secondary admin");
+			return true;
+		} else {
+			logger.debug("isn't secondary admin");
+			return false;
+		}
+	}
+	
+
+	public void setMasterAdmins(String masterAdmins) {
+		String[] recps = masterAdmins.split(",");
+
+		for (String recp : recps) {
+			recp = recp.trim();
+			this.masterAdmins.add(recp);
+		}
+	}
+
+	public void setSecondaryAdmins(String secondaryAdmins) {
+		String[] recps = secondaryAdmins.split(",");
+
+		for (String recp : recps) {
+			recp = recp.trim();
+			this.secondaryAdmins.add(recp);
+		}
+	}
+
+	@Override
+	public String sendRegistrationsReport(String dateFrom, String dateTo, String month, String year) throws ValidatorAdminException {
+		try {
+			List <StoredJob> jobs = null;
+			Map<String, String> jobInfo = null;
+			List<Map<String, String>> passedJobsList = new ArrayList<Map<String, String>>();
+			List<Map<String, String>> failedJobsList = new ArrayList<Map<String, String>>();
+			
+			Map<String, StoredJob> passedJobsMap = new HashMap<String, StoredJob>();
+			Map<String, StoredJob> failedJobsMap = new HashMap<String, StoredJob>();
+			
+			logger.debug("Sending registrations Report for period: " + dateFrom + " to: " + dateTo);
+			jobs = jobsDao.getJobs(null, "Registration Request", null, null, dateFrom, dateTo);
+			for (StoredJob job : jobs) {
+				String key = job.getBaseUrl()+"|"+job.getDesiredCompatibilityLevel();
+				if (job.getContentJobScore() >= 50 && job.getContentJobScore() >= 50) {
+					failedJobsMap.remove(key);
+					passedJobsMap.put (key, job);
+				} else {
+					if (!passedJobsMap.containsKey(key)) {
+						failedJobsMap.put (key, job);
+					}
+				}
+			}
+			boolean oldFormat = false;
+			for (StoredJob job : passedJobsMap.values()) {
+				jobInfo = new HashMap<String, String>();
+				jobInfo.put("name", job.getOfficialName());
+				jobInfo.put("baseUrl", job.getBaseUrl());
+				jobInfo.put("email", job.getUserEmail());
+				jobInfo.put("compliance", job.getDesiredCompatibilityLevel());
+				if (job.getOfficialName() == null)
+					oldFormat = true;
+				passedJobsList.add(jobInfo);
+			}
+			for (StoredJob job : failedJobsMap.values()) {
+				jobInfo = new HashMap<String, String>();
+				jobInfo.put("name", job.getOfficialName());
+				jobInfo.put("baseUrl", job.getBaseUrl());
+				jobInfo.put("email", job.getUserEmail());
+				jobInfo.put("compliance", job.getDesiredCompatibilityLevel());
+				if (job.getOfficialName() == null)
+					oldFormat = true;
+				failedJobsList.add(jobInfo);
+			}
+			String report = emailBuilder.buildXml(passedJobsList, failedJobsList, month, oldFormat);
+			ArrayList<String> recps = new ArrayList<String>();
+			recps.add(registrationsReportEmail);
+			emailer.sendMail(recps,"Datasource Registrations -- " + month + " " + year, report, false, null);
+			logger.debug("email : " + report);
+			return report;
+		} catch (Exception e) {
+			logger.error("Error deleting old jobs", e);
+			throw new ValidatorAdminException(e);
+		}
+	}
+
+}
+
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/java/eu/dnetlib/validator/admin/api/ValidatorAdminAPI.java
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/java/eu/dnetlib/validator/admin/api/ValidatorAdminAPI.java	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/java/eu/dnetlib/validator/admin/api/ValidatorAdminAPI.java	(revision 47450)
@@ -0,0 +1,136 @@
+package eu.dnetlib.validator.admin.api;
+
+import java.util.List;
+
+import eu.dnetlib.domain.functionality.validator.Rule;
+import eu.dnetlib.domain.functionality.validator.RuleSet;
+import eu.dnetlib.validator.admin.actions.rules.FieldPair;
+
+/**
+ * 
+ * @author Nikon Gasparis
+ * 
+ */
+public interface ValidatorAdminAPI {
+
+	public List<Rule> getAllRules() throws  ValidatorAdminException;
+
+	public List<FieldPair> getRuleValuePairs(Rule rule) throws  ValidatorAdminException;
+	
+	public Rule getRule(int ruleId) throws ValidatorAdminException;
+	
+	public List<String> getRuleLabels(String ruleType, Boolean forUsage, Boolean forCris) throws ValidatorAdminException;
+	
+	public String storeRule(Rule rule, String[] inputs, Boolean updateExisting) throws ValidatorAdminException;
+	
+	public void storeRuleSet(RuleSet ruleSet, boolean updateExisting) throws ValidatorAdminException;	
+	
+	public void deleteRuleSet(int setId) throws  ValidatorAdminException;
+	
+	public String deleteRule(int ruleId) throws  ValidatorAdminException;
+
+	public List<RuleSet> getRuleSets() throws  ValidatorAdminException;
+
+	public RuleSet getRuleSet(int setId) throws  ValidatorAdminException;
+
+	public boolean userIsSecondaryAdmin(String user)
+			throws ValidatorAdminException;
+	
+	public boolean userIsMasterAdmin(String user)
+			throws ValidatorAdminException;
+			
+	public int deleteOldJobs(String date, String period, String target) throws ValidatorAdminException;
+
+	public String sendRegistrationsReport(String dateFrom, String dateTo, String month, String year) throws ValidatorAdminException;
+	
+
+//	public List<String> getConstantRuleTypes() throws  AdminAPIException;
+	
+//	public String[] getJobTypesAsArray() throws  AdminAPIException;
+
+
+	/*
+	public String getRuleSetName(int setId) throws  AdminAPIException;
+	
+
+	
+
+	public List<String> getRuleSetRuleIdsByJobType(int setId, String jobType)
+			throws  AdminAPIException;
+
+	public List<RuleS> getAllRulesForPresentationByJobType(String jobType)
+			throws  AdminAPIException;
+
+	public List<RuleS> getAllRulesForPresentationByJobTypeByRuleSet(
+			List<String> ruleSetRuleIds, String jobType)
+			throws  AdminAPIException;
+
+	public List<RuleD> getRulesForJobValidationByJobType(String jobType)
+			throws  AdminAPIException;
+
+	public List<RuleD> getRulesForJobValidationByJobTypeByRuleSet(int setId,
+			String jobType) throws  AdminAPIException;
+
+	public List<RuleStored> getAllRulesByJobType(String jobType)
+			throws  AdminAPIException;
+
+	public List<RulePair> getAllRulesToRulePair() throws  AdminAPIException;
+
+	public Map<String, List<JobSubmitted>> getJobsOfUser(String userName)
+			throws  AdminAPIException;
+
+
+
+	public Properties getRuleProperties(String ruleId)
+			throws  AdminAPIException;
+
+
+
+	public Serializable getRuleClassInstanceByType(String type, Properties pros,int id) throws  AdminAPIException;
+
+	public List<String> getAllRuleIdsByJobType(String jobType)
+			throws  AdminAPIException;
+
+	public List<RuleD> convertRuleIdsListToRuleDList(List<String> ruleIds);
+
+	public List<String> getValidationErrors(int jobId, int ruleId)
+			throws  AdminAPIException;
+
+	public JobSubmitted getJobSubmitted(String jobId) throws  AdminAPIException;
+
+	public List<TaskStored> getJobTasks(String jobId, JobSubmitted job)
+			throws  AdminAPIException;
+
+	public List<Entry> getJobSummary(String jobId, String groupBy) throws AdminAPIException;
+
+
+	public Map<String, String> getRuleSetsMap() throws AdminAPIException;
+
+
+	public void restore();
+
+	public List<String> getDistinctGroupByValues(String jobId) throws  AdminAPIException;
+
+	public String getFilteredScore(String jobId, String groupBy) throws  AdminAPIException;
+
+	public void preRegistrationValidations(JobForRegistration job) throws AdminAPIException;
+
+	public void storeJobForRegistration(JobForRegistration job) throws AdminAPIException;
+
+	public JobForRegistration getJobForRegistration(String activationId) throws AdminAPIException;
+
+	public void deleteJobForRegistration(String activationId) throws AdminAPIException;
+
+	public void cleanUncompletedJobs() throws AdminAPIException;
+
+	public Map<String, Set<Integer>> prepareCrisJobs(Set<Integer> chosenContentRules, Boolean referential, String selectedEntities) throws AdminAPIException;
+
+	public Map<String, String> getRuleSetsMap(String deployEnvironment)
+			throws AdminAPIException;
+
+	public Boolean isRepoAdmin(String user) throws AdminAPIException;
+	
+	*
+	*/
+
+}
\ No newline at end of file
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/manuals/administrator-manual.pdf
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/manuals/administrator-manual.pdf
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/manuals/administrator-manual.pdf	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/manuals/administrator-manual.pdf	(revision 47450)

Property changes on: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/manuals/administrator-manual.pdf
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/WEB-INF/web.xml
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/WEB-INF/web.xml	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/WEB-INF/web.xml	(revision 47450)
@@ -0,0 +1,78 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+	xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
+	xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
+	id="WebApp_ID" version="2.5">
+	<display-name>Validator Administration Panel</display-name>
+
+	<context-param>
+		<param-name>log4jConfigLocation</param-name>
+		<param-value>/WEB-INF/log4j.properties
+		</param-value>
+	</context-param>
+	<context-param>
+		<param-name>log4jRefreshInterval</param-name>
+		<param-value>1000</param-value>
+	</context-param>
+	<context-param>
+		<param-name>log4jExposeWebAppRoot</param-name>
+		<param-value>false</param-value>
+	</context-param>
+	<listener>
+		<listener-class>org.springframework.web.util.Log4jConfigListener</listener-class>
+	</listener>
+	<listener>
+		<listener-class>eu.dnetlib.validator.admin.config.ValidatorAdminContextLoaderListener</listener-class>
+	</listener>
+	<filter>
+	  <filter-name>struts2</filter-name>
+	  <filter-class>
+	    org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter
+	  </filter-class>
+	</filter>
+  
+	<filter-mapping>
+		<filter-name>struts2</filter-name>
+		<url-pattern>/*</url-pattern>
+	</filter-mapping>
+
+	<filter>
+	  <filter-name>CharacterEncodingFilter</filter-name>
+	  <filter-class>
+	    org.apache.catalina.filters.SetCharacterEncodingFilter
+	  </filter-class>
+	  <init-param>
+	    <param-name>encoding</param-name>
+	    <param-value>UTF-8</param-value>
+	  </init-param>
+	  <init-param>
+	    <param-name>ignore</param-name>
+	    <param-value>true</param-value>
+	  </init-param>
+	  
+	</filter>
+		<filter-mapping>
+	  <filter-name>CharacterEncodingFilter</filter-name>
+	  <url-pattern>/*</url-pattern>
+	</filter-mapping>
+	
+	<filter>
+	  <filter-name>AddDefaultCharsetFilter</filter-name>
+	  <filter-class>
+	    org.apache.catalina.filters.AddDefaultCharsetFilter
+	  </filter-class>
+	  <init-param>
+	    <param-name>encoding</param-name>
+	    <param-value>system</param-value>
+	  </init-param>
+	</filter>
+
+	<filter-mapping>
+	  <filter-name>AddDefaultCharsetFilter</filter-name>
+	  <url-pattern>/*</url-pattern>
+	</filter-mapping>
+	
+	<welcome-file-list>
+		<welcome-file>jsps/index.jsp</welcome-file>
+	</welcome-file-list>
+</web-app>
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/java/eu/dnetlib/validator/admin/api/impls/UserApiLocal.java
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/java/eu/dnetlib/validator/admin/api/impls/UserApiLocal.java	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/java/eu/dnetlib/validator/admin/api/impls/UserApiLocal.java	(revision 47450)
@@ -0,0 +1,135 @@
+package eu.dnetlib.validator.admin.api.impls;
+
+import java.math.BigInteger;
+import java.security.MessageDigest;
+import java.util.UUID;
+
+import org.apache.log4j.Logger;
+import org.springframework.transaction.annotation.Propagation;
+import org.springframework.transaction.annotation.Transactional;
+
+import eu.dnetlib.domain.functionality.UserProfile;
+import eu.dnetlib.validator.admin.api.UserApi;
+import eu.dnetlib.validator.commons.dao.users.UsersDAO;
+
+@Transactional(propagation = Propagation.REQUIRED)
+public class UserApiLocal implements UserApi {
+
+	private static Logger logger = Logger.getLogger(UserApiLocal.class);
+	private UsersDAO usersDao;
+
+	@Override
+	@Transactional()
+	public boolean activateUser(String activationId) throws Exception {
+		usersDao.activateUser(activationId);
+		return true;
+	}
+
+	@Override
+	@Transactional(propagation = Propagation.REQUIRED)
+	public String addUser(String username, String email, String password, String firstName, String lastName,  String institution) throws Exception {
+		String hashword;
+		MessageDigest md5 = MessageDigest.getInstance("MD5");
+		md5.update(password.getBytes());
+		BigInteger hash = new BigInteger(1, md5.digest());
+		hashword = hash.toString(16);
+		String activationId = UUID.randomUUID().toString();
+		UserProfile newUser = new UserProfile();
+		newUser.setEmail(email);
+		newUser.setPassword(hashword);
+		newUser.setFirstname(firstName);
+		newUser.setLastname(lastName);
+		newUser.setUsername(username);
+		newUser.setInstitution(institution);
+		newUser.setActivationId(activationId);
+		usersDao.save(newUser);
+		return activationId;
+	}
+
+	@Override
+	public boolean correctCreds(String email, String password) throws Exception {
+		String hashword;
+		MessageDigest md5 = MessageDigest.getInstance("MD5");
+		md5.update(password.getBytes());
+		BigInteger hash = new BigInteger(1, md5.digest());
+		hashword = hash.toString(16);
+		
+		if (usersDao.checkCorrectCreds(email, hashword)) {
+			logger.debug("Password verified");
+			return true;
+		} else {
+			logger.debug("no user found with email: " + email + " and pass: " + password + " (" + hashword + ")");
+
+			return false;
+		}
+	}
+
+	@Override
+	public boolean isAdmin(String email) throws Exception {
+		return usersDao.isAdmin(email);
+	}
+
+	@Override
+	public boolean isUserActivated(String email) throws Exception {
+		return usersDao.isActivated(email);
+	}
+
+	@Override
+	@Transactional(propagation = Propagation.REQUIRED)
+	public String prepareResetPassword(String email) throws Exception {
+		String uuid = UUID.randomUUID().toString();
+		usersDao.prepareResetPassword(uuid,email);
+		return uuid;
+	}
+
+	@Override
+	@Transactional(propagation = Propagation.REQUIRED)
+	public void resetPassword(String uuid, String password) throws Exception {
+		String hashword;
+		MessageDigest md5 = MessageDigest.getInstance("MD5");
+		md5.update(password.getBytes());
+		BigInteger hash = new BigInteger(1, md5.digest());
+		hashword = hash.toString(16);
+		usersDao.ResetPassword(uuid, hashword);
+	}
+
+	@Override
+	public boolean userExists(String email) throws Exception {
+		return usersDao.userExists(email);
+	}
+
+	@Override
+	public void editUser(UserProfile user) throws Exception {
+		this.usersDao.save(user);
+
+	}
+
+	@Override
+	public boolean usernameExists(String username) throws Exception {
+		return usersDao.usernameExists(username);
+	}
+
+	@Override
+	public String getEmailFromUsername(String username) throws Exception {
+		UserProfile user = usersDao.get(username);
+		if (user == null)
+			return null;
+		else
+			return usersDao.get(username).getEmail();
+	}
+
+	@Override
+	public UserProfile getUser(String userIdentifier) throws Exception {
+		return usersDao.get(userIdentifier);
+	}
+
+	public UsersDAO getUsersDao() {
+		return usersDao;
+	}
+
+	public void setUsersDao(UsersDAO usersDao) {
+		this.usersDao = usersDao;
+	}
+
+	
+}
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/java/eu/dnetlib/validator/admin/api/ValidatorAdminException.java
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/java/eu/dnetlib/validator/admin/api/ValidatorAdminException.java	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/java/eu/dnetlib/validator/admin/api/ValidatorAdminException.java	(revision 47450)
@@ -0,0 +1,29 @@
+package eu.dnetlib.validator.admin.api;
+
+public class ValidatorAdminException extends Exception {
+
+	/**
+	 * 
+	 * @author Nikon Gasparis
+	 *
+	 */
+	
+	private static final long serialVersionUID = -80175916822821147L;
+
+	public ValidatorAdminException() {
+		super();
+	}
+	
+	public  ValidatorAdminException(String message) {
+		super(message);
+	}
+
+	public  ValidatorAdminException(String message, Throwable cause) {
+		super(message, cause);
+	}
+
+	public  ValidatorAdminException(Throwable cause) {
+		super(cause);
+	}
+}
+
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/java/eu/dnetlib/validator/admin/actions/login/AdminInterceptor.java
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/java/eu/dnetlib/validator/admin/actions/login/AdminInterceptor.java	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/java/eu/dnetlib/validator/admin/actions/login/AdminInterceptor.java	(revision 47450)
@@ -0,0 +1,47 @@
+package eu.dnetlib.validator.admin.actions.login;
+
+import java.util.Map;
+
+import com.opensymphony.xwork2.Action;
+import com.opensymphony.xwork2.ActionInvocation;
+import com.opensymphony.xwork2.interceptor.Interceptor;
+
+import eu.dnetlib.validator.admin.api.UserApi;
+import eu.dnetlib.validator.admin.config.Constants;
+
+public class AdminInterceptor implements Interceptor {
+
+	private static final long serialVersionUID = -172948943490485824L;
+	private UserApi userAPI = null;
+
+//	private Logger logger = Logger.getLogger(AdminInterceptor.class);
+	
+	@Override
+	public void destroy() {
+
+	}
+
+	@Override
+	public void init() {
+
+	}
+
+	@Override
+	public String intercept(ActionInvocation actionInvocation) throws Exception {
+		Map<String, Object> session = actionInvocation.getInvocationContext().getSession();
+		String auth = (String) session.get(Constants.loggedInField);
+		
+		if (!userAPI.isAdmin(auth)) {
+			return Action.LOGIN;
+		}
+		return actionInvocation.invoke();
+	}
+
+	public UserApi getUserAPI() {
+		return userAPI;
+	}
+
+	public void setUserAPI(UserApi userAPI) {
+		this.userAPI = userAPI;
+	}
+}
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/fonts/DroidSans-webfont.ttf
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/fonts/DroidSans-webfont.ttf
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/fonts/DroidSans-webfont.ttf	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/fonts/DroidSans-webfont.ttf	(revision 47450)

Property changes on: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/fonts/DroidSans-webfont.ttf
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/java/eu/dnetlib/validator/admin/actions/login/Logout.java
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/java/eu/dnetlib/validator/admin/actions/login/Logout.java	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/java/eu/dnetlib/validator/admin/actions/login/Logout.java	(revision 47450)
@@ -0,0 +1,32 @@
+package eu.dnetlib.validator.admin.actions.login;
+
+import java.util.Map;
+
+import org.apache.struts2.interceptor.SessionAware;
+
+import com.opensymphony.xwork2.Action;
+
+import eu.dnetlib.validator.admin.actions.BaseValidatorAction;
+import eu.dnetlib.validator.admin.config.Constants;
+
+public class Logout extends BaseValidatorAction implements SessionAware {
+
+	private static final long serialVersionUID = -5304052800228900726L;
+	private Map<String, Object> session;
+
+	
+	public String execute() {
+		this.clearErrorsAndMessages();
+		session.remove(Constants.loggedInField);
+		session.remove("email");
+		session.remove("isAdmin");
+		this.addActionMessage("Logged-out successfully");
+		
+		return Action.SUCCESS;
+	}
+	
+	@Override
+	public void setSession(Map<String, Object> session) {
+		this.session = session;
+	}
+}
\ No newline at end of file
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/java/eu/dnetlib/validator/admin/actions/login/AuthenticationInterceptor.java
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/java/eu/dnetlib/validator/admin/actions/login/AuthenticationInterceptor.java	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/java/eu/dnetlib/validator/admin/actions/login/AuthenticationInterceptor.java	(revision 47450)
@@ -0,0 +1,35 @@
+package eu.dnetlib.validator.admin.actions.login;
+
+import java.util.Map;
+
+import com.opensymphony.xwork2.Action;
+import com.opensymphony.xwork2.ActionInvocation;
+import com.opensymphony.xwork2.interceptor.Interceptor;
+
+import eu.dnetlib.validator.admin.config.Constants;
+
+public class AuthenticationInterceptor implements Interceptor {
+
+	private static final long serialVersionUID = 977098762082596481L;
+
+	@Override
+	public void destroy() {
+
+	}
+
+	@Override
+	public void init() {
+
+	}
+
+	@Override
+	public String intercept(ActionInvocation actionInvocation) throws Exception {
+		Map<String, Object> session = actionInvocation.getInvocationContext().getSession();
+		String auth = (String) session.get(Constants.loggedInField);
+
+		if (auth == null) {
+			return Action.LOGIN;
+		}
+		return actionInvocation.invoke();
+	}
+}
\ No newline at end of file
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/java/eu/dnetlib/validator/admin/actions/login/LoginPage.java
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/java/eu/dnetlib/validator/admin/actions/login/LoginPage.java	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/java/eu/dnetlib/validator/admin/actions/login/LoginPage.java	(revision 47450)
@@ -0,0 +1,29 @@
+package eu.dnetlib.validator.admin.actions.login;
+
+import java.util.Map;
+
+import org.apache.struts2.interceptor.SessionAware;
+
+import eu.dnetlib.validator.admin.actions.BaseValidatorAction;
+
+@SuppressWarnings("serial")
+public class LoginPage extends BaseValidatorAction implements SessionAware{
+
+	@Override
+	public String execute() throws Exception {
+		this.clearErrorsAndMessages();
+		String email = (String) session.get("email");
+		
+		if ( email!=null && !email.trim().isEmpty() )
+			return INPUT;
+		
+		return SUCCESS;
+	}
+	
+	private Map<String, Object> session;
+	@Override
+	public void setSession(Map<String, Object> session) {
+		this.session = session;		
+	}
+
+}
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/java/eu/dnetlib/validator/admin/actions/users/EditUser.java
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/java/eu/dnetlib/validator/admin/actions/users/EditUser.java	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/java/eu/dnetlib/validator/admin/actions/users/EditUser.java	(revision 47450)
@@ -0,0 +1,66 @@
+package eu.dnetlib.validator.admin.actions.users;
+
+import java.util.Map;
+
+import org.apache.log4j.Logger;
+import org.apache.struts2.interceptor.SessionAware;
+
+import com.opensymphony.xwork2.Action;
+
+import eu.dnetlib.domain.functionality.UserProfile;
+import eu.dnetlib.validator.admin.actions.BaseValidatorAction;
+import eu.dnetlib.validator.admin.config.Constants;
+
+public class EditUser extends BaseValidatorAction implements SessionAware {
+
+	private static final long serialVersionUID = -362061491263257713L;
+	private Logger logger = Logger.getLogger(EditUser.class);
+
+	private UserProfile user;
+
+	private Map<String, Object> session;
+
+	public String execute() {
+		this.clearErrorsAndMessages();
+		try {
+			logger.debug("getting for edit user " + (String) session.get(Constants.loggedInField));
+				user = this.getUserAPI().getUser((String) session.get(Constants.loggedInField));
+			return Action.SUCCESS;
+		} catch (Exception e) {
+			logger.error("error getting for edit user " + (String) session.get(Constants.loggedInField), e);
+			this.addActionError(this.getText("generic.error"));
+			reportException(e);
+			return "exception";
+		}
+	}
+
+	public String edit() {
+		this.clearErrorsAndMessages();
+		try {
+			logger.debug("editing user " + (String) session.get(Constants.loggedInField));
+			this.getUserAPI().editUser(user);
+			this.addActionMessage(this.getText("editUser.success"));
+			return Action.SUCCESS;
+		} catch (Exception e) {
+			logger.error("error editing user " + (String) session.get(Constants.loggedInField), e);
+			this.addActionError(this.getText("generic.error"));
+			reportException(e);
+			return "exception";
+		}
+
+	}
+
+
+	public UserProfile getUser() {
+		return user;
+	}
+
+	public void setUser(UserProfile user) {
+		this.user = user;
+	}
+
+	@Override
+	public void setSession(Map<String, Object> session) {
+		this.session = session;
+	}
+}
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/fonts/OpenSans-Light-webfont.ttf
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/fonts/OpenSans-Light-webfont.ttf
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/fonts/OpenSans-Light-webfont.ttf	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/fonts/OpenSans-Light-webfont.ttf	(revision 47450)

Property changes on: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/fonts/OpenSans-Light-webfont.ttf
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/java/eu/dnetlib/validator/admin/actions/jobs/DatabaseCurator.java
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/java/eu/dnetlib/validator/admin/actions/jobs/DatabaseCurator.java	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/java/eu/dnetlib/validator/admin/actions/jobs/DatabaseCurator.java	(revision 47450)
@@ -0,0 +1,83 @@
+package eu.dnetlib.validator.admin.actions.jobs;
+
+import java.text.ParseException;
+import java.text.SimpleDateFormat;
+
+import org.apache.log4j.Logger;
+
+import com.opensymphony.xwork2.Action;
+
+import eu.dnetlib.validator.admin.actions.BaseValidatorAction;
+import eu.dnetlib.validator.admin.api.ValidatorAdminException;
+
+public class DatabaseCurator extends BaseValidatorAction {
+
+	private static final long serialVersionUID = -1868055729316139461L;
+	private static final Logger logger = Logger.getLogger(DatabaseCurator.class);
+	private String inDate = null;
+	private String mode, period;
+
+	public String execute() {
+		this.clearErrorsAndMessages();
+		int jobsDeleted = 0;
+		try {
+			jobsDeleted = this.getValidatorAdminAPI().deleteOldJobs(inDate, period, mode);
+		} catch (ValidatorAdminException e) {
+			logger.error("Error deleting old jobs", e);
+			this.addActionError(this.getText("generic.error"));
+			reportException(e);
+			return "input-problem";
+		}
+		
+		this.addActionMessage(jobsDeleted + " " + this.getText("manageJobs.deleteJobs.success"));
+		return Action.SUCCESS;
+	}
+	
+
+	public void validate() {
+		this.clearErrors();
+		if (!mode.equalsIgnoreCase("uncompleted_only")){
+			if (inDate == null) {
+				this.addActionError(this.getText("wrongFieldValue"));
+				return;
+			}
+			SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
+			if (inDate.trim().length() != dateFormat.toPattern().length()) {
+				this.addActionError(this.getText("wrongFieldValue"));
+				return;
+			}
+			dateFormat.setLenient(false);
+			try {
+				dateFormat.parse(inDate.trim());
+			} catch (ParseException pe) {
+				this.addActionError(this.getText("wrongFieldValue"));
+				return;
+			}
+		}
+	}
+
+	public String getInDate() {
+		return inDate;
+	}
+
+	public void setInDate(String inDate) {
+		this.inDate = inDate;
+	}
+
+	public String getMode() {
+		return mode;
+	}
+
+	public void setMode(String mode) {
+		this.mode = mode;
+	}
+
+	public String getPeriod() {
+		return period;
+	}
+
+	public void setPeriod(String period) {
+		this.period = period;
+	}
+
+}
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/fonts/maven_pro_regular-webfont.eot
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/fonts/maven_pro_regular-webfont.eot
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/fonts/maven_pro_regular-webfont.eot	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/fonts/maven_pro_regular-webfont.eot	(revision 47450)

Property changes on: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/fonts/maven_pro_regular-webfont.eot
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/java/eu/dnetlib/validator/admin/actions/users/ActivateAccount.java
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/java/eu/dnetlib/validator/admin/actions/users/ActivateAccount.java	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/java/eu/dnetlib/validator/admin/actions/users/ActivateAccount.java	(revision 47450)
@@ -0,0 +1,48 @@
+package eu.dnetlib.validator.admin.actions.users;
+
+import org.apache.log4j.Logger;
+
+import com.opensymphony.xwork2.Action;
+
+import eu.dnetlib.validator.admin.actions.BaseValidatorAction;
+
+public class ActivateAccount extends BaseValidatorAction {
+
+	private static final long serialVersionUID = 4680016183168923054L;
+	private Logger logger = Logger.getLogger(ActivateAccount.class);
+	
+	private String activationId;
+
+	public String execute() {
+		this.clearErrorsAndMessages();
+		try {
+			logger.debug("activating user account with activation id " + activationId);
+			if (this.getUserAPI().activateUser(this.getActivationId()))
+				this.addActionMessage(this.getText("registration.okAccountActivation"));
+			else
+				this.addActionMessage(this.getText("registration.okAccountAlreadyActivation"));
+			return Action.SUCCESS;
+		} catch (Exception e) {
+			logger.error("error activating user account with activation id " + activationId, e);
+			this.addActionError(this.getText("generic.error"));
+			reportException(e);
+			return "exception";
+		}
+	}
+
+	public void validate() {
+		this.clearErrors();
+		if (this.getActivationId() == null || this.getActivationId().length() == 0) {
+			this.addActionError(this.getText("noActivationId"));
+			return;
+		}
+	}
+
+	public String getActivationId() {
+		return activationId;
+	}
+
+	public void setActivationId(String activationId) {
+		this.activationId = activationId;
+	}
+}
\ No newline at end of file
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/java/eu/dnetlib/validator/admin/actions/rulesets/DeleteRuleSet.java
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/java/eu/dnetlib/validator/admin/actions/rulesets/DeleteRuleSet.java	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/java/eu/dnetlib/validator/admin/actions/rulesets/DeleteRuleSet.java	(revision 47450)
@@ -0,0 +1,39 @@
+package eu.dnetlib.validator.admin.actions.rulesets;
+
+
+import org.apache.log4j.Logger;
+
+import com.opensymphony.xwork2.Action;
+
+import eu.dnetlib.validator.admin.actions.BaseValidatorAction;
+
+public class DeleteRuleSet extends BaseValidatorAction {
+
+	private static final long serialVersionUID = 4858147485197818532L;
+	private int setId;
+	private static final Logger logger = Logger.getLogger(DeleteRuleSet.class);
+		
+	public int getSetId() {
+		return setId;
+	}
+
+	public void setSetId(int setId) {
+		this.setId = setId;
+	}
+
+	public String execute() {
+		this.clearErrorsAndMessages();
+		try {
+			logger.debug("deleting rule set "+setId);
+			this.getValidatorAdminAPI().deleteRuleSet(setId);
+			this.addActionMessage(this.getText("deleteRuleSet.success"));
+			return Action.SUCCESS;
+		}
+		catch(Exception e) {
+			logger.error("Error deleting ruleset", e);
+			this.addActionError(this.getText("generic.error"));
+			reportException(e);
+			return "exception";
+		}
+	}
+}
\ No newline at end of file
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/java/eu/dnetlib/validator/admin/actions/rulesets/CreateRuleSet.java
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/java/eu/dnetlib/validator/admin/actions/rulesets/CreateRuleSet.java	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/java/eu/dnetlib/validator/admin/actions/rulesets/CreateRuleSet.java	(revision 47450)
@@ -0,0 +1,87 @@
+package eu.dnetlib.validator.admin.actions.rulesets;
+
+import java.util.Set;
+
+import org.apache.log4j.Logger;
+
+import com.opensymphony.xwork2.Action;
+
+import eu.dnetlib.domain.functionality.validator.RuleSet;
+import eu.dnetlib.validator.admin.actions.BaseValidatorAction;
+
+public class CreateRuleSet extends BaseValidatorAction {
+
+	private static final long serialVersionUID = 5623461974078831740L;
+	
+	private Set<Integer> chosenContentRules = null;
+	private Set<Integer> chosenUsageRules = null;	
+	private String funct = null;
+	private RuleSet ruleSet;
+	private static final Logger logger = Logger.getLogger(CreateRuleSet.class);
+	
+	public String execute() {
+		this.clearErrorsAndMessages();
+		try {
+			logger.debug("creating a new rule set "+ruleSet.getName());
+			ruleSet.setUsageRulesIds(chosenUsageRules);
+			ruleSet.setContentRulesIds(chosenContentRules);
+			if(funct.equals("create")) {
+				this.getValidatorAdminAPI().storeRuleSet(ruleSet, false);
+				this.addActionMessage(this.getText("createRuleSet.success"));
+			}
+			else if(funct.equals("edit")) {
+				logger.debug("chosen content: " + chosenContentRules);
+				this.getValidatorAdminAPI().storeRuleSet(ruleSet, true);
+				this.addActionMessage(this.getText("createRuleSet.success"));
+			}
+			return Action.SUCCESS;
+		}
+		catch(Exception e) {
+			logger.error("Error creating/editing ruleset", e);
+			this.addActionError(this.getText("generic.error"));
+			reportException(e);
+			return "exception";
+		}
+	}
+	
+	public void validate() {
+		this.clearErrors();
+		if((chosenContentRules == null || chosenContentRules.isEmpty())||(chosenUsageRules == null || chosenUsageRules.isEmpty()))
+			this.addActionError(this.getText("createRuleSets.atLeastOneRule"));
+		if(funct == null)
+			this.addActionError(this.getText("uknownError"));
+	}
+	
+	public String getFunct() {
+		return funct;
+	}
+	public void setFunct(String funct) {
+		this.funct = funct;
+	}	
+
+	public Set<Integer> getChosenContentRules() {
+		return chosenContentRules;
+	}
+
+	public void setChosenContentRules(Set<Integer> chosenContentRules) {
+		this.chosenContentRules = chosenContentRules;
+	}
+
+	public Set<Integer> getChosenUsageRules() {
+		return chosenUsageRules;
+	}
+
+	public void setChosenUsageRules(Set<Integer> chosenUsageRules) {
+		this.chosenUsageRules = chosenUsageRules;
+	}
+
+	public RuleSet getRuleSet() {
+		return ruleSet;
+	}
+
+	public void setRuleSet(RuleSet ruleSet) {
+		this.ruleSet = ruleSet;
+	}
+	
+	
+}	
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/java/eu/dnetlib/validator/admin/actions/rules/PrepareAddRule.java
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/java/eu/dnetlib/validator/admin/actions/rules/PrepareAddRule.java	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/java/eu/dnetlib/validator/admin/actions/rules/PrepareAddRule.java	(revision 47450)
@@ -0,0 +1,101 @@
+package eu.dnetlib.validator.admin.actions.rules;
+
+import java.util.List;
+import java.util.Set;
+
+import org.apache.log4j.Logger;
+
+import com.opensymphony.xwork2.Action;
+
+import eu.dnetlib.domain.functionality.validator.Rule;
+import eu.dnetlib.validator.admin.actions.BaseValidatorAction;
+import eu.dnetlib.validator.admin.api.ValidatorAdminException;
+import eu.dnetlib.validator.admin.constants.TypesAndTableNames;
+
+public class PrepareAddRule extends BaseValidatorAction {
+
+	private static final long serialVersionUID = -8414397033694574297L;
+	private Logger logger = Logger.getLogger(PrepareAddRule.class);
+
+	private String type;
+	private Boolean forCris, forUsage = false;
+	private List<String> labels;
+	private String jobType;
+	private Set<String> entityTypes;
+	private List<Rule> rules;
+
+
+	public String execute() {
+		this.clearErrorsAndMessages();
+		logger.debug("preparing to add rule of type " + type );
+		logger.debug("cris:  " + forCris);
+		entityTypes = TypesAndTableNames.getCrisEntities().keySet();
+		
+		if (jobType.equals("usage"))
+			forUsage = true; 
+		try {
+			labels = getValidatorAdminAPI().getRuleLabels(type, forUsage, forCris);
+		} catch (ValidatorAdminException e) {
+			return Action.ERROR;
+		}
+		if (type.equals("ChainRule")) {
+			try {
+				rules = this.getValidatorAdminAPI().getAllRules();
+			} catch (ValidatorAdminException e) {
+				return Action.ERROR;
+			}
+		}
+
+		return Action.SUCCESS;
+	}
+	
+
+	public List<String> getLabels() {
+		return labels;
+	}
+
+	public void setLabels(List<String> labels) {
+		this.labels = labels;
+	}
+
+	public String getType() {
+		return type;
+	}
+
+	public String getJobType() {
+		return jobType;
+	}
+
+	public void setJobType(String jobType) {
+		this.jobType = jobType;
+	}
+
+
+	public void setType(String type) {
+		this.type = type;
+	}
+
+	public List<Rule> getRules() {
+		return rules;
+	}
+
+	public void setRules(List<Rule> rules) {
+		this.rules = rules;
+	}
+
+	public Set<String> getEntityTypes() {
+		return entityTypes;
+	}
+
+	public void setEntityTypes(Set<String> entityTypes) {
+		this.entityTypes = entityTypes;
+	}
+
+	public Boolean getForCris() {
+		return forCris;
+	}
+
+	public void setForCris(Boolean forCris) {
+		this.forCris = forCris;
+	}
+}
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/fonts/maven_pro_regular-webfont.ttf
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/fonts/maven_pro_regular-webfont.ttf
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/fonts/maven_pro_regular-webfont.ttf	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/fonts/maven_pro_regular-webfont.ttf	(revision 47450)

Property changes on: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/fonts/maven_pro_regular-webfont.ttf
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/fonts/maven_pro_regular-webfont.woff
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/fonts/maven_pro_regular-webfont.woff
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/fonts/maven_pro_regular-webfont.woff	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/fonts/maven_pro_regular-webfont.woff	(revision 47450)

Property changes on: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/fonts/maven_pro_regular-webfont.woff
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/fonts/droidsans.css
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/fonts/droidsans.css	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/fonts/droidsans.css	(revision 47450)
@@ -0,0 +1,13 @@
+/* Copyright (C) YOOtheme GmbH, YOOtheme Proprietary Use License (http://www.yootheme.com/license) */
+
+@font-face {
+	font-family: 'DroidSansRegular';
+	src: url('DroidSans-webfont.eot');
+	src: url('DroidSans-webfont.eot?#iefix') format('embedded-opentype'),
+		 url('DroidSans-webfont.woff') format('woff'),
+		 url('DroidSans-webfont.ttf') format('truetype'),
+		 url('DroidSans-webfont.svg#DroidSansRegular') format('svg');
+	font-weight: normal;
+	font-style: normal;
+}
+
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/instructions.jsp
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/instructions.jsp	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/instructions.jsp	(revision 47450)
@@ -0,0 +1,43 @@
+<%@ page contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<%@ taglib prefix="s" uri="/struts-tags"%>
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title><s:text name="instructions.welcome"/></title>
+<link href="jsps/style.css" rel="stylesheet" type="text/css" media="screen" />
+
+ <link href="jsps/favicon.ico" rel="shortcut icon" type="image/x-icon" />
+</head>	
+<body>
+<div id="wrapper">
+	<jsp:include page="menu.jsp"/>
+	<div id="page">
+	<div id="page-bgtop">
+		<div id="middle">
+            <div class="middle-b">
+                <div class="background">
+                
+        			<div id="main">
+                        <div id="main_container" class="clearfix">
+                            <div id="mainmiddle" class="floatbox">
+                                <h1 class="title"><s:text name="instructions.welcome"/></h1>
+                                <div class="entry">
+                                	<s:text name="instructions.message"/>
+                                </div>
+                             </div>
+                        </div>
+                    </div>
+                 </div>
+			</div>
+		</div>
+		<div style="clear: both;">&nbsp;</div>
+	</div>
+    <!-- NMI This needs to be the same in all pages and the text is some properties file -->
+    <div id="footer"> 
+		<jsp:include page="footer.jsp"/>
+	</div>
+</div>
+</div>
+</body>
+</html>
\ No newline at end of file
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/java/eu/dnetlib/validator/admin/actions/rules/DeleteRule.java
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/java/eu/dnetlib/validator/admin/actions/rules/DeleteRule.java	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/java/eu/dnetlib/validator/admin/actions/rules/DeleteRule.java	(revision 47450)
@@ -0,0 +1,48 @@
+package eu.dnetlib.validator.admin.actions.rules;
+
+
+import org.apache.log4j.Logger;
+
+import com.opensymphony.xwork2.Action;
+
+import eu.dnetlib.validator.admin.actions.BaseValidatorAction;
+import eu.dnetlib.validator.admin.api.ValidatorAdminException;
+
+public class DeleteRule extends BaseValidatorAction {
+
+	private static final long serialVersionUID = -2888943921398211370L;
+	private static final Logger logger = Logger.getLogger(DeleteRule.class);
+	private int ruleId;
+	
+	public String execute() {
+		this.clearErrorsAndMessages();
+		logger.debug("deleting rule");
+		String ret = null;
+		try {
+			logger.debug("deleting rule with id "+ruleId);
+			ret = this.getValidatorAdminAPI().deleteRule(ruleId);
+		}
+		catch (ValidatorAdminException e) {
+			logger.error("Error deleting rule with id "+ruleId, e);
+			this.addActionError(this.getText("generic.error"));
+			reportException(e);
+			return "exception";
+		}
+		
+		if (ret != null) {
+			this.addActionError(this.getText(ret));
+			return "input-problem";
+		}
+		this.addActionMessage(this.getText("deleteRule.success"));
+		return Action.SUCCESS;
+	}
+
+	public int getRuleId() {
+		return ruleId;
+	}
+
+	public void setRuleId(int ruleId) {
+		this.ruleId = ruleId;
+	}
+	
+}
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/java/eu/dnetlib/validator/admin/actions/rules/FieldPair.java
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/java/eu/dnetlib/validator/admin/actions/rules/FieldPair.java	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/java/eu/dnetlib/validator/admin/actions/rules/FieldPair.java	(revision 47450)
@@ -0,0 +1,24 @@
+package eu.dnetlib.validator.admin.actions.rules;
+
+public class FieldPair {
+
+	private String fieldName, fieldValue;
+
+	public String getFieldName() {
+		return fieldName;
+	}
+
+	public void setFieldName(String fieldName) {
+		this.fieldName = fieldName;
+	}
+
+	public String getFieldValue() {
+		return fieldValue;
+	}
+
+	public void setFieldValue(String fieldValue) {
+		this.fieldValue = fieldValue;
+	}
+	
+	
+}
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/fonts/YanoneKaffeesatz-Light-webfont.svg
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/fonts/YanoneKaffeesatz-Light-webfont.svg	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/fonts/YanoneKaffeesatz-Light-webfont.svg	(revision 47450)
@@ -0,0 +1,299 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" >
+<svg xmlns="http://www.w3.org/2000/svg">
+<metadata>
+This is a custom SVG webfont generated by Font Squirrel.
+Copyright   : Copyright c 2010 Yanone httpyanonedetypedesign All rights reservedThis Font Software is licensed under the SIL Open Font License Version 11This license is available with a FAQ at httpscriptssilorgOFL
+Designer    : Yanone
+Foundry     : Yanone
+Foundry URL : httpyanonedetypedesign
+</metadata>
+<defs>
+<font id="webfont6ZqOUGp9" horiz-adv-x="882" >
+<font-face units-per-em="2048" ascent="1638" descent="-410" />
+<missing-glyph horiz-adv-x="350" />
+<glyph unicode="&#xfb01;" horiz-adv-x="811" d="M23 926q0 63 4 84q2 14 28 14h123v129q0 92 23 164q20 66 55 106q29 35 82 58q45 20 90 26q39 6 96 6q209 0 209 -73q0 -33 -14 -68q-80 39 -193 39q-52 0 -86 -6q-31 -6 -71 -33q-39 -27 -58 -80q-20 -61 -20 -141v-127h172q0 -63 -4 -84q-2 -14 -25 -14h-143v-899 q0 -27 -29 -27h-84v926h-155zM584 0v969q0 39 20 47q18 8 94 8v-997q0 -20 -14 -23q-20 -4 -100 -4z" />
+<glyph unicode="&#xfb02;" horiz-adv-x="831" d="M20 926q0 63 5 84q2 14 28 14h123v129q0 117 31 194.5t82 110.5q53 35 94 43q47 10 98 10q133 0 236 -57v-1427q0 -27 -29 -27h-84v1397q-55 18 -117 18q-41 0 -65.5 -6t-59.5 -27q-37 -20 -55 -77q-18 -55 -18 -140v-141h205q0 -63 -5 -84q-2 -14 -24 -14h-176v-899 q0 -27 -27 -27h-86v926h-156z" />
+<glyph horiz-adv-x="518" />
+<glyph horiz-adv-x="518" />
+<glyph unicode=" "  horiz-adv-x="350" />
+<glyph unicode="&#x09;" horiz-adv-x="350" />
+<glyph unicode="&#xa0;" horiz-adv-x="350" />
+<glyph unicode="!" horiz-adv-x="385" d="M104 82q0 41 23 65q25 27 66 27q46 0 67 -24q23 -27 23 -68t-25 -66q-27 -27 -65 -26q-89 0 -89 92zM125 1415q0 20 29 27q28 6 116 6l-18 -1006q-3 -34 -25 -43q-18 -8 -88 -8z" />
+<glyph unicode="&#x22;" horiz-adv-x="495" d="M72 1544q0 57 6 60q27 12 110 2q2 -72 -10 -240q-12 -158 -22 -168q-63 -2 -64 -2q-3 22 -12 147q-8 113 -8 201zM307 1544q0 57 6 60q27 12 111 2q2 -72 -10 -240q-12 -158 -23 -168l-63 -2q-3 22 -13 147q-8 113 -8 201z" />
+<glyph unicode="#" d="M78 408q0 83 12 92q4 2 14 2h109l14 254h-149q0 83 12 92q4 2 14 2h127l9 147q4 20 20 23q25 4 82 4l-10 -174h231l8 147q4 20 21 23q25 4 84 4l-10 -174h143q0 -57 -4 -78q-4 -16 -25 -16h-118l-15 -254h162q0 -57 -4 -78q-4 -16 -25 -16h-137l-8 -162q-4 -20 -21 -23 q-25 -4 -84 -4l11 189h-232l-8 -162q-4 -20 -20 -23q-25 -4 -82 -4l10 189h-131zM313 502h232l14 254h-231z" />
+<glyph unicode="$" d="M135 72q0 12 12 43q14 35 25 45q76 -63 227 -64q233 0 234 221q0 66 -31 121q-29 51 -106 129l-230 215q-127 123 -127 236q0 100 72 166q70 63 201 76v198q0 31 22 41q25 10 80 10v-247q70 -2 125 -19q53 -14 73.5 -26.5t20.5 -20.5q0 -51 -33 -82q-72 47 -213 47 q-227 0 -227 -145q0 -80 107 -180l251 -234q133 -127 134 -287q0 -287 -271 -323v-193q0 -29 -22 -39q-25 -10 -78 -10v236q-82 4 -139.5 18t-83.5 35q-23 17 -23 33z" />
+<glyph unicode="%" horiz-adv-x="1456" d="M125 1073q0 377 289 377q143 0 207 -82q66 -84 65 -293q0 -379 -283 -379q-76 0 -118 15q-49 16 -86 53t-56 115q-18 75 -18 194zM233 1065q0 -164 39 -221.5t129 -57.5q178 0 179 289q0 166 -39 223q-41 59 -127 60q-181 0 -181 -293zM256 29l862 1421q66 -18 66 -51 q0 -10 -858 -1415q-70 14 -70 45zM772 360q0 377 289 377q143 0 207 -82q66 -84 65 -293q0 -379 -282 -378q-76 0 -119 14q-49 16 -86 53q-39 39 -58 115q-16 67 -16 194zM879 350q0 -162 41 -221q39 -57 129 -57q178 0 178 288q0 166 -39 224q-41 59 -127 59 q-182 0 -182 -293z" />
+<glyph unicode="&#x26;" horiz-adv-x="1048" d="M74 352q0 120 67 221q66 98 168 158q-168 279 -168 432q0 145 92 213q94 70 250 70q119 0 209 -29q86 -28 86 -61q0 -47 -26 -80q-100 70 -258 70q-109 0 -172 -41q-61 -39 -62 -156q0 -121 148 -361q139 -227 340 -462q35 115 34 249q0 154 -49 269q-49 117 -123 174 q80 12 215 12q106 0 181 -4q4 -16 4 -45q0 -27 -17 -39q-12 -10 -67 -10l-148 2q113 -131 113 -375q0 -190 -60 -328q113 -127 173 -159q-2 -25 -27 -60q-23 -31 -45 -30q-33 0 -162 143q-115 -145 -321 -145q-375 -1 -375 372zM190 346q0 -109 57.5 -184.5t194.5 -75.5 q162 0 250 125q-172 195 -330 436q-172 -98 -172 -301z" />
+<glyph unicode="'" horiz-adv-x="260" d="M72 1544q0 57 6 60q27 12 110 2q2 -72 -10 -240q-12 -158 -22 -168q-63 -2 -64 -2q-3 22 -12 147q-8 113 -8 201z" />
+<glyph unicode="(" horiz-adv-x="600" d="M141 659q0 180 35 359q35 176 82 282q45 102 102 193q53 84 89 119q37 37 45 37q43 0 61 -74q-295 -350 -299 -911q0 -344 98 -607q100 -266 201 -381q-18 -82 -63 -82q-14 0 -50 41q-31 37 -88 134q-55 96 -100 211q-47 121 -80 299q-33 175 -33 380z" />
+<glyph unicode=")" horiz-adv-x="600" d="M47 -324q45 57 90 136q51 90 96 200q53 133 82 295q31 172 31 357q-3 316 -92 546q-90 231 -207 365q18 74 62 74q12 0 45 -35q37 -39 86 -119q57 -90 102 -192q51 -117 84 -281q33 -166 33 -363q0 -201 -33 -372q-35 -180 -80 -299q-47 -123 -98 -213q-57 -102 -88 -137 q-37 -43 -49 -44q-46 0 -64 82z" />
+<glyph unicode="*" horiz-adv-x="964" d="M43 1051q-4 49 26.5 79.5t55.5 18.5l287 -158q2 -25 -8.5 -39t-28.5 -4zM154 602l243 272q27 27 58 -12l-199 -319q-25 -25 -55 -2q-33 22 -47 61zM424 1372q-2 14 8 20.5t33 8.5q45 4 78 -17l-31 -337q-3 -34 -55 -25zM508 870.5q8 12.5 35 20.5l229 -295 q18 -25 -12 -51q-29 -27 -74 -33l-178 332q-8 14 0 26.5zM563 940q-33 45 4 66l320 151q33 -23 39 -67q6 -41 -23 -52z" />
+<glyph unicode="+" d="M86 526v49q0 20 2 31q4 16 8 19q8 4 17 4h280v278q0 22 19 25q25 4 84 4v-307h307q0 -53 -4 -82q-2 -20 -25 -21h-278v-280q0 -20 -19 -23q-25 -4 -84 -4v307h-307z" />
+<glyph unicode="," horiz-adv-x="366" d="M92 -184q55 92 62 190q-41 25 -41 82q0 35 22 62q20 23 58 22q84 0 83 -96q0 -86 -53 -193q-51 -104 -84 -104q-37 0 -47 37z" />
+<glyph unicode="-" horiz-adv-x="591" d="M88 526v49q0 20 2 31q4 16 8 19q8 4 17 4h391q0 -53 -4 -82q-2 -20 -25 -21h-389z" />
+<glyph unicode="." horiz-adv-x="366" d="M100 82q0 41 23 65q25 27 63 27q90 0 90 -92q0 -37 -24 -66q-25 -27 -66 -26q-86 0 -86 92z" />
+<glyph unicode="/" horiz-adv-x="626" d="M20 -41l463 1573q10 25 27 31q12 4 98 4l-461 -1577q-10 -23 -28 -27q-25 -4 -99 -4z" />
+<glyph unicode="0" d="M74 606q0 309 90 467q88 156 289 156q195 0 276.5 -143.5t81.5 -452.5q0 -330 -86 -489.5t-287 -159.5q-199 0 -280 149q-84 151 -84 473zM195 592q0 -272 57 -387q59 -119 186 -119q139 0 197 133q59 137 59 420q0 252 -53 371q-51 117 -182 116q-141 0 -202.5 -135 t-61.5 -399z" />
+<glyph unicode="1" d="M74 84q0 23 323 22l29 1006q-39 -2 -266 -49q-16 23 -17 82q0 12 166 49t201 37q16 0 33 -8l-25 -1117h180l113 7q0 -113 -18 -113h-717q-2 12 -2 84z" />
+<glyph unicode="2" d="M74 43q0 4 1 11t1 9q0 10 6 23l8 16l16 25q8 12 17 29q61 100 158 211l174 196q74 80 133 187q57 102 57 202q0 80 -41 125q-39 43 -145 43q-206 0 -326 -80q-14 35 -14 86q0 16 43 41t129 43.5t184 18.5q170 0 232 -64q63 -68 63 -204q0 -111 -59 -226 q-57 -111 -136 -198l-182 -209q-111 -127 -170 -222h379l209 9q0 -115 -20 -115h-709q-8 14 -8 43z" />
+<glyph unicode="3" d="M100 -115q0 45 15 88q82 -70 217 -69q152 0 244 116.5t92 292.5q0 57 -19 101q-16 41 -51 67q-33 27 -76 41q-39 14 -90 21q-10 2 -100 6l-2 76q287 160 286 342q0 154 -182 153q-199 0 -317 -82q-12 27 -13 84q0 23 39 47.5t125 42.5q74 16 189 17q285 0 284 -238 q0 -199 -245 -370q131 -12 211 -84q82 -74 81 -224q0 -233 -126 -376q-125 -141 -334 -142q-106 0 -168 29q-60 28 -60 61z" />
+<glyph unicode="4" d="M78 403q0 102 155 394q160 297 299 422q20 18 54 18q27 0 61 -14l-6 -801l176 4l4 -43q0 -68 -37 -68h-143v-274q0 -29 -14 -37q-8 -4 -99 -4v315h-419q-31 31 -31 88zM180 422h348l19 661q-104 -115 -217 -307q-109 -186 -150 -354z" />
+<glyph unicode="5" d="M80 -123q0 53 14 94q76 -70 221 -69q186 0 272.5 133t86.5 348q0 311 -361 311q-39 0 -77 -6q-10 -2 -32 -4t-30 -4l-49 -12q-25 -6 -27 -6l58 567h626q0 -66 -10 -86q-8 -16 -53 -17l-465 4l-39 -354q55 14 143 15q70 2 140 -11q55 -10 137 -53q72 -37 115 -123t43 -207 q0 -602 -474 -602q-78 0 -133 14.5t-82 34.5q-24 19 -24 33z" />
+<glyph unicode="6" d="M78 608q0 224 37 387q37 160 102 258q63 94 150 140q84 43 182 43q223 0 223 -62q0 -39 -10 -80q-92 35 -213 35q-152 0 -252 -155q-98 -154 -111 -463q100 186 320 186q141 0 225 -98q84 -100 84 -299q0 -518 -389 -518q-86 0 -151.5 30.5t-102.5 79.5t-59 135 q-20 78 -27 170q-8 115 -8 211zM186 588q-3 -249 50 -375q53 -127 194 -127q131 0 203 106.5t72 280.5q0 317 -230 318q-181 0 -289 -203z" />
+<glyph unicode="7" d="M106 1229h738q-436 -717 -557 -1403q-115 0 -115 29q71 372 215 718q147 354 289 555q-111 -4 -535 -4q-35 1 -35 105z" />
+<glyph unicode="8" d="M82 371q0 132 74 239q72 106 184 162q-86 49 -131 90q-113 82 -113 238q0 170 100.5 258t252.5 88q356 0 356 -330q0 -207 -246 -354q76 -49 127 -92q133 -123 133 -299q0 -178 -92 -282.5t-264 -104.5q-190 0 -287 106q-94 103 -94 281zM188 377q0 -129 70 -207 q70 -80 199 -80q119 0 186 78q68 77 68 203q0 141 -121 245q-49 43 -141 97q-113 -41 -187 -133t-74 -203zM207 1106q0 -123 112 -201q25 -18 140 -86q240 117 239 293q0 127 -71 176q-74 51 -168 51q-109 0 -180.5 -59t-71.5 -174z" />
+<glyph unicode="9" d="M74 729q0 520 389 520q209 0 276 -139q70 -141 72 -485q-2 -424 -129 -631q-125 -205 -387 -205q-172 0 -172 49q0 51 8 76q68 -18 154 -18q385 0 415 616q-100 -186 -311 -186q-139 0 -227 102t-88 301zM184 748q0 -156 61.5 -236t174.5 -80q170 0 285 203v4 q0 131 -9 205q-10 86 -32 155q-25 76 -72 111t-127 35q-281 0 -281 -397z" />
+<glyph unicode=":" horiz-adv-x="366" d="M100 82q0 41 23 65q25 27 63 27q90 0 90 -92q0 -37 -24 -66q-25 -27 -66 -26q-86 0 -86 92zM100 791q0 41 23 65q25 27 63 27q90 0 90 -92q0 -37 -24 -66q-25 -27 -66 -27q-86 1 -86 93z" />
+<glyph unicode=";" horiz-adv-x="366" d="M86 -184q58 95 61 190q-41 25 -41 82q0 35 23 62q20 23 59 22q84 0 84 -96q0 -88 -55 -192.5t-84 -104.5q-39 0 -47 37zM102 791q0 37 25 65q25 27 61 27q90 0 91 -92q0 -37 -25 -66q-25 -27 -66 -27q-86 1 -86 93z" />
+<glyph unicode="&#x3c;" horiz-adv-x="817" d="M90 532q0 43 39 64l549 268q39 -37 39 -76q0 -27 -21 -34l-458 -226l487 -213q-4 -41 -18.5 -65.5t-34.5 -24.5q-10 0 -47 15l-514 225q-21 26 -21 67z" />
+<glyph unicode="=" d="M86 348v49q0 18 2 29q4 18 8 20q8 4 17 5h690q0 -59 -4 -84q-3 -18 -25 -19h-688zM86 705v49q0 20 2 30q4 16 8 19q8 4 17 4h690q0 -59 -4 -84q-3 -18 -25 -18h-688z" />
+<glyph unicode="&#x3e;" horiz-adv-x="817" d="M98 762q0 35 17 63q14 27 35 27q12 0 49 -14l514 -226q18 -31 18 -67q0 -45 -39 -64l-549 -270q-39 39 -39 76q0 29 21 37l459 225z" />
+<glyph unicode="?" horiz-adv-x="602" d="M51 1370q0 31 76 57q74 27 166 27q127 0 207 -67.5t80 -223.5q0 -80 -29 -159q-27 -72 -64 -127q-12 -18 -42.5 -58.5l-38.5 -50.5q-47 -63 -66 -96q-39 -59 -39 -140q0 -37 4 -57q6 -37 8 -39q4 -10 0 -20q-18 -23 -102 -13q-23 55 -23 125q0 96 48 179q20 37 90 131 q66 88 98 155q35 74 35 152q0 197 -197 196q-120 0 -196 -61q-15 31 -15 90zM178 82q0 41 23 65q25 27 63 27q90 0 90 -92q0 -37 -24 -66q-25 -27 -66 -26q-86 0 -86 92z" />
+<glyph unicode="@" horiz-adv-x="1542" d="M109 541q0 451 190 655q190 207 528 207q311 0 463 -160q150 -158 150 -518q0 -199 -27 -334q-29 -145 -63 -213q-37 -72 -86 -115q-43 -39 -84 -49q-37 -10 -68 -10q-78 0 -129 51q-78 -53 -227 -53q-123 -2 -195 61q-66 61 -63 248q2 180 86 254q83 74 221 74 q80 0 125 -16q0 23 1 66.5t3 62.5q2 90 -39 124.5t-125 34.5q-133 0 -219 -49q-12 25 -12 64q0 23 18 35q78 49 250 49q120 0 178 -56q57 -53 53 -186l-12 -440l-4 -94.5t-4 -73t-2 -31.5q40 -25 86 -25q25 0 49 13q20 10 57 53q31 37 58 102q25 61 43 174q18 114 18 259 q0 326 -113 458q-115 137 -389 137q-297 0 -450.5 -178t-153.5 -594q0 -215 27 -356q29 -152 74 -235q47 -88 120 -136q80 -51 154 -65q72 -14 188 -15q260 0 480 107q31 -52 30 -86q0 -25 -57 -51q-61 -29 -180 -53.5t-262 -24.5q-94 0 -158 6q-61 6 -143 29 q-77 22 -129 61q-53 41 -104.5 106.5t-82.5 166.5q-35 111 -51 237q-18 142 -18 322zM604 307q-4 -133 37 -174q43 -43 127 -43q55 0 100 25q43 23 47 65l13 367q-51 10 -101 10q-106 0 -163 -55q-56 -54 -60 -195z" />
+<glyph unicode="A" horiz-adv-x="890" d="M14 2l387 1421q4 18 39 19q31 0 49 -6l388 -1409q4 -16 -6.5 -22.5t-41.5 -6.5q-49 0 -67 2l-103 395h-426l-94 -372q-3 -25 -55 -25q-33 0 -70 4zM260 500h371l-99 379q-78 305 -86 401q-16 -137 -88 -401z" />
+<glyph unicode="B" horiz-adv-x="800" d="M113 0v1399q0 35 51 35h205q342 0 342 -312q0 -162 -62 -241q-59 -78 -139 -90q43 -4 76 -15q35 -12 78 -45q45 -35 67 -92q25 -61 25 -150q0 -121 -27 -206q-28 -89 -67 -142q-41 -53 -95 -86q-47 -29 -104 -43q-49 -12 -101 -12h-249zM225 102h137q117 0 191 88 q74 89 74 289q0 86 -19 139q-18 49 -59 76q-40 25 -80 31q-39 6 -107 6h-137v-629zM225 829h154q211 0 211 273q0 231 -219 231h-146v-504z" />
+<glyph unicode="C" horiz-adv-x="720" d="M80 649q0 205 24 359q25 156 62 237q37 84 92 133q53 47 107 64q45 14 112 14q94 0 141 -33q49 -35 50 -69q0 -37 -21 -70q-70 63 -153 64q-49 0 -86 -13q-39 -12 -80 -57q-43 -47 -70 -116.5t-45 -205.5q-16 -117 -16 -309q0 -156 20 -282q18 -113 55 -168.5t76 -76 t92 -20.5q70 0 125 27q59 29 88 63q20 -35 21 -71q0 -49 -76 -96q-72 -45 -178 -46q-55 0 -101 11q-41 10 -90 49q-51 41 -79 108q-27 61 -50 197q-20 123 -20 307z" />
+<glyph unicode="D" horiz-adv-x="845" d="M115 0v1399q0 35 51 35h205q203 0 301 -148q96 -143 96 -493q0 -244 -29 -394q-33 -166 -88 -245q-61 -86 -125 -119q-70 -35 -164 -35h-247zM227 109h138q41 0 84 14q35 12 75 55q39 41 64 117q27 78 41 203q16 137 16 303q0 287 -65.5 407.5t-210.5 120.5h-142v-1220z " />
+<glyph unicode="E" horiz-adv-x="688" d="M117 0v1405q0 29 26 29h490q0 -98 -10 -103q-2 -2 -11 -2h-385v-493h361q0 -76 -2 -88q-2 -16 -23 -17h-336v-627h404q0 -80 -2 -90q-2 -14 -23 -14h-489z" />
+<glyph unicode="F" horiz-adv-x="667" d="M117 0v1405q0 29 26 29h490q0 -92 -10 -99q-2 -2 -11 -2h-385v-495h361q0 -78 -2 -90q-2 -16 -23 -17h-336v-704q2 -27 -24 -27h-86z" />
+<glyph unicode="G" horiz-adv-x="815" d="M74 694q0 229 30 383q33 162 89 234q63 82 135 112q74 31 178 31q90 0 153 -29q61 -29 62 -65q0 -31 -16 -70q-71 55 -179 56q-113 0 -182.5 -51.5t-110 -199t-40.5 -395.5q0 -184 20 -323q18 -131 57 -187q41 -59 82 -79.5t109 -20.5q65 0 110 25q45 23 58 53v551h-201 v69q0 27 31 27h276v-721q-109 -115 -278 -114q-74 0 -133 16q-57 16 -107 61q-45 43 -78 127q-27 70 -47 207q-18 125 -18 303z" />
+<glyph unicode="H" d="M113 0v1405q0 23 14 25q20 4 98 4v-600h434v571q0 23 15 25q20 4 98 4v-1407q0 -20 -14 -23q-20 -4 -99 -4v727h-434v-700q0 -20 -14 -23q-20 -4 -98 -4z" />
+<glyph unicode="I" horiz-adv-x="335" d="M111 0v1376q0 45 16 51q15 6 98 7v-1407q0 -20 -14 -23q-20 -4 -100 -4z" />
+<glyph unicode="J" horiz-adv-x="616" d="M43 88q0 37 20 70q72 -74 173 -74q53 0 85.5 20.5t47.5 65.5q18 53 20 90q4 57 4 117v1001q0 43 15 49t98 7v-1090q0 -78 -4 -108q-8 -57 -21 -99q-14 -47 -43 -82q-27 -31 -76 -53q-51 -23 -114 -22q-100 0 -152 32q-53 35 -53 76z" />
+<glyph unicode="K" horiz-adv-x="802" d="M111 0v1405q0 23 14 25q20 4 98 4v-625l412 618q29 6 72 7q50 0 49 -21q0 -8 -6 -18l-412 -586q52 -33 118.5 -105.5t135.5 -174.5t115.5 -238t46.5 -268q0 -12 -6 -17q-12 -8 -37 -8q-57 0 -74 2q-83 280 -153.5 430.5t-159.5 239.5q-35 35 -101 65v-708q0 -20 -14 -23 q-20 -4 -98 -4z" />
+<glyph unicode="L" horiz-adv-x="671" d="M113 0v1393q0 31 14 37q10 4 100 4v-1328h406v-79q0 -27 -29 -27h-491z" />
+<glyph unicode="M" horiz-adv-x="1017" d="M113 0v1405q0 29 26 29h76l223 -719l72 -246l70 240l215 696q10 29 28 29h86v-1407q0 -20 -14 -23q-20 -4 -100 -4l4 592l18 577l-153 -512l-119 -348q-6 -18 -23 -18h-53l-115 366l-30 97l-66 215l-57 192q16 -377 20 -555l2 -579q0 -20 -14 -23q-20 -4 -96 -4z" />
+<glyph unicode="N" horiz-adv-x="931" d="M113 0v1405q0 29 26 29h80l246 -566q63 -172 254 -647q-10 170 -10 699v485q0 23 14 25q20 4 98 4v-1407q0 -27 -26 -27h-78l-252 575q-45 102 -250 642q8 -270 8 -689v-501q0 -18 -12 -23q-16 -4 -98 -4z" />
+<glyph unicode="O" horiz-adv-x="911" d="M78 727q0 391 94 559t299 168q200 0 283 -160q82 -158 82 -565q0 -414 -91 -579q-92 -170 -296.5 -170t-286.5 161q-84 164 -84 586zM203 692q0 -326 55 -461t195 -135q141 0 202 144q59 139 60 491q0 338 -55.5 473t-192.5 135q-135 0 -201 -149q-63 -146 -63 -498z" />
+<glyph unicode="P" horiz-adv-x="755" d="M113 0v1405q0 29 26 29h213q358 0 359 -390q0 -224 -99 -331q-98 -106 -268 -107h-121v-579q0 -18 -12 -23q-16 -4 -98 -4zM223 713h129q236 0 236 340q0 279 -226 278h-139v-618z" />
+<glyph unicode="Q" horiz-adv-x="911" d="M78 727q0 391 94 559t299 168q200 0 283 -160q82 -158 82 -565q0 -356 -68 -528q-70 -176 -219 -209q14 -90 45 -131q29 -39 80 -39q74 0 133 35q18 -25 18 -62q0 -33 -55 -51t-117 -18q-90 0 -145 59q-55 57 -86 195q-127 6 -199 75q-72 68 -108 230q-37 159 -37 442z M203 692q0 -326 55 -461t195 -135q141 0 202 144q59 139 60 491q0 338 -55.5 473t-192.5 135q-135 0 -201 -149q-63 -146 -63 -498z" />
+<glyph unicode="R" horiz-adv-x="774" d="M113 0v1405q0 29 26 29h213q358 0 359 -390q0 -326 -211 -411q172 -225 207 -602q2 -16 -9 -25q-8 -4 -47 -8q-47 0 -63 2q-43 414 -199 608q-10 -2 -45 -2h-121v-579q0 -18 -12 -23q-16 -4 -98 -4zM223 713h129q236 0 236 336q0 283 -226 282h-139v-618z" />
+<glyph unicode="S" horiz-adv-x="753" d="M68 88q0 43 32 80q76 -74 230 -74q246 0 245 250q0 80 -32 156q-31 70 -111 155l-221 232q-139 158 -139 291q0 125 92 200q90 76 252 76q131 0 192 -27q66 -29 66 -63q0 -37 -31 -68q-74 55 -219 56q-104 0 -170 -47q-63 -45 -64 -125q0 -94 113 -222l244 -251 q86 -92 115 -168q33 -86 32 -185q0 -170 -86 -272t-270 -102q-125 0 -199 34q-71 35 -71 74z" />
+<glyph unicode="T" horiz-adv-x="749" d="M14 1327v78q0 29 27 29h696v-80q0 -27 -26 -27h-283v-1300q0 -20 -14 -23q-20 -4 -99 -4v1327h-301z" />
+<glyph unicode="U" horiz-adv-x="935" d="M113 440v965q0 23 14 25q20 4 100 4v-998q0 -51 4 -112q2 -35 21 -93q15 -49 43 -79q25 -27 74 -48q45 -18 114 -18q143 0 230 43v1278q0 20 14 23q20 4 100 4v-1383q-47 -31 -141 -51t-203 -20q-92 0 -168 26q-70 25 -108 64q-37 37 -60 104q-23 70 -28 123 q-6 59 -6 143z" />
+<glyph unicode="V" horiz-adv-x="860" d="M12 1425q2 8 25 9h90l227 -897q35 -152 86 -435q45 279 80 435l207 856q6 41 33 41h92l-350 -1446q-74 -6 -88 -6q-43 0 -74 120l-326 1293q-3 12 -3 21q0 5 1 9z" />
+<glyph unicode="W" horiz-adv-x="1314" d="M12 1395q-1 7 -1 12q0 27 26 27h90l188 -899q35 -186 62 -398h8q12 160 55 398l158 784q6 39 33 39h80l180 -823q23 -117 27 -140l6 -42.5t8 -53.5t6 -47q2 -25 7 -62.5t7 -50.5h9q23 205 55 396l168 858q6 41 33 41h92l-289 -1446q-49 -6 -88 -6q-37 0 -62 104l-153 664 q-16 72 -62 389l-57 -387l-160 -764q-70 -4 -94 -4q-37 0 -61 122z" />
+<glyph unicode="X" horiz-adv-x="870" d="M20 0l345 743l-289 670q-6 16 10 19q12 2 119 2l104 -248q70 -162 137 -346q92 233 142 346l98 227q6 16 21 19q10 2 106 2l-297 -691l332 -720q3 -6 3 -11q0 -12 -20 -12h-116l-140 307l-143 338q-68 -170 -145 -336l-140 -295q-8 -14 -28 -14h-99z" />
+<glyph unicode="Y" horiz-adv-x="737" d="M12 1415q-2 4 -1 7q0 7 14 10q10 2 114 2l99 -293q43 -115 86 -262q49 -166 53 -193q14 106 139 457l90 270q2 12 21 17q20 4 102 4l-299 -848v-559q0 -18 -14 -23q-16 -4 -99 -4v582z" />
+<glyph unicode="Z" horiz-adv-x="802" d="M47 45q0 29 10 55l564 1231h-435q-55 0 -84 -4v78q0 29 29 29h610q12 -16 13 -39q0 -27 -13 -58l-569 -1235h461q78 0 108 13v-88q0 -27 -26 -27h-649q-19 16 -19 45z" />
+<glyph unicode="[" horiz-adv-x="847" d="M305 -406v2046q0 27 14 33q20 8 74 8h436q0 -66 -8 -86q-6 -16 -39 -16h-364v-1878h409q0 -74 -10 -90.5t-39 -16.5h-473z" />
+<glyph unicode="\" horiz-adv-x="618" d="M23 1532q-6 25 12 31q12 4 96 4l467 -1598q6 -23 -12 -26q-25 -4 -97 -4z" />
+<glyph unicode="]" horiz-adv-x="847" d="M20 -410q0 71 7 86q6 16 41 17h364v1884h-409q0 74 10 90t39 16h473v-2052q0 -29 -14.5 -35t-75.5 -6h-435z" />
+<glyph unicode="^" horiz-adv-x="878" d="M117 494l329 299l291 -267q20 -18 21 -37q0 -23 -17 -38q-14 -14 -41 -19l-264 215l-221 -190q-33 -23 -45 -23q-23 0 -37 17q-12 16 -16 43z" />
+<glyph unicode="_" horiz-adv-x="782" d="M33 -193q0 59 4 84q3 18 24 19h689v-49q0 -20 -2 -31q-2 -14 -10.5 -18.5t-14.5 -4.5h-690z" />
+<glyph unicode="`" horiz-adv-x="329" d="M0 1411q2 20 20 57q16 31 33 31q2 0 133 -108q117 -96 146 -131q-23 -66 -43 -66q-2 0 -139 102q-140 105 -150 115z" />
+<glyph unicode="a" horiz-adv-x="749" d="M74 285q0 104 24 174q23 68 72 102q45 33 94 45t115 12q109 0 168 -24v180q0 92 -41 127t-121 35q-184 0 -295 -51q-16 33 -16 65q0 29 16 41q35 23 125 37q98 16 197 16q125 0 186 -57q59 -55 59 -190v-123q0 -324 -10 -621q-119 -74 -278 -73q-39 0 -88 4 q-31 2 -78 22.5t-68 48.5q-27 35 -43 90q-18 60 -18 140zM190 289q0 -72 15 -115q16 -47 45 -65q31 -18 59 -25q27 -6 76 -6q104 0 152 45q10 160 10 387q-53 20 -133 20q-104 0 -164 -47t-60 -194z" />
+<glyph unicode="b" horiz-adv-x="819" d="M119 41v1409q0 37 20 47q16 8 92 8v-544q106 84 254 83q131 -2 199 -92q70 -92 70 -301q0 -178 -27 -299q-29 -131 -65 -196q-39 -70 -95 -113q-47 -37 -104 -51q-49 -12 -109 -12q-157 0 -235 61zM231 119q39 -37 138 -37q262 0 262 539q0 180 -45 249.5t-150 69.5 q-125 0 -205 -80v-741z" />
+<glyph unicode="c" horiz-adv-x="675" d="M82 489q0 141 24 246q25 106 58 162q34 58 86 92q57 37 96 45q51 10 105 10q74 0 123 -24.5t49 -56.5q0 -37 -15 -68q-70 47 -159 47q-43 0 -70 -8q-31 -9 -68 -37q-33 -25 -59 -74q-23 -41 -39 -135q-16 -92 -16 -205q0 -237 55 -319t168 -82q121 0 188 61 q14 -31 15 -65q0 -37 -68 -67.5t-166 -30.5q-74 0 -127 18q-51 18 -94 70q-45 53 -66 157q-20 100 -20 264z" />
+<glyph unicode="d" horiz-adv-x="821" d="M84 483q0 281 94 420q95 141 246 141q104 0 168 -45v451q0 39 20 47q18 8 95 8v-1464q-121 -61 -291 -61q-76 0 -131 16q-51 16 -103 65q-49 49 -73 152q-25 104 -25 270zM205 494q0 -174 31 -267q31 -94 73 -118q41 -23 117 -27q102 0 168 41l-2 780q-53 41 -135 41 q-109 0 -180.5 -108.5t-71.5 -341.5z" />
+<glyph unicode="e" horiz-adv-x="768" d="M78 457q0 145 22 262q22 111 56 172q33 57 86 96t98 47q51 10 104 10q258 0 258 -323q0 -156 -20 -246q-182 -37 -489 -37q0 -137 32 -223q31 -78 78 -102q45 -23 129 -23q150 0 246 70q14 -35 14 -80q0 -37 -84 -68q-88 -33 -194 -32q-80 0 -135 18q-57 18 -104.5 65.5 t-72 145.5t-24.5 248zM195 532q270 0 389 29q8 57 8 137q-2 127 -37 187q-33 57 -121 57q-49 0 -80 -14q-39 -18 -71 -54q-35 -37 -60 -124q-26 -91 -28 -218z" />
+<glyph unicode="f" horiz-adv-x="505" d="M31 926q0 63 4 84q2 14 26 14h125v129q0 96 21 160q20 66 53 104q25 31 80 60q45 25 88 30q40 6 92 6q176 0 176 -63q0 -25 -12 -64q-68 25 -152 25q-51 0 -83 -8q-45 -10 -74 -31q-37 -25 -56 -78q-20 -61 -20 -137v-133h213q0 -63 -4 -84q-2 -14 -25 -14h-184v-899 q0 -27 -29 -27h-84v926h-155z" />
+<glyph unicode="g" horiz-adv-x="823" d="M68 -186q0 72 49 139t119 119q-68 20 -103 45q-37 27 -33 63q0 78 129 180q-129 80 -129 314q0 184 93 276q94 94 245 94q43 0 92 -12h254q12 -31 13 -53q0 -45 -47 -45q-52 0 -111 12q113 -74 113 -254q0 -170 -80 -274q-78 -102 -252 -103q-74 0 -117 15 q-86 -71 -86 -117q0 -47 297 -84q135 -18 203 -66q72 -49 71 -159q0 -127 -102 -217t-295 -90q-323 0 -323 217zM182 -164q0 -68 45 -100q47 -35 174 -35q131 0 201 57q72 59 72 131q0 78 -53 109q-47 29 -177 41q-102 12 -114 14q-59 -41 -103 -102q-45 -64 -45 -115z M217 676q0 -131 43 -199q45 -70 168 -69q104 0 158 86q53 88 53 221q0 242 -205 241q-96 0 -158 -71q-59 -68 -59 -209z" />
+<glyph unicode="h" horiz-adv-x="808" d="M111 0v1450q0 37 20 47q16 8 92 8v-549q109 88 260 88q137 0 186.5 -67.5t49.5 -206.5v-743q0 -20 -14 -23q-20 -4 -101 -4v745q0 92 -35 144q-34 49 -129 49q-129 0 -217 -82v-829q0 -20 -14 -23q-20 -4 -98 -4z" />
+<glyph unicode="i" horiz-adv-x="348" d="M113 1370q0 94 67 94q63 0 64 -92q-4 -96 -70 -96q-63 0 -61 94zM117 0v969q0 39 20 47q18 8 96 8v-997q0 -18 -16 -23q-20 -4 -100 -4z" />
+<glyph unicode="j" horiz-adv-x="370" d="M-231 -305q0 39 18 63q90 -53 197 -53q94 0 120 55q27 53 27 187v1022q0 39 19 47q16 8 94 8v-1100q0 -156 -53.5 -239.5t-198.5 -83.5q-102 0 -164 28q-59 29 -59 66zM127 1370q0 94 68 94q63 0 63 -92q-4 -96 -70 -96q-63 0 -61 94z" />
+<glyph unicode="k" horiz-adv-x="800" d="M117 0v1450q0 37 20 47q16 8 92 8v-585q59 59 139.5 91.5t149.5 32.5q180 0 180 -180q0 -61 -24.5 -120.5t-65.5 -100.5q-40 -40 -67 -61q-33 -25 -58 -39q82 -14 156 -92q72 -76 94 -220q6 -43 6 -94t-6 -108q-4 -25 -20 -27q-10 -2 -107 -2q8 57 8 127q0 98 -18 162 q-35 117 -104 157q-50 29 -101 30q-20 0 -41 -5l-121 -45v-399q0 -18 -14 -23q-16 -4 -98 -4zM229 514q346 119 346 322q0 104 -104 104q-131 0 -242 -131v-295z" />
+<glyph unicode="l" horiz-adv-x="346" d="M117 0v1450q0 37 18 47q16 8 94 8v-1478q0 -20 -14 -23q-20 -4 -98 -4z" />
+<glyph unicode="m" horiz-adv-x="1210" d="M117 0v977q154 68 303 67q141 0 196 -73q113 74 261 73q141 0 186 -69q43 -68 43 -227v-721q0 -20 -14 -23q-20 -4 -99 -4v754q0 109 -26 147q-29 41 -109 41q-104 0 -188 -55v-860q0 -18 -11 -23h-2q-16 -4 -100 -4v801q-3 77 -31 110q-27 33 -108 33q-92 0 -189 -45 v-872q0 -18 -16 -23q-20 -4 -96 -4z" />
+<glyph unicode="n" horiz-adv-x="819" d="M113 0v973q168 72 331 71q158 0 220 -65q61 -65 61 -215v-737q0 -20 -14 -23q-20 -4 -101 -4v733q0 117 -34.5 164t-135.5 47q-125 0 -215 -47v-870q0 -20 -14 -23q-20 -4 -98 -4z" />
+<glyph unicode="o" horiz-adv-x="782" d="M63 510q0 535 343 534q164 0 241 -114q76 -113 76 -418q0 -532 -340 -532q-83 0 -135 18q-55 18 -98 72q-43 51 -66 163q-21 103 -21 277zM184 502q0 -164 27 -266q25 -96 65 -127t111 -31q215 0 215 438q0 254 -47 340q-49 88 -154 88q-106 0 -161.5 -98t-55.5 -344z " />
+<glyph unicode="p" horiz-adv-x="817" d="M117 -356v1319q131 82 295 81q168 0 254 -96q84 -92 84 -336q0 -154 -23 -278q-20 -115 -57 -184q-35 -66 -82 -107q-43 -37 -88 -51q-40 -12 -86 -12q-126 0 -185 73v-448q-33 -8 -59 -8q-53 0 -53 47zM229 176q55 -94 154 -94q244 6 244 508q0 209 -52 280 q-51 74 -169 74q-100 0 -177 -51v-717z" />
+<glyph unicode="q" horiz-adv-x="833" d="M82 453q0 301 110.5 446t303.5 145q135 0 223 -63v-1337q0 -33 -12 -41q-10 -8 -58 -9h-24q-6 0 -12.5 1.5t-8.5 1.5v491q-74 -109 -229 -108q-293 0 -293 473zM205 451q0 -369 209 -369h9q53 0 101 31q52 34 80 98v696q-47 37 -133 37q-266 1 -266 -493z" />
+<glyph unicode="r" horiz-adv-x="561" d="M113 0v954q133 90 274 90q147 0 148 -71q0 -37 -17 -68q-51 31 -115 31q-100 0 -176 -57v-852q0 -20 -14 -23q-20 -4 -100 -4z" />
+<glyph unicode="s" horiz-adv-x="751" d="M80 68q0 35 24 69q90 -53 224 -53q221 0 221 158q0 113 -115 198l-215 156q-82 57 -108.5 104.5t-26.5 110.5q0 109 88 170q92 63 246 63q80 0 151 -20q63 -18 86 -40.5t23 -41.5q0 -35 -27 -63q-102 66 -223 65q-96 0 -155.5 -35t-59.5 -98q0 -76 100 -143l222 -158 q139 -115 139 -254q0 -135 -88 -205q-90 -72 -248 -71q-113 0 -188 26q-70 25 -70 62z" />
+<glyph unicode="t" horiz-adv-x="608" d="M55 924q0 63 4 84q4 16 23 16h125v324q0 33 18.5 39t93.5 6v-369h248q0 -63 -4 -84q-4 -16 -20 -16h-224v-629q0 -59 5 -113q2 -37 26 -71q23 -31 64 -31q66 0 133 33q8 -31 8 -60q0 -37 -47 -55q-49 -18 -119 -18q-59 0 -98 22q-37 23 -55 70q-16 43 -23 96 q-6 49 -6 129v627h-152z" />
+<glyph unicode="u" horiz-adv-x="849" d="M119 346v649q0 25 14 27q10 2 100 2v-692q0 -147 39 -199q41 -53 158 -53q111 0 188 47v868q0 23 15 25q20 4 98 4v-973q-139 -72 -311 -71.5t-238 83.5q-63 82 -63 283z" />
+<glyph unicode="v" horiz-adv-x="727" d="M53 987q-3 9 -3 15q0 13 11 18q10 4 107 4l88 -356q37 -143 57 -244l43 -215l17 -82h2q47 281 108 543l80 325q3 22 19 25q20 4 98 4l-262 -1036q-45 -4 -76 -4q-23 0 -51 102z" />
+<glyph unicode="w" horiz-adv-x="1130" d="M49 995q-3 22 12 25q20 4 107 4l82 -373q57 -283 96 -510h6q16 94 88 445l72 375q4 29 39 28h74l88 -407q4 -14 21.5 -87t25.5 -116l19.5 -96.5l15.5 -77.5l10 -64h8q15 163 86 510l70 344q2 20 20 25q20 4 94 4q-227 -1036 -233 -1036q-45 -4 -70 -4q-14 0 -32 30 q-16 27 -29 82l-33 142q-70 287 -119 571q-57 -346 -110 -573l-56 -248q-78 -4 -88 -4q-29 0 -49 100z" />
+<glyph unicode="x" horiz-adv-x="892" d="M45 0l332 537l-285 467q-6 16 10 18q12 2 109 2l104 -164l140 -244l143 248l92 140q10 16 23 18q10 2 106 2l-297 -479l320 -516q7 -10 7 -17t-9 -8q-20 -4 -121 -4l-107 164q-71 114 -172 295q-20 -39 -170 -297l-92 -139q-8 -14 -28 -19q-25 -4 -105 -4z" />
+<glyph unicode="y" horiz-adv-x="755" d="M2 -334q0 39 21 66q61 -29 124 -29q127 0 187 264l-266 1022q-6 29 8 31q20 4 100 4l154 -602l59 -318q18 141 55 320l138 565q3 28 18 31q20 4 102 4l-270 -1087q-47 -182 -110 -256q-66 -76 -170 -76q-150 0 -150 61z" />
+<glyph unicode="z" horiz-adv-x="743" d="M59 57q0 25 13 45l481 824h-248q-166 0 -231 -11q-4 37 -4 56q0 53 36 53h566q12 -12 12 -37q0 -33 -14 -59l-477 -822h237q184 0 248 17q2 -8 2 -53q0 -70 -43 -70h-557q-21 18 -21 57z" />
+<glyph unicode="{" horiz-adv-x="581" d="M106 606q0 43 31 62q39 23 53 37q18 18 33 55t15 104q0 90 -14.5 219t-14.5 201q0 240 317 240q23 -35 23 -70q0 -37 -29 -41q-94 -2 -145 -45q-51 -41 -51 -133q0 -43 12 -174q12 -132 12 -221q0 -174 -121 -224q57 -20 90 -65q31 -43 31 -127q0 -90 -12 -225.5 t-12 -188.5q0 -131 47 -168q47 -39 164 -47q6 -28 6 -43q0 -59 -43 -59q-156 0 -222 63q-68 63 -67 211q0 78 14.5 205t14.5 219q0 80 -31 117q-29 35 -92 47q-9 22 -9 51z" />
+<glyph unicode="|" horiz-adv-x="722" d="M305 -410v2044q0 23 17 29q14 6 96 6v-2048q0 -23 -17 -27q-20 -4 -96 -4z" />
+<glyph unicode="}" horiz-adv-x="581" d="M37 -240q0 37 26 41q98 3 148 43q51 41 51 136q0 46 -12 178q-12 133 -12 219q0 98 30 147q29 47 90 76q-61 23 -90 64q-31 43 -30 129q0 90 12 225t12 188q0 127 -47 164q-49 39 -166 51q0 8 -1 18.5t-2 16.5t-1 8q0 59 41 60q156 0 221 -64q68 -63 68 -211 q0 -80 -14.5 -207t-14.5 -219q0 -80 31 -116q29 -35 92 -48q10 -25 10 -49q0 -41 -30 -63q-40 -22 -56 -37q-16 -16 -31 -53q-16 -43 -16 -107q0 -90 14.5 -219t14.5 -201q0 -238 -318 -237q-20 26 -20 67z" />
+<glyph unicode="~" horiz-adv-x="817" d="M25 535q33 49 96 88t151 39q71 0 148 -50q80 -51 139 -51q92 0 160 82q25 20 49 2q23 -16 29 -55q-90 -133 -248 -133q-76 0 -160 51q-80 49 -127 49q-41 0 -72 -14q-39 -18 -67 -41l-19.5 -15.5t-14.5 -10.5l-5 -3q-18 -8 -37 10q-20 21 -22 52z" />
+<glyph unicode="&#xa1;" horiz-adv-x="385" d="M111 948q0 41 24 66q27 27 66 26q86 0 86 -92q0 -41 -23 -65q-25 -27 -63 -27q-90 0 -90 92zM123 -406l18 1002q3 34 25 43q25 10 86 10l16 -1022q0 -20 -28 -26q-28 -7 -117 -7z" />
+<glyph unicode="&#xa2;" d="M186 461q0 524 291 575v217q0 31 25 43q20 10 78 11v-267q57 -4 102 -24.5t45 -38.5q0 -55 -14 -84q-70 45 -148 45q-51 0 -94 -16q-41 -16 -84 -62q-41 -45 -63 -147q-23 -106 -23 -252q0 -135 14 -207q16 -82 47 -115q33 -37 70 -45q41 -10 103 -10q96 0 178 63 q14 -27 14 -73q0 -29 -59 -60q-59 -33 -133 -34v-218q0 -31 -21 -38q-25 -10 -80 -11v271q-84 10 -133 43q-47 33 -82 141q-33 105 -33 293z" />
+<glyph unicode="&#xa3;" horiz-adv-x="782" d="M31 569v49q0 10 4 31q4 16 8 19q8 4 14 4h123q0 301 84 426q82 121 240 121q86 0 145.5 -27t59.5 -70q0 -37 -21 -71q-74 55 -168 55q-74 0 -119 -31q-47 -31 -77.5 -129t-30.5 -266v-8h301q0 -53 -4 -82q-2 -20 -25 -21h-272q0 -264 14 -456l375 -9q10 -37 10 -53 q0 -51 -112 -51h-381q-18 313 -19 569h-149z" />
+<glyph unicode="&#xa5;" d="M78 1415q-6 14 12 17q10 2 115 2l98 -293q37 -104 88 -267q47 -147 49 -167q4 53 138 436l94 270q2 12 20 17q20 4 103 4l-228 -641h201q0 -55 -8 -74q-8 -20 -39 -21h-189l-36 -108v-127h274q0 -57 -8 -74q-10 -20 -39 -20h-227v-342q0 -20 -15 -23q-20 -4 -98 -4v369 h-279q0 59 9 75q10 18 39 19h231v119l-43 116h-236q0 55 9 74q8 20 39 21h153z" />
+<glyph unicode="&#xa6;" horiz-adv-x="460" d="M174 -397v809q0 25 14.5 35t45 10t53.5 -8v-814q0 -29 -11 -32q-12 -6 -47 -6q-37 0 -55 6zM174 682v793q0 47 59 47q31 0 54 -9v-798q0 -25 -10.5 -33t-47.5 -8q-32 0 -55 8z" />
+<glyph unicode="&#xa7;" horiz-adv-x="749" d="M96 805q0 135 127 209l-20 22q-49 55 -66 92q-20 45 -20 93q0 100 82 161q80 59 219 60q86 0 149 -29q61 -27 74 -59q4 -12 4 -23q0 -39 -24 -69q-80 61 -197 61q-86 0 -133 -33q-49 -33 -49 -88q0 -51 69 -131q18 -20 121 -110q98 -86 135 -130q88 -94 88 -204 q0 -51 -32 -113q-31 -57 -95 -94l21 -23q53 -59 67 -92q18 -40 19 -92q0 -98 -82 -159.5t-217 -61.5q-88 0 -152 28q-61 29 -73 60q-4 8 -5 22q0 39 25 70q77 -61 197 -61q88 0 135 32.5t47 87.5q0 61 -70 131q-37 37 -118.5 109t-137.5 131q-88 101 -88 203zM203 799 q0 -74 69 -156q20 -27 174 -151q39 16 74 63q31 43 31 78q0 74 -72 158q-37 41 -174 149q-45 -14 -73.5 -59t-28.5 -82z" />
+<glyph unicode="&#xa8;" horiz-adv-x="448" d="M0 1329q0 37 20 60q20 25 60 24q40 0 61 -24q20 -23 21 -60q0 -35 -23 -61q-20 -23 -59 -23q-80 0 -80 84zM289 1329q0 33 22 60q20 25 58 24q40 0 61 -24q20 -23 21 -60q0 -35 -23 -61q-20 -23 -59 -23q-80 0 -80 84z" />
+<glyph unicode="&#xa9;" horiz-adv-x="948" d="M78 1106q0 451 409 450q197 0 293 -102q94 -100 94 -346q0 -219 -104 -336t-295 -117q-203 0 -301 99q-96 96 -96 352zM168 1100q0 -197 73.5 -277t225.5 -80q145 0 231 92.5t86 276.5q0 195 -73 279q-74 82 -222 82q-321 0 -321 -373zM311 1081q0 184 54 240 q55 59 139 59q31 0 61.5 -12t30.5 -22q0 -31 -14 -54q-35 20 -68 21q-59 0 -92 -45q-35 -47 -35 -189q0 -113 24.5 -143.5t82.5 -30.5q41 0 88 27q14 -27 14 -49q0 -14 -37 -29q-39 -16 -74 -16q-96 0 -135 44.5t-39 198.5z" />
+<glyph unicode="&#xaa;" horiz-adv-x="684" d="M100 838q0 143 64 194q66 53 178 53q76 0 143 -22v160q0 129 -147 129q-109 0 -207 -49q-15 15 -18 43q-4 29 10 43q76 66 248 65q213 0 213 -197v-608q-113 -57 -252 -57q-113 0 -172.5 47t-59.5 199zM195 831q0 -92 41 -122q40 -31 116 -31q86 0 133 31v268 q-49 20 -114 20q-90 0 -133 -31t-43 -135z" />
+<glyph unicode="&#xab;" horiz-adv-x="851" d="M57 522q0 25 76 150q63 104 154 237l75 115q18 0 35 -14q23 -18 27 -29l6 -14q0 -23 -65 -136q-59 -100 -134 -208l-65 -101q272 -403 272 -452q-27 -70 -65 -70q-316 463 -316 522zM391 512q0 20 76 141q41 66 149 224l76 104q12 0 35 -14q18 -12 27 -27l6 -14 q0 -27 -64 -129q-39 -61 -131 -195l-65 -90q266 -352 266 -399q-25 -68 -64 -68q-311 416 -311 467z" />
+<glyph unicode="&#xac;" horiz-adv-x="817" d="M68 553q0 25 12 39q12 16 29 16h622v-381q-18 -8 -55 -8q-53 0 -53 39v242h-545q-10 26 -10 53z" />
+<glyph unicode="&#xad;" horiz-adv-x="591" d="M88 526v49q0 20 2 31q4 16 8 19q8 4 17 4h391q0 -53 -4 -82q-2 -20 -25 -21h-389z" />
+<glyph unicode="&#xae;" horiz-adv-x="948" d="M78 1106q0 451 409 450q197 0 293 -102q94 -100 94 -346q0 -219 -104 -336t-295 -117q-203 0 -301 99q-96 96 -96 352zM168 1100q0 -197 73.5 -277t225.5 -80q145 0 231 92.5t86 276.5q0 195 -73 279q-74 82 -222 82q-321 0 -321 -373zM352 844v530q0 10 13 10h100 q170 0 170 -147q0 -111 -84 -152q80 -82 96 -225q0 -14 -22 -18l-3 1q-3 1 -7.5 1h-10.5h-24q-23 166 -97 225h-67v-209q0 -10 -10 -14q-6 -2 -41 -2h-13zM416 1128h47q104 0 104 109q0 90 -102 90h-49v-199z" />
+<glyph unicode="&#xaf;" horiz-adv-x="522" d="M0 1313q4 55 47 55h467q10 -25 10 -51q-2 -57 -45 -57h-473q-6 22 -6 53z" />
+<glyph unicode="&#xb0;" horiz-adv-x="757" d="M199 1335q0 186 192 187q88 0 133 -41q43 -39 43 -144q0 -92 -49 -139q-51 -47 -141 -47q-92 0 -133 39q-45 41 -45 145zM283 1331q0 -100 96 -100q106 0 106 106q0 104 -94 105q-108 0 -108 -111z" />
+<glyph unicode="&#xb1;" horiz-adv-x="884" d="M86 27v49q0 20 2 30q4 16 8 19q8 4 17 4h690q0 -57 -4 -82q-4 -20 -25 -20h-688zM88 573v50q0 20 2 30q4 16 8 19q8 4 17 4h280v278q0 22 19 25q25 4 84 4v-307h307q0 -59 -4 -84q-3 -18 -25 -19h-278v-280q0 -18 -19 -23q-25 -4 -84 -4v307h-307z" />
+<glyph unicode="&#xb2;" horiz-adv-x="819" d="M106 633q0 43 19 65q53 59 180 170q131 115 184 183q59 76 60 153q0 59 -35 99q-34 37 -123 36q-115 0 -235 -90q-25 33 -25 70q0 43 96 90q92 45 205 45q137 0 192.5 -59.5t55.5 -161.5q0 -74 -45 -150q-46 -77 -98 -129l-140 -133q-104 -98 -127 -123h439q8 -33 8 -49 q0 -57 -39 -57h-563q-9 14 -9 41z" />
+<glyph unicode="&#xb3;" horiz-adv-x="845" d="M125 672q0 39 31 63q78 -59 215 -59q111 0 174 45t63 125q0 55 -39 92q-41 39 -100 47q-41 8 -168 8q-12 14 -12 51q0 41 37 41q61 0 135 -8q106 70 106 162q0 43 -37 78q-39 35 -127 35q-138 0 -239 -80q-25 25 -25 55q0 33 17 41q90 86 284 86q131 0 189 -51 q59 -53 59 -133q0 -125 -115 -215q70 -25 109 -76q41 -53 41 -123q0 -139 -96 -213q-92 -72 -258 -72q-164 0 -228 58q-16 16 -16 43z" />
+<glyph unicode="&#xb4;" horiz-adv-x="329" d="M0 1249q74 74 119 113q94 82 110 94q45 35 50 35q18 0 34 -33q14 -31 19 -57q-14 -18 -111 -90q-102 -78 -176 -127q-10 0 -22 16q-6 8 -17 33z" />
+<glyph unicode="&#xb5;" horiz-adv-x="856" d="M119 -391v1376q0 49 55 49q37 0 55 -8v-760q0 -180 195 -180q106 0 201 41v856q0 27 12 39t43 12q37 0 55 -8v-979q-158 -68 -311 -67q-137 0 -195 73v-407q0 -45 -61 -45q-26 0 -49 8z" />
+<glyph unicode="&#x3bc;" horiz-adv-x="856" d="M119 -391v1376q0 49 55 49q37 0 55 -8v-760q0 -180 195 -180q106 0 201 41v856q0 27 12 39t43 12q37 0 55 -8v-979q-158 -68 -311 -67q-137 0 -195 73v-407q0 -45 -61 -45q-26 0 -49 8z" />
+<glyph unicode="&#xb6;" horiz-adv-x="1116" d="M88 864q0 293 107 439q109 150 299 149q135 0 237 -53v-1364q0 -41 -57 -41q-35 0 -53 8v422q-70 -35 -187 -35q-152 0 -250 109q-96 104 -96 366zM203 874q0 -387 258 -391q90 -4 157 37v805q-41 29 -139 29q-135 0 -205 -123q-71 -126 -71 -357zM885 2v1364q0 47 59 47 q18 0 53 -10v-1368q0 -22 -12 -31q-10 -8 -45 -8q-37 0 -55 6z" />
+<glyph unicode="&#xb7;" horiz-adv-x="423" d="M121 551q0 39 24.5 65.5t61.5 26.5q90 0 90 -92q0 -39 -24.5 -65.5t-65.5 -26.5q-86 0 -86 92z" />
+<glyph unicode="&#xb8;" horiz-adv-x="256" d="M0 -375q10 53 20 68q9 3 19 0q2 0 12 -5t19 -7q20 -6 41 -7q70 0 69 74q0 72 -67 72l-80 -13l39 199h73l-26 -129q4 4 37 4q41 0 71 -31q29 -29 29 -88q0 -78 -43 -118q-41 -39 -104 -39q-62 0 -109 20z" />
+<glyph unicode="&#xb9;" horiz-adv-x="833" d="M125 639q0 59 39 59h231v631l-250 -51q-14 20 -14 53q0 41 39 53q229 70 301 70q25 0 39 -6v-750h195q6 -27 6 -51q0 -55 -37 -55h-543q-6 27 -6 47z" />
+<glyph unicode="&#xba;" horiz-adv-x="710" d="M86 1020q0 217 76 328q74 106 207 106q135 0 196.5 -92t61.5 -340q0 -428 -279 -428q-133 0 -198 90q-64 88 -64 336zM184 1012q0 -186 39 -252q41 -70 125 -70q182 0 182 334q0 186 -38 256q-41 72 -121 72q-187 0 -187 -340z" />
+<glyph unicode="&#xbb;" horiz-adv-x="847" d="M88 111q0 49 266 401l-63 90q-82 117 -131 195q-66 100 -66 129q0 39 64 57q305 -420 305 -471q0 -25 -78 -143q-70 -106 -158 -222l-77 -104q-4 2 -17 6q-10 4 -27 21q-18 18 -18 41zM412 68q0 18 69 135l135 217l68 102q-264 391 -264 445q0 16 18 32q16 14 33 21l16 4 q305 -449 306 -502q0 -31 -78 -155q-92 -150 -160 -248l-78 -119l-18 6q-12 4 -29 21q-18 18 -18 41z" />
+<glyph unicode="&#xbc;" horiz-adv-x="1794" d="M125 639q0 59 39 59h231v631l-250 -51q-14 20 -14 53q0 41 39 53q229 70 301 70q25 0 39 -6v-750h195q6 -27 6 -51q0 -55 -37 -55h-543q-6 27 -6 47zM485 29l818 1401q8 27 36 26q41 0 76 -43l-819 -1411q-10 -18 -33 -18q-51 0 -78 45zM1012 205q0 27 14 63 q41 127 148 293q111 172 204 262q37 39 92 39q10 0 48 -6v-596h143q10 -27 10 -55q0 -53 -35 -53h-118v-123q0 -39 -62 -39q-20 0 -45 6v156h-383q-16 20 -16 53zM1122 254h291l4 467q-82 -76 -168 -209q-90 -141 -127 -258z" />
+<glyph unicode="&#xbd;" horiz-adv-x="1863" d="M125 639q0 59 39 59h231v631l-250 -51q-14 20 -14 53q0 41 39 53q229 70 301 70q25 0 39 -6v-750h195q6 -27 6 -51q0 -55 -37 -55h-543q-6 27 -6 47zM485 29l818 1401q8 27 36 26q41 0 76 -43l-819 -1411q-10 -18 -33 -18q-51 0 -78 45zM1133 41q0 45 18 65 q53 59 180 170q125 109 184.5 185t59.5 151q0 59 -35 99q-34 37 -123 37q-115 0 -235 -91q-25 35 -25 70q0 41 96 88q98 47 205 47q137 0 193 -59q55 -57 55 -162q0 -74 -45 -149q-46 -77 -98 -130q-53 -53 -140 -131q-96 -88 -127 -125h439q8 -33 8 -49q0 -57 -39 -57h-563 q-8 14 -8 41z" />
+<glyph unicode="&#xbe;" horiz-adv-x="1787" d="M125 672q0 39 31 63q78 -59 215 -59q111 0 174 45t63 125q0 55 -39 92q-41 39 -100 47q-41 8 -168 8q-12 14 -12 51q0 41 37 41q61 0 135 -8q106 70 106 162q0 43 -37 78q-39 35 -127 35q-138 0 -239 -80q-25 25 -25 55q0 33 17 41q90 86 284 86q131 0 189 -51 q59 -53 59 -133q0 -125 -115 -215q70 -25 109 -76q41 -53 41 -123q0 -139 -96 -213q-92 -72 -258 -72q-164 0 -228 58q-16 16 -16 43zM498 29l817 1401q8 27 37 26q41 0 75 -43l-819 -1411q-10 -18 -33 -18q-50 0 -77 45zM1006 205q0 27 14 63q41 127 147 293 q111 172 205 262q37 39 92 39q10 0 47 -6v-596h144q10 -27 10 -55q0 -53 -35 -53h-119v-123q0 -39 -61 -39q-20 0 -45 6v156h-383q-16 20 -16 53zM1116 254h291l4 467q-82 -76 -168 -209q-90 -141 -127 -258z" />
+<glyph unicode="&#xbf;" horiz-adv-x="616" d="M29 -109q0 78 28 160q25 70 64 127l82 111q51 70 65 94q37 63 37 139q0 14 -4 56q-4 33 -6 40q-4 10 0 21q18 29 102 12q23 -55 23 -125q0 -94 -47 -178q-41 -66 -90 -131q-61 -80 -101 -154q-35 -68 -35 -151q0 -199 199 -199q117 0 197 62q14 -37 14 -88q0 -29 -78 -58 q-80 -29 -164 -28q-125 0 -206 69q-80 67 -80 221zM254 946q0 37 25 66q25 27 65 26q86 0 86 -92q0 -37 -24 -65q-25 -27 -62 -27q-90 0 -90 92z" />
+<glyph unicode="&#xc0;" horiz-adv-x="890" d="M14 2l387 1421q4 18 39 19q31 0 49 -6l388 -1409q4 -16 -6.5 -22.5t-41.5 -6.5q-49 0 -67 2l-103 395h-426l-94 -372q-3 -25 -55 -25q-33 0 -70 4zM209 1821q2 20 20 57q16 31 33 31q2 0 133 -109q117 -96 146 -131q-23 -66 -43 -65q-2 0 -140 102q-139 105 -149 115z M260 500h371l-99 379q-78 305 -86 401q-16 -137 -88 -401z" />
+<glyph unicode="&#xc1;" horiz-adv-x="890" d="M14 2l387 1421q4 18 39 19q31 0 49 -6l388 -1409q4 -16 -6.5 -22.5t-41.5 -6.5q-49 0 -67 2l-103 395h-426l-94 -372q-3 -25 -55 -25q-33 0 -70 4zM260 500h371l-99 379q-78 305 -86 401q-16 -137 -88 -401zM362 1659q74 74 119 113l113 94q45 35 47 35q18 0 33 -31 q18 -35 20 -60q-18 -23 -110 -92l-176 -125q-8 0 -21 17q-10 12 -18 32z" />
+<glyph unicode="&#xc2;" horiz-adv-x="890" d="M14 2l387 1421q4 18 39 19q31 0 49 -6l388 -1409q4 -16 -6.5 -22.5t-41.5 -6.5q-49 0 -67 2l-103 395h-426l-94 -372q-3 -25 -55 -25q-33 0 -70 4zM195 1636l227 234q16 4 27 4q27 0 40 -19q199 -199 199 -219q0 -12 -26.5 -26.5t-57.5 -14.5q-141 147 -158 177 q-150 -174 -174 -175q-50 0 -77 39zM260 500h371l-99 379q-78 305 -86 401q-16 -137 -88 -401z" />
+<glyph unicode="&#xc3;" horiz-adv-x="890" d="M14 2l387 1421q4 18 39 19q31 0 49 -6l388 -1409q4 -16 -6.5 -22.5t-41.5 -6.5q-49 0 -67 2l-103 395h-426l-94 -372q-3 -25 -55 -25q-33 0 -70 4zM152 1688q84 139 208 139q45 0 95 -53q49 -51 92 -52q47 0 76 23q27 20 45 47q16 23 22 23q10 0 23 -17q10 -12 16 -33 l6 -16q-12 -27 -33 -53q-16 -20 -69 -54q-47 -29 -101 -28q-70 0 -114 53q-45 55 -78 55q-34 0 -61 -24q-29 -27 -43 -45q-16 -23 -25 -23q-32 1 -59 58zM260 500h371l-99 379q-78 305 -86 401q-16 -137 -88 -401z" />
+<glyph unicode="&#xc4;" horiz-adv-x="890" d="M14 2l387 1421q4 18 39 19q31 0 49 -6l388 -1409q4 -16 -6.5 -22.5t-41.5 -6.5q-49 0 -67 2l-103 395h-426l-94 -372q-3 -25 -55 -25q-33 0 -70 4zM223 1739q0 37 21 59q23 25 59 25q39 0 59 -23q23 -27 23 -61q0 -33 -23 -60q-23 -25 -59 -24q-80 0 -80 84zM260 500h371 l-99 379q-78 305 -86 401q-16 -137 -88 -401zM512 1739q0 37 20 59q20 25 60 25q41 0 61.5 -22.5t20.5 -61.5q0 -33 -23 -60q-20 -25 -59 -24q-80 0 -80 84z" />
+<glyph unicode="&#xc5;" horiz-adv-x="890" d="M14 2l387 1421q4 18 39 19q31 0 49 -6l388 -1409q4 -16 -6.5 -22.5t-41.5 -6.5q-49 0 -67 2l-103 395h-426l-94 -372q-3 -25 -55 -25q-33 0 -70 4zM260 500h371l-99 379q-78 305 -86 401q-16 -137 -88 -401zM260 1769q0 186 193 187q90 0 135 -41q41 -39 41 -143 q0 -186 -191 -187q-90 0 -133 41q-45 43 -45 143zM348 1765q0 -98 92 -98q102 0 103 105q0 100 -90 100q-53 0 -78 -25q-27 -27 -27 -82z" />
+<glyph unicode="&#xc6;" horiz-adv-x="1312" d="M37 2l672 1409q6 23 36 23h515q0 -78 -3 -88q-4 -16 -20 -17h-383v-493h358q0 -63 -4 -88q-2 -16 -18 -17h-336v-627h403q0 -70 -4 -90q-2 -14 -20 -14h-492v395h-401l-178 -372q-9 -25 -56 -25q-32 0 -69 4zM389 500h352v800q-78 -215 -174 -430z" />
+<glyph unicode="&#xc7;" horiz-adv-x="720" d="M80 649q0 205 24 359q25 156 62 237q37 84 92 133q53 47 107 64q45 14 112 14q94 0 141 -33q49 -35 50 -69q0 -37 -21 -70q-70 63 -153 64q-49 0 -86 -13q-39 -12 -80 -57q-43 -47 -70 -116.5t-45 -205.5q-16 -117 -16 -309q0 -156 20 -282q18 -113 55 -168.5t76 -76 t92 -20.5q70 0 125 27q59 29 88 63q20 -35 21 -71q0 -47 -66 -90q-65 -43 -159 -49l-21 -103q4 4 37 4q39 0 69.5 -30.5t30.5 -88.5q0 -78 -43 -118q-41 -39 -104 -39q-61 0 -109 20q10 53 21 68q9 3 18 0q2 0 12.5 -5t18.5 -7q23 -6 41 -7q70 0 69 74q0 72 -67 72l-80 -13 l33 173q-43 2 -90 20q-39 14 -78 57t-68 115q-27 70 -43 193q-16 126 -16 284z" />
+<glyph unicode="&#xc8;" horiz-adv-x="688" d="M117 0v1405q0 29 26 29h490q0 -98 -10 -103q-2 -2 -11 -2h-385v-493h361q0 -76 -2 -88q-2 -16 -23 -17h-336v-627h404q0 -80 -2 -90q-2 -14 -23 -14h-489zM162 1821q2 20 20 57q14 31 33 31q2 0 133 -109q115 -96 146 -131q-23 -66 -43 -65q-2 0 -140 102 q-139 105 -149 115z" />
+<glyph unicode="&#xc9;" horiz-adv-x="688" d="M117 0v1405q0 29 26 29h490q0 -98 -10 -103q-2 -2 -11 -2h-385v-493h361q0 -76 -2 -88q-2 -16 -23 -17h-336v-627h404q0 -80 -2 -90q-2 -14 -23 -14h-489zM313 1659q74 74 119 113l113 94q45 35 47 35q18 0 33 -31q18 -35 20 -60q-18 -23 -110 -92q-74 -55 -177 -125 q-8 0 -20 17q-10 12 -19 32z" />
+<glyph unicode="&#xca;" horiz-adv-x="688" d="M117 0v1405q0 29 26 29h490q0 -98 -10 -103q-2 -2 -11 -2h-385v-493h361q0 -76 -2 -88q-2 -16 -23 -17h-336v-627h404q0 -80 -2 -90q-2 -14 -23 -14h-489zM145 1636l228 234q16 4 26 4q27 0 41 -19q199 -199 199 -219q0 -12 -26.5 -26.5t-57.5 -14.5q-141 147 -158 177 q-150 -174 -174 -175q-51 0 -78 39z" />
+<glyph unicode="&#xcb;" horiz-adv-x="688" d="M117 0v1405q0 29 26 29h490q0 -98 -10 -103q-2 -2 -11 -2h-385v-493h361q0 -76 -2 -88q-2 -16 -23 -17h-336v-627h404q0 -80 -2 -90q-2 -14 -23 -14h-489zM174 1739q0 37 21 59q23 25 59 25q41 0 61.5 -22.5t20.5 -61.5q0 -33 -23 -60q-23 -25 -59 -24q-80 0 -80 84z M463 1739q0 33 22 59q23 25 58 25q41 0 61.5 -22.5t20.5 -61.5q0 -33 -23 -60q-20 -25 -59 -24q-80 0 -80 84z" />
+<glyph unicode="&#xcc;" horiz-adv-x="335" d="M-68 1821q2 27 18.5 57.5t35.5 30.5q4 0 135 -109q123 -102 143 -131q-23 -66 -43 -65q-2 0 -139 102q-140 105 -150 115zM111 0v1376q0 45 16 51q15 6 98 7v-1407q0 -20 -14 -23q-20 -4 -100 -4z" />
+<glyph unicode="&#xcd;" horiz-adv-x="335" d="M84 1659q74 74 119 113q94 82 110 94q45 35 49 35q18 0 33 -31q18 -35 21 -60q-18 -23 -111 -92l-176 -125q-10 0 -23 17q-6 8 -16 32zM111 0v1376q0 45 16 51q15 6 98 7v-1407q0 -20 -14 -23q-20 -4 -100 -4z" />
+<glyph unicode="&#xce;" horiz-adv-x="335" d="M-82 1636l227 234q16 4 27 4q25 0 41 -19q199 -199 199 -219q0 -12 -27 -26.5t-57 -14.5q-141 147 -158 177q-150 -174 -174 -175q-51 0 -78 39zM111 0v1376q0 45 16 51q15 6 98 7v-1407q0 -20 -14 -23q-20 -4 -100 -4z" />
+<glyph unicode="&#xcf;" horiz-adv-x="335" d="M-53 1739q0 33 22 59q23 25 58 25q41 0 61.5 -22.5t20.5 -61.5q0 -33 -23 -60q-20 -25 -59 -24q-80 0 -80 84zM111 0v1376q0 45 16 51q15 6 98 7v-1407q0 -20 -14 -23q-20 -4 -100 -4zM236 1739q0 33 22 59q20 25 57 25q39 0 60 -23q23 -27 22 -61q0 -33 -22 -60 q-23 -25 -60 -24q-79 0 -79 84z" />
+<glyph unicode="&#xd0;" horiz-adv-x="845" d="M25 705v49q0 8 4 28q4 16 8 19q8 4 14 4h64v594q0 35 51 35h205q203 0 301 -146q96 -141 96 -487q0 -248 -29 -400q-31 -160 -88 -245q-59 -88 -125 -121q-70 -35 -164 -35h-247v705h-90zM227 109h138q41 0 84 14q35 12 75 55q39 41 64 117q27 78 41 203q16 137 16 303 q0 287 -65.5 407.5t-210.5 120.5h-142v-524h213q0 -57 -4 -82q-3 -18 -24 -18h-185v-596z" />
+<glyph unicode="&#xd1;" horiz-adv-x="931" d="M113 0v1405q0 29 26 29h80l246 -566q63 -172 254 -647q-10 170 -10 699v485q0 23 14 25q20 4 98 4v-1407q0 -27 -26 -27h-78l-252 575q-45 102 -250 642q8 -270 8 -689v-501q0 -18 -12 -23q-16 -4 -98 -4zM190 1688q84 139 209 139q45 0 95 -53q49 -51 92 -52q47 0 76 23 q27 20 45 47q16 23 22 23q10 0 23 -17q10 -12 16 -33l6 -16q-12 -27 -33 -53q-16 -20 -69 -54q-47 -29 -101 -28q-70 0 -114 53q-47 55 -78 55q-34 0 -62 -24q-29 -27 -43 -45q-16 -23 -24 -23q-33 1 -60 58z" />
+<glyph unicode="&#xd2;" horiz-adv-x="911" d="M78 727q0 391 94 559t299 168q200 0 283 -160q82 -158 82 -565q0 -414 -91 -579q-92 -170 -296.5 -170t-286.5 161q-84 164 -84 586zM203 692q0 -326 55 -461t195 -135q141 0 202 144q59 139 60 491q0 338 -55.5 473t-192.5 135q-135 0 -201 -149q-63 -146 -63 -498z M240 1821q2 27 18 57.5t35 30.5q2 0 133 -109q127 -106 145 -131q-23 -66 -43 -65q-4 0 -141 102q-131 99 -147 115z" />
+<glyph unicode="&#xd3;" horiz-adv-x="911" d="M78 727q0 391 94 559t299 168q200 0 283 -160q82 -158 82 -565q0 -414 -91 -579q-92 -170 -296.5 -170t-286.5 161q-84 164 -84 586zM203 692q0 -326 55 -461t195 -135q141 0 202 144q59 139 60 491q0 338 -55.5 473t-192.5 135q-135 0 -201 -149q-63 -146 -63 -498z M391 1659q74 74 119 113l113 94q45 35 47 35q18 0 35 -31q14 -31 18 -60q-18 -23 -111 -92l-176 -125q-10 0 -22 17q-6 8 -17 32z" />
+<glyph unicode="&#xd4;" horiz-adv-x="911" d="M78 727q0 391 94 559t299 168q200 0 283 -160q82 -158 82 -565q0 -414 -91 -579q-92 -170 -296.5 -170t-286.5 161q-84 164 -84 586zM203 692q0 -326 55 -461t195 -135q141 0 202 144q59 139 60 491q0 338 -55.5 473t-192.5 135q-135 0 -201 -149q-63 -146 -63 -498z M223 1636l228 234q16 4 26 4q27 0 41 -19q199 -199 199 -219q0 -12 -26.5 -26.5t-57.5 -14.5q-141 147 -158 177q-150 -174 -174 -175q-51 0 -78 39z" />
+<glyph unicode="&#xd5;" horiz-adv-x="911" d="M78 727q0 391 94 559t299 168q200 0 283 -160q82 -158 82 -565q0 -414 -91 -579q-92 -170 -296.5 -170t-286.5 161q-84 164 -84 586zM180 1688q84 139 209 139q45 0 94 -53q49 -51 92 -52q47 0 76 23q27 20 45 47q16 23 23 23q12 0 24 -17q10 -12 17 -33l4 -16 q-12 -27 -33 -53q-16 -20 -69 -54q-47 -29 -101 -28q-68 0 -115 53q-49 55 -77 55q-34 0 -62 -24q-29 -27 -43 -45q-16 -23 -24 -23q-33 1 -60 58zM203 692q0 -326 55 -461t195 -135q141 0 202 144q59 139 60 491q0 338 -55.5 473t-192.5 135q-135 0 -201 -149 q-63 -146 -63 -498z" />
+<glyph unicode="&#xd6;" horiz-adv-x="911" d="M78 727q0 391 94 559t299 168q200 0 283 -160q82 -158 82 -565q0 -414 -91 -579q-92 -170 -296.5 -170t-286.5 161q-84 164 -84 586zM203 692q0 -326 55 -461t195 -135q141 0 202 144q59 139 60 491q0 338 -55.5 473t-192.5 135q-135 0 -201 -149q-63 -146 -63 -498z M252 1739q0 33 22 59q20 25 58 25q41 0 61.5 -22.5t20.5 -61.5q0 -33 -23 -60q-23 -25 -59 -24q-80 0 -80 84zM541 1739q0 33 22 59q23 25 58 25q41 0 61 -22.5t20 -61.5q0 -33 -22 -60q-20 -25 -59 -24q-80 0 -80 84z" />
+<glyph unicode="&#xd7;" d="M178 795q66 61 80 59q6 0 12 -6l170 -193l172 193q18 10 29 2q25 -18 53 -45q10 -10 11 -10l-195 -220l192 -215q-49 -49 -57 -55q-10 -8 -35 2l-170 191l-168 -191q-8 -8 -16 -8q-10 0 -18.5 6t-22.5 21l-35 34l191 215z" />
+<glyph unicode="&#xd8;" horiz-adv-x="948" d="M96 727q0 387 94 559q92 168 295 168q154 0 238 -90l43 109q70 -2 76 -37q0 -18 -58 -172q70 -166 70 -535q0 -410 -90 -579.5t-295 -169.5q-162 0 -244 92l-43 -105q-14 -2 -42.5 8.5t-30.5 28.5l2 7l8 22l26 67l25 62q-74 166 -74 565zM221 692q0 -297 43 -432 l379 1008q-55 72 -156 71q-138 0 -202 -147q-64 -146 -64 -500zM309 166q53 -72 156 -72q94 0 151 53q55 51 86 195q31 141 31 389q0 305 -43 440z" />
+<glyph unicode="&#xd9;" horiz-adv-x="935" d="M113 440v965q0 23 14 25q20 4 100 4v-998q0 -51 4 -112q2 -35 21 -93q15 -49 43 -79q25 -27 74 -48q45 -18 114 -18q143 0 230 43v1278q0 20 14 23q20 4 100 4v-1383q-47 -31 -141 -51t-203 -20q-92 0 -168 26q-70 25 -108 64q-37 37 -60 104q-23 70 -28 123 q-6 59 -6 143zM246 1821q2 20 20 57q16 31 33 31q2 0 133 -109q117 -96 146 -131q-23 -66 -43 -65q-2 0 -140 102q-139 105 -149 115z" />
+<glyph unicode="&#xda;" horiz-adv-x="935" d="M113 440v965q0 23 14 25q20 4 100 4v-998q0 -51 4 -112q2 -35 21 -93q15 -49 43 -79q25 -27 74 -48q45 -18 114 -18q143 0 230 43v1278q0 20 14 23q20 4 100 4v-1383q-47 -31 -141 -51t-203 -20q-92 0 -168 26q-70 25 -108 64q-37 37 -60 104q-23 70 -28 123 q-6 59 -6 143zM397 1659q74 74 119 113l113 94q45 35 47 35q16 0 33 -31q18 -35 20 -60q-18 -23 -111 -92l-176 -125q-8 0 -20 17q-10 12 -19 32z" />
+<glyph unicode="&#xdb;" horiz-adv-x="935" d="M113 440v965q0 23 14 25q20 4 100 4v-998q0 -51 4 -112q2 -35 21 -93q15 -49 43 -79q25 -27 74 -48q45 -18 114 -18q143 0 230 43v1278q0 20 14 23q20 4 100 4v-1383q-47 -31 -141 -51t-203 -20q-92 0 -168 26q-70 25 -108 64q-37 37 -60 104q-23 70 -28 123 q-6 59 -6 143zM229 1636l228 234q16 4 26 4q25 0 41 -19q199 -199 199 -219q0 -12 -26.5 -26.5t-57.5 -14.5q-141 147 -158 177q-150 -174 -174 -175q-51 0 -78 39z" />
+<glyph unicode="&#xdc;" horiz-adv-x="935" d="M113 440v965q0 23 14 25q20 4 100 4v-998q0 -51 4 -112q2 -35 21 -93q15 -49 43 -79q25 -27 74 -48q45 -18 114 -18q143 0 230 43v1278q0 20 14 23q20 4 100 4v-1383q-47 -31 -141 -51t-203 -20q-92 0 -168 26q-70 25 -108 64q-37 37 -60 104q-23 70 -28 123 q-6 59 -6 143zM258 1739q0 37 21 59q20 25 59 25q41 0 61.5 -22.5t20.5 -61.5q0 -33 -23 -60q-20 -25 -59 -24q-80 0 -80 84zM547 1739q0 33 22 59q20 25 58 25q41 0 61.5 -22.5t20.5 -61.5q0 -33 -23 -60q-23 -25 -59 -24q-80 0 -80 84z" />
+<glyph unicode="&#xdd;" horiz-adv-x="737" d="M12 1415q-6 14 13 17q10 2 114 2l99 -293q43 -115 86 -262q49 -166 53 -193q14 106 139 457l90 270q2 12 21 17q20 4 102 4l-299 -848v-559q0 -18 -14 -23q-16 -4 -99 -4v582zM293 1659q74 74 119 113q94 82 110 94q45 35 49 35q18 0 33 -31q18 -35 21 -60 q-18 -23 -111 -92l-176 -125q-8 0 -21 17q-10 12 -18 32z" />
+<glyph unicode="&#xde;" horiz-adv-x="755" d="M113 0v1403q0 20 14 27q10 4 61 4h35v-265h129q358 0 359 -391q0 -221 -99 -329q-98 -106 -268 -107h-121v-315q0 -20 -14 -23q-20 -4 -96 -4zM223 451h66h20h17.5t13.5 -1t9 -1h3q236 0 236 339q0 279 -226 279h-71q-12 0 -28.5 -1t-20.5 -1h-19v-614z" />
+<glyph unicode="&#xdf;" horiz-adv-x="960" d="M100 2q18 39 19 109l-2 1013q0 317 321 318q199 0 299 -90q98 -90 99 -201q0 -61 -41 -113q-43 -51 -90 -75q-49 -25 -90.5 -66t-41.5 -86q0 -39 37 -82q29 -33 90 -84l107 -90q55 -53 90 -121q37 -74 37 -155q0 -143 -82 -220q-84 -78 -225 -77q-70 0 -131 16 q-57 14 -84 32.5t-27 39.5q0 41 31 77q70 -63 190 -63q94 0 150 47q57 49 57 143q0 80 -57 156q-59 78 -123 125q-72 51 -123 115q-57 70 -57 135q0 61 41 113q39 47 92 77q51 29 90 68q41 41 41 88q0 72 -69.5 129t-201.5 57q-113 0 -165 -65q-51 -63 -52 -213l2 -1002 q0 -37 -14 -57q-12 -18 -51 -18q-18 0 -35 6q-20 8 -22 10z" />
+<glyph unicode="&#xe0;" horiz-adv-x="749" d="M74 285q0 104 24 174q23 68 72 102q45 33 94 45t115 12q109 0 168 -24v180q0 92 -41 127t-121 35q-184 0 -295 -51q-16 33 -16 65q0 29 16 41q35 23 125 37q98 16 197 16q125 0 186 -57q59 -55 59 -190v-123q0 -324 -10 -621q-119 -74 -278 -73q-39 0 -88 4 q-31 2 -78 22.5t-68 48.5q-27 35 -43 90q-18 60 -18 140zM143 1411q2 27 19 57q14 31 35 31q4 0 135 -108q123 -102 143 -131q-23 -66 -43 -66q-2 0 -139 102q-140 105 -150 115zM190 289q0 -72 15 -115q16 -47 45 -65q31 -18 59 -25q27 -6 76 -6q104 0 152 45 q10 160 10 387q-53 20 -133 20q-104 0 -164 -47t-60 -194z" />
+<glyph unicode="&#xe1;" horiz-adv-x="749" d="M74 285q0 104 24 174q23 68 72 102q45 33 94 45t115 12q109 0 168 -24v180q0 92 -41 127t-121 35q-184 0 -295 -51q-16 33 -16 65q0 29 16 41q35 23 125 37q98 16 197 16q125 0 186 -57q59 -55 59 -190v-123q0 -324 -10 -621q-119 -74 -278 -73q-39 0 -88 4 q-31 2 -78 22.5t-68 48.5q-27 35 -43 90q-18 60 -18 140zM190 289q0 -72 15 -115q16 -47 45 -65q31 -18 59 -25q27 -6 76 -6q104 0 152 45q10 160 10 387q-53 20 -133 20q-104 0 -164 -47t-60 -194zM297 1249q74 74 119 113q94 82 110 94q45 35 49 35q16 0 33 -33 q18 -35 21 -57q-14 -18 -111 -90q-102 -78 -176 -127q-10 0 -23 16q-6 8 -16 33z" />
+<glyph unicode="&#xe2;" horiz-adv-x="749" d="M74 285q0 104 24 174q23 68 72 102q45 33 94 45t115 12q109 0 168 -24v180q0 92 -41 127t-121 35q-184 0 -295 -51q-16 33 -16 65q0 29 16 41q35 23 125 37q98 16 197 16q125 0 186 -57q59 -55 59 -190v-123q0 -324 -10 -621q-119 -74 -278 -73q-39 0 -88 4 q-31 2 -78 22.5t-68 48.5q-27 35 -43 90q-18 60 -18 140zM129 1227l227 233q16 4 27 4q27 0 41 -18q199 -199 199 -219q0 -12 -27 -26.5t-57 -14.5q-137 143 -158 176q-150 -174 -174 -174q-51 0 -78 39zM190 289q0 -72 15 -115q16 -47 45 -65q31 -18 59 -25q27 -6 76 -6 q104 0 152 45q10 160 10 387q-53 20 -133 20q-104 0 -164 -47t-60 -194z" />
+<glyph unicode="&#xe3;" horiz-adv-x="749" d="M74 285q0 104 24 174q23 68 72 102q45 33 94 45t115 12q109 0 168 -24v180q0 92 -41 127t-121 35q-184 0 -295 -51q-16 33 -16 65q0 29 16 41q35 23 125 37q98 16 197 16q125 0 186 -57q59 -55 59 -190v-123q0 -324 -10 -621q-119 -74 -278 -73q-39 0 -88 4 q-31 2 -78 22.5t-68 48.5q-27 35 -43 90q-18 60 -18 140zM86 1278q84 139 209 139q45 0 94 -51q49 -53 92 -53q45 0 76 24.5t45 44.5q16 23 23 23q10 0 22 -16q10 -12 19 -33l4 -17q-14 -33 -33 -53q-20 -25 -70 -53q-47 -29 -100 -29q-66 0 -115 56q-47 53 -78 53 q-37 0 -61 -23q-27 -23 -43 -47q-16 -23 -25 -22q-32 0 -59 57zM190 289q0 -72 15 -115q16 -47 45 -65q31 -18 59 -25q27 -6 76 -6q104 0 152 45q10 160 10 387q-53 20 -133 20q-104 0 -164 -47t-60 -194z" />
+<glyph unicode="&#xe4;" horiz-adv-x="749" d="M74 285q0 104 24 174q23 68 72 102q45 33 94 45t115 12q109 0 168 -24v180q0 92 -41 127t-121 35q-184 0 -295 -51q-16 33 -16 65q0 29 16 41q35 23 125 37q98 16 197 16q125 0 186 -57q59 -55 59 -190v-123q0 -324 -10 -621q-119 -74 -278 -73q-39 0 -88 4 q-31 2 -78 22.5t-68 48.5q-27 35 -43 90q-18 60 -18 140zM158 1329q0 33 22 60q20 25 58 24q40 0 61 -24q20 -23 20 -60q0 -35 -22 -61q-20 -23 -59 -23q-80 0 -80 84zM190 289q0 -72 15 -115q16 -47 45 -65q31 -18 59 -25q27 -6 76 -6q104 0 152 45q10 160 10 387 q-53 20 -133 20q-104 0 -164 -47t-60 -194zM446 1329q0 37 21 60q20 25 59 24.5t60 -24.5q23 -27 22 -60q0 -35 -22 -61q-20 -23 -60 -23q-80 0 -80 84z" />
+<glyph unicode="&#xe5;" horiz-adv-x="749" d="M74 285q0 104 24 174q23 68 72 102q45 33 94 45t115 12q109 0 168 -24v180q0 92 -41 127t-121 35q-184 0 -295 -51q-16 33 -16 65q0 29 16 41q35 23 125 37q98 16 197 16q125 0 186 -57q59 -55 59 -190v-123q0 -324 -10 -621q-119 -74 -278 -73q-39 0 -88 4 q-31 2 -78 22.5t-68 48.5q-27 35 -43 90q-18 60 -18 140zM190 289q0 -72 15 -115q16 -47 45 -65q31 -18 59 -25q27 -6 76 -6q104 0 152 45q10 160 10 387q-53 20 -133 20q-104 0 -164 -47t-60 -194zM195 1360q0 186 192 186q88 0 133 -41q43 -39 43 -143q0 -186 -190 -186 q-86 0 -133 43q-45 43 -45 141zM283 1356q0 -98 92 -99q102 0 102 105q0 100 -90 100q-53 0 -78 -24q-26 -27 -26 -82z" />
+<glyph unicode="&#xe6;" horiz-adv-x="1267" d="M74 291q0 197 84 270q80 72 219 72q111 0 170 -25v172q0 94 -45 127q-47 35 -129 35q-170 0 -277 -59q-14 23 -14 67q0 29 18 39q86 55 312 55q96 0 155 -38q51 -35 68 -123q46 95 117 129q68 33 168 32q258 0 258 -317q0 -162 -21 -252q-86 -14 -190 -14q-156 0 -299 31 v-35q0 -125 14 -197q14 -74 49 -110.5t72 -47.5q41 -10 96 -10q154 0 254 70q14 -31 14 -103q0 -12 -37 -30q-25 -12 -104 -31q-63 -14 -137 -14q-182 0 -246 94v-35q-104 -61 -274 -61q-72 0 -111 8q-49 10 -90 35q-45 27 -69.5 94.5t-24.5 171.5zM190 289 q0 -133 47.5 -172t145.5 -39q121 0 164 43v403q-53 20 -133 21q-100 0 -164 -53q-60 -51 -60 -203zM672 586q152 -33 280 -33q68 0 107 8q8 57 8 144q-4 127 -37 182q-35 55 -121 55q-94 0 -157 -72q-66 -73 -80 -284z" />
+<glyph unicode="&#xe7;" horiz-adv-x="675" d="M82 489q0 141 24 246q25 106 58 162q34 58 86 92q57 37 96 45q51 10 105 10q74 0 123 -24.5t49 -56.5q0 -37 -15 -68q-70 47 -159 47q-43 0 -70 -8q-31 -9 -68 -37q-33 -25 -59 -74q-23 -41 -39 -135q-16 -92 -16 -205q0 -237 55 -319t168 -82q121 0 188 61 q14 -31 15 -65q0 -34 -56 -62q-57 -29 -143 -34l-21 -105q4 4 37 4q41 0 72 -31q29 -29 29 -88q0 -78 -43 -118q-41 -39 -105 -39q-61 0 -108 20q10 53 20 68q9 3 19 0l12 -5q12 -5 20 -7q20 -6 39 -7q70 0 70 74q0 72 -68 72l-80 -13l33 175q-135 8 -200 114 q-68 107 -68 393z" />
+<glyph unicode="&#xe8;" horiz-adv-x="768" d="M78 457q0 145 22 262q22 111 56 172q33 57 86 96t98 47q51 10 104 10q258 0 258 -323q0 -156 -20 -246q-182 -37 -489 -37q0 -137 32 -223q31 -78 78 -102q45 -23 129 -23q150 0 246 70q14 -35 14 -80q0 -37 -84 -68q-88 -33 -194 -32q-80 0 -135 18q-57 18 -104.5 65.5 t-72 145.5t-24.5 248zM193 1411q2 20 20 57q16 31 33 31q4 0 135 -108q123 -102 143 -131q-23 -66 -43 -66q-2 0 -139 102q-139 105 -149 115zM195 532q270 0 389 29q8 57 8 137q-2 127 -37 187q-33 57 -121 57q-49 0 -80 -14q-39 -18 -71 -54q-35 -37 -60 -124 q-26 -91 -28 -218z" />
+<glyph unicode="&#xe9;" horiz-adv-x="768" d="M78 457q0 145 22 262q22 111 56 172q33 57 86 96t98 47q51 10 104 10q258 0 258 -323q0 -156 -20 -246q-182 -37 -489 -37q0 -137 32 -223q31 -78 78 -102q45 -23 129 -23q150 0 246 70q14 -35 14 -80q0 -37 -84 -68q-88 -33 -194 -32q-80 0 -135 18q-57 18 -104.5 65.5 t-72 145.5t-24.5 248zM195 532q270 0 389 29q8 57 8 137q-2 127 -37 187q-33 57 -121 57q-49 0 -80 -14q-39 -18 -71 -54q-35 -37 -60 -124q-26 -91 -28 -218zM346 1249q74 74 119 113q94 82 110 94q45 35 50 35q18 0 34 -33q14 -31 19 -57q-14 -18 -111 -90 q-102 -78 -176 -127q-10 0 -22 16q-6 8 -17 33z" />
+<glyph unicode="&#xea;" horiz-adv-x="768" d="M78 457q0 145 22 262q22 111 56 172q33 57 86 96t98 47q51 10 104 10q258 0 258 -323q0 -156 -20 -246q-182 -37 -489 -37q0 -137 32 -223q31 -78 78 -102q45 -23 129 -23q150 0 246 70q14 -35 14 -80q0 -37 -84 -68q-88 -33 -194 -32q-80 0 -135 18q-57 18 -104.5 65.5 t-72 145.5t-24.5 248zM178 1227l228 233q16 4 26 4q27 0 41 -18q199 -199 199 -219q0 -12 -27 -26.5t-57 -14.5q-137 143 -158 176q-150 -174 -174 -174q-51 0 -78 39zM195 532q270 0 389 29q8 57 8 137q-2 127 -37 187q-33 57 -121 57q-49 0 -80 -14q-39 -18 -71 -54 q-35 -37 -60 -124q-26 -91 -28 -218z" />
+<glyph unicode="&#xeb;" horiz-adv-x="768" d="M78 457q0 145 22 262q22 111 56 172q33 57 86 96t98 47q51 10 104 10q258 0 258 -323q0 -156 -20 -246q-182 -37 -489 -37q0 -137 32 -223q31 -78 78 -102q45 -23 129 -23q150 0 246 70q14 -35 14 -80q0 -37 -84 -68q-88 -33 -194 -32q-80 0 -135 18q-57 18 -104.5 65.5 t-72 145.5t-24.5 248zM195 532q270 0 389 29q8 57 8 137q-2 127 -37 187q-33 57 -121 57q-49 0 -80 -14q-39 -18 -71 -54q-35 -37 -60 -124q-26 -91 -28 -218zM207 1329q0 33 22 60q20 25 58 24q40 0 61 -24q20 -23 21 -60q0 -35 -23 -61q-20 -23 -59 -23q-80 0 -80 84z M496 1329q0 33 22 60q23 25 57 24q39 0 60 -24q23 -27 22 -60q0 -35 -22 -61q-20 -23 -60 -23q-79 0 -79 84z" />
+<glyph unicode="&#xec;" horiz-adv-x="348" d="M-59 1411q2 27 18 57.5t35 30.5q2 0 133 -108q127 -106 145 -131q-23 -66 -43 -66q-4 0 -141 102q-131 99 -147 115zM117 0v969q0 39 20 47q18 8 96 8v-997q0 -18 -16 -23q-20 -4 -100 -4z" />
+<glyph unicode="&#xed;" horiz-adv-x="348" d="M92 1249q74 74 119 113l113 94q45 35 47 35q18 0 35 -33q14 -31 18 -57q-14 -18 -111 -90q-102 -78 -176 -127q-10 0 -22 16q-6 8 -17 33zM117 0v969q0 39 20 47q18 8 96 8v-997q0 -18 -16 -23q-20 -4 -100 -4z" />
+<glyph unicode="&#xee;" horiz-adv-x="348" d="M-76 1227l228 233q16 4 26 4q27 0 41 -18q199 -199 199 -219q0 -12 -26.5 -26.5t-57.5 -14.5q-137 143 -158 176q-150 -174 -174 -174q-51 0 -78 39zM117 0v969q0 39 20 47q18 8 96 8v-997q0 -18 -16 -23q-20 -4 -100 -4z" />
+<glyph unicode="&#xef;" horiz-adv-x="348" d="M-47 1329q0 33 22 60q20 25 58 24q40 0 61 -24q20 -23 21 -60q0 -35 -23 -61q-20 -23 -59 -23q-80 0 -80 84zM117 0v969q0 39 20 47q18 8 96 8v-997q0 -18 -16 -23q-20 -4 -100 -4zM242 1329q0 33 22 60q23 25 58 24q40 0 61 -24q20 -23 20 -60q0 -35 -22 -61 q-20 -23 -59 -23q-80 0 -80 84z" />
+<glyph unicode="&#xf0;" horiz-adv-x="892" d="M94 526q0 252 92 383q92 133 258 133q139 0 226 -92q-47 186 -158 328l-197 -78q-31 84 -20 96q2 4 10 9l135 53q-46 46 -129 110q29 55 78 56q27 0 47 -21q78 -63 113 -102l158 63q31 -84 22 -96q-2 -4 -12 -8l-99 -39q201 -268 201 -729q0 -135 -12 -234 q-12 -90 -51 -190q-35 -90 -111 -139q-74 -49 -182 -49q-188 0 -279 129q-90 130 -90 417zM207 510q0 -432 254 -432q78 0 131 41q47 37 74 121q23 74 32 159q8 72 9 199q0 111 -11 197q-86 143 -227 143q-127 0 -194.5 -112.5t-67.5 -315.5z" />
+<glyph unicode="&#xf1;" horiz-adv-x="819" d="M113 0v973q168 72 331 71q158 0 220 -65q61 -65 61 -215v-737q0 -20 -14 -23q-20 -4 -101 -4v733q0 117 -34.5 164t-135.5 47q-125 0 -215 -47v-870q0 -20 -14 -23q-20 -4 -98 -4zM141 1278q84 139 209 139q47 0 96 -51q49 -53 91 -53q47 0 77 24q25 20 43 45 q16 23 23 23q12 0 25 -16q6 -8 16 -33l4 -17q-14 -33 -33 -53q-20 -25 -69 -53q-47 -29 -101 -29q-66 0 -114 56q-47 53 -78 53q-37 0 -62 -23q-27 -23 -43 -47q-16 -23 -24 -22q-33 0 -60 57z" />
+<glyph unicode="&#xf2;" horiz-adv-x="782" d="M63 510q0 535 343 534q164 0 241 -114q76 -113 76 -418q0 -532 -340 -532q-83 0 -135 18q-55 18 -98 72q-43 51 -66 163q-21 103 -21 277zM168 1411q2 20 20 57q16 31 33 31q2 0 133 -108q117 -96 146 -131q-23 -66 -43 -66q-2 0 -140 102q-139 105 -149 115zM184 502 q0 -164 27 -266q25 -96 65 -127t111 -31q215 0 215 438q0 254 -47 340q-49 88 -154 88q-106 0 -161.5 -98t-55.5 -344z" />
+<glyph unicode="&#xf3;" horiz-adv-x="782" d="M63 510q0 535 343 534q164 0 241 -114q76 -113 76 -418q0 -532 -340 -532q-83 0 -135 18q-55 18 -98 72q-43 51 -66 163q-21 103 -21 277zM184 502q0 -164 27 -266q25 -96 65 -127t111 -31q215 0 215 438q0 254 -47 340q-49 88 -154 88q-106 0 -161.5 -98t-55.5 -344z M319 1249q74 74 119 113l113 94q45 35 47 35q16 0 33 -33q18 -35 20 -57q-14 -18 -110 -90q-102 -78 -176 -127q-8 0 -21 16q-10 12 -18 33z" />
+<glyph unicode="&#xf4;" horiz-adv-x="782" d="M63 510q0 535 343 534q164 0 241 -114q76 -113 76 -418q0 -532 -340 -532q-83 0 -135 18q-55 18 -98 72q-43 51 -66 163q-21 103 -21 277zM152 1227l227 233q16 4 27 4q25 0 40 -18q199 -199 199 -219q0 -12 -26.5 -26.5t-57.5 -14.5q-137 143 -158 176 q-150 -174 -174 -174q-50 0 -77 39zM184 502q0 -164 27 -266q25 -96 65 -127t111 -31q215 0 215 438q0 254 -47 340q-49 88 -154 88q-106 0 -161.5 -98t-55.5 -344z" />
+<glyph unicode="&#xf5;" horiz-adv-x="782" d="M63 510q0 535 343 534q164 0 241 -114q76 -113 76 -418q0 -532 -340 -532q-83 0 -135 18q-55 18 -98 72q-43 51 -66 163q-21 103 -21 277zM109 1278q84 139 208 139q45 0 95 -51q49 -53 92 -53q45 0 75.5 24.5t45.5 44.5q16 23 22 23q10 0 23 -16q6 -8 16 -33l6 -17 q-14 -33 -33 -53q-20 -25 -69 -53q-47 -29 -101 -29q-68 0 -114 56q-45 53 -78 53q-37 0 -61 -23q-27 -23 -43 -47q-16 -23 -25 -22q-32 0 -59 57zM184 502q0 -164 27 -266q25 -96 65 -127t111 -31q215 0 215 438q0 254 -47 340q-49 88 -154 88q-106 0 -161.5 -98 t-55.5 -344z" />
+<glyph unicode="&#xf6;" horiz-adv-x="782" d="M63 510q0 535 343 534q164 0 241 -114q76 -113 76 -418q0 -532 -340 -532q-83 0 -135 18q-55 18 -98 72q-43 51 -66 163q-21 103 -21 277zM180 1329q0 37 21 60q20 25 59 24.5t59 -24.5q23 -27 23 -60q0 -35 -23 -61q-20 -23 -59 -23q-80 0 -80 84zM184 502 q0 -164 27 -266q25 -96 65 -127t111 -31q215 0 215 438q0 254 -47 340q-49 88 -154 88q-106 0 -161.5 -98t-55.5 -344zM469 1329q0 33 23 60q20 25 57 24q40 0 61 -24q20 -23 21 -60q0 -35 -23 -61q-20 -23 -59 -23q-80 0 -80 84z" />
+<glyph unicode="&#xf7;" d="M86 526v49q0 20 2 31q4 16 8 19q8 4 17 4h690q0 -53 -4 -82q-2 -20 -25 -21h-688zM358 287q0 39 21 61q23 25 59 25q82 0 82 -86q0 -33 -22 -60q-23 -25 -60 -24q-80 0 -80 84zM358 856q0 37 21 59q23 25 59 25q82 0 82 -84q0 -35 -22 -61q-23 -25 -60 -25q-80 0 -80 86z " />
+<glyph unicode="&#xf8;" horiz-adv-x="866" d="M57 4q0 10 95 166q-37 117 -37 340q0 535 338 534q158 0 227 -94q59 104 74 119q68 -15 67 -49q0 -16 -92 -164q43 -123 43 -344q0 -532 -330 -532q-178 0 -245 98l-32 -52.5t-27 -46t-15 -24.5q-12 2 -41 16q-25 13 -25 33zM233 502q0 -147 17 -232l348 592 q-43 82 -147 82q-106 0 -162 -98t-56 -344zM279 174q47 -96 157 -96q215 0 215 438q0 156 -20 252z" />
+<glyph unicode="&#xf9;" horiz-adv-x="849" d="M119 346v649q0 25 14 27q10 2 100 2v-692q0 -147 39 -199q41 -53 158 -53q111 0 188 47v868q0 23 15 25q20 4 98 4v-973q-139 -72 -311 -71.5t-238 83.5q-63 82 -63 283zM197 1411q2 27 18 57q14 31 35 31q4 0 135 -108q123 -102 143 -131q-23 -66 -43 -66q-4 0 -141 102 q-131 99 -147 115z" />
+<glyph unicode="&#xfa;" horiz-adv-x="849" d="M119 346v649q0 25 14 27q10 2 100 2v-692q0 -147 39 -199q41 -53 158 -53q111 0 188 47v868q0 23 15 25q20 4 98 4v-973q-139 -72 -311 -71.5t-238 83.5q-63 82 -63 283zM348 1249q74 74 119 113l113 94q45 35 47 35q18 0 35 -33q14 -31 18 -57q-14 -18 -111 -90 q-102 -78 -176 -127q-10 0 -22 16q-6 8 -17 33z" />
+<glyph unicode="&#xfb;" horiz-adv-x="849" d="M119 346v649q0 25 14 27q10 2 100 2v-692q0 -147 39 -199q41 -53 158 -53q111 0 188 47v868q0 23 15 25q20 4 98 4v-973q-139 -72 -311 -71.5t-238 83.5q-63 82 -63 283zM180 1227l228 233q16 4 26 4q25 0 41 -18q199 -199 199 -219q0 -12 -26.5 -26.5t-57.5 -14.5 q-137 143 -158 176q-150 -174 -174 -174q-51 0 -78 39z" />
+<glyph unicode="&#xfc;" horiz-adv-x="849" d="M119 346v649q0 25 14 27q10 2 100 2v-692q0 -147 39 -199q41 -53 158 -53q111 0 188 47v868q0 23 15 25q20 4 98 4v-973q-139 -72 -311 -71.5t-238 83.5q-63 82 -63 283zM209 1329q0 33 22 60q23 25 58 24q40 0 61 -24q20 -23 21 -60q0 -35 -23 -61q-20 -23 -59 -23 q-80 0 -80 84zM498 1329q0 33 22 60q20 25 58 24q40 0 61 -24q20 -23 20 -60q0 -35 -22 -61q-20 -23 -59 -23q-80 0 -80 84z" />
+<glyph unicode="&#xfd;" horiz-adv-x="755" d="M2 -334q0 39 21 66q61 -29 124 -29q127 0 187 264l-266 1022q-6 29 8 31q20 4 100 4l154 -602l59 -318q18 141 55 320l138 565q3 28 18 31q20 4 102 4l-270 -1087q-47 -182 -110 -256q-66 -76 -170 -76q-150 0 -150 61zM309 1249q74 74 119 113l113 94q45 35 47 35 q16 0 33 -33q18 -35 20 -57q-14 -18 -111 -90q-102 -78 -176 -127q-8 0 -20 16q-10 12 -19 33z" />
+<glyph unicode="&#xfe;" horiz-adv-x="817" d="M117 -365v1815q0 37 18 47q16 8 94 8v-489q78 27 183 26q168 0 254 -98q84 -96 84 -342q0 -158 -25 -274q-25 -115 -61 -181q-35 -61 -89 -104q-43 -35 -90 -49q-39 -12 -82 -12q-117 0 -174 63v-446q-23 -8 -65 -9q-29 0 -37 9q-10 9 -10 36zM229 158q47 -78 144 -78 q29 0 59 10q29 10 66 43q41 37 65.5 84t44.5 150q18 96 19 223q0 203 -54 278q-53 74 -163 74q-102 0 -181 -53v-731z" />
+<glyph unicode="&#xff;" horiz-adv-x="755" d="M2 -334q0 39 21 66q61 -29 124 -29q127 0 187 264l-266 1022q-6 29 8 31q20 4 100 4l154 -602l59 -318q18 141 55 320l138 565q3 28 18 31q20 4 102 4l-270 -1087q-47 -182 -110 -256q-66 -76 -170 -76q-150 0 -150 61zM170 1329q0 33 23 60q20 25 57 24q40 0 61 -24 q20 -23 21 -60q0 -35 -23 -61q-20 -23 -59 -23q-80 0 -80 84zM459 1329q0 33 22 60q23 25 58 24q40 0 61 -24q20 -23 21 -60q0 -35 -23 -61q-20 -23 -59 -23q-80 0 -80 84z" />
+<glyph unicode="&#x131;" horiz-adv-x="348" d="M117 0v969q0 39 20 47q18 8 96 8v-997q0 -18 -16 -23q-20 -4 -100 -4z" />
+<glyph unicode="&#x141;" horiz-adv-x="671" d="M12 721q0 20 17 31l84 26v615q0 31 14 37q10 4 100 4v-617l209 68q18 -57 18.5 -78t-16.5 -29l-211 -69v-603h406v-79q0 -27 -29 -27h-491v670l-84 -27q-17 66 -17 78z" />
+<glyph unicode="&#x142;" horiz-adv-x="346" d="M-2 694q0 18 2 22.5t14 8.5l103 33v692q0 37 18 47q16 8 94 8v-708l105 34l12 -47q4 -20 4 -30q0 -16 -2 -20.5t-14 -8.5l-105 -35v-663q0 -18 -14 -23q-16 -4 -98 -4v651l-103 -33q-4 16 -7 26.5t-5 19.5q-4 20 -4 30z" />
+<glyph unicode="&#x152;" horiz-adv-x="1282" d="M74 725q0 391 94 559q96 170 295 170q178 0 262 -133v84q0 29 27 29h477q0 -78 -2 -88q-4 -16 -21 -17h-383v-493h359q0 -76 -2 -88q-2 -16 -23 -17h-334v-627h404q0 -80 -2 -90q-2 -14 -25 -14h-475v133q-84 -152 -279 -151q-201 0 -288 161q-84 156 -84 582zM199 692 q0 -322 57 -465q55 -137 193 -137q139 0 194 145.5t55 495.5q0 338 -51 479q-49 135 -182 136q-137 0 -203 -152q-63 -148 -63 -502z" />
+<glyph unicode="&#x153;" horiz-adv-x="1314" d="M76 510q0 535 340 534q203 0 270 -170q47 102 125 138q72 33 176 32q258 0 258 -317q0 -162 -20 -252q-180 -37 -490 -37q0 -111 17 -188q14 -68 51 -104.5t69 -45.5q41 -10 95 -10q158 0 254 70q14 -35 14 -105q0 -12 -37 -30q-27 -12 -104 -31q-63 -14 -138 -14 q-113 0 -180 32q-70 33 -108 127q-82 -160 -262 -159q-86 0 -141.5 18t-100.5 72q-45 55 -68 163q-20 103 -20 277zM197 502q0 -164 26 -266q25 -96 66 -127q39 -31 110 -31q215 0 215 438q0 252 -49 338q-51 88 -151 88q-106 0 -161.5 -98t-55.5 -342zM735 532 q272 0 391 29q8 57 9 144q-4 133 -35 184q-33 53 -123 53q-46 0 -80 -12q-39 -14 -74 -51q-37 -41 -61 -125q-23 -83 -27 -222z" />
+<glyph unicode="&#x160;" horiz-adv-x="753" d="M68 88q0 43 32 80q76 -74 230 -74q246 0 245 250q0 80 -32 156q-31 70 -111 155l-221 232q-139 158 -139 291q0 125 92 200q90 76 252 76q131 0 192 -27q66 -29 66 -63q0 -37 -31 -68q-74 55 -219 56q-104 0 -170 -47q-63 -45 -64 -125q0 -94 113 -222l244 -251 q86 -92 115 -168q33 -86 32 -185q0 -170 -86 -272t-270 -102q-125 0 -199 34q-71 35 -71 74zM166 1829q14 33 27 47q18 23 30.5 22.5t61.5 -49.5q63 -63 92 -96l43 -47l80 96q57 66 67 76l27 25q47 -29 47 -56q0 -23 -102 -137q-100 -113 -121 -113t-127 103 q-100 98 -125 129z" />
+<glyph unicode="&#x161;" horiz-adv-x="751" d="M80 68q0 35 24 69q90 -53 224 -53q221 0 221 158q0 113 -115 198l-215 156q-82 57 -108.5 104.5t-26.5 110.5q0 109 88 170q92 63 246 63q80 0 151 -20q63 -18 86 -40.5t23 -41.5q0 -35 -27 -63q-102 66 -223 65q-96 0 -155.5 -35t-59.5 -98q0 -76 100 -143l222 -158 q139 -115 139 -254q0 -135 -88 -205q-90 -72 -248 -71q-113 0 -188 26q-70 25 -70 62zM170 1419q14 33 25 47q16 23 32 23q14 0 62 -47q63 -63 92 -96l43 -50l80 97q43 49 67 73l27 27q47 -29 47 -55q0 -23 -102 -138q-100 -113 -121 -112.5t-127 102.5q-80 78 -125 129z " />
+<glyph unicode="&#x178;" horiz-adv-x="737" d="M12 1415q-6 14 13 17q10 2 114 2l99 -293q43 -115 86 -262q49 -166 53 -193q14 106 139 457l90 270q2 12 21 17q20 4 102 4l-299 -848v-559q0 -18 -14 -23q-16 -4 -99 -4v582zM156 1739q0 33 22 59q23 25 58 25q41 0 61 -22.5t20 -61.5q0 -33 -22 -60q-20 -25 -59 -24 q-80 0 -80 84zM444 1739q0 37 21 59q23 25 59 25q39 0 60 -23q23 -27 22 -61q0 -33 -22 -60q-23 -25 -60 -24q-80 0 -80 84z" />
+<glyph unicode="&#x17d;" horiz-adv-x="802" d="M47 45q0 29 10 55l564 1231h-435q-55 0 -84 -4v78q0 29 29 29h610q12 -16 13 -39q0 -27 -13 -58l-569 -1235h461q78 0 108 13v-88q0 -27 -26 -27h-649q-19 16 -19 45zM195 1829q14 33 26 47q18 23 30.5 22.5t61.5 -49.5q63 -63 93 -96l43 -47l79 96q43 49 70 76l25 25 q47 -29 47 -56q0 -25 -100.5 -137.5t-123.5 -112.5q-20 0 -127 103q-99 98 -124 129z" />
+<glyph unicode="&#x17e;" horiz-adv-x="743" d="M59 57q0 25 13 45l481 824h-248q-166 0 -231 -11q-4 37 -4 56q0 53 36 53h566q12 -12 12 -37q0 -33 -14 -59l-477 -822h237q184 0 248 17q2 -8 2 -53q0 -70 -43 -70h-557q-21 18 -21 57zM139 1419q14 33 25 47q16 23 33 23q14 0 61 -47q63 -63 92 -96l43 -50l80 97 q29 33 70 73l24 27q47 -29 47 -55q0 -23 -102 -138q-100 -113 -121 -112q-18 0 -125 102q-94 90 -127 129z" />
+<glyph unicode="&#x17f;" horiz-adv-x="354" d="M106 2q14 43 15 119v1081q0 166 86 238q88 72 252 71q98 0 167.5 -30.5t69.5 -59.5q0 -43 -28 -78q-86 68 -211 68q-119 0 -172 -57q-51 -53 -52 -195v-1122q0 -33 -14 -43t-51 -10q-44 0 -62 18z" />
+<glyph unicode="&#x192;" horiz-adv-x="974" d="M33 -338q0 35 14 66q63 -25 152 -25q53 0 84 6q35 6 71 27q39 20 58 74q20 57 20 133v979h-278v49q0 10 4 30q4 16 8 19q8 4 14 4h252v139q0 98 21 162q20 68 53 102.5t80 53.5q59 23 88 24q49 4 92 4q86 0 131 -18t45 -45q0 -33 -12 -64q-68 25 -152 25q-52 0 -86 -6 q-33 -6 -71.5 -26.5t-57.5 -74.5q-18 -52 -18 -135v-141h325q0 -59 -4 -84q-3 -18 -24 -18h-297v-975q0 -100 -21 -164q-20 -68 -53 -102.5t-80 -53.5q-59 -23 -88 -24q-49 -4 -92 -4q-80 0 -131 20q-47 18 -47 43z" />
+<glyph unicode="&#x237;" horiz-adv-x="370" d="M-231 -305q0 39 18 63q90 -53 197 -53q94 0 120 55q27 53 27 187v1022q0 39 19 47q16 8 94 8v-1100q0 -156 -53.5 -239.5t-198.5 -83.5q-102 0 -164 28q-59 29 -59 66z" />
+<glyph unicode="&#x2c6;" horiz-adv-x="491" d="M0 1227l227 233q16 4 27 4q25 0 41 -18q199 -199 199 -219q0 -12 -27 -26.5t-57 -14.5q-137 143 -158 176q-150 -174 -174 -174q-51 0 -78 39z" />
+<glyph unicode="&#x2c7;" horiz-adv-x="473" d="M0 1419q14 33 25 47q16 23 32 23q14 0 62 -47q63 -63 92 -96l43 -50l80 97q43 49 67 73l27 27q47 -29 47 -55q0 -23 -102 -138q-100 -113 -121 -112.5t-127 102.5q-80 78 -125 129z" />
+<glyph unicode="&#x2d8;" horiz-adv-x="497" d="M0 1413q0 43 63 62q63 -178 183 -179q49 0 84 27t51 55q2 4 35 74q18 31 49 12q33 -18 35 -51q-72 -225 -256 -225q-102 0 -172 82q-72 84 -72 143z" />
+<glyph unicode="&#x2d9;" horiz-adv-x="131" d="M2 1370q0 94 68 94q63 0 63 -92q-4 -96 -70 -96q-63 0 -61 94z" />
+<glyph unicode="&#x2da;" horiz-adv-x="366" d="M0 1360q0 186 193 186q90 0 135 -41q41 -39 41 -143q0 -186 -191 -186q-88 0 -133 43t-45 141zM88 1356q0 -98 92 -99q102 0 103 105q0 100 -90 100q-53 0 -78 -24q-27 -27 -27 -82z" />
+<glyph unicode="&#x2db;" horiz-adv-x="260" d="M0 -233q0 90 57 167q55 76 127 99q20 12 39 8q27 -6 37 -41q-63 -35 -110.5 -96.5t-47.5 -124.5q0 -90 82 -90q29 0 62 16q12 -25 14 -41q0 -20 -2 -24q-8 -39 -100 -39q-158 0 -158 166z" />
+<glyph unicode="&#x2dc;" horiz-adv-x="581" d="M0 1278q84 139 209 139q45 0 94 -51q49 -53 92 -53q45 0 76 24.5t45 44.5q16 23 23 23q10 0 22 -16q10 -12 19 -33l4 -17q-14 -33 -33 -53q-20 -25 -70 -53q-47 -29 -100 -29q-66 0 -115 56q-47 53 -78 53q-37 0 -61 -23q-27 -23 -43 -47q-16 -23 -25 -22q-32 0 -59 57z " />
+<glyph unicode="&#x2dd;" horiz-adv-x="604" d="M106 1212l205 304q12 23 41 22q12 0 25 -6q12 12 33 12q28 0 49 -18.5t24 -48.5l-229 -297q-10 -16 -31 -17q-18 0 -33 13l-2 -5q-10 -10 -26 -10q-20 0 -37 15q-15 11 -19 36z" />
+<glyph unicode="&#x394;" horiz-adv-x="899" d="M57 0l328 1366q16 74 82 74q39 0 55 -15l338 -1425h-803zM188 106h545l-270 1164h-6z" />
+<glyph unicode="&#x2206;" horiz-adv-x="899" d="M57 0l328 1366q16 74 82 74q39 0 55 -15l338 -1425h-803zM188 106h545l-270 1164h-6z" />
+<glyph unicode="&#x3a9;" horiz-adv-x="942" d="M94 49q0 57 39 57h133q-168 248 -168 666q0 356 95 518q96 164 301 164q193 0 272 -154q78 -150 78 -520q0 -240 -56 -415q-55 -178 -118 -259h168q10 -35 10 -51q0 -55 -43 -55h-273q80 121 140 315q59 197 59 410q0 334 -59 475q-57 137 -191 137q-137 0 -202 -133 q-66 -135 -66 -461q0 -223 57.5 -427.5t132.5 -315.5h-301q-8 22 -8 49z" />
+<glyph unicode="&#x2126;" horiz-adv-x="942" d="M94 49q0 57 39 57h133q-168 248 -168 666q0 356 95 518q96 164 301 164q193 0 272 -154q78 -150 78 -520q0 -240 -56 -415q-55 -178 -118 -259h168q10 -35 10 -51q0 -55 -43 -55h-273q80 121 140 315q59 197 59 410q0 334 -59 475q-57 137 -191 137q-137 0 -202 -133 q-66 -135 -66 -461q0 -223 57.5 -427.5t132.5 -315.5h-301q-8 22 -8 49z" />
+<glyph unicode="&#x3c0;" horiz-adv-x="903" d="M70 963q0 61 41 61h710q10 -27 10 -53q0 -55 -43 -56h-81v-882q0 -41 -60 -41q-31 0 -53 8v915h-295v-882q0 -41 -59 -41q-23 0 -54 8v915h-106q-10 25 -10 48z" />
+<glyph unicode="&#x2000;" horiz-adv-x="976" />
+<glyph unicode="&#x2001;" horiz-adv-x="1955" />
+<glyph unicode="&#x2002;" horiz-adv-x="976" />
+<glyph unicode="&#x2003;" horiz-adv-x="1955" />
+<glyph unicode="&#x2004;" horiz-adv-x="651" />
+<glyph unicode="&#x2005;" horiz-adv-x="487" />
+<glyph unicode="&#x2006;" horiz-adv-x="325" />
+<glyph unicode="&#x2007;" horiz-adv-x="325" />
+<glyph unicode="&#x2008;" horiz-adv-x="243" />
+<glyph unicode="&#x2009;" horiz-adv-x="389" />
+<glyph unicode="&#x200a;" horiz-adv-x="106" />
+<glyph unicode="&#x2010;" horiz-adv-x="591" d="M88 526v49q0 20 2 31q4 16 8 19q8 4 17 4h391q0 -53 -4 -82q-2 -20 -25 -21h-389z" />
+<glyph unicode="&#x2011;" horiz-adv-x="591" d="M88 526v49q0 20 2 31q4 16 8 19q8 4 17 4h391q0 -53 -4 -82q-2 -20 -25 -21h-389z" />
+<glyph unicode="&#x2012;" horiz-adv-x="591" d="M88 526v49q0 20 2 31q4 16 8 19q8 4 17 4h391q0 -53 -4 -82q-2 -20 -25 -21h-389z" />
+<glyph unicode="&#x2013;" horiz-adv-x="890" d="M88 526v49q0 20 2 31q4 16 8 19q8 4 17 4h690q0 -53 -4 -82q-2 -20 -25 -21h-688z" />
+<glyph unicode="&#x2014;" horiz-adv-x="1431" d="M12 526v49q0 20 2 31q4 16 9 19q8 4 16 4h1382q0 -53 -4 -82q-2 -20 -24 -21h-1381z" />
+<glyph unicode="&#x2018;" horiz-adv-x="323" d="M76 1284q0 90 49 213t76 123q41 0 47 -37q-45 -88 -47 -231q41 -25 41 -82q0 -33 -23 -60q-23 -25 -57 -24q-86 0 -86 98z" />
+<glyph unicode="&#x2019;" horiz-adv-x="323" d="M78 1212q45 92 47 232q-41 25 -41 82q0 35 22 61q20 23 60 23q84 0 84 -99q0 -90 -49 -212.5t-76 -122.5q-39 -1 -47 36z" />
+<glyph unicode="&#x201a;" horiz-adv-x="319" d="M78 -193q45 92 47 232q-41 25 -41 82q0 35 22 61q20 23 60 23q84 0 84 -99q0 -90 -49 -212.5t-76 -122.5q-39 -1 -47 36z" />
+<glyph unicode="&#x201c;" horiz-adv-x="608" d="M76 1284q0 90 49 213t76 123q41 0 47 -37q-45 -88 -47 -231q41 -25 41 -82q0 -33 -23 -60q-23 -25 -57 -24q-86 0 -86 98zM360 1284q0 96 48 213q49 123 77 123q39 0 47 -37q-45 -88 -47 -231q39 -25 39 -82q0 -33 -22 -60q-23 -25 -58 -24q-84 0 -84 98z" />
+<glyph unicode="&#x201d;" horiz-adv-x="608" d="M78 1212q45 92 47 232q-41 25 -41 82q0 35 22 61q20 23 60 23q84 0 84 -99q0 -90 -49 -212.5t-76 -122.5q-39 -1 -47 36zM360 1212q43 80 50 232q-41 25 -41 82q0 33 22 59q23 25 58 25q84 0 83 -99q0 -90 -49 -212.5t-73 -122.5q-41 -1 -50 36z" />
+<glyph unicode="&#x201e;" horiz-adv-x="604" d="M78 -193q45 92 47 232q-41 25 -41 82q0 35 22 61q20 23 60 23q84 0 84 -99q0 -90 -49 -212.5t-76 -122.5q-39 -1 -47 36zM360 -193q43 82 50 232q-41 25 -41 82q0 35 22 61q20 23 58 23q84 0 83 -99q0 -90 -49 -212.5t-73 -122.5q-41 -1 -50 36z" />
+<glyph unicode="&#x2020;" horiz-adv-x="880" d="M76 985q0 37 26 64l260 -31q20 -6 24.5 -28.5t-9.5 -37.5l-248 -28q-23 -4 -39 16q-14 16 -14 45zM381 16l29 889q4 16 14 23q16 8 27 6q15 -3 24 -12l29 -879q4 -25 -17 -41q-16 -14 -45 -14q-43 -1 -61 28zM381 1395q-4 25 16.5 39t48.5 14q39 0 60 -27l-29 -366 q-6 -23 -28.5 -27t-36.5 10zM500 976.5q-4 24.5 8 39.5l246 31q25 8 39 -12.5t14 -51.5q0 -41 -27 -61l-258 28q-18 2 -22 26.5z" />
+<glyph unicode="&#x2021;" horiz-adv-x="880" d="M76 449q0 39 26 61l258 -29q18 -6 22.5 -28.5t-7.5 -36.5l-246 -31q-25 -8 -39 12.5t-14 51.5zM76 985q0 37 26 64l260 -31q20 -6 24.5 -28.5t-9.5 -37.5l-248 -28q-23 -4 -39 16q-14 16 -14 45zM377 20l31 357q4 23 26.5 27t36.5 -11l31 -344q2 -27 -14.5 -41t-51.5 -14 q-36 -1 -59 26zM381 1395q-4 25 16.5 39t48.5 14q39 0 60 -27l-29 -366q-6 -23 -28.5 -27t-36.5 10zM403 504v393q0 29 23 35q27 6 55 -8v-392q0 -29 -22 -34q-22 -6 -56 6zM494 440q-3 22 12 37l248 29q25 4 39 -14q14 -16 14 -48q0 -39 -27 -63l-258 31q-24 5 -28 28z M500 976.5q-4 24.5 8 39.5l246 31q25 8 39 -12.5t14 -51.5q0 -41 -27 -61l-258 28q-18 2 -22 26.5z" />
+<glyph unicode="&#x2022;" horiz-adv-x="436" d="M104 578q0 55 33 94t90 39q59 0 95 -37q35 -39 34 -96q0 -53 -34 -95q-33 -39 -95 -39q-123 1 -123 134z" />
+<glyph unicode="&#x2026;" horiz-adv-x="997" d="M90 82q0 41 23 65q25 27 63 27q90 0 90 -92q0 -37 -24 -66q-25 -27 -66 -26q-86 0 -86 92zM412 82q0 37 24 65q25 27 62 27q90 0 90 -92q0 -37 -25 -66q-25 -27 -65 -26q-86 0 -86 92zM733 82q0 41 23 65q25 27 63 27q90 0 90 -92q0 -37 -24 -66q-25 -27 -66 -26 q-86 0 -86 92z" />
+<glyph unicode="&#x202f;" horiz-adv-x="389" />
+<glyph unicode="&#x2030;" horiz-adv-x="2050" d="M125 1075q0 377 289 377q143 0 207 -82q66 -84 65 -293q0 -379 -283 -379q-76 0 -118 15q-49 16 -86 53t-55.5 114.5t-18.5 194.5zM229 25l865 1427q66 -18 65 -51q0 -4 -215 -361l-430 -708l-215 -352q-70 14 -70 45zM233 1067q0 -164 39 -221.5t129 -57.5 q178 0 179 289q0 166 -39 223q-41 59 -127 60q-181 0 -181 -293zM748 360q0 377 288 377q141 0 207 -84t66 -293q0 -379 -281 -378q-145 0 -213 75q-67 78 -67 303zM856 352q0 -164 41 -223q39 -57 127 -57q180 0 180 288q0 160 -41 224q-41 61 -125 61q-182 0 -182 -293z M1364 360q0 377 291 377q141 0 206.5 -84t65.5 -293q0 -379 -282 -378q-76 0 -119 14q-49 16 -86 53q-39 39 -58 115q-18 76 -18 196zM1473 352q0 -162 40.5 -221t128.5 -59q178 0 179 288q0 164 -39 224q-41 61 -127 61q-182 0 -182 -293z" />
+<glyph unicode="&#x2039;" horiz-adv-x="522" d="M57 512q0 53 305 512q18 0 35 -14q23 -18 27 -29l6 -14q0 -23 -65 -138q-66 -117 -134 -217l-65 -100q272 -395 272 -442q-27 -70 -65 -70q-316 453 -316 512z" />
+<glyph unicode="&#x203a;" horiz-adv-x="522" d="M88 67.5q0 22.5 68 133.5q37 61 137 211l67 100q-266 397 -266 455q0 39 70 57q303 -457 303 -512q0 -23 -78 -154q-68 -113 -158 -241l-77 -117l-19 6q-12 4 -29 21q-18 18 -18 40.5z" />
+<glyph unicode="&#x2044;" horiz-adv-x="399" d="M-250 27l817 1400q8 27 37 27q43 0 76 -43l-819 -1411q-8 -18 -33 -18q-51 0 -78 45z" />
+<glyph unicode="&#x205f;" horiz-adv-x="487" />
+<glyph unicode="&#x2074;" horiz-adv-x="837" d="M106 797q0 27 15 63q41 127 147 293q111 172 205 262q37 39 92 39q10 0 47 -6v-596h144q10 -27 10 -55q0 -53 -35 -54h-119v-122q0 -39 -61 -39q-20 0 -45 6v155h-383q-17 21 -17 54zM217 846h291l4 467q-86 -78 -168 -207q-90 -139 -127 -260z" />
+<glyph unicode="&#x20ac;" d="M45 430q0 57 8 74q10 20 39 20h135v29q0 94 6 170h-188q0 57 8 74q10 20 39 20h152q23 135 59 219q39 86 96 131q53 41 107 58q55 16 114.5 16t108.5 -16.5t66 -32.5q20 -20 20 -31q0 -53 -22 -76q-10 8 -60 31q-43 18 -90 19q-41 0 -82 -11q-37 -8 -78 -40.5t-71 -98.5 q-33 -72 -47 -168h333q0 -53 -10 -73.5t-37 -20.5h-299q-6 -76 -6 -170v-29h277q0 -59 -9 -75q-8 -18 -39 -19h-225q10 -113 30.5 -182.5t59.5 -104.5q37 -33 72 -43q37 -10 86 -10q125 0 199 74q18 -37 18 -76q0 -31 -71.5 -69.5t-163.5 -38.5q-72 0 -127.5 16t-102.5 57 q-49 43 -80 140q-29 92 -39 237h-186z" />
+<glyph unicode="&#x2122;" horiz-adv-x="1083" d="M70 1368v45q0 16 20 21h414v-45q0 -20 -19 -21h-155v-565q0 -12 -11 -17q-6 -2 -59 -2v584h-190zM553 784v629q0 20 20 21h43l103 -285l49 -125l41 123l98 266q6 20 21 21h49v-629q0 -12 -10 -17q-12 -4 -60 -4l2 234q0 35 6 237l-22 -65q-6 -20 -12.5 -35.5t-10.5 -26.5 q-2 -6 -4 -13t-4 -11l-2 -4l-67 -176q-4 -10 -11 -11h-43l-71 187l-56 151q8 -182 9 -235l2 -211q0 -14 -9 -17q-12 -4 -61 -4z" />
+<glyph unicode="&#x2202;" horiz-adv-x="892" d="M94 526q0 252 92 383q92 133 258 133q139 0 226 -92q-77 304 -357 516q23 55 78 56q27 0 45 -19q197 -151 289 -368q94 -223 94 -543q0 -135 -12 -234q-12 -90 -51 -190q-35 -90 -111 -139q-74 -49 -182 -49q-188 0 -279 129q-90 130 -90 417zM207 510q0 -432 254 -432 q78 0 131 41q47 37 74 121q23 74 32 159q8 72 9 199q0 111 -11 197q-86 143 -227 143q-127 0 -194.5 -112.5t-67.5 -315.5z" />
+<glyph unicode="&#x220f;" horiz-adv-x="903" d="M70 1372q0 61 41 62h710q10 -27 10 -54q0 -55 -43 -55h-81v-1679q0 -41 -60 -41q-20 0 -53 8v1712h-295v-1679q0 -41 -59 -41q-23 0 -54 8v1712h-106q-10 24 -10 47z" />
+<glyph unicode="&#x2211;" horiz-adv-x="829" d="M119 -389l334 821l-332 1002h555q6 -31 6 -43q0 -63 -39 -64h-360l286 -903l-293 -707h410q6 -25 6 -49q0 -57 -39 -57h-534z" />
+<glyph unicode="&#x2212;" d="M86 526v49q0 20 2 31q4 16 8 19q8 4 17 4h690q0 -53 -4 -82q-2 -20 -25 -21h-688z" />
+<glyph unicode="&#x221a;" horiz-adv-x="952" d="M113 453q20 27 65 26q43 0 49 -30l162 -605l209 1590h305q8 -23 8 -54q0 -53 -39 -53h-174l-225 -1665q-8 -57 -76 -57q-27 0 -61 10z" />
+<glyph unicode="&#x221e;" horiz-adv-x="1273" d="M106 547q0 121 62 207q59 84 211 84q104 0 162 -50q59 -51 108 -135q55 90 111 135q61 49 153 50q119 0 187 -76q70 -80 69 -215q0 -291 -247 -301q-27 -2 -76 8q-141 29 -215 186q-119 -184 -262 -184q-127 0 -195 82q-68 83 -68 209zM217 547q0 -78 41 -131.5 t117 -53.5q68 0 119 48q47 45 94 135l-2 8q-25 72 -70 119q-45 49 -106 51q-53 4 -91 -12q-102 -37 -102 -164zM692 543q78 -188 199 -189q77 0 123 49q45 47 45 144q0 137 -105 174q-23 8 -63 4q-31 0 -60 -12q-27 -12 -38 -25l-33 -39q-5 -6 -68 -106z" />
+<glyph unicode="&#x222b;" horiz-adv-x="974" d="M33 -338q0 35 14 66q63 -25 152 -25q53 0 84 6q35 6 71 27q39 20 58 74q20 57 20 133v1220q0 98 21 162q20 68 53 102.5t80 53.5q59 23 88 24q49 4 92 4q86 0 131 -18t45 -45q0 -33 -12 -64q-68 25 -152 25q-52 0 -86 -6q-33 -6 -71.5 -26.5t-57.5 -74.5 q-18 -52 -18 -135v-1218q0 -100 -21 -164q-20 -68 -53 -102.5t-80 -53.5q-59 -23 -88 -24q-49 -4 -92 -4q-80 0 -131 20q-47 18 -47 43z" />
+<glyph unicode="&#x2248;" horiz-adv-x="817" d="M31 393q37 49 94 84q66 39 141 39q71 0 148 -49q78 -49 139 -49q84 0 182 80q18 10 35 -6q14 -14 21 -48q-90 -133 -246 -133q-84 0 -156 51.5t-123 51.5q-90 0 -160 -82q-27 -18 -49 4q-24 24 -26 57zM31 657q96 127 241 127q68 0 146 -51q74 -49 135 -49q96 0 160 82 q16 16 35 10q20 -6 28 -24q6 -31 -2 -62q-80 -111 -225 -110q-78 0 -156 49q-77 49 -129 49q-31 0 -65 -10q-27 -8 -47 -21q-14 -8 -41 -29q-6 -6 -13.5 -10l-11.5 -6l-4 -2q-14 -8 -31 8q-18 18 -20 49z" />
+<glyph unicode="&#x2260;" horiz-adv-x="817" d="M49 281v49q0 20 2 30q2 14 10.5 18.5t14.5 4.5h221l94 254h-342v49q0 18 2 29q4 16 10 20q8 4 15 4h352l100 271q10 29 39 28q33 0 74 -39l-96 -260h221q0 -57 -4 -82q-4 -20 -25 -20h-229l-92 -254h350q0 -57 -4 -82q-4 -20 -25 -20h-360l-98 -271q-10 -23 -39 -22 q-41 0 -74 39l92 254h-209z" />
+<glyph unicode="&#x2264;" horiz-adv-x="851" d="M104 578q0 43 39 63l549 270q37 -37 41 -75q0 -25 -22 -37l-459 -226l487 -211q-4 -41 -18 -65q-16 -25 -33 -25q-20 0 -49 15l-514 225q-21 27 -21 66zM119 0q0 57 4 82q4 20 24 20h603q0 -59 -5 -84q-3 -18 -24 -18h-602z" />
+<glyph unicode="&#x2265;" horiz-adv-x="841" d="M104 815q2 39 19 64q16 27 35 26q10 0 47 -14l514 -225q20 -27 20 -68q0 -43 -39 -63l-550 -271q-37 39 -37 76q0 29 20 37l459 225zM119 0q0 57 4 82q4 20 24 20h586q0 -59 -4 -84q-3 -18 -24 -18h-586z" />
+<glyph unicode="&#x25ca;" horiz-adv-x="958" d="M74 717l409 727l410 -727l-410 -727zM197 717l286 -504l285 504l-285 506z" />
+<glyph unicode="&#xe000;" horiz-adv-x="1025" d="M0 1025h1025v-1025h-1025v1025z" />
+<glyph unicode="&#xfb00;" horiz-adv-x="940" d="M31 926q0 63 4 84q2 14 26 14h125v152q0 113 33 180t90 100q51 29 101 39q47 10 96 10q113 0 213 -65q80 74 237 73q176 0 177 -71q0 -25 -13 -56q-63 25 -151 25q-53 0 -84 -8q-47 -12 -74 -31q-41 -27 -57 -78q-18 -55 -19 -137v-133h213q0 -63 -4 -84q-2 -14 -22 -14 h-187v-899q0 -27 -28 -27h-84v926h-324v-899q0 -27 -29 -27h-84v926h-155zM299 1024h324v129q0 125 36 207q-63 45 -161 45q-31 0 -60 -6q-23 -4 -61 -25q-35 -16 -58 -69q-20 -47 -20 -125v-156z" />
+<glyph unicode="&#xfb03;" horiz-adv-x="1257" d="M29 926q0 63 4 84q2 14 28 14h123v152q0 113 33 180q33 70 88 100q51 29 101 39q47 10 98 10q113 0 213 -65q80 74 252 73q207 0 207 -73q0 -37 -13 -68q-80 39 -192 39q-52 0 -86 -6q-33 -6 -74 -33q-39 -27 -57 -80q-18 -55 -19 -141v-127h172q0 -63 -4 -84 q-2 -14 -24 -14h-144v-899q0 -27 -28 -27h-84v926h-326v-899q0 -27 -27 -27h-86v926h-155zM297 1024h326v129q0 129 36 207q-63 45 -161 45q-34 0 -62 -6q-23 -4 -61 -25q-35 -16 -58 -69q-20 -47 -20 -125v-156zM1028 0v969q0 39 21 47q18 8 92 8v-997q0 -18 -13 -23 q-16 -4 -100 -4z" />
+<glyph unicode="&#xfb04;" horiz-adv-x="1280" d="M29 926q0 63 4 84q2 14 28 14h123v152q0 113 33 180q33 70 88 100q51 29 101 39q47 10 98 10q109 0 207 -61q70 70 217 69q138 0 233 -55l-2 -2h2v-1429q0 -18 -12 -23q-16 -4 -98 -4v1391q-55 18 -117 18q-53 0 -72 -4q-31 -6 -61 -27q-33 -20 -49.5 -75.5t-16.5 -133.5 v-145h172q0 -63 -4 -84q-2 -14 -24 -14h-144v-899q0 -27 -28 -27h-84v926h-326v-899q0 -27 -27 -27h-86v926h-155zM297 1024h326v129q0 125 34 207q-63 45 -159 45q-34 0 -62 -6q-23 -4 -61 -25q-35 -16 -58 -69q-20 -47 -20 -125v-156z" />
+<glyph horiz-adv-x="1351" d="M55 924q0 63 4 84q4 16 23 16h125v324q0 33 18.5 39t93.5 6v-369h248q0 -63 -4 -84q-4 -16 -20 -16h-224v-629q0 -59 5 -113q2 -37 26 -71q23 -31 64 -31q66 0 133 33q8 -31 8 -60q0 -37 -47 -55q-49 -18 -119 -18q-59 0 -98 22q-37 23 -55 70q-16 43 -23 96 q-6 49 -6 129v627h-152zM670 57q0 25 12 45l481 824h-248q-166 0 -231 -11q-4 37 -4 56q0 53 37 53h565q12 -12 12 -37q0 -33 -14 -59l-477 -822h237q184 0 248 17q2 -8 2 -53q0 -70 -43 -70h-557q-20 18 -20 57z" />
+<glyph horiz-adv-x="835" d="M92 479q0 158 35 279q33 115 98 176q61 59 131 84q74 27 150 26q133 0 217 -73v-1069q0 -160 -92 -236q-90 -76 -250 -76q-115 0 -188.5 31t-73.5 70q0 37 24 67q111 -61 242 -61q90 0 157.5 49t67.5 172v160q-35 -41 -96 -68q-68 -29 -137 -28q-137 0 -211 108 q-74 106 -74 389zM213 479q0 -395 195 -395q145 0 204 141v676q-43 47 -135 47q-45 0 -92 -20q-39 -16 -84 -68q-41 -47 -65 -145q-23 -91 -23 -236z" />
+<glyph horiz-adv-x="503" d="M27 926q0 63 4 84q2 14 28 14h123v248q0 240 221 239q135 0 136 -59q0 -33 -13 -57q-37 18 -104 18q-61 0 -94 -30.5t-33 -122.5v-236h213q0 -63 -4 -84q-2 -14 -25 -14h-184v-899q0 -27 -29 -27h-84v926h-155z" />
+<glyph horiz-adv-x="921" d="M94 436q0 125 64 203q66 82 166 111q-76 8 -137.5 67.5t-61.5 175.5q0 141 92 232q90 88 248 100v197q0 29 22 39q18 8 80 8v-246q86 -8 158 -43q70 -35 100 -63q29 -29 29 -52q0 -41 -41 -94q-102 145 -293 146q-127 0 -201 -60q-78 -61 -77 -170q0 -172 213 -172 q68 0 135 10l-17 -110q-178 -6 -268 -82t-90 -189q0 -94 67.5 -155.5t200.5 -61.5q215 0 326 162q47 -47 47 -90q0 -14 -18 -39q-25 -33 -50 -55q-35 -33 -96 -55q-70 -27 -143 -35v-187q0 -29 -23 -39q-25 -10 -80 -10v234q-352 12 -352 323z" />
+<glyph horiz-adv-x="1351" d="M88 815q0 304 86 449t287 145q100 0 170 -68q72 -68 71 -233q0 -47 -12 -119q-12 -70 -31 -76l259 33v205q0 61 24 80q27 20 90 20v-290l234 34q0 -66 -9 -84q-10 -23 -40 -26q-104 -15 -185 -25v-553q0 -135 19 -180q18 -47 79 -47q92 0 144 22q8 -27 8 -63 q0 -55 -178 -55q-104 0 -146 61q-41 63 -40 262v541q-455 -53 -713 -53q0 -119 16 -205q14 -78 53 -113q35 -33 68 -41q31 -8 90 -8q158 0 248 154q33 -39 33 -86q0 -27 -31 -64q-33 -39 -100 -72q-74 -35 -162 -34q-78 0 -139 20q-57 18 -103 70q-49 55 -69.5 149 t-20.5 250zM205 885q66 0 151.5 6t141.5 12l53 6q27 6 35 70q10 72 10 104q0 129 -37 181q-37 53 -106 53q-94 0 -166 -96q-74 -98 -82 -336z" />
+<glyph horiz-adv-x="987" d="M106 2q14 43 15 119v1083q0 166 86 234q88 70 258 69q59 0 119 -16q57 -16 84 -37q29 -23 28 -35q0 -27 -28 -80q-84 66 -211 66q-119 0 -172 -59q-51 -57 -52 -207v-115h676q16 -33 -14 -98l-270 -410q133 -18 227 -102q92 -82 92 -232q0 -203 -104 -332 q-102 -127 -295 -126q-78 0 -133 16q-51 14 -72 35q-18 18 -18 37q0 41 26 79q84 -59 191 -59q132 0 209 92q76 90 75 250q0 186 -166 242q-74 27 -202 28l315 482h-537v-860q0 -47 -14 -64q-14 -18 -51 -18q-44 0 -62 18z" />
+<glyph horiz-adv-x="735" d="M51 926q0 90 10 96q2 2 11 2h575q18 -34 -12 -98l-273 -410q137 -18 228 -100q92 -83 92 -234q0 -203 -104 -332q-102 -127 -293 -126q-80 0 -135 18q-59 20 -74 35q-16 16 -17 35q0 45 27 79q90 -59 190 -59q132 0 209 92q78 94 78 250q0 182 -166 242q-74 25 -202 28 l313 482h-457z" />
+<glyph horiz-adv-x="1058" d="M6 924q0 63 4 84q4 16 23 16h168v324q0 33 18.5 39t91.5 6v-369h662q20 -31 -12 -98l-271 -410q133 -18 228 -102q90 -82 90 -232q0 -207 -101 -332q-102 -127 -289 -126q-70 0 -124 16q-51 14 -68 31q-18 18 -18 32q0 33 26 82q84 -53 180 -53q127 0 201 92t74 250 q0 182 -166 242q-74 27 -203 28l314 480h-523v-883q0 -31 -14 -37q-10 -4 -96 -4v924h-195z" />
+<glyph horiz-adv-x="1675" d="M100 717q0 338 201 536q205 201 537 201q330 0 534 -201q203 -201 203 -536.5t-203 -536.5q-205 -201 -534 -200q-332 0 -537 200q-201 199 -201 537zM371 637q0 -37 43 -37h10q2 0 6 1l4 1q8 0 10 -2l119 -192v-70q0 -16 -12 -16q-6 0 -14 4q-4 2 -13 2q-37 0 -37 -39 q0 -35 43 -35q8 0 37 4t35 4q4 0 37 -4t37 -4q45 0 45 37t-33 37q-14 0 -20 -2q-4 -2 -7 -3q-2 -1 -4 -1q-12 0 -12 16v74l119 186q2 6 8 6q4 0 8 -1t6 -1h13q27 0 32 19q16 -18 31 -19h17q4 0 7 1l3 1q12 0 12 -26v-232q0 -25 -12 -24q-6 0 -12.5 2t-14.5 2q-35 0 -35 -35 q0 -37 41 -37q2 0 7.5 1t12.5 2t15 1q37 4 41 4q8 0 37 -4t31 -4q43 0 43 35q0 37 -35 37q-8 0 -14.5 -2t-12.5 -2q-12 0 -12 26v199l139 -252q27 -49 64 -49q55 0 55 90v242q0 25 14 24h11q39 0 39 35q0 39 -41 39q-18 0 -33 -2q-29 -4 -33 -4q-6 0 -35 4q-14 2 -31 2 q-23 0 -34 -12q-10 -10 -11 -27q0 -35 37 -35h17q23 0 22 -24v-201l-143 262l-4 12q-2 25 -39 25q-14 0 -24.5 -2t-29 -2t-30.5 2t-23 2q-29 0 -34 -23q-10 23 -35 23q-18 0 -35 -2q-33 -4 -39 -4t-35 4q-14 2 -31 2q-39 0 -38 -39q0 -37 38 -37q6 0 11 2q-2 -4 -13.5 -23.5 t-19.5 -35.5q-27 -45 -29 -54l-69 113h4q45 0 45 35q0 39 -41 39q-8 0 -33 -4t-31 -4q-2 0 -34.5 4t-36.5 4q-41 0 -41 -39zM461 795q0 -41 43 -41q25 0 45 6q14 4 34.5 4t32.5 -4q18 -6 35 -6q43 0 43 41q0 35 -35 34l-5 -1q-5 -1 -9 -1h-14q-10 0 -10 25v229q0 25 10 25 h14q4 0 9 -1l5 -1q8 0 23 10q12 9 12 25q0 37 -43 37q-18 0 -33 -2l-36 -5q-10 0 -39 5q-14 2 -35 2q-47 0 -47 -37q0 -12 10 -23q12 -12 27 -12q2 0 6 1t8 1h14q10 0 11 -25v-229q0 -25 -11 -25h-14q-4 0 -8 1t-6 1q-37 1 -37 -34zM731 1057q0 -63 39 -111q47 -59 111 -108 q76 -59 112 -109q37 49 113 109q68 53 111 106q41 51 40.5 112.5t-36.5 94.5q-39 35 -91 35q-88 0 -137 -90q-49 90 -137 90q-49 0 -88 -35q-37 -33 -37 -94z" />
+<glyph horiz-adv-x="350" />
+</font>
+</defs></svg> 
\ No newline at end of file
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/fonts/kreon-regular-webfont.eot
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/fonts/kreon-regular-webfont.eot
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/fonts/kreon-regular-webfont.eot	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/fonts/kreon-regular-webfont.eot	(revision 47450)

Property changes on: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/fonts/kreon-regular-webfont.eot
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/help2.jsp
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/help2.jsp	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/help2.jsp	(revision 47450)
@@ -0,0 +1,131 @@
+<%@ page contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<%@ taglib prefix="s" uri="/struts-tags"%>
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<link href="jsps/favicon.ico" rel="shortcut icon" type="image/x-icon" />
+<link href="jsps/style.css" rel="stylesheet" type="text/css" media="screen" />
+<title><s:text name="help"/></title>
+</head>
+<body>
+<div id="wrapper">
+	<jsp:include page="menu.jsp"/>
+	<div id="page">
+	<div id="page-bgtop">
+		<div id="content">
+			<div class="post">
+				<h2 class="title"><a name="addOaiContent"><s:text name="help.addOaiContent.title"/></a></h2>
+				<div class="entry">
+					<s:text name="help.addOaiContent.message"/>
+				</div>
+			</div>
+			<div class="post">
+				<h2 class="title"><a name="addOaiUsage"><s:text name="help.addOaiUsage.title"/></a></h2>
+				<div class="entry">
+					<s:text name="help.addOaiUsage.message"/>
+				</div>
+			</div>
+			<%--<div class="post">
+				<h2 class="title"><a name="addRule"><s:text name="help.addRule.title"/></a></h2>
+				<div class="entry">
+					<s:text name="help.addRule.message"/>
+				</div>
+			</div>--%>
+			<div class="post">
+				<h2 class="title"><a name="browseJobs"><s:text name="help.browseJobs.title"/></a></h2>
+				<div class="entry">
+					<s:text name="help.browseJobs.message"/>
+				</div>
+			</div>
+			<%--<div class="post">
+				<h2 class="title"><a name="chooseJobCategory"><s:text name="help.chooseJobCategory.title"/></a></h2>
+				<div class="entry">
+					<s:text name="help.chooseJobCategory.message"/>
+				</div>
+			</div>
+			<div class="post">
+				<h2 class="title"><a name="chooseRuleCategory"><s:text name="help.chooseRuleCategory.title"/></a></h2>
+				<div class="entry">
+					<s:text name="help.chooseRuleCategory.message"/>
+				</div>
+			</div>
+			<div class="post">
+				<h2 class="title"><a name="chooseRuleForEdit"><s:text name="help.chooseRuleForEdit.title"/></a></h2>
+				<div class="entry">
+					<s:text name="help.chooseRuleForEdit.message"/>
+				</div>
+			</div>
+			<div class="post">
+				<h2 class="title"><a name="chooseRuleSet"><s:text name="help.chooseRuleSet.title"/></a></h2>
+				<div class="entry">
+					<s:text name="help.chooseRuleSet.message"/>
+				</div>
+			</div>
+			<div class="post">
+				<h2 class="title"><a name="chooseRuleSetForDeletion"><s:text name="help.chooseRuleSetForDeletion.title"/></a></h2>
+				<div class="entry">
+					<s:text name="help.chooseRuleSetForDeletion.message"/>
+				</div>
+			</div>--%>
+			<div class="post">
+				<h2 class="title"><a name="createRuleSet"><s:text name="help.createRuleSet.title"/></a></h2>
+				<div class="entry">
+					<s:text name="help.createRuleSet.message"/>
+				</div>
+			</div>
+			<%--<div class="post">
+				<h2 class="title"><a name="deleteRule"><s:text name="help.deleteRule.title"/></a></h2>
+				<div class="entry">
+					<s:text name="help.deleteRule.message"/>
+				</div>
+			</div>--%>
+			<div class="post">
+				<h2 class="title"><a name="editRule"><s:text name="help.editRule.title"/></a></h2>
+				<div class="entry">
+					<s:text name="help.editRule.message"/>
+				</div>
+			</div>
+			<div class="post">
+				<h2 class="title"><a name="jobDetails"><s:text name="help.jobDetails.title"/></a></h2>
+				<div class="entry">
+					<s:text name="help.jobDetails.message"/>
+				</div>
+			</div>
+			<div class="post">
+				<h2 class="title"><a name="jobSummary"><s:text name="help.jobSummary.title"/></a></h2>
+				<div class="entry">
+					<s:text name="help.jobSummary.message"/>
+				</div>
+			</div>
+			<%--<div class="post">
+				<h2 class="title"><a name="login"><s:text name="help.login.title"/></a></h2>
+				<div class="entry">
+					<s:text name="help.login.message"/>
+				</div>
+			</div>
+			<div class="post">
+				<h2 class="title"><a name="registration"><s:text name="help.registration.title"/></a></h2>
+				<div class="entry">
+					<s:text name="help.registration.message"/>
+				</div>
+			</div>--%>
+			<div class="post">
+				<h2 class="title"><a name="repoRegistration"><s:text name="help.repoRegistration.title"/></a></h2>
+				<div class="entry">
+					<s:text name="help.repoRegistration.message"/>
+				</div>
+			</div>
+			<%--<div class="post">
+				<h2 class="title"><a name="resetPassword"><s:text name="help.resetPassword.title"/></a></h2>
+				<div class="entry">
+					<s:text name="help.resetPassword.message"/>
+				</div>
+			</div>--%>
+		</div>
+		<div style="clear: both;">&nbsp;</div>
+	</div>
+	</div>
+</div>
+</body>
+</html>
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/java/eu/dnetlib/validator/admin/actions/rules/EditRule.java
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/java/eu/dnetlib/validator/admin/actions/rules/EditRule.java	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/java/eu/dnetlib/validator/admin/actions/rules/EditRule.java	(revision 47450)
@@ -0,0 +1,75 @@
+package eu.dnetlib.validator.admin.actions.rules;
+
+import org.apache.log4j.Logger;
+
+import com.opensymphony.xwork2.Action;
+
+import eu.dnetlib.domain.functionality.validator.Rule;
+import eu.dnetlib.validator.admin.actions.BaseValidatorAction;
+import eu.dnetlib.validator.admin.api.ValidatorAdminException;
+
+public class EditRule extends BaseValidatorAction {
+
+	private static final long serialVersionUID = -8296545383286127915L;
+	private Rule rule;
+	private String[] inputs;
+	private String funct = null;
+	private static final Logger logger = Logger.getLogger(EditRule.class);
+
+	public String execute() {
+		this.clearErrorsAndMessages();
+		String ret = null;
+		logger.debug("editing rule " + rule.getId());
+		try {
+			logger.debug("ruleType: " + rule.getType());
+			if (funct.equals("clone")) {
+				if (rule.getJob_type().toLowerCase().contains("usage"))
+					rule.setJob_type("usage");
+				else if (rule.getJob_type().toLowerCase().contains("content"))
+					rule.setJob_type("content");
+				ret = this.getValidatorAdminAPI().storeRule(rule, inputs, false);
+			} else {
+				ret = this.getValidatorAdminAPI().storeRule(rule, inputs, true);
+			}
+			
+		} catch (ValidatorAdminException e) {
+			logger.error("Error editing rule", e);
+			this.addActionError(this.getText("generic.error"));
+			reportException(e);
+			return "exception";
+		}
+
+		if (ret != null) {
+			this.addActionError(this.getText(ret));
+			return "input-problem";
+		}
+
+		this.addActionMessage(this.getText("editRule.success"));
+		return Action.SUCCESS;
+	}
+
+	public Rule getRule() {
+		return rule;
+	}
+
+	public void setRule(Rule rule) {
+		this.rule = rule;
+	}
+
+	public String[] getInputs() {
+		return inputs;
+	}
+
+	public void setInputs(String[] inputs) {
+		this.inputs = inputs;
+	}
+
+	public String getFunct() {
+		return funct;
+	}
+
+	public void setFunct(String funct) {
+		this.funct = funct;
+	}
+	
+}
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/java/eu/dnetlib/validator/admin/config/ValidatorAdminContextLoaderListener.java
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/java/eu/dnetlib/validator/admin/config/ValidatorAdminContextLoaderListener.java	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/java/eu/dnetlib/validator/admin/config/ValidatorAdminContextLoaderListener.java	(revision 47450)
@@ -0,0 +1,86 @@
+package eu.dnetlib.validator.admin.config;
+
+import java.util.Properties;
+
+import javax.servlet.ServletContext;
+
+import org.apache.commons.lang.ArrayUtils;
+import org.apache.log4j.Logger;
+import org.springframework.beans.BeansException;
+import org.springframework.context.support.ClassPathXmlApplicationContext;
+import org.springframework.web.context.ContextLoaderListener;
+import org.springframework.web.context.WebApplicationContext;
+import org.springframework.web.context.support.XmlWebApplicationContext;
+
+public class ValidatorAdminContextLoaderListener extends ContextLoaderListener {
+	private static Logger logger = Logger.getLogger(ValidatorAdminContextLoaderListener.class);
+
+
+	public ValidatorAdminContextLoaderListener() {
+		super();
+	}
+
+	public ValidatorAdminContextLoaderListener(WebApplicationContext context) {
+		super(context);
+	}
+
+	@Override
+	protected WebApplicationContext createWebApplicationContext(
+			ServletContext servletContext)
+			throws BeansException {
+		logger.debug("Creating web application context");
+		Properties props = this.loadProperties();
+		String repoMode = props.getProperty("services.validator.mode.repo");
+		String userMode = props.getProperty("services.validator.mode.user");
+		Boolean standaloneMode = Boolean.parseBoolean(props.getProperty("services.validator.mode.standalone"));
+		
+		logger.debug("User mode: " + userMode);
+		logger.debug("Repo mode: " + repoMode);
+		logger.debug("Standalone mode: " + standaloneMode);
+//		logger.debug("Dnet workflow enabled: " + repoMode);
+		XmlWebApplicationContext ctx = new XmlWebApplicationContext();
+
+		ctx.setServletContext(servletContext);
+		
+		
+		String[] springContextCore = new String[] {
+				"classpath*:/eu/dnetlib/validator/admin/actions/springContext-validator-struts.xml",
+				"classpath*:/eu/dnetlib/validator/admin/api/springContext-validator-user-" + userMode + ".xml",
+				"classpath*:/eu/dnetlib/validator/admin/api/springContext-validator.xml",
+				"classpath*:/eu/dnetlib/validator/admin/config/springContext-validator-config.xml",
+				"classpath*:/eu/dnetlib/validator/commons/dao/springContext-*.xml",
+				"classpath*:/eu/dnetlib/validator/commons/email/springContext-*.xml"
+		};
+		
+		String[] springContextForIS = new String[] {
+		};
+		
+		if (standaloneMode) {
+			logger.debug("Loading contexts for standalone mode");
+			ctx.setConfigLocations(springContextCore);
+		} else {
+			logger.debug("Loading contexts for dnet");
+			ctx.setConfigLocations((String[])ArrayUtils.addAll(springContextCore,springContextForIS));
+		}
+		
+		ctx.refresh();
+		
+		logger.debug("done");
+		
+		return ctx;
+	}	
+	
+	private Properties loadProperties() {
+		ClassPathXmlApplicationContext ctx = new ClassPathXmlApplicationContext(new String[] {
+				"classpath*:/eu/dnetlib/validator/admin/config/springContext-validator-config.xml"
+		});
+		
+		CascadingPropertyLoader pLoader = (CascadingPropertyLoader) ctx.getBean("propertyLoader");
+		Properties props = pLoader.getProperties();
+		
+		ctx.destroy();
+		ctx.close();
+		return props;
+	}
+
+}
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/java/eu/dnetlib/validator/admin/actions/help/HelpPage.java
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/java/eu/dnetlib/validator/admin/actions/help/HelpPage.java	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/java/eu/dnetlib/validator/admin/actions/help/HelpPage.java	(revision 47450)
@@ -0,0 +1,8 @@
+package eu.dnetlib.validator.admin.actions.help;
+
+import eu.dnetlib.validator.admin.actions.BaseValidatorAction;
+
+@SuppressWarnings("serial")
+public class HelpPage extends BaseValidatorAction{
+
+}
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/java/eu/dnetlib/validator/admin/constants/TypesAndTableNames.java
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/java/eu/dnetlib/validator/admin/constants/TypesAndTableNames.java	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/java/eu/dnetlib/validator/admin/constants/TypesAndTableNames.java	(revision 47450)
@@ -0,0 +1,102 @@
+package eu.dnetlib.validator.admin.constants;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.Set;
+
+import org.apache.log4j.Logger;
+
+public class TypesAndTableNames {
+
+	static private Logger logger = Logger.getLogger(TypesAndTableNames.class);
+	
+	static HashMap<String, String> ruleTypeToTableNames;
+	static HashMap<String, String> crisEntities;
+	static public List<String> deployEnvironments;
+	static public HashMap<String, String> jobTypes;
+	
+	static {
+		logger.debug("initializing the TableNames map");
+		ruleTypeToTableNames = new HashMap<String, String>();
+		
+		ruleTypeToTableNames.put("ChainRule", "chain_rule");
+		
+		//rules OAIPMH
+		ruleTypeToTableNames.put("OAIPMH Date Granularity", "oaipmhdategranularity_rule");
+		ruleTypeToTableNames.put("OAIPMH Embargo Date Check", "oaipmhembargodate_rule");
+		ruleTypeToTableNames.put("OAIPMH Incremental Record Delivery", "oaipmhincrementalrecorddelivery_rule");
+		ruleTypeToTableNames.put("OAIPMH Resumption Token Duration Check", "oaipmhresumptiontokenduration_rule");
+
+		//rules TEXT
+//		ruleTypeToTableNames.put("TEXT Regular Expression", "textreguralexpresion_rule");
+//		ruleTypeToTableNames.put("TEXT", "text_rule");
+//		ruleTypeToTableNames.put("TEXT Vocabulary","textvocabulary_rule");		
+
+		//rules XML
+//		names.put(XMLRule.class.getName(),"xml_rule");
+		ruleTypeToTableNames.put("XML Cardinality", "xmlcardinality_rule");
+		ruleTypeToTableNames.put("XML Field Exists", "xmlfieldexist_rule");
+		ruleTypeToTableNames.put("XML Not Confused Fields", "xmlnotconfusedfields_rule");
+		ruleTypeToTableNames.put("XML Regular Expression", "xmlregularexpression_rule");
+		ruleTypeToTableNames.put("XML Valid Url", "xmlvalidurl_rule");
+		ruleTypeToTableNames.put("XML Vocabulary", "xmlvocabulary_rule");
+		ruleTypeToTableNames.put("XML Cris Class Vocabulary", "xmlcrisclassvocabulary_rule");
+		ruleTypeToTableNames.put("XML CRIS Referential Integrity Rule", "xmlcrisreferentialintegrity_rule");
+		
+		crisEntities = new HashMap<String, String>();
+		crisEntities.put("Publication", "openaire_cris_publications");
+		crisEntities.put("Person", "openaire_cris_persons");
+		crisEntities.put("Organisation", "openaire_cris_orgunits");
+		crisEntities.put("Project", "openaire_cris_projects" );
+		crisEntities.put("Funding", "openaire_cris_funding" );
+		crisEntities.put("Service", "openaire_cris_services");
+		crisEntities.put("Product", "openaire_cris_datasets");		
+		
+		jobTypes = new HashMap<String, String>();
+		jobTypes.put("usage", "OAI Usage");
+		jobTypes.put("content", "OAI Content");
+		
+		deployEnvironments = new ArrayList<String>();
+		deployEnvironments.add("openaire-production");
+		deployEnvironments.add("openaire-beta");
+		deployEnvironments.add("development");
+		deployEnvironments.add("lareferencia");
+		deployEnvironments.add("mincyt");
+		
+//		names.put(JobInfo.class.getName(), "jobs");
+//		names.put(OAIContentJob.class.getName(), "oai_content_job");
+//		names.put(OAIUsageJob.class.getName(), "oai_usage_job");
+
+	}
+	
+	static public String getSetOfEntity(String entity) {
+		return crisEntities.get(entity);
+	}
+	
+	public static HashMap<String, String> getCrisEntities() {
+		return crisEntities;
+	}
+	
+	
+
+	public static Set<String> getJobTypes() {
+		logger.debug("getting all types of jobs");
+		return new HashSet<String>(jobTypes.values());
+	}
+
+	public static void setJobTypes(HashMap<String, String> jobTypes) {
+		TypesAndTableNames.jobTypes = jobTypes;
+	}
+
+	static public Set<String> getRuleTypes() {
+		logger.debug("getting all types of rules");
+		return ruleTypeToTableNames.keySet();
+	}
+	
+	static public String getTableNameOfType(String type) {
+		logger.debug("getting tableName of rule type "+type);
+		return ruleTypeToTableNames.get(type);
+	}
+}
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/java/eu/dnetlib/validator/admin/config/Constants.java
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/java/eu/dnetlib/validator/admin/config/Constants.java	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/java/eu/dnetlib/validator/admin/config/Constants.java	(revision 47450)
@@ -0,0 +1,12 @@
+package eu.dnetlib.validator.admin.config;
+
+
+public class Constants {
+	
+	public static String loggedInField = "LOGGED_IN_FIELD";
+
+	public static final String MODE_LOCAL = "local";
+	public static final String MODE_DNET = "dnet";
+	public static final String MODE_LDAP = "ldap";
+
+}
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/fonts/kreon-regular-webfont.svg
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/fonts/kreon-regular-webfont.svg	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/fonts/kreon-regular-webfont.svg	(revision 47450)
@@ -0,0 +1,234 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" >
+<svg xmlns="http://www.w3.org/2000/svg">
+<metadata></metadata>
+<defs>
+<font id="KreonRegular" horiz-adv-x="1333" >
+<font-face units-per-em="2048" ascent="1638" descent="-410" />
+<missing-glyph horiz-adv-x="491" />
+<glyph horiz-adv-x="0" />
+<glyph horiz-adv-x="2048" />
+<glyph unicode=" "  horiz-adv-x="491" />
+<glyph unicode="&#x09;" horiz-adv-x="491" />
+<glyph unicode="&#xa0;" horiz-adv-x="491" />
+<glyph unicode="!" horiz-adv-x="548" d="M135 1386l240 27l43 -78l-76 -850h-141zM152 112.5q0 51.5 34.5 86t85 34.5t87 -35.5t36.5 -85t-36.5 -85t-87 -35.5t-85 34.5t-34.5 86z" />
+<glyph unicode="&#x22;" horiz-adv-x="661" d="M74 1411l190 21l35 -62l-59 -414h-113zM362 1411l191 21l35 -62l-60 -414h-112z" />
+<glyph unicode="#" horiz-adv-x="1323" d="M59 602l27 47h281l86 234h-283l-27 106l27 47h338l141 379h135l23 -29l-131 -350h207l137 379h135l23 -29l-127 -350h192q12 0 12 -16v-137h-262l-84 -234h250q12 0 12 -16v-137h-319l-143 -398h-136l-22 27l135 371h-209l-145 -398h-135l-23 27l135 371h-223zM535 649 h206l84 234h-204z" />
+<glyph unicode="$" horiz-adv-x="987" d="M68 1028q0 92 25.5 151.5t70.5 104.5q90 90 242 121v385h184v-377q137 -12 272 -59l29 -353h-141l-91 222q-61 20 -154 20t-157.5 -43t-64.5 -131q0 -102 102 -168q45 -31 100.5 -54.5t128 -56t136 -77.5t102.5 -95q74 -92 74 -200.5t-27 -175t-72 -115.5 q-90 -92 -237 -123v-397h-184v387q-182 8 -318 76v346h148l36 -219q88 -33 177 -33q176 0 241 115q23 39 23 101t-38 112.5t-125 93.5t-172 77.5t-153.5 83t-112.5 119t-44 162.5z" />
+<glyph unicode="%" horiz-adv-x="1472" d="M63 1059q0 61 17.5 123.5t52.5 113.5q80 117 219 117t217 -106q72 -100 72 -246q0 -154 -80 -256q-80 -104 -209 -105q-143 0 -221 119q-68 101 -68 240zM180 27l907 1388h173l8 -29l-897 -1386h-178zM215 1058q0 -93 38 -157.5t99 -64.5t98 65.5t37 158.5t-35.5 156.5 t-100 63.5t-100.5 -64.5t-36 -157.5zM836 348q0 139 69 238q80 117 217 116q139 0 217 -108q72 -96 72 -246q0 -152 -78 -254q-80 -102 -211 -102q-139 0 -219 117q-67 100 -67 239zM989 346q0 -94 37 -157.5t98.5 -63.5t97 64.5t35.5 158.5t-35.5 157.5t-100 63.5 t-98.5 -64.5t-34 -158.5z" />
+<glyph unicode="&#x26;" horiz-adv-x="1376" d="M66 412q0 217 258 422q-111 188 -111 319q0 150 94 244q100 100 244.5 100t226.5 -81t82 -206q0 -186 -262 -407q88 -121 182 -230l107 -127q53 111 78 226h-93l-32 143h319l23 -29q-45 -268 -150 -456l-16 -27q123 -127 158 -137q8 2 25.5 15.5t37.5 27.5l59 39l86 -189 q-78 -66 -209 -65.5t-290 137.5q-150 -139 -365 -139q-197 0 -325 123q-127 119 -127 297zM279 402.5q0 -97.5 68.5 -166t187.5 -68.5t217 94q-170 199 -336 428q-63 -61 -100 -125.5t-37 -162zM408 1194q0 -98 98 -258q160 145 160 274q0 66 -36 99.5t-96.5 33.5t-93 -46 t-32.5 -103z" />
+<glyph unicode="'" horiz-adv-x="372" d="M74 1391l190 20l35 -61l-59 -414h-113z" />
+<glyph unicode="(" horiz-adv-x="565" d="M104 600q0 160 23 302t55 259q57 201 146 359h172q-133 -266 -183 -633q-18 -137 -18 -293t21.5 -296t52.5 -257q43 -166 127 -373h-172l-15 31q-129 260 -186 604q-23 137 -23 297z" />
+<glyph unicode=")" horiz-adv-x="565" d="M66 -332q84 207 120 348q80 307 80 580q0 522 -200 924h172q223 -418 223 -926q0 -266 -76 -543q-47 -168 -133 -352l-14 -31h-172z" />
+<glyph unicode="*" horiz-adv-x="741" d="M72 1038l12 47l231 86l-243 78l32 115l50 12l188 -153l-47 247l115 25l32 -35l-41 -237l187 170l82 -88l-13 -48l-231 -86l244 -77l-33 -115l-49 -12l-189 153l47 -248l-114 -24l-33 35l41 237l-186 -170zM336 1169l18 -26h35l14 28l-16 29h-37z" />
+<glyph unicode="+" horiz-adv-x="821" d="M70 645v125l26 29h242v262h154v-262h256v-154h-256v-307h-127l-27 24v283h-268z" />
+<glyph unicode="," horiz-adv-x="438" d="M45 -211l102 209l-53 235l215 39q23 -90 23 -156.5t-17.5 -130t-44.5 -116.5q-49 -100 -118 -170l-107 61v29z" />
+<glyph unicode="-" horiz-adv-x="817" d="M119 500v125l24 28h543q12 0 12 -16v-137h-579z" />
+<glyph unicode="." horiz-adv-x="425" d="M92 112.5q0 51.5 35 86t85 34.5t87 -35.5t37 -85t-36 -85t-87 -35.5t-86 34.5t-35 86z" />
+<glyph unicode="/" horiz-adv-x="944" d="M45 27l672 1386h184l-2 -29l-672 -1384h-176z" />
+<glyph unicode="0" horiz-adv-x="1193" d="M94 702q0 483 260 650q96 61 242 61q266 0 395 -221q109 -184 109 -490q0 -481 -262 -649q-96 -61 -242 -61q-266 0 -395 223q-107 182 -107 487zM309 702q0 -371 158 -493q53 -41 129 -41q145 0 221 156q68 139 68 378q0 373 -158 494q-55 41 -132 41t-131 -42t-87 -114 q-68 -141 -68 -379z" />
+<glyph unicode="1" horiz-adv-x="741" d="M51 1286l428 133l41 -18v-1239l191 -25v-137h-605l-22 135l231 35v1016l-233 -47z" />
+<glyph unicode="2" horiz-adv-x="1060" d="M45 1135q72 131 189.5 204.5t265.5 73.5q180 0 295 -86q131 -96 131 -283q0 -190 -226 -477q-119 -154 -212 -250t-132 -141h412l80 219h135l-43 -395h-834l-24 141q41 45 102.5 109.5t130 141.5t138 161t125.5 168q125 182 133 303v14q0 98 -68 154q-59 45 -131 45 q-102 0 -182 -53l-56 -172z" />
+<glyph unicode="3" horiz-adv-x="1071" d="M55 1139q72 131 196 202.5t296 71.5q162 0 280 -90q129 -100 129 -272q0 -117 -62.5 -202t-166.5 -122q92 -31 160 -106q86 -96 86 -212t-42 -193t-108 -126q-131 -98 -301 -98q-287 0 -456 139l108 164q150 -127 320 -127q135 0 199.5 63.5t64.5 140.5t-28 122t-75 75 q-86 55 -235 56h-105v176q213 0 308 41q119 53 118 196q0 100 -67 154q-59 47 -139 47t-124 -17.5t-73 -33.5l-76 -168z" />
+<glyph unicode="4" horiz-adv-x="1060" d="M4 557l590 858h221v-835h168v-177h-168v-235l166 -27v-139h-651v139l282 33v229h-540zM205 580h407v583z" />
+<glyph unicode="5" horiz-adv-x="1028" d="M39 133l100 158q133 -123 301 -123q131 0 219 86q86 82 86 213q0 164 -116 240q-94 61 -287 61q-94 0 -180 -12v592l65 65h654v-176h-525v-295h50q35 0 99 -3t150 -31.5t154 -84.5q152 -127 152 -342q0 -213 -160 -354q-156 -135 -373 -135q-125 0 -224.5 41t-164.5 100z " />
+<glyph unicode="6" horiz-adv-x="1140" d="M88 694q0 311 148 514q71 101 174.5 159t211 58t174 -21.5t115.5 -51.5q76 -47 131 -127l-194 -138l-103 146q-49 16 -107 16t-118.5 -37.5t-105.5 -105.5q-96 -141 -109 -344q47 53 126 93t179.5 40t182 -29.5t141.5 -87.5q127 -123 127 -327q0 -190 -123 -320 q-131 -139 -326 -139q-264 0 -407 227q-117 188 -117 475zM336 430q70 -262 266 -262q121 0 184 84q59 76 60 192q0 121 -70 199t-174 78q-113 0 -188 -84q-74 -82 -78 -207z" />
+<glyph unicode="7" horiz-adv-x="909" d="M55 989v424h807l37 -53l-428 -1360h-211l-10 55l448 1182h-462l-52 -248h-129z" />
+<glyph unicode="8" horiz-adv-x="1089" d="M84 377q0 242 250 381q-78 51 -132.5 125.5t-54.5 172t36 162t93 109.5q121 98 273 98q158 0 274 -90q125 -100 125 -254q0 -143 -125 -245q-35 -31 -73 -58q127 -76 170 -133q86 -111 86 -248q0 -176 -142 -295q-131 -113 -317 -112q-190 0 -322 96q-141 107 -141 291z M299 383q0 -104 86 -166q72 -51 143.5 -51t116.5 17.5t76 45.5q70 66 70 152q0 139 -185 233q-51 27 -108 56q-199 -109 -199 -287zM362 1100.5q0 -56.5 19.5 -91t50.5 -59.5q47 -39 150 -86q65 41 108 91.5t43 123t-51 121.5t-133 49t-134.5 -46t-52.5 -102.5z" />
+<glyph unicode="9" horiz-adv-x="1112" d="M86 133l115 160q143 -125 297 -125q274 0 303 446q-61 -59 -140 -85.5t-155 -26.5t-156 28.5t-137 83.5q-125 117 -125 324q0 203 117 340q125 143 344 143q248 0 371 -233q100 -190 100 -496q0 -293 -127 -487q-61 -96 -157.5 -154.5t-203 -58.5t-174 15.5t-120.5 37.5 q-74 31 -152 88zM303 956q0 -137 70 -211q64 -67 164 -67q43 0 86 15.5t77 45.5q80 72 88 176q-35 229 -153 304q-43 27 -100 26q-100 0 -166 -73.5t-66 -215.5z" />
+<glyph unicode=":" horiz-adv-x="481" d="M119 399.5q0 51.5 35.5 86t86 34.5t86 -35.5t35.5 -85t-35.5 -85t-86 -35.5t-86 34.5t-35.5 86zM119 884q0 50 35.5 86t86 36t86 -37t35.5 -87.5t-35.5 -85t-87 -34.5t-86 36t-34.5 86z" />
+<glyph unicode=";" horiz-adv-x="499" d="M90 -211l103 209l-54 235l215 39q23 -90 23 -156.5t-17.5 -130t-44.5 -116.5q-49 -100 -118 -170l-107 61v29zM117 679q0 50 35.5 86t86 36t86 -37t35.5 -87t-35.5 -85t-87 -35t-86 36t-34.5 86z" />
+<glyph unicode="&#x3c;" horiz-adv-x="866" d="M59 627v139l670 405v-192l-473 -285l473 -282v-199z" />
+<glyph unicode="=" horiz-adv-x="923" d="M125 475v156h674v-156h-674zM125 733v156h674v-156h-674z" />
+<glyph unicode="&#x3e;" horiz-adv-x="866" d="M137 213v199l473 282l-473 285v192l670 -405v-139z" />
+<glyph unicode="?" horiz-adv-x="835" d="M80 1028l35 326q174 61 282.5 61t177 -25.5t113.5 -68.5q88 -84 88 -215q0 -174 -129 -293q-39 -35 -78 -63l-75 -54q-94 -68 -103 -168q-2 -25 -2 -43l-162 -2l-4 21q-8 29 -8 89t25.5 105t64.5 80t84 65.5t84 65.5q90 78 90 181q0 61 -44 107t-130 46q-88 0 -129 -18 l-55 -197h-125zM193 113.5q0 50.5 34.5 85t84.5 34.5t87 -35.5t37 -85t-37 -85t-87 -35.5t-84.5 35.5t-34.5 86z" />
+<glyph unicode="@" horiz-adv-x="1701" d="M63 553q0 184 67 329.5t177 247.5q229 207 567 207q326 0 539 -207q102 -96 160.5 -229t58.5 -261t-27.5 -221t-78.5 -165q-113 -156 -289 -156q-119 0 -174 64q-98 -63 -221 -64q-166 0 -275 103q-121 115 -121 319q0 231 152 348q117 88 272 88q109 0 203 -45l74 29 l55 -18v-586q0 -43 16.5 -55.5t43 -12.5t59.5 24.5t59 72.5q59 102 59.5 235t-38.5 234.5t-111 173.5q-156 156 -413 155q-266 0 -443 -172q-176 -172 -176 -442q0 -313 184 -486q168 -159 455 -159q143 0 240 39l37 -9l-58 -176q-100 -31 -261 -30.5t-307.5 56.5 t-252.5 163q-231 225 -232 606zM643 528q0 -141 74 -217q59 -61 176 -61q61 0 119 47q-2 20 -2 39v440q-61 31 -118.5 31t-100.5 -16.5t-76 -49.5q-72 -76 -72 -213z" />
+<glyph unicode="A" horiz-adv-x="1245" d="M-2 127l106 37l414 1251h197l436 -1251l94 -37l-22 -127h-482v121l181 43l-99 303h-438l-94 -303l176 -41v-123h-442zM438 643h328l-168 514z" />
+<glyph unicode="B" horiz-adv-x="1181" d="M94 1262v153h473q221 0 353 -104q124 -99 124 -264q0 -120 -65 -211q-59 -84 -145 -111q111 -23 186 -102q82 -86 82 -213t-44 -205t-116 -123q-123 -82 -332 -82h-489l-21 143l125 29v1077zM430 176h160q201 0 270 115q27 45 27 110.5t-25.5 108.5t-68.5 68 q-80 45 -207 45h-156v-447zM430 799h90q158 0 233.5 54t75.5 171q0 215 -274 215h-125v-440z" />
+<glyph unicode="C" horiz-adv-x="1191" d="M70 692q0 340 209 541q190 182 483 182q131 0 303 -39l39 -372h-139l-80 221q-39 14 -135.5 14t-185.5 -43t-150 -115q-129 -152 -129 -368q0 -236 141 -389q143 -156 381 -156q88 0 161.5 26.5t106.5 51.5l60 -162q-129 -92 -363 -92q-283 0 -483 180q-219 199 -219 520 z" />
+<glyph unicode="D" horiz-adv-x="1296" d="M100 145l125 29v1077l-123 13v151h387q334 0 531 -178q203 -182 203 -520t-195 -529q-193 -188 -530 -188h-377zM428 176l16 -2q563 0 564 545q0 246 -148 387q-143 135 -383 135l-49 -2v-1063z" />
+<glyph unicode="E" horiz-adv-x="1103" d="M98 145l125 27v1079l-123 11v153h873l41 -385h-129l-78 209h-381v-430h324v-176h-324v-457h401l72 207h129l-41 -383h-868z" />
+<glyph unicode="F" horiz-adv-x="1046" d="M98 145l125 27v1079l-123 11v153h873l43 -385h-127l-82 209h-381v-430h324v-176h-324v-453l332 -47l-13 -133h-626z" />
+<glyph unicode="G" horiz-adv-x="1259" d="M68 690q0 328 198 527q198 198 511 198h3q154 0 320 -43l30 -371h-149l-74 228q-61 10 -151 10t-180.5 -41t-153.5 -113q-139 -158 -139 -389q0 -240 147 -383q150 -145 399 -145q70 0 111 8l2 301l-233 29l36 145h400v-622q-147 -37 -321.5 -37t-308.5 47t-234 137 q-213 190 -213 514z" />
+<glyph unicode="H" horiz-adv-x="1376" d="M100 147l123 23v1079l-123 11v155h430l21 -153l-123 -21v-424h520v432l-117 11v155h424l21 -153l-123 -21v-1075l123 -16v-150h-424l-21 147l117 23v471h-520v-475l125 -16v-150h-432z" />
+<glyph unicode="I" horiz-adv-x="653" d="M94 147l129 23v1079l-129 11v155h447l20 -153l-133 -21v-1075l133 -16v-150h-448z" />
+<glyph unicode="J" horiz-adv-x="751" d="M16 96l109 162q90 -84 149 -84q76 0 76 113v954l-157 21l20 153h469v-155l-127 -11v-944q0 -182 -109 -262q-70 -51 -161 -51q-160 0 -269 104z" />
+<glyph unicode="K" horiz-adv-x="1255" d="M94 147l129 23v1079l-129 8v158h438l19 -151l-123 -23v-577l477 581l-145 23v147h452v-149l-67 -15l-393 -473l354 -612l113 -21v-145h-285l-324 608l-182 -219v-223l125 -16v-150h-440z" />
+<glyph unicode="L" horiz-adv-x="1046" d="M98 145l125 23v1083l-123 11v153h441l18 -151l-133 -23v-1065h401l72 207h129l-41 -383h-868z" />
+<glyph unicode="M" horiz-adv-x="1748" d="M92 145l129 27v1075l-102 10v158h422l331 -1147l345 1147h399l20 -158l-106 -16v-1075l112 -23l-8 -143h-397l-16 147l118 27v1053l-362 -1196h-236l-350 1206v-1069l121 -23v-145h-395z" />
+<glyph unicode="N" horiz-adv-x="1425" d="M96 145l129 27v1075l-123 13v155h428l517 -1218v1050l-127 17v151h403l27 -153l-131 -25v-1237h-304l-518 1221v-891l2 -146q0 -12 2 -18l117 -21v-145h-397z" />
+<glyph unicode="O" d="M88 705q0 303 143 499q156 213 435 213t436 -213q145 -199 145 -499q0 -301 -145 -500q-157 -213 -436 -213t-435 213q-143 197 -143 500zM303 700q0 -221 90 -370q96 -162 273 -162q178 0 276 162q90 147 90 370q0 225 -90 377q-100 164 -276 164t-273 -164 q-90 -152 -90 -377z" />
+<glyph unicode="P" horiz-adv-x="1132" d="M94 143l131 29v1077l-129 11v155h432q285 0 430 -129q131 -119 132 -323q0 -240 -162 -359q-143 -104 -404 -104h-94v-322q51 -10 297 -41l-6 -137h-606zM430 676h86q188 0 279 86q79 76 79 203q0 274 -372 274h-72v-563z" />
+<glyph unicode="Q" d="M88 705q0 303 143 499q156 213 435 213t436 -213q145 -199 145 -499q0 -301 -145 -500q-157 -213 -436 -213t-435 213q-143 197 -143 500zM303 700q0 -221 90 -370q96 -162 273 -162q178 0 276 162q90 147 90 370q0 225 -90 377q-100 164 -276 164t-273 -164 q-90 -152 -90 -377zM530 -131l80 86l430 -154l13 -67l-183 -162q-88 72 -171 146.5t-169 150.5z" />
+<glyph unicode="R" horiz-adv-x="1196" d="M94 143l131 29v1077l-129 11v155h432q285 0 430 -129q131 -119 132 -323q0 -141 -72 -239.5t-195 -150.5l199 -407l117 -25v-141h-285l-229 524q-49 -6 -101 -6h-94v-348l162 -29v-141h-477zM430 694h86q182 0 279 88q79 70 79 183q0 274 -372 274h-72v-545z" />
+<glyph unicode="S" horiz-adv-x="1038" d="M96 1035.5q0 99.5 36 167t97 114.5q129 98 316 98q180 0 346 -61l29 -353h-142l-90 222q-61 20 -154.5 20t-158 -43t-64.5 -131q0 -102 103 -168q45 -31 100 -54.5t128 -56t136.5 -77.5t102.5 -95q74 -91 74 -209q0 -119 -41 -197q-40 -77 -107 -126q-127 -94 -336 -94 t-365 78l15 346h143l37 -219q88 -33 176 -33q176 0 242 115q23 38 23 98q0 63 -38 115q-38 50 -125 93.5t-172 78t-154 83t-113 119t-44 170z" />
+<glyph unicode="T" horiz-adv-x="1187" d="M29 1036l43 379h1044l45 -379h-125l-86 203h-256v-1063l238 -41l-19 -135h-630l-27 135l233 41v1063h-251l-84 -203h-125z" />
+<glyph unicode="U" horiz-adv-x="1325" d="M61 1262v153h474v-151l-142 -19v-768q0 -145 72 -227t219 -82q190 0 258 164q25 59 25 147v768l-125 19v149h413v-151l-116 -21v-772q0 -238 -144 -365q-124 -114 -314 -114h-3q-236 0 -363 126t-127 353v778z" />
+<glyph unicode="V" horiz-adv-x="1185" d="M14 1276v139h463l17 -127l-187 -39l301 -930l305 934l-184 35v127h449v-139l-78 -27l-414 -1249h-188l-410 1249z" />
+<glyph unicode="W" horiz-adv-x="1830" d="M31 1274v141h440l18 -127l-149 -33l186 -1024l305 1147h205l307 -1155l193 1037l-168 30l12 125h441v-139l-121 -39l-242 -1237h-270l-275 1047l-276 -1047h-272l-232 1243z" />
+<glyph unicode="X" horiz-adv-x="1175" d="M41 0v127l90 14l334 545l-338 561l-86 25v143h457l16 -125l-145 -30l239 -392l230 389l-121 29v129h416v-149l-89 -15l-333 -549l331 -542l91 -25v-135h-463v127l129 10l-232 383l-225 -385l115 -14v-121h-416z" />
+<glyph unicode="Y" horiz-adv-x="1153" d="M8 1262v153h436l15 -135l-131 -25l278 -512l250 514l-117 23v135h400v-153l-88 -21l-369 -737v-334l238 -41l-21 -129h-635l-20 129l235 41v346l-389 727z" />
+<glyph unicode="Z" horiz-adv-x="1132" d="M76 158l727 1081h-531l-41 -219h-129v395h906l24 -190q-66 -100 -151.5 -233.5t-179 -276t-186.5 -282.5t-169 -257h522l39 217h131v-393h-929z" />
+<glyph unicode="[" horiz-adv-x="657" d="M160 -338v1751l16 25h475q12 0 13 -15v-137h-310v-1501h310v-135q0 -16 -13 -17h-469z" />
+<glyph unicode="\" horiz-adv-x="942" d="M43 1391v24h182l674 -1388l-16 -27h-166z" />
+<glyph unicode="]" horiz-adv-x="657" d="M-6 -215h309v1501h-309v137q0 14 12 15h475l17 -25v-1751l-23 -29h-469q-12 0 -12 17v135z" />
+<glyph unicode="^" horiz-adv-x="907" d="M106 1151l322 332h53l320 -334l-4 -10h-166l-178 121l-177 -121h-163z" />
+<glyph unicode="_" horiz-adv-x="1153" d="M10 -27l29 27h1091q12 0 13 -14v-140h-1133v127z" />
+<glyph unicode="`" horiz-adv-x="618" d="M106 1294l123 146l64 -17l219 -323l-76 -76z" />
+<glyph unicode="a" horiz-adv-x="942" d="M74 253.5q0 108.5 44 172t115 100.5q125 63 367 68v145q0 41 -38 75t-118 34q-76 0 -112 -33l-41 -133l-215 63q47 170 231 230q66 20 148 20q160 0 244.5 -79.5t84.5 -208.5v-525q0 -43 29 -43q14 0 43 15l45 -109q-63 -53 -141 -53q-117 0 -148 92q-90 -94 -229 -94 t-224 77.5t-85 186zM268 283.5q0 -50.5 15.5 -76t38 -40.5t47 -20.5t55.5 -5.5t62.5 13.5t54.5 31.5q43 33 59 82v176q-135 0 -198.5 -21.5t-98.5 -55t-35 -84z" />
+<glyph unicode="b" horiz-adv-x="1003" d="M4 1458l260 39l62 -65v-492q86 55 188 55t176 -34.5t127 -98.5q113 -135 113 -356q0 -279 -152 -412q-117 -102 -286 -102q-113 0 -197 47q-98 -49 -107 -51l-47 28v1327l-118 -8zM326 199q16 -20 62 -37t91 -17t88 15.5t80 56.5q88 90 88 277q0 176 -76 266 q-65 80 -167 80q-49 0 -95.5 -19.5t-70.5 -48.5v-573z" />
+<glyph unicode="c" horiz-adv-x="884" d="M74 477q0 268 143 408q114 110 294 110h3q133 0 231 -69q80 -55 107 -117l-203 -96l-65 118q-41 10 -68 11q-248 0 -248 -361q0 -154 75 -245t198 -91q57 0 120.5 21.5t104.5 62.5l45 -143q-123 -94 -299 -94q-184 0 -303 119q-135 131 -135 366z" />
+<glyph unicode="d" horiz-adv-x="1028" d="M74 481q0 279 151 412q117 102 287 102q86 0 164 -32v380l-117 -8l-18 123l256 43l63 -69v-1250q0 -43 29 -43q14 0 43 15l45 -109q-63 -53 -153 -53q-1 0 -2 -1q-89 0 -124 68q-95 -68 -202 -68l-2 1q-108 0 -181 34.5t-127 98.5q-113 135 -112 356zM268 494 q0 -176 76 -267q66 -80 168.5 -80t163.5 66v578q-18 18 -62.5 34.5t-89.5 16.5t-88 -15.5t-80 -56.5q-88 -90 -88 -276z" />
+<glyph unicode="e" horiz-adv-x="909" d="M108 706q36 96 99 158q123 131 307 131q135 0 227 -71q95 -76 95 -199q0 -63 -21.5 -123.5t-83.5 -109.5q-139 -111 -455 -115q33 -162 166 -213q46 -18 102 -18q3 0 6 -1q52 -1 89 9q39 10 68 22q55 27 77 49l45 -143q-23 -23 -75 -45q-112 -46 -221 -46q-91 0 -181 32 q-178 63 -246 247q-35 91 -35 213q0 126 37 223zM266 528q150 0 223.5 23.5t112.5 61.5t39 95.5t-30.5 94.5t-89 37t-98.5 -18.5t-73 -55.5q-72 -84 -84 -238z" />
+<glyph unicode="f" horiz-adv-x="690" d="M35 975l14 20h154v187q0 156 84 239q74 74 196 74q141 0 262 -86q25 -16 31 -23l-145 -169l-131 120q-12 4 -29 4q-82 0 -82 -135v-211h232q10 0 10 -12v-141h-242v-697l234 -34v-111h-512l-25 111l117 24v707h-140z" />
+<glyph unicode="g" horiz-adv-x="999" d="M37 -258q0 193 170 276q-49 41 -49 130t80 169q-158 104 -158 301q0 164 113 271q109 106 265 106t267 -90l203 103l43 -7l20 -170l-184 -22q49 -90 49 -185.5t-34 -163t-89 -112.5q-109 -90 -266 -90q-51 0 -90 8l-51 -80l8 -34q20 -4 87.5 -13.5t156 -30t151 -52 t98.5 -68.5q62 -69 62 -173q0 -101 -37 -169q-37 -70 -96 -117q-121 -92 -295 -92q-184 0 -299 78q-125 84 -125 227zM217 -229q0 -68 76 -113q70 -41 180 -41q109 0 182 47q78 47 78 111.5t-56 90t-157.5 47t-157.5 38.5q-145 -59 -145 -180zM274 644q0 -75 16.5 -116 t43.5 -65q51 -51 134 -51t138.5 55t55.5 160q0 104 -58.5 159.5t-136.5 55.5h-8q-84 -4 -134.5 -63.5t-50.5 -134.5z" />
+<glyph unicode="h" horiz-adv-x="1067" d="M37 1458l256 43l63 -69v-510q101 73 238 73h4q213 0 279 -155q24 -51 24 -125v-6v-566l123 -32v-111h-408l-24 111l125 28v539q0 92 -43 126t-91 34t-80 -8.5t-61 -20.5q-57 -25 -86 -53v-613l121 -32v-111h-407l-25 111l127 28v1204l-117 -8z" />
+<glyph unicode="i" horiz-adv-x="548" d="M59 950l252 45l66 -65v-787l121 -32v-111h-410l-22 111l127 28v697l-113 -9zM127 1364q0 53 37 90t90 37t90 -39t37 -90t-37 -88t-90 -37t-90 37t-37 90z" />
+<glyph unicode="j" horiz-adv-x="497" d="M-76 -504l78 150q14 -10 39.5 -28.5t60.5 -18.5q72 0 72 125v1112l-108 -9l-19 123l248 45l63 -65v-1184q0 -162 -66.5 -232.5t-178.5 -70.5q-104 0 -189 53zM106 1364q0 53 37 90t90 37t90 -39t37 -90t-36.5 -88t-91 -37t-90.5 37t-36 90z" />
+<glyph unicode="k" horiz-adv-x="993" d="M37 1458l256 43l63 -69v-891l314 325h-101l-16 129h326l49 -94l-318 -307l236 -455l108 -24v-115h-256l-233 453l-109 -105v-213l121 -24v-111h-407l-25 111l127 28v1204l-117 -8z" />
+<glyph unicode="l" horiz-adv-x="532" d="M35 1458l256 43l65 -69v-1289l129 -32v-111h-417l-25 111l129 28v1204l-117 -8z" />
+<glyph unicode="m" horiz-adv-x="1632" d="M59 950q27 4 62 11.5t69.5 13.5t67.5 11t53 9l60 -75q97 76 254 76h3q158 0 234 -99q133 98 299 98q213 0 283 -155q24 -51 24 -125v-6v-566l121 -32v-111h-409l-23 111l127 28v539q0 86 -51 127q-43 33 -108.5 33t-122 -25t-84.5 -49v-21l2 -59v-541l122 -32v-111h-407 l-25 111l125 28v539q0 92 -43 126t-106.5 34t-123 -27t-85.5 -53v-615l119 -32v-111h-408l-25 111l130 28v697l-113 -9z" />
+<glyph unicode="n" horiz-adv-x="1085" d="M59 950q27 4 62 11.5t69.5 13.5t67.5 11t53 9l60 -75q97 75 241 75h4q213 0 281 -155q23 -53 23 -131v-564l122 -34v-111h-407l-25 111l125 28v539q0 92 -43 126t-106.5 34t-123 -27t-85.5 -53v-615l119 -32v-111h-408l-25 111l130 28v697l-113 -9z" />
+<glyph unicode="o" horiz-adv-x="1013" d="M74 502q0 119 34.5 211t96.5 155q119 127 303 127q188 0 311 -135t123 -362q0 -238 -131 -375q-121 -131 -303 -131q-190 0 -311 139q-123 138 -123 371zM268 478q0 -163 66 -248t172 -85t174 83t68 253t-65 265.5t-175 95.5q-117 0 -180 -101q-60 -96 -60 -263z" />
+<glyph unicode="p" horiz-adv-x="1034" d="M39 952l256 43l55 -59q92 59 194.5 59t176.5 -34.5t127 -98.5q113 -135 113 -356q0 -279 -152 -412q-117 -102 -287 -102q-94 0 -164 31v-431l250 -45v-108h-536l-25 108l127 31v1260l-117 -9zM358 197q18 -20 62.5 -36t89.5 -16t88 15.5t82 56.5q86 90 86 277 q0 176 -74 266q-68 80 -168 80t-166 -66v-577z" />
+<glyph unicode="q" horiz-adv-x="1001" d="M74 481q0 279 151 412q117 102 287 102q102 0 184 -41l117 43l47 -39v-1331l113 -39v-149h-527l-22 129l252 49v428q-82 -53 -185.5 -53t-177 34.5t-127.5 98.5q-113 135 -112 356zM268 494q0 -176 76 -267q66 -80 168.5 -80t163.5 66v578q-18 18 -62.5 34.5t-89.5 16.5 t-88 -15.5t-80 -56.5q-88 -90 -88 -276z" />
+<glyph unicode="r" horiz-adv-x="829" d="M59 950q115 18 242 43l64 -94q82 94 213 94q90 0 152.5 -45t92.5 -110l-202 -103l-64 99q-70 0 -125 -60q-57 -59 -57 -158v-442q0 -8 35 -14l231 -49v-111h-553l-25 111l127 28v690h-112z" />
+<glyph unicode="s" horiz-adv-x="827" d="M49 207l211 80l49 -119q47 -20 87 -20q3 0 6 -1q36 1 58 7q24 6 46 18q47 31 47 90q0 76 -93 116t-160 72.5t-112 69.5q-92 78 -92 205q0 125 101 201q94 69 225 69q66 0 121 -18.5t96 -46.5q78 -53 121 -137l-209 -80l-47 104q-41 21 -88 21h-2q-46 0 -84 -28 q-39 -28 -39 -81t51 -87t141 -70.5t138.5 -69.5t74.5 -70q52 -69 52 -153q0 -81 -31 -133q-31 -54 -80 -89q-95 -65 -230 -65h-4q-115 0 -223 63q-100 61 -131 152z" />
+<glyph unicode="t" horiz-adv-x="665" d="M8 975l15 20h182v342l164 39l10 -30v-351h213q10 0 10 -12v-141h-223v-588q0 -66 19.5 -85t49 -19t50 6t39.5 16q38 17 61 35q4 -14 43 -135q-29 -27 -84 -53.5t-143 -26.5t-148.5 53t-60.5 174v623h-168z" />
+<glyph unicode="u" horiz-adv-x="1044" d="M25 950l254 45l63 -67v-555q0 -193 113 -217q31 -8 58.5 -8t55 7t54.5 21q59 33 77 80v575h-106l-19 119l250 47l60 -69v-723q0 -68 37 -68l36 4l29 -92q-57 -57 -133 -57q-106 0 -139 92q-96 -92 -230 -92q-225 0 -301 184q-26 61 -26 148v6v501h-113z" />
+<glyph unicode="v" horiz-adv-x="956" d="M0 977l248 18l260 -755l252 620h-111l-14 117l248 18l65 -77l-381 -928h-161l-310 870h-80z" />
+<glyph unicode="w" horiz-adv-x="1441" d="M10 979l273 20l159 -784l193 758h223l209 -760l158 639h-92l-15 127l228 18l45 -71l-224 -932h-241l-195 731l-188 -731h-244l-184 858h-90z" />
+<glyph unicode="x" horiz-adv-x="950" d="M57 129h86l213 367l-215 364h-84v135h230l217 -360l196 360h185v-129h-78l-219 -372l217 -361h88v-133h-240l-207 346l-198 -346h-182z" />
+<glyph unicode="y" horiz-adv-x="983" d="M2 979l254 16l276 -829l259 686h-107l-14 125l248 18l53 -69q-184 -522 -329.5 -896t-169 -422t-54.5 -87q-72 -84 -185 -84q-90 0 -182 82l76 141q57 -70 121 -70q66 0 112 123q14 35 27 66l45 121l-332 952h-82z" />
+<glyph unicode="z" horiz-adv-x="866" d="M88 0v158l469 682q-160 4 -321 4l-29 -160h-119v311h690v-159l-471 -682h326l29 168h116v-322h-690z" />
+<glyph unicode="{" horiz-adv-x="690" d="M14 477v170q98 0 163 57.5t65 167.5l-2 78l-2 92q0 205 53 293q66 111 252 111q53 0 101 -9.5t50 -10.5t6 -1l-61 -196l-145 49q-63 -35 -64 -201l2 -205q0 -297 -215 -313q215 -8 215 -311l-2 -180q0 -143 29 -197q12 -23 35 -33l145 49l61 -196q-121 -23 -157 -23 q-182 0 -254 127q-51 90 -51 283l4 198q0 141 -142 187q-41 14 -86 14z" />
+<glyph unicode="|" horiz-adv-x="505" d="M160 -438v1859h186v-1859h-186z" />
+<glyph unicode="}" horiz-adv-x="690" d="M-10 -309l61 196l146 -49q63 29 63 230l-2 180q0 305 217 317q-217 0 -217 307l2 205q0 166 -63 201l-146 -49l-61 196q123 20 190.5 20.5t127 -28t91.5 -82.5q53 -86 54 -293l-2 -92l-2 -78q0 -111 64.5 -168t162.5 -57v-170q-92 0 -160 -51q-68 -53 -67 -150l4 -198 q0 -193 -52 -283q-72 -127 -254 -127q-43 0 -83.5 8.5t-73.5 14.5z" />
+<glyph unicode="~" horiz-adv-x="839" d="M51 1186l2 26q35 74 76 107q80 63 164 63q70 0 158 -47l63 -30q29 -14 53 -15l113 101l121 -140q-109 -121 -213 -121q-55 0 -116.5 29t-96.5 42t-80 13t-77 -31.5t-46 -68.5z" />
+<glyph unicode="&#xa1;" horiz-adv-x="520" d="M121 -387l65 901h142l75 -850l-43 -78zM137 887q0 51 35 86t85 35t87 -36t37 -85t-37 -85t-87 -36t-85 35t-35 86z" />
+<glyph unicode="&#xa2;" horiz-adv-x="894" d="M63 477q0 233 105 367q92 115 242 141v420h184v-420q96 -18 168 -80q47 -39 80 -96l-203 -96l-66 118q-41 10 -67 11q-248 0 -248 -361q0 -154 75 -245t197 -91q57 0 121 21.5t105 62.5l45 -143q-90 -68 -207 -86v-430h-184v430q-150 31 -242 145q-104 127 -105 332z" />
+<glyph unicode="&#xa3;" horiz-adv-x="1079" d="M61 42q0 32 21.5 78t64.5 83q82 82 114 213t40 276h-182v135l16 19h172l-4 192q0 289 205 355q59 20 123.5 20t115 -12t91.5 -29q66 -29 114 -65l-145 -187l-164 140q-96 -4 -125 -82q-18 -49 -18 -226v-106h286q14 0 15 -17v-137h-307q-14 -276 -82 -413q113 -8 315 -82 q39 -14 61 -15l156 105l80 -217q-72 -78 -231 -78q-100 0 -197.5 31.5t-145 46t-102.5 14.5t-89 -28.5t-44 -61.5h-149q-2 4 -3 10q-2 6 -2 38z" />
+<glyph unicode="&#xa4;" horiz-adv-x="1232" d="M104 317l138 138q-78 113 -78 254q0 143 82 260l-142 143l142 145l153 -153q98 55 216 55t216 -57l156 155l143 -145l-147 -145q82 -117 82 -258q0 -139 -78 -252l143 -140l-143 -145l-149 147q-102 -59 -222 -59t-223 57l-147 -145zM358 709q0 -113 72 -186.5t184 -73.5 q113 0 184.5 73.5t71.5 186.5t-71.5 186.5t-184.5 73.5t-184.5 -73.5t-71.5 -186.5z" />
+<glyph unicode="&#xa5;" horiz-adv-x="1249" d="M51 1266v149h424l14 -129l-124 -26l284 -451l281 453l-121 22v131h389v-149l-78 -21l-385 -612h223v-158h-225v-43h225v-158h-225v-104l234 -41l-17 -129h-631l-18 129l227 41v104h-243v158h243v43h-243v158h229l-381 614z" />
+<glyph unicode="&#xa6;" horiz-adv-x="528" d="M166 -381v778h196v-778h-196zM166 635v778h196v-778h-196z" />
+<glyph unicode="&#xa7;" horiz-adv-x="1030" d="M98 -254l17 346h139l29 -231q98 -29 165.5 -29t110.5 9t76 32q76 47 76 122t-44 118t-112 78.5t-144.5 69.5t-144.5 79q-156 100 -156 244.5t113 246.5q-117 98 -117 240q0 147 119 244q123 100 305 100q176 0 357 -61l26 -353h-141l-88 232q-57 20 -150.5 20t-154 -45 t-60.5 -104.5t32 -96t80 -66.5t104.5 -52.5t123 -55t124 -72.5t91.5 -81q66 -80 66 -197.5t-111 -228.5q94 -90 95 -219q0 -178 -142 -279q-125 -86 -321 -86q-113 0 -196 21.5t-167 54.5zM324 622.5q0 -63.5 61 -106.5t131 -74q117 -55 162 -80q47 63 47 110.5t-31.5 83.5 t-82 65.5t-113 57.5t-123.5 58q-51 -51 -51 -114.5z" />
+<glyph unicode="&#xa8;" horiz-adv-x="790" d="M106 1246q0 48 34 85t84 37t86 -37t36 -86t-37 -84t-85 -35t-83 36t-35 84zM442 1247q0 47 36 84t86 37t85 -37t35 -85t-36 -84t-84 -36t-85 37t-37 84z" />
+<glyph unicode="&#xa9;" horiz-adv-x="1466" d="M66 765q0 138 52 260t142 213t212 143.5t260 52.5t260 -52.5t213 -143.5t143.5 -213t52.5 -260t-52.5 -260t-143.5 -212t-213 -142.5t-260 -52.5t-260 52.5t-212 142.5t-142 212t-52 260zM246 766q0 -102 38 -190.5t105 -153.5q141 -143 344 -143t345.5 142t142.5 345 t-142.5 345t-345.5 142t-345 -142t-142 -345zM375 752q0 182 112 290q106 104 273 105q57 0 94 -4l53 -10l19 -248h-97l-28 104l-37 2q-104 0 -168 -57t-64 -166t61.5 -173.5t153 -64.5t164.5 45l54 -133q-98 -63 -192.5 -63t-164 26.5t-121.5 73.5q-113 104 -112 273z" />
+<glyph unicode="&#xaa;" horiz-adv-x="700" d="M78 1019.5q0 67.5 27.5 106.5t72.5 60q76 35 219 35v18q0 47 -23.5 61.5t-45.5 14.5q-31 0 -62 -6l-8 -49l-178 34q18 78 92 123q63 37 150.5 37t137.5 -27.5t72.5 -74.5t26.5 -110.5t4 -138.5t3 -93.5t14 -18.5l26 6l31 -94q-59 -45 -121.5 -45t-93.5 49 q-53 -53 -143.5 -53t-145.5 49t-55 116.5zM242 1038q0 -20 13 -39.5t50 -19.5q70 0 92 51v88q-156 0 -155 -80z" />
+<glyph unicode="&#xab;" horiz-adv-x="944" d="M12 694l437 439l110 -111l-330 -330l330 -332l-110 -108zM360 694l394 396l110 -111l-286 -287l286 -289l-110 -108z" />
+<glyph unicode="&#xac;" horiz-adv-x="1204" d="M100 778v131l23 23h928l22 -23v-413q0 -14 -16 -15h-144v297h-813z" />
+<glyph unicode="&#xad;" horiz-adv-x="825" d="M-57 639v176h938v-176h-938z" />
+<glyph unicode="&#xae;" horiz-adv-x="1466" d="M66 765q0 138 52 260t142 213t212 143.5t260 52.5t260 -52.5t213 -143.5t143.5 -213t52.5 -260t-52.5 -260t-143.5 -212t-213 -142.5t-260 -52.5t-260 52.5t-212 142.5t-142 212t-52 260zM246 766q0 -102 38 -190.5t105 -153.5q141 -143 344 -143t345.5 142t142.5 345 t-142.5 345t-345.5 142t-345 -142t-142 -345zM467 1026v119h205q174 0 262 -74q80 -65 80 -178q0 -147 -133 -211l94 -172l63 -12v-103h-180l-117 252q-23 -4 -43 -4h-41v-131l95 -23v-94h-275l-8 99l47 16v506zM657 776h29q178 0 178 116t-170 116h-37v-232z" />
+<glyph unicode="&#xaf;" horiz-adv-x="905" d="M117 1257v156h671v-156h-671z" />
+<glyph unicode="&#xb0;" horiz-adv-x="624" d="M68 1220.5q0 118.5 63 194.5q66 78 180 78q113 0 181 -78q66 -78 65.5 -195.5t-65 -194.5t-182 -77t-180 77t-62.5 195.5zM229 1221q0 -82 41 -119q14 -14 40 -14.5t41.5 13t25.5 34.5q18 37 18 86q0 78 -43 114q-16 14 -41.5 14.5t-41 -13t-23.5 -33.5q-17 -35 -17 -82z " />
+<glyph unicode="&#xb1;" horiz-adv-x="931" d="M129 346v156h674v-156h-674zM129 842v155h258v240h156v-240h260v-155h-260v-264h-156v264h-258z" />
+<glyph unicode="&#xb2;" horiz-adv-x="614" d="M72 1286q29 86 96.5 126t123.5 40t92 -11t65 -34q66 -51 65.5 -123t-25 -119t-58.5 -82.5t-69.5 -62.5t-56.5 -45h107l30 69h86l-22 -188h-391l-21 88l72 64q131 121 158.5 169.5t27.5 79.5q0 68 -67 68q-23 0 -43 -8l-31 -74z" />
+<glyph unicode="&#xb3;" horiz-adv-x="604" d="M72 934l63 108q35 -29 68 -50t78 -21t66.5 21.5t21.5 56.5q0 59 -146 59v98q125 0 125 72q0 16 -14.5 32.5t-34.5 16.5q-53 0 -57 -10l-29 -62l-135 45q59 152 233 152q72 0 115 -31q82 -59 82 -127q0 -106 -100 -129q45 -10 82.5 -40.5t37.5 -87t-20.5 -90.5t-52.5 -56 q-66 -43 -154 -43q-143 0 -229 86z" />
+<glyph unicode="&#xb4;" horiz-adv-x="641" d="M106 1124l238 310l66 16l125 -166l-345 -250z" />
+<glyph unicode="&#xb6;" horiz-adv-x="1196" d="M57 1024q0 154 95 258q123 133 354 133h575v-164h-98v-1251h-174v1251h-92v-979l-2 -67q0 -82 -187 -232l-135 185l139 88v366q-225 10 -350 121t-125 291z" />
+<glyph unicode="&#xb7;" horiz-adv-x="485" d="M121 489v328h219l27 -31l-2 -297h-244z" />
+<glyph unicode="&#xb8;" horiz-adv-x="831" d="M147 -510l89 176l145 -96q78 0 117 55q14 20 14 58t-37 73t-125 35l-26 2l-35 39l71 199h203l-47 -119q76 -20 132.5 -74.5t56.5 -158t-83 -174t-229 -70.5q-147 0 -246 55z" />
+<glyph unicode="&#xb9;" horiz-adv-x="485" d="M70 1399l241 69l23 -32v-478l74 -16v-86h-302l-6 82l78 14v367l-90 -16z" />
+<glyph unicode="&#xba;" horiz-adv-x="684" d="M70 1152q0 77 21.5 134t58.5 94q74 76 192 76q121 0 195 -76q78 -82 77 -227q0 -221 -163 -285q-51 -20 -109 -20q-186 0 -252 170q-20 57 -20 134zM233 1146.5q0 -65.5 28 -106.5t81 -41t82 40t29 107.5t-28 112t-82 44.5t-82 -45.5t-28 -111z" />
+<glyph unicode="&#xbb;" horiz-adv-x="946" d="M82 403l285 289l-285 287l111 111l393 -400l-393 -395zM387 1022l113 111l436 -443l-436 -438l-111 108l328 330z" />
+<glyph unicode="&#xbc;" horiz-adv-x="1343" d="M63 1362l273 78l24 -17v-114q0 -12 -2 -25v-524q0 -18 74 -19v-96h-338v92l92 15v522l-106 -17zM193 4l684 1411h182l-2 -29l-682 -1409l-176 23zM686 221v150l318 420h180v-435h96v-135h-96v-108l86 -13v-100h-422l-8 90l172 25v106h-326zM827 356h185v238z" />
+<glyph unicode="&#xbd;" horiz-adv-x="1435" d="M68 1362l272 78l25 -17v-114q0 -12 -3 -25v-524q0 -18 74 -19v-96h-338v92l92 15v522l-106 -17zM197 4l684 1411h182l-2 -29l-682 -1409l-176 23zM776 608q45 92 110.5 139.5t151.5 47.5t135.5 -18.5t79.5 -51.5q63 -63 64 -164q0 -141 -154 -311q-43 -49 -84 -94 l-20 -23h182l43 115h92l-26 -248h-514l-27 100q37 39 93 93.5t110 117.5q127 156 127 264q0 47 -29 63.5t-53 16.5q-27 0 -58 -12l-49 -117z" />
+<glyph unicode="&#xbe;" horiz-adv-x="1445" d="M59 1251q45 121 187 168q49 16 105.5 16.5t103.5 -13t82 -38.5q78 -55 77 -159q0 -61 -32.5 -109.5t-92.5 -66.5q66 -18 102 -63.5t36 -108.5q0 -119 -97 -185q-84 -59 -186 -59q-166 0 -262 72l111 114q59 -47 133 -47t112 55q13 18 13 47q0 113 -172 113h-27v119h27 q80 0 108 14q57 29 57 79t-36.5 73.5t-69.5 23.5q-35 0 -76 -16l-47 -100zM305 4l682 1411h184l-2 -29l-682 -1409l-176 23zM784 221v150l318 420h180v-435h96v-135h-96v-108l86 -13v-100h-422l-8 90l172 25v106h-326zM926 356h184v238z" />
+<glyph unicode="&#xbf;" horiz-adv-x="800" d="M47 -126q0 128 57.5 212t144.5 148.5t135 116.5t48 130v25l162 2l4 -21q6 -31 6 -88t-25.5 -106t-63.5 -87t-82 -67.5t-81 -64.5q-90 -78 -90 -172q0 -98 86 -140q31 -14 70 -14q84 0 135 19l53 194h125l-35 -323q-66 -23 -136.5 -41.5t-160.5 -18.5q-170 0 -261 84 t-91 212zM385 876.5q0 51.5 35 86t86 34.5t87 -35.5t36 -86t-37 -85t-88 -34.5t-85 34.5t-34 86z" />
+<glyph unicode="&#xc0;" horiz-adv-x="1245" d="M-2 127l106 37l414 1251h197l436 -1251l94 -37l-22 -127h-482v121l181 43l-99 307h-438l-94 -307l176 -41v-123h-442zM387 1726l115 168l69 -12l287 -317l-76 -90zM438 643h328l-168 514z" />
+<glyph unicode="&#xc1;" horiz-adv-x="1245" d="M-2 127l106 37l414 1251h197l436 -1251l94 -37l-22 -127h-482v121l181 43l-99 303h-438l-94 -303l176 -41v-123h-442zM387 1597l293 304l68 8l118 -187l-399 -229zM438 643h328l-168 514z" />
+<glyph unicode="&#xc2;" horiz-adv-x="1245" d="M-2 127l106 37l414 1251h197l436 -1251l94 -37l-22 -127h-482v121l181 43l-99 303h-438l-94 -303l176 -41v-123h-442zM274 1499l322 332h53l320 -334l-4 -10h-166l-178 121l-177 -121h-163zM438 643h328l-168 514z" />
+<glyph unicode="&#xc3;" horiz-adv-x="1245" d="M-2 127l106 37l414 1251h197l436 -1251l94 -37l-22 -127h-482v121l181 43l-99 303h-438l-94 -303l176 -41v-123h-442zM274 1559v34q45 100 148 144q45 18 113.5 18t127 -32.5t105.5 -67.5l18 -13l125 115l121 -137q-113 -125 -205 -125q-49 0 -83.5 15.5t-66.5 34 t-64.5 33.5t-87 15t-87 -34.5t-49.5 -69.5zM438 643h328l-168 514z" />
+<glyph unicode="&#xc4;" horiz-adv-x="1245" d="M-2 127l106 37l414 1251h197l436 -1251l94 -37l-22 -127h-482v121l181 43l-99 303h-438l-94 -303l176 -41v-123h-442zM311 1788q0 53 37 92t91.5 39t92 -39t37.5 -93t-40 -92t-91 -38t-89 39t-38 92zM438 643h328l-168 514zM674 1789q0 52 39 91t93 39t92 -39t38 -92 t-39 -92t-91 -39t-92 40t-40 92z" />
+<glyph unicode="&#xc5;" horiz-adv-x="1236" d="M-6 127l106 37l394 1192q-86 59 -86 170q0 86 59 145t145 60q86 0 146.5 -60.5t60.5 -157t-88 -157.5l416 -1192l94 -37l-22 -127h-482v121l181 43l-99 303h-438l-94 -303l176 -41v-123h-443zM434 643h328l-168 514zM535 1526q0 -37 21.5 -57.5t57 -20.5t57 20.5 t21.5 57.5t-21.5 57.5t-57 20.5t-57 -20.5t-21.5 -57.5z" />
+<glyph unicode="&#xc6;" horiz-adv-x="1609" d="M-25 127l107 37l524 1251h873l41 -385h-129l-78 209h-381v-430h323v-176h-323v-457h401l72 207h129l-41 -383h-868l-21 145l125 27v356h-319l-146 -364l180 -41v-123h-442zM481 705h248v546l-29 2z" />
+<glyph unicode="&#xc7;" horiz-adv-x="1193" d="M72 692q0 340 207 541q193 182 485 182q131 0 303 -39l39 -372h-139l-80 221q-39 14 -134.5 14t-185.5 -43t-153 -115q-127 -147 -127 -368q0 -236 141 -389q143 -156 381 -156q88 0 161.5 26.5t106.5 51.5l60 -162q-113 -80 -320 -90l-29 -74q72 -18 124.5 -69.5 t52.5 -148.5t-78 -163.5t-213 -66.5q-100 0 -219 49l-13 4l84 164l136 -88q72 0 108 51q14 18 14 53t-33.5 68.5t-117.5 33.5l-25 3l-33 34l58 160q-238 43 -391 217q-170 193 -170 471z" />
+<glyph unicode="&#xc8;" horiz-adv-x="1103" d="M98 145l125 27v1079l-123 11v153h873l41 -385h-129l-78 209h-381v-430h324v-176h-324v-457h401l72 207h129l-41 -383h-868zM301 1726l117 168l69 -12l285 -317l-74 -90z" />
+<glyph unicode="&#xc9;" horiz-adv-x="1103" d="M98 145l125 27v1079l-123 11v153h873l41 -385h-129l-78 209h-381v-430h324v-176h-324v-457h401l72 207h129l-41 -383h-868zM387 1597l295 304l70 8l116 -187l-399 -229z" />
+<glyph unicode="&#xca;" horiz-adv-x="1103" d="M98 145l125 27v1079l-123 11v153h873l41 -385h-129l-78 209h-381v-430h324v-176h-324v-457h401l72 207h129l-41 -383h-868zM207 1499l321 332h54l319 -334l-4 -10h-166l-178 121l-176 -121h-164z" />
+<glyph unicode="&#xcb;" horiz-adv-x="1103" d="M98 145l125 27v1079l-123 11v153h873l41 -385h-129l-78 209h-381v-430h324v-176h-324v-457h401l72 207h129l-41 -383h-868zM258 1810q0 53 37 92.5t91 39.5t92 -39t38 -93.5t-40 -92.5t-91 -38t-89 39t-38 92zM621 1811.5q0 52.5 38.5 91.5t93 39t92.5 -39t38 -93 q0 -53 -39 -92t-91.5 -39t-92 40t-39.5 92.5z" />
+<glyph unicode="&#xcc;" horiz-adv-x="655" d="M78 147l147 23v1079l-129 11v155h447l20 -153l-133 -21v-1075l133 -16v-150h-448zM78 1726l117 168l65 -12l287 -317l-74 -90z" />
+<glyph unicode="&#xcd;" horiz-adv-x="653" d="M94 147l129 23v1079l-129 11v155h447l20 -153l-133 -21v-1075l133 -16v-150h-448zM96 1597l293 304l70 8l116 -187l-399 -229z" />
+<glyph unicode="&#xce;" horiz-adv-x="653" d="M-20 1499l321 332h53l320 -334l-4 -10h-166l-178 121l-176 -121h-164zM94 147l129 23v1079l-129 11v155h447l20 -153l-133 -21v-1075l133 -16v-150h-448z" />
+<glyph unicode="&#xcf;" horiz-adv-x="653" d="M43 1634q0 53 37 91t88 38t91 -37.5t40 -91.5q0 -53 -40 -91t-91 -38t-88 38t-37 91zM94 147l129 23v1079l-129 11v155h447l20 -153l-133 -21v-1075l133 -16v-150h-448zM371 1633.5q0 54.5 39 92t92 37.5t89 -38.5t36 -91t-37 -90.5t-89 -38t-91 37t-39 91.5z" />
+<glyph unicode="&#xd0;" horiz-adv-x="1294" d="M76 637v139l20 23h127v452l-123 13v151h387q334 0 531 -178q203 -182 203 -520t-195 -529q-193 -188 -530 -188h-377l-21 145l125 29v463h-147zM426 176h49q264 0 399 148q132 139 132 401q0 129 -42 227.5t-120 161.5q-152 129 -418 129v-444h340q14 0 14 -17v-145h-354 v-461z" />
+<glyph unicode="&#xd1;" horiz-adv-x="1425" d="M96 145l129 27v1075l-123 13v155h428l517 -1218v1050l-127 17v151h403l27 -153l-131 -25v-1237h-240l-582 1223v-893l2 -146q0 -12 2 -18l117 -21v-145h-397zM342 1559v34q45 100 150 144q43 18 111.5 18t126.5 -32.5t106 -67.5l18 -13l125 115l121 -137 q-113 -125 -205 -125q-49 0 -84 15.5t-66.5 34t-64.5 33.5t-87 15t-87 -34.5t-49 -69.5z" />
+<glyph unicode="&#xd2;" d="M88 705q0 303 143 499q156 213 435 213t436 -213q145 -199 145 -499q0 -301 -145 -500q-157 -213 -436 -213t-435 213q-143 197 -143 500zM303 700q0 -221 90 -370q96 -162 273 -162q178 0 276 162q90 147 90 370q0 225 -90 377q-100 164 -276 164t-273 -164 q-90 -152 -90 -377zM428 1726l115 168l67 -12l287 -317l-74 -90z" />
+<glyph unicode="&#xd3;" d="M88 705q0 303 143 499q156 213 435 213t436 -213q145 -199 145 -499q0 -301 -145 -500q-157 -213 -436 -213t-435 213q-143 197 -143 500zM303 700q0 -221 90 -370q96 -162 273 -162q178 0 276 162q90 147 90 370q0 225 -90 377q-100 164 -276 164t-273 -164 q-90 -152 -90 -377zM449 1597l292 304l70 8l117 -187l-400 -229z" />
+<glyph unicode="&#xd4;" d="M88 705q0 303 143 499q156 213 435 213t436 -213q145 -199 145 -499q0 -301 -145 -500q-157 -213 -436 -213t-435 213q-143 197 -143 500zM303 700q0 -221 90 -370q96 -162 273 -162q178 0 276 162q90 147 90 370q0 225 -90 377q-100 164 -276 164t-273 -164 q-90 -152 -90 -377zM319 1499l322 332h53l320 -334l-2 -10h-168l-178 121l-177 -121h-167z" />
+<glyph unicode="&#xd5;" d="M88 705q0 303 143 499q156 213 435 213t436 -213q145 -199 145 -499q0 -301 -145 -500q-157 -213 -436 -213t-435 213q-143 197 -143 500zM297 1559v34q45 100 145 144q45 18 117 18t135.5 -38t110.5 -75l125 115l121 -137q-66 -82 -148 -113q-29 -12 -66.5 -12 t-73.5 15.5t-66.5 34t-63.5 33.5t-86 15q-84 0 -139 -104zM303 700q0 -221 90 -370q96 -162 273 -162q178 0 276 162q90 147 90 370q0 225 -90 377q-100 164 -276 164t-273 -164q-90 -152 -90 -377z" />
+<glyph unicode="&#xd6;" d="M88 705q0 303 143 499q156 213 435 213t436 -213q145 -199 145 -499q0 -301 -145 -500q-157 -213 -436 -213t-435 213q-143 197 -143 500zM303 700q0 -221 90 -370q96 -162 273 -162q178 0 276 162q90 147 90 370q0 225 -90 377q-100 164 -276 164t-273 -164 q-90 -152 -90 -377zM371 1810q0 53 36.5 92.5t91 39.5t92.5 -39t38 -93.5t-40 -92.5t-91.5 -38t-89 39t-37.5 92zM733 1811.5q0 52.5 39 91.5t93.5 39t92 -39t37.5 -93q0 -53 -38.5 -92t-91 -39t-92.5 40t-40 92.5z" />
+<glyph unicode="&#xd7;" horiz-adv-x="978" d="M100 1008l109 108l283 -282l274 274l111 -109l-277 -276l272 -270l-108 -109l-272 270l-277 -276l-109 111l277 276z" />
+<glyph unicode="&#xd8;" d="M88 691.5q0 156.5 36 285.5t107 227q156 213 435 213q104 0 194 -33l70 154h200l-2 -39l-100 -217q111 -98 165 -250.5t54 -311.5t-36.5 -288t-108.5 -227q-158 -213 -436 -213q-123 0 -215 39l-64 -140h-192l-7 37l99 213q-100 98 -149.5 246t-49.5 304.5zM303 704.5 q0 -221.5 78 -358.5l401 873q-55 23 -132 22.5t-145.5 -45.5t-111.5 -119q-90 -151 -90 -372.5zM528 199q61 -31 145.5 -31t154 44t114.5 118q90 147 90 372t-96 381z" />
+<glyph unicode="&#xd9;" horiz-adv-x="1306" d="M61 1262v153h474v-151l-142 -19v-768q0 -309 283 -309q188 0 250 164q23 59 22 147v768l-125 19v149h414v-151l-117 -21v-772q0 -238 -137 -365q-121 -115 -313 -114q-236 0 -359 126t-123 353v778zM420 1726l115 168l69 -12l287 -317l-76 -90z" />
+<glyph unicode="&#xda;" horiz-adv-x="1306" d="M61 1262v153h474v-151l-142 -19v-768q0 -309 283 -309q188 0 250 164q23 59 22 147v768l-125 19v149h414v-151l-117 -21v-772q0 -238 -137 -365q-121 -115 -313 -114q-236 0 -359 126t-123 353v778zM485 1597l295 304l70 8l115 -187l-398 -229z" />
+<glyph unicode="&#xdb;" horiz-adv-x="1306" d="M61 1262v153h474v-151l-142 -19v-768q0 -309 283 -309q188 0 250 164q23 59 22 147v768l-125 19v149h414v-151l-117 -21v-772q0 -238 -137 -365q-121 -115 -313 -114q-236 0 -359 126t-123 353v778zM326 1499l321 332h53l320 -334l-2 -10h-168l-178 121l-176 -121h-168z " />
+<glyph unicode="&#xdc;" horiz-adv-x="1325" d="M61 1262v153h474v-151l-142 -19v-768q0 -145 72 -227t219 -82q190 0 258 164q25 59 25 147v768l-125 19v149h413v-151l-116 -21v-772q0 -238 -144 -365q-125 -115 -317 -114q-236 0 -363 126t-127 353v778zM395 1810q0 53 37 92.5t91.5 39.5t92 -39t37.5 -93.5t-40 -92.5 t-91 -38t-89 39t-38 92zM758 1811.5q0 52.5 39 91.5t93 39t92 -39t38 -93q0 -53 -39 -92t-91 -39t-92 40t-40 92.5z" />
+<glyph unicode="&#xdd;" horiz-adv-x="1153" d="M8 1262v153h436l15 -135l-137 -25l284 -524l258 526l-125 23v135h400v-153l-88 -21l-369 -737v-334l238 -41l-21 -129h-635l-20 129l235 41v346l-389 727zM412 1597l295 304l69 8l115 -187l-397 -229z" />
+<glyph unicode="&#xde;" horiz-adv-x="1075" d="M94 147l129 23v1079l-129 11v155h447l20 -153l-133 -21l4 -76q301 0 451.5 -103.5t150.5 -320.5q0 -219 -162 -331q-143 -98 -403 -99h-41v-145l236 -37v-129h-551zM428 487h33q199 0 278.5 64.5t79.5 173.5q0 141 -94 197.5t-281 56.5h-16v-492z" />
+<glyph unicode="&#xdf;" horiz-adv-x="1079" d="M66 0v119l104 20v948q0 203 106 314q96 96 263 96q143 0 243 -80q111 -88 111 -233q0 -94 -34 -154.5t-75 -103.5t-74.5 -76t-33.5 -70q8 -45 92 -88q268 -139 268 -358q0 -160 -114 -260q-102 -90 -244 -90q-119 0 -229 49l110 192q27 -23 53.5 -48t49.5 -40 q72 0 126 53.5t54 147.5q0 88 -90 162q-39 31 -84 58.5t-84 59.5q-90 72 -90 158q0 59 32.5 100.5t72.5 82t73 92t33 133.5q-4 66 -52 112.5t-118 46.5q-176 0 -177 -217v-1126h-292z" />
+<glyph unicode="&#xe0;" horiz-adv-x="942" d="M74 253.5q0 108.5 44 172t115 100.5q125 63 367 68v145q0 41 -38 75t-118 34q-76 0 -112 -33l-41 -133l-215 63q47 170 231 230q66 20 148 20q160 0 244.5 -79.5t84.5 -208.5v-525q0 -43 29 -43q14 0 43 15l45 -109q-63 -53 -141 -53q-117 0 -148 92q-90 -94 -229 -94 t-224 77.5t-85 186zM256 1294l123 146l63 -17l220 -323l-76 -76zM268 283.5q0 -50.5 15.5 -76t38 -40.5t47 -20.5t55.5 -5.5t62.5 13.5t54.5 31.5q43 33 59 82v176q-135 0 -198.5 -21.5t-98.5 -55t-35 -84z" />
+<glyph unicode="&#xe1;" horiz-adv-x="942" d="M74 253.5q0 108.5 44 172t115 100.5q125 63 367 68v145q0 41 -38 75t-118 34q-76 0 -112 -33l-41 -133l-215 63q47 170 231 230q66 20 148 20q160 0 244.5 -79.5t84.5 -208.5v-525q0 -43 29 -43q14 0 43 15l45 -109q-63 -53 -141 -53q-117 0 -148 92q-90 -94 -229 -94 t-224 77.5t-85 186zM268 283.5q0 -50.5 15.5 -76t38 -40.5t47 -20.5t55.5 -5.5t62.5 13.5t54.5 31.5q43 33 59 82v176q-135 0 -198.5 -21.5t-98.5 -55t-35 -84zM270 1174l236 305l65 16l123 -164l-340 -248z" />
+<glyph unicode="&#xe2;" horiz-adv-x="942" d="M74 253.5q0 108.5 44 172t115 100.5q125 63 367 68v145q0 41 -38 75t-118 34q-76 0 -112 -33l-41 -133l-215 63q47 170 231 230q66 20 148 20q160 0 244.5 -79.5t84.5 -208.5v-525q0 -43 29 -43q14 0 43 15l45 -109q-63 -53 -141 -53q-117 0 -148 92q-90 -94 -229 -94 t-224 77.5t-85 186zM123 1108l272 326h68l274 -328l-12 -23h-160l-137 107l-137 -107h-158zM268 283.5q0 -50.5 15.5 -76t38 -40.5t47 -20.5t55.5 -5.5t62.5 13.5t54.5 31.5q43 33 59 82v176q-135 0 -198.5 -21.5t-98.5 -55t-35 -84z" />
+<glyph unicode="&#xe3;" horiz-adv-x="942" d="M74 253.5q0 108.5 44 172t115 100.5q125 63 367 68v145q0 41 -38 75t-118 34q-76 0 -112 -33l-41 -133l-215 63q47 170 231 230q66 20 148 20q160 0 244.5 -79.5t84.5 -208.5v-525q0 -43 29 -43q14 0 43 15l45 -109q-63 -53 -141 -53q-117 0 -148 92q-90 -94 -229 -94 t-224 77.5t-85 186zM143 1198q0 57 54 115q66 72 163 71q74 0 177 -59q25 -14 47 -22l2 -7l94 97l115 -136q-43 -47 -89.5 -79.5t-94.5 -32.5t-77.5 12t-57 25.5t-54 26t-57.5 12.5q-74 0 -113 -93zM268 283.5q0 -50.5 15.5 -76t38 -40.5t47 -20.5t55.5 -5.5t62.5 13.5 t54.5 31.5q43 33 59 82v176q-135 0 -198.5 -21.5t-98.5 -55t-35 -84z" />
+<glyph unicode="&#xe4;" horiz-adv-x="942" d="M74 253.5q0 108.5 44 172t115 100.5q125 63 367 68v145q0 41 -38 75t-118 34q-76 0 -112 -33l-41 -133l-215 63q47 170 231 230q66 20 148 20q160 0 244.5 -79.5t84.5 -208.5v-525q0 -43 29 -43q14 0 43 15l45 -109q-63 -53 -141 -53q-117 0 -148 92q-90 -94 -229 -94 t-224 77.5t-85 186zM141 1278q0 53 37 90t90 37t90 -37t37 -90t-36.5 -90t-90.5 -37q-53 0 -90 37t-37 90zM268 283.5q0 -50.5 15.5 -76t38 -40.5t47 -20.5t55.5 -5.5t62.5 13.5t54.5 31.5q43 33 59 82v176q-135 0 -198.5 -21.5t-98.5 -55t-35 -84zM471 1278q0 53 37 90 t90 37t90 -37t37 -90t-37 -90t-90 -37t-90 37t-37 90z" />
+<glyph unicode="&#xe5;" horiz-adv-x="942" d="M74 253.5q0 108.5 44 172t115 100.5q125 63 367 68v145q0 41 -38 75t-118 34q-76 0 -112 -33l-41 -133l-215 63q47 170 231 230q66 20 148 20q160 0 244.5 -79.5t84.5 -208.5v-525q0 -43 29 -43q14 0 43 15l45 -109q-63 -53 -141 -53q-117 0 -148 92q-90 -94 -229 -94 t-224 77.5t-85 186zM268 283.5q0 -50.5 15.5 -76t38 -40.5t47 -20.5t55.5 -5.5t62.5 13.5t54.5 31.5q43 33 59 82v176q-135 0 -198.5 -21.5t-98.5 -55t-35 -84zM268 1290q0 82 56.5 138.5t139.5 56.5t139 -56.5t56 -138.5t-56 -138t-139 -56t-139.5 56t-56.5 138zM389 1290 q0 -31 21.5 -52t52.5 -21t53.5 21.5t22.5 51.5q0 31 -22.5 52.5t-53.5 21.5t-52.5 -21.5t-21.5 -52.5z" />
+<glyph unicode="&#xe6;" horiz-adv-x="1441" d="M74 252.5q0 107.5 46 171t122 100.5q135 70 358 70v145q0 41 -38 75t-118 34q-76 0 -112 -33l-41 -133l-215 63q47 170 231 230q66 20 148 20q198 0 286 -131q131 131 318 131q137 0 229 -69q96 -72 96 -199q0 -213 -278 -283q-98 -25 -236 -24h-36q-18 0 -39 2 q20 -193 163 -254q51 -23 124 -23t131.5 29t80.5 47l39 -139q-25 -27 -98.5 -58.5t-182 -31.5t-210 46t-166.5 144q-53 -127 -182 -174q-47 -18 -107 -18q-143 0 -228 77.5t-85 185zM268 274q0 -72 54 -106q37 -27 85 -27t79.5 13.5t54.5 31.5q43 33 59 82v176 q-332 0 -332 -170zM795 573h75q135 0 196.5 19.5t92.5 49.5t31 63.5t-6 55t-21.5 39t-43 30t-68.5 12.5t-83 -16.5t-77 -51.5q-82 -78 -96 -201z" />
+<glyph unicode="&#xe7;" horiz-adv-x="882" d="M74 477q0 268 143 408q115 111 297 110q133 0 231 -69q80 -55 107 -117l-203 -96l-65 118q-41 10 -68 11q-248 0 -248 -361q0 -154 75 -245t198 -91q57 0 120.5 21.5t104.5 62.5l45 -143q-92 -74 -227 -90l-25 -72q53 -14 96 -52t43 -116t-62.5 -130t-172.5 -52 q-84 0 -180 39l67 135l111 -76q61 0 92 43q10 16 10 39q0 90 -145 90l-25 31l43 123q-156 27 -252 141q-111 129 -110 338z" />
+<glyph unicode="&#xe8;" horiz-adv-x="927" d="M72 485q0 -242 133 -370q125 -123 334 -123q141 0 258 67q25 14 32 23l-45 143q-47 -47 -145 -69q-39 -10 -94.5 -10.5t-102.5 18t-82 49.5q-61 57 -84 164q315 4 455 115q105 83 105 233q0 61 -26 112.5t-69 86.5q-92 72 -227 71q-184 0 -307 -131q-135 -141 -135 -379z M266 528q12 154 84 238q66 74 170 74q59 0 90 -37t31 -94.5t-39 -95.5t-96 -56q-90 -29 -240 -29zM317 1378l121 162l66 -16l233 -303l-84 -88z" />
+<glyph unicode="&#xe9;" horiz-adv-x="909" d="M71.5 486q0.5 124 37 219.5t98.5 158.5q123 131 307 131q135 0 227 -71q95 -76 95 -199q0 -63 -21.5 -123.5t-83.5 -109.5q-139 -111 -455 -115q33 -162 166 -213q47 -18 102.5 -18.5t94.5 9t68 21.5q55 27 77 49l45 -143q-23 -23 -75 -45q-205 -84 -402 -14 q-178 63 -246 247q-35 92 -34.5 216zM266 528q150 0 223.5 23.5t112.5 61.5t39 95.5t-30.5 94.5t-89 37t-98.5 -18.5t-73 -55.5q-72 -84 -84 -238zM319 1174l236 305l66 16l122 -164l-340 -248z" />
+<glyph unicode="&#xea;" horiz-adv-x="927" d="M71.5 486q0.5 124 37 219.5t98.5 158.5q123 131 307 131q135 0 227 -71q95 -76 95 -199q0 -63 -21.5 -123.5t-83.5 -109.5q-139 -111 -455 -115q33 -162 166 -213q47 -18 102.5 -18.5t94.5 9t68 21.5q55 27 77 49l45 -143q-23 -23 -75 -45q-205 -84 -402 -14 q-178 63 -246 247q-35 92 -34.5 216zM199 1108l272 326h68l274 -328l-12 -23h-160l-137 107l-137 -107h-158zM266 528q150 0 223.5 23.5t112.5 61.5t39 95.5t-30.5 94.5t-89 37t-98.5 -18.5t-73 -55.5q-72 -84 -84 -238z" />
+<glyph unicode="&#xeb;" horiz-adv-x="927" d="M71.5 486q0.5 124 37 219.5t98.5 158.5q123 131 307 131q135 0 227 -71q95 -76 95 -199q0 -63 -21.5 -123.5t-83.5 -109.5q-139 -111 -455 -115q33 -162 166 -213q47 -18 102.5 -18.5t94.5 9t68 21.5q55 27 77 49l45 -143q-23 -23 -75 -45q-205 -84 -402 -14 q-178 63 -246 247q-35 92 -34.5 216zM217 1282q0 47 32 80t80 33t80.5 -34t32.5 -80t-33.5 -79t-80.5 -33t-79 33t-32 80zM266 528q150 0 223.5 23.5t112.5 61.5t39 95.5t-30.5 94.5t-89 37t-98.5 -18.5t-73 -55.5q-72 -84 -84 -238zM524 1283q0 46 32 79t80 33t81 -34 t33 -80t-34 -79t-81 -33t-79 34t-32 80z" />
+<glyph unicode="&#xec;" horiz-adv-x="548" d="M59 950l21 -123l113 9v-697l-127 -28l22 -111h410v111l-121 32v787l-66 65zM59 1333l123 164l66 -16l233 -305l-82 -89z" />
+<glyph unicode="&#xed;" horiz-adv-x="548" d="M59 950l252 45l66 -65v-787l121 -32v-111h-410l-22 111l127 28v697l-113 -9zM66 1174l235 305l66 16l120 -164l-337 -246z" />
+<glyph unicode="&#xee;" horiz-adv-x="548" d="M-23 1114l256 309h50l256 -307l-11 -16h-137l-135 110l-137 -110h-133zM59 950l252 45l66 -65v-787l121 -32v-111h-410l-22 111l127 28v697l-113 -9z" />
+<glyph unicode="&#xef;" horiz-adv-x="548" d="M-2 1282q0 47 31.5 80t80 33t81 -34t32.5 -80t-33.5 -79t-81 -33t-79 33t-31.5 80zM59 950l252 45l66 -65v-787l121 -32v-111h-410l-22 111l127 28v697l-113 -9zM283 1283q0 46 32.5 79t79.5 33t81 -34t34 -80t-35 -79t-81 -33t-78.5 34t-32.5 80z" />
+<glyph unicode="&#xf0;" horiz-adv-x="1046" d="M72 438q0 190 108 328q115 139 293 139q170 0 260 -94q-45 156 -155 274l-218 -122l-65 116l166 113q-84 63 -207 121l76 182q154 -59 303 -184l219 149l100 -164l-198 -112q188 -229 207 -529v-41q0 -256 -107 -426q-123 -197 -348 -196q-213 0 -330 143 q-104 125 -104 303zM266 438q0 -125 68 -197.5t174 -72.5q195 0 244 274q0 141 -80 222q-68 68 -178 67q-115 0 -175 -90q-53 -78 -53 -203z" />
+<glyph unicode="&#xf1;" horiz-adv-x="1085" d="M59 950q27 4 62 11.5t69.5 13.5t67.5 11t53 9l60 -75q98 76 245 75q213 0 281 -155q23 -53 23 -131v-564l122 -34v-111h-407l-25 111l125 28v539q0 92 -43 126t-106.5 34t-123 -27t-85.5 -53v-615l119 -32v-111h-408l-25 111l130 28v697l-113 -9zM246 1198q0 57 53 115 q66 72 164 71q74 0 176 -59q25 -14 47 -22l2 -7l94 97l115 -136q-43 -47 -89 -79.5t-94 -32.5t-78 12t-57.5 25.5t-54 26t-57.5 12.5q-74 0 -113 -93z" />
+<glyph unicode="&#xf2;" horiz-adv-x="1013" d="M74 502q0 -119 31.5 -212t91.5 -159q121 -139 311 -139q182 0 303 131q131 137 131 375q0 227 -123 362t-311 135q-184 0 -303 -127q-131 -137 -131 -366zM268 485q0 250 135 330q45 27 105 27q111 0 175.5 -95.5t64.5 -265.5t-68 -253t-174.5 -83t-172 85t-65.5 255z M319 1333l123 164l66 -16l233 -307l-82 -89z" />
+<glyph unicode="&#xf3;" horiz-adv-x="1013" d="M74 502q0 119 34.5 211t96.5 155q119 127 303 127q188 0 311 -135t123 -362q0 -238 -131 -375q-121 -131 -303 -131q-190 0 -311 139q-123 138 -123 371zM268.5 480q-0.5 -165 65 -250t172 -85t174.5 83t68 253t-65 265.5t-175 95.5q-117 0 -180 -101q-59 -96 -59.5 -261 zM326 1174l235 305l66 16l123 -164l-340 -248z" />
+<glyph unicode="&#xf4;" horiz-adv-x="1011" d="M74 502q0 119 34.5 211t96.5 155q119 127 303 127q188 0 311 -135t123 -362q0 -238 -131 -375q-121 -131 -303 -131q-190 0 -311 139q-123 138 -123 371zM223 1114l256 309h49l256 -307l-8 -16h-135l-137 110l-137 -110h-134zM268.5 480q-0.5 -165 65 -250t172 -85 t174.5 83t68 253t-65 265.5t-175 95.5q-117 0 -180 -101q-59 -96 -59.5 -261z" />
+<glyph unicode="&#xf5;" horiz-adv-x="1011" d="M74 502q0 119 34.5 211t96.5 155q119 127 303 127q188 0 311 -135t123 -362q0 -238 -131 -375q-121 -131 -303 -131q-190 0 -311 139q-123 138 -123 371zM193 1196q0 57 53 115q70 74 164 73q72 0 176 -59q27 -14 49 -22l2 -7l94 95l115 -136q-45 -47 -89 -78.5 t-94.5 -31.5t-80 11t-56.5 26q-68 37 -112.5 37t-72.5 -29t-38 -64zM268.5 480q-0.5 -165 65 -250t172 -85t174.5 83t68 253t-65 265.5t-175 95.5q-117 0 -180 -101q-59 -96 -59.5 -261z" />
+<glyph unicode="&#xf6;" horiz-adv-x="1011" d="M74 502q0 119 34.5 211t96.5 155q119 127 303 127q188 0 311 -135t123 -362q0 -238 -131 -375q-121 -131 -303 -131q-190 0 -311 139q-123 138 -123 371zM246 1282q0 47 31.5 80t80 33t81 -34t32.5 -80t-34 -79t-81 -33t-78.5 33t-31.5 80zM268.5 480q-0.5 -165 65 -250 t172 -85t174.5 83t68 253t-65 265.5t-175 95.5q-117 0 -180 -101q-59 -96 -59.5 -261zM553 1283q0 46 31.5 79t80 33t81 -34t32.5 -80t-33.5 -79t-81 -33t-79 34t-31.5 80z" />
+<glyph unicode="&#xf7;" horiz-adv-x="858" d="M92 520v156h674v-156h-674zM328 284q0 46 31.5 78.5t79.5 32.5t81 -33.5t33 -79.5t-34 -79t-81 -33t-78.5 34t-31.5 80zM328 915.5q0 47.5 31.5 80t79.5 32.5t81 -33.5t33 -80t-34 -79t-81 -32.5t-78.5 32.5t-31.5 80z" />
+<glyph unicode="&#xf8;" horiz-adv-x="1011" d="M74 498q0 231 131 370q119 127 303 127q61 0 125 -18l108 237h174l-2 -26l-131 -291q158 -139 158 -399q0 -238 -129 -375q-123 -131 -303 -131q-61 0 -127 18l-94 -211h-168l-6 27l120 266q-160 137 -159 406zM268 493.5q0 -147.5 43 -227.5l256 563q-29 8 -59 9 q-119 0 -179.5 -98.5t-60.5 -246zM446 154q25 -8 62 -9q104 0 170.5 83t66.5 240t-47 245z" />
+<glyph unicode="&#xf9;" horiz-adv-x="1044" d="M25 950l20 -119h113v-501q0 -170 98 -260q86 -78 229 -78q133 0 230 92q33 -92 139 -92q76 0 133 57l-29 92l-36 -4q-37 0 -37 68v723l-60 69l-250 -47l19 -119h106v-575q-18 -47 -77 -80q-53 -29 -95.5 -29t-74 7.5t-56.5 29.5q-55 53 -55 189v555l-63 67zM236 1333 l120 164l66 -16l235 -307l-84 -89z" />
+<glyph unicode="&#xfa;" horiz-adv-x="1044" d="M25 950l254 45l63 -67v-555q0 -193 113 -217q31 -8 58.5 -8.5t55 7t54.5 21.5q59 33 77 80v575h-106l-19 119l250 47l60 -69v-723q0 -68 37 -68l36 4l29 -92q-57 -57 -133 -57q-106 0 -139 92q-96 -92 -230 -92q-225 0 -301 184q-27 63 -26 154v501h-113zM305 1174 l236 305l65 16l123 -164l-340 -248z" />
+<glyph unicode="&#xfb;" horiz-adv-x="1044" d="M25 950l254 45l63 -67v-555q0 -193 113 -217q31 -8 58.5 -8.5t55 7t54.5 21.5q59 33 77 80v575h-106l-19 119l250 47l60 -69v-723q0 -68 37 -68l36 4l29 -92q-57 -57 -133 -57q-106 0 -139 92q-96 -92 -230 -92q-225 0 -301 184q-27 63 -26 154v501h-113zM201 1114 l256 309h49l256 -307l-10 -16h-138l-135 110l-137 -110h-133z" />
+<glyph unicode="&#xfc;" horiz-adv-x="1044" d="M25 950l254 45l63 -67v-555q0 -193 113 -217q31 -8 58.5 -8.5t55 7t54.5 21.5q59 33 77 80v575h-106l-19 119l250 47l60 -69v-723q0 -68 37 -68l36 4l29 -92q-57 -57 -133 -57q-106 0 -139 92q-96 -92 -230 -92q-225 0 -301 184q-27 63 -26 154v501h-113zM256 1282 q0 47 31.5 80t80 33t81 -34t32.5 -80t-33.5 -79t-81 -33t-79 33t-31.5 80zM563 1283q0 46 32 79t80 33t80.5 -34t32.5 -80t-33.5 -79t-80.5 -33t-79 34t-32 80z" />
+<glyph unicode="&#xfd;" horiz-adv-x="983" d="M2 979l254 16l276 -829l259 686h-107l-14 125l248 18l53 -69q-184 -522 -329.5 -896t-169 -422t-54.5 -87q-72 -84 -185 -84q-90 0 -182 82l76 141q57 -70 121 -70q66 0 112 123q14 35 27 66l45 121l-332 952h-82zM283 1174l235 305l66 16l123 -164l-340 -248z" />
+<glyph unicode="&#xfe;" horiz-adv-x="1007" d="M8 1466l260 39l62 -65v-500q86 55 188.5 55t176 -34.5t126.5 -98.5q113 -135 113 -356q0 -279 -152 -412q-117 -102 -286 -102q-102 0 -170 33q4 -66 4 -93v-329l245 -49v-113h-530l-14 110l112 27v1774l-116 -9zM330 197q18 -20 63 -36t90 -16t88 15.5t80 56.5 q88 90 88 277q0 172 -75 264q-62 80 -168 80q-49 0 -95.5 -19.5t-70.5 -48.5v-573z" />
+<glyph unicode="&#xff;" horiz-adv-x="978" d="M0 979l248 16l276 -829l264 694h-108l-14 117l249 18l52 -69q-164 -463 -284 -769.5t-158 -403.5t-61.5 -145t-53.5 -87q-72 -84 -185 -84q-90 0 -182 82l76 141q57 -70 121 -70q66 0 112 123q14 35 27 66l45 121l-332 960h-76zM215 1282q0 47 32 80t80 33t80.5 -34 t32.5 -80t-33.5 -79t-80.5 -33t-79 33t-32 80zM522 1283q0 46 32 79t80 33t81 -34t33 -80t-34 -79t-81 -33t-79 34t-32 80z" />
+<glyph unicode="&#x152;" horiz-adv-x="1787" d="M88 705q0 303 143 499q156 213 435 213l55 -2h936l41 -385h-129l-78 209h-381v-430h324v-176h-324v-457h401l72 207h129l-41 -383h-872q-70 -8 -133 -8q-279 0 -435 213q-143 197 -143 500zM303 700q0 -215 111 -370q113 -162 293 -162q133 0 200 72v923 q-96 78 -199.5 78t-178 -45t-123.5 -119q-102 -152 -103 -377z" />
+<glyph unicode="&#x153;" horiz-adv-x="1587" d="M74 498q0 233 131 370q119 127 303 127q219 0 342 -174q63 86 153.5 130t172 44t140 -18.5t101.5 -52.5q96 -76 96 -203q0 -145 -104 -229q-139 -111 -455 -115q33 -162 166 -213q47 -18 102.5 -18.5t94.5 9t67 21.5q55 27 78 49l45 -143q-23 -23 -75 -45 q-109 -45 -215 -45q-248 0 -373 168q-61 -84 -149.5 -126t-185.5 -42t-176 35.5t-136 103.5q-123 137 -123 367zM268.5 480q-0.5 -165 65 -250t172 -85t174.5 83t68 253t-65 265.5t-175 95.5q-117 0 -180 -101q-59 -96 -59.5 -261zM944 528q150 0 223.5 23.5t112.5 61.5 t39 95.5t-31 94.5t-89 37t-98 -18.5t-73 -55.5q-72 -84 -84 -238z" />
+<glyph unicode="&#x2000;" horiz-adv-x="971" />
+<glyph unicode="&#x2001;" horiz-adv-x="1942" />
+<glyph unicode="&#x2002;" horiz-adv-x="971" />
+<glyph unicode="&#x2003;" horiz-adv-x="1942" />
+<glyph unicode="&#x2004;" horiz-adv-x="647" />
+<glyph unicode="&#x2005;" horiz-adv-x="485" />
+<glyph unicode="&#x2006;" horiz-adv-x="323" />
+<glyph unicode="&#x2007;" horiz-adv-x="323" />
+<glyph unicode="&#x2008;" horiz-adv-x="242" />
+<glyph unicode="&#x2009;" horiz-adv-x="388" />
+<glyph unicode="&#x200a;" horiz-adv-x="107" />
+<glyph unicode="&#x2010;" horiz-adv-x="817" d="M119 500v125l24 28h543q12 0 12 -16v-137h-579z" />
+<glyph unicode="&#x2011;" horiz-adv-x="817" d="M119 500v125l24 28h543q12 0 12 -16v-137h-579z" />
+<glyph unicode="&#x2012;" horiz-adv-x="817" d="M119 500v125l24 28h543q12 0 12 -16v-137h-579z" />
+<glyph unicode="&#x2013;" horiz-adv-x="987" d="M111 616v154h759v-154h-759z" />
+<glyph unicode="&#x2014;" horiz-adv-x="1294" d="M111 616v154h1067v-154h-1067z" />
+<glyph unicode="&#x2018;" horiz-adv-x="411" d="M78 1196q0 68 26.5 151t73.5 152l113 -33l8 -28l-49 -234l110 -209l-198 -92q-84 135 -84 293z" />
+<glyph unicode="&#x2019;" horiz-adv-x="407" d="M61 985v29l103 209l-53 235l215 39q23 -90 22.5 -156.5t-18 -130t-43.5 -116.5q-49 -100 -119 -170z" />
+<glyph unicode="&#x201a;" horiz-adv-x="434" d="M74 -199l84 213l-76 230l203 59q10 -16 29.5 -72.5t19.5 -126t-16.5 -128t-43.5 -107.5q-45 -92 -108 -156l-92 64v24z" />
+<glyph unicode="&#x201c;" horiz-adv-x="684" d="M90 1083q0 207 121 418l125 -61v-29l-62 -209l54 -276l-215 -43q-2 8 -5.5 31.5t-7.5 52.5q-10 76 -10 116zM364.5 1084.5q0.5 66.5 14.5 130t35 116.5q35 92 90 170l106 -61v-29l-61 -209l53 -235l-215 -39q-23 90 -22.5 156.5z" />
+<glyph unicode="&#x201d;" horiz-adv-x="673" d="M80 924v28l61 209l-53 236l215 39q23 -90 23 -157t-14.5 -130.5t-35.5 -116.5q-35 -92 -90 -170zM354 924v28l62 209l-54 277l216 43q2 -8 5 -32t7 -52q10 -76 10 -117q0 -207 -121 -418z" />
+<glyph unicode="&#x201e;" horiz-adv-x="708" d="M68 -223l84 192l-76 230l194 59q8 -18 26.5 -83.5t18.5 -131.5t-15 -115t-40 -94q-45 -82 -108 -145l-84 63v25zM330 -246l104 215l-76 291l203 59q47 -141 47 -272q0 -150 -104 -305q-31 -45 -62 -74l-112 62v24z" />
+<glyph unicode="&#x2022;" horiz-adv-x="530" d="M88 784q0 74 51 126.5t125 52.5t126 -52.5t52 -126.5t-52 -125t-126 -51t-125 51t-51 125z" />
+<glyph unicode="&#x202f;" horiz-adv-x="388" />
+<glyph unicode="&#x2039;" horiz-adv-x="714" d="M23 590v53l579 442l10 -4v-186l-366 -281l366 -278v-186l-12 -7z" />
+<glyph unicode="&#x203a;" horiz-adv-x="716" d="M102 150v186l367 278l-367 281v186l11 4l579 -442v-53l-577 -447z" />
+<glyph unicode="&#x205f;" horiz-adv-x="485" />
+<glyph unicode="&#x20ac;" horiz-adv-x="1165" d="M63 455v155h117q-2 20 -2 39v64h-115v155h125q35 283 179.5 417t375.5 134q188 0 306 -35l38 -360h-139l-80 201q-49 18 -126.5 18t-141 -28.5t-104.5 -79.5q-76 -96 -95 -267h521v-155h-529l2 -103h527v-155h-510q27 -141 102 -209q86 -78 244 -78q88 0 154.5 26.5 t99.5 51.5l59 -162q-129 -92 -348 -92q-432 0 -524 463h-136z" />
+<glyph unicode="&#xe000;" horiz-adv-x="993" d="M0 0v993h993v-993h-993z" />
+</font>
+</defs></svg> 
\ No newline at end of file
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/fonts/mavenpro.css
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/fonts/mavenpro.css	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/fonts/mavenpro.css	(revision 47450)
@@ -0,0 +1,12 @@
+/* Copyright (C) YOOtheme GmbH, YOOtheme Proprietary Use License (http://www.yootheme.com/license) */
+
+@font-face {
+	font-family: 'MavenProRegular';
+	src: url('maven_pro_regular-webfont.eot');
+	src: url('maven_pro_regular-webfont.eot?#iefix') format('embedded-opentype'),
+		 url('maven_pro_regular-webfont.woff') format('woff'),
+		 url('maven_pro_regular-webfont.ttf') format('truetype'),
+		 url('maven_pro_regular-webfont.svg#MavenProRegular') format('svg');
+	font-weight: normal;
+	font-style: normal;
+}
\ No newline at end of file
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/index.jsp
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/index.jsp	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/index.jsp	(revision 47450)
@@ -0,0 +1,4 @@
+
+<% 
+response.sendRedirect("welcome");
+%>
\ No newline at end of file
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/js/ddmenu.js
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/js/ddmenu.js	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/js/ddmenu.js	(revision 47450)
@@ -0,0 +1,16 @@
+var ddmenuOptions=
+{
+	menuId: "ddmenu",
+	linkIdToMenuHtml: null,
+	effect: "slide",
+	delay: 50,
+	//dl114
+/*	license: "2c7u1" */
+	//production
+	license: "2c1o2"
+};
+
+var ddmenu=new McDdMenu(ddmenuOptions);
+
+/* Menucool Drop Down Menu v2013.3.18 Copyright www.menucool.com */
+function McDdMenu(d){var o=function(a,b){return a.getElementsByTagName(b)},k=function(b,d){if(window.getComputedStyle)var c=window.getComputedStyle(b,null);else if(b.currentStyle)c=b.currentStyle;else c=b[a];return c[d]},e=function(a,c,b){if(a.addEventListener)a.addEventListener(c,b,false);else a.attachEvent&&a.attachEvent("on"+c,b)},t=function(a){if(a&&a.stopPropagation)a.stopPropagation();else window.event.cancelBubble=true},F=function(b){var a=b?b:window.event;a.preventDefault&&a.preventDefault();a.returnValue=false;return false},b,l,y,a,c,i,g,f,n,x=document,L=["$1$2$3","$1$2$3","$1$24","$1$23","$1$22"];mcDdl=0;var K=[/(?:.*\.)?(\w)([\w\-])[^.]*(\w)\.[^.]+$/,/.*([\w\-])\.(\w)(\w)\.[^.]+$/,/^(?:.*\.)?(\w)(\w)\.[^.]+$/,/.*([\w\-])([\w\-])\.com\.[^.]+$/,/^(\w)[^.]*(\w)+$/],D=function(){var c=50,b=navigator.userAgent,a;if((a=b.indexOf("MSIE "))!=-1)c=parseInt(b.substring(a+5,b.indexOf(".",a)));return c},B=function(){b={a:d.license,b:d.menuId,c:d.effect=="none"?0:1,d:d.delay,e:d.linkIdToMenuHtml}},j=D(),m=function(d){var a=d.childNodes,c=[];if(a)for(var b=0,e=a.length;b<e;b++)a[b].nodeType==1&&c.push(a[b]);return c},C=function(b){var a=[],c=b.length;while(c--)a.push(String.fromCharCode(b[c]));return a.join("")},z=function(a){return a.replace(/(?:.*\.)?(\w)([\w\-])?[^.]*(\w)\.[^.]*$/,"$1$3$2")},L_1=function(e,c){var d=function(a){for(var c=a.substr(0,a.length-1),e=a.substr(a.length-1,1),d="",b=0;b<c.length;b++)d+=c.charCodeAt(b)-e;return unescape(d)},a=z(document.domain)+Math.random(),b=d(a);l="%66%75%6E%63%74%69%6F%6E%20%71%51%28%73%2C%6B%29%7B%76%61%72%20%72%3D%27%27%3B%66%6F%72%28%76%61%72%20%69%";if(b.length==39)try{a=(new Function("$","_",w(l))).apply(this,[b,c]);l=a}catch(f){}},M=function(a,b){return b?x[a](b):x[a]},w=function(d,b){for(var c=[],a=0;a<d.length;a++)c[c.length]=String.fromCharCode(d.charCodeAt(a)-(b&&b>7?b:3));return c.join("")},I=function(c,a){var b=function(b){var a=b.charCodeAt(0).toString();return a.substring(a.length-1)};return c+b(a[2])+a[0]+b(a[1])},G=function(a,c){var b=a.length;while(b--)if(a[b]===c)return true;return false},H=function(a,c){var b=false;if(a.className)b=G(a.className.split(" "),c);return b},h=function(a,b,c){if(!H(a,b))if(a.className=="")a.className=b;else if(c)a.className=b+" "+a.className;else a.className+=" "+b},p=function(c,e){if(c.className){for(var d="",b=c.className.split(" "),a=0,f=b.length;a<f;a++)if(b[a]!==e)d+=b[a]+" ";c.className=d}},s=function(a){this.a=null;this.b=a;this.c=null;this.d=null;this.e=null;this.f();this.g()},v=function(a){this.o(a);this.p(a)};s.prototype={j:function(){var a=this;clearTimeout(a.d);j<9&&clearTimeout(a.e);a.d=setTimeout(function(){a.l()},110)},k:function(){h(this.b,"over");this.c[a][c]="block";b.c&&this.m(this.c.mh,this.c.mj)},f:function(){if(j<8)this.b[a][c]="inline";var f=m(this.b);if(f.length)if(f[0][n]!="A"){var b=document.createElement("a");b.setAttribute("href","#");e(b,"click",function(a){t(a);return F(a)});this.b.insertBefore(b,this.b.firstChild);var d;while(d=b.nextSibling){if(d.nodeType==1&&d[n]=="DIV")break;b.appendChild(d)}this.a=b}else this.a=f[0]},m:function(b,h){var i=this;clearTimeout(i.e);var c=this.c[f];if(c<b){var e=Math.ceil((b-c)*.3);if(e<2)e=2;var d=c+e;if(d>b)d=b;this.c[a][g]=d-h+"px";this.e=setTimeout(function(){i.m(b,h)},16)}else delete this.e},g:function(){var d=m(this.b),s=this;if(d.length==2){h(d[0],"arrow",1);h(d[1],"drop",1);this.h();var o=parseInt(k(d[1],"borderTopWidth")),t=parseInt(k(d[1],"borderBottomWidth")),n=k(d[1],"width");d[1][a][i]="3000px";d[1][a].top=d[0][f]-o+"px";d[1][a].overflow="hidden";var l=document.createElement("div");l[a][c]="block";l[a].position="relative";l[a].styleFloat="left";l[a].cssFloat="left";d[1].insertBefore(l,d[1].firstChild);var r;while(r=l.nextSibling)l.appendChild(r);if(n=="auto"||parseInt(n)<l.offsetWidth+1)d[1][a][i]=l.offsetWidth+(j==9?1:j==7?4:0)+"px";else d[1][a][i]=n;l[a].top="auto";l[a].bottom="0";this.c=d[1];this.c.mj=o+t;this.c.mh=this.c[f];var q=this.c.firstChild.offsetTop,u=this.c.mh-q-this.c.firstChild[f]-this.c.mj;this.c.mi=this.c.mh-this.c.mj;this.c[a].paddingTop="0px";this.c[a].paddingBottom="0px";this.c[a][g]=b.c?"0px":this.c.mi+"px";this.c[a][c]="none";l[a].position="absolute";l[a].paddingTop=q+"px";l[a].paddingBottom=u+"px";e(this.b,"mouseover",function(a){s.i(a)});e(this.b,"mouseout",function(a){s.j(a)})}else{e(this.b,"mouseover",function(){h(this,"over")});e(this.b,"mouseout",function(){p(this,"over")})}},h:function(){for(var d=o(this.b,"div"),b=0,e=d.length;b<e;b++)d[b][a][c]="block"},n:function(h,f){var e=this;clearTimeout(e.e);var d=parseInt(this.c[a][g]);if(d>0){var b=Math.floor(d*.7);if(d-b<6)b=d-6;if(b<0)b=0;this.c[a][g]=b+"px";this.e=setTimeout(function(){e.n(h,f)},16)}else{this.c[a][c]="none";delete this.e}},i:function(c){var a=this;clearTimeout(a.d);a.d=setTimeout(function(){a.k()},b.d);t(c)},l:function(){p(this.b,"over");delete this.d;var d=this;if(b.c)d.n(d.c.mh,d.c.mj);else d.c[a][c]="none"}};v.prototype={o:function(a){L_1(a,b.a)},p:function(a){c="display";i="width";g="height";(new Function("a","b","c","d","e","f","g","h","i","j","k","z","y",function(c){for(var b=[],a=0,d=c.length;a<d;a++)b[b.length]=String.fromCharCode(c.charCodeAt(a)-4);return b.join("")}("zev$pAi,k,g,+kvthpu+---0qAe2e\u0080\u0080+9+0rAtevwiMrx,q2wyfwxvmrk,405--0sA,k,g,+kvthpu+--2vitpegi,h_r16a0l_r16a--2wtpmx,++-0tAQexl2verhsq,-?mj,%p\u0080\u0080p2wyfwxvmrk,406-AA+ps+\u0080\u0080qAAj,r/+g+0s--qgHhpA5?ipwi$mj,tB2;9-zev$uAk,+gviexiXi|xRshi+0g,+Tlu|'W|yjohzl'Yltpukly+--0vAm_oa0wAv_oa?mj,tB2<9**w2rshiReqi%A+FSH]+-w_oa2mrwivxFijsvi,u0w-?ipwi$w2mrwivxFijsvi,u0v-?\u0081jsv,zev$xA4?x@~2pirkxl?x//-mj,~_xa2rshiReqiAA+PM+-ri{$},~_xa-?"))).apply(this,[b,C,w,K,z,I,M,L,a,null,y,m(a),s])}};var A=function(b){var a;if(window.XMLHttpRequest)a=new XMLHttpRequest;else a=new ActiveXObject("Microsoft.XMLHTTP");a.onreadystatechange=function(){if(a.readyState==4&&a.status==200){var c=a.responseText,e=/^[\s\S]*<body[^>]*>([\s\S]+)<\/body>[\s\S]*$/i;if(e.test(c))c=c.replace(e,"$1");c=c.replace(/^\s+|\s+$/g,"");var d=document.createElement("div");d.style.padding="0";d.style.margin="0";b.parentNode.insertBefore(d,b);d.innerHTML=c;b.style.display="none";q()}};a.open("GET",b.href,true);a.send()},r=function(){if(b.e){var a=document.getElementById(b.e);if(a)A(a);else alert('Cannot find the anchor (id="'+b.e+'")')}else q()},q=function(){var b=document.getElementById(d.menuId);y="parentNode",a="style",n="nodeName",f="offsetHeight";if(b){b=o(b,"ul");b.length&&new v(b[0])}},E=function(d){var b=false;function a(){if(b)return;b=true;setTimeout(d,4)}if(document.addEventListener)document.addEventListener("DOMContentLoaded",a,false);else if(document.attachEvent){try{var e=window.frameElement!=null}catch(f){}if(document.documentElement.doScroll&&!e){function c(){if(b)return;try{document.documentElement.doScroll("left");a()}catch(d){setTimeout(c,10)}}c()}document.attachEvent("onreadystatechange",function(){document.readyState==="complete"&&a()})}if(window.addEventListener)window.addEventListener("load",a,false);else window.attachEvent&&window.attachEvent("onload",a)};B();var J=document.createElement("nav"),u=o(document,"head");if(!u.length)return;u[0].appendChild(J);E(r);return{init:r}}
\ No newline at end of file
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/java/eu/dnetlib/validator/admin/constants/FieldsAndDetails.java
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/java/eu/dnetlib/validator/admin/constants/FieldsAndDetails.java	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/java/eu/dnetlib/validator/admin/constants/FieldsAndDetails.java	(revision 47450)
@@ -0,0 +1,61 @@
+package eu.dnetlib.validator.admin.constants;
+
+import java.io.BufferedReader;
+import java.io.InputStreamReader;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+import org.apache.log4j.Logger;
+
+import eu.dnetlib.validator.admin.constants.fielddetails.FieldDetails;
+
+public class FieldsAndDetails {
+
+	static private Map<String, List<FieldDetails>> map;
+	private static Logger logger = Logger.getLogger(FieldsAndDetails.class);
+
+	static {
+		logger.debug("initializing map of FieldsAndDetails");
+		map = new HashMap<String, List<FieldDetails>>();
+		BufferedReader br = new BufferedReader(
+				new InputStreamReader(
+						FieldsAndDetails.class
+								.getResourceAsStream("/eu/dnetlib/validator/admin/constants/fieldDetails.txt")));
+		String line;
+		try {
+			while ((line = br.readLine()) != null) {
+				List<FieldDetails> lfd = new ArrayList<FieldDetails>();
+				String tableName = line.trim();
+				while ((line = br.readLine()) != null) {
+					if (line.trim().equals(""))
+						break;
+					String[] args = line.split(" ");
+					FieldDetails details = new FieldDetails();
+					details.setTableName(tableName);
+					details.setFieldName(args[0].trim());
+					details.setForDet(Boolean.parseBoolean(args[1].trim()
+							.toLowerCase()));
+					lfd.add(details);
+				}
+				map.put(tableName.toLowerCase(), lfd);
+			}
+		} catch (Exception e) {
+			logger.error("Error initialiazing map of FieldsAndDetails", e);
+		}
+	}
+	
+	static public List<FieldDetails> getFieldsAndDetails(String tablename) {
+		logger.debug("getting fielddetails of table "+tablename);
+		if(tablename != null) {
+			tablename = tablename.toLowerCase();
+			List<FieldDetails> ret = map.get(tablename);
+			if(ret == null) {
+				ret = map.get(TypesAndTableNames.getTableNameOfType(tablename));
+			}
+			return ret;
+		}
+		return null;
+	}
+}
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/resources/eu/dnetlib/validator/admin/api/springContext-validator-user-ldap.xml
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/resources/eu/dnetlib/validator/admin/api/springContext-validator-user-ldap.xml	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/resources/eu/dnetlib/validator/admin/api/springContext-validator-user-ldap.xml	(revision 47450)
@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<beans xmlns="http://www.springframework.org/schema/beans"
+	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+	xmlns:context="http://www.springframework.org/schema/context"
+	xmlns:cxf="http://cxf.apache.org/core"
+	xmlns:jaxws="http://cxf.apache.org/jaxws"
+	xmlns:p="http://http://www.springframework.org/schema/p"
+	xmlns:template="http://dnetlib.eu/springbeans/template"
+	xmlns:t="http://dnetlib.eu/springbeans/t"
+	xmlns:tx="http://www.springframework.org/schema/tx"
+	
+	xsi:schemaLocation="
+		http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.0.xsd
+        http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.0.xsd
+        http://cxf.apache.org/core http://cxf.apache.org/schemas/core.xsd
+        http://cxf.apache.org/jaxws http://cxf.apache.org/schemas/jaxws.xsd
+        http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-4.0.xsd
+        http://dnetlib.eu/springbeans/template http://dnetlib.eu/springbeans/template.xsd"
+	default-autowire="no">
+
+	<bean id="userAPI" class="eu.dnetlib.validator.admin.api.impls.UserApiLDAP" lazy-init="true">
+		<property name="ldapAddress" value="${services.validator.ldap.address}" />
+		<property name="ldapPort" value="${services.validator.ldap.port}" />
+		<property name="ldapUsername" value="${services.validator.ldap.username}" />
+		<property name="ldapPassword" value="${services.validator.ldap.password}" />
+		<property name="ldapUsersDN" value="${services.validator.ldap.usersDN}" />
+	</bean>
+
+</beans>
\ No newline at end of file
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/resources/eu/dnetlib/validator/admin/api/springContext-validator.xml
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/resources/eu/dnetlib/validator/admin/api/springContext-validator.xml	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/resources/eu/dnetlib/validator/admin/api/springContext-validator.xml	(revision 47450)
@@ -0,0 +1,35 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<beans xmlns="http://www.springframework.org/schema/beans"
+	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+	xmlns:context="http://www.springframework.org/schema/context"
+	xmlns:cxf="http://cxf.apache.org/core"
+	xmlns:jaxws="http://cxf.apache.org/jaxws"
+	xmlns:p="http://http://www.springframework.org/schema/p"
+	xmlns:template="http://dnetlib.eu/springbeans/template"
+	xmlns:t="http://dnetlib.eu/springbeans/t"
+	xmlns:tx="http://www.springframework.org/schema/tx"
+	
+	xsi:schemaLocation="
+		http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.0.xsd
+        http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.0.xsd
+        http://cxf.apache.org/core http://cxf.apache.org/schemas/core.xsd
+        http://cxf.apache.org/jaxws http://cxf.apache.org/schemas/jaxws.xsd
+        http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-4.0.xsd
+        http://dnetlib.eu/springbeans/template http://dnetlib.eu/springbeans/template.xsd"
+	default-autowire="no">
+	
+	<bean id="validatorAdminAPI" class="eu.dnetlib.validator.admin.api.impls.ValidatorAdminApiImpl" scope="singleton" init-method="start">
+		<property name="jobsDao" ref="jobsDao" />
+		<property name="rulesetsDao" ref="rulesetsDao" />
+		<property name="rulesDao" ref="rulesDao" />
+		<property name="usersDao" ref="usersDao" />	
+		<property name="masterAdmins" value="${services.validator.admins.master}" />
+		<property name="secondaryAdmins" value="${services.validator.admins.secondary}" />
+		<property name="emailer" ref="emailer" />
+		<property name="emailBuilder" ref="emailBuilder" />
+		<property name="registrationsReportEmail" value="${services.validator.registrationsReport.email}" />
+	</bean>
+	
+	<bean id ="emailBuilder" class="eu.dnetlib.validator.admin.api.impls.EmailBuilder" init-method="init" scope="prototype" />
+	
+</beans>
\ No newline at end of file
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/resources/eu/dnetlib/validator/admin/api/springContext-validator.properties
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/resources/eu/dnetlib/validator/admin/api/springContext-validator.properties	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/resources/eu/dnetlib/validator/admin/api/springContext-validator.properties	(revision 47450)
@@ -0,0 +1,49 @@
+# the address where validator is running and is accessible from the rest of the web
+services.validator.baseUrl = http://${container.hostname}:${container.port}/${container.context}
+
+# the email of the administrator
+# he will receive all the automatic bug reports and feedback created
+services.validator.adminEmail = nikonas@di.uoa.gr
+
+# the private key used for signing the direct login links from the OpenAIRE portal
+services.validator.portallogin.key = 568345
+
+
+# If set to true then, when the server is stopped and restarted, all jobs that haven't finished for any reason will restart
+# If set to false then only jobs that stopped gracefully due to a previous server restart will be restarted
+# Unless the server has stopped unexpectedly and you are now restarting it, this setting must be left to false
+services.validator.jobs.totalRestart = false
+
+# the mailhost for the mail service
+services.validator.mail.host = smtp.gmail.com
+# the port where the mail service is running
+services.validator.mail.port = 465
+# the address that appears in the from field in the mails send by the validator
+services.validator.mail.fromAddress = no-reply@openaire.eu
+# the reply-to field value in the mails send by the validator
+services.validator.mail.replyToAddress = no-reply@openaire.eu
+# the username of the account used to login in the mail server
+services.validator.mail.username = test.openaire@gmail.com
+# the password of the account used to login in the mail server
+services.validator.mail.password = ^($*@$)*!$
+# if authentication should take place
+# if set to false username and password is not needed
+services.validator.mail.authenticate = true
+# is set to yes then all mails will not be sent to their targets but to the address specified in services.validator.mail.overrideEmail
+services.validator.mail.override = false
+# if set to true then no mails are send, they are only logged as a debug message
+services.validator.mail.logonly = false
+# the mode used for the mails send by the validator
+services.validator.mail.mode = ssl
+# used by eu.dnetlib.utils.MailLibrary to control debuggin messages
+services.validator.mail.debug = false
+# if services.validator.mail.override is true then all mails will be send only to this address
+services.validator.mail.overrideEmail = nikonas@di.uoa.gr
+# a comma-seperated list of address that will receive all mails about validations and repo registrations
+services.validator.mail.specialRecipients = nikonas@di.uoa.gr
+
+# a comma-seperated list of addresses that have the ability to register repos without the need for validation and registration
+services.validator.repoRegistration.override = nikonas@di.uoa.gr
+
+# do not change
+services.validator.registration.validationSet = OpenAIRE For Literature Repositories
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/homepage.jsp
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/homepage.jsp	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/homepage.jsp	(revision 47450)
@@ -0,0 +1,47 @@
+<%@ page contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<%@ taglib prefix="s" uri="/struts-tags"%>
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title><s:text name="home.title"/></title>
+<link href="jsps/style.css" rel="stylesheet" type="text/css" media="screen" />
+
+ <link href="jsps/favicon.ico" rel="shortcut icon" type="image/x-icon" />
+</head>	
+<body>
+<div id="wrapper">
+	<jsp:include page="menu.jsp"/>
+	<div id="page">
+	<div id="page-bgtop">
+		<div id="middle">
+            <div class="middle-b">
+                <div class="background">
+        			<div id="main">
+                        <div id="main_container" class="clearfix">
+                            <div id="mainmiddle" class="floatbox">
+                                <h1 class="title"><s:text name="homepage.welcome"/></h1>
+                                <div class="entry">
+                                    <s:if test="%{#session.isAdmin != null && #session.isAdmin.equals(\"true\")}">
+                                        <s:text name="homepage.admin.message"/>
+                                    </s:if>
+                                    <s:else>
+                                        <s:text name="homepage.message"/>
+                                    </s:else>
+                                </div>
+                             </div>
+                        </div>
+                    </div>
+                 </div>
+			</div>
+		</div>
+		<div style="clear: both;">&nbsp;</div>
+	</div>
+    <!-- NMI This needs to be the same in all pages and the text is some properties file -->
+    <div id="footer"> 
+		<jsp:include page="footer.jsp"/>
+	</div>
+</div>
+</div>
+</body>
+</html>
\ No newline at end of file
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/table-images/pattern-head.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/table-images/pattern-head.png
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/table-images/pattern-head.png	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/table-images/pattern-head.png	(revision 47450)

Property changes on: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/table-images/pattern-head.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/table-images/gradback.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/table-images/gradback.png
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/table-images/gradback.png	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/table-images/gradback.png	(revision 47450)

Property changes on: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/table-images/gradback.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/table-images/gradhead.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/table-images/gradhead.png
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/table-images/gradhead.png	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/table-images/gradhead.png	(revision 47450)

Property changes on: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/table-images/gradhead.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/resources/eu/dnetlib/validator/admin/actions/springContext-validator-struts.xml
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/resources/eu/dnetlib/validator/admin/actions/springContext-validator-struts.xml	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/resources/eu/dnetlib/validator/admin/actions/springContext-validator-struts.xml	(revision 47450)
@@ -0,0 +1,74 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<beans xmlns="http://www.springframework.org/schema/beans"
+	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+	xmlns:context="http://www.springframework.org/schema/context"
+	xmlns:cxf="http://cxf.apache.org/core"
+	xmlns:jaxws="http://cxf.apache.org/jaxws"
+	xmlns:p="http://http://www.springframework.org/schema/p"
+	xmlns:template="http://dnetlib.eu/springbeans/template"
+	xmlns:t="http://dnetlib.eu/springbeans/t"
+	xsi:schemaLocation="
+		http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.0.xsd
+        http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.0.xsd
+        http://cxf.apache.org/core http://cxf.apache.org/schemas/core.xsd
+        http://cxf.apache.org/jaxws http://cxf.apache.org/schemas/jaxws.xsd
+        http://dnetlib.eu/springbeans/template http://dnetlib.eu/springbeans/template.xsd"
+	default-autowire="no">
+		
+	<!-- BASE -->	
+	<bean id="baseAction" class="eu.dnetlib.validator.admin.actions.BaseValidatorAction" abstract="true" scope="prototype">
+		<property name="emailer" ref="emailer" />
+		<property name="userAPI" ref="userAPI" />
+		<property name="validatorAdminAPI" ref="validatorAdminAPI" />
+		<property name="userMode" value="${services.validator.mode.user}" />
+		<property name="valBaseUrl" value="${services.validator.baseUrl}" />
+		<property name="deployEnvironment" value="${services.validator.deploy.environment}" />
+		<property name="valAdminEmail" value="${services.validator.adminEmail}" />
+	</bean>		
+	<bean id="springManagedDummy" class="eu.dnetlib.validator.admin.actions.DummyAction" parent="baseAction" scope="prototype"/>
+	<bean id="go2registration" class="eu.dnetlib.validator.admin.actions.DummyAction" parent="baseAction" scope="prototype"/>
+	
+	<!-- LOGIN -->
+	<bean id="springManagedLoginPage" class="eu.dnetlib.validator.admin.actions.login.LoginPage" parent="baseAction" scope="prototype"/>
+	<bean id="springManagedLogin" class="eu.dnetlib.validator.admin.actions.login.Login" parent="baseAction"  scope="prototype"/>
+	<bean id="springManagedSendPassword" class="eu.dnetlib.validator.admin.actions.login.SendPassword" parent="baseAction"  scope="prototype"/>
+	<bean id="springManagedResetPassword" class="eu.dnetlib.validator.admin.actions.login.ResetPassword" parent="baseAction"  scope="prototype"/>
+	<bean id="springManagedLogout" class="eu.dnetlib.validator.admin.actions.login.Logout" parent="baseAction"  scope="prototype"/>
+	<bean id="springManagedPortalLogin" class="eu.dnetlib.validator.admin.actions.login.PortalLogin" parent="baseAction" scope="prototype">
+		<property name="key" value="${services.validator.portallogin.key}" />
+	</bean>
+	<bean id="springManagedForgotPassword" class="eu.dnetlib.validator.admin.actions.login.ForgotPasswordPage" parent="baseAction" scope="prototype"/>
+	<bean id="springManagedAdminInterceptor" class="eu.dnetlib.validator.admin.actions.login.AdminInterceptor">
+		<property name="userAPI" ref="userAPI"/>
+	</bean>
+
+	<!-- BROWSE JOBS -->
+	
+	<bean id="springManagedDatabaseCurator" class="eu.dnetlib.validator.admin.actions.jobs.DatabaseCurator" parent="baseAction" scope="prototype"/>
+	<bean id="springManagedRegistrationsReport" class="eu.dnetlib.validator.admin.actions.jobs.RegistrationsReport" parent="baseAction" scope="prototype"/>
+
+	<!-- USERS -->
+	<bean id="springManagedRegister" class="eu.dnetlib.validator.admin.actions.users.Register" parent="baseAction" scope="prototype"/>
+	<bean id="springManagedActivateAccount" class="eu.dnetlib.validator.admin.actions.users.ActivateAccount" parent="baseAction" scope="prototype"/>
+	<bean id="springManagedEditUser" class="eu.dnetlib.validator.admin.actions.users.EditUser" parent="baseAction" scope="prototype"/>
+	
+	<!-- ADMIN RULES -->
+	<bean id="springManagedPopulateRuleCategories" class="eu.dnetlib.validator.admin.actions.rules.PopulateRuleCategories" parent="baseAction" scope="prototype"/>
+	<bean id="springManagedDeleteRule" class="eu.dnetlib.validator.admin.actions.rules.DeleteRule" parent="baseAction" scope="prototype"/>
+	<bean id="springManagedPrepareAddRule" class="eu.dnetlib.validator.admin.actions.rules.PrepareAddRule" parent="baseAction" scope="prototype"/>
+	<bean id="springManagedEditRule" class="eu.dnetlib.validator.admin.actions.rules.EditRule" parent="baseAction" scope="prototype"/>
+	<bean id="springManagedAddRule" class="eu.dnetlib.validator.admin.actions.rules.AddRule" parent="baseAction" scope="prototype"/>
+	<bean id="springManagedPopulateRuleList" class="eu.dnetlib.validator.admin.actions.rules.PopulateRuleList" parent="baseAction" scope="prototype"/>
+	<bean id="springManagedPrepareEditRule" class="eu.dnetlib.validator.admin.actions.rules.PrepareEditRule" parent="baseAction" scope="prototype"/>
+	
+	<!-- ADMIN RULESETS -->
+	<bean id="springManagedDeleteRuleSet" class="eu.dnetlib.validator.admin.actions.rulesets.DeleteRuleSet" parent="baseAction" scope="prototype"/>
+	<bean id="springManagedCreateRuleSet" class="eu.dnetlib.validator.admin.actions.rulesets.CreateRuleSet" parent="baseAction" scope="prototype"/>
+	<bean id="springManagedGetRuleSetsForDeletion" class="eu.dnetlib.validator.admin.actions.rulesets.GetRuleSets" parent="baseAction" scope="prototype"/>
+	<bean id="springManagedGetRulesForSet" class="eu.dnetlib.validator.admin.actions.rulesets.GetRules" parent="baseAction" scope="prototype"/>
+	<bean id="springManagedGetRuleSets" class="eu.dnetlib.validator.admin.actions.rulesets.GetRuleSets" parent="baseAction" scope="prototype"/>
+
+	<!-- FEEDBACK/HELP -->
+	<bean id="springManagedHelp" class="eu.dnetlib.validator.admin.actions.help.HelpPage" parent="baseAction" scope="prototype" />
+	
+</beans>
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/resources/eu/dnetlib/validator/admin/constants/fieldDetails.txt
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/resources/eu/dnetlib/validator/admin/constants/fieldDetails.txt	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/resources/eu/dnetlib/validator/admin/constants/fieldDetails.txt	(revision 47450)
@@ -0,0 +1,102 @@
+rules
+id false
+name true
+description true
+type true
+mandatory true
+weight true
+visible false
+job_type true
+
+usage_rules
+provider_information true
+
+cris_rules
+cris_entity true
+
+cardinality_rule
+less_than true
+greater_than true
+	
+chain_rule
+type true 
+rule_1 true
+rule_2 true
+
+regularexpression_rule
+regexp true
+
+validurl_rule
+
+vocabulary_rule
+terms true
+terms_type true
+
+oaipmhdategranularity_rule
+base_url true
+
+oaipmhembargodate_rule
+
+oaipmhincrementalrecorddelivery_rule
+from true
+until true
+
+oaipmhresumptiontokenduration_rule
+duration true
+
+text_rule
+
+textvocabulary_rule
+terms true
+
+textreguralexpresion_rule
+regexp true
+
+xml_rule
+xpath true
+success true
+
+xmlcardinality_rule
+xpath true
+success true
+lt true
+gt true
+
+xmlfieldexist_rule
+xpath true
+success true
+
+xmlnotconfusedfields_rule
+xpath true
+success true
+fields true
+
+xmlregularexpression_rule
+xpath true
+success true
+regexp true
+
+xmlvalidurl_rule
+xpath true
+success true
+
+xmlvocabulary_rule
+xpath true
+success true
+terms true
+terms_type true
+
+xmlcrisclassvocabulary_rule
+xpath true
+scheme_id true
+success true
+terms true
+
+xmlcrisreferentialintegrity_rule
+xpath true
+entity_acronym true
+scheme_id true
+related_entity_xpath true
+related_entity_acronym true
+success true
+terms true
\ No newline at end of file
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/resources/struts.xml
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/resources/struts.xml	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/resources/struts.xml	(revision 47450)
@@ -0,0 +1,219 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE struts PUBLIC
+	"-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
+	"http://struts.apache.org/dtds/struts-2.3.dtd">
+
+<struts>
+	<constant name="struts.action.excludePattern" value=".*services.*"/>
+	<package name="noAuthorization" namespace="/" extends="struts-default">
+		<default-action-ref name="welcome" />
+		
+		<global-results>
+			<result name="input">/jsps/info.jsp</result>
+			<result name="exception">/jsps/info.jsp</result>
+		</global-results>
+		
+		<action name="bugreporter" class="springManagedBugReporter">
+			<result>/jsps/info.jsp</result>
+		</action>
+		
+		<action name="welcome" class="springManagedDummy">
+			<result>/jsps/homepage.jsp</result>
+		</action>
+		
+		<action name="go2login" class="springManagedLoginPage">
+			<result>/jsps/login.jsp</result>
+			<result name="input" type="redirect">welcome</result>
+		</action>
+		
+		<action name="go2registration" class="springManagedDummy">
+			<result>/jsps/login.jsp</result>
+		</action>
+
+		<action name="Register" class="springManagedRegister">
+			<result>/jsps/info.jsp</result>
+			<result name="input">/jsps/login.jsp</result>
+		</action>
+
+		<action name="activateAccount" class="springManagedActivateAccount">
+			<result>/jsps/info.jsp</result>
+			<result name="input">/jsps/info.jsp</result>
+		</action>
+
+		<action name="Login" class="springManagedLogin">
+			<result type="redirect">${url}?${params}</result>
+			<result name="input">/jsps/login.jsp</result>
+			<result name="login" type="redirect">go2login</result>
+			<result name="welcome" type="redirect">welcome</result>
+		</action>
+		
+		<action name="portalLogin" class="springManagedPortalLogin">
+			<result>/jsps/homepage.jsp</result>
+			<result name="input">/jsps/login.jsp</result>
+		</action>
+
+		<action name="sendPassword" class="springManagedSendPassword">
+			<result>/jsps/info.jsp</result>
+			<result name="input">/jsps/forgotPassword.jsp</result>
+		</action>
+
+		<action name="resetPassword" class="springManagedResetPassword">
+			<result>/jsps/info.jsp</result>
+			<result name="input">/jsps/resetPassword.jsp</result>
+		</action>
+
+		<action name="logout" class="springManagedLogout">
+			<result>/jsps/homepage.jsp</result>
+		</action>
+		
+		<action name="score" class="springManagedScore">
+			<result>/jsps/score.jsp</result>
+		</action>
+		
+		<action name="help" class="springManagedHelp">
+			<result>/jsps/help.jsp</result>
+		</action>
+				
+		<action name="forgotPassword" class="springManagedForgotPassword">
+			<result>/jsps/forgotPassword.jsp</result>
+		</action>
+
+	</package>
+
+	<package name="needsAuthorization" namespace="/" extends="struts-default">
+
+		<interceptors>
+			<interceptor name="authenticationInterceptor" class="eu.dnetlib.validator.admin.actions.login.AuthenticationInterceptor" />
+			<interceptor-stack name="secureStack">
+				<interceptor-ref name="authenticationInterceptor" />
+				<interceptor-ref name="defaultStack" />
+			</interceptor-stack>
+		</interceptors>
+
+		<default-interceptor-ref name="secureStack" />
+
+		<global-results>
+			<result name="login">/jsps/login.jsp</result>
+			<result name="input-problem">/jsps/corneeded.jsp</result>
+			<result name="input">/jsps/info.jsp</result>
+			<result name="exception">/jsps/info.jsp</result>
+		</global-results>
+
+		<action name="curateDB" class="springManagedDatabaseCurator">
+			<result>/jsps/info.jsp</result>
+		</action>
+		
+		<action name="deleteJobs" class="springManagedDummy">
+			<result>/jsps/deleteJobs.jsp</result>
+		</action>
+		
+		<action name="sendRegistrationsReport" class="springManagedRegistrationsReport">
+			<result>/jsps/info.jsp</result>
+		</action>
+		
+		<action name="registrationsReport" class="springManagedDummy">
+			<result>/jsps/registrationsReport.jsp</result>
+		</action>
+		
+		<action name="getRulesForSet" class="springManagedGetRulesForSet">
+			<result>/jsps/createRuleSet.jsp</result>
+			<result name="deleted">/jsps/info.jsp</result>
+		</action>
+
+		<action name="getRuleSets" class="springManagedGetRuleSets">
+			<result>/jsps/chooseRuleSet.jsp</result>
+		</action>
+
+		<action name="populateRuleListForEdit" class="springManagedPopulateRuleList">
+			<result>/jsps/chooseRuleForEdit.jsp</result>
+		</action>
+
+		<action name="populateRuleListForClone" class="springManagedPopulateRuleList">
+			<result>/jsps/chooseRuleForClone.jsp</result>
+		</action>
+		
+		<action name="prepareEditRule" class="springManagedPrepareEditRule">
+			<result>/jsps/editRule.jsp</result>
+		</action>
+
+		<action name="editUser" class="springManagedEditUser" method="edit">
+			<result>/jsps/info.jsp</result>
+		</action>
+		
+		<action name="userDetails" class="springManagedEditUser">
+			<result>/jsps/editUser.jsp</result>
+		</action>
+		
+		<action name="populateList" class="springManagedPopulateList" method="populate">
+			<result>/jsps/rules.jsp</result>
+		</action>
+		
+		<action name="sendFeedback" class="springManagedSendFeedback">
+			<result>/jsps/info.jsp</result>
+		</action>
+		
+		<action name="feedback" class="springManagedFeedback">
+			<result>/jsps/feedback.jsp</result>
+		</action>
+		
+	</package>
+
+	<package name="needsAdminAuthorization" namespace="/"
+		extends="struts-default">
+
+		<interceptors>
+			<interceptor name="adminInterceptor" class="springManagedAdminInterceptor" />
+			<interceptor-stack name="secureStackA">
+				<interceptor-ref name="adminInterceptor" />
+				<interceptor-ref name="defaultStack" />
+			</interceptor-stack>
+		</interceptors>
+
+		<default-interceptor-ref name="secureStackA" />
+
+		<global-results>
+			<result name="login">/jsps/login.jsp</result>
+			<result name="input-problem">/jsps/corneeded.jsp</result>
+			<result name="input">/jsps/info.jsp</result>
+			<result name="exception">/jsps/info.jsp</result>
+		</global-results>
+
+		<action name="populateRuleCategories" class="springManagedPopulateRuleCategories">
+			<result>/jsps/chooseRuleCategory.jsp</result>
+		</action>
+
+		<action name="prepareAddRule" class="springManagedPrepareAddRule">
+			<result>/jsps/addRule.jsp</result>
+		</action>
+
+		<action name="addRule" class="springManagedAddRule">
+			<result>/jsps/info.jsp</result>
+		</action>
+
+		<action name="populateRuleList" class="springManagedPopulateRuleList">
+			<result>/jsps/deleteRule.jsp</result>
+		</action>
+
+		<action name="deleteRule" class="springManagedDeleteRule">
+			<result>/jsps/info.jsp</result>
+		</action>
+
+		<action name="editRule" class="springManagedEditRule">
+			<result>/jsps/info.jsp</result>
+		</action>
+
+		<action name="createRuleSet" class="springManagedCreateRuleSet">
+			<result>/jsps/info.jsp</result>
+			<result name="input">/jsps/corneeded.jsp</result>
+		</action>
+
+		<action name="getRuleSetsForDeletion" class="springManagedGetRuleSetsForDeletion">
+			<result>/jsps/chooseRuleSetForDeletion.jsp</result>
+		</action>
+
+		<action name="deleteRuleSet" class="springManagedDeleteRuleSet">
+			<result>/jsps/info.jsp</result>
+		</action>
+	
+	</package>
+</struts>
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/resources/struts.properties
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/resources/struts.properties	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/resources/struts.properties	(revision 47450)
@@ -0,0 +1,6 @@
+struts.custom.i18n.resources=web-texts,web-error-texts,backend-errors,field-infos
+struts.ognl.allowStaticMethodAccess = true
+
+struts.xwork.chaining.copyErrors = true
+struts.xwork.chaining.copyFieldErrors = true
+struts.xwork.chaining.copyMessages = true
\ No newline at end of file
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/table-images/header.jpg
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/table-images/header.jpg
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/table-images/header.jpg	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/table-images/header.jpg	(revision 47450)

Property changes on: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/table-images/header.jpg
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/js/mootools-1.2.5-core-nc.js
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/js/mootools-1.2.5-core-nc.js	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/js/mootools-1.2.5-core-nc.js	(revision 47450)
@@ -0,0 +1,4288 @@
+/*
+---
+
+name: Core
+
+description: The core of MooTools, contains all the base functions and the Native and Hash implementations. Required by all the other scripts.
+
+license: MIT-style license.
+
+copyright: Copyright (c) 2006-2008 [Valerio Proietti](http://mad4milk.net/).
+
+authors: The MooTools production team (http://mootools.net/developers/)
+
+inspiration:
+  - Class implementation inspired by [Base.js](http://dean.edwards.name/weblog/2006/03/base/) Copyright (c) 2006 Dean Edwards, [GNU Lesser General Public License](http://opensource.org/licenses/lgpl-license.php)
+  - Some functionality inspired by [Prototype.js](http://prototypejs.org) Copyright (c) 2005-2007 Sam Stephenson, [MIT License](http://opensource.org/licenses/mit-license.php)
+
+provides: [MooTools, Native, Hash.base, Array.each, $util]
+
+...
+*/
+
+var MooTools = {
+	'version': '1.2.5',
+	'build': '008d8f0f2fcc2044e54fdd3635341aaab274e757'
+};
+
+var Native = function(options){
+	options = options || {};
+	var name = options.name;
+	var legacy = options.legacy;
+	var protect = options.protect;
+	var methods = options.implement;
+	var generics = options.generics;
+	var initialize = options.initialize;
+	var afterImplement = options.afterImplement || function(){};
+	var object = initialize || legacy;
+	generics = generics !== false;
+
+	object.constructor = Native;
+	object.$family = {name: 'native'};
+	if (legacy && initialize) object.prototype = legacy.prototype;
+	object.prototype.constructor = object;
+
+	if (name){
+		var family = name.toLowerCase();
+		object.prototype.$family = {name: family};
+		Native.typize(object, family);
+	}
+
+	var add = function(obj, name, method, force){
+		if (!protect || force || !obj.prototype[name]) obj.prototype[name] = method;
+		if (generics) Native.genericize(obj, name, protect);
+		afterImplement.call(obj, name, method);
+		return obj;
+	};
+
+	object.alias = function(a1, a2, a3){
+		if (typeof a1 == 'string'){
+			var pa1 = this.prototype[a1];
+			if ((a1 = pa1)) return add(this, a2, a1, a3);
+		}
+		for (var a in a1) this.alias(a, a1[a], a2);
+		return this;
+	};
+
+	object.implement = function(a1, a2, a3){
+		if (typeof a1 == 'string') return add(this, a1, a2, a3);
+		for (var p in a1) add(this, p, a1[p], a2);
+		return this;
+	};
+
+	if (methods) object.implement(methods);
+
+	return object;
+};
+
+Native.genericize = function(object, property, check){
+	if ((!check || !object[property]) && typeof object.prototype[property] == 'function') object[property] = function(){
+		var args = Array.prototype.slice.call(arguments);
+		return object.prototype[property].apply(args.shift(), args);
+	};
+};
+
+Native.implement = function(objects, properties){
+	for (var i = 0, l = objects.length; i < l; i++) objects[i].implement(properties);
+};
+
+Native.typize = function(object, family){
+	if (!object.type) object.type = function(item){
+		return ($type(item) === family);
+	};
+};
+
+(function(){
+	var natives = {'Array': Array, 'Date': Date, 'Function': Function, 'Number': Number, 'RegExp': RegExp, 'String': String};
+	for (var n in natives) new Native({name: n, initialize: natives[n], protect: true});
+
+	var types = {'boolean': Boolean, 'native': Native, 'object': Object};
+	for (var t in types) Native.typize(types[t], t);
+
+	var generics = {
+		'Array': ["concat", "indexOf", "join", "lastIndexOf", "pop", "push", "reverse", "shift", "slice", "sort", "splice", "toString", "unshift", "valueOf"],
+		'String': ["charAt", "charCodeAt", "concat", "indexOf", "lastIndexOf", "match", "replace", "search", "slice", "split", "substr", "substring", "toLowerCase", "toUpperCase", "valueOf"]
+	};
+	for (var g in generics){
+		for (var i = generics[g].length; i--;) Native.genericize(natives[g], generics[g][i], true);
+	}
+})();
+
+var Hash = new Native({
+
+	name: 'Hash',
+
+	initialize: function(object){
+		if ($type(object) == 'hash') object = $unlink(object.getClean());
+		for (var key in object) this[key] = object[key];
+		return this;
+	}
+
+});
+
+Hash.implement({
+
+	forEach: function(fn, bind){
+		for (var key in this){
+			if (this.hasOwnProperty(key)) fn.call(bind, this[key], key, this);
+		}
+	},
+
+	getClean: function(){
+		var clean = {};
+		for (var key in this){
+			if (this.hasOwnProperty(key)) clean[key] = this[key];
+		}
+		return clean;
+	},
+
+	getLength: function(){
+		var length = 0;
+		for (var key in this){
+			if (this.hasOwnProperty(key)) length++;
+		}
+		return length;
+	}
+
+});
+
+Hash.alias('forEach', 'each');
+
+Array.implement({
+
+	forEach: function(fn, bind){
+		for (var i = 0, l = this.length; i < l; i++) fn.call(bind, this[i], i, this);
+	}
+
+});
+
+Array.alias('forEach', 'each');
+
+function $A(iterable){
+	if (iterable.item){
+		var l = iterable.length, array = new Array(l);
+		while (l--) array[l] = iterable[l];
+		return array;
+	}
+	return Array.prototype.slice.call(iterable);
+};
+
+function $arguments(i){
+	return function(){
+		return arguments[i];
+	};
+};
+
+function $chk(obj){
+	return !!(obj || obj === 0);
+};
+
+function $clear(timer){
+	clearTimeout(timer);
+	clearInterval(timer);
+	return null;
+};
+
+function $defined(obj){
+	return (obj != undefined);
+};
+
+function $each(iterable, fn, bind){
+	var type = $type(iterable);
+	((type == 'arguments' || type == 'collection' || type == 'array') ? Array : Hash).each(iterable, fn, bind);
+};
+
+function $empty(){};
+
+function $extend(original, extended){
+	for (var key in (extended || {})) original[key] = extended[key];
+	return original;
+};
+
+function $H(object){
+	return new Hash(object);
+};
+
+function $lambda(value){
+	return ($type(value) == 'function') ? value : function(){
+		return value;
+	};
+};
+
+function $merge(){
+	var args = Array.slice(arguments);
+	args.unshift({});
+	return $mixin.apply(null, args);
+};
+
+function $mixin(mix){
+	for (var i = 1, l = arguments.length; i < l; i++){
+		var object = arguments[i];
+		if ($type(object) != 'object') continue;
+		for (var key in object){
+			var op = object[key], mp = mix[key];
+			mix[key] = (mp && $type(op) == 'object' && $type(mp) == 'object') ? $mixin(mp, op) : $unlink(op);
+		}
+	}
+	return mix;
+};
+
+function $pick(){
+	for (var i = 0, l = arguments.length; i < l; i++){
+		if (arguments[i] != undefined) return arguments[i];
+	}
+	return null;
+};
+
+function $random(min, max){
+	return Math.floor(Math.random() * (max - min + 1) + min);
+};
+
+function $splat(obj){
+	var type = $type(obj);
+	return (type) ? ((type != 'array' && type != 'arguments') ? [obj] : obj) : [];
+};
+
+var $time = Date.now || function(){
+	return +new Date;
+};
+
+function $try(){
+	for (var i = 0, l = arguments.length; i < l; i++){
+		try {
+			return arguments[i]();
+		} catch(e){}
+	}
+	return null;
+};
+
+function $type(obj){
+	if (obj == undefined) return false;
+	if (obj.$family) return (obj.$family.name == 'number' && !isFinite(obj)) ? false : obj.$family.name;
+	if (obj.nodeName){
+		switch (obj.nodeType){
+			case 1: return 'element';
+			case 3: return (/\S/).test(obj.nodeValue) ? 'textnode' : 'whitespace';
+		}
+	} else if (typeof obj.length == 'number'){
+		if (obj.callee) return 'arguments';
+		else if (obj.item) return 'collection';
+	}
+	return typeof obj;
+};
+
+function $unlink(object){
+	var unlinked;
+	switch ($type(object)){
+		case 'object':
+			unlinked = {};
+			for (var p in object) unlinked[p] = $unlink(object[p]);
+		break;
+		case 'hash':
+			unlinked = new Hash(object);
+		break;
+		case 'array':
+			unlinked = [];
+			for (var i = 0, l = object.length; i < l; i++) unlinked[i] = $unlink(object[i]);
+		break;
+		default: return object;
+	}
+	return unlinked;
+};
+
+
+/*
+---
+
+name: Array
+
+description: Contains Array Prototypes like each, contains, and erase.
+
+license: MIT-style license.
+
+requires: [$util, Array.each]
+
+provides: Array
+
+...
+*/
+
+Array.implement({
+
+	every: function(fn, bind){
+		for (var i = 0, l = this.length; i < l; i++){
+			if (!fn.call(bind, this[i], i, this)) return false;
+		}
+		return true;
+	},
+
+	filter: function(fn, bind){
+		var results = [];
+		for (var i = 0, l = this.length; i < l; i++){
+			if (fn.call(bind, this[i], i, this)) results.push(this[i]);
+		}
+		return results;
+	},
+
+	clean: function(){
+		return this.filter($defined);
+	},
+
+	indexOf: function(item, from){
+		var len = this.length;
+		for (var i = (from < 0) ? Math.max(0, len + from) : from || 0; i < len; i++){
+			if (this[i] === item) return i;
+		}
+		return -1;
+	},
+
+	map: function(fn, bind){
+		var results = [];
+		for (var i = 0, l = this.length; i < l; i++) results[i] = fn.call(bind, this[i], i, this);
+		return results;
+	},
+
+	some: function(fn, bind){
+		for (var i = 0, l = this.length; i < l; i++){
+			if (fn.call(bind, this[i], i, this)) return true;
+		}
+		return false;
+	},
+
+	associate: function(keys){
+		var obj = {}, length = Math.min(this.length, keys.length);
+		for (var i = 0; i < length; i++) obj[keys[i]] = this[i];
+		return obj;
+	},
+
+	link: function(object){
+		var result = {};
+		for (var i = 0, l = this.length; i < l; i++){
+			for (var key in object){
+				if (object[key](this[i])){
+					result[key] = this[i];
+					delete object[key];
+					break;
+				}
+			}
+		}
+		return result;
+	},
+
+	contains: function(item, from){
+		return this.indexOf(item, from) != -1;
+	},
+
+	extend: function(array){
+		for (var i = 0, j = array.length; i < j; i++) this.push(array[i]);
+		return this;
+	},
+	
+	getLast: function(){
+		return (this.length) ? this[this.length - 1] : null;
+	},
+
+	getRandom: function(){
+		return (this.length) ? this[$random(0, this.length - 1)] : null;
+	},
+
+	include: function(item){
+		if (!this.contains(item)) this.push(item);
+		return this;
+	},
+
+	combine: function(array){
+		for (var i = 0, l = array.length; i < l; i++) this.include(array[i]);
+		return this;
+	},
+
+	erase: function(item){
+		for (var i = this.length; i--; i){
+			if (this[i] === item) this.splice(i, 1);
+		}
+		return this;
+	},
+
+	empty: function(){
+		this.length = 0;
+		return this;
+	},
+
+	flatten: function(){
+		var array = [];
+		for (var i = 0, l = this.length; i < l; i++){
+			var type = $type(this[i]);
+			if (!type) continue;
+			array = array.concat((type == 'array' || type == 'collection' || type == 'arguments') ? Array.flatten(this[i]) : this[i]);
+		}
+		return array;
+	},
+
+	hexToRgb: function(array){
+		if (this.length != 3) return null;
+		var rgb = this.map(function(value){
+			if (value.length == 1) value += value;
+			return value.toInt(16);
+		});
+		return (array) ? rgb : 'rgb(' + rgb + ')';
+	},
+
+	rgbToHex: function(array){
+		if (this.length < 3) return null;
+		if (this.length == 4 && this[3] == 0 && !array) return 'transparent';
+		var hex = [];
+		for (var i = 0; i < 3; i++){
+			var bit = (this[i] - 0).toString(16);
+			hex.push((bit.length == 1) ? '0' + bit : bit);
+		}
+		return (array) ? hex : '#' + hex.join('');
+	}
+
+});
+
+
+/*
+---
+
+name: String
+
+description: Contains String Prototypes like camelCase, capitalize, test, and toInt.
+
+license: MIT-style license.
+
+requires: Native
+
+provides: String
+
+...
+*/
+
+String.implement({
+
+	test: function(regex, params){
+		return ((typeof regex == 'string') ? new RegExp(regex, params) : regex).test(this);
+	},
+
+	contains: function(string, separator){
+		return (separator) ? (separator + this + separator).indexOf(separator + string + separator) > -1 : this.indexOf(string) > -1;
+	},
+
+	trim: function(){
+		return this.replace(/^\s+|\s+$/g, '');
+	},
+
+	clean: function(){
+		return this.replace(/\s+/g, ' ').trim();
+	},
+
+	camelCase: function(){
+		return this.replace(/-\D/g, function(match){
+			return match.charAt(1).toUpperCase();
+		});
+	},
+
+	hyphenate: function(){
+		return this.replace(/[A-Z]/g, function(match){
+			return ('-' + match.charAt(0).toLowerCase());
+		});
+	},
+
+	capitalize: function(){
+		return this.replace(/\b[a-z]/g, function(match){
+			return match.toUpperCase();
+		});
+	},
+
+	escapeRegExp: function(){
+		return this.replace(/([-.*+?^${}()|[\]\/\\])/g, '\\$1');
+	},
+
+	toInt: function(base){
+		return parseInt(this, base || 10);
+	},
+
+	toFloat: function(){
+		return parseFloat(this);
+	},
+
+	hexToRgb: function(array){
+		var hex = this.match(/^#?(\w{1,2})(\w{1,2})(\w{1,2})$/);
+		return (hex) ? hex.slice(1).hexToRgb(array) : null;
+	},
+
+	rgbToHex: function(array){
+		var rgb = this.match(/\d{1,3}/g);
+		return (rgb) ? rgb.rgbToHex(array) : null;
+	},
+
+	stripScripts: function(option){
+		var scripts = '';
+		var text = this.replace(/<script[^>]*>([\s\S]*?)<\/script>/gi, function(){
+			scripts += arguments[1] + '\n';
+			return '';
+		});
+		if (option === true) $exec(scripts);
+		else if ($type(option) == 'function') option(scripts, text);
+		return text;
+	},
+
+	substitute: function(object, regexp){
+		return this.replace(regexp || (/\\?\{([^{}]+)\}/g), function(match, name){
+			if (match.charAt(0) == '\\') return match.slice(1);
+			return (object[name] != undefined) ? object[name] : '';
+		});
+	}
+
+});
+
+
+/*
+---
+
+name: Function
+
+description: Contains Function Prototypes like create, bind, pass, and delay.
+
+license: MIT-style license.
+
+requires: [Native, $util]
+
+provides: Function
+
+...
+*/
+
+try {
+	delete Function.prototype.bind;
+} catch(e){}
+
+Function.implement({
+
+	extend: function(properties){
+		for (var property in properties) this[property] = properties[property];
+		return this;
+	},
+
+	create: function(options){
+		var self = this;
+		options = options || {};
+		return function(event){
+			var args = options.arguments;
+			args = (args != undefined) ? $splat(args) : Array.slice(arguments, (options.event) ? 1 : 0);
+			if (options.event) args = [event || window.event].extend(args);
+			var returns = function(){
+				return self.apply(options.bind || null, args);
+			};
+			if (options.delay) return setTimeout(returns, options.delay);
+			if (options.periodical) return setInterval(returns, options.periodical);
+			if (options.attempt) return $try(returns);
+			return returns();
+		};
+	},
+
+	run: function(args, bind){
+		return this.apply(bind, $splat(args));
+	},
+
+	pass: function(args, bind){
+		return this.create({bind: bind, arguments: args});
+	},
+
+	bind: function(bind, args){
+		return this.create({bind: bind, arguments: args});
+	},
+
+	bindWithEvent: function(bind, args){
+		return this.create({bind: bind, arguments: args, event: true});
+	},
+
+	attempt: function(args, bind){
+		return this.create({bind: bind, arguments: args, attempt: true})();
+	},
+
+	delay: function(delay, bind, args){
+		return this.create({bind: bind, arguments: args, delay: delay})();
+	},
+
+	periodical: function(periodical, bind, args){
+		return this.create({bind: bind, arguments: args, periodical: periodical})();
+	}
+
+});
+
+
+/*
+---
+
+name: Number
+
+description: Contains Number Prototypes like limit, round, times, and ceil.
+
+license: MIT-style license.
+
+requires: [Native, $util]
+
+provides: Number
+
+...
+*/
+
+Number.implement({
+
+	limit: function(min, max){
+		return Math.min(max, Math.max(min, this));
+	},
+
+	round: function(precision){
+		precision = Math.pow(10, precision || 0);
+		return Math.round(this * precision) / precision;
+	},
+
+	times: function(fn, bind){
+		for (var i = 0; i < this; i++) fn.call(bind, i, this);
+	},
+
+	toFloat: function(){
+		return parseFloat(this);
+	},
+
+	toInt: function(base){
+		return parseInt(this, base || 10);
+	}
+
+});
+
+Number.alias('times', 'each');
+
+(function(math){
+	var methods = {};
+	math.each(function(name){
+		if (!Number[name]) methods[name] = function(){
+			return Math[name].apply(null, [this].concat($A(arguments)));
+		};
+	});
+	Number.implement(methods);
+})(['abs', 'acos', 'asin', 'atan', 'atan2', 'ceil', 'cos', 'exp', 'floor', 'log', 'max', 'min', 'pow', 'sin', 'sqrt', 'tan']);
+
+
+/*
+---
+
+name: Hash
+
+description: Contains Hash Prototypes. Provides a means for overcoming the JavaScript practical impossibility of extending native Objects.
+
+license: MIT-style license.
+
+requires: Hash.base
+
+provides: Hash
+
+...
+*/
+
+Hash.implement({
+
+	has: Object.prototype.hasOwnProperty,
+
+	keyOf: function(value){
+		for (var key in this){
+			if (this.hasOwnProperty(key) && this[key] === value) return key;
+		}
+		return null;
+	},
+
+	hasValue: function(value){
+		return (Hash.keyOf(this, value) !== null);
+	},
+
+	extend: function(properties){
+		Hash.each(properties || {}, function(value, key){
+			Hash.set(this, key, value);
+		}, this);
+		return this;
+	},
+
+	combine: function(properties){
+		Hash.each(properties || {}, function(value, key){
+			Hash.include(this, key, value);
+		}, this);
+		return this;
+	},
+
+	erase: function(key){
+		if (this.hasOwnProperty(key)) delete this[key];
+		return this;
+	},
+
+	get: function(key){
+		return (this.hasOwnProperty(key)) ? this[key] : null;
+	},
+
+	set: function(key, value){
+		if (!this[key] || this.hasOwnProperty(key)) this[key] = value;
+		return this;
+	},
+
+	empty: function(){
+		Hash.each(this, function(value, key){
+			delete this[key];
+		}, this);
+		return this;
+	},
+
+	include: function(key, value){
+		if (this[key] == undefined) this[key] = value;
+		return this;
+	},
+
+	map: function(fn, bind){
+		var results = new Hash;
+		Hash.each(this, function(value, key){
+			results.set(key, fn.call(bind, value, key, this));
+		}, this);
+		return results;
+	},
+
+	filter: function(fn, bind){
+		var results = new Hash;
+		Hash.each(this, function(value, key){
+			if (fn.call(bind, value, key, this)) results.set(key, value);
+		}, this);
+		return results;
+	},
+
+	every: function(fn, bind){
+		for (var key in this){
+			if (this.hasOwnProperty(key) && !fn.call(bind, this[key], key)) return false;
+		}
+		return true;
+	},
+
+	some: function(fn, bind){
+		for (var key in this){
+			if (this.hasOwnProperty(key) && fn.call(bind, this[key], key)) return true;
+		}
+		return false;
+	},
+
+	getKeys: function(){
+		var keys = [];
+		Hash.each(this, function(value, key){
+			keys.push(key);
+		});
+		return keys;
+	},
+
+	getValues: function(){
+		var values = [];
+		Hash.each(this, function(value){
+			values.push(value);
+		});
+		return values;
+	},
+
+	toQueryString: function(base){
+		var queryString = [];
+		Hash.each(this, function(value, key){
+			if (base) key = base + '[' + key + ']';
+			var result;
+			switch ($type(value)){
+				case 'object': result = Hash.toQueryString(value, key); break;
+				case 'array':
+					var qs = {};
+					value.each(function(val, i){
+						qs[i] = val;
+					});
+					result = Hash.toQueryString(qs, key);
+				break;
+				default: result = key + '=' + encodeURIComponent(value);
+			}
+			if (value != undefined) queryString.push(result);
+		});
+
+		return queryString.join('&');
+	}
+
+});
+
+Hash.alias({keyOf: 'indexOf', hasValue: 'contains'});
+
+
+/*
+---
+
+name: Class
+
+description: Contains the Class Function for easily creating, extending, and implementing reusable Classes.
+
+license: MIT-style license.
+
+requires: [$util, Native, Array, String, Function, Number, Hash]
+
+provides: Class
+
+...
+*/
+
+function Class(params){
+	
+	if (params instanceof Function) params = {initialize: params};
+	
+	var newClass = function(){
+		Object.reset(this);
+		if (newClass._prototyping) return this;
+		this._current = $empty;
+		var value = (this.initialize) ? this.initialize.apply(this, arguments) : this;
+		delete this._current; delete this.caller;
+		return value;
+	}.extend(this);
+	
+	newClass.implement(params);
+	
+	newClass.constructor = Class;
+	newClass.prototype.constructor = newClass;
+
+	return newClass;
+
+};
+
+Function.prototype.protect = function(){
+	this._protected = true;
+	return this;
+};
+
+Object.reset = function(object, key){
+		
+	if (key == null){
+		for (var p in object) Object.reset(object, p);
+		return object;
+	}
+	
+	delete object[key];
+	
+	switch ($type(object[key])){
+		case 'object':
+			var F = function(){};
+			F.prototype = object[key];
+			var i = new F;
+			object[key] = Object.reset(i);
+		break;
+		case 'array': object[key] = $unlink(object[key]); break;
+	}
+	
+	return object;
+	
+};
+
+new Native({name: 'Class', initialize: Class}).extend({
+
+	instantiate: function(F){
+		F._prototyping = true;
+		var proto = new F;
+		delete F._prototyping;
+		return proto;
+	},
+	
+	wrap: function(self, key, method){
+		if (method._origin) method = method._origin;
+		
+		return function(){
+			if (method._protected && this._current == null) throw new Error('The method "' + key + '" cannot be called.');
+			var caller = this.caller, current = this._current;
+			this.caller = current; this._current = arguments.callee;
+			var result = method.apply(this, arguments);
+			this._current = current; this.caller = caller;
+			return result;
+		}.extend({_owner: self, _origin: method, _name: key});
+
+	}
+	
+});
+
+Class.implement({
+	
+	implement: function(key, value){
+		
+		if ($type(key) == 'object'){
+			for (var p in key) this.implement(p, key[p]);
+			return this;
+		}
+		
+		var mutator = Class.Mutators[key];
+		
+		if (mutator){
+			value = mutator.call(this, value);
+			if (value == null) return this;
+		}
+		
+		var proto = this.prototype;
+
+		switch ($type(value)){
+			
+			case 'function':
+				if (value._hidden) return this;
+				proto[key] = Class.wrap(this, key, value);
+			break;
+			
+			case 'object':
+				var previous = proto[key];
+				if ($type(previous) == 'object') $mixin(previous, value);
+				else proto[key] = $unlink(value);
+			break;
+			
+			case 'array':
+				proto[key] = $unlink(value);
+			break;
+			
+			default: proto[key] = value;
+
+		}
+		
+		return this;
+
+	}
+	
+});
+
+Class.Mutators = {
+	
+	Extends: function(parent){
+
+		this.parent = parent;
+		this.prototype = Class.instantiate(parent);
+
+		this.implement('parent', function(){
+			var name = this.caller._name, previous = this.caller._owner.parent.prototype[name];
+			if (!previous) throw new Error('The method "' + name + '" has no parent.');
+			return previous.apply(this, arguments);
+		}.protect());
+
+	},
+
+	Implements: function(items){
+		$splat(items).each(function(item){
+			if (item instanceof Function) item = Class.instantiate(item);
+			this.implement(item);
+		}, this);
+
+	}
+	
+};
+
+
+/*
+---
+
+name: Class.Extras
+
+description: Contains Utility Classes that can be implemented into your own Classes to ease the execution of many common tasks.
+
+license: MIT-style license.
+
+requires: Class
+
+provides: [Chain, Events, Options, Class.Extras]
+
+...
+*/
+
+var Chain = new Class({
+
+	$chain: [],
+
+	chain: function(){
+		this.$chain.extend(Array.flatten(arguments));
+		return this;
+	},
+
+	callChain: function(){
+		return (this.$chain.length) ? this.$chain.shift().apply(this, arguments) : false;
+	},
+
+	clearChain: function(){
+		this.$chain.empty();
+		return this;
+	}
+
+});
+
+var Events = new Class({
+
+	$events: {},
+
+	addEvent: function(type, fn, internal){
+		type = Events.removeOn(type);
+		if (fn != $empty){
+			this.$events[type] = this.$events[type] || [];
+			this.$events[type].include(fn);
+			if (internal) fn.internal = true;
+		}
+		return this;
+	},
+
+	addEvents: function(events){
+		for (var type in events) this.addEvent(type, events[type]);
+		return this;
+	},
+
+	fireEvent: function(type, args, delay){
+		type = Events.removeOn(type);
+		if (!this.$events || !this.$events[type]) return this;
+		this.$events[type].each(function(fn){
+			fn.create({'bind': this, 'delay': delay, 'arguments': args})();
+		}, this);
+		return this;
+	},
+
+	removeEvent: function(type, fn){
+		type = Events.removeOn(type);
+		if (!this.$events[type]) return this;
+		if (!fn.internal) this.$events[type].erase(fn);
+		return this;
+	},
+
+	removeEvents: function(events){
+		var type;
+		if ($type(events) == 'object'){
+			for (type in events) this.removeEvent(type, events[type]);
+			return this;
+		}
+		if (events) events = Events.removeOn(events);
+		for (type in this.$events){
+			if (events && events != type) continue;
+			var fns = this.$events[type];
+			for (var i = fns.length; i--; i) this.removeEvent(type, fns[i]);
+		}
+		return this;
+	}
+
+});
+
+Events.removeOn = function(string){
+	return string.replace(/^on([A-Z])/, function(full, first){
+		return first.toLowerCase();
+	});
+};
+
+var Options = new Class({
+
+	setOptions: function(){
+		this.options = $merge.run([this.options].extend(arguments));
+		if (!this.addEvent) return this;
+		for (var option in this.options){
+			if ($type(this.options[option]) != 'function' || !(/^on[A-Z]/).test(option)) continue;
+			this.addEvent(option, this.options[option]);
+			delete this.options[option];
+		}
+		return this;
+	}
+
+});
+
+
+/*
+---
+
+name: Browser
+
+description: The Browser Core. Contains Browser initialization, Window and Document, and the Browser Hash.
+
+license: MIT-style license.
+
+requires: [Native, $util]
+
+provides: [Browser, Window, Document, $exec]
+
+...
+*/
+
+var Browser = $merge({
+
+	Engine: {name: 'unknown', version: 0},
+
+	Platform: {name: (window.orientation != undefined) ? 'ipod' : (navigator.platform.match(/mac|win|linux/i) || ['other'])[0].toLowerCase()},
+
+	Features: {xpath: !!(document.evaluate), air: !!(window.runtime), query: !!(document.querySelector)},
+
+	Plugins: {},
+
+	Engines: {
+
+		presto: function(){
+			return (!window.opera) ? false : ((arguments.callee.caller) ? 960 : ((document.getElementsByClassName) ? 950 : 925));
+		},
+
+		trident: function(){
+			return (!window.ActiveXObject) ? false : ((window.XMLHttpRequest) ? ((document.querySelectorAll) ? 6 : 5) : 4);
+		},
+
+		webkit: function(){
+			return (navigator.taintEnabled) ? false : ((Browser.Features.xpath) ? ((Browser.Features.query) ? 525 : 420) : 419);
+		},
+
+		gecko: function(){
+			return (!document.getBoxObjectFor && window.mozInnerScreenX == null) ? false : ((document.getElementsByClassName) ? 19 : 18);
+		}
+
+	}
+
+}, Browser || {});
+
+Browser.Platform[Browser.Platform.name] = true;
+
+Browser.detect = function(){
+
+	for (var engine in this.Engines){
+		var version = this.Engines[engine]();
+		if (version){
+			this.Engine = {name: engine, version: version};
+			this.Engine[engine] = this.Engine[engine + version] = true;
+			break;
+		}
+	}
+
+	return {name: engine, version: version};
+
+};
+
+Browser.detect();
+
+Browser.Request = function(){
+	return $try(function(){
+		return new XMLHttpRequest();
+	}, function(){
+		return new ActiveXObject('MSXML2.XMLHTTP');
+	}, function(){
+		return new ActiveXObject('Microsoft.XMLHTTP');
+	});
+};
+
+Browser.Features.xhr = !!(Browser.Request());
+
+Browser.Plugins.Flash = (function(){
+	var version = ($try(function(){
+		return navigator.plugins['Shockwave Flash'].description;
+	}, function(){
+		return new ActiveXObject('ShockwaveFlash.ShockwaveFlash').GetVariable('$version');
+	}) || '0 r0').match(/\d+/g);
+	return {version: parseInt(version[0] || 0 + '.' + version[1], 10) || 0, build: parseInt(version[2], 10) || 0};
+})();
+
+function $exec(text){
+	if (!text) return text;
+	if (window.execScript){
+		window.execScript(text);
+	} else {
+		var script = document.createElement('script');
+		script.setAttribute('type', 'text/javascript');
+		script[(Browser.Engine.webkit && Browser.Engine.version < 420) ? 'innerText' : 'text'] = text;
+		document.head.appendChild(script);
+		document.head.removeChild(script);
+	}
+	return text;
+};
+
+Native.UID = 1;
+
+var $uid = (Browser.Engine.trident) ? function(item){
+	return (item.uid || (item.uid = [Native.UID++]))[0];
+} : function(item){
+	return item.uid || (item.uid = Native.UID++);
+};
+
+var Window = new Native({
+
+	name: 'Window',
+
+	legacy: (Browser.Engine.trident) ? null: window.Window,
+
+	initialize: function(win){
+		$uid(win);
+		if (!win.Element){
+			win.Element = $empty;
+			if (Browser.Engine.webkit) win.document.createElement("iframe"); //fixes safari 2
+			win.Element.prototype = (Browser.Engine.webkit) ? window["[[DOMElement.prototype]]"] : {};
+		}
+		win.document.window = win;
+		return $extend(win, Window.Prototype);
+	},
+
+	afterImplement: function(property, value){
+		window[property] = Window.Prototype[property] = value;
+	}
+
+});
+
+Window.Prototype = {$family: {name: 'window'}};
+
+new Window(window);
+
+var Document = new Native({
+
+	name: 'Document',
+
+	legacy: (Browser.Engine.trident) ? null: window.Document,
+
+	initialize: function(doc){
+		$uid(doc);
+		doc.head = doc.getElementsByTagName('head')[0];
+		doc.html = doc.getElementsByTagName('html')[0];
+		if (Browser.Engine.trident && Browser.Engine.version <= 4) $try(function(){
+			doc.execCommand("BackgroundImageCache", false, true);
+		});
+		if (Browser.Engine.trident) doc.window.attachEvent('onunload', function(){
+			doc.window.detachEvent('onunload', arguments.callee);
+			doc.head = doc.html = doc.window = null;
+		});
+		return $extend(doc, Document.Prototype);
+	},
+
+	afterImplement: function(property, value){
+		document[property] = Document.Prototype[property] = value;
+	}
+
+});
+
+Document.Prototype = {$family: {name: 'document'}};
+
+new Document(document);
+
+
+/*
+---
+
+name: Element
+
+description: One of the most important items in MooTools. Contains the dollar function, the dollars function, and an handful of cross-browser, time-saver methods to let you easily work with HTML Elements.
+
+license: MIT-style license.
+
+requires: [Window, Document, Array, String, Function, Number, Hash]
+
+provides: [Element, Elements, $, $$, Iframe]
+
+...
+*/
+
+var Element = new Native({
+
+	name: 'Element',
+
+	legacy: window.Element,
+
+	initialize: function(tag, props){
+		var konstructor = Element.Constructors.get(tag);
+		if (konstructor) return konstructor(props);
+		if (typeof tag == 'string') return document.newElement(tag, props);
+		return document.id(tag).set(props);
+	},
+
+	afterImplement: function(key, value){
+		Element.Prototype[key] = value;
+		if (Array[key]) return;
+		Elements.implement(key, function(){
+			var items = [], elements = true;
+			for (var i = 0, j = this.length; i < j; i++){
+				var returns = this[i][key].apply(this[i], arguments);
+				items.push(returns);
+				if (elements) elements = ($type(returns) == 'element');
+			}
+			return (elements) ? new Elements(items) : items;
+		});
+	}
+
+});
+
+Element.Prototype = {$family: {name: 'element'}};
+
+Element.Constructors = new Hash;
+
+var IFrame = new Native({
+
+	name: 'IFrame',
+
+	generics: false,
+
+	initialize: function(){
+		var params = Array.link(arguments, {properties: Object.type, iframe: $defined});
+		var props = params.properties || {};
+		var iframe = document.id(params.iframe);
+		var onload = props.onload || $empty;
+		delete props.onload;
+		props.id = props.name = $pick(props.id, props.name, iframe ? (iframe.id || iframe.name) : 'IFrame_' + $time());
+		iframe = new Element(iframe || 'iframe', props);
+		var onFrameLoad = function(){
+			var host = $try(function(){
+				return iframe.contentWindow.location.host;
+			});
+			if (!host || host == window.location.host){
+				var win = new Window(iframe.contentWindow);
+				new Document(iframe.contentWindow.document);
+				$extend(win.Element.prototype, Element.Prototype);
+			}
+			onload.call(iframe.contentWindow, iframe.contentWindow.document);
+		};
+		var contentWindow = $try(function(){
+			return iframe.contentWindow;
+		});
+		((contentWindow && contentWindow.document.body) || window.frames[props.id]) ? onFrameLoad() : iframe.addListener('load', onFrameLoad);
+		return iframe;
+	}
+
+});
+
+var Elements = new Native({
+
+	initialize: function(elements, options){
+		options = $extend({ddup: true, cash: true}, options);
+		elements = elements || [];
+		if (options.ddup || options.cash){
+			var uniques = {}, returned = [];
+			for (var i = 0, l = elements.length; i < l; i++){
+				var el = document.id(elements[i], !options.cash);
+				if (options.ddup){
+					if (uniques[el.uid]) continue;
+					uniques[el.uid] = true;
+				}
+				if (el) returned.push(el);
+			}
+			elements = returned;
+		}
+		return (options.cash) ? $extend(elements, this) : elements;
+	}
+
+});
+
+Elements.implement({
+
+	filter: function(filter, bind){
+		if (!filter) return this;
+		return new Elements(Array.filter(this, (typeof filter == 'string') ? function(item){
+			return item.match(filter);
+		} : filter, bind));
+	}
+
+});
+
+(function(){
+
+/*<ltIE8>*/
+var createElementAcceptsHTML;
+try {
+	var x = document.createElement('<input name=x>');
+	createElementAcceptsHTML = (x.name == 'x');
+} catch(e){}
+
+var escapeQuotes = function(html){
+	return ('' + html).replace(/&/g,'&amp;').replace(/"/g,'&quot;');
+};
+/*</ltIE8>*/
+
+Document.implement({
+
+	newElement: function(tag, props){
+		if (props && props.checked != null) props.defaultChecked = props.checked;
+		/*<ltIE8>*/// Fix for readonly name and type properties in IE < 8
+		if (createElementAcceptsHTML && props){
+			tag = '<' + tag;
+			if (props.name) tag += ' name="' + escapeQuotes(props.name) + '"';
+			if (props.type) tag += ' type="' + escapeQuotes(props.type) + '"';
+			tag += '>';
+			delete props.name;
+			delete props.type;
+		}
+		/*</ltIE8>*/
+		return this.id(this.createElement(tag)).set(props);
+	},
+
+	newTextNode: function(text){
+		return this.createTextNode(text);
+	},
+
+	getDocument: function(){
+		return this;
+	},
+
+	getWindow: function(){
+		return this.window;
+	},
+	
+	id: (function(){
+		
+		var types = {
+
+			string: function(id, nocash, doc){
+				id = doc.getElementById(id);
+				return (id) ? types.element(id, nocash) : null;
+			},
+			
+			element: function(el, nocash){
+				$uid(el);
+				if (!nocash && !el.$family && !(/^object|embed$/i).test(el.tagName)){
+					var proto = Element.Prototype;
+					for (var p in proto) el[p] = proto[p];
+				};
+				return el;
+			},
+			
+			object: function(obj, nocash, doc){
+				if (obj.toElement) return types.element(obj.toElement(doc), nocash);
+				return null;
+			}
+			
+		};
+
+		types.textnode = types.whitespace = types.window = types.document = $arguments(0);
+		
+		return function(el, nocash, doc){
+			if (el && el.$family && el.uid) return el;
+			var type = $type(el);
+			return (types[type]) ? types[type](el, nocash, doc || document) : null;
+		};
+
+	})()
+
+});
+
+})();
+
+if (window.$ == null) Window.implement({
+	$: function(el, nc){
+		return document.id(el, nc, this.document);
+	}
+});
+
+Window.implement({
+
+	$$: function(selector){
+		if (arguments.length == 1 && typeof selector == 'string') return this.document.getElements(selector);
+		var elements = [];
+		var args = Array.flatten(arguments);
+		for (var i = 0, l = args.length; i < l; i++){
+			var item = args[i];
+			switch ($type(item)){
+				case 'element': elements.push(item); break;
+				case 'string': elements.extend(this.document.getElements(item, true));
+			}
+		}
+		return new Elements(elements);
+	},
+
+	getDocument: function(){
+		return this.document;
+	},
+
+	getWindow: function(){
+		return this;
+	}
+
+});
+
+Native.implement([Element, Document], {
+
+	getElement: function(selector, nocash){
+		return document.id(this.getElements(selector, true)[0] || null, nocash);
+	},
+
+	getElements: function(tags, nocash){
+		tags = tags.split(',');
+		var elements = [];
+		var ddup = (tags.length > 1);
+		tags.each(function(tag){
+			var partial = this.getElementsByTagName(tag.trim());
+			(ddup) ? elements.extend(partial) : elements = partial;
+		}, this);
+		return new Elements(elements, {ddup: ddup, cash: !nocash});
+	}
+
+});
+
+(function(){
+
+var collected = {}, storage = {};
+var props = {input: 'checked', option: 'selected', textarea: (Browser.Engine.webkit && Browser.Engine.version < 420) ? 'innerHTML' : 'value'};
+
+var get = function(uid){
+	return (storage[uid] || (storage[uid] = {}));
+};
+
+var clean = function(item, retain){
+	if (!item) return;
+	var uid = item.uid;
+	if (retain !== true) retain = false;
+	if (Browser.Engine.trident){
+		if (item.clearAttributes){
+			var clone = retain && item.cloneNode(false);
+			item.clearAttributes();
+			if (clone) item.mergeAttributes(clone);
+		} else if (item.removeEvents){
+			item.removeEvents();
+		}
+		if ((/object/i).test(item.tagName)){
+			for (var p in item){
+				if (typeof item[p] == 'function') item[p] = $empty;
+			}
+			Element.dispose(item);
+		}
+	}	
+	if (!uid) return;
+	collected[uid] = storage[uid] = null;
+};
+
+var purge = function(){
+	Hash.each(collected, clean);
+	if (Browser.Engine.trident) $A(document.getElementsByTagName('object')).each(clean);
+	if (window.CollectGarbage) CollectGarbage();
+	collected = storage = null;
+};
+
+var walk = function(element, walk, start, match, all, nocash){
+	var el = element[start || walk];
+	var elements = [];
+	while (el){
+		if (el.nodeType == 1 && (!match || Element.match(el, match))){
+			if (!all) return document.id(el, nocash);
+			elements.push(el);
+		}
+		el = el[walk];
+	}
+	return (all) ? new Elements(elements, {ddup: false, cash: !nocash}) : null;
+};
+
+var attributes = {
+	'html': 'innerHTML',
+	'class': 'className',
+	'for': 'htmlFor',
+	'defaultValue': 'defaultValue',
+	'text': (Browser.Engine.trident || (Browser.Engine.webkit && Browser.Engine.version < 420)) ? 'innerText' : 'textContent'
+};
+var bools = ['compact', 'nowrap', 'ismap', 'declare', 'noshade', 'checked', 'disabled', 'readonly', 'multiple', 'selected', 'noresize', 'defer'];
+var camels = ['value', 'type', 'defaultValue', 'accessKey', 'cellPadding', 'cellSpacing', 'colSpan', 'frameBorder', 'maxLength', 'readOnly', 'rowSpan', 'tabIndex', 'useMap'];
+
+bools = bools.associate(bools);
+
+Hash.extend(attributes, bools);
+Hash.extend(attributes, camels.associate(camels.map(String.toLowerCase)));
+
+var inserters = {
+
+	before: function(context, element){
+		if (element.parentNode) element.parentNode.insertBefore(context, element);
+	},
+
+	after: function(context, element){
+		if (!element.parentNode) return;
+		var next = element.nextSibling;
+		(next) ? element.parentNode.insertBefore(context, next) : element.parentNode.appendChild(context);
+	},
+
+	bottom: function(context, element){
+		element.appendChild(context);
+	},
+
+	top: function(context, element){
+		var first = element.firstChild;
+		(first) ? element.insertBefore(context, first) : element.appendChild(context);
+	}
+
+};
+
+inserters.inside = inserters.bottom;
+
+Hash.each(inserters, function(inserter, where){
+
+	where = where.capitalize();
+
+	Element.implement('inject' + where, function(el){
+		inserter(this, document.id(el, true));
+		return this;
+	});
+
+	Element.implement('grab' + where, function(el){
+		inserter(document.id(el, true), this);
+		return this;
+	});
+
+});
+
+Element.implement({
+
+	set: function(prop, value){
+		switch ($type(prop)){
+			case 'object':
+				for (var p in prop) this.set(p, prop[p]);
+				break;
+			case 'string':
+				var property = Element.Properties.get(prop);
+				(property && property.set) ? property.set.apply(this, Array.slice(arguments, 1)) : this.setProperty(prop, value);
+		}
+		return this;
+	},
+
+	get: function(prop){
+		var property = Element.Properties.get(prop);
+		return (property && property.get) ? property.get.apply(this, Array.slice(arguments, 1)) : this.getProperty(prop);
+	},
+
+	erase: function(prop){
+		var property = Element.Properties.get(prop);
+		(property && property.erase) ? property.erase.apply(this) : this.removeProperty(prop);
+		return this;
+	},
+
+	setProperty: function(attribute, value){
+		var key = attributes[attribute];
+		if (value == undefined) return this.removeProperty(attribute);
+		if (key && bools[attribute]) value = !!value;
+		(key) ? this[key] = value : this.setAttribute(attribute, '' + value);
+		return this;
+	},
+
+	setProperties: function(attributes){
+		for (var attribute in attributes) this.setProperty(attribute, attributes[attribute]);
+		return this;
+	},
+
+	getProperty: function(attribute){
+		var key = attributes[attribute];
+		var value = (key) ? this[key] : this.getAttribute(attribute, 2);
+		return (bools[attribute]) ? !!value : (key) ? value : value || null;
+	},
+
+	getProperties: function(){
+		var args = $A(arguments);
+		return args.map(this.getProperty, this).associate(args);
+	},
+
+	removeProperty: function(attribute){
+		var key = attributes[attribute];
+		(key) ? this[key] = (key && bools[attribute]) ? false : '' : this.removeAttribute(attribute);
+		return this;
+	},
+
+	removeProperties: function(){
+		Array.each(arguments, this.removeProperty, this);
+		return this;
+	},
+
+	hasClass: function(className){
+		return this.className.contains(className, ' ');
+	},
+
+	addClass: function(className){
+		if (!this.hasClass(className)) this.className = (this.className + ' ' + className).clean();
+		return this;
+	},
+
+	removeClass: function(className){
+		this.className = this.className.replace(new RegExp('(^|\\s)' + className + '(?:\\s|$)'), '$1');
+		return this;
+	},
+
+	toggleClass: function(className){
+		return this.hasClass(className) ? this.removeClass(className) : this.addClass(className);
+	},
+
+	adopt: function(){
+		Array.flatten(arguments).each(function(element){
+			element = document.id(element, true);
+			if (element) this.appendChild(element);
+		}, this);
+		return this;
+	},
+
+	appendText: function(text, where){
+		return this.grab(this.getDocument().newTextNode(text), where);
+	},
+
+	grab: function(el, where){
+		inserters[where || 'bottom'](document.id(el, true), this);
+		return this;
+	},
+
+	inject: function(el, where){
+		inserters[where || 'bottom'](this, document.id(el, true));
+		return this;
+	},
+
+	replaces: function(el){
+		el = document.id(el, true);
+		el.parentNode.replaceChild(this, el);
+		return this;
+	},
+
+	wraps: function(el, where){
+		el = document.id(el, true);
+		return this.replaces(el).grab(el, where);
+	},
+
+	getPrevious: function(match, nocash){
+		return walk(this, 'previousSibling', null, match, false, nocash);
+	},
+
+	getAllPrevious: function(match, nocash){
+		return walk(this, 'previousSibling', null, match, true, nocash);
+	},
+
+	getNext: function(match, nocash){
+		return walk(this, 'nextSibling', null, match, false, nocash);
+	},
+
+	getAllNext: function(match, nocash){
+		return walk(this, 'nextSibling', null, match, true, nocash);
+	},
+
+	getFirst: function(match, nocash){
+		return walk(this, 'nextSibling', 'firstChild', match, false, nocash);
+	},
+
+	getLast: function(match, nocash){
+		return walk(this, 'previousSibling', 'lastChild', match, false, nocash);
+	},
+
+	getParent: function(match, nocash){
+		return walk(this, 'parentNode', null, match, false, nocash);
+	},
+
+	getParents: function(match, nocash){
+		return walk(this, 'parentNode', null, match, true, nocash);
+	},
+	
+	getSiblings: function(match, nocash){
+		return this.getParent().getChildren(match, nocash).erase(this);
+	},
+
+	getChildren: function(match, nocash){
+		return walk(this, 'nextSibling', 'firstChild', match, true, nocash);
+	},
+
+	getWindow: function(){
+		return this.ownerDocument.window;
+	},
+
+	getDocument: function(){
+		return this.ownerDocument;
+	},
+
+	getElementById: function(id, nocash){
+		var el = this.ownerDocument.getElementById(id);
+		if (!el) return null;
+		for (var parent = el.parentNode; parent != this; parent = parent.parentNode){
+			if (!parent) return null;
+		}
+		return document.id(el, nocash);
+	},
+
+	getSelected: function(){
+		return new Elements($A(this.options).filter(function(option){
+			return option.selected;
+		}));
+	},
+
+	getComputedStyle: function(property){
+		if (this.currentStyle) return this.currentStyle[property.camelCase()];
+		var computed = this.getDocument().defaultView.getComputedStyle(this, null);
+		return (computed) ? computed.getPropertyValue([property.hyphenate()]) : null;
+	},
+
+	toQueryString: function(){
+		var queryString = [];
+		this.getElements('input, select, textarea', true).each(function(el){
+			if (!el.name || el.disabled || el.type == 'submit' || el.type == 'reset' || el.type == 'file') return;
+			var value = (el.tagName.toLowerCase() == 'select') ? Element.getSelected(el).map(function(opt){
+				return opt.value;
+			}) : ((el.type == 'radio' || el.type == 'checkbox') && !el.checked) ? null : el.value;
+			$splat(value).each(function(val){
+				if (typeof val != 'undefined') queryString.push(el.name + '=' + encodeURIComponent(val));
+			});
+		});
+		return queryString.join('&');
+	},
+
+	clone: function(contents, keepid){
+		contents = contents !== false;
+		var clone = this.cloneNode(contents);
+		var clean = function(node, element){
+			if (!keepid) node.removeAttribute('id');
+			if (Browser.Engine.trident){
+				node.clearAttributes();
+				node.mergeAttributes(element);
+				node.removeAttribute('uid');
+				if (node.options){
+					var no = node.options, eo = element.options;
+					for (var j = no.length; j--;) no[j].selected = eo[j].selected;
+				}
+			}
+			var prop = props[element.tagName.toLowerCase()];
+			if (prop && element[prop]) node[prop] = element[prop];
+		};
+
+		if (contents){
+			var ce = clone.getElementsByTagName('*'), te = this.getElementsByTagName('*');
+			for (var i = ce.length; i--;) clean(ce[i], te[i]);
+		}
+
+		clean(clone, this);
+		return document.id(clone);
+	},
+
+	destroy: function(){
+		Element.empty(this);
+		Element.dispose(this);
+		clean(this, true);
+		return null;
+	},
+
+	empty: function(){
+		$A(this.childNodes).each(function(node){
+			Element.destroy(node);
+		});
+		return this;
+	},
+
+	dispose: function(){
+		return (this.parentNode) ? this.parentNode.removeChild(this) : this;
+	},
+
+	hasChild: function(el){
+		el = document.id(el, true);
+		if (!el) return false;
+		if (Browser.Engine.webkit && Browser.Engine.version < 420) return $A(this.getElementsByTagName(el.tagName)).contains(el);
+		return (this.contains) ? (this != el && this.contains(el)) : !!(this.compareDocumentPosition(el) & 16);
+	},
+
+	match: function(tag){
+		return (!tag || (tag == this) || (Element.get(this, 'tag') == tag));
+	}
+
+});
+
+Native.implement([Element, Window, Document], {
+
+	addListener: function(type, fn){
+		if (type == 'unload'){
+			var old = fn, self = this;
+			fn = function(){
+				self.removeListener('unload', fn);
+				old();
+			};
+		} else {
+			collected[this.uid] = this;
+		}
+		if (this.addEventListener) this.addEventListener(type, fn, false);
+		else this.attachEvent('on' + type, fn);
+		return this;
+	},
+
+	removeListener: function(type, fn){
+		if (this.removeEventListener) this.removeEventListener(type, fn, false);
+		else this.detachEvent('on' + type, fn);
+		return this;
+	},
+
+	retrieve: function(property, dflt){
+		var storage = get(this.uid), prop = storage[property];
+		if (dflt != undefined && prop == undefined) prop = storage[property] = dflt;
+		return $pick(prop);
+	},
+
+	store: function(property, value){
+		var storage = get(this.uid);
+		storage[property] = value;
+		return this;
+	},
+
+	eliminate: function(property){
+		var storage = get(this.uid);
+		delete storage[property];
+		return this;
+	}
+
+});
+
+window.addListener('unload', purge);
+
+})();
+
+Element.Properties = new Hash;
+
+Element.Properties.style = {
+
+	set: function(style){
+		this.style.cssText = style;
+	},
+
+	get: function(){
+		return this.style.cssText;
+	},
+
+	erase: function(){
+		this.style.cssText = '';
+	}
+
+};
+
+Element.Properties.tag = {
+
+	get: function(){
+		return this.tagName.toLowerCase();
+	}
+
+};
+
+Element.Properties.html = (function(){
+	var wrapper = document.createElement('div');
+
+	var translations = {
+		table: [1, '<table>', '</table>'],
+		select: [1, '<select>', '</select>'],
+		tbody: [2, '<table><tbody>', '</tbody></table>'],
+		tr: [3, '<table><tbody><tr>', '</tr></tbody></table>']
+	};
+	translations.thead = translations.tfoot = translations.tbody;
+
+	var html = {
+		set: function(){
+			var html = Array.flatten(arguments).join('');
+			var wrap = Browser.Engine.trident && translations[this.get('tag')];
+			if (wrap){
+				var first = wrapper;
+				first.innerHTML = wrap[1] + html + wrap[2];
+				for (var i = wrap[0]; i--;) first = first.firstChild;
+				this.empty().adopt(first.childNodes);
+			} else {
+				this.innerHTML = html;
+			}
+		}
+	};
+
+	html.erase = html.set;
+
+	return html;
+})();
+
+if (Browser.Engine.webkit && Browser.Engine.version < 420) Element.Properties.text = {
+	get: function(){
+		if (this.innerText) return this.innerText;
+		var temp = this.ownerDocument.newElement('div', {html: this.innerHTML}).inject(this.ownerDocument.body);
+		var text = temp.innerText;
+		temp.destroy();
+		return text;
+	}
+};
+
+
+/*
+---
+
+name: Element.Dimensions
+
+description: Contains methods to work with size, scroll, or positioning of Elements and the window object.
+
+license: MIT-style license.
+
+credits:
+  - Element positioning based on the [qooxdoo](http://qooxdoo.org/) code and smart browser fixes, [LGPL License](http://www.gnu.org/licenses/lgpl.html).
+  - Viewport dimensions based on [YUI](http://developer.yahoo.com/yui/) code, [BSD License](http://developer.yahoo.com/yui/license.html).
+
+requires: Element
+
+provides: Element.Dimensions
+
+...
+*/
+
+(function(){
+
+Element.implement({
+
+	scrollTo: function(x, y){
+		if (isBody(this)){
+			this.getWindow().scrollTo(x, y);
+		} else {
+			this.scrollLeft = x;
+			this.scrollTop = y;
+		}
+		return this;
+	},
+
+	getSize: function(){
+		if (isBody(this)) return this.getWindow().getSize();
+		return {x: this.offsetWidth, y: this.offsetHeight};
+	},
+
+	getScrollSize: function(){
+		if (isBody(this)) return this.getWindow().getScrollSize();
+		return {x: this.scrollWidth, y: this.scrollHeight};
+	},
+
+	getScroll: function(){
+		if (isBody(this)) return this.getWindow().getScroll();
+		return {x: this.scrollLeft, y: this.scrollTop};
+	},
+
+	getScrolls: function(){
+		var element = this, position = {x: 0, y: 0};
+		while (element && !isBody(element)){
+			position.x += element.scrollLeft;
+			position.y += element.scrollTop;
+			element = element.parentNode;
+		}
+		return position;
+	},
+
+	getOffsetParent: function(){
+		var element = this;
+		if (isBody(element)) return null;
+		if (!Browser.Engine.trident) return element.offsetParent;
+		while ((element = element.parentNode) && !isBody(element)){
+			if (styleString(element, 'position') != 'static') return element;
+		}
+		return null;
+	},
+
+	getOffsets: function(){
+		if (this.getBoundingClientRect){
+			var bound = this.getBoundingClientRect(),
+				html = document.id(this.getDocument().documentElement),
+				htmlScroll = html.getScroll(),
+				elemScrolls = this.getScrolls(),
+				elemScroll = this.getScroll(),
+				isFixed = (styleString(this, 'position') == 'fixed');
+
+			return {
+				x: bound.left.toInt() + elemScrolls.x - elemScroll.x + ((isFixed) ? 0 : htmlScroll.x) - html.clientLeft,
+				y: bound.top.toInt()  + elemScrolls.y - elemScroll.y + ((isFixed) ? 0 : htmlScroll.y) - html.clientTop
+			};
+		}
+
+		var element = this, position = {x: 0, y: 0};
+		if (isBody(this)) return position;
+
+		while (element && !isBody(element)){
+			position.x += element.offsetLeft;
+			position.y += element.offsetTop;
+
+			if (Browser.Engine.gecko){
+				if (!borderBox(element)){
+					position.x += leftBorder(element);
+					position.y += topBorder(element);
+				}
+				var parent = element.parentNode;
+				if (parent && styleString(parent, 'overflow') != 'visible'){
+					position.x += leftBorder(parent);
+					position.y += topBorder(parent);
+				}
+			} else if (element != this && Browser.Engine.webkit){
+				position.x += leftBorder(element);
+				position.y += topBorder(element);
+			}
+
+			element = element.offsetParent;
+		}
+		if (Browser.Engine.gecko && !borderBox(this)){
+			position.x -= leftBorder(this);
+			position.y -= topBorder(this);
+		}
+		return position;
+	},
+
+	getPosition: function(relative){
+		if (isBody(this)) return {x: 0, y: 0};
+		var offset = this.getOffsets(),
+				scroll = this.getScrolls();
+		var position = {
+			x: offset.x - scroll.x,
+			y: offset.y - scroll.y
+		};
+		var relativePosition = (relative && (relative = document.id(relative))) ? relative.getPosition() : {x: 0, y: 0};
+		return {x: position.x - relativePosition.x, y: position.y - relativePosition.y};
+	},
+
+	getCoordinates: function(element){
+		if (isBody(this)) return this.getWindow().getCoordinates();
+		var position = this.getPosition(element),
+				size = this.getSize();
+		var obj = {
+			left: position.x,
+			top: position.y,
+			width: size.x,
+			height: size.y
+		};
+		obj.right = obj.left + obj.width;
+		obj.bottom = obj.top + obj.height;
+		return obj;
+	},
+
+	computePosition: function(obj){
+		return {
+			left: obj.x - styleNumber(this, 'margin-left'),
+			top: obj.y - styleNumber(this, 'margin-top')
+		};
+	},
+
+	setPosition: function(obj){
+		return this.setStyles(this.computePosition(obj));
+	}
+
+});
+
+
+Native.implement([Document, Window], {
+
+	getSize: function(){
+		if (Browser.Engine.presto || Browser.Engine.webkit){
+			var win = this.getWindow();
+			return {x: win.innerWidth, y: win.innerHeight};
+		}
+		var doc = getCompatElement(this);
+		return {x: doc.clientWidth, y: doc.clientHeight};
+	},
+
+	getScroll: function(){
+		var win = this.getWindow(), doc = getCompatElement(this);
+		return {x: win.pageXOffset || doc.scrollLeft, y: win.pageYOffset || doc.scrollTop};
+	},
+
+	getScrollSize: function(){
+		var doc = getCompatElement(this), min = this.getSize();
+		return {x: Math.max(doc.scrollWidth, min.x), y: Math.max(doc.scrollHeight, min.y)};
+	},
+
+	getPosition: function(){
+		return {x: 0, y: 0};
+	},
+
+	getCoordinates: function(){
+		var size = this.getSize();
+		return {top: 0, left: 0, bottom: size.y, right: size.x, height: size.y, width: size.x};
+	}
+
+});
+
+// private methods
+
+var styleString = Element.getComputedStyle;
+
+function styleNumber(element, style){
+	return styleString(element, style).toInt() || 0;
+};
+
+function borderBox(element){
+	return styleString(element, '-moz-box-sizing') == 'border-box';
+};
+
+function topBorder(element){
+	return styleNumber(element, 'border-top-width');
+};
+
+function leftBorder(element){
+	return styleNumber(element, 'border-left-width');
+};
+
+function isBody(element){
+	return (/^(?:body|html)$/i).test(element.tagName);
+};
+
+function getCompatElement(element){
+	var doc = element.getDocument();
+	return (!doc.compatMode || doc.compatMode == 'CSS1Compat') ? doc.html : doc.body;
+};
+
+})();
+
+//aliases
+Element.alias('setPosition', 'position'); //compatability
+
+Native.implement([Window, Document, Element], {
+
+	getHeight: function(){
+		return this.getSize().y;
+	},
+
+	getWidth: function(){
+		return this.getSize().x;
+	},
+
+	getScrollTop: function(){
+		return this.getScroll().y;
+	},
+
+	getScrollLeft: function(){
+		return this.getScroll().x;
+	},
+
+	getScrollHeight: function(){
+		return this.getScrollSize().y;
+	},
+
+	getScrollWidth: function(){
+		return this.getScrollSize().x;
+	},
+
+	getTop: function(){
+		return this.getPosition().y;
+	},
+
+	getLeft: function(){
+		return this.getPosition().x;
+	}
+
+});
+
+
+/*
+---
+
+name: Event
+
+description: Contains the Event Class, to make the event object cross-browser.
+
+license: MIT-style license.
+
+requires: [Window, Document, Hash, Array, Function, String]
+
+provides: Event
+
+...
+*/
+
+var Event = new Native({
+
+	name: 'Event',
+
+	initialize: function(event, win){
+		win = win || window;
+		var doc = win.document;
+		event = event || win.event;
+		if (event.$extended) return event;
+		this.$extended = true;
+		var type = event.type;
+		var target = event.target || event.srcElement;
+		while (target && target.nodeType == 3) target = target.parentNode;
+
+		if (type.test(/key/)){
+			var code = event.which || event.keyCode;
+			var key = Event.Keys.keyOf(code);
+			if (type == 'keydown'){
+				var fKey = code - 111;
+				if (fKey > 0 && fKey < 13) key = 'f' + fKey;
+			}
+			key = key || String.fromCharCode(code).toLowerCase();
+		} else if (type.match(/(click|mouse|menu)/i)){
+			doc = (!doc.compatMode || doc.compatMode == 'CSS1Compat') ? doc.html : doc.body;
+			var page = {
+				x: event.pageX || event.clientX + doc.scrollLeft,
+				y: event.pageY || event.clientY + doc.scrollTop
+			};
+			var client = {
+				x: (event.pageX) ? event.pageX - win.pageXOffset : event.clientX,
+				y: (event.pageY) ? event.pageY - win.pageYOffset : event.clientY
+			};
+			if (type.match(/DOMMouseScroll|mousewheel/)){
+				var wheel = (event.wheelDelta) ? event.wheelDelta / 120 : -(event.detail || 0) / 3;
+			}
+			var rightClick = (event.which == 3) || (event.button == 2);
+			var related = null;
+			if (type.match(/over|out/)){
+				switch (type){
+					case 'mouseover': related = event.relatedTarget || event.fromElement; break;
+					case 'mouseout': related = event.relatedTarget || event.toElement;
+				}
+				if (!(function(){
+					while (related && related.nodeType == 3) related = related.parentNode;
+					return true;
+				}).create({attempt: Browser.Engine.gecko})()) related = false;
+			}
+		}
+
+		return $extend(this, {
+			event: event,
+			type: type,
+
+			page: page,
+			client: client,
+			rightClick: rightClick,
+
+			wheel: wheel,
+
+			relatedTarget: related,
+			target: target,
+
+			code: code,
+			key: key,
+
+			shift: event.shiftKey,
+			control: event.ctrlKey,
+			alt: event.altKey,
+			meta: event.metaKey
+		});
+	}
+
+});
+
+Event.Keys = new Hash({
+	'enter': 13,
+	'up': 38,
+	'down': 40,
+	'left': 37,
+	'right': 39,
+	'esc': 27,
+	'space': 32,
+	'backspace': 8,
+	'tab': 9,
+	'delete': 46
+});
+
+Event.implement({
+
+	stop: function(){
+		return this.stopPropagation().preventDefault();
+	},
+
+	stopPropagation: function(){
+		if (this.event.stopPropagation) this.event.stopPropagation();
+		else this.event.cancelBubble = true;
+		return this;
+	},
+
+	preventDefault: function(){
+		if (this.event.preventDefault) this.event.preventDefault();
+		else this.event.returnValue = false;
+		return this;
+	}
+
+});
+
+
+/*
+---
+
+name: Element.Event
+
+description: Contains Element methods for dealing with events. This file also includes mouseenter and mouseleave custom Element Events.
+
+license: MIT-style license.
+
+requires: [Element, Event]
+
+provides: Element.Event
+
+...
+*/
+
+Element.Properties.events = {set: function(events){
+	this.addEvents(events);
+}};
+
+Native.implement([Element, Window, Document], {
+
+	addEvent: function(type, fn){
+		var events = this.retrieve('events', {});
+		events[type] = events[type] || {'keys': [], 'values': []};
+		if (events[type].keys.contains(fn)) return this;
+		events[type].keys.push(fn);
+		var realType = type, custom = Element.Events.get(type), condition = fn, self = this;
+		if (custom){
+			if (custom.onAdd) custom.onAdd.call(this, fn);
+			if (custom.condition){
+				condition = function(event){
+					if (custom.condition.call(this, event)) return fn.call(this, event);
+					return true;
+				};
+			}
+			realType = custom.base || realType;
+		}
+		var defn = function(){
+			return fn.call(self);
+		};
+		var nativeEvent = Element.NativeEvents[realType];
+		if (nativeEvent){
+			if (nativeEvent == 2){
+				defn = function(event){
+					event = new Event(event, self.getWindow());
+					if (condition.call(self, event) === false) event.stop();
+				};
+			}
+			this.addListener(realType, defn);
+		}
+		events[type].values.push(defn);
+		return this;
+	},
+
+	removeEvent: function(type, fn){
+		var events = this.retrieve('events');
+		if (!events || !events[type]) return this;
+		var pos = events[type].keys.indexOf(fn);
+		if (pos == -1) return this;
+		events[type].keys.splice(pos, 1);
+		var value = events[type].values.splice(pos, 1)[0];
+		var custom = Element.Events.get(type);
+		if (custom){
+			if (custom.onRemove) custom.onRemove.call(this, fn);
+			type = custom.base || type;
+		}
+		return (Element.NativeEvents[type]) ? this.removeListener(type, value) : this;
+	},
+
+	addEvents: function(events){
+		for (var event in events) this.addEvent(event, events[event]);
+		return this;
+	},
+
+	removeEvents: function(events){
+		var type;
+		if ($type(events) == 'object'){
+			for (type in events) this.removeEvent(type, events[type]);
+			return this;
+		}
+		var attached = this.retrieve('events');
+		if (!attached) return this;
+		if (!events){
+			for (type in attached) this.removeEvents(type);
+			this.eliminate('events');
+		} else if (attached[events]){
+			while (attached[events].keys[0]) this.removeEvent(events, attached[events].keys[0]);
+			attached[events] = null;
+		}
+		return this;
+	},
+
+	fireEvent: function(type, args, delay){
+		var events = this.retrieve('events');
+		if (!events || !events[type]) return this;
+		events[type].keys.each(function(fn){
+			fn.create({'bind': this, 'delay': delay, 'arguments': args})();
+		}, this);
+		return this;
+	},
+
+	cloneEvents: function(from, type){
+		from = document.id(from);
+		var fevents = from.retrieve('events');
+		if (!fevents) return this;
+		if (!type){
+			for (var evType in fevents) this.cloneEvents(from, evType);
+		} else if (fevents[type]){
+			fevents[type].keys.each(function(fn){
+				this.addEvent(type, fn);
+			}, this);
+		}
+		return this;
+	}
+
+});
+
+// IE9
+try {
+	if (typeof HTMLElement != 'undefined')
+		HTMLElement.prototype.fireEvent = Element.prototype.fireEvent;
+} catch(e){}
+
+Element.NativeEvents = {
+	click: 2, dblclick: 2, mouseup: 2, mousedown: 2, contextmenu: 2, //mouse buttons
+	mousewheel: 2, DOMMouseScroll: 2, //mouse wheel
+	mouseover: 2, mouseout: 2, mousemove: 2, selectstart: 2, selectend: 2, //mouse movement
+	keydown: 2, keypress: 2, keyup: 2, //keyboard
+	focus: 2, blur: 2, change: 2, reset: 2, select: 2, submit: 2, //form elements
+	load: 1, unload: 1, beforeunload: 2, resize: 1, move: 1, DOMContentLoaded: 1, readystatechange: 1, //window
+	error: 1, abort: 1, scroll: 1 //misc
+};
+
+(function(){
+
+var $check = function(event){
+	var related = event.relatedTarget;
+	if (related == undefined) return true;
+	if (related === false) return false;
+	return ($type(this) != 'document' && related != this && related.prefix != 'xul' && !this.hasChild(related));
+};
+
+Element.Events = new Hash({
+
+	mouseenter: {
+		base: 'mouseover',
+		condition: $check
+	},
+
+	mouseleave: {
+		base: 'mouseout',
+		condition: $check
+	},
+
+	mousewheel: {
+		base: (Browser.Engine.gecko) ? 'DOMMouseScroll' : 'mousewheel'
+	}
+
+});
+
+})();
+
+
+/*
+---
+
+name: Element.Style
+
+description: Contains methods for interacting with the styles of Elements in a fashionable way.
+
+license: MIT-style license.
+
+requires: Element
+
+provides: Element.Style
+
+...
+*/
+
+Element.Properties.styles = {set: function(styles){
+	this.setStyles(styles);
+}};
+
+Element.Properties.opacity = {
+
+	set: function(opacity, novisibility){
+		if (!novisibility){
+			if (opacity == 0){
+				if (this.style.visibility != 'hidden') this.style.visibility = 'hidden';
+			} else {
+				if (this.style.visibility != 'visible') this.style.visibility = 'visible';
+			}
+		}
+		if (!this.currentStyle || !this.currentStyle.hasLayout) this.style.zoom = 1;
+		if (Browser.Engine.trident) this.style.filter = (opacity == 1) ? '' : 'alpha(opacity=' + opacity * 100 + ')';
+		this.style.opacity = opacity;
+		this.store('opacity', opacity);
+	},
+
+	get: function(){
+		return this.retrieve('opacity', 1);
+	}
+
+};
+
+Element.implement({
+
+	setOpacity: function(value){
+		return this.set('opacity', value, true);
+	},
+
+	getOpacity: function(){
+		return this.get('opacity');
+	},
+
+	setStyle: function(property, value){
+		switch (property){
+			case 'opacity': return this.set('opacity', parseFloat(value));
+			case 'float': property = (Browser.Engine.trident) ? 'styleFloat' : 'cssFloat';
+		}
+		property = property.camelCase();
+		if ($type(value) != 'string'){
+			var map = (Element.Styles.get(property) || '@').split(' ');
+			value = $splat(value).map(function(val, i){
+				if (!map[i]) return '';
+				return ($type(val) == 'number') ? map[i].replace('@', Math.round(val)) : val;
+			}).join(' ');
+		} else if (value == String(Number(value))){
+			value = Math.round(value);
+		}
+		this.style[property] = value;
+		return this;
+	},
+
+	getStyle: function(property){
+		switch (property){
+			case 'opacity': return this.get('opacity');
+			case 'float': property = (Browser.Engine.trident) ? 'styleFloat' : 'cssFloat';
+		}
+		property = property.camelCase();
+		var result = this.style[property];
+		if (!$chk(result)){
+			result = [];
+			for (var style in Element.ShortStyles){
+				if (property != style) continue;
+				for (var s in Element.ShortStyles[style]) result.push(this.getStyle(s));
+				return result.join(' ');
+			}
+			result = this.getComputedStyle(property);
+		}
+		if (result){
+			result = String(result);
+			var color = result.match(/rgba?\([\d\s,]+\)/);
+			if (color) result = result.replace(color[0], color[0].rgbToHex());
+		}
+		if (Browser.Engine.presto || (Browser.Engine.trident && !$chk(parseInt(result, 10)))){
+			if (property.test(/^(height|width)$/)){
+				var values = (property == 'width') ? ['left', 'right'] : ['top', 'bottom'], size = 0;
+				values.each(function(value){
+					size += this.getStyle('border-' + value + '-width').toInt() + this.getStyle('padding-' + value).toInt();
+				}, this);
+				return this['offset' + property.capitalize()] - size + 'px';
+			}
+			if ((Browser.Engine.presto) && String(result).test('px')) return result;
+			if (property.test(/(border(.+)Width|margin|padding)/)) return '0px';
+		}
+		return result;
+	},
+
+	setStyles: function(styles){
+		for (var style in styles) this.setStyle(style, styles[style]);
+		return this;
+	},
+
+	getStyles: function(){
+		var result = {};
+		Array.flatten(arguments).each(function(key){
+			result[key] = this.getStyle(key);
+		}, this);
+		return result;
+	}
+
+});
+
+Element.Styles = new Hash({
+	left: '@px', top: '@px', bottom: '@px', right: '@px',
+	width: '@px', height: '@px', maxWidth: '@px', maxHeight: '@px', minWidth: '@px', minHeight: '@px',
+	backgroundColor: 'rgb(@, @, @)', backgroundPosition: '@px @px', color: 'rgb(@, @, @)',
+	fontSize: '@px', letterSpacing: '@px', lineHeight: '@px', clip: 'rect(@px @px @px @px)',
+	margin: '@px @px @px @px', padding: '@px @px @px @px', border: '@px @ rgb(@, @, @) @px @ rgb(@, @, @) @px @ rgb(@, @, @)',
+	borderWidth: '@px @px @px @px', borderStyle: '@ @ @ @', borderColor: 'rgb(@, @, @) rgb(@, @, @) rgb(@, @, @) rgb(@, @, @)',
+	zIndex: '@', 'zoom': '@', fontWeight: '@', textIndent: '@px', opacity: '@'
+});
+
+Element.ShortStyles = {margin: {}, padding: {}, border: {}, borderWidth: {}, borderStyle: {}, borderColor: {}};
+
+['Top', 'Right', 'Bottom', 'Left'].each(function(direction){
+	var Short = Element.ShortStyles;
+	var All = Element.Styles;
+	['margin', 'padding'].each(function(style){
+		var sd = style + direction;
+		Short[style][sd] = All[sd] = '@px';
+	});
+	var bd = 'border' + direction;
+	Short.border[bd] = All[bd] = '@px @ rgb(@, @, @)';
+	var bdw = bd + 'Width', bds = bd + 'Style', bdc = bd + 'Color';
+	Short[bd] = {};
+	Short.borderWidth[bdw] = Short[bd][bdw] = All[bdw] = '@px';
+	Short.borderStyle[bds] = Short[bd][bds] = All[bds] = '@';
+	Short.borderColor[bdc] = Short[bd][bdc] = All[bdc] = 'rgb(@, @, @)';
+});
+
+
+/*
+---
+
+name: Fx
+
+description: Contains the basic animation logic to be extended by all other Fx Classes.
+
+license: MIT-style license.
+
+requires: [Chain, Events, Options]
+
+provides: Fx
+
+...
+*/
+
+var Fx = new Class({
+
+	Implements: [Chain, Events, Options],
+
+	options: {
+		/*
+		onStart: $empty,
+		onCancel: $empty,
+		onComplete: $empty,
+		*/
+		fps: 50,
+		unit: false,
+		duration: 500,
+		link: 'ignore'
+	},
+
+	initialize: function(options){
+		this.subject = this.subject || this;
+		this.setOptions(options);
+		this.options.duration = Fx.Durations[this.options.duration] || this.options.duration.toInt();
+		var wait = this.options.wait;
+		if (wait === false) this.options.link = 'cancel';
+	},
+
+	getTransition: function(){
+		return function(p){
+			return -(Math.cos(Math.PI * p) - 1) / 2;
+		};
+	},
+
+	step: function(){
+		var time = $time();
+		if (time < this.time + this.options.duration){
+			var delta = this.transition((time - this.time) / this.options.duration);
+			this.set(this.compute(this.from, this.to, delta));
+		} else {
+			this.set(this.compute(this.from, this.to, 1));
+			this.complete();
+		}
+	},
+
+	set: function(now){
+		return now;
+	},
+
+	compute: function(from, to, delta){
+		return Fx.compute(from, to, delta);
+	},
+
+	check: function(){
+		if (!this.timer) return true;
+		switch (this.options.link){
+			case 'cancel': this.cancel(); return true;
+			case 'chain': this.chain(this.caller.bind(this, arguments)); return false;
+		}
+		return false;
+	},
+
+	start: function(from, to){
+		if (!this.check(from, to)) return this;
+		this.from = from;
+		this.to = to;
+		this.time = 0;
+		this.transition = this.getTransition();
+		this.startTimer();
+		this.onStart();
+		return this;
+	},
+
+	complete: function(){
+		if (this.stopTimer()) this.onComplete();
+		return this;
+	},
+
+	cancel: function(){
+		if (this.stopTimer()) this.onCancel();
+		return this;
+	},
+
+	onStart: function(){
+		this.fireEvent('start', this.subject);
+	},
+
+	onComplete: function(){
+		this.fireEvent('complete', this.subject);
+		if (!this.callChain()) this.fireEvent('chainComplete', this.subject);
+	},
+
+	onCancel: function(){
+		this.fireEvent('cancel', this.subject).clearChain();
+	},
+
+	pause: function(){
+		this.stopTimer();
+		return this;
+	},
+
+	resume: function(){
+		this.startTimer();
+		return this;
+	},
+
+	stopTimer: function(){
+		if (!this.timer) return false;
+		this.time = $time() - this.time;
+		this.timer = $clear(this.timer);
+		return true;
+	},
+
+	startTimer: function(){
+		if (this.timer) return false;
+		this.time = $time() - this.time;
+		this.timer = this.step.periodical(Math.round(1000 / this.options.fps), this);
+		return true;
+	}
+
+});
+
+Fx.compute = function(from, to, delta){
+	return (to - from) * delta + from;
+};
+
+Fx.Durations = {'short': 250, 'normal': 500, 'long': 1000};
+
+
+/*
+---
+
+name: Fx.CSS
+
+description: Contains the CSS animation logic. Used by Fx.Tween, Fx.Morph, Fx.Elements.
+
+license: MIT-style license.
+
+requires: [Fx, Element.Style]
+
+provides: Fx.CSS
+
+...
+*/
+
+Fx.CSS = new Class({
+
+	Extends: Fx,
+
+	//prepares the base from/to object
+
+	prepare: function(element, property, values){
+		values = $splat(values);
+		var values1 = values[1];
+		if (!$chk(values1)){
+			values[1] = values[0];
+			values[0] = element.getStyle(property);
+		}
+		var parsed = values.map(this.parse);
+		return {from: parsed[0], to: parsed[1]};
+	},
+
+	//parses a value into an array
+
+	parse: function(value){
+		value = $lambda(value)();
+		value = (typeof value == 'string') ? value.split(' ') : $splat(value);
+		return value.map(function(val){
+			val = String(val);
+			var found = false;
+			Fx.CSS.Parsers.each(function(parser, key){
+				if (found) return;
+				var parsed = parser.parse(val);
+				if ($chk(parsed)) found = {value: parsed, parser: parser};
+			});
+			found = found || {value: val, parser: Fx.CSS.Parsers.String};
+			return found;
+		});
+	},
+
+	//computes by a from and to prepared objects, using their parsers.
+
+	compute: function(from, to, delta){
+		var computed = [];
+		(Math.min(from.length, to.length)).times(function(i){
+			computed.push({value: from[i].parser.compute(from[i].value, to[i].value, delta), parser: from[i].parser});
+		});
+		computed.$family = {name: 'fx:css:value'};
+		return computed;
+	},
+
+	//serves the value as settable
+
+	serve: function(value, unit){
+		if ($type(value) != 'fx:css:value') value = this.parse(value);
+		var returned = [];
+		value.each(function(bit){
+			returned = returned.concat(bit.parser.serve(bit.value, unit));
+		});
+		return returned;
+	},
+
+	//renders the change to an element
+
+	render: function(element, property, value, unit){
+		element.setStyle(property, this.serve(value, unit));
+	},
+
+	//searches inside the page css to find the values for a selector
+
+	search: function(selector){
+		if (Fx.CSS.Cache[selector]) return Fx.CSS.Cache[selector];
+		var to = {};
+		Array.each(document.styleSheets, function(sheet, j){
+			var href = sheet.href;
+			if (href && href.contains('://') && !href.contains(document.domain)) return;
+			var rules = sheet.rules || sheet.cssRules;
+			Array.each(rules, function(rule, i){
+				if (!rule.style) return;
+				var selectorText = (rule.selectorText) ? rule.selectorText.replace(/^\w+/, function(m){
+					return m.toLowerCase();
+				}) : null;
+				if (!selectorText || !selectorText.test('^' + selector + '$')) return;
+				Element.Styles.each(function(value, style){
+					if (!rule.style[style] || Element.ShortStyles[style]) return;
+					value = String(rule.style[style]);
+					to[style] = (value.test(/^rgb/)) ? value.rgbToHex() : value;
+				});
+			});
+		});
+		return Fx.CSS.Cache[selector] = to;
+	}
+
+});
+
+Fx.CSS.Cache = {};
+
+Fx.CSS.Parsers = new Hash({
+
+	Color: {
+		parse: function(value){
+			if (value.match(/^#[0-9a-f]{3,6}$/i)) return value.hexToRgb(true);
+			return ((value = value.match(/(\d+),\s*(\d+),\s*(\d+)/))) ? [value[1], value[2], value[3]] : false;
+		},
+		compute: function(from, to, delta){
+			return from.map(function(value, i){
+				return Math.round(Fx.compute(from[i], to[i], delta));
+			});
+		},
+		serve: function(value){
+			return value.map(Number);
+		}
+	},
+
+	Number: {
+		parse: parseFloat,
+		compute: Fx.compute,
+		serve: function(value, unit){
+			return (unit) ? value + unit : value;
+		}
+	},
+
+	String: {
+		parse: $lambda(false),
+		compute: $arguments(1),
+		serve: $arguments(0)
+	}
+
+});
+
+
+/*
+---
+
+name: Fx.Morph
+
+description: Formerly Fx.Styles, effect to transition any number of CSS properties for an element using an object of rules, or CSS based selector rules.
+
+license: MIT-style license.
+
+requires: Fx.CSS
+
+provides: Fx.Morph
+
+...
+*/
+
+Fx.Morph = new Class({
+
+	Extends: Fx.CSS,
+
+	initialize: function(element, options){
+		this.element = this.subject = document.id(element);
+		this.parent(options);
+	},
+
+	set: function(now){
+		if (typeof now == 'string') now = this.search(now);
+		for (var p in now) this.render(this.element, p, now[p], this.options.unit);
+		return this;
+	},
+
+	compute: function(from, to, delta){
+		var now = {};
+		for (var p in from) now[p] = this.parent(from[p], to[p], delta);
+		return now;
+	},
+
+	start: function(properties){
+		if (!this.check(properties)) return this;
+		if (typeof properties == 'string') properties = this.search(properties);
+		var from = {}, to = {};
+		for (var p in properties){
+			var parsed = this.prepare(this.element, p, properties[p]);
+			from[p] = parsed.from;
+			to[p] = parsed.to;
+		}
+		return this.parent(from, to);
+	}
+
+});
+
+Element.Properties.morph = {
+
+	set: function(options){
+		var morph = this.retrieve('morph');
+		if (morph) morph.cancel();
+		return this.eliminate('morph').store('morph:options', $extend({link: 'cancel'}, options));
+	},
+
+	get: function(options){
+		if (options || !this.retrieve('morph')){
+			if (options || !this.retrieve('morph:options')) this.set('morph', options);
+			this.store('morph', new Fx.Morph(this, this.retrieve('morph:options')));
+		}
+		return this.retrieve('morph');
+	}
+
+};
+
+Element.implement({
+
+	morph: function(props){
+		this.get('morph').start(props);
+		return this;
+	}
+
+});
+
+
+/*
+---
+
+name: Fx.Transitions
+
+description: Contains a set of advanced transitions to be used with any of the Fx Classes.
+
+license: MIT-style license.
+
+credits: Easing Equations by Robert Penner, <http://www.robertpenner.com/easing/>, modified and optimized to be used with MooTools.
+
+requires: Fx
+
+provides: Fx.Transitions
+
+...
+*/
+
+Fx.implement({
+
+	getTransition: function(){
+		var trans = this.options.transition || Fx.Transitions.Sine.easeInOut;
+		if (typeof trans == 'string'){
+			var data = trans.split(':');
+			trans = Fx.Transitions;
+			trans = trans[data[0]] || trans[data[0].capitalize()];
+			if (data[1]) trans = trans['ease' + data[1].capitalize() + (data[2] ? data[2].capitalize() : '')];
+		}
+		return trans;
+	}
+
+});
+
+Fx.Transition = function(transition, params){
+	params = $splat(params);
+	return $extend(transition, {
+		easeIn: function(pos){
+			return transition(pos, params);
+		},
+		easeOut: function(pos){
+			return 1 - transition(1 - pos, params);
+		},
+		easeInOut: function(pos){
+			return (pos <= 0.5) ? transition(2 * pos, params) / 2 : (2 - transition(2 * (1 - pos), params)) / 2;
+		}
+	});
+};
+
+Fx.Transitions = new Hash({
+
+	linear: $arguments(0)
+
+});
+
+Fx.Transitions.extend = function(transitions){
+	for (var transition in transitions) Fx.Transitions[transition] = new Fx.Transition(transitions[transition]);
+};
+
+Fx.Transitions.extend({
+
+	Pow: function(p, x){
+		return Math.pow(p, x[0] || 6);
+	},
+
+	Expo: function(p){
+		return Math.pow(2, 8 * (p - 1));
+	},
+
+	Circ: function(p){
+		return 1 - Math.sin(Math.acos(p));
+	},
+
+	Sine: function(p){
+		return 1 - Math.sin((1 - p) * Math.PI / 2);
+	},
+
+	Back: function(p, x){
+		x = x[0] || 1.618;
+		return Math.pow(p, 2) * ((x + 1) * p - x);
+	},
+
+	Bounce: function(p){
+		var value;
+		for (var a = 0, b = 1; 1; a += b, b /= 2){
+			if (p >= (7 - 4 * a) / 11){
+				value = b * b - Math.pow((11 - 6 * a - 11 * p) / 4, 2);
+				break;
+			}
+		}
+		return value;
+	},
+
+	Elastic: function(p, x){
+		return Math.pow(2, 10 * --p) * Math.cos(20 * p * Math.PI * (x[0] || 1) / 3);
+	}
+
+});
+
+['Quad', 'Cubic', 'Quart', 'Quint'].each(function(transition, i){
+	Fx.Transitions[transition] = new Fx.Transition(function(p){
+		return Math.pow(p, [i + 2]);
+	});
+});
+
+
+/*
+---
+
+name: Fx.Tween
+
+description: Formerly Fx.Style, effect to transition any CSS property for an element.
+
+license: MIT-style license.
+
+requires: Fx.CSS
+
+provides: [Fx.Tween, Element.fade, Element.highlight]
+
+...
+*/
+
+Fx.Tween = new Class({
+
+	Extends: Fx.CSS,
+
+	initialize: function(element, options){
+		this.element = this.subject = document.id(element);
+		this.parent(options);
+	},
+
+	set: function(property, now){
+		if (arguments.length == 1){
+			now = property;
+			property = this.property || this.options.property;
+		}
+		this.render(this.element, property, now, this.options.unit);
+		return this;
+	},
+
+	start: function(property, from, to){
+		if (!this.check(property, from, to)) return this;
+		var args = Array.flatten(arguments);
+		this.property = this.options.property || args.shift();
+		var parsed = this.prepare(this.element, this.property, args);
+		return this.parent(parsed.from, parsed.to);
+	}
+
+});
+
+Element.Properties.tween = {
+
+	set: function(options){
+		var tween = this.retrieve('tween');
+		if (tween) tween.cancel();
+		return this.eliminate('tween').store('tween:options', $extend({link: 'cancel'}, options));
+	},
+
+	get: function(options){
+		if (options || !this.retrieve('tween')){
+			if (options || !this.retrieve('tween:options')) this.set('tween', options);
+			this.store('tween', new Fx.Tween(this, this.retrieve('tween:options')));
+		}
+		return this.retrieve('tween');
+	}
+
+};
+
+Element.implement({
+
+	tween: function(property, from, to){
+		this.get('tween').start(arguments);
+		return this;
+	},
+
+	fade: function(how){
+		var fade = this.get('tween'), o = 'opacity', toggle;
+		how = $pick(how, 'toggle');
+		switch (how){
+			case 'in': fade.start(o, 1); break;
+			case 'out': fade.start(o, 0); break;
+			case 'show': fade.set(o, 1); break;
+			case 'hide': fade.set(o, 0); break;
+			case 'toggle':
+				var flag = this.retrieve('fade:flag', this.get('opacity') == 1);
+				fade.start(o, (flag) ? 0 : 1);
+				this.store('fade:flag', !flag);
+				toggle = true;
+			break;
+			default: fade.start(o, arguments);
+		}
+		if (!toggle) this.eliminate('fade:flag');
+		return this;
+	},
+
+	highlight: function(start, end){
+		if (!end){
+			end = this.retrieve('highlight:original', this.getStyle('background-color'));
+			end = (end == 'transparent') ? '#fff' : end;
+		}
+		var tween = this.get('tween');
+		tween.start('background-color', start || '#ffff88', end).chain(function(){
+			this.setStyle('background-color', this.retrieve('highlight:original'));
+			tween.callChain();
+		}.bind(this));
+		return this;
+	}
+
+});
+
+
+/*
+---
+
+name: Request
+
+description: Powerful all purpose Request Class. Uses XMLHTTPRequest.
+
+license: MIT-style license.
+
+requires: [Element, Chain, Events, Options, Browser]
+
+provides: Request
+
+...
+*/
+
+var Request = new Class({
+
+	Implements: [Chain, Events, Options],
+
+	options: {/*
+		onRequest: $empty,
+		onComplete: $empty,
+		onCancel: $empty,
+		onSuccess: $empty,
+		onFailure: $empty,
+		onException: $empty,*/
+		url: '',
+		data: '',
+		headers: {
+			'X-Requested-With': 'XMLHttpRequest',
+			'Accept': 'text/javascript, text/html, application/xml, text/xml, */*'
+		},
+		async: true,
+		format: false,
+		method: 'post',
+		link: 'ignore',
+		isSuccess: null,
+		emulation: true,
+		urlEncoded: true,
+		encoding: 'utf-8',
+		evalScripts: false,
+		evalResponse: false,
+		noCache: false
+	},
+
+	initialize: function(options){
+		this.xhr = new Browser.Request();
+		this.setOptions(options);
+		this.options.isSuccess = this.options.isSuccess || this.isSuccess;
+		this.headers = new Hash(this.options.headers);
+	},
+
+	onStateChange: function(){
+		if (this.xhr.readyState != 4 || !this.running) return;
+		this.running = false;
+		this.status = 0;
+		$try(function(){
+			this.status = this.xhr.status;
+		}.bind(this));
+		this.xhr.onreadystatechange = $empty;
+		if (this.options.isSuccess.call(this, this.status)){
+			this.response = {text: this.xhr.responseText, xml: this.xhr.responseXML};
+			this.success(this.response.text, this.response.xml);
+		} else {
+			this.response = {text: null, xml: null};
+			this.failure();
+		}
+	},
+
+	isSuccess: function(){
+		return ((this.status >= 200) && (this.status < 300));
+	},
+
+	processScripts: function(text){
+		if (this.options.evalResponse || (/(ecma|java)script/).test(this.getHeader('Content-type'))) return $exec(text);
+		return text.stripScripts(this.options.evalScripts);
+	},
+
+	success: function(text, xml){
+		this.onSuccess(this.processScripts(text), xml);
+	},
+
+	onSuccess: function(){
+		this.fireEvent('complete', arguments).fireEvent('success', arguments).callChain();
+	},
+
+	failure: function(){
+		this.onFailure();
+	},
+
+	onFailure: function(){
+		this.fireEvent('complete').fireEvent('failure', this.xhr);
+	},
+
+	setHeader: function(name, value){
+		this.headers.set(name, value);
+		return this;
+	},
+
+	getHeader: function(name){
+		return $try(function(){
+			return this.xhr.getResponseHeader(name);
+		}.bind(this));
+	},
+
+	check: function(){
+		if (!this.running) return true;
+		switch (this.options.link){
+			case 'cancel': this.cancel(); return true;
+			case 'chain': this.chain(this.caller.bind(this, arguments)); return false;
+		}
+		return false;
+	},
+
+	send: function(options){
+		if (!this.check(options)) return this;
+		this.running = true;
+
+		var type = $type(options);
+		if (type == 'string' || type == 'element') options = {data: options};
+
+		var old = this.options;
+		options = $extend({data: old.data, url: old.url, method: old.method}, options);
+		var data = options.data, url = String(options.url), method = options.method.toLowerCase();
+
+		switch ($type(data)){
+			case 'element': data = document.id(data).toQueryString(); break;
+			case 'object': case 'hash': data = Hash.toQueryString(data);
+		}
+
+		if (this.options.format){
+			var format = 'format=' + this.options.format;
+			data = (data) ? format + '&' + data : format;
+		}
+
+		if (this.options.emulation && !['get', 'post'].contains(method)){
+			var _method = '_method=' + method;
+			data = (data) ? _method + '&' + data : _method;
+			method = 'post';
+		}
+
+		if (this.options.urlEncoded && method == 'post'){
+			var encoding = (this.options.encoding) ? '; charset=' + this.options.encoding : '';
+			this.headers.set('Content-type', 'application/x-www-form-urlencoded' + encoding);
+		}
+
+		if (this.options.noCache){
+			var noCache = 'noCache=' + new Date().getTime();
+			data = (data) ? noCache + '&' + data : noCache;
+		}
+
+		var trimPosition = url.lastIndexOf('/');
+		if (trimPosition > -1 && (trimPosition = url.indexOf('#')) > -1) url = url.substr(0, trimPosition);
+
+		if (data && method == 'get'){
+			url = url + (url.contains('?') ? '&' : '?') + data;
+			data = null;
+		}
+
+		this.xhr.open(method.toUpperCase(), url, this.options.async);
+
+		this.xhr.onreadystatechange = this.onStateChange.bind(this);
+
+		this.headers.each(function(value, key){
+			try {
+				this.xhr.setRequestHeader(key, value);
+			} catch (e){
+				this.fireEvent('exception', [key, value]);
+			}
+		}, this);
+
+		this.fireEvent('request');
+		this.xhr.send(data);
+		if (!this.options.async) this.onStateChange();
+		return this;
+	},
+
+	cancel: function(){
+		if (!this.running) return this;
+		this.running = false;
+		this.xhr.abort();
+		this.xhr.onreadystatechange = $empty;
+		this.xhr = new Browser.Request();
+		this.fireEvent('cancel');
+		return this;
+	}
+
+});
+
+(function(){
+
+var methods = {};
+['get', 'post', 'put', 'delete', 'GET', 'POST', 'PUT', 'DELETE'].each(function(method){
+	methods[method] = function(){
+		var params = Array.link(arguments, {url: String.type, data: $defined});
+		return this.send($extend(params, {method: method}));
+	};
+});
+
+Request.implement(methods);
+
+})();
+
+Element.Properties.send = {
+
+	set: function(options){
+		var send = this.retrieve('send');
+		if (send) send.cancel();
+		return this.eliminate('send').store('send:options', $extend({
+			data: this, link: 'cancel', method: this.get('method') || 'post', url: this.get('action')
+		}, options));
+	},
+
+	get: function(options){
+		if (options || !this.retrieve('send')){
+			if (options || !this.retrieve('send:options')) this.set('send', options);
+			this.store('send', new Request(this.retrieve('send:options')));
+		}
+		return this.retrieve('send');
+	}
+
+};
+
+Element.implement({
+
+	send: function(url){
+		var sender = this.get('send');
+		sender.send({data: this, url: url || sender.options.url});
+		return this;
+	}
+
+});
+
+
+/*
+---
+
+name: Request.HTML
+
+description: Extends the basic Request Class with additional methods for interacting with HTML responses.
+
+license: MIT-style license.
+
+requires: [Request, Element]
+
+provides: Request.HTML
+
+...
+*/
+
+Request.HTML = new Class({
+
+	Extends: Request,
+
+	options: {
+		update: false,
+		append: false,
+		evalScripts: true,
+		filter: false
+	},
+
+	processHTML: function(text){
+		var match = text.match(/<body[^>]*>([\s\S]*?)<\/body>/i);
+		text = (match) ? match[1] : text;
+
+		var container = new Element('div');
+
+		return $try(function(){
+			var root = '<root>' + text + '</root>', doc;
+			if (Browser.Engine.trident){
+				doc = new ActiveXObject('Microsoft.XMLDOM');
+				doc.async = false;
+				doc.loadXML(root);
+			} else {
+				doc = new DOMParser().parseFromString(root, 'text/xml');
+			}
+			root = doc.getElementsByTagName('root')[0];
+			if (!root) return null;
+			for (var i = 0, k = root.childNodes.length; i < k; i++){
+				var child = Element.clone(root.childNodes[i], true, true);
+				if (child) container.grab(child);
+			}
+			return container;
+		}) || container.set('html', text);
+	},
+
+	success: function(text){
+		var options = this.options, response = this.response;
+
+		response.html = text.stripScripts(function(script){
+			response.javascript = script;
+		});
+
+		var temp = this.processHTML(response.html);
+
+		response.tree = temp.childNodes;
+		response.elements = temp.getElements('*');
+
+		if (options.filter) response.tree = response.elements.filter(options.filter);
+		if (options.update) document.id(options.update).empty().set('html', response.html);
+		else if (options.append) document.id(options.append).adopt(temp.getChildren());
+		if (options.evalScripts) $exec(response.javascript);
+
+		this.onSuccess(response.tree, response.elements, response.html, response.javascript);
+	}
+
+});
+
+Element.Properties.load = {
+
+	set: function(options){
+		var load = this.retrieve('load');
+		if (load) load.cancel();
+		return this.eliminate('load').store('load:options', $extend({data: this, link: 'cancel', update: this, method: 'get'}, options));
+	},
+
+	get: function(options){
+		if (options || ! this.retrieve('load')){
+			if (options || !this.retrieve('load:options')) this.set('load', options);
+			this.store('load', new Request.HTML(this.retrieve('load:options')));
+		}
+		return this.retrieve('load');
+	}
+
+};
+
+Element.implement({
+
+	load: function(){
+		this.get('load').send(Array.link(arguments, {data: Object.type, url: String.type}));
+		return this;
+	}
+
+});
+
+
+/*
+---
+
+name: JSON
+
+description: JSON encoder and decoder.
+
+license: MIT-style license.
+
+see: <http://www.json.org/>
+
+requires: [Array, String, Number, Function, Hash]
+
+provides: JSON
+
+...
+*/
+
+var JSON = new Hash(this.JSON && {
+	stringify: JSON.stringify,
+	parse: JSON.parse
+}).extend({
+	
+	$specialChars: {'\b': '\\b', '\t': '\\t', '\n': '\\n', '\f': '\\f', '\r': '\\r', '"' : '\\"', '\\': '\\\\'},
+
+	$replaceChars: function(chr){
+		return JSON.$specialChars[chr] || '\\u00' + Math.floor(chr.charCodeAt() / 16).toString(16) + (chr.charCodeAt() % 16).toString(16);
+	},
+
+	encode: function(obj){
+		switch ($type(obj)){
+			case 'string':
+				return '"' + obj.replace(/[\x00-\x1f\\"]/g, JSON.$replaceChars) + '"';
+			case 'array':
+				return '[' + String(obj.map(JSON.encode).clean()) + ']';
+			case 'object': case 'hash':
+				var string = [];
+				Hash.each(obj, function(value, key){
+					var json = JSON.encode(value);
+					if (json) string.push(JSON.encode(key) + ':' + json);
+				});
+				return '{' + string + '}';
+			case 'number': case 'boolean': return String(obj);
+			case false: return 'null';
+		}
+		return null;
+	},
+
+	decode: function(string, secure){
+		if ($type(string) != 'string' || !string.length) return null;
+		if (secure && !(/^[,:{}\[\]0-9.\-+Eaeflnr-u \n\r\t]*$/).test(string.replace(/\\./g, '@').replace(/"[^"\\\n\r]*"/g, ''))) return null;
+		return eval('(' + string + ')');
+	}
+
+});
+
+
+/*
+---
+
+name: Request.JSON
+
+description: Extends the basic Request Class with additional methods for sending and receiving JSON data.
+
+license: MIT-style license.
+
+requires: [Request, JSON]
+
+provides: [Request.JSON]
+
+...
+*/
+
+Request.JSON = new Class({
+
+	Extends: Request,
+
+	options: {
+		secure: true
+	},
+
+	initialize: function(options){
+		this.parent(options);
+		this.headers.extend({'Accept': 'application/json', 'X-Request': 'JSON'});
+	},
+
+	success: function(text){
+		this.response.json = JSON.decode(text, this.options.secure);
+		this.onSuccess(this.response.json, text);
+	}
+
+});
+
+
+/*
+---
+
+name: Cookie
+
+description: Class for creating, reading, and deleting browser Cookies.
+
+license: MIT-style license.
+
+credits: Based on the functions by Peter-Paul Koch (http://quirksmode.org).
+
+requires: Options
+
+provides: Cookie
+
+...
+*/
+
+var Cookie = new Class({
+
+	Implements: Options,
+
+	options: {
+		path: false,
+		domain: false,
+		duration: false,
+		secure: false,
+		document: document
+	},
+
+	initialize: function(key, options){
+		this.key = key;
+		this.setOptions(options);
+	},
+
+	write: function(value){
+		value = encodeURIComponent(value);
+		if (this.options.domain) value += '; domain=' + this.options.domain;
+		if (this.options.path) value += '; path=' + this.options.path;
+		if (this.options.duration){
+			var date = new Date();
+			date.setTime(date.getTime() + this.options.duration * 24 * 60 * 60 * 1000);
+			value += '; expires=' + date.toGMTString();
+		}
+		if (this.options.secure) value += '; secure';
+		this.options.document.cookie = this.key + '=' + value;
+		return this;
+	},
+
+	read: function(){
+		var value = this.options.document.cookie.match('(?:^|;)\\s*' + this.key.escapeRegExp() + '=([^;]*)');
+		return (value) ? decodeURIComponent(value[1]) : null;
+	},
+
+	dispose: function(){
+		new Cookie(this.key, $merge(this.options, {duration: -1})).write('');
+		return this;
+	}
+
+});
+
+Cookie.write = function(key, value, options){
+	return new Cookie(key, options).write(value);
+};
+
+Cookie.read = function(key){
+	return new Cookie(key).read();
+};
+
+Cookie.dispose = function(key, options){
+	return new Cookie(key, options).dispose();
+};
+
+
+/*
+---
+
+name: DomReady
+
+description: Contains the custom event domready.
+
+license: MIT-style license.
+
+requires: Element.Event
+
+provides: DomReady
+
+...
+*/
+
+Element.Events.domready = {
+
+	onAdd: function(fn){
+		if (Browser.loaded) fn.call(this);
+	}
+
+};
+
+(function(){
+
+	var domready = function(){
+		if (Browser.loaded) return;
+		Browser.loaded = true;
+		window.fireEvent('domready');
+		document.fireEvent('domready');
+	};
+	
+	window.addEvent('load', domready);
+
+	if (Browser.Engine.trident){
+		var temp = document.createElement('div');
+		(function(){
+			($try(function(){
+				temp.doScroll(); // Technique by Diego Perini
+				return document.id(temp).inject(document.body).set('html', 'temp').dispose();
+			})) ? domready() : arguments.callee.delay(50);
+		})();
+	} else if (Browser.Engine.webkit && Browser.Engine.version < 525){
+		(function(){
+			(['loaded', 'complete'].contains(document.readyState)) ? domready() : arguments.callee.delay(50);
+		})();
+	} else {
+		document.addEvent('DOMContentLoaded', domready);
+	}
+
+})();
+
+
+/*
+---
+
+name: Selectors
+
+description: Adds advanced CSS-style querying capabilities for targeting HTML Elements. Includes pseudo selectors.
+
+license: MIT-style license.
+
+requires: Element
+
+provides: Selectors
+
+...
+*/
+
+Native.implement([Document, Element], {
+
+	getElements: function(expression, nocash){
+		expression = expression.split(',');
+		var items, local = {};
+		for (var i = 0, l = expression.length; i < l; i++){
+			var selector = expression[i], elements = Selectors.Utils.search(this, selector, local);
+			if (i != 0 && elements.item) elements = $A(elements);
+			items = (i == 0) ? elements : (items.item) ? $A(items).concat(elements) : items.concat(elements);
+		}
+		return new Elements(items, {ddup: (expression.length > 1), cash: !nocash});
+	}
+
+});
+
+Element.implement({
+
+	match: function(selector){
+		if (!selector || (selector == this)) return true;
+		var tagid = Selectors.Utils.parseTagAndID(selector);
+		var tag = tagid[0], id = tagid[1];
+		if (!Selectors.Filters.byID(this, id) || !Selectors.Filters.byTag(this, tag)) return false;
+		var parsed = Selectors.Utils.parseSelector(selector);
+		return (parsed) ? Selectors.Utils.filter(this, parsed, {}) : true;
+	}
+
+});
+
+var Selectors = {Cache: {nth: {}, parsed: {}}};
+
+Selectors.RegExps = {
+	id: (/#([\w-]+)/),
+	tag: (/^(\w+|\*)/),
+	quick: (/^(\w+|\*)$/),
+	splitter: (/\s*([+>~\s])\s*([a-zA-Z#.*:\[])/g),
+	combined: (/\.([\w-]+)|\[(\w+)(?:([!*^$~|]?=)(["']?)([^\4]*?)\4)?\]|:([\w-]+)(?:\(["']?(.*?)?["']?\)|$)/g)
+};
+
+Selectors.Utils = {
+
+	chk: function(item, uniques){
+		if (!uniques) return true;
+		var uid = $uid(item);
+		if (!uniques[uid]) return uniques[uid] = true;
+		return false;
+	},
+
+	parseNthArgument: function(argument){
+		if (Selectors.Cache.nth[argument]) return Selectors.Cache.nth[argument];
+		var parsed = argument.match(/^([+-]?\d*)?([a-z]+)?([+-]?\d*)?$/);
+		if (!parsed) return false;
+		var inta = parseInt(parsed[1], 10);
+		var a = (inta || inta === 0) ? inta : 1;
+		var special = parsed[2] || false;
+		var b = parseInt(parsed[3], 10) || 0;
+		if (a != 0){
+			b--;
+			while (b < 1) b += a;
+			while (b >= a) b -= a;
+		} else {
+			a = b;
+			special = 'index';
+		}
+		switch (special){
+			case 'n': parsed = {a: a, b: b, special: 'n'}; break;
+			case 'odd': parsed = {a: 2, b: 0, special: 'n'}; break;
+			case 'even': parsed = {a: 2, b: 1, special: 'n'}; break;
+			case 'first': parsed = {a: 0, special: 'index'}; break;
+			case 'last': parsed = {special: 'last-child'}; break;
+			case 'only': parsed = {special: 'only-child'}; break;
+			default: parsed = {a: (a - 1), special: 'index'};
+		}
+
+		return Selectors.Cache.nth[argument] = parsed;
+	},
+
+	parseSelector: function(selector){
+		if (Selectors.Cache.parsed[selector]) return Selectors.Cache.parsed[selector];
+		var m, parsed = {classes: [], pseudos: [], attributes: []};
+		while ((m = Selectors.RegExps.combined.exec(selector))){
+			var cn = m[1], an = m[2], ao = m[3], av = m[5], pn = m[6], pa = m[7];
+			if (cn){
+				parsed.classes.push(cn);
+			} else if (pn){
+				var parser = Selectors.Pseudo.get(pn);
+				if (parser) parsed.pseudos.push({parser: parser, argument: pa});
+				else parsed.attributes.push({name: pn, operator: '=', value: pa});
+			} else if (an){
+				parsed.attributes.push({name: an, operator: ao, value: av});
+			}
+		}
+		if (!parsed.classes.length) delete parsed.classes;
+		if (!parsed.attributes.length) delete parsed.attributes;
+		if (!parsed.pseudos.length) delete parsed.pseudos;
+		if (!parsed.classes && !parsed.attributes && !parsed.pseudos) parsed = null;
+		return Selectors.Cache.parsed[selector] = parsed;
+	},
+
+	parseTagAndID: function(selector){
+		var tag = selector.match(Selectors.RegExps.tag);
+		var id = selector.match(Selectors.RegExps.id);
+		return [(tag) ? tag[1] : '*', (id) ? id[1] : false];
+	},
+
+	filter: function(item, parsed, local){
+		var i;
+		if (parsed.classes){
+			for (i = parsed.classes.length; i--; i){
+				var cn = parsed.classes[i];
+				if (!Selectors.Filters.byClass(item, cn)) return false;
+			}
+		}
+		if (parsed.attributes){
+			for (i = parsed.attributes.length; i--; i){
+				var att = parsed.attributes[i];
+				if (!Selectors.Filters.byAttribute(item, att.name, att.operator, att.value)) return false;
+			}
+		}
+		if (parsed.pseudos){
+			for (i = parsed.pseudos.length; i--; i){
+				var psd = parsed.pseudos[i];
+				if (!Selectors.Filters.byPseudo(item, psd.parser, psd.argument, local)) return false;
+			}
+		}
+		return true;
+	},
+
+	getByTagAndID: function(ctx, tag, id){
+		if (id){
+			var item = (ctx.getElementById) ? ctx.getElementById(id, true) : Element.getElementById(ctx, id, true);
+			return (item && Selectors.Filters.byTag(item, tag)) ? [item] : [];
+		} else {
+			return ctx.getElementsByTagName(tag);
+		}
+	},
+
+	search: function(self, expression, local){
+		var splitters = [];
+
+		var selectors = expression.trim().replace(Selectors.RegExps.splitter, function(m0, m1, m2){
+			splitters.push(m1);
+			return ':)' + m2;
+		}).split(':)');
+
+		var items, filtered, item;
+
+		for (var i = 0, l = selectors.length; i < l; i++){
+
+			var selector = selectors[i];
+
+			if (i == 0 && Selectors.RegExps.quick.test(selector)){
+				items = self.getElementsByTagName(selector);
+				continue;
+			}
+
+			var splitter = splitters[i - 1];
+
+			var tagid = Selectors.Utils.parseTagAndID(selector);
+			var tag = tagid[0], id = tagid[1];
+
+			if (i == 0){
+				items = Selectors.Utils.getByTagAndID(self, tag, id);
+			} else {
+				var uniques = {}, found = [];
+				for (var j = 0, k = items.length; j < k; j++) found = Selectors.Getters[splitter](found, items[j], tag, id, uniques);
+				items = found;
+			}
+
+			var parsed = Selectors.Utils.parseSelector(selector);
+
+			if (parsed){
+				filtered = [];
+				for (var m = 0, n = items.length; m < n; m++){
+					item = items[m];
+					if (Selectors.Utils.filter(item, parsed, local)) filtered.push(item);
+				}
+				items = filtered;
+			}
+
+		}
+
+		return items;
+
+	}
+
+};
+
+Selectors.Getters = {
+
+	' ': function(found, self, tag, id, uniques){
+		var items = Selectors.Utils.getByTagAndID(self, tag, id);
+		for (var i = 0, l = items.length; i < l; i++){
+			var item = items[i];
+			if (Selectors.Utils.chk(item, uniques)) found.push(item);
+		}
+		return found;
+	},
+
+	'>': function(found, self, tag, id, uniques){
+		var children = Selectors.Utils.getByTagAndID(self, tag, id);
+		for (var i = 0, l = children.length; i < l; i++){
+			var child = children[i];
+			if (child.parentNode == self && Selectors.Utils.chk(child, uniques)) found.push(child);
+		}
+		return found;
+	},
+
+	'+': function(found, self, tag, id, uniques){
+		while ((self = self.nextSibling)){
+			if (self.nodeType == 1){
+				if (Selectors.Utils.chk(self, uniques) && Selectors.Filters.byTag(self, tag) && Selectors.Filters.byID(self, id)) found.push(self);
+				break;
+			}
+		}
+		return found;
+	},
+
+	'~': function(found, self, tag, id, uniques){
+		while ((self = self.nextSibling)){
+			if (self.nodeType == 1){
+				if (!Selectors.Utils.chk(self, uniques)) break;
+				if (Selectors.Filters.byTag(self, tag) && Selectors.Filters.byID(self, id)) found.push(self);
+			}
+		}
+		return found;
+	}
+
+};
+
+Selectors.Filters = {
+
+	byTag: function(self, tag){
+		return (tag == '*' || (self.tagName && self.tagName.toLowerCase() == tag));
+	},
+
+	byID: function(self, id){
+		return (!id || (self.id && self.id == id));
+	},
+
+	byClass: function(self, klass){
+		return (self.className && self.className.contains && self.className.contains(klass, ' '));
+	},
+
+	byPseudo: function(self, parser, argument, local){
+		return parser.call(self, argument, local);
+	},
+
+	byAttribute: function(self, name, operator, value){
+		var result = Element.prototype.getProperty.call(self, name);
+		if (!result) return (operator == '!=');
+		if (!operator || value == undefined) return true;
+		switch (operator){
+			case '=': return (result == value);
+			case '*=': return (result.contains(value));
+			case '^=': return (result.substr(0, value.length) == value);
+			case '$=': return (result.substr(result.length - value.length) == value);
+			case '!=': return (result != value);
+			case '~=': return result.contains(value, ' ');
+			case '|=': return result.contains(value, '-');
+		}
+		return false;
+	}
+
+};
+
+Selectors.Pseudo = new Hash({
+
+	// w3c pseudo selectors
+
+	checked: function(){
+		return this.checked;
+	},
+	
+	empty: function(){
+		return !(this.innerText || this.textContent || '').length;
+	},
+
+	not: function(selector){
+		return !Element.match(this, selector);
+	},
+
+	contains: function(text){
+		return (this.innerText || this.textContent || '').contains(text);
+	},
+
+	'first-child': function(){
+		return Selectors.Pseudo.index.call(this, 0);
+	},
+
+	'last-child': function(){
+		var element = this;
+		while ((element = element.nextSibling)){
+			if (element.nodeType == 1) return false;
+		}
+		return true;
+	},
+
+	'only-child': function(){
+		var prev = this;
+		while ((prev = prev.previousSibling)){
+			if (prev.nodeType == 1) return false;
+		}
+		var next = this;
+		while ((next = next.nextSibling)){
+			if (next.nodeType == 1) return false;
+		}
+		return true;
+	},
+
+	'nth-child': function(argument, local){
+		argument = (argument == undefined) ? 'n' : argument;
+		var parsed = Selectors.Utils.parseNthArgument(argument);
+		if (parsed.special != 'n') return Selectors.Pseudo[parsed.special].call(this, parsed.a, local);
+		var count = 0;
+		local.positions = local.positions || {};
+		var uid = $uid(this);
+		if (!local.positions[uid]){
+			var self = this;
+			while ((self = self.previousSibling)){
+				if (self.nodeType != 1) continue;
+				count ++;
+				var position = local.positions[$uid(self)];
+				if (position != undefined){
+					count = position + count;
+					break;
+				}
+			}
+			local.positions[uid] = count;
+		}
+		return (local.positions[uid] % parsed.a == parsed.b);
+	},
+
+	// custom pseudo selectors
+
+	index: function(index){
+		var element = this, count = 0;
+		while ((element = element.previousSibling)){
+			if (element.nodeType == 1 && ++count > index) return false;
+		}
+		return (count == index);
+	},
+
+	even: function(argument, local){
+		return Selectors.Pseudo['nth-child'].call(this, '2n+1', local);
+	},
+
+	odd: function(argument, local){
+		return Selectors.Pseudo['nth-child'].call(this, '2n', local);
+	},
+	
+	selected: function(){
+		return this.selected;
+	},
+	
+	enabled: function(){
+		return (this.disabled === false);
+	}
+
+});
+
+
+/*
+---
+
+name: Swiff
+
+description: Wrapper for embedding SWF movies. Supports External Interface Communication.
+
+license: MIT-style license.
+
+credits: Flash detection & Internet Explorer + Flash Player 9 fix inspired by SWFObject.
+
+requires: [Options, $util]
+
+provides: Swiff
+
+...
+*/
+
+var Swiff = new Class({
+
+	Implements: [Options],
+
+	options: {
+		id: null,
+		height: 1,
+		width: 1,
+		container: null,
+		properties: {},
+		params: {
+			quality: 'high',
+			allowScriptAccess: 'always',
+			wMode: 'transparent',
+			swLiveConnect: true
+		},
+		callBacks: {},
+		vars: {}
+	},
+
+	toElement: function(){
+		return this.object;
+	},
+
+	initialize: function(path, options){
+		this.instance = 'Swiff_' + $time();
+
+		this.setOptions(options);
+		options = this.options;
+		var id = this.id = options.id || this.instance;
+		var container = document.id(options.container);
+
+		Swiff.CallBacks[this.instance] = {};
+
+		var params = options.params, vars = options.vars, callBacks = options.callBacks;
+		var properties = $extend({height: options.height, width: options.width}, options.properties);
+
+		var self = this;
+
+		for (var callBack in callBacks){
+			Swiff.CallBacks[this.instance][callBack] = (function(option){
+				return function(){
+					return option.apply(self.object, arguments);
+				};
+			})(callBacks[callBack]);
+			vars[callBack] = 'Swiff.CallBacks.' + this.instance + '.' + callBack;
+		}
+
+		params.flashVars = Hash.toQueryString(vars);
+		if (Browser.Engine.trident){
+			properties.classid = 'clsid:D27CDB6E-AE6D-11cf-96B8-444553540000';
+			params.movie = path;
+		} else {
+			properties.type = 'application/x-shockwave-flash';
+			properties.data = path;
+		}
+		var build = '<object id="' + id + '"';
+		for (var property in properties) build += ' ' + property + '="' + properties[property] + '"';
+		build += '>';
+		for (var param in params){
+			if (params[param]) build += '<param name="' + param + '" value="' + params[param] + '" />';
+		}
+		build += '</object>';
+		this.object = ((container) ? container.empty() : new Element('div')).set('html', build).firstChild;
+	},
+
+	replaces: function(element){
+		element = document.id(element, true);
+		element.parentNode.replaceChild(this.toElement(), element);
+		return this;
+	},
+
+	inject: function(element){
+		document.id(element, true).appendChild(this.toElement());
+		return this;
+	},
+
+	remote: function(){
+		return Swiff.remote.apply(Swiff, [this.toElement()].extend(arguments));
+	}
+
+});
+
+Swiff.CallBacks = {};
+
+Swiff.remote = function(obj, fn){
+	var rs = obj.CallFunction('<invoke name="' + fn + '" returntype="javascript">' + __flash__argumentsToXML(arguments, 2) + '</invoke>');
+	return eval(rs);
+};
+
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/info.jsp
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/info.jsp	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/info.jsp	(revision 47450)
@@ -0,0 +1,25 @@
+<%@ page contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<%@ taglib prefix="s" uri="/struts-tags"%>
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<link href="jsps/style.css" rel="stylesheet" type="text/css" media="screen" />
+<link href="jsps/favicon.ico" rel="shortcut icon" type="image/x-icon" />
+<title><s:text name="info.title"/></title>
+</head>
+<body>
+<div id="wrapper">
+	<jsp:include page="menu.jsp"/>
+	<div id="page">
+	<div id="page-bgtop">
+		<div id="content">
+			<s:actionerror escape="false"/> 
+			<s:actionmessage escape="false"/> 
+		</div>
+		<div style="clear: both;">&nbsp;</div>
+	</div>
+	</div>
+</div>
+</body>
+</html>
\ No newline at end of file
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/table-images/pattern.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/table-images/pattern.png
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/table-images/pattern.png	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/table-images/pattern.png	(revision 47450)

Property changes on: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/table-images/pattern.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/table-images/botleft.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/table-images/botleft.png
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/table-images/botleft.png	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/table-images/botleft.png	(revision 47450)

Property changes on: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/table-images/botleft.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/table-images/gradhover.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/table-images/gradhover.png
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/table-images/gradhover.png	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/table-images/gradhover.png	(revision 47450)

Property changes on: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/table-images/gradhover.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/table-images/blurry.jpg
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/table-images/blurry.jpg
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/table-images/blurry.jpg	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/table-images/blurry.jpg	(revision 47450)

Property changes on: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/table-images/blurry.jpg
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/manuals/example_record.txt
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/manuals/example_record.txt	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/manuals/example_record.txt	(revision 47450)
@@ -0,0 +1,25 @@
+<header>
+	<identifier>oai:openaire.cern.ch:1</identifier>
+	<datestamp>2011-01-18T14:26:14Z</datestamp>
+	<setSpec>EC_fundedresources</setSpec>
+</header>
+<metadata>
+	<oai_dc:dc xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:oai_dc="http://www.openarchives.org/OAI/2.0/oai_dc/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.openarchives.org/OAI/2.0/oai_dc/ http://www.openarchives.org/OAI/2.0/oai_dc.xsd">
+		<dc:language>eng</dc:language>
+		<dc:creator>Berchum, Marnix</dc:creator>
+		<dc:creator>Rodrigues, Eloy</dc:creator>
+		<dc:contributor>Brown, John</dc:contributor>
+		<dc:title>OpenAIRE Guidelines</dc:title>
+		<dc:date>2010-09-01</dc:date>
+		<dc:identifier>http://openaire.cern.ch/record/1</dc:identifier>
+		<dc:description>
+			The OpenAIRE Guidelines will provide orientation for repository managers to define and implement their local data management policies in compliance with the Open Access demands of the European Commission. Furthermore they will comply with the technical requirements of the OpenAIRE infrastructure that is being established to support and monitor the implementation of the FP7 OA pilot. By implementing these Guidelines repository managers are facilitating the authors who deposit their publications in the repository, in complying with the EC Open Access requirements. For developers of repository platforms the Guidelines provide guidance to add supportive functionalities for authors of EC funded research in future versions.
+		</dc:description>
+		<dc:relation>info:eu-repo/grantAgreement/EC/FP7/246686</dc:relation>
+		<dc:rights>info:eu-repo/semantics/openAccess</dc:rights>
+		<dc:audience>Librarians</dc:audience>
+		<dc:type>info:eu-repo/semantics/article</dc:type>
+		<dc:format>application/pdf</dc:format>
+		<dc:source>ISSN:0165-0505</dc:source>
+	</oai_dc:dc>
+</metadata>
\ No newline at end of file
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/WEB-INF/applicationContext.xml
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/WEB-INF/applicationContext.xml	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/WEB-INF/applicationContext.xml	(revision 47450)
@@ -0,0 +1,44 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<beans xmlns="http://www.springframework.org/schema/beans"
+	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p"
+	xmlns:context="http://www.springframework.org/schema/context"
+
+	xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.0.xsd
+	http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.0.xsd">
+
+
+	
+<!-- 	<import resource="classpath*:/eu/dnetlib/validator/admin/**/springContext-*.xml" /> -->
+<!-- 	<import resource="classpath*:/eu/dnetlib/validator/commons/**/springContext-*.xml" /> -->
+
+	<context:annotation-config />
+
+<bean class="eu.dnetlib.validator.web.config.CascadingPropertyLoader"
+		id="propertyLoader">
+		<property name="order" value="2" />
+		<property name="properties">
+			<bean class="eu.dnetlib.conf.WebappContextProperyFactory">
+				<property name="propertyFetcher">
+					<bean class="eu.dnetlib.conf.PropertyFetcher" />
+				</property>
+			</bean>
+		</property>
+		<property name="ignoreUnresolvablePlaceholders" value="true" />
+		<property name="locations">			<list>
+				<value>classpath*:/gr/**/springContext-*.properties</value>
+				<value>classpath*:/eu/**/springContext-*.properties</value>
+
+				<value>classpath*:dnet-site-wizard.properties</value>
+				<value>classpath*:dnet-site-override.properties</value>
+				<value>classpath*:dnet-wizard.properties</value>
+				<value>classpath*:dnet-override.properties</value>
+				<value>classpath*:dnet-validator-wizard.properties</value>
+				<value>classpath*:dnet-validator-override.properties</value>
+				<value>classpath*:dnet-site-force-override.properties</value>
+				<value>classpath*:dnet-force-override.properties</value>
+			</list>
+		</property>
+	</bean>
+
+</beans>
\ No newline at end of file
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/java/eu/dnetlib/validator/admin/api/impls/EmailBuilder.java
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/java/eu/dnetlib/validator/admin/api/impls/EmailBuilder.java	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/java/eu/dnetlib/validator/admin/api/impls/EmailBuilder.java	(revision 47450)
@@ -0,0 +1,82 @@
+package eu.dnetlib.validator.admin.api.impls;
+
+import java.io.StringWriter;
+import java.util.List;
+import java.util.Map;
+
+import javax.xml.transform.TransformerConfigurationException;
+import javax.xml.transform.TransformerException;
+import javax.xml.transform.TransformerFactoryConfigurationError;
+
+import org.apache.log4j.Logger;
+import org.apache.velocity.Template;
+import org.apache.velocity.VelocityContext;
+import org.apache.velocity.app.VelocityEngine;
+import org.apache.velocity.exception.ParseErrorException;
+import org.apache.velocity.exception.ResourceNotFoundException;
+import org.apache.velocity.runtime.RuntimeConstants;
+import org.apache.velocity.runtime.resource.loader.ClasspathResourceLoader;
+
+public class EmailBuilder {
+
+	private static Logger logger = Logger.getLogger(EmailBuilder.class);
+	
+	private VelocityEngine ve = null;
+	
+	public void init() throws Exception {
+		this.ve = new VelocityEngine();
+		this.ve.setProperty(RuntimeConstants.RESOURCE_LOADER, "classpath");
+		this.ve.setProperty("classpath.resource.loader.class", ClasspathResourceLoader.class.getName());
+		this.ve.setProperty("runtime.log.logsystem.class", "org.apache.velocity.runtime.log.NullLogSystem");
+		this.ve.init();	
+	}
+	
+	public String buildXml(List<Map<String, String>> passedJobsList, List<Map<String, String>> failedJobsList, String month, boolean oldFormat) {
+		logger.debug("Building the registrations report Email");
+		String finalEmail = null;
+		
+		try {
+        
+			VelocityContext context = new VelocityContext();
+
+			context.put("passedJobs", passedJobsList);
+			context.put("failedJobs", failedJobsList);
+			context.put("month", month);
+			if (passedJobsList.isEmpty())
+				context.put("nonePassed", "There are no successful registration attempts.");
+			else
+				context.put("nonePassed", " ");
+			if (failedJobsList.isEmpty())
+				context.put("noneFailed", "There are no failed registration attempts.");
+			else
+				context.put("noneFailed", " ");
+			
+			Template t;
+			
+			if (oldFormat)
+				t = this.ve.getTemplate("/eu/dnetlib/validator/admin/api/emailTeplateOld.vm");
+			else
+				t = this.ve.getTemplate("/eu/dnetlib/validator/admin/api/emailTeplate.vm");
+			
+			StringWriter writer = new StringWriter();
+			
+			t.merge(context, writer);
+			finalEmail = writer.toString();
+			
+		} catch (TransformerConfigurationException e) {
+			logger.error("Error while building XML file", e);
+		} catch (TransformerFactoryConfigurationError e) {
+			logger.error("Error while building XML file", e);
+		} catch (TransformerException e) {
+			logger.error("Error while building XML file", e);
+		} catch (ResourceNotFoundException e) {
+			logger.error("Error while building XML file", e);
+		} catch (ParseErrorException e) {
+			logger.error("Error while building XML file", e);
+		} catch (Exception e) {
+			logger.error("Error while building XML file", e);
+		}
+		
+        return finalEmail;
+	}
+}
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/java/eu/dnetlib/validator/admin/api/UserApi.java
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/java/eu/dnetlib/validator/admin/api/UserApi.java	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/java/eu/dnetlib/validator/admin/api/UserApi.java	(revision 47450)
@@ -0,0 +1,32 @@
+package eu.dnetlib.validator.admin.api;
+
+import eu.dnetlib.domain.functionality.UserProfile;
+
+public interface UserApi {
+
+	public boolean activateUser(String activationId) throws Exception;
+
+	public boolean isUserActivated(String email) throws Exception;
+
+	public boolean userExists(String email) throws Exception;
+
+	public boolean usernameExists(String username) throws Exception;
+
+	public boolean correctCreds(String email, String password) throws Exception;
+
+	public String prepareResetPassword(String email) throws Exception;
+
+	public void resetPassword(String uuid, String password) throws Exception;
+
+	public boolean isAdmin(String email) throws Exception;
+
+	public void editUser(UserProfile user)
+			throws Exception;
+
+	public String addUser(String username, String email, String password,
+			String firstName, String lastName, String institution) throws Exception;
+
+	public String getEmailFromUsername(String username) throws Exception;
+
+	public UserProfile getUser(String userIdentifier) throws Exception;
+}
\ No newline at end of file
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/java/eu/dnetlib/validator/admin/actions/login/Login.java
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/java/eu/dnetlib/validator/admin/actions/login/Login.java	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/java/eu/dnetlib/validator/admin/actions/login/Login.java	(revision 47450)
@@ -0,0 +1,156 @@
+package eu.dnetlib.validator.admin.actions.login;
+
+import java.util.Map;
+import java.util.regex.Pattern;
+
+import javax.servlet.http.HttpServletResponse;
+
+import org.apache.log4j.Logger;
+import org.apache.struts2.interceptor.ServletResponseAware;
+import org.apache.struts2.interceptor.SessionAware;
+
+import com.opensymphony.xwork2.Action;
+
+import eu.dnetlib.validator.admin.actions.BaseValidatorAction;
+import eu.dnetlib.validator.admin.config.Constants;
+
+public class Login extends BaseValidatorAction implements SessionAware, ServletResponseAware {
+
+	private static final long serialVersionUID = -6021271413570776229L;
+	private String email_username, password_login;
+	private boolean rememberme;
+	private Map<String, Object> session;
+	private HttpServletResponse response;
+
+	private String url;
+	private String params;
+
+	private transient Logger logger = Logger.getLogger(Login.class);
+
+	public String execute() {
+		this.clearErrorsAndMessages();
+		try {
+			if(this.email_username == null || this.email_username.trim().equals(""))
+				return "login";	
+			logger.debug("logging-in user " + this.getEmail());
+			session.put(Constants.loggedInField, this.getEmail());
+			session.put("email", this.getEmail());
+			if (this.getUserAPI().isAdmin(email_username) || this.getValidatorAdminAPI().userIsMasterAdmin(email_username))
+				session.put("isAdmin", "true");
+			if (this.getValidatorAdminAPI().userIsMasterAdmin(email_username))
+				session.put("isAdmin", "true");
+			if (this.getValidatorAdminAPI().userIsSecondaryAdmin(email_username))
+				session.put("isAdmin", "true");
+			this.addActionMessage("Logged-in successfully");
+
+			if (url != null && (url.equals("/go2login") || url.equals("/Login") || url.equals("/portalLogin"))) {
+				url = "";
+				return "welcome";
+			}
+
+			return Action.SUCCESS;
+		} catch (Exception e) {
+			logger.error("error logging-in user " + this.getEmail(), e);
+			this.addActionError(this.getText("generic.error"));
+			reportException(e);
+			return "exception";
+		}
+	}
+
+	public void validate() {
+		this.clearErrors();
+		try {
+			if(this.email_username == null || this.email_username.trim().equals(""))
+				return;
+			
+			
+			String username = this.email_username;
+
+			Pattern rfc2822 = Pattern.compile("^[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?$");
+			if (!rfc2822.matcher(this.getEmail().trim().toLowerCase()).matches()) {
+				logger.debug("user logged in using username");
+				this.email_username = this.getUserAPI().getEmailFromUsername(this.getEmail());
+			}
+
+			if (this.email_username == null) {
+				this.email_username = username;
+				this.addActionError(this.getText("login.userNotExists"));
+				return;
+			}
+
+			if (!this.getUserAPI().userExists(this.getEmail())) {
+				this.email_username = username;
+				this.addActionError(this.getText("login.userNotExists"));
+				return;
+			}
+			if (!this.getUserAPI().isUserActivated(this.getEmail())) {
+				this.email_username = username;
+				this.addActionError(this.getText("login.notActivated"));
+				return;
+			}
+			if (!this.getUserAPI().correctCreds(this.getEmail(), this.getPassword_login())) {
+				this.email_username = username;
+				this.addActionError(this.getText("login.incorrectCreds"));
+				return;
+			}
+		} catch (Exception e) {
+			logger.error("", e);
+			this.addActionError(e.toString());
+			reportException(e);
+		}
+	}
+
+
+	public String getEmail() {
+		return email_username;
+	}
+
+	public void setEmail_username(String email_username) {
+		this.email_username = email_username;
+	}
+
+	public String getPassword_login() {
+		return password_login;
+	}
+
+	public void setPassword_login(String password_login) {
+		this.password_login = password_login;
+	}
+
+	@Override
+	public void setSession(Map<String, Object> session) {
+		this.session = session;
+	}
+
+	public void setRememberme(boolean rememberme) {
+		this.rememberme = rememberme;
+	}
+
+	public boolean isRememberme() {
+		return rememberme;
+	}
+
+	public void setServletResponse(HttpServletResponse response) {
+		this.response = response;
+	}
+
+	public HttpServletResponse getServletResponse() {
+		return response;
+	}
+
+	public String getUrl() {
+		return url;
+	}
+
+	public void setUrl(String url) {
+		this.url = url;
+	}
+
+	public String getParams() {
+		return params;
+	}
+
+	public void setParams(String params) {
+		this.params = params;
+	}
+}
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/deploy.info
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/deploy.info	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/deploy.info	(revision 47450)
@@ -0,0 +1,10 @@
+{
+  "type_source": "SVN", 
+  "goal": "package -U -T 4C source:jar", 
+  "url": "http://svn-public.driver.research-infrastructures.eu/driver/dnet40/modules/uoa-validator-admin/trunk", 
+  "deploy_repository": "dnet4-snapshots", 
+  "version": "4", 
+  "mail": "nikonas@di.uoa.gr, antleb@di.uoa.gr, kiatrop@di.uoa.gr", 
+  "deploy_repository_url": "http://maven.research-infrastructures.eu/nexus/content/repositories/dnet4-snapshots", 
+  "name": "uoa-validator-admin"
+}
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/resources/validation.properties
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/resources/validation.properties	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/resources/validation.properties	(revision 47450)
@@ -0,0 +1,29 @@
+# The ESAPI validator does many security checks on input, such as canonicalization
+# and whitelist validation. Note that all of these validation rules are applied *after*
+# canonicalization. Double-encoded characters (even with different encodings involved,
+# are never allowed.
+#
+# To use:
+#
+# First set up a pattern below. You can choose any name you want, prefixed by the word
+# "Validation." For example:
+#   Validation.Email=^[A-Za-z0-9._%-]+@[A-Za-z0-9.-]+\\.[a-zA-Z]{2,4}$
+# 
+# Then you can validate in your code against the pattern like this:
+#     ESAPI.validator().isValidInput("User Email", input, "Email", maxLength, allowNull);
+# Where maxLength and allowNull are set for you needs, respectively.
+#
+# But note, when you use boolean variants of validation functions, you lose critical 
+# canonicalization. It is preferable to use the "get" methods (which throw exceptions) and 
+# and use the returned user input which is in canonical form. Consider the following:
+#  
+# try {
+#    someObject.setEmail(ESAPI.validator().getValidInput("User Email", input, "Email", maxLength, allowNull));
+#
+Validator.SafeString=^[.\\p{Alnum}\\p{Space}]{0,1024}$
+Validator.Email=^[A-Za-z0-9._%-]+@[A-Za-z0-9.-]+\\.[a-zA-Z]{2,4}$
+Validator.IPAddress=^(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$
+Validator.URL=^(ht|f)tp(s?)\\:\\/\\/[0-9a-zA-Z]([-.\\w]*[0-9a-zA-Z])*(:(0-9)*)*(\\/?)([a-zA-Z0-9\\-\\.\\?\\,\\:\\'\\/\\\\\\+=&amp;%\\$#_]*)?$
+Validator.CreditCard=^(\\d{4}[- ]?){3}\\d{4}$
+Validator.SSN=^(?!000)([0-6]\\d{2}|7([0-6]\\d|7[012]))([ -]?)(?!00)\\d\\d\\3(?!0000)\\d{4}$
+
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/WEB-INF/web.xml
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/WEB-INF/web.xml	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/WEB-INF/web.xml	(revision 47450)
@@ -0,0 +1,78 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+	xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
+	xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
+	id="WebApp_ID" version="2.5">
+	<display-name>Validator Administration Panel</display-name>
+
+	<context-param>
+		<param-name>log4jConfigLocation</param-name>
+		<param-value>/WEB-INF/log4j.properties
+		</param-value>
+	</context-param>
+	<context-param>
+		<param-name>log4jRefreshInterval</param-name>
+		<param-value>1000</param-value>
+	</context-param>
+	<context-param>
+		<param-name>log4jExposeWebAppRoot</param-name>
+		<param-value>false</param-value>
+	</context-param>
+	<listener>
+		<listener-class>org.springframework.web.util.Log4jConfigListener</listener-class>
+	</listener>
+	<listener>
+		<listener-class>eu.dnetlib.validator.admin.config.ValidatorAdminContextLoaderListener</listener-class>
+	</listener>
+	<filter>
+	  <filter-name>struts2</filter-name>
+	  <filter-class>
+	    org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter
+	  </filter-class>
+	</filter>
+  
+	<filter-mapping>
+		<filter-name>struts2</filter-name>
+		<url-pattern>/*</url-pattern>
+	</filter-mapping>
+
+	<filter>
+	  <filter-name>CharacterEncodingFilter</filter-name>
+	  <filter-class>
+	    org.apache.catalina.filters.SetCharacterEncodingFilter
+	  </filter-class>
+	  <init-param>
+	    <param-name>encoding</param-name>
+	    <param-value>UTF-8</param-value>
+	  </init-param>
+	  <init-param>
+	    <param-name>ignore</param-name>
+	    <param-value>true</param-value>
+	  </init-param>
+	  
+	</filter>
+		<filter-mapping>
+	  <filter-name>CharacterEncodingFilter</filter-name>
+	  <url-pattern>/*</url-pattern>
+	</filter-mapping>
+	
+	<filter>
+	  <filter-name>AddDefaultCharsetFilter</filter-name>
+	  <filter-class>
+	    org.apache.catalina.filters.AddDefaultCharsetFilter
+	  </filter-class>
+	  <init-param>
+	    <param-name>encoding</param-name>
+	    <param-value>system</param-value>
+	  </init-param>
+	</filter>
+
+	<filter-mapping>
+	  <filter-name>AddDefaultCharsetFilter</filter-name>
+	  <url-pattern>/*</url-pattern>
+	</filter-mapping>
+	
+	<welcome-file-list>
+		<welcome-file>jsps/index.jsp</welcome-file>
+	</welcome-file-list>
+</web-app>
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/WEB-INF/log4j.properties
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/WEB-INF/log4j.properties	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/WEB-INF/log4j.properties	(revision 47450)
@@ -0,0 +1,36 @@
+log4j.rootLogger = WARN, R
+
+log4j.logger.eu.dnetlib = INFO
+log4j.logger.org.springframework = INFO, S
+log4j.additivity.org.springframework = false
+
+log4j.logger.com.opensymphony.xwork2.ognl.OgnlValueStack = FATAL
+log4j.logger.com.opensymphony.xwork2.ObjectFactory = FATAL
+
+log4j.appender.R=org.apache.log4j.RollingFileAppender
+log4j.appender.R.File=/var/log/dnet/validator/validator-admin.log
+log4j.appender.R.MaxFileSize=10MB
+log4j.appender.R.MaxBackupIndex=10
+log4j.appender.R.layout=org.apache.log4j.PatternLayout
+log4j.appender.R.layout.ConversionPattern= %d %p %t [%c] - %m%n
+
+log4j.appender.S=org.apache.log4j.RollingFileAppender
+log4j.appender.S.File=/var/log/dnet/validator/validator-admin-spring.log
+log4j.appender.S.MaxFileSize=10MB
+log4j.appender.S.MaxBackupIndex=10
+log4j.appender.S.layout=org.apache.log4j.PatternLayout
+log4j.appender.S.layout.ConversionPattern= %d %p %t [%c] - %m%n
+
+#log4j.rootLogger = ERROR, stdout
+#
+#log4j.logger.gr.uoa = INFO, stdout
+#log4j.logger.org.springframework = INFO, stdout
+#log4j.additivity.org.springframework = false
+#
+#log4j.logger.com.opensymphony.xwork2.ognl.OgnlValueStack = FATAL, stdout
+#log4j.logger.com.opensymphony.xwork2.ObjectFactory = FATAL, stdout
+#
+#log4j.appender.stdout=org.apache.log4j.ConsoleAppender
+#log4j.appender.stdout.Target=System.out
+#log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
+#log4j.appender.stdout.layout.ConversionPattern=%d %p %t [%c] - %m%n
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/chooseRuleForEdit.jsp
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/chooseRuleForEdit.jsp	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/chooseRuleForEdit.jsp	(revision 47450)
@@ -0,0 +1,55 @@
+<%@ page contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<%@ taglib prefix="s" uri="/struts-tags"%>
+<html>
+<head>
+<link href="jsps/favicon.ico" rel="shortcut icon" type="image/x-icon" />
+<link href="jsps/style.css" rel="stylesheet" type="text/css" media="screen" />
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title><s:text name="chooseRuleForEdit.title"/></title>
+</head>
+<body class="left">
+<div id="wrapper">
+	<jsp:include page="menu.jsp"/>
+	<div id="page">
+	<div id="page-bgtop">
+	<div id="middle">
+            <div class="middle-b">
+                <div class="background">
+			 <div id="left">
+                              <div id="left_container" >
+                                   <h2 class="helpHdr">Info</h2>
+                                   <s:text name="help.admin"/>
+                              </div>
+                         </div>
+                        <div id="main">
+                        <div id="main_container" class="clearfix">
+			<div id="content">
+				<h2 class="title"><s:text name="chooseRuleForEdit.title"/></h2>
+                               <div class="entry">
+					<s:form action="prepareEditRule">
+                                                <s:if test="%{#session.isAdmin != null && #session.isAdmin.equals(\"true\")}">
+                                                        <s:select name="ruleId" list="rules" listValue="name" listKey="id"  key="chooseRuleForEdit.label"/>
+                                                		<s:hidden name="funct" value="edit"/>
+                                                </s:if>
+                                                <s:else>
+                                                        <s:select name="ruleId" list="rules" listValue="name" listKey="id"  key="chooseRuleForEdit.label2"/>
+                                                </s:else>
+                                                <s:submit cssClass="button-default"/>
+                                        </s:form>
+                                </div>
+			</div>
+			</div>
+			</div>
+		</div>
+	</div>
+	</div>
+	</div>
+
+    <div id="footer">
+                <jsp:include page="footer.jsp"/>
+        </div>
+</div>
+</div>
+</body>
+</html>
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/chooseRuleCategory.jsp
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/chooseRuleCategory.jsp	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/chooseRuleCategory.jsp	(revision 47450)
@@ -0,0 +1,51 @@
+<%@ page contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<%@ taglib prefix="s" uri="/struts-tags"%>
+<html>
+<head>
+<link href="jsps/favicon.ico" rel="shortcut icon" type="image/x-icon" />
+<link href="jsps/style.css" rel="stylesheet" type="text/css" media="screen" />
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title><s:text name="chooseRuleCategory.title"/></title>
+</head>
+<body class="left">
+<div id="wrapper">
+	<jsp:include page="menu.jsp"/>
+	<div id="page">
+	<div id="page-bgtop">
+	<div id="middle">
+            <div class="middle-b">
+                <div class="background">
+			 <div id="left">
+                              <div id="left_container" >
+                                   <h2 class="helpHdr">Info</h2>
+                                   <s:text name="help.admin"/>
+                              </div>
+                         </div>
+                        <div id="main">
+                        <div id="main_container" class="clearfix">
+			<div id="content">
+				<h2 class="title"><s:text name="chooseRuleCategory.title"/></h2>
+                                <div class="entry">
+                                        <s:form action="prepareAddRule">
+                                                <s:select key="help.chooseRuleCategory.type.title" name="type" list="ruleTypes"/>
+                                                <s:radio name="jobType" list="#{'content':'OAI Content', 'usage':'OAI Usage'}" value="defaultJobType" label="%{getText(\"jobs.job_type.name\")}" title="%{getText(\"jobs.job_type.description\")}" />
+                                                <s:checkbox name="forCris" label="Is the rule for Cris Guidelines?"/>
+                                                <s:submit cssClass="button-default"/>
+                                        </s:form>
+                                </div>
+			</div>
+			</div>
+			</div>
+		</div>
+	</div>
+	</div>
+	</div>
+
+    <div id="footer">
+                <jsp:include page="footer.jsp"/>
+        </div>
+</div>
+</div>
+</body>
+</html>
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/addRule.jsp
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/addRule.jsp	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/addRule.jsp	(revision 47450)
@@ -0,0 +1,96 @@
+<%@ page contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<%@ taglib prefix="s" uri="/struts-tags"%>
+<html>
+<head>
+<link href="jsps/favicon.ico" rel="shortcut icon" type="image/x-icon" />
+<link href="jsps/style.css" rel="stylesheet" type="text/css" media="screen" />
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title><s:text name="addRule.title"/></title>
+</head>
+<body class="left">
+<div id="wrapper">
+	<jsp:include page="menu.jsp"/>
+	<div id="page">
+	<div id="page-bgtop">
+	<div id="middle">
+            <div class="middle-b">
+                <div class="background">
+
+			 <div id="left">
+                              <div id="left_container" >
+                                                <h2 class="helpHdr">Info</h2>
+                                                <s:text name="help.admin"/>
+                              </div>
+                         </div>
+                                <div id="main">
+                        <div id="main_container" class="clearfix">
+		<div id="content">
+				<h2 class="title"><s:text name="addRule.title"/></h2>
+				<p class="meta"><a href='<s:url value="/jsps/help.jsp#addRule"/>' target="_blank"><s:text name="help"/></a></p>
+				<div class="entry">
+					<s:form action="addRule">
+<%-- 						<s:hidden name="type"/> --%>
+						<s:hidden name="jobType"/>
+						<s:hidden name="forCris"/>
+						<s:iterator value="labels" var="label">
+							<s:set name="dscr" value="%{#label+\".description\"}"/>
+							<s:set name="tltp" value="%{#label+\".name\"}"/>
+							<s:if test="%{#label.equals(\"xmlvocabulary_rule.terms\") || #label.equals(\"rules.description\")}">
+								<s:textarea name="inputs" title="%{getText(#dscr)}" label="%{getText(#tltp)}" cols="50" rows="5"/>
+							</s:if>
+							<s:elseif test="%{#label.equals(\"xmlcrisclassvocabulary_rule.terms\") || #label.equals(\"xmlcrisreferentialintegrity_rule.terms\")}">
+								<s:textarea name="inputs" title="%{getText(#dscr)}" label="%{getText(#tltp)}" cols="50" rows="5"/>
+							</s:elseif>
+                            <s:elseif test="%{#label.equals(\"xmlvocabulary_rule.terms_type\")}">
+                                <s:select label="%{getText(#tltp)}" name="inputs" list="#{'whitelist':'whitelist', 'blacklist':'blacklist'}" title="%{getText(#dscr)}"/>
+							</s:elseif>
+							<s:elseif test="%{#label.equals(\"rules.mandatory\")}">
+								<s:select label="%{getText(#tltp)}" name="inputs" list="#{'true':'true', 'false':'false'}" title="%{getText(#dscr)}"/>
+							</s:elseif>
+							<s:elseif test="%{#label.equals(\"rules.cris_entity\")}">
+                                <s:select label="%{getText(#tltp)}" name="inputs" list="entityTypes" value="%{rule.entity_type}" title="%{getText(#dscr)}"/>
+                            </s:elseif>
+<%-- 							<s:elseif test="%{#label.equals(\"rules.provider_information\")}"> --%>
+<%-- 								<s:if test="%{jobType.equals(\"usage\")}"> --%>
+<%-- 									<s:textfield name="inputs" title="%{getText(#dscr)}" label="%{getText(#tltp)}"/> --%>
+<%-- 								</s:if> --%>
+<%-- 							</s:elseif> --%>
+							<s:elseif test="%{#label.matches('.*success')}">
+								<s:select label="%{getText(#tltp)}" name="inputs" list="#{'>0':'>0', 'all':'all', '0':'0', '1':'1'}"  title="%{getText(#dscr)}"/>
+							</s:elseif>
+							<s:elseif test="%{#label.equals(\"chain_rule.type\")}">
+								<s:select label="%{getText(#tltp)}" name="inputs" list="#{'or':'or', 'and':'and', 'horn':'horn'}" title="%{getText(#dscr)}"/>
+							</s:elseif>							
+							<s:elseif test="%{#label.equals(\"chain_rule.rule_1\")}">
+								<s:select name="inputs" list="rules" listValue="ruleName" listKey="ruleId" label="%{getText(#tltp)}" title="%{getText(#dscr)}"/>
+							</s:elseif>							
+							<s:elseif test="%{#label.equals(\"chain_rule.rule_2\")}">
+								<s:select name="inputs" list="rules" listValue="ruleName" listKey="ruleId" label="%{getText(#tltp)}" title="%{getText(#dscr)}"/>
+							</s:elseif>		
+							<s:else>
+								<s:textfield name="inputs" title="%{getText(#dscr)}" label="%{getText(#tltp)}"/>
+							</s:else>
+						</s:iterator>
+<%-- 						<s:if test="%{forCris == true}"> --%>
+<%-- 							<s:select name="entityType" list="entityTypes" label="%{getText(\"jobs.entity_type.name\")}" title="%{getText(\"jobs.entity_type.description\")}" /> --%>
+<%-- 						</s:if> --%>
+<%-- 						<s:textfield name="jobType" value="%{#jobType}" label="%{getText(\"jobs.job_type.name\")}" title="%{getText(\"jobs.job_type.description\")}" readonly='true'/> --%>
+						<s:textfield name="type" label="%{getText(\"rules.type.name\")}" title="%{getText(\"rules.type.description\")}" readonly='true'/>
+						<s:submit value="Insert" cssClass="button-default"/>
+					</s:form>
+				</div>
+			</div>
+		</div>
+	</div>
+	</div>
+	</div>
+	</div>
+	</div>
+    <div id="footer">
+                <jsp:include page="footer.jsp"/>
+        </div>
+        </div>
+        </div>
+</body>
+</html>
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/editUser.jsp
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/editUser.jsp	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/editUser.jsp	(revision 47450)
@@ -0,0 +1,50 @@
+<%@ page contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<%@ taglib prefix="s" uri="/struts-tags"%>
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title><s:text name="editUser.title"/></title>
+<link href="jsps/favicon.ico" rel="shortcut icon" type="image/x-icon" />
+<link href="jsps/style.css" rel="stylesheet" type="text/css" media="screen" />
+</head>
+<body>
+<div id="wrapper">
+	<jsp:include page="menu.jsp"/>
+	<div id="page">
+        <div id="page-bgtop">
+            <div id="middle">
+                    <div class="middle-b">
+                        <div class="background">
+                            <div id="main">
+                                <div id="main_container" class="clearfix">
+                                    <div id="mainmiddle" class="floatbox">
+                                        <h1><s:text name="editUser.title"/></h1>
+                                        
+                                        <%--<p class="meta"><a href='<s:url value="/jsps/help.jsp#addRule"/>' target="_blank"><s:text name="help"/></a></p>--%>
+                                        <div class="entry">
+                                            <s:form action="editUser">
+                                                <div class="field"><s:textfield name="user.username" key="registration.username" readonly="true" requiredLabel="true"/></div>
+                                                <div class="field"><s:textfield name="user.email" key="registration.email" readonly="true" requiredLabel="true"/></div>
+                                            	<div class="field"><s:textfield name="user.firstname" key="registration.firstName" requiredLabel="true"/></div>
+                                                <div class="field"><s:textfield name="user.lastname" key="registration.lastName" requiredLabel="true"/></div>
+                                                <div class="field"><s:textfield name="user.institution" key="registration.institution"/></div>
+                                                <div class="field"><tr><td colspan="2"><hr class="dotted"/></td></tr></div>
+                                                <div class=" field float-left"><s:submit value="Update"/></div>
+                                            </s:form>
+                                        </div>
+                                    </div>
+                                </div>
+                            </div>
+                        </div>
+                    </div>
+                </div>
+        </div>
+        <!-- NMI This needs to be the same in all pages and the text is some properties file -->
+        <div id="footer"> 
+			<jsp:include page="footer.jsp"/>
+		</div>
+	</div>
+	</div>
+</body>
+</html>
\ No newline at end of file
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/java/eu/dnetlib/validator/admin/actions/login/ForgotPasswordPage.java
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/java/eu/dnetlib/validator/admin/actions/login/ForgotPasswordPage.java	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/java/eu/dnetlib/validator/admin/actions/login/ForgotPasswordPage.java	(revision 47450)
@@ -0,0 +1,8 @@
+package eu.dnetlib.validator.admin.actions.login;
+
+import eu.dnetlib.validator.admin.actions.BaseValidatorAction;
+
+@SuppressWarnings("serial")
+public class ForgotPasswordPage extends BaseValidatorAction{
+
+}
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/manuals/user-manual.pdf
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/manuals/user-manual.pdf
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/manuals/user-manual.pdf	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/manuals/user-manual.pdf	(revision 47450)

Property changes on: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/manuals/user-manual.pdf
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/ddmenu.css
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/ddmenu.css	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/jsps/ddmenu.css	(revision 47450)
@@ -0,0 +1,159 @@
+
+/*  Generated by www.menucool.com/drop-down-menu  */
+
+/* main menu
+----------------------------*/
+#ddmenu
+{
+    display:block;
+    font-family: "YanoneKaffeesatzLight";
+    text-align:center;
+    letter-spacing:normal;
+	float: right;
+        position: absolute;
+        bottom: 0;
+        right: 0;
+}
+
+#ddmenu ul
+{ 
+    width:100%;
+    margin:0; /*If above width is not 100% and you want this menu to align in the center of its container, set it as { margin: 0 auto; }*/
+    padding:0;
+    display:inline-block;
+    list-style:none;
+    position:relative;
+    font-size:0;
+    *z-index:999;
+}
+
+#ddmenu li
+{
+    margin:0;
+    padding:0;
+    display:inline-block;
+    position:relative;
+ float: left;
+        font-size: 22px;
+        text-transform: uppercase;
+        line-height:50px
+}
+
+#ddmenu a
+{
+    padding:0 12px;
+    font-weight:normal;
+    text-decoration:none;
+    display:inline-block;
+    outline:0;
+    position:relative;
+    white-space:nowrap;
+	color:#3440B5;
+}
+
+#ddmenu li.over
+{
+    z-index:9999999998;
+}
+
+/* links without sub-menu */
+#ddmenu li.over a
+{
+        color: #2D72D6;
+        background: #D0D0D0;
+}
+
+/* links with sub-menu */
+#ddmenu a.arrow
+{
+}
+#ddmenu li.over a.arrow
+{
+background: #D0D0D0 url(images/menu_dropdown_level1_parent_blue.png) 50% 100% no-repeat;
+    z-index:9999999999;
+    /*text-decoration:underline;*/
+}
+
+#ddmenu div 
+{
+    padding:0;
+    margin:0;
+}              
+        
+/* sub-menu layout
+----------------------------*/
+     
+
+#ddmenu div.drop
+{
+    position:absolute;
+    text-align:left;
+    background:#3440B5;
+    color: #bcbcbc;
+	font-size:18px;
+    padding:20px;
+    line-height:30px;
+}
+  
+#ddmenu div
+{
+    display:none;
+}
+/* sub-menu offset
+----------------------------*/
+
+#ddmenu div.drop
+{
+    left:0px;/*Use this property to change offset of the sub-menu*/
+}
+#ddmenu div.dropToLeft
+{
+    left:auto; right:0px;
+}
+#ddmenu div.dropToLeft2
+{
+    left:auto; right:-120px;
+}
+  
+/* links in sub menu
+----------------------------*/
+
+#ddmenu div.drop a
+{
+    background:#3440B5;
+    color:#bcbcbc;
+    text-decoration:none;    
+    display:block;
+    text-align:left;    
+    position:static;
+    padding:0 0;
+}
+
+#ddmenu div.drop a:hover
+{
+    color:#00B5F0;
+}
+
+/* blocks within the sub-menu
+----------------------------*/
+
+#ddmenu div.drop div
+{
+    background:none;    
+}  
+
+#ddmenu div.column
+{
+    width:auto;
+    float:left; /*align each column in one row*/
+    padding:0 10px; /*padding of each column*/
+}
+
+#ddmenu div.column div
+{
+   padding:0px 10px; /*sub-div within div.column. 10px for indent.*/
+}
+
+/* useful when http://www.menucool.com/ddmenu/one-menu-for-all-pages
+----------------------------*/
+#ddmenuLink {display:none;}
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/META-INF/MANIFEST.MF
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/META-INF/MANIFEST.MF	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/webapp/META-INF/MANIFEST.MF	(revision 47450)
@@ -0,0 +1,3 @@
+Manifest-Version: 1.0
+Class-Path: 
+
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/java/eu/dnetlib/validator/admin/actions/users/Register.java
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/java/eu/dnetlib/validator/admin/actions/users/Register.java	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/java/eu/dnetlib/validator/admin/actions/users/Register.java	(revision 47450)
@@ -0,0 +1,135 @@
+package eu.dnetlib.validator.admin.actions.users;
+
+import java.util.ArrayList;
+import java.util.regex.Pattern;
+
+import org.apache.log4j.Logger;
+
+import com.opensymphony.xwork2.Action;
+
+import eu.dnetlib.validator.admin.actions.BaseValidatorAction;
+
+public class Register extends BaseValidatorAction {
+
+	private static final long serialVersionUID = 4906485913149844710L;
+	private Logger logger = Logger.getLogger(Register.class);
+	
+	private String email, password, repassword;
+	private String username, firstName, lastName, institution;
+
+	public String execute() {
+		this.clearErrorsAndMessages();
+		try {
+			logger.debug("registering user " + email);
+			String activationId = null;
+
+			activationId = this.getUserAPI().addUser(username, email, password, firstName, lastName, institution);
+
+			this.addActionMessage((this.getText("registration.successful")));
+			this.addActionMessage((this.getText("general.unblock") + " " + this.getEmailer().getFrom()));
+
+			ArrayList<String> to = new ArrayList<String>();
+			to.add(this.getEmail());
+
+			this.getEmailer().sendMail(to, this.getText("registration.mail.subject"), this.getText("registration.mail.message") + ": " + this.getValBaseUrl() + "/activateAccount.action?activationId=" + activationId, false, null);
+
+			return Action.SUCCESS;
+		} catch (Exception e) {
+			logger.error("error registering user " + email, e);
+			this.addActionError(this.getText("generic.error"));
+			reportException(e);
+			return "exception";
+		}
+	}
+
+	public void validate() {
+		this.clearErrors();
+		if (this.getEmail() == null || this.getEmail().length() == 0)
+			this.addFieldError("email", this.getText("compulsoryField"));
+		if (this.getPassword() == null || this.getPassword().length() == 0)
+			this.addFieldError("password", this.getText("compulsoryField"));
+		if (this.getRepassword() == null || this.getRepassword().length() == 0)
+			this.addFieldError("repassword", this.getText("compulsoryField"));
+		if (this.getUsername() == null || this.getUsername().length() == 0)
+			this.addFieldError("username", this.getText("compulsoryField"));
+		if (this.getFirstName() == null || this.getFirstName().length() == 0)
+			this.addFieldError("firstName", this.getText("compulsoryField"));
+		if (this.getLastName() == null || this.getLastName().length() == 0)
+			this.addFieldError("lastName", this.getText("compulsoryField"));
+
+		if (!this.getPassword().equals(this.getRepassword()))
+			this.addFieldError("password", this.getText("identicalPasswords"));
+
+		Pattern rfc2822 = Pattern.compile("^[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?$");
+		if (!rfc2822.matcher(this.getEmail().trim().toLowerCase()).matches()) {
+			this.addFieldError("email", this.getText("notValidEmail"));
+		}
+
+		try {
+			if (this.getUserAPI().userExists(this.getEmail()))
+				this.addFieldError("email", this.getText("userAlreadyExists"));
+			if (this.getUserAPI().usernameExists(this.getUsername()))
+				this.addFieldError("username", this.getText("userAlreadyExists"));
+
+		} catch (Exception e) {
+			this.addFieldError("email", this.getText("userAlreadyExists"));
+		}
+	}
+
+	public String getEmail() {
+		return email;
+	}
+
+	public void setEmail(String email) {
+		this.email = email;
+	}
+
+	public String getPassword() {
+		return password;
+	}
+
+	public void setPassword(String password) {
+		this.password = password;
+	}
+
+	public String getRepassword() {
+		return repassword;
+	}
+
+	public void setRepassword(String repassword) {
+		this.repassword = repassword;
+	}
+
+	public String getUsername() {
+		return username;
+	}
+
+	public void setUsername(String username) {
+		this.username = username;
+	}
+
+	public String getFirstName() {
+		return firstName;
+	}
+
+	public void setFirstName(String firstName) {
+		this.firstName = firstName;
+	}
+
+	public String getLastName() {
+		return lastName;
+	}
+
+	public void setLastName(String lastName) {
+		this.lastName = lastName;
+	}
+
+	public String getInstitution() {
+		return institution;
+	}
+
+	public void setInstitution(String institution) {
+		this.institution = institution;
+	}
+	
+}
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/java/eu/dnetlib/validator/admin/api/impls/UserApiLDAP.java
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/java/eu/dnetlib/validator/admin/api/impls/UserApiLDAP.java	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/java/eu/dnetlib/validator/admin/api/impls/UserApiLDAP.java	(revision 47450)
@@ -0,0 +1,438 @@
+package eu.dnetlib.validator.admin.api.impls;
+
+import java.security.GeneralSecurityException;
+import java.security.MessageDigest;
+import java.util.Random;
+import java.util.UUID;
+
+import org.apache.log4j.Logger;
+
+import com.unboundid.ldap.sdk.Attribute;
+import com.unboundid.ldap.sdk.DN;
+import com.unboundid.ldap.sdk.Entry;
+import com.unboundid.ldap.sdk.Filter;
+import com.unboundid.ldap.sdk.LDAPConnection;
+import com.unboundid.ldap.sdk.Modification;
+import com.unboundid.ldap.sdk.ModificationType;
+import com.unboundid.ldap.sdk.SearchRequest;
+import com.unboundid.ldap.sdk.SearchResult;
+import com.unboundid.ldap.sdk.SearchResultEntry;
+import com.unboundid.ldap.sdk.SearchScope;
+import com.unboundid.util.Base64;
+
+import eu.dnetlib.domain.functionality.UserProfile;
+import eu.dnetlib.validator.admin.api.UserApi;
+
+public class UserApiLDAP implements UserApi {
+
+	transient Logger logger = Logger.getLogger(UserApiLDAP.class);
+
+	private int ldapPort = 0;
+	private String ldapAddress;
+	private String ldapUsername;
+	private String ldapPassword;
+	private String ldapUsersDN;
+
+	@Override
+	public boolean activateUser(String activationId) throws Exception {
+		LDAPConnection connection = null;
+		try {
+			logger.debug("activating user with activationId " + activationId);
+			connection = new LDAPConnection(ldapAddress, ldapPort, ldapUsername, ldapPassword);
+			Filter filter = Filter.createEqualityFilter("employeeNumber", activationId);
+			SearchRequest searchRequest = new SearchRequest(ldapUsersDN, SearchScope.SUB, filter, "uid");
+			SearchResult searchResult = connection.search(searchRequest);
+			String dn = null;
+
+			if ( searchResult.getSearchEntries().size() > 0	) {
+			
+				for (SearchResultEntry entry : searchResult.getSearchEntries()) {
+					dn = "uid=" + entry.getAttributeValue("uid") + "," + ldapUsersDN;
+				}
+
+				Modification mod1 = new Modification(ModificationType.REPLACE, "JoomlaBlockUser", "0");
+				Modification mod2 = new Modification(ModificationType.REPLACE, "employeeNumber");
+				connection.modify(dn, mod1, mod2);
+				return true;
+			} else {
+				return false;
+			}
+		} catch (Exception e) {
+			logger.error("", e);
+			throw e;
+		} finally {
+			if (connection != null)
+				connection.close();
+		}
+	}
+
+	@Override
+	public String addUser(String username, String email, String password, String firstName, String lastName, String institution) throws Exception {
+		logger.debug("adding user " + username + " " + email + " to ldap");
+		Attribute cn = new Attribute("cn", username);
+		Attribute displayName = new Attribute("displayName", firstName + " " + lastName);
+		Attribute mail = new Attribute("mail", email);
+		Attribute givenName = new Attribute("givenName", firstName);
+		Attribute joomlaBlockUser = new Attribute("JoomlaBlockUser", "1");
+		Attribute joomlaGroup = new Attribute("JoomlaGroup", "Registered");
+		Attribute objectClass = new Attribute("objectClass", "top", "inetOrgPerson", "JoomlaUser");
+		Attribute userPassword = new Attribute("userPassword", Joomla15PasswordHash.create(password));
+		Attribute sn = new Attribute("sn", lastName);
+		Attribute uid = new Attribute("uid", username);
+		
+			
+		// Attribute joomlaUserParams = new Attribute("JoomlaUserParams", "");
+		String activationId = UUID.randomUUID().toString();
+		Attribute x500UniqueIdentifier = new Attribute("employeeNumber", activationId);
+		LDAPConnection connection = null;
+		try {
+			DN dn = new DN("uid=" + username + "," + ldapUsersDN);
+			Entry entry;
+			if (institution != null) {
+				Attribute o = new Attribute("o", institution);
+				entry = new Entry(dn.toNormalizedString(), cn, displayName, mail, givenName, joomlaBlockUser, joomlaGroup, objectClass, userPassword, sn, uid, x500UniqueIdentifier, o);
+						
+			} else {
+				entry = new Entry(dn.toNormalizedString(), cn, displayName, mail, givenName, joomlaBlockUser, joomlaGroup, objectClass, userPassword, sn, uid/*
+																																								 * ,
+																																								 * joomlaUserParams
+																																								 */, x500UniqueIdentifier);
+			}
+			connection = new LDAPConnection(ldapAddress, ldapPort, ldapUsername, ldapPassword);
+			connection.add(entry);
+
+			return activationId;
+		} catch (Exception e) {
+			logger.error("", e);
+			throw e;
+		} finally {
+			if (connection != null)
+				connection.close();
+		}
+	}
+
+	@Override
+	public boolean correctCreds(String email, String password) throws Exception {
+		LDAPConnection connection = null;
+		try {
+			logger.debug("checking if user " + email + " entered a correct password when logging in");
+			connection = new LDAPConnection(ldapAddress, ldapPort, ldapUsername, ldapPassword);
+			Filter filter = Filter.createEqualityFilter("mail", email);
+			SearchRequest searchRequest = new SearchRequest(ldapUsersDN, SearchScope.SUB, filter, "userPassword");
+			SearchResult searchResult = connection.search(searchRequest);
+			for (SearchResultEntry entry : searchResult.getSearchEntries()) {
+				if (Joomla15PasswordHash.check(password, entry.getAttributeValue("userPassword")))
+					return true;
+			}
+			return false;
+		} catch (Exception e) {
+			logger.error("", e);
+			throw e;
+		} finally {
+			if (connection != null)
+				connection.close();
+		}
+	}
+
+	@Override
+	public void editUser(UserProfile user) throws Exception {
+		LDAPConnection connection = null;
+		try {
+			logger.debug("editing user " + user.getEmail());
+			connection = new LDAPConnection(ldapAddress, ldapPort, ldapUsername, ldapPassword);
+			Filter filter = Filter.createEqualityFilter("mail", user.getEmail());
+			SearchRequest searchRequest = new SearchRequest(ldapUsersDN, SearchScope.SUB, filter, "uid");
+			SearchResult searchResult = connection.search(searchRequest);
+			String dn = null;
+			for (SearchResultEntry entry : searchResult.getSearchEntries()) {
+				dn = "uid=" + entry.getAttributeValue("uid") + "," + ldapUsersDN;
+			}
+			Modification mod1 = new Modification(ModificationType.REPLACE, "displayName", user.getFirstname() + " " + user.getLastname());
+			Modification mod2 = new Modification(ModificationType.REPLACE, "givenName", user.getFirstname());
+			Modification mod3 = new Modification(ModificationType.REPLACE, "sn", user.getLastname());
+			Modification mod4 = new Modification(ModificationType.REPLACE, "o", user.getInstitution());
+			connection.modify(dn, mod1, mod2, mod3, mod4);
+		} catch (Exception e) {
+			logger.error("", e);
+			throw e;
+		} finally {
+			if (connection != null)
+				connection.close();
+		}
+	}
+
+	@Override
+	public UserProfile getUser(String userIdentifier) throws Exception {
+		LDAPConnection connection = null;
+		try {
+			logger.debug("getting user " + userIdentifier + " from ldap");
+			connection = new LDAPConnection(ldapAddress, ldapPort, ldapUsername, ldapPassword);
+			Filter filter = Filter.createEqualityFilter("mail", userIdentifier);
+			SearchRequest searchRequest = new SearchRequest(ldapUsersDN, SearchScope.SUB, filter, "mail", "givenName", "sn", "o", "uid");
+			SearchResult searchResult = connection.search(searchRequest);
+			UserProfile profile = new UserProfile();
+			for (SearchResultEntry entry : searchResult.getSearchEntries()) {
+				profile.setEmail(entry.getAttributeValue("mail"));
+				profile.setFirstname(entry.getAttributeValue("givenName"));
+				profile.setLastname(entry.getAttributeValue("sn"));
+				profile.setInstitution(entry.getAttributeValue("o"));
+				profile.setUsername(entry.getAttributeValue("uid"));
+			}
+			return profile;
+		} catch (Exception e) {
+			logger.error("", e);
+			throw e;
+		} finally {
+			if (connection != null)
+				connection.close();
+		}
+	}
+
+	@Override
+	public boolean isAdmin(String email) throws Exception {
+		LDAPConnection connection = null;
+		try {
+			logger.debug("checking if user " + email + " is an administrator");
+			connection = new LDAPConnection(ldapAddress, ldapPort, ldapUsername, ldapPassword);
+			Filter filter = Filter.createEqualityFilter("mail", email);
+			SearchRequest searchRequest = new SearchRequest(ldapUsersDN, SearchScope.SUB, filter, "JoomlaGroup");
+			SearchResult searchResult = connection.search(searchRequest);
+
+			for (SearchResultEntry entry : searchResult.getSearchEntries()) {
+				for (String role : entry.getAttributeValues("JoomlaGroup"))
+					if (role.equals("validatorAdmin"))
+						return true;
+			}
+			logger.debug(email + " is not administrator");
+			return false;
+		} catch (Exception e) {
+			logger.error("", e);
+			throw e;
+		} finally {
+			if (connection != null)
+				connection.close();
+		}
+	}
+
+	@Override
+	public boolean isUserActivated(String email) throws Exception {
+		LDAPConnection connection = null;
+		try {
+			logger.debug("checking if user " + email + " is activated");
+			connection = new LDAPConnection(ldapAddress, ldapPort, ldapUsername, ldapPassword);
+			Filter filter = Filter.createEqualityFilter("mail", email);
+			SearchRequest searchRequest = new SearchRequest(ldapUsersDN, SearchScope.SUB, filter, "JoomlaBlockUser");
+			SearchResult searchResult = connection.search(searchRequest);
+			for (SearchResultEntry entry : searchResult.getSearchEntries()) {
+				int val = entry.getAttributeValueAsInteger("JoomlaBlockUser");
+				if (val == 0)
+					return true;
+				else
+					return false;
+			}
+		} catch (Exception e) {
+			logger.error("", e);
+			throw e;
+		} finally {
+			if (connection != null)
+				connection.close();
+		}
+		return false;
+	}
+
+	@Override
+	public String prepareResetPassword(String email) throws Exception {
+		LDAPConnection connection = null;
+		try {
+			logger.debug("preparing reset password for user " + email);
+			connection = new LDAPConnection(ldapAddress, ldapPort, ldapUsername, ldapPassword);
+			Filter filter = Filter.createEqualityFilter("mail", email);
+			SearchRequest searchRequest = new SearchRequest(ldapUsersDN, SearchScope.SUB, filter, "uid");
+			SearchResult searchResult = connection.search(searchRequest);
+			String dn = null;
+			for (SearchResultEntry entry : searchResult.getSearchEntries()) {
+				dn = "uid=" + entry.getAttributeValue("uid") + "," + ldapUsersDN;
+			}
+			String uuid = UUID.randomUUID().toString();
+			Modification mod = new Modification(ModificationType.REPLACE, "employeeNumber", uuid);
+			connection.modify(dn, mod);
+			return uuid;
+		} catch (Exception e) {
+			logger.error("", e);
+			throw e;
+		} finally {
+			if (connection != null)
+				connection.close();
+		}
+	}
+
+	@Override
+	public void resetPassword(String uuid, String password) throws Exception {
+		LDAPConnection connection = null;
+		try {
+			connection = new LDAPConnection(ldapAddress, ldapPort, ldapUsername, ldapPassword);
+			Filter filter = Filter.createEqualityFilter("employeeNumber", uuid);
+			SearchRequest searchRequest = new SearchRequest(ldapUsersDN, SearchScope.SUB, filter, "uid");
+			SearchResult searchResult = connection.search(searchRequest);
+			String dn = null;
+			for (SearchResultEntry entry : searchResult.getSearchEntries()) {
+				dn = "uid=" + entry.getAttributeValue("uid") + "," + ldapUsersDN;
+			}
+			Modification mod1 = new Modification(ModificationType.REPLACE, "userPassword", Joomla15PasswordHash.create(password));
+			Modification mod2 = new Modification(ModificationType.REPLACE, "employeeNumber");
+			connection.modify(dn, mod1, mod2);
+		} catch (Exception e) {
+			logger.error("", e);
+			throw e;
+		} finally {
+			if (connection != null)
+				connection.close();
+		}
+	}
+
+	@Override
+	public boolean userExists(String email) throws Exception {
+		LDAPConnection connection = null;
+		try {
+			logger.debug("checking if user " + email + " exists in ldap");
+			connection = new LDAPConnection(ldapAddress, ldapPort, ldapUsername, ldapPassword);
+			Filter filter = Filter.createEqualityFilter("mail", email);
+			SearchRequest searchRequest = new SearchRequest(ldapUsersDN, SearchScope.SUB, filter, "mail");
+
+			SearchResult searchResult = connection.search(searchRequest);
+			if (!searchResult.getSearchEntries().isEmpty())
+				return true;
+
+			return false;
+		} catch (Exception e) {
+			logger.error("", e);
+			throw e;
+		} finally {
+			if (connection != null)
+				connection.close();
+		}
+	}
+
+	@Override
+	public boolean usernameExists(String username) throws Exception {
+		LDAPConnection connection = null;
+		try {
+			logger.debug("checking if user " + username + " exists in ldap");
+			connection = new LDAPConnection(ldapAddress, ldapPort, ldapUsername, ldapPassword);
+			Filter filter = Filter.createEqualityFilter("uid", username);
+			SearchRequest searchRequest = new SearchRequest(ldapUsersDN, SearchScope.SUB, filter, "uid");
+			SearchResult searchResult = connection.search(searchRequest);
+
+			if (!searchResult.getSearchEntries().isEmpty()) {
+				return true;
+			}
+
+			return false;
+		} catch (Exception e) {
+			logger.error("", e);
+			throw e;
+		} finally {
+			if (connection != null)
+				connection.close();
+		}
+	}
+
+	@Override
+	public String getEmailFromUsername(String username) throws Exception {
+		LDAPConnection connection = null;
+		try {
+			logger.debug("getting email for user " + username);
+			connection = new LDAPConnection(ldapAddress, ldapPort, ldapUsername, ldapPassword);
+			Filter filter = Filter.createEqualityFilter("uid", username);
+			SearchRequest searchRequest = new SearchRequest(ldapUsersDN, SearchScope.SUB, filter, "mail");
+			SearchResult searchResult = connection.search(searchRequest);
+			for (SearchResultEntry entry : searchResult.getSearchEntries()) {
+				return entry.getAttributeValue("mail");
+			}
+			return null;
+		} catch (Exception e) {
+			logger.error("", e);
+			throw e;
+		} finally {
+			if (connection != null)
+				connection.close();
+		}
+	}
+
+	public void setLdapPort(int ldapPort) {
+		this.ldapPort = ldapPort;
+	}
+
+	public void setLdapAddress(String ldapAddress) {
+		this.ldapAddress = ldapAddress;
+	}
+
+	public void setLdapUsername(String ldapUsername) {
+		this.ldapUsername = ldapUsername;
+	}
+
+	public void setLdapPassword(String ldapPassword) {
+		this.ldapPassword = ldapPassword;
+	}
+
+	public void setLdapUsersDN(String ldapUsersDN) {
+		this.ldapUsersDN = ldapUsersDN;
+	}
+}
+
+class Joomla15PasswordHash 
+{
+   public static boolean check(String passwd,String dbEntry) {
+      String hashed = "{MD5}"+Base64.encode(pack(Joomla15PasswordHash.md5(passwd)));
+      if(dbEntry.equals(hashed))
+    	  return true;
+      else
+    	  return false;
+   }
+
+   static Random _rnd;
+
+   public static String create(String passwd) {
+	   return "{MD5}"+Base64.encode(pack(Joomla15PasswordHash.md5(passwd)));
+   }
+
+   /** Takes the MD5 hash of a sequence of ASCII or LATIN1 characters,
+    *  and returns it as a 32-character lowercase hex string.
+    *
+    *  Equivalent to MySQL's MD5() function 
+    *  and to perl's Digest::MD5::md5_hex(),
+    *  and to PHP's md5().
+    *
+    *  Does no error-checking of the input,  but only uses the low 8 bits
+    *  from each input character.
+    */
+   public static String md5(String data) {
+      byte[] bdata = new byte[data.length()]; int i; byte[] hash;
+
+      for (i=0;i<data.length();i++) bdata[i]=(byte)(data.charAt(i)&0xff );
+
+      try {
+         MessageDigest md5er = MessageDigest.getInstance("MD5");
+         hash = md5er.digest(bdata);
+      } catch (GeneralSecurityException e) { throw new RuntimeException(e); }
+
+      StringBuffer r = new StringBuffer(32);
+      for (i=0;i<hash.length;i++) {
+         String x = Integer.toHexString(hash[i]&0xff);
+         if (x.length()<2) r.append("0");
+         r.append(x);
+      }
+      return r.toString();      
+   }
+   
+   public static byte[] pack(String md5) {
+	    byte[] bytes = new byte[16];
+	    int j = 0;
+	    for(int i=0; i < 31; i+=2) {
+	    	bytes[j] = (byte) Integer.parseInt(md5.charAt(i)+""+md5.charAt(i+1),16);
+	    	j++;
+	    }
+	    return bytes;
+	}
+}
+
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/java/eu/dnetlib/validator/admin/actions/login/SendPassword.java
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/java/eu/dnetlib/validator/admin/actions/login/SendPassword.java	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/java/eu/dnetlib/validator/admin/actions/login/SendPassword.java	(revision 47450)
@@ -0,0 +1,59 @@
+package eu.dnetlib.validator.admin.actions.login;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.apache.log4j.Logger;
+
+import com.opensymphony.xwork2.Action;
+
+import eu.dnetlib.validator.admin.actions.BaseValidatorAction;
+
+public class SendPassword extends BaseValidatorAction {
+
+	private static final long serialVersionUID = 7540821478579531671L;
+	private Logger logger = Logger.getLogger(SendPassword.class);
+	
+	private String email;
+
+	public String execute() {
+		this.clearErrorsAndMessages();
+		try {
+			logger.debug("sending password to user " + email);
+			List<String> to = new ArrayList<String>();
+			to.add(this.getEmail());
+			String securityCode = this.getUserAPI().prepareResetPassword(this.getEmail());
+			this.getEmailer().sendMail(to, this.getText("forgotPassword.mail.Subject"), this.getText("forgotPassword.mail.Body1") + ": " + this.getValBaseUrl() + "/resetPassword.action?securityCode=" + securityCode + "\n\n" + this.getText("forgotPassword.mail.Body2") + ": " + securityCode, false, null);
+			this.addActionMessage(this.getText("forgotPassword.message"));
+			return Action.SUCCESS;
+		} catch (Exception e) {
+			logger.error("error sending password to user " + email, e);
+			this.addActionError(this.getText("generic.error"));
+			return "exception";
+		}
+	}
+
+	public void validate() {
+		this.clearErrors();
+		try {
+			if (!this.getUserAPI().userExists(this.getEmail())) {
+				this.addActionError(this.getText("login.userNotExists"));
+				return;
+			}
+//			if (!this.getUserAPI().isUserActivated(this.getEmail())) {
+//				this.addActionError(this.getText("login.notActivated"));
+//				return;
+//			}
+		} catch (Exception e) {
+			this.addActionError(e.toString());
+		}
+	}
+
+	public String getEmail() {
+		return email;
+	}
+
+	public void setEmail(String email) {
+		this.email = email;
+	}
+}
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/java/eu/dnetlib/validator/admin/actions/BaseValidatorAction.java
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/java/eu/dnetlib/validator/admin/actions/BaseValidatorAction.java	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/java/eu/dnetlib/validator/admin/actions/BaseValidatorAction.java	(revision 47450)
@@ -0,0 +1,126 @@
+package eu.dnetlib.validator.admin.actions;
+
+import java.io.PrintWriter;
+import java.io.StringWriter;
+import java.io.Writer;
+import java.util.ArrayList;
+import java.util.List;
+
+import org.apache.log4j.Logger;
+
+import com.opensymphony.xwork2.ActionSupport;
+
+import eu.dnetlib.validator.admin.api.UserApi;
+import eu.dnetlib.validator.admin.api.ValidatorAdminAPI;
+import eu.dnetlib.validator.admin.config.Constants;
+import eu.dnetlib.validator.commons.email.Emailer;
+
+public class BaseValidatorAction extends ActionSupport {
+
+	/**
+	 * 
+	 */
+	private static final long serialVersionUID = -622158192564945303L;
+	private UserApi userAPI = null;
+	private ValidatorAdminAPI validatorAdminAPI = null;
+	private Emailer emailer = null;
+
+	public static String loggedInField = "LOGGED_IN_FIELD";
+	
+	private String valBaseUrl = null;
+	private String valAdminEmail = null;
+	private String userMode = null;
+	private String repoMode = null;
+	private String deployEnvironment = null;
+
+	public void reportException(Exception exception) {
+		Writer writer = new StringWriter();
+		PrintWriter printWriter = new PrintWriter(writer);
+		exception.printStackTrace(printWriter);
+		
+		List<String> recipients = new ArrayList<String>();
+		
+		try {
+			recipients.add(this.getValAdminEmail());
+			String message = "An exception has occurred:\n"+writer.toString();
+			String subject = "Automatic Bug Report";
+			this.getEmailer().sendMail(recipients, subject, message, false, null);
+		} catch (Exception e) {
+			Logger logger = Logger.getLogger(BaseValidatorAction.class);
+			logger.error("error sending error report", e);
+		}
+	}
+	
+	public boolean isModeLdap() {
+		return userMode.trim().toLowerCase().equals(Constants.MODE_LDAP);
+	}
+
+	public boolean isModeOpenAIRE() {
+		return repoMode.trim().toLowerCase().equals(Constants.MODE_DNET);
+	}
+
+	public UserApi getUserAPI() {
+		return userAPI;
+	}
+
+	public void setUserAPI(UserApi userAPI) {
+		this.userAPI = userAPI;
+	}
+
+	public ValidatorAdminAPI getValidatorAdminAPI() {
+		return validatorAdminAPI;
+	}
+
+	public void setValidatorAdminAPI(ValidatorAdminAPI validatorAdminAPI) {
+		this.validatorAdminAPI = validatorAdminAPI;
+	}
+
+	public Emailer getEmailer() {
+		return emailer;
+	}
+
+	public void setEmailer(Emailer emailer) {
+		this.emailer = emailer;
+	}
+
+	public String getUserMode() {
+		return userMode;
+	}
+
+	public void setUserMode(String userMode) {
+		this.userMode = userMode;
+	}
+
+	public String getRepoMode() {
+		return repoMode;
+	}
+
+	public void setRepoMode(String repoMode) {
+		this.repoMode = repoMode;
+	}
+
+	public void setValBaseUrl(String valBaseUrl) {
+		this.valBaseUrl = valBaseUrl;
+	}
+
+	public String getValBaseUrl() {
+		return valBaseUrl;
+	}
+
+	public void setValAdminEmail(String valAdminEmail) {
+		this.valAdminEmail = valAdminEmail;
+	}
+
+	public String getValAdminEmail() {
+		return valAdminEmail;
+	}
+
+	public String getDeployEnvironment() {
+		return deployEnvironment;
+	}
+
+	public void setDeployEnvironment(String deployEnvironment) {
+		this.deployEnvironment = deployEnvironment;
+	}
+
+}
\ No newline at end of file
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/java/eu/dnetlib/validator/admin/actions/rulesets/GetRules.java
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/java/eu/dnetlib/validator/admin/actions/rulesets/GetRules.java	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/java/eu/dnetlib/validator/admin/actions/rulesets/GetRules.java	(revision 47450)
@@ -0,0 +1,146 @@
+package eu.dnetlib.validator.admin.actions.rulesets;
+
+import java.util.ArrayList;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Set;
+
+import org.apache.log4j.Logger;
+
+import com.opensymphony.xwork2.Action;
+
+import eu.dnetlib.domain.functionality.validator.Rule;
+import eu.dnetlib.domain.functionality.validator.RuleSet;
+import eu.dnetlib.validator.admin.actions.BaseValidatorAction;
+import eu.dnetlib.validator.admin.constants.TypesAndTableNames;
+
+public class GetRules extends BaseValidatorAction {
+
+	private static final long serialVersionUID = 3336444896590055688L;
+	private int setId = -1;
+	private List<Rule> rulesContent;
+	private List<Rule> rulesUsage;
+	private Set<Integer> ruleIdsContent;
+	private Set<Integer> ruleIdsUsage;
+	private List<String> deployEnvironments;
+	private String funct = null;
+	private RuleSet ruleSet;
+	
+	private static final Logger logger = Logger.getLogger(GetRules.class);
+
+	public String execute() {
+		this.clearErrorsAndMessages();
+		try {
+			logger.debug("getting rules in rule set "+setId);
+			ruleIdsContent = new HashSet<Integer>();
+			ruleIdsUsage = new HashSet<Integer>();
+			rulesContent = new ArrayList<Rule>();
+			rulesUsage = new ArrayList<Rule>();
+			this.splitRules(this.getValidatorAdminAPI().getAllRules(),rulesContent, rulesUsage);
+			this.deployEnvironments = TypesAndTableNames.deployEnvironments;
+			if (setId == -1) {
+				ruleSet = new RuleSet();
+				ruleSet.setId(-1);
+				funct = "create";
+			} else {
+				funct = "edit";
+				ruleSet = this.getValidatorAdminAPI().getRuleSet(setId);
+				ruleIdsContent=ruleSet.getContentRulesIds();
+				ruleIdsUsage=ruleSet.getUsageRulesIds();
+//				visibility = Utilities.convertListToString(set.getVisibility());
+			}
+			return Action.SUCCESS;
+		}
+		catch(Exception e) {
+			logger.error("Error getting rules", e);
+			this.addActionError(this.getText("generic.error"));
+			reportException(e);
+			return "exception";
+		}
+	}
+
+	private void splitRules(List<Rule> totalRules, List<Rule> contentRules, List<Rule> usageRules) {
+		logger.debug("splitting rules..");
+		for (Rule rule : totalRules) {
+			if (rule.getJob_type().equals("content")) {
+				contentRules.add(rule);
+			} else if (rule.getJob_type().equals("usage")) {
+				usageRules.add(rule);
+			}
+		}
+	}
+
+	public String getFunct() {
+		return funct;
+	}
+
+	public void setFunct(String funct) {
+		this.funct = funct;
+	}
+		
+
+	public RuleSet getRuleSet() {
+		return ruleSet;
+	}
+
+	public void setRuleSet(RuleSet ruleSet) {
+		this.ruleSet = ruleSet;
+	}
+
+	public int getSetId() {
+		return setId;
+	}
+
+	public void setSetId(int setId) {
+		this.setId = setId;
+	}
+
+
+	public List<Rule> getRulesContent() {
+		return rulesContent;
+	}
+
+
+	public void setRulesContent(List<Rule> rulesContent) {
+		this.rulesContent = rulesContent;
+	}
+
+
+	public List<Rule> getRulesUsage() {
+		return rulesUsage;
+	}
+
+
+	public void setRulesUsage(List<Rule> rulesUsage) {
+		this.rulesUsage = rulesUsage;
+	}
+
+	public Set<Integer> getRuleIdsContent() {
+		return ruleIdsContent;
+	}
+
+	public void setRuleIdsContent(Set<Integer> ruleIdsContent) {
+		this.ruleIdsContent = ruleIdsContent;
+	}
+
+	public Set<Integer> getRuleIdsUsage() {
+		return ruleIdsUsage;
+	}
+
+	public void setRuleIdsUsage(Set<Integer> ruleIdsUsage) {
+		this.ruleIdsUsage = ruleIdsUsage;
+	}
+
+	public List<String> getDeployEnvironments() {
+		return deployEnvironments;
+	}
+
+	public void setDeployEnvironments(List<String> deployEnvironments) {
+		this.deployEnvironments = deployEnvironments;
+	}
+
+
+}
+
+	
+
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/java/eu/dnetlib/validator/admin/actions/login/PortalLogin.java
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/java/eu/dnetlib/validator/admin/actions/login/PortalLogin.java	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/java/eu/dnetlib/validator/admin/actions/login/PortalLogin.java	(revision 47450)
@@ -0,0 +1,207 @@
+package eu.dnetlib.validator.admin.actions.login;
+
+import java.util.Calendar;
+import java.util.Map;
+
+import javax.crypto.Mac;
+import javax.crypto.spec.SecretKeySpec;
+import javax.servlet.http.HttpServletRequest;
+
+import org.apache.commons.codec.binary.Base64;
+import org.apache.commons.codec.binary.Hex;
+import org.apache.log4j.Logger;
+import org.apache.struts2.interceptor.ServletRequestAware;
+import org.apache.struts2.interceptor.SessionAware;
+
+import com.opensymphony.xwork2.Action;
+
+import eu.dnetlib.validator.admin.actions.BaseValidatorAction;
+import eu.dnetlib.validator.admin.config.Constants;
+
+public class PortalLogin extends BaseValidatorAction implements ServletRequestAware, SessionAware {
+
+	private static final long serialVersionUID = -6312800103845446815L;
+	private transient Logger logger = Logger.getLogger(PortalLogin.class);
+
+	private HttpServletRequest request;
+	private Map<String, Object> session;
+
+	private String user, ip, valid, signature;
+	private String key;
+	private String email;
+
+	public void validate() {
+		this.clearErrors();
+		logger.debug("validating log-in from portal link " + user + ", " + ip + ", " + valid + ", " + signature);
+		if (user == null || ip == null || valid == null) {
+			this.addActionError(this.getText("login.manual"));
+			return;
+		}
+		if (user.trim().equals("") || ip.trim().equals("") || valid.trim().equals("")) {
+			this.addActionError(this.getText("login.manual"));
+			return;
+		}
+		long millisUntil = 0;
+		try {
+			millisUntil = Long.parseLong(valid);
+		} catch (Exception e) {
+			logger.error("", e);
+			this.addActionError(this.getText("login.manual"));
+			return;
+		}
+
+		try {
+			if (!signatureIsValid((user + ip + valid).trim(), signature.trim())) {
+				logger.debug("signature was not valid");
+				this.addActionError(this.getText("login.manual"));
+				return;
+			}
+		} catch (Exception e) {
+			logger.error("", e);
+			this.addActionError(this.getText("login.manual"));
+			return;
+		}
+
+		Calendar cal = Calendar.getInstance();
+		if (cal.getTime().getTime() > millisUntil) {
+			logger.debug("link has expired current-time: "+cal.getTime().getTime()+" link-time: "+millisUntil);
+			this.addActionError(this.getText("login.manual"));
+			return;
+		}
+
+		if (!ip.trim().equals(request.getRemoteAddr().trim())) {
+			logger.debug("ips are different "+ip+" "+request.getRemoteAddr());
+			this.addActionError(this.getText("login.manual"));
+			return;
+		}
+
+		try {
+//			if (isModeLdap())
+				this.email = this.getUserAPI().getEmailFromUsername(user);
+
+			if (this.email == null) {
+				this.email = "";
+				this.addActionError(this.getText("login.userNotExists"));
+				return;
+			}
+
+			if (!this.getUserAPI().userExists(this.getEmail())) {
+				this.email = "";
+				this.addActionError(this.getText("login.userNotExists"));
+				return;
+			}
+
+			if (!this.getUserAPI().isUserActivated(this.getEmail())) {
+				this.email = "";
+				this.addActionError(this.getText("login.notActivated"));
+				return;
+			}
+		} catch (Exception e) {
+			logger.error("", e);
+			this.addActionError(e.toString());
+		}
+	}
+
+	public String execute() {
+		this.clearErrorsAndMessages();
+		try {
+			logger.debug("logging-in from portal link " + user + ", " + ip + ", " + valid + ", " + signature);
+			session.put(Constants.loggedInField, this.getEmail());
+			session.put("email", this.getEmail());
+			if (this.getUserAPI().isAdmin(email))
+				session.put("isAdmin", "true");
+
+			this.addActionMessage("Logged-in successfully");
+
+			return Action.SUCCESS;
+		} catch (Exception e) {
+			logger.error("error logging-in from portal link " + user + ", " + ip + ", " + valid + ", " + signature, e);
+			this.addActionError(this.getText("generic.error"));
+			reportException(e);
+			return "exception";
+		}
+	}
+
+	public boolean signatureIsValid(String message, String signature) throws Exception {
+		byte[] encode = Hex.decodeHex(new String(Base64.decodeBase64(signature.getBytes())).toCharArray());
+
+		SecretKeySpec key = new SecretKeySpec(this.key.getBytes(), "HmacSHA1");
+		Mac mac = Mac.getInstance(key.getAlgorithm());
+
+		mac.init(key);
+
+		byte[] myEncode = mac.doFinal(message.getBytes());
+		
+		logger.debug("given encode: "+new String(encode)+" my-encode: "+new String(myEncode));
+
+		if (encode.length != myEncode.length)
+			return false;
+
+		for (int i = 0; i < encode.length; i++)
+			if (encode[i] != myEncode[i])
+				return false;
+		return true;
+	}
+
+	public void setServletRequest(HttpServletRequest request) {
+		this.request = request;
+	}
+
+	public HttpServletRequest getServletRequest() {
+		return request;
+	}
+
+	@Override
+	public void setSession(Map<String, Object> session) {
+		this.session = session;
+	}
+
+	public String getUser() {
+		return user;
+	}
+
+	public void setUser(String user) {
+		this.user = user;
+	}
+
+	public String getIp() {
+		return ip;
+	}
+
+	public void setIp(String ip) {
+		this.ip = ip;
+	}
+
+	public String getValid() {
+		return valid;
+	}
+
+	public void setValid(String valid) {
+		this.valid = valid;
+	}
+
+	public String getSignature() {
+		return signature;
+	}
+
+	public void setSignature(String signature) {
+		this.signature = signature;
+	}
+
+	public String getKey() {
+		return key;
+	}
+
+	public void setKey(String key) {
+		this.key = key;
+	}
+
+	public String getEmail() {
+		return email;
+	}
+
+	public void setEmail(String email) {
+		this.email = email;
+	}
+
+}
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/java/eu/dnetlib/validator/admin/actions/login/ResetPassword.java
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/java/eu/dnetlib/validator/admin/actions/login/ResetPassword.java	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/java/eu/dnetlib/validator/admin/actions/login/ResetPassword.java	(revision 47450)
@@ -0,0 +1,70 @@
+package eu.dnetlib.validator.admin.actions.login;
+
+import org.apache.log4j.Logger;
+
+import com.opensymphony.xwork2.Action;
+
+import eu.dnetlib.validator.admin.actions.BaseValidatorAction;
+
+public class ResetPassword extends BaseValidatorAction {
+
+	private static final long serialVersionUID = -4565098546731325693L;
+	private Logger logger = Logger.getLogger(ResetPassword.class);
+	
+	private String password, repassword, securityCode;
+
+	public String execute() {
+		this.clearErrorsAndMessages();
+		try {
+			logger.debug("reseting password with security code " + securityCode);
+			this.getUserAPI().resetPassword(this.getSecurityCode(), this.getPassword());
+			this.addActionMessage(this.getText("resetPassword.success"));
+			return Action.SUCCESS;
+		} catch (Exception e) {
+			logger.error("error reseting password with security code " + securityCode, e);
+			this.addActionError(this.getText("generic.error"));
+			return "exception";
+		}
+	}
+
+	public void validate() {
+		this.clearErrors();
+		try {
+			if (this.getSecurityCode() == null || this.getSecurityCode().length() == 0) {
+				this.addFieldError("securityCode", this.getText("resetPassword.wrongSecurityCode"));
+				return;
+			}
+			if (!this.getPassword().equals(this.getRepassword())) {
+				this.addFieldError("password", this.getText("identicalPasswords"));
+				return;
+			}
+		} catch (Exception e) {
+			this.addActionError("");
+		}
+	}
+
+	public String getPassword() {
+		return password;
+	}
+
+	public void setPassword(String password) {
+		this.password = password;
+	}
+
+	public String getRepassword() {
+		return repassword;
+	}
+
+	public void setRepassword(String repassword) {
+		this.repassword = repassword;
+	}
+
+	public String getSecurityCode() {
+		return securityCode;
+	}
+
+	public void setSecurityCode(String securityCode) {
+		this.securityCode = securityCode;
+	}
+
+}
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/java/eu/dnetlib/validator/admin/actions/rules/PrepareEditRule.java
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/java/eu/dnetlib/validator/admin/actions/rules/PrepareEditRule.java	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/java/eu/dnetlib/validator/admin/actions/rules/PrepareEditRule.java	(revision 47450)
@@ -0,0 +1,109 @@
+package eu.dnetlib.validator.admin.actions.rules;
+
+import java.util.List;
+import java.util.Set;
+
+import org.apache.log4j.Logger;
+
+import com.opensymphony.xwork2.Action;
+
+import eu.dnetlib.domain.functionality.validator.Rule;
+import eu.dnetlib.validator.admin.actions.BaseValidatorAction;
+import eu.dnetlib.validator.admin.api.ValidatorAdminException;
+import eu.dnetlib.validator.admin.constants.TypesAndTableNames;
+
+public class PrepareEditRule extends BaseValidatorAction {
+
+	private static final long serialVersionUID = 8825889540939707747L;
+	private int ruleId;
+
+	private Rule rule;
+	private List<Rule> rules;
+	private List<FieldPair> ruleValues;
+	private Set<String> entityTypes;
+	
+	private String funct = null;
+	private static final Logger logger = Logger.getLogger(PrepareEditRule.class);
+
+
+	public String execute() {
+		this.clearErrorsAndMessages();
+		try {
+//			logger.debug("preparing edit of rule");
+			entityTypes = TypesAndTableNames.getCrisEntities().keySet();
+			logger.debug("preparing edit of rule " + ruleId);
+			rule = this.getValidatorAdminAPI().getRule(ruleId);
+			this.ruleValues = this.getValidatorAdminAPI().getRuleValuePairs(rule);
+			if (rule.getType().equals("ChainRule")) {
+				try {
+					rules = this.getValidatorAdminAPI().getAllRules();
+				} catch (ValidatorAdminException e) {
+					return Action.ERROR;
+				}
+			}			
+			logger.debug("ruleType: " + rule.getType());
+			rule.setJob_type(TypesAndTableNames.jobTypes.get(rule.getJob_type()));
+			return Action.SUCCESS;
+		} catch (Exception e) {
+			logger.error("preparing edit of rule " + ruleId, e);
+			this.addActionError(this.getText("generic.error"));
+			reportException(e);
+			return "exception";
+		}
+	}
+
+	
+	public Rule getRule() {
+		return rule;
+	}
+
+	public void setRule(Rule rule) {
+		this.rule = rule;
+	}
+
+	public List<Rule> getRules() {
+		return rules;
+	}
+
+	public void setRules(List<Rule> rules) {
+		this.rules = rules;
+	}
+
+	public List<FieldPair> getRuleValues() {
+		return ruleValues;
+	}
+
+	public void setRuleValues(List<FieldPair> ruleValues) {
+		this.ruleValues = ruleValues;
+	}
+
+	public int getRuleId() {
+		return ruleId;
+	}
+
+	public void setRuleId(int ruleId) {
+		this.ruleId = ruleId;
+	}
+
+
+	public String getFunct() {
+		return funct;
+	}
+
+
+	public void setFunct(String funct) {
+		this.funct = funct;
+	}
+
+
+	public Set<String> getEntityTypes() {
+		return entityTypes;
+	}
+
+
+	public void setEntityTypes(Set<String> entityTypes) {
+		this.entityTypes = entityTypes;
+	}
+	
+	
+}
\ No newline at end of file
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/java/eu/dnetlib/validator/admin/actions/jobs/RegistrationsReport.java
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/java/eu/dnetlib/validator/admin/actions/jobs/RegistrationsReport.java	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/java/eu/dnetlib/validator/admin/actions/jobs/RegistrationsReport.java	(revision 47450)
@@ -0,0 +1,87 @@
+package eu.dnetlib.validator.admin.actions.jobs;
+
+import org.apache.log4j.Logger;
+
+import com.opensymphony.xwork2.Action;
+
+import eu.dnetlib.validator.admin.actions.BaseValidatorAction;
+import eu.dnetlib.validator.admin.api.ValidatorAdminException;
+
+public class RegistrationsReport extends BaseValidatorAction {
+
+	private static final long serialVersionUID = -1868055729316139461L;
+	private static final Logger logger = Logger.getLogger(RegistrationsReport.class);
+	private String dateFrom = null;
+	private String dateTo = null;
+	private String mode, month;
+	private int year;
+
+	public String execute() {
+		this.clearErrorsAndMessages();
+		try {
+			
+			int monthInt = Integer.parseInt(month.split("-")[1]);
+			String monthStr = month.split("-")[0];
+			dateFrom = new String("YYYY-MM-01").replaceFirst("MM", Integer.toString(monthInt)).replaceFirst("YYYY", Integer.toString(year));
+			if (monthInt != 12)
+				dateTo = new String("YYYY-MM-01").replaceFirst("MM", Integer.toString(monthInt+1)).replaceFirst("YYYY", Integer.toString(year));
+			else
+				dateTo = new String("YYYY-MM-01").replaceFirst("MM", "1").replaceFirst("YYYY", Integer.toString(year+1));
+			this.getValidatorAdminAPI().sendRegistrationsReport(dateFrom, dateTo, monthStr, Integer.toString(year));
+		} catch (ValidatorAdminException e) {
+			logger.error("Error deleting old jobs", e);
+			this.addActionError(this.getText("generic.error"));
+			reportException(e);
+			return "input-problem";
+		}
+		this.addActionMessage(this.getText("manageJobs.sendReports.success"));
+		
+		return Action.SUCCESS;
+	}
+	
+
+	public void validate() {
+		this.clearErrors();
+	}
+
+	public String getDateFrom() {
+		return dateFrom;
+	}
+
+	public void setDateFrom(String dateFrom) {
+		this.dateFrom = dateFrom;
+	}
+
+	public String getDateTo() {
+		return dateTo;
+	}
+
+	public void setDateTo(String dateTo) {
+		this.dateTo = dateTo;
+	}
+
+	public String getMode() {
+		return mode;
+	}
+
+	public void setMode(String mode) {
+		this.mode = mode;
+	}
+
+	public String getMonth() {
+		return month;
+	}
+
+	public void setMonth(String month) {
+		this.month = month;
+	}
+
+	public int getYear() {
+		return year;
+	}
+
+	public void setYear(int year) {
+		this.year = year;
+	}
+	
+}
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/java/eu/dnetlib/validator/admin/actions/rulesets/GetRuleSets.java
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/java/eu/dnetlib/validator/admin/actions/rulesets/GetRuleSets.java	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/java/eu/dnetlib/validator/admin/actions/rulesets/GetRuleSets.java	(revision 47450)
@@ -0,0 +1,39 @@
+package eu.dnetlib.validator.admin.actions.rulesets;
+
+import java.util.List;
+
+import org.apache.log4j.Logger;
+
+import com.opensymphony.xwork2.Action;
+
+import eu.dnetlib.domain.functionality.validator.RuleSet;
+import eu.dnetlib.validator.admin.actions.BaseValidatorAction;
+
+public class GetRuleSets extends BaseValidatorAction {
+
+	private static final long serialVersionUID = -5220242100308666597L;
+	private List<RuleSet> sets;
+	private static final Logger logger = Logger.getLogger(GetRuleSets.class);
+
+	public List<RuleSet> getSets() {
+		return sets;
+	}
+
+	public void setSets(List<RuleSet> sets) {
+		this.sets = sets;
+	}
+
+	public String execute() throws Exception {
+		this.clearErrorsAndMessages();
+		try {
+			logger.debug("getting all rule sets");
+			sets = this.getValidatorAdminAPI().getRuleSets();
+			return Action.SUCCESS;
+		} catch (Exception e) {
+			logger.error("Error getting rule sets", e);
+			this.addActionError(this.getText("generic.error"));
+			reportException(e);
+			return "exception";
+		}
+	}
+}
\ No newline at end of file
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/java/eu/dnetlib/validator/admin/actions/rules/AddRule.java
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/java/eu/dnetlib/validator/admin/actions/rules/AddRule.java	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/java/eu/dnetlib/validator/admin/actions/rules/AddRule.java	(revision 47450)
@@ -0,0 +1,87 @@
+package eu.dnetlib.validator.admin.actions.rules;
+
+
+import org.apache.log4j.Logger;
+
+import com.opensymphony.xwork2.Action;
+
+import eu.dnetlib.domain.functionality.validator.Rule;
+import eu.dnetlib.validator.admin.actions.BaseValidatorAction;
+
+public class AddRule extends BaseValidatorAction {
+
+	private static final long serialVersionUID = -4636737264204104816L;
+	private String[] inputs;
+	private String type, jobType;
+	private boolean forCris;
+	private static final Logger logger = Logger.getLogger(AddRule.class);
+
+	public String execute() {
+		this.clearErrorsAndMessages();
+		try {
+			logger.debug("adding rule of type "+type+" using user inputs");
+			logger.debug("for cris: "+forCris);
+			logger.debug("jobType: "+ jobType);
+			Rule rule = new Rule();
+			rule.setType(type);
+			rule.setJob_type(jobType);
+			rule.setFor_cris(forCris);
+//			rule.setEntity_type(entityType);
+			String ret = this.getValidatorAdminAPI().storeRule(rule, inputs, true);
+			if (ret != null) {
+				this.addActionError(this.getText(ret));
+				return "input-problem";
+			}
+			
+			this.addActionMessage(this.getText("addRule.success"));
+			
+			return Action.SUCCESS;
+		} catch(Exception e) {
+			logger.error("Error adding rule", e);
+			this.addActionError(this.getText("generic.error"));
+			reportException(e);
+			return "exception";
+		}
+	}
+	
+	public String getJobType() {
+		return jobType;
+	}
+
+	public void setJobType(String jobType) {
+		this.jobType = jobType;
+	}
+
+	public boolean isForCris() {
+		return forCris;
+	}
+
+	public void setForCris(boolean forCris) {
+		this.forCris = forCris;
+	}
+
+//	public String getEntityType() {
+//		return entityType;
+//	}
+//
+//	public void setEntityType(String entityType) {
+//		this.entityType = entityType;
+//	}
+
+	public String getType() {
+		return type;
+	}
+
+	public void setType(String type) {
+		this.type = type;
+	}
+
+	public String[] getInputs() {
+		return inputs;
+	}
+
+	public void setInputs(String[] inputs) {
+		this.inputs = inputs;
+	}
+
+}
\ No newline at end of file
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/java/eu/dnetlib/validator/admin/actions/rules/PopulateRuleCategories.java
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/java/eu/dnetlib/validator/admin/actions/rules/PopulateRuleCategories.java	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/java/eu/dnetlib/validator/admin/actions/rules/PopulateRuleCategories.java	(revision 47450)
@@ -0,0 +1,55 @@
+package eu.dnetlib.validator.admin.actions.rules;
+
+import java.util.Set;
+
+import org.apache.log4j.Logger;
+
+import com.opensymphony.xwork2.Action;
+
+import eu.dnetlib.validator.admin.actions.BaseValidatorAction;
+import eu.dnetlib.validator.admin.constants.TypesAndTableNames;
+
+public class PopulateRuleCategories extends BaseValidatorAction {
+
+	private static final long serialVersionUID = 3845749201114926778L;
+	private Logger logger = Logger.getLogger(PopulateRuleCategories.class);
+	
+	private Set<String> ruleTypes;
+//	private Set<String> jobTypes;
+	private String defaultJobType;
+	
+	public String execute() {
+		this.clearErrorsAndMessages();
+		logger.debug("populating rule categories");
+			defaultJobType="content";
+//			jobTypes = TypesAndTableNames.getJobTypes();
+			ruleTypes = TypesAndTableNames.getRuleTypes();
+
+		return Action.SUCCESS;
+	}
+
+	public Set<String> getRuleTypes() {
+		return ruleTypes;
+	}
+
+	public void setRuleTypes(Set<String> ruleTypes) {
+		this.ruleTypes = ruleTypes;
+	}
+
+//	public Set<String> getJobTypes() {
+//		return jobTypes;
+//	}
+//
+//	public void setJobTypes(Set<String> jobTypes) {
+//		this.jobTypes = jobTypes;
+//	}
+
+	public String getDefaultJobType() {
+		return defaultJobType;
+	}
+
+	public void setDefaultJobType(String defaultJobType) {
+		this.defaultJobType = defaultJobType;
+	}
+	
+}
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/java/eu/dnetlib/validator/admin/actions/rules/PopulateRuleList.java
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/java/eu/dnetlib/validator/admin/actions/rules/PopulateRuleList.java	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/java/eu/dnetlib/validator/admin/actions/rules/PopulateRuleList.java	(revision 47450)
@@ -0,0 +1,42 @@
+package eu.dnetlib.validator.admin.actions.rules;
+
+import java.util.List;
+
+import org.apache.log4j.Logger;
+
+import com.opensymphony.xwork2.Action;
+
+import eu.dnetlib.domain.functionality.validator.Rule;
+import eu.dnetlib.validator.admin.actions.BaseValidatorAction;
+
+public class PopulateRuleList extends BaseValidatorAction {
+
+	private static final long serialVersionUID = -4035025449768015129L;
+	private List<Rule> rules;
+	private static final Logger logger = Logger.getLogger(PopulateRuleList.class);
+
+	public String execute() {
+		this.clearErrorsAndMessages();
+		try {
+			logger.debug("populating rule list");
+			rules = this.getValidatorAdminAPI().getAllRules();
+			return Action.SUCCESS;
+		}
+		catch(Exception e) {
+			logger.error("Error redirecting to job", e);
+			this.addActionError(this.getText("generic.error"));
+			reportException(e);
+			return "exception";
+		}
+	}
+
+	public List<Rule> getRules() {
+		return rules;
+	}
+
+	public void setRules(List<Rule> rules) {
+		this.rules = rules;
+	}
+	
+	
+}
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/chooseRuleSetForDeletion.jsp
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/chooseRuleSetForDeletion.jsp	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/chooseRuleSetForDeletion.jsp	(revision 47450)
@@ -0,0 +1,49 @@
+<%@ page contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<%@ taglib prefix="s" uri="/struts-tags"%>
+<html>
+<head>
+<link href="jsps/favicon.ico" rel="shortcut icon" type="image/x-icon" />
+<link href="jsps/style.css" rel="stylesheet" type="text/css" media="screen" />
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title><s:text name="deleteRuleSet.title"/></title>
+</head>
+<body class="left">
+<div id="wrapper">
+	<jsp:include page="menu.jsp"/>
+	<div id="page">
+	<div id="page-bgtop">
+	<div id="middle">
+            <div class="middle-b">
+                <div class="background">
+			 <div id="left">
+                              <div id="left_container" >
+                                   <h2 class="helpHdr">Info</h2>
+                                   <s:text name="help.admin"/>
+                              </div>
+                         </div>
+                        <div id="main">
+                        <div id="main_container" class="clearfix">
+			<div id="content">
+				<h2 class="title"><s:text name="deleteRuleSet.title"/></h2>
+                                <div class="entry">
+                                        <s:form action="deleteRuleSet">
+                                                <s:select name="setId" list="sets" listValue="name" listKey="id" key="chooseRuleSet.label"/>
+                                                <s:submit cssClass="button-default"/>
+                                        </s:form>
+                                </div>
+			</div>
+			</div>
+			</div>
+		</div>
+	</div>
+	</div>
+	</div>
+
+    <div id="footer">
+                <jsp:include page="footer.jsp"/>
+        </div>
+</div>
+</div>
+</body>
+</html>
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/java/eu/dnetlib/validator/admin/actions/DummyAction.java
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/java/eu/dnetlib/validator/admin/actions/DummyAction.java	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/java/eu/dnetlib/validator/admin/actions/DummyAction.java	(revision 47450)
@@ -0,0 +1,13 @@
+package eu.dnetlib.validator.admin.actions;
+
+import com.opensymphony.xwork2.Action;
+
+public class DummyAction extends BaseValidatorAction {
+
+	private static final long serialVersionUID = 4105253794510714980L;
+
+	public String execute() {
+		return Action.SUCCESS;
+		
+	}
+}
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/images/button_arrow_right.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/images/button_arrow_right.png
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/images/button_arrow_right.png	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/images/button_arrow_right.png	(revision 47450)

Property changes on: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/images/button_arrow_right.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/java/eu/dnetlib/validator/admin/constants/FieldNames.java
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/java/eu/dnetlib/validator/admin/constants/FieldNames.java	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/java/eu/dnetlib/validator/admin/constants/FieldNames.java	(revision 47450)
@@ -0,0 +1,37 @@
+package eu.dnetlib.validator.admin.constants;
+
+public class FieldNames {
+	
+	static public String RULE_ID="id";
+	static public String RULE_NAME="name";
+	static public String RULE_DESCRIPTION="description";
+	static public String RULE_TYPE="type";
+	static public String RULE_MANDATORY="mandatory";
+	static public String RULE_SUCCESS="success";
+	static public String RULE_WEIGHT="weight";
+	static public String RULE_PROVIDER_INFORMATION="provider_information";
+	static public String RULE_VISIBLE="visible";
+	static public String RULE_JOBTYPE="job_type";
+	
+	static public String RULE_RULESFK="Rules_id";
+	
+	static public String RULE_VOCABULARY_WORDS="terms";
+	static public String RULE_VOCABULARY_WORDS_TYPE="terms_type";
+	
+	static public String RULE_CRIS_ENTITY="cris_entity";
+	
+	static public String RULE_CRIS_CLASS_VOCABULARY_SCHEME_ID="scheme_id";
+	
+	static public String RULE_CRIS_REFERENTIAL_INTEGRITY_ENTITY_ACRONYM = "entity_acronym";
+	static public String RULE_CRIS_REFERENTIAL_INTEGRITY_RELATED_ENTITY_ACRONYM = "related_entity_acronym";
+	static public String RULE_CRIS_REFERENTIAL_INTEGRITY_RELATED_ENTITY_XPATH = "related_entity_xpath";
+	
+	static public String RULE_CARDINALITY_LESSTHAN="less_than";
+	static public String RULE_CARDINALITY_GREATERTHAN="greater_than";
+	
+	static public String RULE_REGULAREXPRESSION_REGEXPR ="regular_expression";
+	
+	static public String RULE_NOTCONNFUSEDFIELDS ="fields";
+	
+//	static public String JOB_CONTENT="OAI Content Validation";
+}
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/images/warning.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/images/warning.png
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/images/warning.png	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/images/warning.png	(revision 47450)

Property changes on: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/images/warning.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/resources/eu/dnetlib/validator/admin/api/emailTeplateOld.vm
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/resources/eu/dnetlib/validator/admin/api/emailTeplateOld.vm	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/resources/eu/dnetlib/validator/admin/api/emailTeplateOld.vm	(revision 47450)
@@ -0,0 +1,20 @@
+Greetings,
+
+The unsuccessful registration attempts during $month
+were the following (base URL, contact mail, compliance level):
+
+#foreach( $datasource in $failedJobs )
+$datasource.baseUrl, $datasource.email, $datasource.compliance
+#end
+$noneFailed
+
+The successful ones were the following:
+
+#foreach( $datasource in $passedJobs )
+$datasource.baseUrl, $datasource.email, $datasource.compliance
+#end
+$nonePassed
+
+Regards,
+Validator's administrator
+
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/images/box_warning.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/images/box_warning.png
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/images/box_warning.png	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/images/box_warning.png	(revision 47450)

Property changes on: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/images/box_warning.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/resources/eu/dnetlib/validator/admin/api/springContext-validator-user-local.xml
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/resources/eu/dnetlib/validator/admin/api/springContext-validator-user-local.xml	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/resources/eu/dnetlib/validator/admin/api/springContext-validator-user-local.xml	(revision 47450)
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<beans xmlns="http://www.springframework.org/schema/beans"
+	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+	xmlns:context="http://www.springframework.org/schema/context"
+	xmlns:cxf="http://cxf.apache.org/core"
+	xmlns:jaxws="http://cxf.apache.org/jaxws"
+	xmlns:p="http://http://www.springframework.org/schema/p"
+	xmlns:template="http://dnetlib.eu/springbeans/template"
+	xmlns:t="http://dnetlib.eu/springbeans/t"
+	xmlns:tx="http://www.springframework.org/schema/tx"
+	
+	xsi:schemaLocation="
+		http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.0.xsd
+        http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.0.xsd
+        http://cxf.apache.org/core http://cxf.apache.org/schemas/core.xsd
+        http://cxf.apache.org/jaxws http://cxf.apache.org/schemas/jaxws.xsd
+        http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-4.0.xsd
+        http://dnetlib.eu/springbeans/template http://dnetlib.eu/springbeans/template.xsd"
+	default-autowire="no">
+
+	<bean id="userAPI" class="eu.dnetlib.validator.admin.api.impls.UserApiLocal" lazy-init="true">
+		<property name="usersDao" ref="usersDao" />
+	</bean>
+	
+	<tx:annotation-driven transaction-manager="txManager" />
+	
+</beans>
\ No newline at end of file
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/images/checkmark_24.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/images/checkmark_24.png
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/images/checkmark_24.png	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/images/checkmark_24.png	(revision 47450)

Property changes on: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/images/checkmark_24.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/images/box_hint.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/images/box_hint.png
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/images/box_hint.png	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/images/box_hint.png	(revision 47450)

Property changes on: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/images/box_hint.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/resources/eu/dnetlib/validator/admin/config/springContext-validator-config.xml
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/resources/eu/dnetlib/validator/admin/config/springContext-validator-config.xml	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/resources/eu/dnetlib/validator/admin/config/springContext-validator-config.xml	(revision 47450)
@@ -0,0 +1,48 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<beans xmlns="http://www.springframework.org/schema/beans"
+	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+	xmlns:context="http://www.springframework.org/schema/context"
+	xmlns:cxf="http://cxf.apache.org/core"
+	xmlns:jaxws="http://cxf.apache.org/jaxws"
+	xmlns:p="http://http://www.springframework.org/schema/p"
+	xmlns:template="http://dnetlib.eu/springbeans/template"
+	xmlns:t="http://dnetlib.eu/springbeans/t"
+	xmlns:tx="http://www.springframework.org/schema/tx"
+	
+	xsi:schemaLocation="
+		http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.0.xsd
+        http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.0.xsd
+        http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-4.0.xsd
+		http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-4.0.xsd
+        http://cxf.apache.org/core http://cxf.apache.org/schemas/core.xsd
+        http://cxf.apache.org/jaxws http://cxf.apache.org/schemas/jaxws.xsd
+        http://dnetlib.eu/springbeans/template http://dnetlib.eu/springbeans/template.xsd"
+	default-autowire="no">
+
+	<bean class="eu.dnetlib.validator.admin.config.CascadingPropertyLoader" id="propertyLoader">
+		<property name="order" value="2" />
+		<property name="properties">
+			<bean class="eu.dnetlib.conf.WebappContextProperyFactory">
+				<property name="propertyFetcher">
+					<bean class="eu.dnetlib.conf.PropertyFetcher" />
+				</property>
+			</bean>
+		</property>
+		<property name="ignoreUnresolvablePlaceholders" value="true" />
+		<property name="locations">
+			<list>
+				<value>classpath*:/gr/**/springContext-*.properties</value>
+				<value>classpath*:/eu/**/springContext-*.properties</value>
+				
+				<value>classpath*:dnet-site-wizard.properties</value>
+				<value>classpath*:dnet-site-override.properties</value>
+				<value>classpath*:dnet-wizard.properties</value>
+				<value>classpath*:dnet-override.properties</value>
+				<value>classpath*:dnet-validator-wizard.properties</value>
+				<value>classpath*:dnet-validator-override.properties</value>
+				<value>classpath*:dnet-site-force-override.properties</value>
+				<value>classpath*:dnet-force-override.properties</value>
+			</list>
+		</property>
+	</bean>
+</beans>
\ No newline at end of file
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/chooseRuleForClone.jsp
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/chooseRuleForClone.jsp	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/chooseRuleForClone.jsp	(revision 47450)
@@ -0,0 +1,50 @@
+<%@ page contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<%@ taglib prefix="s" uri="/struts-tags"%>
+<html>
+<head>
+<link href="jsps/favicon.ico" rel="shortcut icon" type="image/x-icon" />
+<link href="jsps/style.css" rel="stylesheet" type="text/css" media="screen" />
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title><s:text name="chooseRuleForEdit.title"/></title>
+</head>
+<body class="left">
+<div id="wrapper">
+	<jsp:include page="menu.jsp"/>
+	<div id="page">
+	<div id="page-bgtop">
+	<div id="middle">
+            <div class="middle-b">
+                <div class="background">
+			 <div id="left">
+                              <div id="left_container" >
+                                   <h2 class="helpHdr">Info</h2>
+                                   <s:text name="help.admin"/>
+                              </div>
+                         </div>
+                        <div id="main">
+                        <div id="main_container" class="clearfix">
+			<div id="content">
+				<h2 class="title"><s:text name="chooseRuleForEdit.title"/></h2>
+                               <div class="entry">
+					<s:form action="prepareEditRule">
+                           <s:select name="ruleId" list="rules" listValue="name" listKey="id"  key="chooseRuleForClone.label"/>
+                           <s:hidden name="funct" value="clone"/>
+                           <s:submit cssClass="button-default"/>
+                    </s:form>
+                                </div>
+			</div>
+			</div>
+			</div>
+		</div>
+	</div>
+	</div>
+	</div>
+
+    <div id="footer">
+                <jsp:include page="footer.jsp"/>
+        </div>
+        </div>
+</div>
+</body>
+</html>
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/images/Line_Header.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/images/Line_Header.png
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/images/Line_Header.png	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/images/Line_Header.png	(revision 47450)

Property changes on: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/images/Line_Header.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/images/info.jpg
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/images/info.jpg
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/images/info.jpg	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/images/info.jpg	(revision 47450)

Property changes on: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/images/info.jpg
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/images/EC_logo_blue_multi_horizontal.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/images/EC_logo_blue_multi_horizontal.png
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/images/EC_logo_blue_multi_horizontal.png	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/images/EC_logo_blue_multi_horizontal.png	(revision 47450)

Property changes on: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/images/EC_logo_blue_multi_horizontal.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/images/opendoar.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/images/opendoar.png
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/images/opendoar.png	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/images/opendoar.png	(revision 47450)

Property changes on: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/images/opendoar.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/resources/field-infos.properties
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/resources/field-infos.properties	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/resources/field-infos.properties	(revision 47450)
@@ -0,0 +1,98 @@
+rules.name.description = The name of the rule. Must be short and descriptive.
+rules.name.name = Name
+rules.description.description = A longer text describing the rule in more detail.
+rules.description.name = Description
+rules.mandatory.description = Must be true or false. If true, then if this rule doesn't validate the score will suffer. If false, then if the rule validates successfully then the score will be increased (even above 100%)
+rules.mandatory.name = Mandatory
+rules.success.description = The correct syntax as regular expression is ([=<>][0-9]+)|a). For a thorough explanation of this field please refer to the Administrator Manual. 
+rules.success.name = Success
+rules.weight.description = An integer indicating how important this rule is. The base weight is 1. Weights greater than 1 mean that this rule impacts more on the score.
+rules.weight.name = Weight
+rules.provider_information.description = This information is used by the Provider Module to harvest the correct items for validation. For example, for OAI Content Validation jobs a possible value could be dc:identifier. For a thorough explanation of this field please refer to the Administrator Manual. 
+rules.provider_information.name = Provider Information
+rules.visible.description = Not shown to the end-user
+rules.visible.name = Visible
+rules.type.name = Rule Type
+rules.type.description = The type of the rule
+rules.cris_entity.name = Cris Entity
+rules.cris_entity.description = The type of cris entity that this rule will be applicable on
+jobs.job_type.name = Job Type
+jobs.job_type.description = The type of job that this rule will be applicable on
+jobs.entity_type.name = Entity Type
+jobs.entity_type.description = The type of entity that this rule will be applicable on
+xmlvocabulary_rule.terms.name = Words
+xmlvocabulary_rule.terms.description = The list of words that will be used for matching. Each line must include only one word.
+xmlvocabulary_rule.terms_type.name = Words List Type
+xmlvocabulary_rule.terms_type.description = The kind of the list of words that will be used for matching. Blacklist or whitelist.
+xmlvocabulary_rule.success.name = Success
+xmlvocabulary_rule.success.description = The correct syntax is :all, >0, 0 . For a thorough explanation of this field please refer to the Administrator Manual. 
+xmlvocabulary_rule.xpath.name = XPath
+xmlvocabulary_rule.xpath.description = XPath for specific rule.
+xmlcrisclassvocabulary_rule.terms.name = Words
+xmlcrisclassvocabulary_rule.terms.description = The list of words that will be used for matching. Each line must include only one word.
+xmlcrisclassvocabulary_rule.success.name = Success
+xmlcrisclassvocabulary_rule.success.description = The correct syntax is :all, >0, 0, 1 . For a thorough explanation of this field please refer to the Administrator Manual. 
+xmlcrisclassvocabulary_rule.xpath.name = XPath
+xmlcrisclassvocabulary_rule.xpath.description = XPath for specific rule.
+xmlcrisclassvocabulary_rule.scheme_id.name = Scheme ID
+xmlcrisclassvocabulary_rule.scheme_id.description = XPath for specific rule.
+xmlcrisreferentialintegrity_rule.terms.name = Words
+xmlcrisreferentialintegrity_rule.terms.description = The list of words that will be used for matching. Each line must include only one word.
+xmlcrisreferentialintegrity_rule.success.name = Success
+xmlcrisreferentialintegrity_rule.success.description = The correct syntax is :all, >0, 0, 1 . For a thorough explanation of this field please refer to the Administrator Manual. 
+xmlcrisreferentialintegrity_rule.xpath.name = XPath
+xmlcrisreferentialintegrity_rule.xpath.description = XPath for specific rule.
+xmlcrisreferentialintegrity_rule.scheme_id.name = Scheme ID
+xmlcrisreferentialintegrity_rule.scheme_id.description = XPath for specific rule.
+xmlcrisreferentialintegrity_rule.entity_acronym.name = Entity Acronym
+xmlcrisreferentialintegrity_rule.entity_acronym.description = Entity Acronym (eg.cfPers).
+xmlcrisreferentialintegrity_rule.related_entity_acronym.name = Related Entity Acronym
+xmlcrisreferentialintegrity_rule.related_entity_acronym.description = Related Entity Acronym (eg.cfPers).
+xmlcrisreferentialintegrity_rule.related_entity_xpath.name = Related Entity XPATH
+xmlcrisreferentialintegrity_rule.related_entity_xpath.description = Related Entity XPATH.
+xmlfieldexist_rule.success.name = Success
+xmlfieldexist_rule.success.description = The correct syntax is :all, >0, 0 . For a thorough explanation of this field please refer to the Administrator Manual. 
+xmlfieldexist_rule.xpath.name = XPath
+xmlfieldexist_rule.xpath.description = XPath for specific rule.
+xmlregularexpression_rule.success.name = Success
+xmlregularexpression_rule.success.description = The correct syntax is :all, >0, 0 . For a thorough explanation of this field please refer to the Administrator Manual. 
+xmlregularexpression_rule.xpath.name = XPath
+xmlregularexpression_rule.xpath.description = XPath for specific rule.
+xmlregularexpression_rule.regexp.name = Regular Expression
+xmlregularexpression_rule.regexp.description = The regular expression used for validation.
+xmlcardinality_rule.lt.name = Less Than
+xmlcardinality_rule.lt.description = Less than this number
+xmlcardinality_rule.gt.name = Greater Than
+xmlcardinality_rule.gt.description = Greater than this number
+xmlcardinality_rule.success.name = Success
+xmlcardinality_rule.success.description = The correct syntax is :all, >0, 0 . For a thorough explanation of this field please refer to the Administrator Manual. 
+xmlcardinality_rule.xpath.name = XPath
+xmlcardinality_rule.xpath.description = XPath for specific rule.
+xmlcardinality_rule.regexp.name = Regular Expression
+xmlcardinality_rule.regexp.description = The regular expression used for validation.
+xmlnotconfusedfields_rule.fields.name = Fields
+xmlnotconfusedfields_rule.fields.description = Fields that must not be confused each other
+xmlnotconfusedfields_rule.success.name = Success
+xmlnotconfusedfields_rule.success.description = The correct syntax is :all, >0, 0 . For a thorough explanation of this field please refer to the Administrator Manual. 
+xmlnotconfusedfields_rule.xpath.name = XPath
+xmlnotconfusedfields_rule.xpath.description = XPath for specific rule.
+xmlnotconfusedfields_rule.regexp.name = Regular Expression
+xmlnotconfusedfields_rule.regexp.description = The regular expression used for validation.
+xmlvalidurl_rule.success.name = Success
+xmlvalidurl_rule.success.description = The correct syntax is :all, >0, 0 . For a thorough explanation of this field please refer to the Administrator Manual. 
+xmlvalidurl_rule.xpath.name = XPath
+xmlvalidurl_rule.xpath.description = XPath for specific rule.
+xmlvalidurl_rule.regexp.name = Regular Expression
+xmlvalidurl_rule.regexp.description = The regular expression used for validation.
+chain_rule.type.description = Permitted values: 'or' -> true if any of the rules is successful, 'and' -> true if all the rules are successful, 'horn' -> rule[0] => rule[1] /\ rule[2] /\ ... /\ rule[n-1]
+chain_rule.type.name = Chain Type
+chain_rule.rule_1.description = The first rule that chain rule consists of.
+chain_rule.rule_1.name = 1st Rule of Chain
+chain_rule.rule_2.description = The second rule that chain rule consists of.
+chain_rule.rule_2.name = 2nd Rule of Chain
+oaipmhresumptiontokenduration_rule.duration.description = Duration of resumption token.
+oaipmhresumptiontokenduration_rule.duration..name = Duration
+oaipmhincrementalrecorddelivery_rule.from.name = From
+oaipmhincrementalrecorddelivery_rule.from.description = From field.
+oaipmhincrementalrecorddelivery_rule.until.name = Until
+oaipmhincrementalrecorddelivery_rule.until.description = Until field.
\ No newline at end of file
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/resources/backend-errors.properties
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/resources/backend-errors.properties	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/resources/backend-errors.properties	(revision 47450)
@@ -0,0 +1,29 @@
+error.parametersMissing.ruleId=Rule id must be specified in the parameters given
+error.parametersMissing.jobId=Job id must be specified in the parameters given
+error.badParameter.idNotNumerical=The id was not numerical
+error.badParameter.unknownType=The type specified is incorrect
+rules.name.error.message1=A value must be defined for the field name
+rules.description.error.message1=A value must be defined for the field description
+rules.type.error.message1=A value must be defined for the field type
+rules.mandatory.error.message1=A value must be defined for the field mandatory
+rules.success.error.message1=A value must be defined for the field success
+rules.success.error.message2=First character for success must be one of =, > or <
+rules.success.error.message3=Field success must contain only numerical characters after the first character
+rules.weight.error.message1=Value of field weight must be numerical
+rules.provider_information.error.message1=A value must be specified for the provider information field
+rules.job_type.error.message1=Job type must be one of the available types
+rules.job_type.error.message2=A job type must be specified for this rule
+cardinality_rule.greater_than.error.message1=Value of field 'greater than' must be numerical
+cardinality_rule.less_than.error.message2=Less and Greater cannot be both without value
+cardinality_rule.less_than.error.message1=Value of field 'less than' must be numerical
+NotConfusedFields_Rule.field1.error.message1=Fields 'field1' and 'field2' must both have a value
+NotConfusedFields_Rule.field1.error.message2=Fields 'field1' and 'field2' must have a different value
+RegularExpression_Rule.regular_expression.error.message1=Field 'regular expression' must have a value
+RetrievableResource_Rule.max_depth.error.message1=Field 'max_depth' must have a numerical value
+Vocabulary_Rule.words.error.message1=A value must be defined for the 'words' field
+OAI_Content_Job.records.error.message1=Field 'records' cannot be empty
+OAI_Content_Job.records.error.message2=At least one record must be used for the validation
+OAI_Content_Job.records.error.message3=Value of field 'records' must be numerical
+OAI_Content_Job.random.error.message1=Value of field 'random' must be boolean (true or false)
+OAI_Content_Job.base_url.error.message1=Value of field 'base url' doesn't seem to be a valid url adress
+RetrievableResource_Rule.mime_types.error.message1=Invalid mime type(s)
\ No newline at end of file
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/images/box_tip.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/images/box_tip.png
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/images/box_tip.png	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/images/box_tip.png	(revision 47450)

Property changes on: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/images/box_tip.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/images/list_check.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/images/list_check.png
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/images/list_check.png	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/images/list_check.png	(revision 47450)

Property changes on: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/images/list_check.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/images/error.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/images/error.png
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/images/error.png	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/images/error.png	(revision 47450)

Property changes on: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/images/error.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/images/BG_Footer_f5.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/images/BG_Footer_f5.png
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/images/BG_Footer_f5.png	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/images/BG_Footer_f5.png	(revision 47450)

Property changes on: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/images/BG_Footer_f5.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/WEB-INF/applicationContext.xml
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/WEB-INF/applicationContext.xml	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/WEB-INF/applicationContext.xml	(revision 47450)
@@ -0,0 +1,44 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<beans xmlns="http://www.springframework.org/schema/beans"
+	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p"
+	xmlns:context="http://www.springframework.org/schema/context"
+
+	xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.0.xsd
+	http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.0.xsd">
+
+
+	
+<!-- 	<import resource="classpath*:/eu/dnetlib/validator/admin/**/springContext-*.xml" /> -->
+<!-- 	<import resource="classpath*:/eu/dnetlib/validator/commons/**/springContext-*.xml" /> -->
+
+	<context:annotation-config />
+
+<bean class="eu.dnetlib.validator.web.config.CascadingPropertyLoader"
+		id="propertyLoader">
+		<property name="order" value="2" />
+		<property name="properties">
+			<bean class="eu.dnetlib.conf.WebappContextProperyFactory">
+				<property name="propertyFetcher">
+					<bean class="eu.dnetlib.conf.PropertyFetcher" />
+				</property>
+			</bean>
+		</property>
+		<property name="ignoreUnresolvablePlaceholders" value="true" />
+		<property name="locations">			<list>
+				<value>classpath*:/gr/**/springContext-*.properties</value>
+				<value>classpath*:/eu/**/springContext-*.properties</value>
+
+				<value>classpath*:dnet-site-wizard.properties</value>
+				<value>classpath*:dnet-site-override.properties</value>
+				<value>classpath*:dnet-wizard.properties</value>
+				<value>classpath*:dnet-override.properties</value>
+				<value>classpath*:dnet-validator-wizard.properties</value>
+				<value>classpath*:dnet-validator-override.properties</value>
+				<value>classpath*:dnet-site-force-override.properties</value>
+				<value>classpath*:dnet-force-override.properties</value>
+			</list>
+		</property>
+	</bean>
+
+</beans>
\ No newline at end of file
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/images/footer_anchor.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/images/footer_anchor.png
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/images/footer_anchor.png	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/images/footer_anchor.png	(revision 47450)

Property changes on: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/images/footer_anchor.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/images/list_disc.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/images/list_disc.png
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/images/list_disc.png	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/images/list_disc.png	(revision 47450)

Property changes on: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/images/list_disc.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/images/BG_Header_f5.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/images/BG_Header_f5.png
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/images/BG_Header_f5.png	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/images/BG_Header_f5.png	(revision 47450)

Property changes on: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/images/BG_Header_f5.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/style.css
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/style.css	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/style.css	(revision 47450)
@@ -0,0 +1,1233 @@
+
+/*
+Design by Free CSS Templates
+http://www.freecsstemplates.org
+Released for free under a Creative Commons Attribution 2.5 License
+*/
+@import url(fonts/kreon.css);
+@import url(fonts/yanonekaffeesatz.css);
+@import url(fonts/opensans.css);
+
+body, html {
+	height:100%;
+}
+body {
+	margin: 0;
+	padding: 0;
+	font: normal 12px/20px verdana, OpenSansLight, sans-serif;
+	/*font: 12px/20px "OpenSansLight", "Trebuchet MS", Georgia, "Times New Roman", Times, serif;*/
+	color: #717171;
+	background: #f5f5f5;
+ 	background-image: url(images/BG_Header_f5.png), url(images/BG_Footer_f5.png);
+ 	background-position: left top, right bottom;
+ 	background-repeat: no-repeat, no-repeat; 
+ 	background-attachment:fixed;
+}
+
+h1, h2, h3, h4, h5 {
+	margin: 0;
+	padding-bottom:5px;
+	font-family: "OpenSansLight", "Trebuchet MS", Georgia, "Times New Roman", Times, serif;
+	font-weight: normal;
+	color: #0F2B5B;
+}
+
+h1 { 	padding-top: 25px;
+	padding-bottom:15px;
+	font-size: 24px; 
+	color:#829333; 
+}
+
+h2 { 	padding-top: 25px;
+	padding-bottom:10px;
+	font-size: 18px; 
+	color:#829333; 
+}
+
+h3 {  
+	color:#343CB1;
+	font-size: 16px; 
+}
+h4 {  
+	font-size: 16px; 
+}
+h5 {  
+	font-size: 14px; 
+}
+
+p, ul, ol {
+	margin-top: 0;
+	text-align: justify;
+}
+
+ul, ol { }
+
+blockquote { }
+
+a { color: #2D72D6; }
+
+a:hover { text-decoration: none; color:#E76E12; cursor: pointer;}
+
+a img {
+	border: none;
+}
+
+img.left {
+	float: left;
+	margin: 7px 30px 0 0;
+}
+
+img.right {
+	float: right;
+	margin: 7px 0 0 30px;
+}
+
+hr {
+	border-top: 0px;
+	border-bottom: 1px solid #ddd;
+}
+.frontvisible {
+	font-size:16px;
+	font-family: "OpenSansLight", "Trebuchet MS", Georgia, "Times New Roman", Times, serif;
+}
+.optional {
+	font-size:72%!important;
+}
+.frontvisible p {
+	font-size:12px;
+}
+ul.frontvisible,
+.frontvisible ul {
+	list-style:none;
+	margin-left:60px;
+	padding-left:60px;
+	font-size:12px;
+}
+ul.frontvisible>li,
+.frontvisible li {
+	background: url('images/list_check.png') 0 0 no-repeat;
+	padding: 4px 0 0 30px;
+	font-size:14px;
+	line-height:24px;
+}
+
+.list1 {
+}
+
+.list1 li {
+	float: left;
+	line-height: normal;
+}
+
+.list1 li img {
+	margin: 0 30px 30px 0;
+}
+
+.list1 li.alt img {
+	margin-right: 0;
+}
+
+div.wrapper {
+	margin: auto; 
+}
+.errorMessage {
+	color: #E24912;
+	list-style: none;
+	font-style:italic;
+	margin:10px 0px;
+	font-size:110%;
+}
+
+.highlight {
+	background: url(images/menu_level2_parent.png) 0 40%  no-repeat;
+	padding-left:30px;
+	font-weight:bold;
+}
+
+.register {
+	background: url(images/register.png) right 40%  no-repeat;
+	padding-right:18px;
+}
+.notes {
+	color:#818181;
+	font-style:italic;
+    background-color: transparent;
+    background-image: url("images/info.jpg");
+    background-repeat: no-repeat;
+	background-position:0 left;
+    padding-left: 20px;
+	line-height:140%;
+}
+.notes_important {
+	color:#666;
+	font-style:italic;
+    background-color: transparent;
+    background-image: url("images/exclamation-icon.png");
+    background-repeat: no-repeat;
+	background-position:0 left;
+    padding-left: 20px;
+	line-height:140%;
+}
+.comments {
+	color:#666;
+	font-style:italic;
+ }
+ 
+.selectedHdr {
+	margin: 15px 0px 40px 0px;
+	color:#E24912;
+	font-family: "YanoneKaffeesatzLight"; 
+	font-size: 28px;
+}
+.helpHdr {
+    background-attachment: scroll;
+    background-color: transparent;
+    background-image: url("images/info-left.png");
+    background-position: 0 80%;  
+    background-repeat: no-repeat;
+    padding-left: 35px;
+}
+.next {
+	line-height:32px;
+	background-image: url("images/arrow_right.png");
+	background-position: 50% 40%;  
+	background-repeat: no-repeat;
+	padding-right:65px;
+	margin-bottom:20px;
+	text-align:center;
+}
+.next a {
+	text-decoration:none;
+}
+.prev {
+	line-height:32px;
+	background-image: url("images/arrow_left.png");
+	background-position: 45% 40%;  
+	background-repeat: no-repeat;
+	padding-left:25px;
+	text-align:center;
+	margin-bottom:20px;
+}
+.prev a {
+	text-decoration:none;
+}
+
+.smallInp {
+	width:10%!important;
+}
+.smallInp input[type="text"] {
+	width:10%!important;
+}
+
+.bigInp {
+	width:40%!important;
+}
+.bigInp input[type="text"] {
+	width:40%!important;
+}
+
+.validatedOk { 
+	line-height:32px;
+	background-image: url("images/tick.png");
+    background-position: 50% 100%;
+    background-repeat: no-repeat;
+}
+
+.addNewRow { 
+	line-height:32px;
+	background-image: url("images/tick.png");
+    background-position: 50% 50%;
+    background-repeat: no-repeat;
+}
+
+.validatedWrong {
+	line-height:32px;
+	background-image: url("images/error.png");
+    background-position: 50% 40%;  
+    background-repeat: no-repeat;
+}
+
+.validatedWarnings {
+	line-height:32px;
+	background-image: url("images/warning.png");
+    background-position: 50% 40%;  
+    background-repeat: no-repeat;
+}
+/*
+ * horizontal rule
+ */
+ 
+hr.dotted {
+	margin: 15px 0px 15px 0px;
+	display: block;
+	background: url(images/line_dotted.png) 0 0 repeat-x;
+	height: 1px;
+	border: none;
+}
+
+/*
+ * highlighted div and span tags
+ */
+
+span.note,
+span.info,
+span.alert,
+span.download,
+span.tip {
+	display: block;
+}
+
+.box-content {
+	background: #fafafa;
+	border: 1px solid #ddd;
+}
+
+
+div.note, span.note,
+div.info, span.info,
+div.alert, span.alert,
+div.download, span.download,
+div.tip, span.tip {
+	margin: 10px 0px 10px 0px;
+	padding: 8px 10px 8px 35px;
+	background: #fafafa;
+	border-top: 1px solid #ddd;
+	border-bottom: 1px solid #ddd;
+}
+
+div.info, span.info {
+	background: #ebf5fa url(images/box_info.png) 0 0 no-repeat;
+	border-color: #d2dce1;
+}
+
+div.alert, span.alert {
+	background: #fff0eb url(images/box_warning.png) 0 0 no-repeat;
+	border-color: #ffd7cd;
+}
+
+div.download, span.download {
+	background: #faffe6 url(images/box_download.png) 0 0 no-repeat;
+	border-color: #dce6be;
+}
+
+div.tip, span.tip {
+	background: #fffae6 url(images/box_tip.png) 0 0 no-repeat;
+	border-color: #fae6be;
+}
+.errorlink,
+.warninglink,
+.smallfont {
+	font-size:90%!important;
+}
+a.smallfont {
+	font-size:90%!important;
+}
+.firstpar {
+	padding:0px 5px 20px 45px;
+	margin:15px 0px;
+	background: no-repeat url(images/number-1.png) top left;
+}
+.secondpar {
+	padding:0px 5px 20px 45px;
+	margin:15px 0px;
+	background: no-repeat url(images/number-2.png) top left;
+}
+.thirdpar {
+	padding:0px 5px 20px 45px;
+	margin:15px 0px;
+	background: no-repeat url(images/number-3.png) top left;
+}
+.fourthpar {
+ 	padding:0px 5px 20px 45px;
+ 	margin:15px 0px;
+}
+.section {
+	padding-left:5px;
+	font-weight: normal;
+	text-transform: none;
+	line-height: 30px;
+	padding-top:3px;
+	padding-bottom: 10px;
+	font-family: "YanoneKaffeesatzLight"; 
+	font-size: 30px;
+	color:#343CB1;
+}
+.section1 {
+	padding-left:5px;
+	font-weight: normal;
+	text-transform: none;
+	line-height: 30px;
+	padding-top:3px;
+	padding-bottom: 10px;
+	font-family: "YanoneKaffeesatzLight"; 
+	font-size: 30px;
+	color:#343CB1;
+	background:#c2c2c2;
+}
+.box {
+	background: #fafafa;
+	border: 1px solid #ddd;
+}
+.field {
+	margin: 10px 0px;
+	line-height:28px;
+	font-size:100%;
+	clear:both;
+	overflow: hidden;
+}
+#left .field  {
+	padding:0
+	font-size:100%;
+	clear:both;
+	color:#351695;
+}
+.field label, label {
+	padding-left:1px;
+}
+	
+label input[type="text"] {
+	border:#839EB7 1px solid!important;
+	width:70%;
+}
+
+.field input[type="text"] {
+	width:80%;
+}
+.field input[type="password"] {
+	width:80%;
+}
+.fieldName {
+	margin-right: 10px;
+	font-family: "YanoneKaffeesatzLight"; 
+	font-size:18px;
+}
+
+
+/* Header */
+
+#header-wrapper {
+	color: #717171;
+}
+
+#header {
+	width: 970px;
+	height: 160px;
+	margin: 0 auto;
+	position:relative;
+}
+
+/* Menu */
+
+#topmenu {
+	height:30px;
+	padding-right:20px;
+}
+#topmenu ul {
+	list-style: none;
+}
+#topmenu li {
+	padding-left:10px;
+	font-family: "YanoneKaffeesatzLight"; 
+	font-size:16px;
+}
+#topmenu li a {
+	text-decoration:none;
+}
+
+
+
+	
+/* Search */
+/* oldname searchbox*/ 
+.class srchbx {
+	font-size:12px;
+	font-weight:bold;
+}
+#search {
+	float: right;
+	width: 305px;
+	height: 45px;
+}
+
+#search form {
+	float: right;
+	margin: 0;
+	padding: 12px 30px 0 0;
+}
+
+#search fieldset {
+	margin: 0;
+	padding: 0;
+	border: none;
+}
+
+#search input {
+	float: left;
+	font: 12px Georgia, "Times New Roman", Times, serif;
+	border: none;
+}
+
+#search-text {
+	width: 135px;
+	height: 18px;
+	padding: 3px 0 0 5px;
+	border: 1px solid #333333;
+	background: #ECF9E4;
+	color: #000000;
+}
+
+#search-submit {
+	height: 21px;
+	margin-left: 10px;
+	padding: 0px 5px;
+	background: #000000;
+	color: #FFFFFF;
+}
+
+/* Page */
+
+#page {
+	width: 970px;
+	margin: 0 auto;
+	/*background: #fafafa url(images/middle_bg_t.png) 0 0 repeat-x;*/
+	background:#ffffff;
+	box-shadow: 0 1px 0 rgba(0,0,0,0.1);
+}
+
+#page-bgtop {
+	
+}
+
+	/** LOGO */
+
+#logoLareferencia {
+	width: 308px;
+	height: 130px;
+	top:10px;
+	margin: 0 auto;
+	float:left;
+	position:absolute;
+	background: url(images/logo-referencia-openaire.png) no-repeat left bottom;
+	background-size: 300px;
+}	
+
+#logo {
+	width: 300px;
+	height: 130px;
+	top:10px;
+	margin: 0 auto;
+	float:left;
+	position:absolute;
+/* 	background: url(images/OpenAIREplus_logo.png) no-repeat left center; */
+}
+
+#logo h1, #logo p {
+	margin: 0px;
+	line-height: normal;
+	text-transform: none;
+	font-weight: normal;
+	color: #FFFFFF;
+}
+
+#logo p {
+	text-transform: lowercase;
+	font-size: 10px;
+}
+
+#logo h1 {
+	padding-top: 54px;
+	font-size: 34px;
+}
+
+#logo a {
+	text-decoration: none;
+	color: #FFFFFF;
+}
+
+/* Content */
+
+div#content {
+	width: auto;
+	min-height:300px;
+}
+div#content {
+	margin: 0px 0px 0px 0px;
+	float: left;
+	width: 658px;
+	padding-top: 10px;
+	padding-right: 30px;
+}
+
+.showright div#content {
+	margin: 0px 210px 0px 0px;  
+}
+
+
+/* Main */
+
+div#main {
+	/*background: url(images/img07.jpg) repeat-x left bottom;*/
+	width: auto!important;	 
+	min-height:300px;
+}
+ 
+div#main {
+	margin: 0px 0px 0px 0px;
+	padding: 0px 0px 0px 0px;
+}
+#main_container {
+	padding:0px 10px 0px 10px;
+}
+
+.left div#main {
+	margin: 0px 0px 0px 220px;  
+}
+.right div#main {
+	margin: 0px 240px 0px 0px;  
+}
+div#mainmiddle {
+	margin: 0px 0px 15px 0px;
+}
+div#middle {
+	margin: 0px 0px 0px 0px;
+	/*background: #fafafa url(images/middle_bg_t.png) 0 0 repeat-x;*/
+}
+
+div.middle-b {
+	padding: 15px 15px 15px 15px;
+	/*background: url(images/middle_bg_b.png) 0 100% repeat-x;	*/
+
+}
+
+div#middle .background {
+	min-height: 200px; 
+}
+.left div#middle .background {
+	background: url(images/left_bg_l.png) 220px 0 repeat-y;
+}
+/* Left */
+div#left {
+	width: 220px;
+}
+.left div#middle div#left {
+	float: left;
+}
+#left_container {
+	padding:0px 10px 0px 10px;
+}
+#left_container p, #left_container li, #left p, #left li{
+	text-align:left;
+	font-size:12px;
+}
+
+/* Post */
+
+.post {
+	/*background: url(images/img07.jpg) repeat-x left bottom;*/
+	padding-bottom: 25px;
+	padding-top: 5px;
+	margin: 15px 10px 0px 0px;
+	/*height: 180px;*/
+	position: relative;
+}
+
+.postvertical {
+	background: url(images/img07.jpg) repeat-x left bottom;
+	margin-bottom: 25px;
+	margin-top: 20px;
+	margin-right: 120px;
+	margin-left: 30px;
+	float: left;
+	width: 277px;
+}
+
+
+
+.post .title {
+	height: 30px;
+	color: #0F2B5B;
+}
+
+.post .title a {
+	text-decoration: none;
+	color: #585D60;
+}
+
+.post .date {
+}
+
+.post .meta {
+	margin-top: -10px;
+	padding: 2px 30px 2px 16px;
+	background: url(images/help.png) no-repeat left 8px;
+	font-weight: normal;
+	font-size: 10px;
+	color: #66665E;
+}
+
+.post .meta span {
+	display: block;
+	margin-top: -10px;
+}
+
+.post .meta a { 
+	padding-left: 3px;
+	text-decoration: none;
+	color: MediumBlue;
+}
+
+.post .entry {
+	padding: 10px 0;
+}
+
+.post .links {
+	margin: 0 250px 0 0;
+	padding: 0 0 0 0px;
+}
+
+.post .links .comments {
+}
+
+.post .links .permalink {
+	padding-left: 17px;
+}
+
+/* Sid */
+
+#sid {
+	float: left;
+	width: 177px;
+	padding-right: 22px;
+	font-size: 11px;
+	color: #585D60;
+}
+
+#sid ul {
+	margin: 0;
+	padding: 0;
+	list-style: none;
+	line-height: normal;
+}
+
+#sid li {
+	margin-bottom: 30px;
+	padding: 0 0 10px 0px;
+}
+
+#sid li ul {
+}
+
+#sid li li {
+	margin: 0;
+	padding: 7px 10px 10px 7px;
+	background: url(images/img07.jpg) repeat-x left bottom;
+}
+
+#sid p {
+	margin: 0;
+	padding: 0px 10px;
+}
+
+#sid h2 {
+	height: 26px;
+	margin: 0 0 10px 0px;
+	padding: 12px 0 2px 7px;
+	font-size: 18px;
+	font-weight: normal;
+	color: #464F54;
+}
+
+
+#sid p {
+	line-height: 200%;
+}
+#sid a {
+	text-align: left;
+	text-decoration: none;
+	font-weight: normal;
+	color: #585D60;
+}
+
+/* Calendar */
+
+#calendar {
+}
+
+#calendar caption {
+	padding-bottom: 5px;
+	font-weight: bold;
+}
+
+#calendar table {
+	width: 100%;
+	border-collapse: collapse;
+	border-bottom: 1px solid #24130F;
+	border-left: 1px solid #24130F;
+	border-right: 1px solid #24130F;
+}
+
+#calendar thead th {
+	padding: 5px 0;
+	text-align: center;
+	border-top: 1px solid #24130F;
+	border-left: 1px solid #24130F;
+	background: #24130F;
+}
+
+#calendar tbody td {
+	padding: 5px 0;
+	text-align: center;
+	border-top: 1px solid #24130F;
+	border-left: 1px solid #24130F;
+	border-bottom: 1px solid #24130F;
+}
+
+#calendar tfoot td {
+	padding: 5px;
+	border-left: 1px solid #24130F;
+	border-bottom: 1px solid #24130F;
+}
+
+#calendar tfoot #next {
+	border-top: 1px solid #24130F;
+	text-align: right;
+}
+
+#calendar tfoot #prev {
+	border-top: 1px solid #24130F;
+}
+
+#calendar .pad {
+	border-bottom: 1px solid #24130F;
+}
+
+#calendar #today {
+	background: #24130F;
+}
+
+/* Footer */
+
+#footer {
+	padding-top:10px;
+	clear: both;  
+	height: 62px;
+	background:#3440B5;
+	color:#ffffff;
+	border-top:1px solid #DADADA;
+
+	overflow: hidden;
+}
+
+#footer-bgcontent {
+	height: 62px;
+	padding: 10px;
+	background-attachment: scroll;
+    background-image: url("images/EC_logo_blue_multi_horizontal.png");
+    background-position: 95% 10%;
+    background-repeat: no-repeat;
+}
+
+#footer p {
+	font-size: 12px; font-family: "OpenSansLight"; 
+	margin: 0;
+	text-align: center;
+}
+
+#footer a {
+	color: #E5FFC4;
+}
+
+/* Table */
+
+#gradient-style
+{
+	font-size:100%;
+	text-align: left;
+	border-collapse: collapse;
+}
+#gradient-style th
+{
+	font-size: 110%;
+	font-weight: normal;
+	padding: 3px;
+	background: #F0F0F0;
+	border-top: 2px #CCCCCC solid;
+	border-bottom: 2px #CCCCCC solid;
+	color: #0F2B5B;
+}
+#gradient-style td
+{
+	padding:0px 3px;
+	border-bottom: 1px solid #fff;
+	color: #669;
+	border-top: 1px solid #fff;
+	background: #F0F0F0;
+}
+
+#gradient-style tfoot tr td
+{
+	background: #e8edff;
+	font-size: normal;
+	color: #99c;
+}
+#gradient-style tbody tr:hover td
+{
+	background: #0F2B5B;
+	color: #FFFFFF!important;
+}
+
+#gradient-style tbody tr:hover td a
+{
+	color: #fff!important;
+	text-decoration:underline;
+}
+
+.errordiv {
+	background-color:#FFFAE6;
+	padding: 5px 10px 5px 10px;
+	border-top: 1px dotted #AAB4BE;
+	border-bottom: 1px dotted #AAB4BE;
+}
+.errordiv:hover {
+}
+/* expand - colapse fields */
+
+.optiontable_container {
+	position:relative;
+	z-index:100;
+	min-width: 400px;
+}
+
+.optiontable_ttl {
+	line-height: 1em;
+	display:block;
+	margin-top: 0;
+	margin-bottom: 0;
+	padding-top: 0;
+	padding-bottom: 0;
+	padding-left: 10px;
+	padding-right: 10px;
+	border-color: #aeadad;
+	border-style: solid;
+	border-width:0 1px 1px;
+}
+
+.optiontable_content {
+	display:block;
+	padding-top: 5px;
+	padding-bottom: 5px;
+	padding-left: 2px;
+	padding-right: 2px;
+	border-color: #aeadad;
+	border-style: solid;
+	border-width:0 1px;
+}
+.contentR {
+	border-left: #aeadad solid 1px;
+	border-right: #aeadad solid 1px;
+}
+.usage {
+	border-left: #aeadad solid 1px;
+	border-right: #aeadad solid 1px;
+}
+
+.optiontable_content2 {
+	overflow:auto;
+	height: auto;/*30em;*/
+}
+
+.floatleft {
+	float: left;
+	padding-right: 10px;
+}
+
+
+a.help {
+    -moz-background-clip: border;
+    -moz-background-origin: padding;
+    -moz-background-size: auto auto;
+    background-attachment: scroll;
+    background-color: transparent;
+    background-image: url("images/help2.png");
+    background-position: 0 0;
+    background-repeat: no-repeat;
+    padding-left: 20px;
+}
+a.external {
+    -moz-background-clip: border;
+    -moz-background-origin: padding;
+    -moz-background-size: auto auto;
+    background-attachment: scroll;
+    background-color: transparent;
+    background-image: url("images/icon_external.png");
+    background-position: 0 40%;
+    background-repeat: no-repeat;
+    padding-left: 17px;
+}
+
+a.toplink {
+    background-attachment: scroll;
+    background-color: transparent;
+    background-image: url("images/footer_anchor.png");
+    background-position: bottom right;
+    background-repeat: no-repeat;
+    font-size: 12px;
+	width: 30px;
+	height: 5px;
+	display: block;
+	text-decoration: none;
+}
+
+a.download {
+    padding-left: 17px;
+    background: url(images/icon_download.png) 0 40% no-repeat;
+}
+
+.cmenu {
+	font-size: 12px;
+	margin : 10px 0px;
+	padding : 0px 10px 0px 0px;
+}
+
+a.cmenulink {
+	color: #0F2B5B;
+	text-transform: uppercase;
+	text-decoration: none;
+}
+
+a.selectlink {
+	text-decoration: none;
+}
+
+.nest {
+	padding-left:20px;
+	display: block;
+}
+
+/*
+ * Clearing & Floating
+ */
+ 
+.clearfix:after {
+	content: "."; 
+	display: block; 
+	height: 0;  
+	clear: both; 
+	visibility: hidden;
+}	
+ 
+.clearfix { display: block; }
+
+.floatbox { overflow:hidden; }
+
+.float-left { float: left; overflow: hidden; }
+.float-right { float: right; overflow: hidden; }
+
+.width15 { width: 14.999%; }
+.width18 { width: 18.333%; }
+.width20 { width: 19.999%; }
+.width23 { width: 22.999%; }
+.width25 { width: 24.999%; }
+.width33 { width: 33.333%; }
+.width35 { width: 34.999%; }
+.width40 { width: 39.999%; }
+.width45 { width: 44.999%; }
+.width50 { width: 49.999%; }
+.width54 { width: 53.999%; }
+.width65 { width: 64.999%; }
+.width75 { width: 74.999%; }
+.width100 { width: 100%; }
+
+.separator {
+	/*padding-right: 25px;*/
+	background: url(images/module_separator_m.png) 100% 0 repeat-y;
+}
+
+/* ajax request */
+#log_res {
+	overflow: auto;
+}
+ 
+#log_res.ajax-loading {
+	padding: 20px 0;
+	background: url(images/spinner.gif) no-repeat;
+}
+
+.button-default,
+.button-primary,
+form.style button,
+form.style input[type='button'],
+form.style input[type='submit'] { 
+	padding: 8px 14px;
+	margin-top: 5px;
+	margin-bottom: 5px;
+	border-radius: 2px; 
+	border: none;
+	box-shadow: inset 0 -1px 0 rgba(0,0,0,0.15);
+}
+
+/* Default */
+.button-default,
+form.style button,
+form.style input[type='button'],
+form.style input[type='submit'] {
+	background-color: #f5f5f5;
+	background-image: -o-linear-gradient(rgba(240,240,240,0), #dbdbdb);
+	background-image: -webkit-linear-gradient(rgba(240,240,240,0), #dbdbdb);
+	background-image: -moz-linear-gradient(rgba(240,240,240,0), #dbdbdb);
+	background-image: linear-gradient(rgba(240,240,240,0), #dbdbdb);
+	text-shadow: 0 1px 0 #fff;
+	text-decoration: none;
+	display: inherit;
+	text-align: center;
+	text-shadow: 0 1px 0 rgba(255,255,255,0.5);
+	color: #878787;
+}
+
+.button-default:hover,
+form.style button:hover,
+form.style input[type='button']:hover,
+form.style input[type='submit']:hover {
+	background-color: #dbdbdb;
+	box-shadow: inset 0 1px 5px rgba(0,0,0,0.1),
+				inset 0 0 1px rgba(0,0,0,0.1);
+}
+
+.button-default:active,
+form.style button:active,
+form.style input[type='button']:active,
+form.style input[type='submit']:active {
+	color: #737373;
+	box-shadow: inset 0 1px 5px rgba(0,0,0,0.1),
+				inset 0 0 1px rgba(0,0,0,0.1);
+}
+
+/* Primary */
+.button-primary {
+	color: #fff;
+	text-shadow: 0 -1px 0 rgba(0,0,0,0.3);
+}
+
+.button-primary:hover {
+	box-shadow: inset 0 1px 5px rgba(0,0,0,0.3),
+				inset 0 0 1px rgba(0,0,0,0.3);
+	color: #fff;
+}
+
+.button-primary:active {
+	box-shadow: inset 0 1px 8px rgba(0,0,0,0.4),
+				inset 0 0 1px rgba(0,0,0,0.3);
+	text-shadow: 0 0 5px #fff;
+}
+.wrapword{
+white-space: -moz-pre-wrap !important;  /* Mozilla, since 1999 */
+white-space: -pre-wrap;      /* Opera 4-6 */
+white-space: -o-pre-wrap;    /* Opera 7 */
+white-space: pre-wrap;       /* css-3 */
+word-wrap: break-word;       /* Internet Explorer 5.5+ */
+word-break: break-all;
+white-space: normal;
+}
+
+/* Zebra List and Table */
+table.zebra th, table.zebra td { padding: 5px; }
+table.zebra th { color:#3440B5 ;font-size: 14px; font-weight: normal; text-align: left; }
+table { border-collapse: collapse; border-spacing: 0; }
+table.zebra tbody, table.zebra tfoot { font-size: 12px; font-family: "OpenSansLight"; }
+
+table.zebra tbody td { border-bottom: 1px solid #ddd; word-wrap:break-word; }
+table.zebra tbody tr:first-child td { border-top: 1px solid #ddd; }
+
+table.zebra tbody tr.odd { background: url(images/zebra_list.png) 0 0 repeat; }
+table.zebra tbody tr:nth-of-type(odd) { background: url(images/zebra_list.png) 0 0 repeat;}
+
+table.zebra caption { color: #999; }
+table.zebra tbody tr:hover td { background: #E7E7E7; }
+
+/* Zebra List and Table */
+table.zebra1 th, table.zebra td { padding: 5px; }
+table.zebra1 th { font-size: 14px; font-weight: normal; text-align: left; }
+table { border-collapse: collapse; border-spacing: 0; }
+table.zebra1 tbody, table.zebra tfoot { font-size: 12px; font-family: "OpenSansLight"; }
+
+table.zebra1 tbody td { border-bottom: 0px solid #ddd; word-wrap:break-word; }
+table.zebra1 tbody tr:first-child td { border-top: 1px solid #ddd; }
+
+table.zebra1 tbody tr th{ color:black; }
+table.zebra1 tbody tr:first-child td { border-top: 0px solid #ddd; }
+
+table.zebra1 tbody th.numb {  background: #2D72D6; border: none; color: white;}
+table.zebra1 tbody td.numb {  background: #00B5F0; border: none; padding-left: 10px; color: white;}
+table.zebra1 tbody td.cb {  background: #dddddd; border: none; padding-left: 7px; color: white;}
+
+table.zebra1 caption { color: #999; }
+/* table.zebra1 tbody tr:hover  { background: #E7E7E7; } */
+
+
+/*----- Tabs -----*/
+.tabs {
+    width:100%;
+    display:inline-block;
+}
+ 
+    /*----- Tab Links -----*/
+    /* Clearfix */
+    .tab-links:after {
+        display:block;
+        clear:both;
+        content:'';
+    }
+ 
+    .tab-links li {
+        margin:0px 5px;
+        float:left;
+        list-style:none;
+        margin-bottom: -12px;
+    }
+    
+        .tab-links a {
+            padding:9px 15px;
+            display:inline-block;
+            border-radius:3px 3px 0px 0px;
+/*             background:#7FB5DA; */
+            background:#2D72D6;
+            text-decoration:none;
+			font-size: 15px;
+            font-weight:normal;;
+/*             color:#4c4c4c; */
+			color: #3440B5;
+            color:white;
+            transition:all linear 0.15s;
+/*             font-family: "YanoneKaffeesatzLight"; */
+/*             padding: 0 12px; */
+/* outline: 0; */
+/* position: relative; */
+/* white-space: nowrap; */
+
+        }
+ 
+        .tab-links a:hover {
+            background:#a7cce5;
+            text-decoration:none;
+        }
+
+    li.active a, li.active a:hover {
+        background:#F3F3F3;
+        color:#2D72D6;
+    }
+ 
+    /*----- Content of Tabs -----*/
+    .tab-content {
+        padding:10px;
+        border-radius:3px;
+        box-shadow:-1px 1px 1px rgba(0,0,0,0.15);
+        background:#F3F3F3;
+    }
+ 
+        .tab {
+            display:none;
+        }
+ 
+        .tab.active {
+            display:block;
+        }
\ No newline at end of file
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/deleteJobs.jsp
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/deleteJobs.jsp	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/deleteJobs.jsp	(revision 47450)
@@ -0,0 +1,65 @@
+<%@ page contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<%@ taglib prefix="s" uri="/struts-tags"%>
+<%@ taglib prefix="sj" uri="/struts-jquery-tags"%>
+<html>
+<head>
+<link href="jsps/style.css" rel="stylesheet" type="text/css" media="screen" />
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<!--<meta http-equiv="refresh" content="13" >-->
+<title><s:text name="manageJobs.deleteJobs.title"/></title>
+<link href="jsps/favicon.ico" rel="shortcut icon" type="image/x-icon" />
+<sj:head />
+</head>
+<body class="left">
+
+<div id="wrapper">
+	<jsp:include page="menu.jsp"/>
+	<div id="page">
+		<div id="page-bgtop">
+			<div id="middle">
+                <div class="middle-b">
+                    <div class="background">
+                    	<div id="left">
+                        	<div id="left_container">
+	                             <h2 class="helpHdr">Info</h2>
+                                 <s:text name="help.browsevalidations"/>
+                            </div>
+                        </div>
+                        <div id="main">
+                            <div id="main_container" class="clearfix">
+                                <div id="mainmiddle" class="floatbox">
+                                    <h1 class="title"><s:text name="manageJobs.deleteJobs.title"/></h1>
+<%--                                     <s:if test="%{enableCuration}"> --%>
+	                                    <s:form action="curateDB">
+	                                   		 <s:select name="period" 
+	                                    		key="manageJobs.deleteJobs.deleteOld"
+ 	                          					list="#{'older':'older than', 'newer':'newer than', 'exact':'of'}"
+                                            	required="true"
+	  					                    />
+     										<sj:datepicker name="inDate" changeMonth="true" changeYear="true" displayFormat="yy-mm-dd"/>
+<%-- 	                                    	<s:textfield name="inDate" value="YYYY-MM-DD"/> --%>
+	                                    	<s:select name="mode" 
+	                                    		key="manageJobs.deleteJobs.whatToDelete"
+ 	                          					list="#{'all':'All jobs', 'compTest_only':'Compatibility Tests only', 'uncompleted_only':'Uncompleted jobs','import':'Import jobs'}"
+                                            	required="true"
+	  					                    />
+	                                    	<s:submit cssClass="button-default"/>
+	                                    </s:form>
+<%-- 	                               </s:if> --%>
+                                    
+								</div>
+                            </div>
+                        </div>
+                    </div>
+                </div>
+            </div>
+		</div>
+		<!-- NMI This needs to be the same in all pages and the text is some properties file -->
+        <div id="footer"> 
+           <jsp:include page="footer.jsp"/>
+        </div>
+	</div>
+</div>
+</body>
+</html>
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/createRuleSet.jsp
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/createRuleSet.jsp	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/createRuleSet.jsp	(revision 47450)
@@ -0,0 +1,106 @@
+<%@ page contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<%@ taglib prefix="s" uri="/struts-tags"%>
+<html>
+<head>
+<link href="jsps/favicon.ico" rel="shortcut icon" type="image/x-icon" />
+<link href="jsps/style.css" rel="stylesheet" type="text/css" media="screen" />
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<s:if test="%{#session.isAdmin != null && #session.isAdmin.equals(\"true\")}">
+        <s:set name="isAdmin" value="true"/>
+</s:if>
+<s:else>
+        <s:set name="isAdmin" value="false"/>
+</s:else>
+<title>
+        <s:if test="%{#isAdmin}">
+                <s:text name="createRuleSet.title"/>
+        </s:if>
+        <s:else>
+                <s:text name="createRuleSet.title2"/>
+        </s:else>
+</title>
+</head>
+<body class="left">
+<div id="wrapper">
+	<jsp:include page="menu.jsp"/>
+	<div id="page">
+	<div id="page-bgtop">
+	<div id="middle">
+            <div class="middle-b">
+                <div class="background">
+			 <div id="left">
+                              <div id="left_container" >
+                                   <h2 class="helpHdr">Info</h2>
+                                   <s:text name="help.admin"/>
+                              </div>
+                         </div>
+                        <div id="main">
+                        <div id="main_container" class="clearfix">
+			<div id="content">
+				<s:if test="%{#isAdmin}">
+                                        <h2 class="title"><s:text name="createRuleSet.title"/></h2>
+                                </s:if>
+                                <s:else>
+                                        <h2 class="title"><s:text name="createRuleSet.title2"/></h2>
+                                </s:else>
+                                <div class="entry">
+                                        <s:form action="createRuleSet">
+                                                <s:hidden name="funct"/>
+                                                <s:hidden name="ruleSet.id"/>
+                                                <s:textfield name="ruleSet.name" key="createRuleSet.name"/>
+                                                <s:textfield name="ruleSet.shortName" key="createRuleSet.shortName"/>
+                                                <s:textfield name="ruleSet.description" key="createRuleSet.description"/>
+                                                <s:textfield name="ruleSet.guidelinesAcronym" key="createRuleSet.guidelinesAcronym"/>
+<%--                                                 <s:textfield name="ruleSet.visibility" key="createRuleSet.visibility"/> --%>
+                                                 
+                                                <s:select key="createRuleSet.visibility"
+                                                       name="ruleSet.visibility"
+                                                       list="deployEnvironments"
+                                                       multiple="true"
+                                                       size="%{#ruleSet.visibility.size()}"
+                                                       value="%{ruleSet.visibility}"
+                                                       disabled='%{!#isAdmin}'
+                                                /> 
+                                                 
+                                                <s:select key="createRuleSet.rulesContent"
+                                                       name="chosenContentRules"
+                                                       list="rulesContent"
+                                                       listKey="id"
+                                                       listValue="name"
+                                                       multiple="true"
+                                                       size="%{#rulesContent.size()}"
+                                                       value="%{ruleIdsContent}"
+                                                       disabled='%{!#isAdmin}'
+                                                />
+                                                <s:select key="createRuleSet.rulesUsage"
+                                                       name="chosenUsageRules"
+                                                       list="rulesUsage"
+                                                       listKey="id"
+                                                       listValue="name"
+                                                       multiple="true"
+                                                       size="%{#rulesUsage.size()}"
+                                                       value="%{ruleIdsUsage}"
+                                                       disabled='%{!#isAdmin}'
+                                                />
+
+                                                <s:if test="%{#isAdmin}">
+                                                	<s:submit cssClass="button-default"/>
+                                                </s:if>
+                                        </s:form>
+                                </div>
+
+			</div>
+			</div>
+			</div>
+		</div>
+	</div>
+	</div>
+	</div>
+    <div id="footer">
+                <jsp:include page="footer.jsp"/>
+        </div>
+	</div>
+</div>
+</body>
+</html>
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/images/list_checkbox.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/images/list_checkbox.png
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/images/list_checkbox.png	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/images/list_checkbox.png	(revision 47450)

Property changes on: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/images/list_checkbox.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/images/pluslogo_sm.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/images/pluslogo_sm.png
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/images/pluslogo_sm.png	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/images/pluslogo_sm.png	(revision 47450)

Property changes on: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/images/pluslogo_sm.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/images/compliant.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/images/compliant.png
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/images/compliant.png	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/images/compliant.png	(revision 47450)

Property changes on: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/images/compliant.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/images/list_arrow.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/images/list_arrow.png
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/images/list_arrow.png	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/images/list_arrow.png	(revision 47450)

Property changes on: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/images/list_arrow.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/images/arrow_left.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/images/arrow_left.png
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/images/arrow_left.png	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/images/arrow_left.png	(revision 47450)

Property changes on: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/images/arrow_left.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/images/box_alert.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/images/box_alert.png
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/images/box_alert.png	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/images/box_alert.png	(revision 47450)

Property changes on: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/images/box_alert.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/images/ajax_loader_blue_32.gif
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/images/ajax_loader_blue_32.gif
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/images/ajax_loader_blue_32.gif	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/images/ajax_loader_blue_32.gif	(revision 47450)

Property changes on: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/images/ajax_loader_blue_32.gif
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/images/re3data.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/images/re3data.png
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/images/re3data.png	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/images/re3data.png	(revision 47450)

Property changes on: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/images/re3data.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/images/menu_dropdown_level1_parent_blue.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/images/menu_dropdown_level1_parent_blue.png
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/images/menu_dropdown_level1_parent_blue.png	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/images/menu_dropdown_level1_parent_blue.png	(revision 47450)

Property changes on: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/images/menu_dropdown_level1_parent_blue.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/images/tick.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/images/tick.png
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/images/tick.png	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/images/tick.png	(revision 47450)

Property changes on: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/images/tick.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/java/eu/dnetlib/validator/admin/config/CascadingPropertyLoader.java
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/java/eu/dnetlib/validator/admin/config/CascadingPropertyLoader.java	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/java/eu/dnetlib/validator/admin/config/CascadingPropertyLoader.java	(revision 47450)
@@ -0,0 +1,55 @@
+package eu.dnetlib.validator.admin.config;
+
+import java.util.Properties;
+
+import org.springframework.beans.BeansException;
+import org.springframework.beans.factory.InitializingBean;
+import org.springframework.beans.factory.config.ConfigurableListableBeanFactory;
+import org.springframework.beans.factory.config.PropertyPlaceholderConfigurer;
+
+/**
+ * CascadingPropertyLoader loads a number of property files and mergers them together, so that the last properties
+ * override the previous. It also supports property expansion like:
+ * 
+ * <code>
+ *   something = 1
+ *   somethingelse = 2
+ *   test = ${something}/${somethingelse}
+ *  </code>
+ * 
+ * <p>
+ * And if you override something to XX, then test will become XX/2
+ * </p>
+ * 
+ * 
+ * @author marko
+ * 
+ */
+public class CascadingPropertyLoader extends PropertyPlaceholderConfigurer implements InitializingBean {
+
+	private Properties properties;
+
+	public void afterPropertiesSet() throws Exception {
+		this.properties = mergeProperties();
+
+		// Convert the merged properties, if necessary.
+		convertProperties(this.properties);
+		
+		logger.debug("Properties: " + properties);
+	}
+
+	@Override
+	protected void processProperties(final ConfigurableListableBeanFactory beanFactoryToProcess, final Properties props) throws BeansException {
+		super.processProperties(beanFactoryToProcess, props);
+	}
+
+	public Properties getProperties() {
+		return properties;
+	}
+
+	public void setProperties(final Properties properties) {
+		super.setProperties(properties);
+		
+		this.properties = properties;
+	}
+}
\ No newline at end of file
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/images/register.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/images/register.png
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/images/register.png	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/images/register.png	(revision 47450)

Property changes on: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/images/register.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/images/icon_file.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/images/icon_file.png
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/images/icon_file.png	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/images/icon_file.png	(revision 47450)

Property changes on: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/images/icon_file.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/java/eu/dnetlib/validator/admin/constants/fielddetails/FieldDetails.java
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/java/eu/dnetlib/validator/admin/constants/fielddetails/FieldDetails.java	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/java/eu/dnetlib/validator/admin/constants/fielddetails/FieldDetails.java	(revision 47450)
@@ -0,0 +1,32 @@
+package eu.dnetlib.validator.admin.constants.fielddetails;
+
+public class FieldDetails {
+
+	private String tableName;
+	private String fieldName;
+	// true if the user must provide a value for this field when adding a new record in the table
+	private boolean forDet;
+	
+	public String getTableName() {
+		return tableName;
+	}
+	public void setTableName(String tableName) {
+		this.tableName = tableName;
+	}
+	public String getFieldName() {
+		return fieldName;
+	}
+	public void setFieldName(String fieldName) {
+		this.fieldName = fieldName;
+	}
+	public boolean isForDet() {
+		return forDet;
+	}
+	public void setForDet(boolean forDet) {
+		this.forDet = forDet;
+	}
+	
+	public String getBundleName() {
+		return this.tableName+"."+this.fieldName;
+	}
+}
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/images/checkmark_28.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/images/checkmark_28.png
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/images/checkmark_28.png	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/images/checkmark_28.png	(revision 47450)

Property changes on: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/images/checkmark_28.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/images/zebra_list.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/images/zebra_list.png
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/images/zebra_list.png	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/images/zebra_list.png	(revision 47450)

Property changes on: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/images/zebra_list.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/images/box_download.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/images/box_download.png
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/images/box_download.png	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/images/box_download.png	(revision 47450)

Property changes on: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/images/box_download.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/images/readmore.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/images/readmore.png
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/images/readmore.png	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/images/readmore.png	(revision 47450)

Property changes on: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/images/readmore.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/resources/eu/dnetlib/validator/admin/api/emailTeplate.vm
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/resources/eu/dnetlib/validator/admin/api/emailTeplate.vm	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/resources/eu/dnetlib/validator/admin/api/emailTeplate.vm	(revision 47450)
@@ -0,0 +1,20 @@
+Greetings,
+
+The unsuccessful registration attempts during $month
+were the following (datasource Name, base URL, contact mail, compliance level):
+
+#foreach( $datasource in $failedJobs )
+$datasource.name, $datasource.baseUrl, $datasource.email, $datasource.compliance
+#end
+$noneFailed
+
+The successful ones were the following:
+
+#foreach( $datasource in $passedJobs )
+$datasource.name, $datasource.baseUrl, $datasource.email, $datasource.compliance
+#end
+$nonePassed
+
+Regards,
+Validator's administrator
+
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/images/inprogress.jpg
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/images/inprogress.jpg
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/images/inprogress.jpg	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/images/inprogress.jpg	(revision 47450)

Property changes on: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/images/inprogress.jpg
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/images/list_star.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/images/list_star.png
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/images/list_star.png	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/images/list_star.png	(revision 47450)

Property changes on: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/images/list_star.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/images/register.jpg
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/images/register.jpg
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/images/register.jpg	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/images/register.jpg	(revision 47450)

Property changes on: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/images/register.jpg
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/images/arrow_right.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/images/arrow_right.png
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/images/arrow_right.png	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/images/arrow_right.png	(revision 47450)

Property changes on: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/images/arrow_right.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/images/e-Infrastructure_capacities_tr.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/images/e-Infrastructure_capacities_tr.png
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/images/e-Infrastructure_capacities_tr.png	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/images/e-Infrastructure_capacities_tr.png	(revision 47450)

Property changes on: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/images/e-Infrastructure_capacities_tr.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/images/wrong.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/images/wrong.png
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/images/wrong.png	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/images/wrong.png	(revision 47450)

Property changes on: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/images/wrong.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/images/left_bg_l.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/images/left_bg_l.png
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/images/left_bg_l.png	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/images/left_bg_l.png	(revision 47450)

Property changes on: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/images/left_bg_l.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/images/number-1.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/images/number-1.png
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/images/number-1.png	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/images/number-1.png	(revision 47450)

Property changes on: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/images/number-1.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/images/help2.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/images/help2.png
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/images/help2.png	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/images/help2.png	(revision 47450)

Property changes on: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/images/help2.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/images/middle_bg_t.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/images/middle_bg_t.png
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/images/middle_bg_t.png	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/images/middle_bg_t.png	(revision 47450)

Property changes on: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/images/middle_bg_t.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/images/footer_bg_m.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/images/footer_bg_m.png
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/images/footer_bg_m.png	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/images/footer_bg_m.png	(revision 47450)

Property changes on: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/images/footer_bg_m.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/images/top_icon.gif
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/images/top_icon.gif
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/images/top_icon.gif	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/images/top_icon.gif	(revision 47450)

Property changes on: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/images/top_icon.gif
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/images/number-3.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/images/number-3.png
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/images/number-3.png	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/images/number-3.png	(revision 47450)

Property changes on: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/images/number-3.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/resources/eu/dnetlib/validator/admin/api/error_messages.txt
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/resources/eu/dnetlib/validator/admin/api/error_messages.txt	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/resources/eu/dnetlib/validator/admin/api/error_messages.txt	(revision 47450)
@@ -0,0 +1,28 @@
+error.parametersMissing.ruleId=Rule id must be specified in the parameters given
+error.parametersMissing.jobId=Job id must be specified in the parameters given
+error.badParameter.idNotNumerical=The id was not numerical
+error.badParameter.unknownType=The type specified is incorrect
+rules.name.error.message1=A value must be defined for the field name
+rules.description.error.message1=A value must be defined for the field description
+rules.type.error.message1=A value must be defined for the field type
+rules.mandatory.error.message1=A value must be defined for the field mandatory
+rules.success.error.message1=A value must be defined for the field success
+rules.success.error.message2=First character for success must be one of =, > or <
+rules.success.error.message3=Field success must contain only numerical characters after the first character
+rules.weight.error.message1=Value of field weight must be numerical
+rules.provider_information.error.message1=A value must be specified for the provider information field
+rules.job_type.error.message1=Job type must be one of the available types
+rules.job_type.error.message2=A job type must be specified for this rule
+cardinality_rule.greater_than.error.message1=Value of field 'greater than' must be numerical
+cardinality_rule.less_than.error.message2=Less and Greater cannot be both without value
+cardinality_rule.less_than.error.message1=Value of field 'less than' must be numerical
+NotConfusedFields_Rule.field1.error.message1=Fields 'field1' and 'field2' must both have a value
+NotConfusedFields_Rule.field1.error.message2=Fields 'field1' and 'field2' must have a different value
+RegularExpression_Rule.regular_expression.error.message1=Field 'regular expression' must have a value
+RetrievableResource_Rule.max_depth.error.message1=Field 'max_depth' must have a numerical value
+Vocabulary_Rule.words.error.message1=A value must be defined for the 'words' field
+OAI_Content_Job.records.error.message1=Field 'records' cannot be empty
+OAI_Content_Job.records.error.message2=At least one record must be used for the validation
+OAI_Content_Job.records.error.message3=Value of field 'records' must be numerical
+OAI_Content_Job.random.error.message1=Value of field 'random' must be boolean (true or false)
+OAI_Content_Job.base_url.error.message1=Value of field 'base url' doesn't seem to be a valid url adress
\ No newline at end of file
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/images/external_link.gif
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/images/external_link.gif
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/images/external_link.gif	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/images/external_link.gif	(revision 47450)

Property changes on: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/images/external_link.gif
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/images/logo_openaire.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/images/logo_openaire.png
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/images/logo_openaire.png	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/images/logo_openaire.png	(revision 47450)

Property changes on: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/images/logo_openaire.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/images/help.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/images/help.png
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/images/help.png	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/images/help.png	(revision 47450)

Property changes on: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/images/help.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/menu.jsp
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/menu.jsp	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/menu.jsp	(revision 47450)
@@ -0,0 +1,160 @@
+<%@ page contentType="text/html;charset=UTF-8" pageEncoding="UTF-8"%>
+<%@ taglib prefix="s" uri="/struts-tags"%>
+
+<link href="jsps/ddmenu.css" rel="stylesheet" type="text/css" media="screen" />
+<script src="jsps/js/ddmenu.js" type="text/javascript"></script>
+
+
+	<div id="header">
+	<div id="topmenu">
+		<ul>
+				<s:if test="%{#session.email == null}">
+					<li   style="float: right;">
+						<a href='<s:url action="go2login" />'><s:text name="menu.account.login" /></a>
+					</li>
+				</s:if>
+				
+				<s:else>
+					<li  style="float: right;">
+						<a href='<s:url action="logout" />'><s:text name="menu.account.logout" />(<s:property value="#session.email" />)</a>
+					</li>
+					<li  style="float: right;">
+						<a href='<s:url action="userDetails" />'><s:text name="menu.account.edit" /></a>
+					</li>
+				</s:else>
+		</ul>
+	</div>
+			<s:if test="%{deployEnvironment.trim().toLowerCase().equals(\"lareferencia\")}">
+				<div id="logoLareferencia"></div>
+			</s:if>
+			<s:else>
+				<div id="logo">
+					<a id="logo" href="https://www.openaire.eu">
+					<img src="jsps/images/openairepluslogo.png" alt="openairepluslogo" width="171" height="120">
+					</a>
+				</div>
+			</s:else>
+		<nav id="ddmenu">
+			<ul>
+				<li><a href='<s:url action="welcome" />'><s:text name="menu.home" /></a></li>
+				
+<%-- 						<s:if test="%{repoMode.trim().toLowerCase().equals(\"dnet\")}"> --%>
+				<li>
+					<s:text name="home.manageRules" />
+					<div>
+					<div class="column">
+						<s:if test="%{#session.isAdmin != null && #session.isAdmin.equals(\"true\")}">
+						
+							<a href='<s:url action="populateRuleCategories" />'>
+								<s:text name="home.manageRules.addRule" />
+							</a>
+							<a href='<s:url action="populateRuleListForEdit" />'>
+								<s:text name="home.manageRules.editRule" />
+							</a>
+							<a href='<s:url action="populateRuleListForClone" />'>
+								<s:text name="home.manageRules.cloneRule" />
+							</a>
+							<a href='<s:url action="populateRuleList" />'>
+								<s:text name="home.manageRules.deleteRule" />
+							</a>
+						</s:if>
+						<s:else>
+							<a href='<s:url action="populateRuleListForEdit" />'>
+								<s:text name="home.manageRules.viewRule" />
+							</a>
+						</s:else>
+					</div>
+					</div>					
+				</li>
+				
+				<li>
+					<s:text name="home.manageRulesets" />
+					<div>
+					<div class="column">
+						<s:if test="%{#session.isAdmin != null && #session.isAdmin.equals(\"true\")}">
+							<a href='<s:url action="getRulesForSet" />'>
+								<s:text name="home.manageRulesets.createRuleSet" />
+							</a>
+							<a href='<s:url action="getRuleSets" />'>
+								<s:text name="home.manageRulesets.editRuleSet" />
+							</a>
+							<a href='<s:url action="getRuleSetsForDeletion" />'>
+								<s:text name="home.manageRulesets.deleteRuleSet" />
+							</a>
+						</s:if>
+						<s:else>
+							<a href='<s:url action="getRuleSets" />'>
+								<s:text name="home.manageRulesets.viewRuleSet" />
+							</a>
+						</s:else>
+					</div>
+					</div>					
+				</li>
+				
+				
+				<li>
+					<s:text name="home.manageJobs" />
+					<div>
+					<div class="column">
+					  <s:if test="%{#session.isAdmin != null && #session.isAdmin.equals(\"true\")}">
+						<a href='<s:url action="deleteJobs" />'>
+							<s:text name="home.manageJobs.deleteJobs" />
+						</a>
+						
+							<s:if test="%{!deployEnvironment.trim().toLowerCase().equals(\"lareferencia\")}">
+							<a href='<s:url action="registrationsReport" />'>
+								<s:text name="home.manageJobs.sendReport" />
+							</a>
+							</s:if>
+					  </s:if>
+<%-- 					  		<s:if test="%{!deployEnvironment.trim().toLowerCase().equals(\"lareferencia\")}"> --%>
+<%-- 								<a href='<s:url action="getRuleSetsForDeletion" />'> --%>
+<%-- 									<s:text name="home.manageJobs.viewStats" /> --%>
+<!-- 								</a> -->
+<%-- 							</s:if> --%>
+					</div>
+					</div>					
+				</li>
+				
+				<s:if test="%{!deployEnvironment.trim().toLowerCase().equals(\"lareferencia\")}">
+					<s:if test="%{#session.isAdmin != null && #session.isAdmin.equals(\"true\")}">
+<!-- 						<li> -->
+<%-- 							<s:text name="home.manageUsers" /> --%>
+<!-- 							<div> -->
+<!-- 							<div class="column"> -->
+<%-- 								<a href='<s:url action="getRulesForSet" />'> --%>
+<%-- 									<s:text name="home.manageUsers.addUser" /> --%>
+<!-- 								</a> -->
+<%-- 								<a href='<s:url action="getRuleSets" />'> --%>
+<%-- 									<s:text name="home.manageUsers.editUser" /> --%>
+<!-- 								</a> -->
+<%-- 								<a href='<s:url action="getRuleSetsForDeletion" />'> --%>
+<%-- 									<s:text name="home.manageUsers.makeAdmin" /> --%>
+<!-- 								</a> -->
+<!-- 							</div> -->
+<!-- 							</div>					 -->
+<!-- 						</li> -->
+					</s:if>
+				</s:if>
+				<li>
+					<s:text name="menu.about" />
+					<div>
+					<div class="column">
+						<a href="http://www.openaire.eu//support/faq/repman" target="_blank">
+							<s:text name="menu.about.faq" />
+						</a>
+						<a href='<s:url action="help" />'>
+							<s:text name="menu.about.help" />
+						</a>
+						<a href='<s:url action="feedback" />'>
+							<s:text name="menu.about.feedback" />
+						</a>
+					</div>
+					</div>
+				</li>
+
+			</ul>
+			</nav>
+			
+			<div style="clear:both"></div>
+		</div>
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/resources/web-texts.properties
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/resources/web-texts.properties	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/resources/web-texts.properties	(revision 47450)
@@ -0,0 +1,227 @@
+site.title = Validator Admin Panel
+site.slogan = Tools for validator administration
+
+general.unblock = Please make sure that you can accept mails from
+
+menu.home = Home
+menu.register = Join OpenAIRE
+menu.validate = Test Compatibility
+menu.account = My Account
+menu.about = Help
+menu.account.login = Sign In
+menu.account.registration.title = New User?
+menu.account.registration = Register Now!
+menu.account.logout = Logout
+menu.account.edit = My Account | 
+menu.about.feedback = Send Feedback
+menu.about.faq = FAQ
+menu.about.help = Help Guides
+menu.admin = Admin Panel
+
+homepage.welcome = Welcome to Validator Administration Panel!
+instructions.welcome = How to Join OpenAIRE
+instructions.message = <div class="entry"> <ol> <li> <b>Do you wish your repository or journal to be a part of OpenAIRE?</b> <ul> <li>If you are a new user, start by <a href="go2login.action">creating an account</a>.<br> If you have previously registered in the <a href="http://www.openaire.eu" target="_blank">main OpenAIRE portal</a>, you can use the same account. </li> </ul> <br> </li> <li> <b>Register your repository in <a class="external" href="http://www.opendoar.org/" target="_blank">OpenDOAR</a></b> <i>(this step does not apply for journals)</i> <ul> <li>OpenDOAR is an authoritative worldwide directory of academic open access repositories.</li> </ul> </li> <br> <li> <b>Make your repository/journal OpenAIRE compliant by implementing the <a href="http://guidelines.openaire.eu" class="external" target="_blank" >OpenAIRE Guidelines</a> </b> <ul> <li>If your repository/journal currently has no OpenAIRE records, you will need to create a test record as proof of correct implementation of the guidelines.</li> <li>Create an openaire set and insert your OpenAIRE records in it.</li> <li>If you used a test record, you will need to keep it until your repository/journal is successfully added as OpenAIRE compliant (step 5). Then you can safely delete it.</li> <li>You can find an example of an OpenAIRE compliant record <a href="jsps/manuals/example_record.txt" target="_blank">here</a>.</li> </ul> </li> <br> <li> <b>Test Compatibility</b> <ul> <li>After you have made some progress in implementing the guidelines you should <a href="populateRules.action">run a Compatibility test</a>.</li> <li>Enter the OAI-PMH base URL of your repository/journal and choose to test your repository against the OpenAIRE rule set. Aim for a score of 100, which will be sufficient to allow your repository to join OpenAIRE.</li> <li>After running the test you can <a href="prepareJobBrowsing.action">browse the results</a>. Please note that the results are updated periodically, and the whole test might take some time to finish.</li> </ul> </li> <br> <li> <b>Join OpenAIRE</b> <ul> <li>Now your repository/journal is ready to Join OpenAIRE!</li> <li><i>If you want to add a <b>literature repository</b></i>, click <a href="populateDoarList.action?mode=opendoar" target="_blank">here</a> and locate your repository. Add and correct any details in the form and click submit.<br> <i>If you want to add a <b>data repository</b></i>, click <a href="populateDoarList.action?mode=re3data" target="_blank">here</a> and locate your repository. Add and correct any details in the form and click submit.<br><i>If you want to add a <b>journal</b></i>, click <a href="prepareRepoRegistration.action?mode=journal" target="_blank">here</a>, fill in the form, and click submit.<br> <i>If you want to add an <b>aggregator</b></i>, click <a href="prepareRepoRegistration.action?mode=aggregator" target="_blank">here</a>, fill in the form, and click submit.</li> <li>After a short compatibility test against the OpenAIRE rule set, your repository will be ready to join OpenAIRE.</li> <li>An email will be sent to the repository administrator to confirm this request. Please make sure you have contacted them before registering.</li> <li>If the compatibility test does not succeed, you will be unable to join OpenAIRE until you correct all the errors that are found. Then you must re-submit your request (step 5).</li> </ul> </li> </ol> <p> For more information check the <a href="https://www.openaire.eu/support/faq#moofaqCat-19" target="_blank">FAQ</a> and our detailed <a href="jsps/manuals/user-manual.pdf" target="_blank">help guide</a>.<br> If you need further assistance please contact us through the <a href="https://www.openaire.eu/support/helpdesk" target="blank" class="help"> OpenAIRE Helpdesk</a>. </p><p><i>The validator is a customizable tool that may be installed and operated in various aggregating environments. <br/><a href="mailto:natalia@di.uoa.gr" class="icon-mail">Click here</a> to contact us and receive more information.</i></p> </div>
+homepage.admin.message = You have logged-in using an administrator email. For information on how to create new rules, new rule-sets, and for the various other functionalities, please refer to the <a href="jsps/manuals/administrator-manual.pdf">Administrator Manual</a>.
+homepage.message = You can view rules, rule-sets, job statistics and request changes to rules/rulesets.
+
+
+registration.title = User Registration
+registration.email = E-mail
+registration.password = Password
+registration.repassword = Re-enter password
+registration.successful = <span>An activation e-mail has been sent to the e-mail address you specified. Please follow the link included in that e-mail to activate your account.</span>
+registration.mail.subject = OpenAIRE Account Activation
+registration.mail.message = Please follow this link to activate your account
+registration.okAccountActivation = Account activation was successful! You can now log-in using your account details.
+registration.okAccountAlreadyActivation = Your account is already activated! You can log-in using your account details.
+registration.description = Register to use the OpenAIRE repository manager services
+registration.rememberme = Remember me
+registration.ldap.message = Your email address will be used for signing in the validator service.<br/>For the rest of the OpenAIRE services available through the openAIRE portal you will have to sign in using your username.
+registration.username = Username
+registration.username_email = Username/Email
+registration.firstName = First Name
+registration.lastName = Last Name
+registration.institution = Institution
+
+
+info.title = Information
+
+login.title = User Login
+login.forgotpassword = Forgot your password?
+login.notActivated = Your account has not been activated. Please check your mailbox again and follow the instructions found in the activation email.
+login.incorrectCreds = The credentials you entered are incorrect
+login.userNotExists = The username you specified doesn't have an associated account. You should consider registering it first.
+login.description = If you have an account
+login.overview = This service uses the same sign-in mechanism as the OpenAIRE portal so you can use the same credentials.
+
+forgotPassword.title = Reset Password
+forgotPassword.message = An e-mail will be sent to this address. Please follow the instructions found inside to reset your password.
+forgotPassword.mail.Subject = OpenAIRE Reset Password Request
+forgotPassword.mail.Body1 = To complete your password reset please follow this link
+forgotPassword.mail.Body2 = Security Code
+
+resetPassword.securityCode = Security Code
+resetPassword.securityCode.message = Enter the security code sent to you through mail.
+resetPassword.wrongSecurityCode = Security Code is incorrect
+resetPassword.success = You have successfully changed your password
+
+corneeded.title = Errors Found
+corneeded.back = Please use the "back" button of your browser to correct these errors
+
+manageJobs.deleteJobs.title = Delete Jobs
+manageJobs.deleteJobs.success = jobs deleted successfully
+manageJobs.deleteJobs.deleteOld = Delete jobs 
+manageJobs.deleteJobs.whatToDelete = What to delete
+
+manageJobs.sendReports.title = Send Registrations Report
+manageJobs.sendReports.selectDateFrom = Date from
+manageJobs.sendReports.selectDateTo = Date to
+manageJobs.sendReports.selectMonth = Select Month
+manageJobs.sendReports.selectYear = Select Year
+manageJobs.sendReports.success = Registrations Report sent successfully
+
+chooseRuleCategory.title = Choose Rule Category
+
+chooseRuleForEdit.title = Choose Rule
+chooseRuleForEdit.label = Choose Rule to Edit
+chooseRuleForEdit.label2 = Choose Rule to View
+chooseRuleForClone.label = Choose Rule to Clone
+
+addRule.title = Add Rule
+addRule.success = New rule has been added successfully
+addRule.uploadFile = Upload a File
+
+deleteRule.title = Delete Rule
+deleteRule.label = Choose Rule to Delete
+deleteRule.success = Rule has been deleted
+
+home.title = Homepage
+home.login = Sign In
+home.register = Register
+home.browseJobs = Browse Compatibility Test Results
+
+home.manageRules = Rules
+home.manageRules.addRule = Add New Rule
+home.manageRules.editRule = Edit Rule
+home.manageRules.cloneRule = Clone Rule
+home.manageRules.deleteRule = Delete Rule
+home.manageRules.viewRule = View Rule
+
+home.manageRulesets = RuleSets
+home.manageRulesets.createRuleSet = Create RuleSet
+home.manageRulesets.editRuleSet = Edit RuleSet
+home.manageRulesets.deleteRuleSet = Delete RuleSet
+home.manageRulesets.viewRuleSet = View RuleSet
+
+home.manageJobs = Jobs
+home.manageJobs.deleteJobs = Delete Jobs
+home.manageJobs.sendReport = Send Report
+home.manageJobs.viewStats = View Statistics
+
+home.manageUsers = Users
+home.manageUsers.addUser = Add User
+home.manageUsers.editUser = Edit User
+home.manageUsers.makeAdmin = Make Admin
+
+home.logout = Logout
+
+
+editRule.title = Edit Rule
+editRule.title2 = View Rule
+editRule.label = Choose Rule to Edit
+editRule.success = The rule was edited successfully
+
+editUser.title = Edit your account details
+editUser.fname = First Name
+editUser.lname = Last Name
+editUser.inst = Institution
+editUser.success = Your profile has been successfully updated
+
+createRuleSet.title = Create/Edit Rule Set
+createRuleSet.title2 = View Rule Set
+createRuleSet.name = Name
+createRuleSet.shortName = Short Name
+createRuleSet.visibility = Visibility
+createRuleSet.guidelinesAcronym = Guidelines Acronym
+createRuleSet.description = Description
+createRuleSet.rulesContent = Choose Content Rules
+createRuleSet.rulesUsage = Choose Usage Rules
+
+createRuleSet.success = The Set has been created successfully!
+createRuleSets.atLeastOneRule = You must select at least one rule to be added in this set
+
+chooseRuleSet.title = Choose Rule Set
+chooseRuleSet.label = Choose Rule Set
+
+deleteRuleSet.title = Delete Rule Set
+deleteRuleSet.success = Rule Set has been deleted successfully
+
+jobSummary.title = Test Summary
+jobSummary.successes = # Records
+jobSummary.errors = Success
+
+sidebar.toolbar = Toolbar
+sidebar.homepage = Homepage
+
+ruleSetInfo.name = Name
+ruleSetInfo.description = Description
+ruleSetInfo.jobType = Available in tests of type: 
+ruleSetInfo.message = Here you can find information on the rules contained in the chosen rule set. <div class="note"><h3 style="margin-left: -11px;">Definitions</h3><ul style="margin-left: -50px;"><li> Mandatory (M) = the field must always be present in the metadata record. An empty element is not allowed.</li> <li>Mandatory when applicable (MA) = when the value of the field can be obtained it must be present in the metadata record.</li> <li> Recommended (R) = the use of the field is recommended.</li> <li>Optional (O) = it is not important whether the element is used or not.</li></ul></div>
+ruleSetInfo.title = Rule Set Information
+ruleSetInfo.DRIVER = The DRIVER rule set checks the compatibility of your repository with the <a href="http://www.driver-support.eu/documents/DRIVER_Guidelines_v2_Final_2008-11-13.pdf">DRIVER guidelines</a>
+ruleSetInfo.openAIRE = The openAIRE rule set checks the compatibility of your repository with the <a href="http://www.openaire.eu/en/about-openaire/news-a-events/184-openaire-releases-version-10-of-the-openaire-guidelines.html">openAIRE guidelines</a>
+
+feedback.title = Send us your feedback
+feedback.message = Message
+feedback.reason = Reason
+feedback.loggedin = Please note that you must be logged-in to send a message using this form.
+feedback.success = Thank you for your message!
+
+help = Help
+help.addOaiContent.title = Adding an OAI-Content Validation
+help.addOaiContent.message = To add a new validation: <br>1. Select the base URL of the repository you want to validate. Please note that you need to have registered the repository first, and the administrator must have activated its registration.<br>2. Insert the number of records you want to validate.<br>3. Choose if you want the records to be selected randomly from those found in the repository, or in the order that the repository lists them.<br>4. If you want to validate only the records belonging to a particular set, insert the name of the set.<br>5. Either choose a predefined rule-set or manually choose the rules you want to apply.<br><br>You can view a rule set or an individual rule by using the toolbar on the left. For more information please refer to the <a href="jsps/manuals/user-manual.pdf">User Manual</a>, in the section <i>OAI Content Validation</i>.
+help.addOaiUsage.title = Adding an OAI-Usage Validation
+help.addOaiUsage.message = To add a new validation: <br>1. Select the base URL of the repository you want to validate. Please note that you need to have registered the repository first, and the administrator must have activated its registration.<br>2. Either choose a predefined rule-set or manually choose the rules you want to apply.<br><br>You can view a rule set or an individual rule by using the toolbar on the left. For more information please refer to the <a href="jsps/manuals/user-manual.pdf">User Manual</a>, in the section <i>OAI Usage Validation</i>.
+help.addRule.title = Adding a New Rule
+help.addRule.message =
+help.browseJobs.title = Browsing Validations
+help.browseJobs.message = Here you can browse all the past and current validations you have submitted. Please note that the results of an ongoing validation are not update in real-time, but only after the validation has finished its execution completely. To see a summary of the validation click on <i>Show Summary</i>. If you want more details about each task that was executed, you may click on <i>Show Details</i> though this is generally not neccessary. For more information please refer to the <a href="jsps/manuals/user-manual.pdf">User Manual</a>, in the section <i>Browsing Validations</i>.
+help.chooseJobCategory.title = Choosing a Validation Category
+help.chooseJobCategory.message = 
+help.chooseRuleCategory.title = Choosing a Rule Category
+help.chooseRuleCategory.message =
+help.chooseRuleCategory.type.title = Rule Type
+help.chooseRuleCategory.type.message =
+help.chooseRuleForEdit.title = Choosing a Rule
+help.chooseRuleForEdit.message =
+help.chooseRuleSet.title = Choosing a Rule Set
+help.chooseRuleSet.message =
+help.chooseRuleSetForDeletion.title = Choosing a Rule Set
+help.chooseRuleSetForDeletion.message =
+help.createRuleSet.title = Viewing a Rule Set
+help.createRuleSet.message = You can view the <i>name</i> of the Rule Set, as well as the rules that it contains (the ones with a blue background).
+help.deleteRule.title = Deleting a Rule
+help.deleteRule.message =
+help.editRule.title = Viewing a Rule
+help.editRule.message = When you view a rule you will be presented with many fields describing its functionality. For general purposes, the fields you must focus on are <i>name</i> and <i>description</i>. If you would like to find out what the rest of the fields mean, you must refer to the <a href="jsps/manuals/administrator-manual.pdf">administrator manual</a>.
+help.jobDetails.title = Viewing the Details of a Validation
+help.jobDetails.message = Here you can review details about each task of a validation. Each row refers to a certain task and you can see on which rule was used, which record it was applied on and if it was successful or not. Please note that retrieving the details of a validation can be a time-consuming process for large validations, and viewing a validation summary is generally sufficient. For more information please refer to the <a href="jsps/manuals/user-manual.pdf">User Manual</a>, in the section <i>Viewing Validation Details</i>.
+help.jobSummary.title = Viewing the Summary of a Validation
+help.jobSummary.message = Here you can review a summary of the validation results. Each row refers to a certain validation rule and you can see how many of the records were successfully validated. For the records that did not validate successfully, links are provided to their oai-dc metadata representation. For more information please refer to the <a href="jsps/manuals/user-manual.pdf">User Manual</a>, in the section <i>Viewing a Validation Summary</i>. 
+help.login.title = Logging in
+help.login.message =
+help.registration.title = Registering
+help.registration.message =
+help.repoRegistration.title = Registering a Repository
+help.repoRegistration.message = Before you can start a validation, you have to register the repository you want to validate (unless it is already registered by someone else). To do this, you must fill in it\''s base URL. Automatically an e-mail will be send to the repository\''s administrator containing an activation link. As soon as the administrator activates the registration, you will be able to start validations for this repository.
+help.resetPassword.title = Reseting your Password
+help.resetPassword.message =
+help.generic = <p>For help adding your repository/journal in OpenAIRE, please follow <a href="help.action">these instructions</a></p><p>For more advanced uses, you can find detailed information and step-by-step guides in the <a class="download" href="jsps/manuals/user-manual.pdf">User Manual</a></p><p>&nbsp;</p><p><i>The validator is a customizable tool that may be installed and operated in various aggregating environments. <br/><a href="mailto:natalia@di.uoa.gr" class="icon-mail">Click here</a> to contact us and receive more information.</i></p>
+help.newvalidation =<p><h3>Select repository/journal</h3> Select from the list, or enter the base OAI URL of the repository/journal. The repository''s/journal''s published sets are exposed in a later stage and you may select one for the compatibility tests.  </p> <p><h3>Select guidelines</h3> You may apply two types of compatibility tests on your repository: <ul style="text-aling:left"> <li>Content: specific to the content/format of the dc fields</li> <li>Usage: specific to the implementation of OAI-PMH</li> </ul> You may select from a predifined set of rules (OpenAIRE for Literature Repositories, OpenAIRE for Data Archives) or customize them according to your needs.  </p> <p><h3>Select parameters</h3> You may define an upper limit on the # of records tested. This is highly recommended for first time users, or when re-checking after the implementation of automated changes.  </p> <p> Select one of the repository''s/journal''s exposed sets.  </p><p> You may also group your results by a specific field. This is quite useful when validating an aggregator and you know in advance which is the field that distinguished among data sources. </p><p>For further assistance please contact the <a href="https://www.openaire.eu/support/helpdesk" target="_blank" class="external">OpenAIRE helpdesk</a>.</p>
+help.browsevalidations = <div class="download"><a href="jsps/manuals/user-manual.pdf" target="blank">Instructions manual</a></div> <p> <strong>TYPE:</strong> Content or Usage<br/> <strong>STATUS: </strong>Working / Stopped / Finished<br/> <strong>SCORE: </strong> <a href="score.action">click here</a> to find more<br/> <strong>SUBMITTED: </strong>time of submission<br/> <strong>DURATION: </strong>time test took to finish<br/> <strong>REPOSITORY: </strong>tested repository/journal<br/> <strong>GUIDELINES: </strong>guidelines used for testing<br/> <strong>REPORTS: </strong>comprehensive summary of the compatibility test results<br/> </p> <p>For further assistance please contact the <a href="https://www.openaire.eu/support/helpdesk" target="_blank" class="external">OpenAIRE helpdesk</a>.</p>
+help.jobsummary= <div class="download"><a href="jsps/manuals/user-manual.pdf" target="_blank">Instructions manual</a></div> <p>For further assistance please contact the <a href="https://www.openaire.eu/support/helpdesk" target="_blank" class="external">OpenAIRE helpdesk</a>.</p>
+help.registerRepo =  <p>Use the form on the right to add your repository or journal in OpenAIRE. If you want to find more information about this process <a href="jsps/manuals/user-manual.pdf" target="_blank">click here</a>.</p> <div class="alert">The official repository/journal administrator (his/her email address being retrieved from the OAI-PMH verb <b>Identify</b>) will be contacted and informed about registration request. So please make sure that you are either this person or have access to the email address, or that you have notified them.</div> For any problems or questions please contact the <a href="https://www.openaire.eu/support/helpdesk" target="_blank" class="external">OpenAIRE helpdesk</a>.
+help.chooseRepoForEdit = <p>You have access to edit one of the following repositories/journals listed on the right.</p> <p>For any problems or questions please contact the <a href="https://www.openaire.eu/support/helpdesk" target="_blank" class="external">OpenAIRE helpdesk</a>.</p>
+help.editRepoDnet = <p>Use the form on the right to update the repository/journal information.</p> <p>For any problems or questions please contact the <a href="https://www.openaire.eu/support/helpdesk" target="_blank" class="external">OpenAIRE helpdesk</a>.</p>
+help.admin=<div class="download"> For more information read our detailed <a href="jsps/manuals/administrator-manual.pdf" target="_blank">help guide</a>.</div>
+footer.text = &copy; 2010&nbsp;-&nbsp;2015 OpenAIRE
\ No newline at end of file
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/resources/web-error-texts.properties
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/resources/web-error-texts.properties	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1/src/main/resources/web-error-texts.properties	(revision 47450)
@@ -0,0 +1,21 @@
+compulsoryField = This field must have a value
+identicalPasswords = Passwords must be identical
+notValidEmail = Invalid email adress
+userAlreadyExists = This user already exists
+noActivationId = The activation id was not specified
+numericalValue = This field must have a numerical value
+recordsLessThan1 = At least 1 record must be used
+invalidBaseUrl = Invalid base Url
+alreadyRepo = Repository already exists. You may need to activate it.
+noAdminEmail = This repository does not provide an administrator email. Registration cannot continue.
+notBelongsToYou = This job doesn't belong to you or doesn't exist
+uknownError = Unknown Error
+requiredFieldNoValue = A required field(*) has no value
+wrongFieldValue = This field has an invalid value
+jobError = Your repository failed to validate. An automatic error report has been sent to the system administrator. You will soon be contacted with the reason for the error and any further actions that might be needed.
+generic.error = An unexpected error has occurred and the administrator was automatically notified. Please try again later.
+login.manual = Please login manually using your account from the OpenAIRE portal
+registration.notOpenDoar = The registration of repositories not in OpenDoar is disabled
+job.noTasks = It appears that this test is empty. Likely causes are the following: <br><br>1. The test is still running <br>2. The chosen set didn't contain any records (e.g., the ec_fundedresources set is empty) <br>3. The test contained no rules <br>4. An unexpected error occurred and might be resolved if you try again later <br><br>If you think that none of the above reasons applies, please report this issue using <a href="http://www.openaire.eu/en/support/helpdesk?view=detail&cid[0]=-1">this form</a>.
+registration.modeNotSelected = It appears that you haven\'t chosen the correct type of repository. Please choose 'JOIN OPENAIRE' from main menu and choose the right one.
+registration.noAggregated = It appears that you repository is part of an aggregator. Your repository will be automatically registered when the aggregator registers in OpenAIRE. Aggregator Name
\ No newline at end of file
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1	(revision 47450)

Property changes on: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.1
___________________________________________________________________
Added: svn:ignore
## -0,0 +1,5 ##
+target
+.classpath
+.settings
+.project
+*.sh
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/help.jsp
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/help.jsp	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/help.jsp	(revision 47450)
@@ -0,0 +1,43 @@
+<%@ page contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<%@ taglib prefix="s" uri="/struts-tags"%>
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title><s:text name="home.title"/></title>
+<link href="jsps/style.css" rel="stylesheet" type="text/css" media="screen" />
+
+ <link href="jsps/favicon.ico" rel="shortcut icon" type="image/x-icon" />
+</head>
+<body>
+<div id="wrapper">
+        <jsp:include page="menu.jsp"/>
+        <div id="page">
+        <div id="page-bgtop">
+                <div id="middle">
+            <div class="middle-b">
+                <div class="background">
+                                <div id="main">
+                        <div id="main_container" class="clearfix">
+                            <div id="mainmiddle" class="floatbox">
+                                    <h1><s:text name="instructions.welcome"/></h1>
+                                    <div class="entry">
+                                    	<s:text name="instructions.message"/>
+                                    </div>
+                             </div>
+                        </div>
+                    </div>
+                 </div>
+                        </div>
+                </div>
+                <div style="clear: both;">&nbsp;</div>
+        </div>
+    <!-- NMI This needs to be the same in all pages and the text is some properties file -->
+    <div id="footer">
+                <jsp:include page="footer.jsp"/>
+        </div>
+</div>
+</div>
+</body>
+</html>
+
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/pom.xml
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/pom.xml	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/pom.xml	(revision 47450)
@@ -0,0 +1,77 @@
+<?xml version="1.0" ?>
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+	<parent>
+		<groupId>eu.dnetlib</groupId>
+		<artifactId>dnet-container-parent</artifactId>
+		<version>1.0.0</version>
+	</parent>
+	<modelVersion>4.0.0</modelVersion>
+	<groupId>eu.dnetlib</groupId>
+	<artifactId>uoa-validator-admin</artifactId>
+	<packaging>war</packaging>
+	<version>2.0.0</version>
+	<scm>
+		<developerConnection>scm:svn:https://svn.driver.research-infrastructures.eu/driver/dnet40/modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0</developerConnection>
+	</scm>
+	<properties>
+		<struts2.version>2.3.20</struts2.version>
+	</properties>
+
+	<dependencies>
+		<dependency>
+			<groupId>org.apache.struts</groupId>
+			<artifactId>struts2-core</artifactId>
+			<version>${struts2.version}</version>
+<!-- 			<exclusions> -->
+<!-- 				<exclusion>  declare the exclusion here -->
+<!-- 					<groupId>javax.servlet.jsp</groupId> -->
+<!-- 					<artifactId>jsp-api</artifactId> -->
+<!-- 				</exclusion> -->
+<!-- 			</exclusions> -->
+		</dependency>
+		<dependency>
+			<groupId>org.apache.struts</groupId>
+			<artifactId>struts2-spring-plugin</artifactId>
+			<version>${struts2.version}</version>
+			<exclusions>
+				<exclusion>
+					<groupId>org.springframework</groupId>
+					<artifactId>spring-beans</artifactId>
+				</exclusion>
+				<exclusion>
+					<groupId>org.springframework</groupId>
+					<artifactId>spring-core</artifactId>
+				</exclusion>
+				<exclusion>
+					<groupId>org.springframework</groupId>
+					<artifactId>spring-context</artifactId>
+				</exclusion>
+				<exclusion>
+					<groupId>org.springframework</groupId>
+					<artifactId>spring-web</artifactId>
+				</exclusion>
+			</exclusions>
+		</dependency>
+		<dependency>
+			<groupId>org.apache.struts</groupId>
+			<artifactId>struts2-dojo-plugin</artifactId>
+			<version>${struts2.version}</version>
+		</dependency>
+		<dependency>
+			<groupId>com.jgeppert.struts2.jquery</groupId>
+			<artifactId>struts2-jquery-plugin</artifactId>
+			<version>3.7.1</version>
+		</dependency>
+		
+		<dependency>
+			<groupId>com.unboundid</groupId>
+			<artifactId>unboundid-ldapsdk</artifactId>
+			<version>1.1.3</version>
+		</dependency>
+        <dependency>
+            <groupId>eu.dnetlib</groupId>
+            <artifactId>uoa-validator-commons</artifactId>
+            <version>[2.0.0, 2.1.0-SNAPSHOT)</version>
+        </dependency>
+	</dependencies>
+</project>
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/images/img04.jpg
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/images/img04.jpg
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/images/img04.jpg	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/images/img04.jpg	(revision 47450)

Property changes on: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/images/img04.jpg
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/images/middle_bg_b.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/images/middle_bg_b.png
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/images/middle_bg_b.png	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/images/middle_bg_b.png	(revision 47450)

Property changes on: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/images/middle_bg_b.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/images/toolbar_m.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/images/toolbar_m.png
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/images/toolbar_m.png	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/images/toolbar_m.png	(revision 47450)

Property changes on: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/images/toolbar_m.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/images/menu_level2_parent.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/images/menu_level2_parent.png
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/images/menu_level2_parent.png	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/images/menu_level2_parent.png	(revision 47450)

Property changes on: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/images/menu_level2_parent.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/images/info.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/images/info.png
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/images/info.png	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/images/info.png	(revision 47450)

Property changes on: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/images/info.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/images/page_bg_img.jpg
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/images/page_bg_img.jpg
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/images/page_bg_img.jpg	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/images/page_bg_img.jpg	(revision 47450)

Property changes on: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/images/page_bg_img.jpg
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/fonts/DroidSans-webfont.ttf
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/fonts/DroidSans-webfont.ttf
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/fonts/DroidSans-webfont.ttf	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/fonts/DroidSans-webfont.ttf	(revision 47450)

Property changes on: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/fonts/DroidSans-webfont.ttf
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/images/img07.jpg
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/images/img07.jpg
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/images/img07.jpg	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/images/img07.jpg	(revision 47450)

Property changes on: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/images/img07.jpg
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/images/img02.jpg
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/images/img02.jpg
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/images/img02.jpg	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/images/img02.jpg	(revision 47450)

Property changes on: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/images/img02.jpg
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/feedback.jsp
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/feedback.jsp	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/feedback.jsp	(revision 47450)
@@ -0,0 +1,45 @@
+<%@ page contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<%@ taglib prefix="s" uri="/struts-tags"%>
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<link href="jsps/style.css" rel="stylesheet" type="text/css" media="screen" />
+<title><s:text name="feedback.title"/></title>
+<link href="jsps/favicon.ico" rel="shortcut icon" type="image/x-icon" />
+</head>
+<body>
+<div id="wrapper">
+	<jsp:include page="menu.jsp"/>
+	<div id="page">
+		<div id="page-bgtop">
+			<div id="middle">
+                <div class="middle-b">
+                    <div class="background">
+                        <div class="main">
+                        <div id="main_container" class="clearfix">
+                                <div id="mainmiddle" class="floatbox">
+                                    <h2 class="title"><s:text name="feedback.title"/></h2>
+                                    <s:actionerror/>
+                                    <s:text name="feedback.loggedin"/>
+                                    <div class="entry">
+                                        <s:form action="sendFeedback">
+                                            <s:select name="reason" list="#{'validator form: feedback':'Feedback', 'validator form: bug':'Report a Bug', 'validator form: other':'Other'}" key="feedback.reason"/>
+                                            <s:textarea name="message" cols="50" rows="10" key="feedback.message"/>
+                                            <s:submit/>
+                                        </s:form>
+                                    </div>
+								</div>
+                            </div>
+                        </div>
+                    </div>
+                </div>
+            </div>
+		</div>
+		  <div id="footer"> 
+           <jsp:include page="footer.jsp"/>
+        </div>
+	</div>
+</div>
+</body>
+</html>
\ No newline at end of file
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/fonts/OpenSans-Light-webfont.ttf
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/fonts/OpenSans-Light-webfont.ttf
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/fonts/OpenSans-Light-webfont.ttf	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/fonts/OpenSans-Light-webfont.ttf	(revision 47450)

Property changes on: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/fonts/OpenSans-Light-webfont.ttf
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/fonts/kreon-regular-webfont.woff
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/fonts/kreon-regular-webfont.woff
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/fonts/kreon-regular-webfont.woff	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/fonts/kreon-regular-webfont.woff	(revision 47450)

Property changes on: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/fonts/kreon-regular-webfont.woff
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/fonts/maven_pro_regular-webfont.eot
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/fonts/maven_pro_regular-webfont.eot
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/fonts/maven_pro_regular-webfont.eot	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/fonts/maven_pro_regular-webfont.eot	(revision 47450)

Property changes on: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/fonts/maven_pro_regular-webfont.eot
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/images/img01.jpg
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/images/img01.jpg
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/images/img01.jpg	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/images/img01.jpg	(revision 47450)

Property changes on: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/images/img01.jpg
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/fonts/maven_pro_regular-webfont.ttf
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/fonts/maven_pro_regular-webfont.ttf
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/fonts/maven_pro_regular-webfont.ttf	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/fonts/maven_pro_regular-webfont.ttf	(revision 47450)

Property changes on: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/fonts/maven_pro_regular-webfont.ttf
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/login.jsp
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/login.jsp	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/login.jsp	(revision 47450)
@@ -0,0 +1,86 @@
+<%@ page contentType="text/html; charset=UTF-8"
+    pageEncoding="UTF-8"%>
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<%@ taglib prefix="s" uri="/struts-tags"%>
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title><s:text name="login.title"/></title>
+<link href="jsps/favicon.ico" rel="shortcut icon" type="image/x-icon" />
+<link href="jsps/style.css" rel="stylesheet" type="text/css" media="screen" />
+</head>
+<body>
+<div id="wrapper">
+	<jsp:include page="menu.jsp"/>
+	<div id="page">
+        <div id="page-bgtop">
+             <div id="middle">
+                <div class="middle-b">
+                    <div class="background">
+                        <div id="main">
+                            <div id="main_container" class="clearfix">
+                                <div id="mainmiddle" class="floatbox">
+                                <h1>Sign In </h1>
+	                                <div class="notes">
+    		                            <s:text name="login.overview"/>
+   		                            </div>
+                                    <s:actionerror/>
+                                    <div class="post width45 separator float-left">
+                                        <h2><s:text name="login.title"/></h2>
+                                        <s:text name="login.description"/>
+                                        <%--<p class="meta"><a href='<s:url value="/jsps/help.jsp#login"/>' target="_blank"><s:text name="help"/></a></p>--%>
+                                        <div class="entry">
+                                            <s:form action="Login">
+                                            	
+                                            	<s:hidden name="url" value="%{#request['javax.servlet.forward.servlet_path']}"/>
+            									<s:hidden name="params" value="%{#request['javax.servlet.forward.query_string']}"/>  
+    
+                                                <s:textfield name="email_username" key="registration.username_email"/>
+                                                <s:password name="password_login" key="registration.password"/>
+
+                                                <%-- <s:checkbox name="rememberme" key="registration.rememberme"/> --%>
+                                                <s:submit  cssClass="button-default" value="Sign In"/>
+                                            </s:form>
+                                            <a class="smallfont" href='<s:url action="forgotPassword"/>'><s:text name="login.forgotpassword"/></a>
+                                        </div>
+                                    </div>
+                                    
+                                    <div class="post width45 float-left">
+                                        <h2><s:text name="menu.account.registration.title"/></h2>
+                                        <div class="entry">
+                                            <!-- NMI take the following out if everything works fine
+                                            <a href='<s:url action="go2registration" />'><s:text name="menu.account.registration" /></a>
+                                            -->
+                                        <s:text name="registration.description"/>
+                                        <%--<p class="meta"><a href='<s:url value="/jsps/help.jsp#registration"/>' target="_blank"><s:text name="help"/></a></p>--%>
+                                        
+                                            <%-- <s:if test="%{@gr.uoa.di.validatorweb.configs.Constants@isModeLdap()}">
+                                                <s:text name="registration.ldap.message"/>
+                                            </s:if> --%>
+                                            <s:form action="Register">
+                                                <s:textfield name="username" key="registration.username" requiredLabel="true"/>
+                                                <s:textfield name="firstName" key="registration.firstName" requiredLabel="true"/>
+                                                <s:textfield name="lastName" key="registration.lastName" requiredLabel="true"/>
+                                                <s:textfield name="email" key="registration.email" requiredLabel="true"/>
+                                                <s:textfield name="institution" key="registration.institution" />
+                                                <s:password name="password" key="registration.password" requiredLabel="true"/>
+                                                <s:password name="repassword" key="registration.repassword" requiredLabel="true"/>
+                                                <s:submit cssClass="button-default" value="Register"/>
+                                            </s:form>
+                                        </div>
+                                </div>
+                                 </div>
+                             </div>
+                         </div>
+                    </div>
+                </div>
+            </div>        
+        </div>
+        <!-- NMI This needs to be the same in all pages and the text is some properties file -->
+        <div id="footer"> 
+		<jsp:include page="footer.jsp"/>
+	</div>
+	</div>
+</div>
+</body>
+</html>
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/rules.jsp
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/rules.jsp	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/rules.jsp	(revision 47450)
@@ -0,0 +1,3 @@
+<%@ taglib prefix="s" uri="/struts-tags"%>
+
+<s:property value="#request['jsonization']" escape="false"/>
\ No newline at end of file
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/fonts/yanonekaffeesatz.css
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/fonts/yanonekaffeesatz.css	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/fonts/yanonekaffeesatz.css	(revision 47450)
@@ -0,0 +1,13 @@
+/* Copyright (C) YOOtheme GmbH, YOOtheme Proprietary Use License (http://www.yootheme.com/license) */
+
+@font-face {
+	font-family: 'YanoneKaffeesatzLight';
+	src: url('YanoneKaffeesatz-Light-webfont.eot');
+	src: url('YanoneKaffeesatz-Light-webfont.eot?#iefix') format('embedded-opentype'),
+		url('YanoneKaffeesatz-Light-webfont.woff') format('woff'),
+		url('YanoneKaffeesatz-Light-webfont.ttf') format('truetype'),
+		url('YanoneKaffeesatz-Light-webfont.svg#YanoneKaffeesatzLight') format('svg');
+	font-weight: normal;
+	font-style: normal;
+}
+
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/chooseRuleSet.jsp
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/chooseRuleSet.jsp	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/chooseRuleSet.jsp	(revision 47450)
@@ -0,0 +1,49 @@
+<%@ page contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<%@ taglib prefix="s" uri="/struts-tags"%>
+<html>
+<head>
+<link href="jsps/favicon.ico" rel="shortcut icon" type="image/x-icon" />
+<link href="jsps/style.css" rel="stylesheet" type="text/css" media="screen" />
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title><s:text name="chooseRuleSet.title"/></title>
+</head>
+<body class="left">
+<div id="wrapper">
+	<jsp:include page="menu.jsp"/>
+	<div id="page">
+	<div id="page-bgtop">
+	<div id="middle">
+            <div class="middle-b">
+                <div class="background">
+			 <div id="left">
+                              <div id="left_container" >
+                                   <h2 class="helpHdr">Info</h2>
+                                   <s:text name="help.admin"/>
+                              </div>
+                         </div>
+                        <div id="main">
+                        <div id="main_container" class="clearfix">
+			<div id="content">
+				<h2 class="title"><s:text name="chooseRuleSet.title"/></h2>
+                                <div class="entry">
+                                        <s:form action="getRulesForSet">
+                                                <s:select name="setId" list="sets" listValue="name" listKey="id" key="chooseRuleSet.label"/>
+                                                <s:submit cssClass="button-default"/>
+                                        </s:form>
+                                </div>
+			</div>
+			</div>
+			</div>
+		</div>
+	</div>
+	</div>
+	</div>
+
+    <div id="footer">
+                <jsp:include page="footer.jsp"/>
+        </div>
+</div>
+</div>
+</body>
+</html>
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/editRule.jsp
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/editRule.jsp	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/editRule.jsp	(revision 47450)
@@ -0,0 +1,121 @@
+<%@ page contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<%@ taglib prefix="s" uri="/struts-tags"%>
+<html>
+<head>
+<link href="jsps/favicon.ico" rel="shortcut icon" type="image/x-icon" />
+<link href="jsps/style.css" rel="stylesheet" type="text/css" media="screen" />
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<s:if test="%{#session.isAdmin != null && #session.isAdmin.equals(\"true\")}">
+        <s:set name="isAdmin" value="true"/>
+</s:if>
+<s:else>
+        <s:set name="isAdmin" value="false"/>
+</s:else>
+<title>
+        <s:if test="%{#isAdmin}">
+                <s:text name="editRule.title"/>
+        </s:if>
+        <s:else>
+                <s:text name="editRule.title2"/>
+        </s:else>
+</title>
+
+</head>
+<body class="left">
+<div id="wrapper">
+	<jsp:include page="menu.jsp"/>
+	<div id="page">
+	<div id="page-bgtop">
+	<div id="middle">
+            <div class="middle-b">
+                <div class="background">
+			 <div id="left">
+                              <div id="left_container" >
+                                   <h2 class="helpHdr">Info</h2>
+                                   <s:text name="help.admin"/>
+                              </div>
+                         </div>
+                        <div id="main">
+                        <div id="main_container" class="clearfix">
+			<div id="content">
+				<s:if test="%{#isAdmin}">
+                                        <h2 class="title"><s:text name="editRule.title"/></h2>
+                                </s:if>
+                                <s:else>
+                                        <h2 class="title"><s:text name="editRule.title2"/></h2>
+                                </s:else>
+                                <div class="entry">
+                                        <s:form action="editRule">
+                                        		<s:hidden name="funct"/>
+                                                <s:hidden name="rule.id" value="%{rule.id}"/>
+                                                <s:hidden name="rule.for_cris"/>
+                                                <s:iterator value="ruleValues" var="ruleValue">
+                                                        <s:set name="label" value="%{#ruleValue.fieldName}"/>
+                                                        <s:set name="dscr" value="%{#ruleValue.fieldName+\".description\"}"/>
+                                                        <s:set name="tltp" value="%{#ruleValue.fieldName+\".name\"}"/>
+                                                        <s:if test="%{#label.equals(\"xmlvocabulary_rule.terms\") || #label.equals(\"rules.description\")}">
+                                                                <s:textarea name="inputs" value="%{#ruleValue.fieldValue}" title="%{getText(#dscr)}" label="%{getText(#tltp)}" cols="50" rows="10" disabled='%{!#isAdmin}'/>
+                                                        </s:if>
+                                                        <s:elseif test="%{#label.equals(\"xmlcrisclassvocabulary_rule.terms\") || #label.equals(\"xmlcrisreferentialintegrity_rule.terms\")}">
+                                                                <s:textarea name="inputs" value="%{#ruleValue.fieldValue}" title="%{getText(#dscr)}" label="%{getText(#tltp)}" cols="50" rows="10" disabled='%{!#isAdmin}'/>
+                                                        </s:elseif>
+                                                        <s:elseif test="%{#label.equals(\"xmlvocabulary_rule.terms_type\")}">
+                                                                <s:select label="%{getText(#tltp)}" name="inputs" value="%{#ruleValue.fieldValue}" list="#{'whitelist':'whitelist', 'blacklist':'blacklist'}" title="%{getText(#dscr)}"/>
+                                                        </s:elseif>
+                                                        <s:elseif test="%{#label.equals(\"rules.mandatory\")}">
+                                                                <s:select label="%{getText(#tltp)}" name="inputs" value="%{rule.mandatory}" list="#{'true':'true', 'false':'false'}" title="%{getText(#dscr)}"/>
+                                                        </s:elseif>
+                                                        <s:elseif test="%{#label.equals(\"rules.cris_entity\")}">
+                                                                <s:select label="%{getText(#tltp)}" name="inputs" list="entityTypes" value="%{rule.entity_type}" title="%{getText(#dscr)}"/>
+                                                        </s:elseif>
+														<s:elseif test="%{#label.matches('.*success')}">
+															<s:select label="%{getText(#tltp)}" name="inputs" value="%{#ruleValue.fieldValue}" list="#{'>0':'>0', 'all':'all', '0':'0', '1':'1'}" title="%{getText(#dscr)}"/>
+														</s:elseif>
+                                                        <s:elseif test="%{#label.equals(\"chain_rule.type\")}">
+                                                                <s:select label="%{getText(#tltp)}" name="inputs" value="%{#ruleValue.fieldValue}" list="#{'or':'or', 'and':'and', 'horn':'horn'}" title="%{getText(#dscr)}"/>
+                                                        </s:elseif>
+                                                        <s:elseif test="%{#label.equals(\"chain_rule.rule_1\")}">
+                                                                <s:select name="inputs" list="rules" listValue="name" listKey="id"  value="%{#ruleValue.fieldValue}" label="%{getText(#tltp)}" title="%{getText(#dscr)}"/>
+                                                        </s:elseif>
+                                                        <s:elseif test="%{#label.equals(\"chain_rule.rule_2\")}">
+                                                                <s:select name="inputs" list="rules" listValue="name" listKey="id"  value="%{#ruleValue.fieldValue}" label="%{getText(#tltp)}" title="%{getText(#dscr)}"/>
+                                                        </s:elseif>
+                                                        <s:elseif test="%{#label.equals(\"rules.provider_information\")}">
+<%-- 															<s:if test="%{rule.job_type.equals(\"OAI Usage\")}"> --%>
+															<s:textfield name="inputs" value="%{#ruleValue.fieldValue}" title="%{getText(#dscr)}" label="%{getText(#tltp)}" disabled='%{!#isAdmin}'/>
+<%--                                                         	</s:if> --%>
+														</s:elseif>
+                                                        <s:else>
+                                                                <s:textfield name="inputs" value="%{#ruleValue.fieldValue}" title="%{getText(#dscr)}" label="%{getText(#tltp)}" disabled='%{!#isAdmin}'/>
+                                                        </s:else>
+                                                </s:iterator>
+<%--                                                 <s:textfield name="rule.entity_type" label="%{getText(\"jobs.entity_type.name\")}" title="%{getText(\"jobs.entity_type.description\")}" /> --%>
+                                                <s:textfield name="rule.job_type" label="%{getText(\"jobs.job_type.name\")}" title="%{getText(\"jobs.job_type.description\")}" readonly='true'/>
+                                                <s:textfield name="rule.type" label="%{getText(\"rules.type.name\")}" title="%{getText(\"rules.type.description\")}" readonly='true'/>
+                                                <s:if test="%{#isAdmin}">
+                                                 	<s:if test="%{funct.equals(\"edit\")}">
+                                                        <s:submit value="Update" cssClass="button-default"/>
+                                                    </s:if>
+                                                    <s:elseif test="%{funct.equals(\"clone\")}">
+                                                    	<s:submit value="Clone" cssClass="button-default"/>
+                                                    </s:elseif>
+                                                </s:if>
+                                        </s:form>
+                                </div>
+
+			</div>
+			</div>
+			</div>
+		</div>
+	</div>
+	</div>
+	</div>
+
+    <div id="footer">
+                <jsp:include page="footer.jsp"/>
+        </div>
+</div>
+</div>
+</body>
+</html>
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/fonts/maven_pro_regular-webfont.woff
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/fonts/maven_pro_regular-webfont.woff
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/fonts/maven_pro_regular-webfont.woff	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/fonts/maven_pro_regular-webfont.woff	(revision 47450)

Property changes on: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/fonts/maven_pro_regular-webfont.woff
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/fonts/droidsans.css
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/fonts/droidsans.css	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/fonts/droidsans.css	(revision 47450)
@@ -0,0 +1,13 @@
+/* Copyright (C) YOOtheme GmbH, YOOtheme Proprietary Use License (http://www.yootheme.com/license) */
+
+@font-face {
+	font-family: 'DroidSansRegular';
+	src: url('DroidSans-webfont.eot');
+	src: url('DroidSans-webfont.eot?#iefix') format('embedded-opentype'),
+		 url('DroidSans-webfont.woff') format('woff'),
+		 url('DroidSans-webfont.ttf') format('truetype'),
+		 url('DroidSans-webfont.svg#DroidSansRegular') format('svg');
+	font-weight: normal;
+	font-style: normal;
+}
+
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/deleteRule.jsp
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/deleteRule.jsp	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/deleteRule.jsp	(revision 47450)
@@ -0,0 +1,49 @@
+<%@ page contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<%@ taglib prefix="s" uri="/struts-tags"%>
+<html>
+<head>
+<link href="jsps/favicon.ico" rel="shortcut icon" type="image/x-icon" />
+<link href="jsps/style.css" rel="stylesheet" type="text/css" media="screen" />
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title><s:text name="deleteRule.title"/></title>
+</head>
+<body class="left">
+<div id="wrapper">
+	<jsp:include page="menu.jsp"/>
+	<div id="page">
+	<div id="page-bgtop">
+	<div id="middle">
+            <div class="middle-b">
+                <div class="background">
+			 <div id="left">
+                              <div id="left_container" >
+                                                <h2 class="helpHdr">Info</h2>
+                                                <s:text name="help.admin"/>
+                              </div>
+                         </div>
+                          <div id="main">
+                        <div id="main_container" class="clearfix">
+			<div id="content">
+			<h2 class="title"><s:text name="deleteRule.title"/></h2>
+                                <div class="entry">
+                                        <s:form action="deleteRule">
+                                                <s:select name="ruleId" list="rules" listValue="name" listKey="id"  key="deleteRule.label"/>
+						<s:submit cssClass="button-default"/>
+                                        </s:form>
+                                </div>
+			</div>
+		</div>
+	</div>
+	</div>
+	</div>
+	</div>
+	</div>
+
+    <div id="footer">
+                <jsp:include page="footer.jsp"/>
+        </div>
+</div>
+</div>
+</body>
+</html>
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/images/logo-referencia-openaire.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/images/logo-referencia-openaire.png
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/images/logo-referencia-openaire.png	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/images/logo-referencia-openaire.png	(revision 47450)

Property changes on: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/images/logo-referencia-openaire.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/images/openairepluslogo.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/images/openairepluslogo.png
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/images/openairepluslogo.png	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/images/openairepluslogo.png	(revision 47450)

Property changes on: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/images/openairepluslogo.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/images/error_icon_24.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/images/error_icon_24.png
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/images/error_icon_24.png	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/images/error_icon_24.png	(revision 47450)

Property changes on: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/images/error_icon_24.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/images/OpenAIREplus_logo.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/images/OpenAIREplus_logo.png
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/images/OpenAIREplus_logo.png	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/images/OpenAIREplus_logo.png	(revision 47450)

Property changes on: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/images/OpenAIREplus_logo.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/instructions.jsp
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/instructions.jsp	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/instructions.jsp	(revision 47450)
@@ -0,0 +1,43 @@
+<%@ page contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<%@ taglib prefix="s" uri="/struts-tags"%>
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title><s:text name="instructions.welcome"/></title>
+<link href="jsps/style.css" rel="stylesheet" type="text/css" media="screen" />
+
+ <link href="jsps/favicon.ico" rel="shortcut icon" type="image/x-icon" />
+</head>	
+<body>
+<div id="wrapper">
+	<jsp:include page="menu.jsp"/>
+	<div id="page">
+	<div id="page-bgtop">
+		<div id="middle">
+            <div class="middle-b">
+                <div class="background">
+                
+        			<div id="main">
+                        <div id="main_container" class="clearfix">
+                            <div id="mainmiddle" class="floatbox">
+                                <h1 class="title"><s:text name="instructions.welcome"/></h1>
+                                <div class="entry">
+                                	<s:text name="instructions.message"/>
+                                </div>
+                             </div>
+                        </div>
+                    </div>
+                 </div>
+			</div>
+		</div>
+		<div style="clear: both;">&nbsp;</div>
+	</div>
+    <!-- NMI This needs to be the same in all pages and the text is some properties file -->
+    <div id="footer"> 
+		<jsp:include page="footer.jsp"/>
+	</div>
+</div>
+</div>
+</body>
+</html>
\ No newline at end of file
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/help2.jsp
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/help2.jsp	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/help2.jsp	(revision 47450)
@@ -0,0 +1,131 @@
+<%@ page contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<%@ taglib prefix="s" uri="/struts-tags"%>
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<link href="jsps/favicon.ico" rel="shortcut icon" type="image/x-icon" />
+<link href="jsps/style.css" rel="stylesheet" type="text/css" media="screen" />
+<title><s:text name="help"/></title>
+</head>
+<body>
+<div id="wrapper">
+	<jsp:include page="menu.jsp"/>
+	<div id="page">
+	<div id="page-bgtop">
+		<div id="content">
+			<div class="post">
+				<h2 class="title"><a name="addOaiContent"><s:text name="help.addOaiContent.title"/></a></h2>
+				<div class="entry">
+					<s:text name="help.addOaiContent.message"/>
+				</div>
+			</div>
+			<div class="post">
+				<h2 class="title"><a name="addOaiUsage"><s:text name="help.addOaiUsage.title"/></a></h2>
+				<div class="entry">
+					<s:text name="help.addOaiUsage.message"/>
+				</div>
+			</div>
+			<%--<div class="post">
+				<h2 class="title"><a name="addRule"><s:text name="help.addRule.title"/></a></h2>
+				<div class="entry">
+					<s:text name="help.addRule.message"/>
+				</div>
+			</div>--%>
+			<div class="post">
+				<h2 class="title"><a name="browseJobs"><s:text name="help.browseJobs.title"/></a></h2>
+				<div class="entry">
+					<s:text name="help.browseJobs.message"/>
+				</div>
+			</div>
+			<%--<div class="post">
+				<h2 class="title"><a name="chooseJobCategory"><s:text name="help.chooseJobCategory.title"/></a></h2>
+				<div class="entry">
+					<s:text name="help.chooseJobCategory.message"/>
+				</div>
+			</div>
+			<div class="post">
+				<h2 class="title"><a name="chooseRuleCategory"><s:text name="help.chooseRuleCategory.title"/></a></h2>
+				<div class="entry">
+					<s:text name="help.chooseRuleCategory.message"/>
+				</div>
+			</div>
+			<div class="post">
+				<h2 class="title"><a name="chooseRuleForEdit"><s:text name="help.chooseRuleForEdit.title"/></a></h2>
+				<div class="entry">
+					<s:text name="help.chooseRuleForEdit.message"/>
+				</div>
+			</div>
+			<div class="post">
+				<h2 class="title"><a name="chooseRuleSet"><s:text name="help.chooseRuleSet.title"/></a></h2>
+				<div class="entry">
+					<s:text name="help.chooseRuleSet.message"/>
+				</div>
+			</div>
+			<div class="post">
+				<h2 class="title"><a name="chooseRuleSetForDeletion"><s:text name="help.chooseRuleSetForDeletion.title"/></a></h2>
+				<div class="entry">
+					<s:text name="help.chooseRuleSetForDeletion.message"/>
+				</div>
+			</div>--%>
+			<div class="post">
+				<h2 class="title"><a name="createRuleSet"><s:text name="help.createRuleSet.title"/></a></h2>
+				<div class="entry">
+					<s:text name="help.createRuleSet.message"/>
+				</div>
+			</div>
+			<%--<div class="post">
+				<h2 class="title"><a name="deleteRule"><s:text name="help.deleteRule.title"/></a></h2>
+				<div class="entry">
+					<s:text name="help.deleteRule.message"/>
+				</div>
+			</div>--%>
+			<div class="post">
+				<h2 class="title"><a name="editRule"><s:text name="help.editRule.title"/></a></h2>
+				<div class="entry">
+					<s:text name="help.editRule.message"/>
+				</div>
+			</div>
+			<div class="post">
+				<h2 class="title"><a name="jobDetails"><s:text name="help.jobDetails.title"/></a></h2>
+				<div class="entry">
+					<s:text name="help.jobDetails.message"/>
+				</div>
+			</div>
+			<div class="post">
+				<h2 class="title"><a name="jobSummary"><s:text name="help.jobSummary.title"/></a></h2>
+				<div class="entry">
+					<s:text name="help.jobSummary.message"/>
+				</div>
+			</div>
+			<%--<div class="post">
+				<h2 class="title"><a name="login"><s:text name="help.login.title"/></a></h2>
+				<div class="entry">
+					<s:text name="help.login.message"/>
+				</div>
+			</div>
+			<div class="post">
+				<h2 class="title"><a name="registration"><s:text name="help.registration.title"/></a></h2>
+				<div class="entry">
+					<s:text name="help.registration.message"/>
+				</div>
+			</div>--%>
+			<div class="post">
+				<h2 class="title"><a name="repoRegistration"><s:text name="help.repoRegistration.title"/></a></h2>
+				<div class="entry">
+					<s:text name="help.repoRegistration.message"/>
+				</div>
+			</div>
+			<%--<div class="post">
+				<h2 class="title"><a name="resetPassword"><s:text name="help.resetPassword.title"/></a></h2>
+				<div class="entry">
+					<s:text name="help.resetPassword.message"/>
+				</div>
+			</div>--%>
+		</div>
+		<div style="clear: both;">&nbsp;</div>
+	</div>
+	</div>
+</div>
+</body>
+</html>
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/fonts/DroidSans-webfont.svg
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/fonts/DroidSans-webfont.svg	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/fonts/DroidSans-webfont.svg	(revision 47450)
@@ -0,0 +1,251 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" >
+<svg xmlns="http://www.w3.org/2000/svg">
+<metadata>
+This is a custom SVG webfont generated by Font Squirrel.
+Copyright   : Digitized data copyright  2007 Google Corporation
+Foundry     : Ascender Corporation
+Foundry URL : httpwwwascendercorpcom
+</metadata>
+<defs>
+<font id="DroidSansRegular" horiz-adv-x="1128" >
+<font-face units-per-em="2048" ascent="1638" descent="-410" />
+<missing-glyph horiz-adv-x="532" />
+<glyph unicode=" "  horiz-adv-x="532" />
+<glyph unicode="&#x09;" horiz-adv-x="532" />
+<glyph unicode="&#xa0;" horiz-adv-x="532" />
+<glyph unicode="!" horiz-adv-x="551" d="M147 111q0 38 10 64.5t27 43t40 24t50 7.5q26 0 49.5 -7.5t40.5 -24t27 -43t10 -64.5q0 -37 -10 -63.5t-27 -43.5t-40.5 -25t-49.5 -8q-27 0 -50 8t-40 25t-27 43.5t-10 63.5zM164 1462h223l-51 -1048h-121z" />
+<glyph unicode="&#x22;" horiz-adv-x="823" d="M133 1462h197l-41 -528h-115zM494 1462h196l-41 -528h-114z" />
+<glyph unicode="#" horiz-adv-x="1323" d="M51 428v137h285l65 328h-274v137h299l82 432h147l-82 -432h293l84 432h144l-84 -432h262v-137h-289l-63 -328h280v-137h-307l-82 -428h-147l84 428h-291l-82 -428h-144l78 428h-258zM483 565h291l64 328h-291z" />
+<glyph unicode="$" d="M123 172v172q33 -16 76.5 -32.5t91.5 -29.5t98.5 -21.5t97.5 -8.5v434q-89 30 -154.5 63t-108.5 75.5t-64 97.5t-21 129q0 67 24.5 122.5t70 97t110 68t143.5 35.5v180h138v-176q100 -5 184.5 -26t151.5 -52l-66 -145q-56 25 -126 45.5t-144 26.5v-422q88 -31 155.5 -64 t113 -74.5t68.5 -95t23 -125.5q0 -70 -25 -127t-71.5 -99t-113 -69.5t-150.5 -39.5v-230h-138v221q-50 0 -101 4.5t-99 13.5t-90 22t-74 30zM315 1049q0 -36 8.5 -64.5t28.5 -52t53 -42.5t82 -36v369q-89 -16 -130.5 -60.5t-41.5 -113.5zM625 262q93 14 138.5 63t45.5 121 q0 33 -10 60.5t-31.5 50t-56.5 41.5t-86 37v-373z" />
+<glyph unicode="%" horiz-adv-x="1690" d="M102 1026q0 108 17.5 193t54 143.5t93 89.5t134.5 31q75 0 131.5 -31t95 -89.5t58 -143.5t19.5 -193t-18 -194t-55 -145t-94.5 -90.5t-136.5 -31.5q-73 0 -129 31.5t-94 90.5t-57 145t-19 194zM250 1026q0 -165 35.5 -247.5t115.5 -82.5q156 0 156 330q0 328 -156 328 q-80 0 -115.5 -81.5t-35.5 -246.5zM362 0l812 1462h157l-811 -1462h-158zM985 440q0 108 17.5 193t54 143.5t93 89.5t134.5 31q75 0 131.5 -31t94.5 -89.5t57.5 -143.5t19.5 -193t-17.5 -193.5t-54.5 -144.5t-94.5 -90.5t-136.5 -31.5q-74 0 -130 31.5t-93.5 90.5 t-56.5 144.5t-19 193.5zM1133 440q0 -165 35.5 -247t115.5 -82q156 0 156 329q0 328 -156 328q-80 0 -115.5 -81.5t-35.5 -246.5z" />
+<glyph unicode="&#x26;" horiz-adv-x="1438" d="M109 381q0 78 20 139t58.5 111t94 93t126.5 85q-31 36 -61 74.5t-52.5 82t-36.5 93t-14 106.5q0 75 25 134.5t72 101t116 63t157 21.5q83 0 148.5 -21.5t111 -63t69.5 -101t24 -134.5q0 -64 -25 -118.5t-67 -101t-96.5 -86t-114.5 -75.5l352 -372q27 29 48.5 59t38.5 64 t30.5 73t23.5 86h184q-15 -66 -35.5 -121.5t-47 -104.5t-59 -91.5t-71.5 -83.5l277 -293h-225l-168 172q-49 -45 -97 -80.5t-102 -60t-116 -38t-140 -13.5q-105 0 -188.5 26.5t-141 78t-88 126t-30.5 170.5zM299 387q0 -54 17.5 -99.5t50.5 -78t81 -50.5t109 -18 q58 0 107 11.5t91 31.5t78 47t68 58l-387 407q-52 -33 -92 -64.5t-67.5 -67.5t-41.5 -78.5t-14 -98.5zM422 1165q0 -34 8 -66.5t24.5 -65t42.5 -66t62 -70.5q59 35 102 66t71 63t42 67t14 76q0 36 -12.5 66.5t-36 52.5t-56.5 34.5t-75 12.5q-86 0 -136 -44.5t-50 -125.5z " />
+<glyph unicode="'" horiz-adv-x="463" d="M133 1462h197l-41 -528h-115z" />
+<glyph unicode="(" horiz-adv-x="616" d="M82 561q0 125 18 246.5t55 236t93.5 220t134.5 198.5h172q-140 -193 -212.5 -424t-72.5 -475q0 -119 18.5 -237t54 -231t88.5 -219t122 -200h-170q-78 90 -134.5 193t-93.5 215.5t-55 232.5t-18 244z" />
+<glyph unicode=")" horiz-adv-x="616" d="M61 1462h172q78 -93 134.5 -198.5t94 -220t55.5 -236t18 -246.5q0 -124 -18 -244t-55.5 -232.5t-94 -215.5t-134.5 -193h-170q69 94 122 200t89 219t54 231t18 237q0 244 -72 475t-213 424z" />
+<glyph unicode="*" d="M82 1081l29 193l391 -111l-43 393h205l-43 -393l397 111l26 -193l-378 -28l245 -326l-178 -96l-176 358l-158 -358l-184 96l242 326z" />
+<glyph unicode="+" d="M102 647v150h387v389h150v-389h387v-150h-387v-385h-150v385h-387z" />
+<glyph unicode="," horiz-adv-x="512" d="M63 -264q15 61 29.5 127t28 131.5t24.5 128t19 115.5h198l15 -23q-14 -54 -33.5 -115t-43 -123t-49 -123.5t-50.5 -117.5h-138z" />
+<glyph unicode="-" horiz-adv-x="659" d="M82 465v168h496v-168h-496z" />
+<glyph unicode="." horiz-adv-x="549" d="M147 111q0 38 10 64.5t27 43t40 24t50 7.5q26 0 49.5 -7.5t40.5 -24t27 -43t10 -64.5q0 -37 -10 -63.5t-27 -43.5t-40.5 -25t-49.5 -8q-27 0 -50 8t-40 25t-27 43.5t-10 63.5z" />
+<glyph unicode="/" horiz-adv-x="764" d="M20 0l545 1462h178l-544 -1462h-179z" />
+<glyph unicode="0" d="M98 733q0 177 25.5 317t81 236.5t144 147.5t214.5 51q119 0 207 -50.5t146 -147t87 -236.5t29 -318q0 -177 -25.5 -317t-82 -237t-145.5 -148t-216 -51q-118 0 -205.5 51t-145 148t-86 237t-28.5 317zM283 733q0 -150 15 -262t48 -186.5t86.5 -112t130.5 -37.5t131 37 t88.5 111t50 186.5t15.5 263.5q0 150 -15.5 262t-50 186t-88.5 111t-131 37t-130.5 -37t-86.5 -111t-48 -186t-15 -262z" />
+<glyph unicode="1" d="M178 1163l383 299h150v-1462h-176v913q0 43 0.5 92t2 97.5t3 93t2.5 78.5q-17 -18 -30 -31t-26.5 -25t-28.5 -25.5t-36 -31.5l-148 -121z" />
+<glyph unicode="2" d="M96 0v156l350 381q75 81 134 148t100.5 131t63.5 128.5t22 140.5q0 59 -17 104t-48.5 76.5t-74.5 47.5t-96 16q-95 0 -171.5 -38.5t-145.5 -98.5l-102 119q40 36 86 67.5t99 54.5t112 36.5t124 13.5q96 0 173.5 -27t131.5 -77.5t83.5 -123t29.5 -163.5q0 -85 -26.5 -162 t-73 -151.5t-111 -149.5t-139.5 -156l-281 -299v-8h689v-166h-912z" />
+<glyph unicode="3" d="M82 59v170q87 -46 188.5 -71t194.5 -25q92 0 159 20t110.5 57t64 91t20.5 121q0 68 -26.5 116.5t-75.5 80t-119.5 46.5t-159.5 15h-133v151h133q81 0 144 20t105.5 57t64.5 88t22 112q0 52 -18 93t-51 69.5t-79 43.5t-102 15q-107 0 -188.5 -33.5t-155.5 -87.5l-92 125 q38 31 84.5 58t101.5 47.5t117.5 32.5t132.5 12q108 0 189.5 -27t136.5 -75.5t83 -115t28 -145.5q0 -73 -23 -133t-64.5 -104t-99.5 -72.5t-129 -40.5v-6q177 -22 269 -112.5t92 -235.5q0 -96 -32.5 -176t-98.5 -138t-167 -90t-239 -32q-109 0 -205.5 17t-181.5 62z" />
+<glyph unicode="4" d="M23 328v159l663 983h188v-976h213v-166h-213v-328h-176v328h-675zM201 494h497v356q0 56 1.5 117.5t3.5 120t4.5 109.5t3.5 85h-9q-7 -20 -17.5 -44.5t-23 -49t-25.5 -47.5t-24 -39z" />
+<glyph unicode="5" d="M131 59v172q33 -23 77.5 -41t93.5 -30t98.5 -18.5t91.5 -6.5q79 0 141 18.5t105 57.5t66 98t23 140q0 143 -88 218.5t-256 75.5q-27 0 -58.5 -2.5t-63 -6.5t-60 -8.5t-49.5 -8.5l-90 57l55 688h690v-166h-532l-39 -419q32 6 84.5 13t124.5 7q99 0 184.5 -27.5t149 -81.5 t99.5 -134t36 -185q0 -114 -34 -205t-101 -154t-165.5 -96.5t-226.5 -33.5q-51 0 -100.5 5t-95 14.5t-86.5 24.5t-74 35z" />
+<glyph unicode="6" d="M113 625q0 105 10.5 209t37 199.5t72.5 177.5t117 142.5t170 95t232 34.5q19 0 42 -1t46.5 -3.5t45 -6t38.5 -8.5v-155q-35 12 -79 18t-87 6q-90 0 -158.5 -21.5t-118.5 -60.5t-83.5 -93t-54.5 -119.5t-31 -139.5t-13 -154h12q20 36 48.5 67.5t66.5 54t85.5 35.5 t106.5 13q95 0 172 -29.5t131 -86.5t83.5 -139.5t29.5 -188.5q0 -114 -31 -205t-89 -154.5t-140 -97.5t-184 -34q-100 0 -187.5 39t-151.5 119t-101 201t-37 286zM295 506q0 -67 18.5 -133.5t55 -119.5t91.5 -86.5t128 -33.5q60 0 109.5 20.5t85.5 62t55.5 105t19.5 150.5 q0 70 -16.5 125.5t-49.5 94.5t-82.5 60t-115.5 21q-67 0 -122.5 -23.5t-94.5 -61t-60.5 -85.5t-21.5 -96z" />
+<glyph unicode="7" d="M90 1296v166h940v-145l-555 -1317h-194l563 1296h-754z" />
+<glyph unicode="8" d="M106 373q0 75 22.5 135t60.5 108t90 85t110 65q-49 31 -92 67.5t-74.5 81.5t-50 99.5t-18.5 120.5q0 87 33.5 152.5t90.5 109.5t131.5 66t155.5 22q84 0 158.5 -22t131 -66t89.5 -110t33 -154q0 -67 -20 -121t-55 -97.5t-83 -78t-104 -62.5q58 -31 113.5 -69t99 -85.5 t70 -106.5t26.5 -132q0 -92 -33.5 -166.5t-94 -126.5t-145 -80t-186.5 -28q-110 0 -195.5 27t-144 77.5t-89 123.5t-30.5 165zM285 371q0 -53 16 -97.5t50 -76t86 -49t124 -17.5q70 0 123.5 17.5t89.5 50t54 78.5t18 102q0 52 -19.5 94t-56 78t-87.5 68t-114 63l-30 14 q-126 -60 -190 -137.5t-64 -187.5zM332 1126q0 -57 17.5 -98t48.5 -73t74.5 -57.5t94.5 -49.5q48 22 90.5 48t74 59t49.5 75t18 96q0 101 -63 154t-173 53q-106 0 -168.5 -53t-62.5 -154z" />
+<glyph unicode="9" d="M106 991q0 114 31.5 205.5t89 155t140 97.5t184.5 34q101 0 188 -39t151 -119t101 -201.5t37 -285.5q0 -105 -10.5 -209.5t-37 -199.5t-72.5 -177.5t-117 -142.5t-170 -94.5t-232 -34.5q-19 0 -42 1t-46 3.5t-45 5.5t-39 8v156q35 -13 79 -19t87 -6q135 0 222 47 t138 127.5t72.5 187.5t26.5 226h-13q-20 -36 -48 -67t-66 -54t-86 -36t-107 -13q-95 0 -172 29.5t-131 86.5t-83.5 139.5t-29.5 188.5zM283 991q0 -70 16.5 -125.5t49.5 -94.5t82.5 -60t115.5 -21q68 0 123 23.5t94 61t60.5 85.5t21.5 96q0 67 -18.5 133.5t-55 120 t-91.5 86.5t-128 33q-60 0 -109.5 -20t-85.5 -62t-55.5 -105.5t-19.5 -150.5z" />
+<glyph unicode=":" horiz-adv-x="549" d="M147 111q0 38 10 64.5t27 43t40 24t50 7.5q26 0 49.5 -7.5t40.5 -24t27 -43t10 -64.5q0 -37 -10 -63.5t-27 -43.5t-40.5 -25t-49.5 -8q-27 0 -50 8t-40 25t-27 43.5t-10 63.5zM147 987q0 39 10 65.5t27 43t40 23.5t50 7q26 0 49.5 -7t40.5 -23.5t27 -43t10 -65.5 q0 -37 -10 -63t-27 -43t-40.5 -25t-49.5 -8q-27 0 -50 8t-40 25t-27 43t-10 63z" />
+<glyph unicode=";" horiz-adv-x="549" d="M63 -264q15 61 29.5 127t28 131.5t24.5 128t19 115.5h198l15 -23q-14 -54 -33.5 -115t-43 -123t-49 -123.5t-50.5 -117.5h-138zM147 987q0 39 10 65.5t27 43t40 23.5t50 7q26 0 49.5 -7t40.5 -23.5t27 -43t10 -65.5q0 -37 -10 -63t-27 -43t-40.5 -25t-49.5 -8 q-27 0 -50 8t-40 25t-27 43t-10 63z" />
+<glyph unicode="&#x3c;" d="M102 662v102l924 481v-160l-735 -364l735 -322v-161z" />
+<glyph unicode="=" d="M102 442v150h924v-150h-924zM102 852v149h924v-149h-924z" />
+<glyph unicode="&#x3e;" d="M102 238v161l736 322l-736 364v160l924 -481v-102z" />
+<glyph unicode="?" horiz-adv-x="872" d="M37 1382q81 42 175 71.5t191 29.5q93 0 167.5 -25.5t126.5 -73.5t80 -117.5t28 -156.5q0 -67 -13.5 -119.5t-40.5 -97.5t-67 -87t-94 -89q-52 -45 -85 -78.5t-52 -65t-26 -64.5t-7 -77v-18h-139v37q0 57 7.5 103t27 86t52.5 78.5t83 80.5q48 41 82 74.5t55.5 68t32 74 t10.5 92.5q0 48 -15 87.5t-43.5 68t-71 44t-98.5 15.5q-83 0 -158 -26t-145 -60zM233 111q0 38 10 64.5t27 43t40 24t50 7.5q26 0 49.5 -7.5t40.5 -24t27 -43t10 -64.5q0 -37 -10 -63.5t-27 -43.5t-40.5 -25t-49.5 -8q-27 0 -50 8t-40 25t-27 43.5t-10 63.5z" />
+<glyph unicode="@" horiz-adv-x="1774" d="M109 575q0 188 59 350.5t168.5 281.5t265 187t348.5 68q156 0 287 -50.5t226.5 -145t148.5 -230t53 -305.5q0 -62 -9.5 -124.5t-28 -119t-47 -105t-66.5 -84.5t-86.5 -56.5t-106.5 -20.5q-45 0 -81.5 15t-62.5 40t-42.5 57.5t-22.5 67.5h-4q-18 -37 -45 -70t-62.5 -57.5 t-80 -38.5t-97.5 -14q-77 0 -136.5 28t-100.5 78.5t-62.5 121.5t-21.5 157q0 101 29.5 185t85 145t134.5 95t177 34q45 0 90 -4t86 -11t75.5 -15.5t57.5 -16.5l-23 -416q-1 -22 -1.5 -35.5t-0.5 -21.5v-12v-7q0 -53 10.5 -87t27.5 -54t38.5 -27.5t44.5 -7.5q46 0 81 30.5 t58.5 82.5t35.5 122t12 148q0 142 -43 252.5t-119 186.5t-180.5 115.5t-227.5 39.5q-169 0 -298 -55.5t-216.5 -155t-132.5 -236t-45 -298.5q0 -151 39.5 -268t116 -197t190 -121t260.5 -41q61 0 120.5 7t115 19t105.5 27.5t93 32.5v-141q-86 -38 -194 -60t-238 -22 q-179 0 -319.5 51t-238 148.5t-148.5 238t-51 319.5zM662 602q0 -133 50.5 -192.5t135.5 -59.5q55 0 94 22.5t64 64t38 99t17 126.5l14 253q-28 8 -66.5 14.5t-80.5 6.5q-74 0 -124.5 -29t-82 -76t-45.5 -107t-14 -122z" />
+<glyph unicode="A" horiz-adv-x="1245" d="M0 0l537 1468h170l538 -1468h-190l-160 453h-545l-162 -453h-188zM410 618h426l-148 424q-6 18 -14.5 44t-17.5 56t-18 62.5t-17 63.5q-7 -31 -16 -64t-18 -63.5t-17.5 -56t-14.5 -42.5z" />
+<glyph unicode="B" horiz-adv-x="1272" d="M199 0v1462h399q128 0 225.5 -19.5t163 -63t98.5 -114t33 -173.5q0 -62 -19.5 -116t-56.5 -95t-91.5 -68.5t-123.5 -36.5v-10q69 -12 129.5 -34.5t105.5 -62t71 -99.5t26 -146q0 -100 -32.5 -178.5t-94 -133t-149.5 -83.5t-199 -29h-485zM385 158h266q88 0 147.5 20 t96 56t52.5 86.5t16 111.5q0 56 -16.5 103t-54 80.5t-99.5 52t-154 18.5h-254v-528zM385 842h244q84 0 141 15t92 44.5t50.5 74t15.5 103.5q0 120 -77 172t-243 52h-223v-461z" />
+<glyph unicode="C" horiz-adv-x="1235" d="M125 733q0 166 43.5 304t128 237t209.5 154t287 55q108 0 206 -22t177 -64l-78 -156q-63 32 -137 55t-168 23q-107 0 -194 -40.5t-148.5 -116.5t-95 -185t-33.5 -246q0 -141 29.5 -250.5t88.5 -184.5t147 -114t206 -39q89 0 169 17.5t158 40.5v-162q-39 -15 -78 -26.5 t-81.5 -18.5t-91 -10.5t-107.5 -3.5q-164 0 -284 54t-198.5 153t-116.5 238t-38 308z" />
+<glyph unicode="D" horiz-adv-x="1401" d="M199 0v1462h407q153 0 277 -46t211 -136.5t134.5 -224.5t47.5 -310q0 -185 -48 -324.5t-139 -233t-223.5 -140.5t-300.5 -47h-366zM385 160h162q264 0 398 146t134 433q0 146 -33 252.5t-96 175.5t-155 102.5t-209 33.5h-201v-1143z" />
+<glyph unicode="E" horiz-adv-x="1081" d="M199 0v1462h759v-164h-573v-452h535v-162h-535v-520h573v-164h-759z" />
+<glyph unicode="F" horiz-adv-x="1006" d="M199 0v1462h759v-164h-573v-516h535v-164h-535v-618h-186z" />
+<glyph unicode="G" horiz-adv-x="1413" d="M125 733q0 172 47.5 311t138.5 236.5t224.5 150t304.5 52.5q111 0 213 -22t190 -64l-72 -162q-36 17 -77.5 32t-85.5 26.5t-90.5 18.5t-92.5 7q-122 0 -216 -40.5t-157.5 -116.5t-96.5 -185t-33 -246q0 -130 27.5 -238t87.5 -186t155 -121t229 -43q44 0 80.5 2.5 t67.5 6.5t58.5 9.5t53.5 10.5v436h-299v164h484v-717q-55 -18 -111 -32t-115 -23.5t-124 -14.5t-140 -5q-157 0 -278 52.5t-204 150t-126 237t-43 313.5z" />
+<glyph unicode="H" horiz-adv-x="1436" d="M199 0v1462h186v-616h666v616h186v-1462h-186v682h-666v-682h-186z" />
+<glyph unicode="I" horiz-adv-x="694" d="M82 0v102l172 41v1176l-172 41v102h530v-102l-172 -41v-1176l172 -41v-102h-530z" />
+<glyph unicode="J" horiz-adv-x="555" d="M-184 -205q34 -9 73 -14.5t84 -5.5q37 0 74.5 9.5t68 34.5t49.5 69t19 112v1462h187v-1442q0 -105 -29.5 -182t-82 -127.5t-126 -75t-162.5 -24.5q-51 0 -89 6.5t-66 17.5v160z" />
+<glyph unicode="K" horiz-adv-x="1186" d="M199 0v1462h186v-731l121 168l452 563h209l-520 -637l539 -825h-211l-451 698l-139 -114v-584h-186z" />
+<glyph unicode="L" horiz-adv-x="1006" d="M199 0v1462h186v-1296h573v-166h-759z" />
+<glyph unicode="M" horiz-adv-x="1782" d="M199 0v1462h276l412 -1192h6l414 1192h276v-1462h-186v887q0 52 2 119t5 128q4 71 7 144h-8l-447 -1278h-153l-443 1280h-8q6 -74 10 -147q4 -63 6.5 -132.5t2.5 -126.5v-874h-172z" />
+<glyph unicode="N" horiz-adv-x="1493" d="M199 0v1462h213l716 -1204h7q-3 76 -7 150q0 32 -2 66l-4 66q-2 34 -2 65v57v800h174v-1462h-215l-719 1210h-8q6 -77 10 -153q4 -65 6.5 -136t2.5 -128v-793h-172z" />
+<glyph unicode="O" horiz-adv-x="1520" d="M125 735q0 170 38 308.5t117 236.5t199 151.5t283 53.5q155 0 272.5 -53.5t197.5 -152t120.5 -237t40.5 -309.5q0 -169 -40.5 -308t-120.5 -238t-198.5 -153t-273.5 -54q-163 0 -282.5 54t-198 153t-116.5 238.5t-38 309.5zM322 733q0 -137 26 -246.5t79.5 -186t136 -117 t196.5 -40.5t196.5 40.5t136 117t78.5 186t25 246.5q0 138 -25 247t-78 184.5t-135 116t-196 40.5t-197 -40.5t-137 -116t-80 -184.5t-26 -247z" />
+<glyph unicode="P" horiz-adv-x="1180" d="M199 0v1462h362q134 0 231 -28.5t160 -83t93 -134.5t30 -182q0 -91 -27.5 -175t-90.5 -148.5t-166.5 -103t-255.5 -38.5h-150v-569h-186zM385 727h129q93 0 162.5 16t115 51.5t68.5 92t23 137.5q0 142 -82 210.5t-256 68.5h-160v-576z" />
+<glyph unicode="Q" horiz-adv-x="1518" d="M125 735q0 170 38 308.5t117 236.5t199 151.5t283 53.5q155 0 272.5 -53.5t197.5 -152t120.5 -237t40.5 -309.5q0 -131 -24.5 -244t-72 -203.5t-118.5 -156.5t-164 -104q43 -94 111.5 -165.5t158.5 -131.5l-121 -142q-103 73 -189.5 172t-137.5 226q-17 -2 -37.5 -3 t-38.5 -1q-163 0 -282.5 54t-198 153t-116.5 238.5t-38 309.5zM322 733q0 -137 26 -246.5t79.5 -186t136 -117t196.5 -40.5t196.5 40.5t136 117t78.5 186t25 246.5q0 138 -25 247t-78 184.5t-135 116t-196 40.5t-197 -40.5t-137 -116t-80 -184.5t-26 -247z" />
+<glyph unicode="R" horiz-adv-x="1208" d="M199 0v1462h356q266 0 393 -103t127 -312q0 -87 -24.5 -152t-65 -111.5t-92.5 -77.5t-107 -51l398 -655h-219l-351 604h-229v-604h-186zM385 762h164q90 0 153 17.5t103.5 52t59 86t18.5 120.5q0 72 -20.5 122t-62 82t-105 46.5t-150.5 14.5h-160v-541z" />
+<glyph unicode="S" horiz-adv-x="1063" d="M104 49v178q34 -16 77.5 -31.5t91.5 -27.5t99 -19.5t101 -7.5q160 0 236.5 60t76.5 172q0 54 -14.5 94t-51 73.5t-97.5 65t-154 68.5q-89 35 -154.5 76.5t-108 93.5t-63 118t-20.5 150q0 88 32 157t90 116.5t138.5 72.5t177.5 25q119 0 214 -22.5t169 -57.5l-67 -156 q-65 29 -147.5 50.5t-170.5 21.5q-122 0 -189 -56.5t-67 -152.5q0 -57 15 -98.5t50 -75t92.5 -63t141.5 -62.5q91 -36 159.5 -74t114.5 -86t69.5 -111t23.5 -149q0 -97 -34.5 -173.5t-98.5 -129.5t-156 -80.5t-207 -27.5q-111 0 -207.5 17.5t-161.5 51.5z" />
+<glyph unicode="T" horiz-adv-x="1063" d="M20 1298v164h1022v-164h-417v-1298h-187v1298h-418z" />
+<glyph unicode="U" horiz-adv-x="1430" d="M184 520v942h187v-952q0 -175 86.5 -271t261.5 -96q89 0 153 27t105 76t61 117t21 149v952h186v-948q0 -114 -33 -212t-99.5 -170t-167 -113t-236.5 -41q-128 0 -226 38.5t-164.5 109.5t-100.5 170.5t-34 221.5z" />
+<glyph unicode="V" horiz-adv-x="1163" d="M0 1462h197l295 -927q29 -91 50 -175.5t38 -158.5q15 74 38 158.5t54 181.5l293 921h198l-489 -1462h-187z" />
+<glyph unicode="W" horiz-adv-x="1810" d="M20 1462h197l223 -889q12 -46 22 -95.5t18.5 -98.5t15.5 -94.5t12 -83.5q5 37 12.5 86t17.5 103t21.5 109.5t24.5 104.5l225 858h197l229 -856q15 -56 29.5 -112t27 -108.5t22 -99.5t15.5 -85q4 38 10 83t14 94.5t17.5 101t20.5 100.5l200 882h199l-367 -1462h-188 l-254 938q-14 51 -27 105t-24 101q-12 55 -23 107q-11 -51 -22 -106q-10 -47 -22.5 -103t-26.5 -110l-242 -932h-188z" />
+<glyph unicode="X" horiz-adv-x="1120" d="M0 0l453 764l-422 698h198l332 -559l334 559h190l-421 -692l456 -770h-211l-354 635l-367 -635h-188z" />
+<glyph unicode="Y" horiz-adv-x="1079" d="M0 1462h203l336 -739l340 739h200l-446 -893v-569h-187v559z" />
+<glyph unicode="Z" horiz-adv-x="1104" d="M82 0v145l711 1151h-691v166h899v-145l-710 -1151h731v-166h-940z" />
+<glyph unicode="[" horiz-adv-x="621" d="M164 -324v1786h405v-149h-223v-1487h223v-150h-405z" />
+<glyph unicode="\" horiz-adv-x="764" d="M23 1462h178l544 -1462h-178z" />
+<glyph unicode="]" horiz-adv-x="621" d="M51 -174h223v1487h-223v149h406v-1786h-406v150z" />
+<glyph unicode="^" horiz-adv-x="1090" d="M41 549l459 924h102l447 -924h-161l-337 735l-349 -735h-161z" />
+<glyph unicode="_" horiz-adv-x="842" d="M-4 -184h850v-140h-850v140z" />
+<glyph unicode="`" horiz-adv-x="1182" d="M393 1548v21h219q16 -34 37.5 -74.5t44.5 -81t47 -78.5t45 -67v-27h-120q-35 28 -76 69.5t-79.5 85.5t-70 84.5t-47.5 67.5z" />
+<glyph unicode="a" horiz-adv-x="1087" d="M94 307q0 164 115.5 252t351.5 96l184 7v69q0 67 -14.5 112t-42 72.5t-68 39.5t-92.5 12q-83 0 -154.5 -24t-137.5 -58l-64 137q74 40 165 68t191 28q102 0 176.5 -20.5t123 -65t72.5 -113.5t24 -167v-752h-131l-37 152h-8q-33 -45 -66 -77.5t-72 -53.5t-87 -31t-111 -10 q-69 0 -127 19.5t-100.5 60t-66.5 102t-24 145.5zM283 305q0 -92 48.5 -135t127.5 -43q61 0 113 19t90 57.5t59.5 97t21.5 137.5v99l-143 -7q-90 -4 -151 -20t-97.5 -44.5t-52.5 -69t-16 -91.5z" />
+<glyph unicode="b" horiz-adv-x="1200" d="M174 0v1556h182v-376q0 -35 -1 -74.5t-3 -73.5q-2 -40 -4 -78h8q23 35 52 65t67.5 52t86.5 34.5t108 12.5q94 0 171 -36t131.5 -107.5t84.5 -177.5t30 -246q0 -141 -30 -247.5t-84.5 -178.5t-131.5 -108.5t-171 -36.5q-59 0 -107 13t-86.5 34.5t-68 50.5t-52.5 61h-12 l-37 -139h-133zM356 551q0 -101 13.5 -179.5t46 -132t86.5 -81t135 -27.5q135 0 198.5 109t63.5 313q0 208 -63.5 311t-200.5 103q-80 0 -133.5 -25.5t-86 -77.5t-46 -130t-13.5 -183z" />
+<glyph unicode="c" horiz-adv-x="948" d="M113 543q0 157 38 266.5t104.5 178t155.5 99.5t191 31q78 0 152.5 -17t124.5 -42l-54 -154q-23 10 -51 19.5t-58 17t-59 12t-55 4.5q-157 0 -229 -100.5t-72 -312.5q0 -211 72.5 -308.5t220.5 -97.5q81 0 146.5 18.5t119.5 43.5v-162q-54 -29 -115.5 -44t-150.5 -15 q-101 0 -189 31.5t-153 100t-102 175t-37 256.5z" />
+<glyph unicode="d" horiz-adv-x="1200" d="M113 547q0 141 30 247.5t85 178.5t132 108.5t170 36.5q59 0 107 -13t86.5 -35t68.5 -51t52 -61h12q-3 34 -6 65q-2 26 -4 53.5t-2 43.5v436h182v-1556h-147l-27 147h-8q-22 -34 -51.5 -64.5t-68 -53.5t-86.5 -36t-108 -13q-93 0 -170 36t-132 107.5t-85 177.5t-30 246z M301 545q0 -209 63.5 -311.5t200.5 -102.5q76 0 128.5 23t85 70t48 117.5t17.5 164.5v41q0 101 -13.5 179.5t-46 132t-86.5 81t-135 27.5q-135 0 -198.5 -109t-63.5 -313z" />
+<glyph unicode="e" horiz-adv-x="1096" d="M113 541q0 136 33 243t93 181.5t143.5 113.5t184.5 39q99 0 178 -35.5t134 -100t84.5 -155t29.5 -200.5v-113h-692q5 -193 81.5 -284t227.5 -91q51 0 94.5 5t84 14.5t78.5 24t77 32.5v-162q-40 -19 -78.5 -33t-79 -23t-84 -13t-94.5 -4q-110 0 -201 37t-156.5 108 t-101.5 176t-36 240zM305 662h492q0 68 -13.5 124.5t-42 96.5t-72.5 62t-106 22q-114 0 -180.5 -78t-77.5 -227z" />
+<glyph unicode="f" horiz-adv-x="674" d="M29 961v75l194 68v96q0 107 22.5 177.5t65 112.5t104.5 59.5t140 17.5q59 0 108.5 -11.5t88.5 -25.5l-47 -141q-31 11 -67.5 19.5t-76.5 8.5t-69 -9.5t-48 -33.5t-28.5 -65.5t-9.5 -106.5v-104h245v-137h-245v-961h-183v961h-194z" />
+<glyph unicode="g" horiz-adv-x="1061" d="M37 -186q0 60 19.5 105.5t52.5 78.5t76.5 54t90.5 32q-42 19 -69 60t-27 94q0 61 32 105.5t101 86.5q-43 18 -78.5 49.5t-60 72t-38 88.5t-13.5 99q0 89 25 159t74 119t122 75t170 26q37 0 76.5 -5.5t66.5 -14.5h363v-113l-197 -27q28 -35 47 -89.5t19 -123.5 q0 -76 -23.5 -140.5t-71 -111.5t-117.5 -73.5t-163 -26.5q-22 0 -44 0.5t-36 3.5q-17 -10 -33.5 -22.5t-30 -28.5t-22 -36t-8.5 -44q0 -27 12 -43.5t32.5 -25.5t48.5 -12t59 -3h176q93 0 157 -23.5t104.5 -63.5t58.5 -94.5t18 -115.5q0 -88 -32.5 -158t-99.5 -118.5 t-169.5 -74.5t-241.5 -26q-107 0 -187 21t-133 61t-79.5 96.5t-26.5 127.5zM209 -180q0 -37 13 -69t42.5 -55t78 -36.5t120.5 -13.5q186 0 278.5 57.5t92.5 165.5q0 46 -12 75t-39.5 45.5t-72.5 22.5t-110 6h-176q-35 0 -73 -8t-69.5 -30t-52 -60.5t-20.5 -99.5zM301 745 q0 -115 54 -171t153 -56q100 0 151.5 55.5t51.5 174.5q0 123 -52.5 181t-152.5 58q-99 0 -152 -60t-53 -182z" />
+<glyph unicode="h" horiz-adv-x="1206" d="M174 0v1556h182v-462l-8 -144h10q25 43 59.5 74.5t75.5 52.5t87 31t94 10q183 0 275.5 -95.5t92.5 -305.5v-717h-182v707q0 130 -52.5 195t-164.5 65q-81 0 -136 -26t-88.5 -77t-48 -125t-14.5 -170v-569h-182z" />
+<glyph unicode="i" horiz-adv-x="530" d="M160 1395q0 60 30.5 87t75.5 27q22 0 41.5 -6.5t34 -20.5t23 -35.5t8.5 -51.5q0 -58 -31.5 -86.5t-75.5 -28.5q-45 0 -75.5 28t-30.5 87zM174 0v1098h182v-1098h-182z" />
+<glyph unicode="j" horiz-adv-x="530" d="M-68 -319q26 -10 53 -15.5t62 -5.5q27 0 50 7.5t40.5 27t27 52t9.5 83.5v1268h182v-1256q0 -77 -17 -138.5t-53 -105t-90.5 -67t-129.5 -23.5q-48 0 -79.5 7t-54.5 18v148zM160 1395q0 60 30.5 87t75.5 27q22 0 41.5 -6.5t34 -20.5t23 -35.5t8.5 -51.5q0 -58 -31.5 -86.5 t-75.5 -28.5q-45 0 -75.5 28t-30.5 87z" />
+<glyph unicode="k" horiz-adv-x="1016" d="M174 0v1556h180v-714l-16 -275h4l135 170l293 361h211l-401 -475l428 -623h-209l-336 504l-109 -82v-422h-180z" />
+<glyph unicode="l" horiz-adv-x="530" d="M174 0v1556h182v-1556h-182z" />
+<glyph unicode="m" horiz-adv-x="1835" d="M174 0v1098h148l26 -148h10q24 43 57 74.5t72.5 52.5t84 31t90.5 10q120 0 199.5 -44t117.5 -138h8q26 47 62.5 81t80 56.5t91.5 33.5t98 11q175 0 263.5 -95.5t88.5 -305.5v-717h-182v707q0 130 -50 195t-155 65q-73 0 -124 -23.5t-83.5 -69t-47.5 -113t-15 -155.5v-606 h-183v707q0 130 -49.5 195t-154.5 65q-77 0 -129 -26t-83.5 -77t-45 -125t-13.5 -170v-569h-182z" />
+<glyph unicode="n" horiz-adv-x="1206" d="M174 0v1098h148l26 -148h10q25 43 59.5 74.5t75.5 52.5t87 31t94 10q183 0 275.5 -95.5t92.5 -305.5v-717h-182v707q0 130 -52.5 195t-164.5 65q-81 0 -136 -26t-88.5 -77t-48 -125t-14.5 -170v-569h-182z" />
+<glyph unicode="o" horiz-adv-x="1182" d="M113 551q0 136 33.5 241.5t95.5 178t151.5 110t200.5 37.5q103 0 190 -37.5t150.5 -110t99 -178t35.5 -241.5q0 -137 -33.5 -243.5t-96 -179t-151.5 -110.5t-200 -38q-103 0 -190 38t-150.5 110.5t-99 179t-35.5 243.5zM301 551q0 -209 68.5 -314.5t222.5 -105.5 t221.5 105.5t67.5 314.5t-68.5 312.5t-222.5 103.5t-221.5 -103.5t-67.5 -312.5z" />
+<glyph unicode="p" horiz-adv-x="1200" d="M174 -492v1590h148l26 -148h8q23 35 52 65.5t67.5 53t86.5 36t108 13.5q94 0 171 -36t131.5 -107.5t84.5 -177.5t30 -246q0 -141 -30 -247.5t-84.5 -178.5t-131.5 -108.5t-171 -36.5q-59 0 -107 13t-86.5 34.5t-68 50.5t-52.5 61h-12q3 -34 6 -65q2 -26 4 -53.5t2 -43.5 v-469h-182zM356 551q0 -101 13.5 -179.5t46 -132t86.5 -81t135 -27.5q135 0 198.5 109t63.5 313q0 208 -63.5 311t-200.5 103q-76 0 -128.5 -23t-85 -70t-48 -117t-17.5 -165v-41z" />
+<glyph unicode="q" horiz-adv-x="1200" d="M113 547q0 141 30 247.5t85 178.5t132 108.5t170 36.5q59 0 107 -13.5t86 -36t68 -53t53 -65.5h8l27 148h147v-1590h-182v469q0 19 2 48t4 56q3 32 6 66h-12q-22 -34 -51.5 -64.5t-68 -53.5t-86.5 -36t-108 -13q-93 0 -170 36t-132 107.5t-85 177.5t-30 246zM301 545 q0 -209 63.5 -311.5t200.5 -102.5q76 0 128.5 23t85 70t48 117.5t17.5 164.5v41q0 101 -13.5 179.5t-46 132t-86.5 81t-135 27.5q-135 0 -198.5 -109t-63.5 -313z" />
+<glyph unicode="r" horiz-adv-x="817" d="M174 0v1098h148l22 -201h8q25 43 53.5 83t64 70.5t79.5 49t100 18.5q29 0 65 -2.5t62 -7.5l-24 -168q-28 5 -57.5 8.5t-55.5 3.5q-63 0 -115 -25.5t-89.5 -73t-58 -114t-20.5 -147.5v-592h-182z" />
+<glyph unicode="s" horiz-adv-x="924" d="M90 49v166q31 -16 69 -31.5t80 -27.5t86.5 -19.5t88.5 -7.5q65 0 110.5 11t74 31.5t41.5 50t13 65.5q0 31 -10 56t-36.5 49.5t-72.5 49.5t-118 56t-129.5 61t-97.5 67t-61.5 85.5t-21.5 115.5q0 70 27.5 124.5t77.5 91.5t120 56t156 19q97 0 177.5 -21t152.5 -55 l-63 -147q-65 29 -133.5 50.5t-139.5 21.5q-102 0 -151 -33.5t-49 -95.5q0 -35 11.5 -61t39.5 -49t75 -46.5t117 -52.5q72 -30 128.5 -60t96.5 -67.5t61 -85.5t21 -115q0 -80 -29 -140t-83.5 -100.5t-131.5 -60.5t-173 -20q-109 0 -187 17.5t-137 51.5z" />
+<glyph unicode="t" horiz-adv-x="694" d="M33 961v81l155 78l78 230h105v-252h276v-137h-276v-637q0 -97 31.5 -146t103.5 -49q18 0 40.5 2t43.5 5t38.5 7t26.5 7v-138q-13 -6 -33 -12t-44 -10.5t-50 -7t-51 -2.5q-62 0 -115 16t-91.5 55t-60.5 105.5t-22 167.5v637h-155z" />
+<glyph unicode="u" horiz-adv-x="1206" d="M164 381v717h182v-707q0 -130 53 -195t164 -65q81 0 136 26t88.5 76.5t48 124.5t14.5 170v570h182v-1098h-147l-27 147h-10q-25 -43 -59.5 -74.5t-75.5 -52t-87 -30.5t-94 -10q-91 0 -160 23t-115 72t-69.5 125t-23.5 181z" />
+<glyph unicode="v" horiz-adv-x="981" d="M0 1098h188l199 -611q11 -33 26 -85t30 -106t27.5 -102t16.5 -73h7q5 25 17 73t27 102t30 106t26 85l199 611h188l-375 -1098h-231z" />
+<glyph unicode="w" horiz-adv-x="1528" d="M20 1098h191l131 -584q10 -45 20 -97.5t19 -104t16 -97t11 -74.5h6q5 26 13.5 69.5t19 92t21.5 96t21 80.5l179 619h196l172 -619q9 -34 20.5 -80t22.5 -93.5t20 -91.5t13 -73h6q3 26 9.5 69.5t15.5 95.5t19.5 106.5t21.5 101.5l137 584h186l-284 -1098h-215l-168 616 q-4 18 -10 40.5t-12 47.5t-12.5 51t-12.5 51q-14 58 -29 120h-6q-14 -63 -27 -121q-11 -50 -23.5 -103t-23.5 -90l-172 -612h-211z" />
+<glyph unicode="x" horiz-adv-x="1024" d="M35 0l373 563l-353 535h207l250 -410l250 410h207l-355 -535l373 -563h-207l-268 436l-270 -436h-207z" />
+<glyph unicode="y" horiz-adv-x="1001" d="M10 1098h189l215 -613q14 -40 28.5 -84t27 -88t21.5 -85t13 -76h6q5 25 16 68t24.5 91.5t28 95.5t25.5 80l199 611h188l-434 -1241q-28 -81 -60.5 -145.5t-75.5 -109.5t-101 -69.5t-138 -24.5q-52 0 -90 5.5t-65 11.5v145q21 -5 53 -8.5t67 -3.5q48 0 83 11.5t61 33.5 t44.5 54t33.5 73l57 160z" />
+<glyph unicode="z" horiz-adv-x="903" d="M82 0v125l536 836h-503v137h688v-146l-524 -815h542v-137h-739z" />
+<glyph unicode="{" horiz-adv-x="725" d="M61 492v155q125 0 190.5 43t65.5 146v333q0 78 27 133t74.5 90.5t113 52t142.5 17.5v-149q-40 -1 -72.5 -7.5t-55 -24t-34.5 -48t-12 -78.5v-332q0 -105 -59.5 -166.5t-174.5 -81.5v-12q115 -20 174.5 -81t59.5 -167v-331q0 -48 12 -78.5t34.5 -48t55 -24t72.5 -7.5v-150 q-77 1 -142.5 17.5t-113 52t-74.5 90.5t-27 133v334q0 103 -65.5 146t-190.5 43z" />
+<glyph unicode="|" d="M489 -492v2048h150v-2048h-150z" />
+<glyph unicode="}" horiz-adv-x="725" d="M51 -174q40 1 72.5 7.5t55 24t34.5 48t12 78.5v331q0 106 59.5 167t174.5 81v12q-115 20 -174.5 81.5t-59.5 166.5v332q0 48 -12 78.5t-34.5 48t-55 24t-72.5 7.5v149q77 -1 142.5 -17.5t113 -52t74.5 -90.5t27 -133v-333q0 -52 16.5 -88t49 -58.5t80.5 -32.5t110 -10 v-155q-125 0 -190.5 -43t-65.5 -146v-334q0 -78 -27 -133t-74.5 -90.5t-113 -52t-142.5 -17.5v150z" />
+<glyph unicode="~" d="M102 586v162q100 108 248 108q29 0 54 -2.5t52.5 -9t61 -19t80.5 -32.5q37 -16 64.5 -27t51 -17.5t43.5 -9t42 -2.5q28 0 58 9.5t59.5 26t57.5 38.5t52 47v-162q-99 -108 -248 -108q-29 0 -54 2.5t-52.5 9t-61 19t-80.5 32.5q-37 16 -64.5 27t-50 17.5t-43 9t-42.5 2.5 q-28 0 -58 -9.5t-59.5 -26t-57.5 -38.5t-53 -47z" />
+<glyph unicode="&#xa1;" horiz-adv-x="551" d="M147 979q0 37 10 63t27.5 43t40.5 25t49 8q27 0 50 -8t40.5 -25t27 -43t9.5 -63q0 -38 -9.5 -64.5t-27 -43t-40.5 -24t-50 -7.5q-26 0 -49 7.5t-40.5 24t-27.5 43t-10 64.5zM162 -373l51 1049h121l51 -1049h-223z" />
+<glyph unicode="&#xa2;" d="M188 743q0 141 26.5 242.5t75 169.5t118 105.5t155.5 50.5v172h137v-164q72 -3 140 -19.5t114 -39.5l-53 -154q-23 10 -51 19.5t-58 17t-59.5 12t-54.5 4.5q-157 0 -229 -101t-72 -313q0 -210 72.5 -307.5t220.5 -97.5q81 0 146.5 18.5t119.5 42.5v-161q-50 -28 -105 -43 t-131 -17v-200h-137v206q-87 13 -156 50.5t-118 104t-75 166t-26 236.5z" />
+<glyph unicode="&#xa3;" d="M68 0v154q44 11 80.5 31.5t63 54.5t41.5 82.5t15 115.5v213h-198v137h198v324q0 87 29.5 155.5t82 116t125.5 72.5t161 25q106 0 193 -22.5t153 -57.5l-66 -144q-56 29 -126.5 50.5t-145.5 21.5q-48 0 -89 -13.5t-71 -43t-46.5 -76.5t-16.5 -113v-295h376v-137h-376v-211 q0 -62 -11.5 -106.5t-31 -76.5t-45 -53.5t-52.5 -37.5h748v-166h-991z" />
+<glyph unicode="&#xa4;" d="M123 1065l98 98l127 -129q47 32 101 50t114 18t113.5 -18t99.5 -50l129 129l99 -96l-130 -129q31 -46 49.5 -100.5t18.5 -114.5t-17.5 -115t-50.5 -100l127 -127l-96 -96l-129 127q-46 -31 -99.5 -48.5t-113.5 -17.5t-115 18t-100 50l-127 -127l-96 96l127 127 q-31 45 -48.5 99t-17.5 114q0 59 17.5 112.5t48.5 100.5zM324 723q0 -50 18.5 -93.5t51 -76t76 -51.5t93.5 -19q51 0 95.5 19t77.5 51.5t52 76t19 93.5q0 51 -19 95.5t-52 77.5t-77.5 52t-95.5 19q-50 0 -93.5 -19t-76 -52t-51 -77.5t-18.5 -95.5z" />
+<glyph unicode="&#xa5;" d="M29 1462h192l342 -739l346 739h191l-385 -768h239v-137h-301v-158h301v-137h-301v-262h-178v262h-301v137h301v158h-301v137h234z" />
+<glyph unicode="&#xa6;" d="M489 289h150v-781h-150v781zM489 776v780h150v-780h-150z" />
+<glyph unicode="&#xa7;" horiz-adv-x="995" d="M121 55v158q31 -15 69 -30t80 -26.5t86.5 -18.5t87.5 -7q69 0 115.5 12t74 31.5t39 45t11.5 52.5q0 29 -8.5 51.5t-34 45t-72.5 47t-123 55.5q-73 31 -130.5 62t-97.5 70t-60.5 89t-20.5 117q0 51 13 92.5t35.5 73.5t51.5 54.5t60 37.5q-75 38 -117.5 95t-42.5 141 q0 61 27.5 110t77.5 83t120 52.5t156 18.5q97 0 175.5 -20t150.5 -52l-56 -139q-65 28 -135 47.5t-141 19.5q-99 0 -150 -29.5t-51 -86.5q0 -27 12 -50t40.5 -45t76 -45.5t117.5 -52.5q72 -28 128.5 -60.5t95.5 -71.5t60 -87.5t21 -110.5q0 -52 -12 -94.5t-32.5 -76.5 t-46.5 -58.5t-54 -40.5q69 -38 107 -92.5t38 -132.5q0 -71 -29.5 -126.5t-83.5 -94t-131.5 -58.5t-173.5 -20q-108 0 -186 16.5t-137 48.5zM291 831q0 -37 14 -68.5t45.5 -60.5t82 -56.5t122.5 -57.5l35 -15q20 13 40.5 31t37 41t27 51t10.5 62q0 38 -13 70t-45.5 61.5 t-86.5 58t-136 58.5q-25 -8 -48.5 -23.5t-42.5 -38t-30.5 -51.5t-11.5 -62z" />
+<glyph unicode="&#xa8;" horiz-adv-x="1182" d="M307 1395q0 54 28 78t68 24q39 0 68 -24.5t29 -77.5t-29 -78t-68 -25q-40 0 -68 25t-28 78zM682 1395q0 54 28 78t68 24q19 0 36.5 -6t30.5 -18.5t21 -31.5t8 -46q0 -53 -29 -78t-67 -25q-40 0 -68 25t-28 78z" />
+<glyph unicode="&#xa9;" horiz-adv-x="1704" d="M100 731q0 104 27 200t75.5 179.5t117.5 152.5t152.5 117.5t179.5 75.5t200 27t200 -27t179.5 -75.5t152.5 -117.5t117.5 -152.5t75.5 -179.5t27 -200t-27 -200t-75.5 -179.5t-117.5 -152t-152.5 -117.5t-179.5 -75.5t-200 -26.5t-200 26.5t-179.5 75.5t-152.5 117.5 t-117.5 152t-75.5 179.5t-27 200zM209 731q0 -133 50.5 -250t138 -204.5t204.5 -138t250 -50.5t250 50.5t204.5 138t138 204.5t50.5 250t-50.5 250t-138 204.5t-204.5 138t-250 50.5t-250 -50.5t-204.5 -138t-138 -204.5t-50.5 -250zM479 733q0 101 27 184.5t79.5 143.5 t129 93.5t176.5 33.5q63 0 129 -16.5t125 -45.5l-62 -127q-52 26 -100.5 40t-91.5 14q-61 0 -108 -22t-79 -63.5t-48.5 -101.5t-16.5 -135q0 -78 14.5 -138t45 -101t78 -62.5t114.5 -21.5q23 0 50 3.5t55.5 9.5t56.5 14.5t53 17.5v-131q-24 -11 -48.5 -20t-51 -16 t-56.5 -10.5t-65 -3.5q-102 0 -178 33t-126.5 94t-76 146t-25.5 188z" />
+<glyph unicode="&#xaa;" horiz-adv-x="678" d="M68 989q0 102 70.5 156t213.5 59l99 4v31q0 72 -30.5 100.5t-86.5 28.5q-48 0 -93 -14.5t-87 -36.5l-48 100q51 26 109.5 44t118.5 18q125 0 184.5 -53t59.5 -175v-454h-91l-28 82q-18 -22 -37.5 -39.5t-43 -30t-51.5 -19t-63 -6.5q-43 0 -79 13t-62 38.5t-40.5 64 t-14.5 89.5zM199 987q0 -51 25 -73.5t67 -22.5q34 0 63 10.5t50.5 32.5t34 54.5t12.5 76.5v49l-74 -4q-51 -3 -85 -12t-54.5 -24t-29.5 -36.5t-9 -50.5z" />
+<glyph unicode="&#xab;" horiz-adv-x="997" d="M82 526v27l309 414l117 -78l-238 -348l238 -348l-117 -78zM489 526v27l310 414l116 -78l-237 -348l237 -348l-116 -78z" />
+<glyph unicode="&#xac;" d="M102 647v150h924v-535h-149v385h-775z" />
+<glyph unicode="&#xad;" horiz-adv-x="659" d="M82 465v168h496v-168h-496z" />
+<glyph unicode="&#xae;" horiz-adv-x="1704" d="M100 731q0 104 27 200t75.5 179.5t117.5 152.5t152.5 117.5t179.5 75.5t200 27t200 -27t179.5 -75.5t152.5 -117.5t117.5 -152.5t75.5 -179.5t27 -200t-27 -200t-75.5 -179.5t-117.5 -152t-152.5 -117.5t-179.5 -75.5t-200 -26.5t-200 26.5t-179.5 75.5t-152.5 117.5 t-117.5 152t-75.5 179.5t-27 200zM209 731q0 -133 50.5 -250t138 -204.5t204.5 -138t250 -50.5t250 50.5t204.5 138t138 204.5t50.5 250t-50.5 250t-138 204.5t-204.5 138t-250 50.5t-250 -50.5t-204.5 -138t-138 -204.5t-50.5 -250zM586 285v893h233q168 0 247 -65t79 -200 q0 -48 -13.5 -85.5t-36 -66t-51 -48.5t-59.5 -33q67 -110 120 -197q23 -37 44 -72.5t37.5 -63.5t26.5 -45l10 -17h-179l-206 352h-95v-352h-157zM743 768h72q91 0 130.5 36t39.5 105q0 74 -41.5 103.5t-130.5 29.5h-70v-274z" />
+<glyph unicode="&#xaf;" horiz-adv-x="1024" d="M-6 1556v140h1036v-140h-1036z" />
+<glyph unicode="&#xb0;" horiz-adv-x="877" d="M123 1167q0 65 25 122.5t67.5 100.5t100 68t122.5 25t122.5 -25t100.5 -68t68 -100.5t25 -122.5t-25 -122t-68 -99.5t-100.5 -67t-122.5 -24.5t-122.5 24.5t-100 67t-67.5 99.5t-25 122zM246 1167q0 -39 15 -73.5t41 -60.5t61 -41t75 -15t75 15t61.5 41t41.5 60.5 t15 73.5q0 40 -15 75.5t-41.5 62t-61.5 42t-75 15.5t-75 -15.5t-61 -42t-41 -62t-15 -75.5z" />
+<glyph unicode="&#xb1;" d="M102 0v150h924v-150h-924zM102 647v150h387v389h150v-389h387v-150h-387v-385h-150v385h-387z" />
+<glyph unicode="&#xb2;" horiz-adv-x="678" d="M49 586v112l209 228q57 62 93 104.5t56 76t27.5 63t7.5 63.5q0 65 -33 97t-87 32q-51 0 -97.5 -25t-91.5 -63l-78 94q54 48 120.5 80.5t148.5 32.5q60 0 108.5 -16.5t82.5 -48t52.5 -77t18.5 -102.5q0 -50 -14.5 -93t-41.5 -85.5t-66.5 -88t-90.5 -100.5l-148 -157h396 v-127h-572z" />
+<glyph unicode="&#xb3;" horiz-adv-x="678" d="M31 625v133q63 -34 129 -53t119 -19q98 0 142 41.5t44 114.5q0 74 -53.5 107.5t-149.5 33.5h-98v113h98q92 0 134 39.5t42 103.5q0 32 -10 55.5t-27.5 38.5t-41 22t-50.5 7q-59 0 -107.5 -20.5t-99.5 -57.5l-69 96q29 23 59.5 41.5t64.5 31.5t72 20.5t82 7.5 q69 0 121.5 -17t87.5 -47t52.5 -71.5t17.5 -90.5q0 -78 -40.5 -131t-109.5 -77q88 -23 132 -76t44 -131q0 -60 -20 -110t-61.5 -85.5t-104.5 -55.5t-149 -20q-70 0 -131.5 12.5t-118.5 43.5z" />
+<glyph unicode="&#xb4;" horiz-adv-x="1182" d="M393 1241v27q22 29 45.5 67t47 78.5t44.5 81t37 74.5h219v-21q-16 -27 -47.5 -67.5t-70 -84.5t-79 -85.5t-75.5 -69.5h-121z" />
+<glyph unicode="&#xb5;" horiz-adv-x="1217" d="M174 -492v1590h182v-707q0 -130 53 -195t164 -65q82 0 137 26t88.5 76.5t47.5 124.5t14 170v570h182v-1098h-147l-27 147h-10q-48 -83 -120 -125t-175 -42q-72 0 -125 23t-88 65q1 -38 3 -78q2 -35 2.5 -77.5t0.5 -84.5v-320h-182z" />
+<glyph unicode="&#xb6;" horiz-adv-x="1341" d="M113 1042q0 147 32.5 245.5t92 158.5t142.5 85t183 25h563v-1816h-120v1657h-207v-1657h-121v819q-61 -18 -146 -18q-95 0 -172.5 25.5t-132 84.5t-84.5 155t-30 236z" />
+<glyph unicode="&#xb7;" horiz-adv-x="549" d="M147 723q0 38 10 64.5t27 43t40 24t50 7.5q26 0 49.5 -7.5t40.5 -24t27 -43t10 -64.5q0 -37 -10 -63t-27 -43t-40.5 -25t-49.5 -8q-27 0 -50 8t-40 25t-27 43t-10 63z" />
+<glyph unicode="&#xb8;" horiz-adv-x="420" d="M35 -375q15 -3 39.5 -4.5t40.5 -1.5q71 0 111 21.5t40 70.5q0 24 -13 41.5t-36 30.5t-54.5 22.5t-68.5 18.5l90 176h121l-57 -115q34 -8 63 -21t50.5 -33.5t34 -49.5t12.5 -68q0 -97 -70.5 -151t-220.5 -54q-22 0 -44.5 3t-37.5 6v108z" />
+<glyph unicode="&#xb9;" horiz-adv-x="678" d="M63 1274l244 188h135v-876h-145v516q0 25 0.5 55t2 60t3 58t2.5 50q-14 -17 -33 -37t-41 -37l-94 -73z" />
+<glyph unicode="&#xba;" horiz-adv-x="717" d="M66 1133q0 83 20.5 147.5t58.5 108.5t92.5 67t122.5 23q62 0 115.5 -23t92.5 -67t61 -108.5t22 -147.5t-20.5 -148t-59 -109.5t-93 -68t-122.5 -23.5q-63 0 -116 23.5t-92 68t-60.5 109.5t-21.5 148zM197 1133q0 -119 37.5 -179.5t123.5 -60.5q85 0 122.5 60.5 t37.5 179.5q0 120 -37.5 177.5t-122.5 57.5q-86 0 -123.5 -57.5t-37.5 -177.5z" />
+<glyph unicode="&#xbb;" horiz-adv-x="997" d="M84 193l238 348l-238 348l117 78l309 -414v-27l-309 -411zM492 193l237 348l-237 348l116 78l310 -414v-27l-310 -411z" />
+<glyph unicode="&#xbc;" horiz-adv-x="1509" d="M63 1274l244 188h135v-876h-145v516q0 25 0.5 55t2 60t3 58t2.5 50q-14 -17 -33 -37t-41 -37l-94 -73zM234 0l811 1462h157l-811 -1462h-157zM776 193v111l377 579h141v-563h125v-127h-125v-192h-143v192h-375zM922 320h229v195q0 42 1.5 91.5t4.5 98.5q-5 -11 -15 -29.5 t-21 -39.5t-23 -41l-21 -35z" />
+<glyph unicode="&#xbd;" horiz-adv-x="1509" d="M44 1274l244 188h135v-876h-145v516q0 25 0.5 55t2 60t3 58t2.5 50q-14 -17 -33 -37t-41 -37l-94 -73zM213 0l811 1462h157l-811 -1462h-157zM868 1v112l209 228q57 62 93 104.5t56 76t27.5 63t7.5 63.5q0 65 -33 97t-87 32q-51 0 -97.5 -25t-91.5 -63l-78 94 q54 48 120.5 80.5t148.5 32.5q60 0 108.5 -16.5t82.5 -48t52.5 -77t18.5 -102.5q0 -50 -14.5 -93t-41.5 -85.5t-66.5 -88t-90.5 -100.5l-148 -157h396v-127h-572z" />
+<glyph unicode="&#xbe;" horiz-adv-x="1509" d="M31 625v133q63 -34 129 -53t119 -19q98 0 142 41.5t44 114.5q0 74 -53.5 107.5t-149.5 33.5h-98v113h98q92 0 134 39.5t42 103.5q0 32 -10 55.5t-27.5 38.5t-41 22t-50.5 7q-59 0 -107.5 -20.5t-99.5 -57.5l-69 96q29 23 59.5 41.5t64.5 31.5t72 20.5t82 7.5 q69 0 121.5 -17t87.5 -47t52.5 -71.5t17.5 -90.5q0 -78 -40.5 -131t-109.5 -77q88 -23 132 -76t44 -131q0 -60 -20 -110t-61.5 -85.5t-104.5 -55.5t-149 -20q-70 0 -131.5 12.5t-118.5 43.5zM328 0l811 1462h157l-811 -1462h-157zM843 193v111l377 579h141v-563h125v-127 h-125v-192h-143v192h-375zM989 320h229v195q0 42 1.5 91.5t4.5 98.5q-5 -11 -15 -29.5t-21 -39.5t-23 -41l-21 -35z" />
+<glyph unicode="&#xbf;" horiz-adv-x="872" d="M68 -20q0 68 13.5 120t40 97t67 87t94.5 89q52 45 85 78.5t52 64.5t26 64.5t7 76.5v19h139v-37q0 -58 -8 -103.5t-27.5 -86t-52 -78.5t-82.5 -80q-48 -41 -82 -74.5t-55.5 -68t-32 -74t-10.5 -92.5q0 -48 15 -87.5t43.5 -68t71 -44t97.5 -15.5q84 0 159 25.5t144 60.5 l64 -146q-82 -42 -176 -71t-191 -29q-93 0 -167.5 25.5t-126 73.5t-79.5 117t-28 157zM385 979q0 37 10 63t27.5 43t40.5 25t49 8q27 0 50 -8t40.5 -25t27 -43t9.5 -63q0 -38 -9.5 -64.5t-27 -43t-40.5 -24t-50 -7.5q-26 0 -49 7.5t-40.5 24t-27.5 43t-10 64.5z" />
+<glyph unicode="&#xc0;" horiz-adv-x="1245" d="M0 0l537 1468h170l538 -1468h-190l-160 453h-545l-162 -453h-188zM410 618h426l-148 424q-6 18 -14.5 44t-17.5 56t-18 62.5t-17 63.5q-7 -31 -16 -64t-18 -63.5t-17.5 -56t-14.5 -42.5zM326 1886v21h219q16 -34 37.5 -74.5t44.5 -81t47 -78.5t45 -67v-27h-120 q-35 28 -76 69.5t-79.5 85.5t-70 84.5t-47.5 67.5z" />
+<glyph unicode="&#xc1;" horiz-adv-x="1245" d="M0 0l537 1468h170l538 -1468h-190l-160 453h-545l-162 -453h-188zM410 618h426l-148 424q-6 18 -14.5 44t-17.5 56t-18 62.5t-17 63.5q-7 -31 -16 -64t-18 -63.5t-17.5 -56t-14.5 -42.5zM534 1579v27q22 29 45.5 67t47 78.5t44.5 81t37 74.5h219v-21q-16 -27 -47.5 -67.5 t-70 -84.5t-79 -85.5t-75.5 -69.5h-121z" />
+<glyph unicode="&#xc2;" horiz-adv-x="1245" d="M0 0l537 1468h170l538 -1468h-190l-160 453h-545l-162 -453h-188zM410 618h426l-148 424q-6 18 -14.5 44t-17.5 56t-18 62.5t-17 63.5q-7 -31 -16 -64t-18 -63.5t-17.5 -56t-14.5 -42.5zM289 1579v27q26 29 60 67t67.5 78.5t63 81t45.5 74.5h192q16 -34 45.5 -74.5 t63 -81t68 -78.5t59.5 -67v-27h-121q-51 34 -105 82.5t-106 103.5q-54 -55 -107 -103.5t-104 -82.5h-121z" />
+<glyph unicode="&#xc3;" horiz-adv-x="1245" d="M0 0l537 1468h170l538 -1468h-190l-160 453h-545l-162 -453h-188zM410 618h426l-148 424q-6 18 -14.5 44t-17.5 56t-18 62.5t-17 63.5q-7 -31 -16 -64t-18 -63.5t-17.5 -56t-14.5 -42.5zM264 1579q5 60 21.5 109t43 83.5t63.5 53t83 18.5q42 0 82.5 -17.5t78.5 -38.5 t72.5 -38.5t63.5 -17.5q45 0 68 26t38 88h105q-5 -60 -21.5 -108.5t-43 -83t-63.5 -53.5t-83 -19q-40 0 -79.5 17.5t-77.5 39t-73 39t-67 17.5q-45 0 -69 -26.5t-38 -88.5h-104z" />
+<glyph unicode="&#xc4;" horiz-adv-x="1245" d="M0 0l537 1468h170l538 -1468h-190l-160 453h-545l-162 -453h-188zM410 618h426l-148 424q-6 18 -14.5 44t-17.5 56t-18 62.5t-17 63.5q-7 -31 -16 -64t-18 -63.5t-17.5 -56t-14.5 -42.5zM340 1733q0 54 28 78t68 24q39 0 68 -24.5t29 -77.5t-29 -78t-68 -25q-40 0 -68 25 t-28 78zM715 1733q0 54 28 78t68 24q19 0 36.5 -6t30.5 -18.5t21 -31.5t8 -46q0 -53 -29 -78t-67 -25q-40 0 -68 25t-28 78z" />
+<glyph unicode="&#xc5;" horiz-adv-x="1245" d="M0 0l537 1468h170l538 -1468h-190l-160 453h-545l-162 -453h-188zM410 618h426l-148 424q-6 18 -14.5 44t-17.5 56t-18 62.5t-17 63.5q-7 -31 -16 -64t-18 -63.5t-17.5 -56t-14.5 -42.5zM396 1581q0 51 16 90.5t45.5 67.5t70.5 42.5t91 14.5q48 0 90 -14.5t73 -42 t48.5 -67t17.5 -89.5q0 -51 -17.5 -91.5t-48 -68.5t-72.5 -42.5t-91 -14.5q-50 0 -91 14.5t-70.5 42.5t-45.5 67.5t-16 90.5zM506 1581q0 -53 28.5 -83t84.5 -30q49 0 80.5 30t31.5 83t-31.5 83t-80.5 30q-50 0 -81.5 -30t-31.5 -83z" />
+<glyph unicode="&#xc6;" horiz-adv-x="1745" d="M-2 0l655 1462h969v-164h-573v-452h534v-162h-534v-520h573v-164h-760v453h-475l-203 -453h-186zM459 618h403v680h-108z" />
+<glyph unicode="&#xc7;" horiz-adv-x="1235" d="M125 733q0 166 43.5 304t128 237t209.5 154t287 55q108 0 206 -22t177 -64l-78 -156q-63 32 -137 55t-168 23q-107 0 -194 -40.5t-148.5 -116.5t-95 -185t-33.5 -246q0 -141 29.5 -250.5t88.5 -184.5t147 -114t206 -39q89 0 169 17.5t158 40.5v-162q-39 -15 -78 -26.5 t-81.5 -18.5t-91 -10.5t-107.5 -3.5q-164 0 -284 54t-198.5 153t-116.5 238t-38 308zM543 -375q15 -3 39.5 -4.5t40.5 -1.5q71 0 111 21.5t40 70.5q0 24 -13 41.5t-36 30.5t-54.5 22.5t-68.5 18.5l90 176h121l-57 -115q34 -8 63 -21t50.5 -33.5t34 -49.5t12.5 -68 q0 -97 -70.5 -151t-220.5 -54q-22 0 -44.5 3t-37.5 6v108z" />
+<glyph unicode="&#xc8;" horiz-adv-x="1081" d="M199 0v1462h759v-164h-573v-452h535v-162h-535v-520h573v-164h-759zM320 1886v21h219q16 -34 37.5 -74.5t44.5 -81t47 -78.5t45 -67v-27h-120q-35 28 -76 69.5t-79.5 85.5t-70 84.5t-47.5 67.5z" />
+<glyph unicode="&#xc9;" horiz-adv-x="1081" d="M199 0v1462h759v-164h-573v-452h535v-162h-535v-520h573v-164h-759zM456 1579v27q22 29 45.5 67t47 78.5t44.5 81t37 74.5h219v-21q-16 -27 -47.5 -67.5t-70 -84.5t-79 -85.5t-75.5 -69.5h-121z" />
+<glyph unicode="&#xca;" horiz-adv-x="1081" d="M199 0v1462h759v-164h-573v-452h535v-162h-535v-520h573v-164h-759zM243 1579v27q26 29 60 67t67.5 78.5t63 81t45.5 74.5h192q16 -34 45.5 -74.5t63 -81t68 -78.5t59.5 -67v-27h-121q-51 34 -105 82.5t-106 103.5q-54 -55 -107 -103.5t-104 -82.5h-121z" />
+<glyph unicode="&#xcb;" horiz-adv-x="1081" d="M199 0v1462h759v-164h-573v-452h535v-162h-535v-520h573v-164h-759zM296 1733q0 54 28 78t68 24q39 0 68 -24.5t29 -77.5t-29 -78t-68 -25q-40 0 -68 25t-28 78zM671 1733q0 54 28 78t68 24q19 0 36.5 -6t30.5 -18.5t21 -31.5t8 -46q0 -53 -29 -78t-67 -25q-40 0 -68 25 t-28 78z" />
+<glyph unicode="&#xcc;" horiz-adv-x="694" d="M82 0v102l172 41v1176l-172 41v102h530v-102l-172 -41v-1176l172 -41v-102h-530zM62 1886v21h219q16 -34 37.5 -74.5t44.5 -81t47 -78.5t45 -67v-27h-120q-35 28 -76 69.5t-79.5 85.5t-70 84.5t-47.5 67.5z" />
+<glyph unicode="&#xcd;" horiz-adv-x="694" d="M82 0v102l172 41v1176l-172 41v102h530v-102l-172 -41v-1176l172 -41v-102h-530zM257 1579v27q22 29 45.5 67t47 78.5t44.5 81t37 74.5h219v-21q-16 -27 -47.5 -67.5t-70 -84.5t-79 -85.5t-75.5 -69.5h-121z" />
+<glyph unicode="&#xce;" horiz-adv-x="694" d="M82 0v102l172 41v1176l-172 41v102h530v-102l-172 -41v-1176l172 -41v-102h-530zM17 1579v27q26 29 60 67t67.5 78.5t63 81t45.5 74.5h192q16 -34 45.5 -74.5t63 -81t68 -78.5t59.5 -67v-27h-121q-51 34 -105 82.5t-106 103.5q-54 -55 -107 -103.5t-104 -82.5h-121z" />
+<glyph unicode="&#xcf;" horiz-adv-x="694" d="M82 0v102l172 41v1176l-172 41v102h530v-102l-172 -41v-1176l172 -41v-102h-530zM64 1733q0 54 28 78t68 24q39 0 68 -24.5t29 -77.5t-29 -78t-68 -25q-40 0 -68 25t-28 78zM439 1733q0 54 28 78t68 24q19 0 36.5 -6t30.5 -18.5t21 -31.5t8 -46q0 -53 -29 -78t-67 -25 q-40 0 -68 25t-28 78z" />
+<glyph unicode="&#xd0;" horiz-adv-x="1401" d="M47 643v162h152v657h407q153 0 277 -46t211 -136.5t134.5 -224.5t47.5 -310q0 -185 -48 -324.5t-139 -233t-223.5 -140.5t-300.5 -47h-366v643h-152zM385 160h162q264 0 398 146t134 433q0 146 -33 252.5t-96 175.5t-155 102.5t-209 33.5h-201v-498h336v-162h-336v-483z " />
+<glyph unicode="&#xd1;" horiz-adv-x="1493" d="M199 0v1462h213l716 -1204h7q-3 76 -7 150q0 32 -2 66l-4 66q-2 34 -2 65v57v800h174v-1462h-215l-719 1210h-8q6 -77 10 -153q4 -65 6.5 -136t2.5 -128v-793h-172zM397 1579q5 60 21.5 109t43 83.5t63.5 53t83 18.5q42 0 82.5 -17.5t78.5 -38.5t72.5 -38.5t63.5 -17.5 q45 0 68 26t38 88h105q-5 -60 -21.5 -108.5t-43 -83t-63.5 -53.5t-83 -19q-40 0 -79.5 17.5t-77.5 39t-73 39t-67 17.5q-45 0 -69 -26.5t-38 -88.5h-104z" />
+<glyph unicode="&#xd2;" horiz-adv-x="1520" d="M125 735q0 170 38 308.5t117 236.5t199 151.5t283 53.5q155 0 272.5 -53.5t197.5 -152t120.5 -237t40.5 -309.5q0 -169 -40.5 -308t-120.5 -238t-198.5 -153t-273.5 -54q-163 0 -282.5 54t-198 153t-116.5 238.5t-38 309.5zM322 733q0 -137 26 -246.5t79.5 -186t136 -117 t196.5 -40.5t196.5 40.5t136 117t78.5 186t25 246.5q0 138 -25 247t-78 184.5t-135 116t-196 40.5t-197 -40.5t-137 -116t-80 -184.5t-26 -247zM477 1886v21h219q16 -34 37.5 -74.5t44.5 -81t47 -78.5t45 -67v-27h-120q-35 28 -76 69.5t-79.5 85.5t-70 84.5t-47.5 67.5z" />
+<glyph unicode="&#xd3;" horiz-adv-x="1520" d="M125 735q0 170 38 308.5t117 236.5t199 151.5t283 53.5q155 0 272.5 -53.5t197.5 -152t120.5 -237t40.5 -309.5q0 -169 -40.5 -308t-120.5 -238t-198.5 -153t-273.5 -54q-163 0 -282.5 54t-198 153t-116.5 238.5t-38 309.5zM322 733q0 -137 26 -246.5t79.5 -186t136 -117 t196.5 -40.5t196.5 40.5t136 117t78.5 186t25 246.5q0 138 -25 247t-78 184.5t-135 116t-196 40.5t-197 -40.5t-137 -116t-80 -184.5t-26 -247zM651 1579v27q22 29 45.5 67t47 78.5t44.5 81t37 74.5h219v-21q-16 -27 -47.5 -67.5t-70 -84.5t-79 -85.5t-75.5 -69.5h-121z" />
+<glyph unicode="&#xd4;" horiz-adv-x="1520" d="M125 735q0 170 38 308.5t117 236.5t199 151.5t283 53.5q155 0 272.5 -53.5t197.5 -152t120.5 -237t40.5 -309.5q0 -169 -40.5 -308t-120.5 -238t-198.5 -153t-273.5 -54q-163 0 -282.5 54t-198 153t-116.5 238.5t-38 309.5zM322 733q0 -137 26 -246.5t79.5 -186t136 -117 t196.5 -40.5t196.5 40.5t136 117t78.5 186t25 246.5q0 138 -25 247t-78 184.5t-135 116t-196 40.5t-197 -40.5t-137 -116t-80 -184.5t-26 -247zM432 1579v27q26 29 60 67t67.5 78.5t63 81t45.5 74.5h192q16 -34 45.5 -74.5t63 -81t68 -78.5t59.5 -67v-27h-121 q-51 34 -105 82.5t-106 103.5q-54 -55 -107 -103.5t-104 -82.5h-121z" />
+<glyph unicode="&#xd5;" horiz-adv-x="1520" d="M125 735q0 170 38 308.5t117 236.5t199 151.5t283 53.5q155 0 272.5 -53.5t197.5 -152t120.5 -237t40.5 -309.5q0 -169 -40.5 -308t-120.5 -238t-198.5 -153t-273.5 -54q-163 0 -282.5 54t-198 153t-116.5 238.5t-38 309.5zM322 733q0 -137 26 -246.5t79.5 -186t136 -117 t196.5 -40.5t196.5 40.5t136 117t78.5 186t25 246.5q0 138 -25 247t-78 184.5t-135 116t-196 40.5t-197 -40.5t-137 -116t-80 -184.5t-26 -247zM383 1579q5 60 21.5 109t43 83.5t63.5 53t83 18.5q42 0 82.5 -17.5t78.5 -38.5t72.5 -38.5t63.5 -17.5q45 0 68 26t38 88h105 q-5 -60 -21.5 -108.5t-43 -83t-63.5 -53.5t-83 -19q-40 0 -79.5 17.5t-77.5 39t-73 39t-67 17.5q-45 0 -69 -26.5t-38 -88.5h-104z" />
+<glyph unicode="&#xd6;" horiz-adv-x="1520" d="M125 735q0 170 38 308.5t117 236.5t199 151.5t283 53.5q155 0 272.5 -53.5t197.5 -152t120.5 -237t40.5 -309.5q0 -169 -40.5 -308t-120.5 -238t-198.5 -153t-273.5 -54q-163 0 -282.5 54t-198 153t-116.5 238.5t-38 309.5zM322 733q0 -137 26 -246.5t79.5 -186t136 -117 t196.5 -40.5t196.5 40.5t136 117t78.5 186t25 246.5q0 138 -25 247t-78 184.5t-135 116t-196 40.5t-197 -40.5t-137 -116t-80 -184.5t-26 -247zM477 1733q0 54 28 78t68 24q39 0 68 -24.5t29 -77.5t-29 -78t-68 -25q-40 0 -68 25t-28 78zM852 1733q0 54 28 78t68 24 q19 0 36.5 -6t30.5 -18.5t21 -31.5t8 -46q0 -53 -29 -78t-67 -25q-40 0 -68 25t-28 78z" />
+<glyph unicode="&#xd7;" d="M141 1042l105 105l317 -318l322 318l104 -103l-321 -321l319 -320l-102 -102l-322 317l-317 -315l-103 103l316 317z" />
+<glyph unicode="&#xd8;" horiz-adv-x="1520" d="M125 735q0 170 38 308.5t117 236.5t199 151.5t283 53.5q94 0 174.5 -21t146.5 -59l80 127l137 -78l-92 -149q91 -99 138 -244t47 -328q0 -169 -40.5 -308t-120.5 -238t-198.5 -153t-273.5 -54q-189 0 -322 71l-78 -127l-137 78l90 145q-97 100 -142.5 249t-45.5 339z M322 733q0 -131 23 -235.5t71 -182.5l579 945q-48 29 -105 45t-128 16q-114 0 -197 -40.5t-137 -116t-80 -184.5t-26 -247zM530 201q47 -28 104 -43t126 -15q114 0 196.5 40.5t136 117t78.5 186t25 246.5q0 257 -88 408z" />
+<glyph unicode="&#xd9;" horiz-adv-x="1430" d="M184 520v942h187v-952q0 -175 86.5 -271t261.5 -96q89 0 153 27t105 76t61 117t21 149v952h186v-948q0 -114 -33 -212t-99.5 -170t-167 -113t-236.5 -41q-128 0 -226 38.5t-164.5 109.5t-100.5 170.5t-34 221.5zM454 1886v21h219q16 -34 37.5 -74.5t44.5 -81t47 -78.5 t45 -67v-27h-120q-35 28 -76 69.5t-79.5 85.5t-70 84.5t-47.5 67.5z" />
+<glyph unicode="&#xda;" horiz-adv-x="1430" d="M184 520v942h187v-952q0 -175 86.5 -271t261.5 -96q89 0 153 27t105 76t61 117t21 149v952h186v-948q0 -114 -33 -212t-99.5 -170t-167 -113t-236.5 -41q-128 0 -226 38.5t-164.5 109.5t-100.5 170.5t-34 221.5zM590 1579v27q22 29 45.5 67t47 78.5t44.5 81t37 74.5h219 v-21q-16 -27 -47.5 -67.5t-70 -84.5t-79 -85.5t-75.5 -69.5h-121z" />
+<glyph unicode="&#xdb;" horiz-adv-x="1430" d="M184 520v942h187v-952q0 -175 86.5 -271t261.5 -96q89 0 153 27t105 76t61 117t21 149v952h186v-948q0 -114 -33 -212t-99.5 -170t-167 -113t-236.5 -41q-128 0 -226 38.5t-164.5 109.5t-100.5 170.5t-34 221.5zM379 1579v27q26 29 60 67t67.5 78.5t63 81t45.5 74.5h192 q16 -34 45.5 -74.5t63 -81t68 -78.5t59.5 -67v-27h-121q-51 34 -105 82.5t-106 103.5q-54 -55 -107 -103.5t-104 -82.5h-121z" />
+<glyph unicode="&#xdc;" horiz-adv-x="1430" d="M184 520v942h187v-952q0 -175 86.5 -271t261.5 -96q89 0 153 27t105 76t61 117t21 149v952h186v-948q0 -114 -33 -212t-99.5 -170t-167 -113t-236.5 -41q-128 0 -226 38.5t-164.5 109.5t-100.5 170.5t-34 221.5zM432 1733q0 54 28 78t68 24q39 0 68 -24.5t29 -77.5 t-29 -78t-68 -25q-40 0 -68 25t-28 78zM807 1733q0 54 28 78t68 24q19 0 36.5 -6t30.5 -18.5t21 -31.5t8 -46q0 -53 -29 -78t-67 -25q-40 0 -68 25t-28 78z" />
+<glyph unicode="&#xdd;" horiz-adv-x="1079" d="M0 1462h203l336 -739l340 739h200l-446 -893v-569h-187v559zM442 1579v27q22 29 45.5 67t47 78.5t44.5 81t37 74.5h219v-21q-16 -27 -47.5 -67.5t-70 -84.5t-79 -85.5t-75.5 -69.5h-121z" />
+<glyph unicode="&#xde;" horiz-adv-x="1180" d="M199 0v1462h186v-252h176q134 0 231 -28.5t160 -83t93 -134.5t30 -182q0 -91 -27.5 -175t-90.5 -148.5t-166.5 -103t-255.5 -38.5h-150v-317h-186zM385 475h129q93 0 162.5 16t115 51.5t68.5 92t23 137.5q0 143 -82 211t-256 68h-160v-576z" />
+<glyph unicode="&#xdf;" horiz-adv-x="1233" d="M174 0v1200q0 104 31.5 174.5t88 113t134.5 61t170 18.5t168 -19t130 -57t84 -96t30 -135q0 -57 -21.5 -101.5t-53 -81t-69 -66.5t-69 -57.5t-53 -54.5t-21.5 -57q0 -21 7 -37.5t26.5 -36t54.5 -44t92 -62.5q56 -37 100 -73t74.5 -77t47 -89t16.5 -110q0 -87 -28 -150 t-78.5 -103.5t-121 -60t-155.5 -19.5q-97 0 -166.5 17.5t-122.5 51.5v166q26 -16 58.5 -31.5t68.5 -27.5t74 -19.5t75 -7.5q56 0 96.5 12.5t66.5 35t38 54.5t12 72q0 36 -8.5 65.5t-30 57.5t-57.5 57t-92 64q-63 40 -105.5 74t-69 67.5t-37.5 68.5t-11 77q0 54 20.5 93.5 t51.5 71t67 58.5t67 56t51.5 62.5t20.5 77.5q0 42 -16.5 73t-46.5 51.5t-71.5 30t-92.5 9.5q-49 0 -93 -9.5t-77 -33.5t-52.5 -65.5t-19.5 -106.5v-1202h-182z" />
+<glyph unicode="&#xe0;" horiz-adv-x="1087" d="M94 307q0 164 115.5 252t351.5 96l184 7v69q0 67 -14.5 112t-42 72.5t-68 39.5t-92.5 12q-83 0 -154.5 -24t-137.5 -58l-64 137q74 40 165 68t191 28q102 0 176.5 -20.5t123 -65t72.5 -113.5t24 -167v-752h-131l-37 152h-8q-33 -45 -66 -77.5t-72 -53.5t-87 -31t-111 -10 q-69 0 -127 19.5t-100.5 60t-66.5 102t-24 145.5zM283 305q0 -92 48.5 -135t127.5 -43q61 0 113 19t90 57.5t59.5 97t21.5 137.5v99l-143 -7q-90 -4 -151 -20t-97.5 -44.5t-52.5 -69t-16 -91.5zM285 1548v21h219q16 -34 37.5 -74.5t44.5 -81t47 -78.5t45 -67v-27h-120 q-35 28 -76 69.5t-79.5 85.5t-70 84.5t-47.5 67.5z" />
+<glyph unicode="&#xe1;" horiz-adv-x="1087" d="M94 307q0 164 115.5 252t351.5 96l184 7v69q0 67 -14.5 112t-42 72.5t-68 39.5t-92.5 12q-83 0 -154.5 -24t-137.5 -58l-64 137q74 40 165 68t191 28q102 0 176.5 -20.5t123 -65t72.5 -113.5t24 -167v-752h-131l-37 152h-8q-33 -45 -66 -77.5t-72 -53.5t-87 -31t-111 -10 q-69 0 -127 19.5t-100.5 60t-66.5 102t-24 145.5zM283 305q0 -92 48.5 -135t127.5 -43q61 0 113 19t90 57.5t59.5 97t21.5 137.5v99l-143 -7q-90 -4 -151 -20t-97.5 -44.5t-52.5 -69t-16 -91.5zM446 1241v27q22 29 45.5 67t47 78.5t44.5 81t37 74.5h219v-21 q-16 -27 -47.5 -67.5t-70 -84.5t-79 -85.5t-75.5 -69.5h-121z" />
+<glyph unicode="&#xe2;" horiz-adv-x="1087" d="M94 307q0 164 115.5 252t351.5 96l184 7v69q0 67 -14.5 112t-42 72.5t-68 39.5t-92.5 12q-83 0 -154.5 -24t-137.5 -58l-64 137q74 40 165 68t191 28q102 0 176.5 -20.5t123 -65t72.5 -113.5t24 -167v-752h-131l-37 152h-8q-33 -45 -66 -77.5t-72 -53.5t-87 -31t-111 -10 q-69 0 -127 19.5t-100.5 60t-66.5 102t-24 145.5zM283 305q0 -92 48.5 -135t127.5 -43q61 0 113 19t90 57.5t59.5 97t21.5 137.5v99l-143 -7q-90 -4 -151 -20t-97.5 -44.5t-52.5 -69t-16 -91.5zM228 1241v27q26 29 60 67t67.5 78.5t63 81t45.5 74.5h192q16 -34 45.5 -74.5 t63 -81t68 -78.5t59.5 -67v-27h-121q-51 34 -105 82.5t-106 103.5q-54 -55 -107 -103.5t-104 -82.5h-121z" />
+<glyph unicode="&#xe3;" horiz-adv-x="1087" d="M94 307q0 164 115.5 252t351.5 96l184 7v69q0 67 -14.5 112t-42 72.5t-68 39.5t-92.5 12q-83 0 -154.5 -24t-137.5 -58l-64 137q74 40 165 68t191 28q102 0 176.5 -20.5t123 -65t72.5 -113.5t24 -167v-752h-131l-37 152h-8q-33 -45 -66 -77.5t-72 -53.5t-87 -31t-111 -10 q-69 0 -127 19.5t-100.5 60t-66.5 102t-24 145.5zM283 305q0 -92 48.5 -135t127.5 -43q61 0 113 19t90 57.5t59.5 97t21.5 137.5v99l-143 -7q-90 -4 -151 -20t-97.5 -44.5t-52.5 -69t-16 -91.5zM191 1241q5 60 21.5 109t43 83.5t63.5 53t83 18.5q42 0 82.5 -17.5t78.5 -38.5 t72.5 -38.5t63.5 -17.5q45 0 68 26t38 88h105q-5 -60 -21.5 -108.5t-43 -83t-63.5 -53.5t-83 -19q-40 0 -79.5 17.5t-77.5 39t-73 39t-67 17.5q-45 0 -69 -26.5t-38 -88.5h-104z" />
+<glyph unicode="&#xe4;" horiz-adv-x="1087" d="M94 307q0 164 115.5 252t351.5 96l184 7v69q0 67 -14.5 112t-42 72.5t-68 39.5t-92.5 12q-83 0 -154.5 -24t-137.5 -58l-64 137q74 40 165 68t191 28q102 0 176.5 -20.5t123 -65t72.5 -113.5t24 -167v-752h-131l-37 152h-8q-33 -45 -66 -77.5t-72 -53.5t-87 -31t-111 -10 q-69 0 -127 19.5t-100.5 60t-66.5 102t-24 145.5zM283 305q0 -92 48.5 -135t127.5 -43q61 0 113 19t90 57.5t59.5 97t21.5 137.5v99l-143 -7q-90 -4 -151 -20t-97.5 -44.5t-52.5 -69t-16 -91.5zM273 1395q0 54 28 78t68 24q39 0 68 -24.5t29 -77.5t-29 -78t-68 -25 q-40 0 -68 25t-28 78zM648 1395q0 54 28 78t68 24q19 0 36.5 -6t30.5 -18.5t21 -31.5t8 -46q0 -53 -29 -78t-67 -25q-40 0 -68 25t-28 78z" />
+<glyph unicode="&#xe5;" horiz-adv-x="1087" d="M94 307q0 164 115.5 252t351.5 96l184 7v69q0 67 -14.5 112t-42 72.5t-68 39.5t-92.5 12q-83 0 -154.5 -24t-137.5 -58l-64 137q74 40 165 68t191 28q102 0 176.5 -20.5t123 -65t72.5 -113.5t24 -167v-752h-131l-37 152h-8q-33 -45 -66 -77.5t-72 -53.5t-87 -31t-111 -10 q-69 0 -127 19.5t-100.5 60t-66.5 102t-24 145.5zM283 305q0 -92 48.5 -135t127.5 -43q61 0 113 19t90 57.5t59.5 97t21.5 137.5v99l-143 -7q-90 -4 -151 -20t-97.5 -44.5t-52.5 -69t-16 -91.5zM331 1456q0 51 16 90.5t45.5 67.5t70.5 42.5t91 14.5q48 0 90 -14.5t73 -42 t48.5 -67t17.5 -89.5q0 -51 -17.5 -91.5t-48 -68.5t-72.5 -42.5t-91 -14.5q-50 0 -91 14.5t-70.5 42.5t-45.5 67.5t-16 90.5zM441 1456q0 -53 28.5 -83t84.5 -30q49 0 80.5 30t31.5 83t-31.5 83t-80.5 30q-50 0 -81.5 -30t-31.5 -83z" />
+<glyph unicode="&#xe6;" horiz-adv-x="1706" d="M94 307q0 164 115.5 252t351.5 96l184 7v69q0 67 -14.5 112t-42 72.5t-68 39.5t-92.5 12q-83 0 -154.5 -24t-137.5 -58l-64 137q74 40 165 68t191 28q131 0 214 -42.5t126 -135.5q51 85 134 131.5t186 46.5q97 0 174 -35.5t131 -100t82.5 -155t28.5 -200.5v-113h-672 q5 -193 78.5 -284t220.5 -91q49 0 91.5 5t81.5 14.5t76 24t74 32.5v-162q-39 -19 -76.5 -33t-77 -23t-82 -13t-91.5 -4q-138 0 -239 57t-163 172q-34 -54 -72 -96.5t-85.5 -72t-105.5 -45t-132 -15.5q-71 0 -132.5 19.5t-106.5 60t-71 102t-26 145.5zM283 305 q0 -92 48.5 -135t127.5 -43q61 0 113 19t90 57.5t59.5 97t21.5 137.5v99l-143 -7q-90 -4 -151 -20t-97.5 -44.5t-52.5 -69t-16 -91.5zM936 662h471q0 68 -13 124.5t-40.5 96.5t-69.5 62t-100 22q-110 0 -173.5 -78t-74.5 -227z" />
+<glyph unicode="&#xe7;" horiz-adv-x="948" d="M113 543q0 157 38 266.5t104.5 178t155.5 99.5t191 31q78 0 152.5 -17t124.5 -42l-54 -154q-23 10 -51 19.5t-58 17t-59 12t-55 4.5q-157 0 -229 -100.5t-72 -312.5q0 -211 72.5 -308.5t220.5 -97.5q81 0 146.5 18.5t119.5 43.5v-162q-54 -29 -115.5 -44t-150.5 -15 q-101 0 -189 31.5t-153 100t-102 175t-37 256.5zM357 -375q15 -3 39.5 -4.5t40.5 -1.5q71 0 111 21.5t40 70.5q0 24 -13 41.5t-36 30.5t-54.5 22.5t-68.5 18.5l90 176h121l-57 -115q34 -8 63 -21t50.5 -33.5t34 -49.5t12.5 -68q0 -97 -70.5 -151t-220.5 -54q-22 0 -44.5 3 t-37.5 6v108z" />
+<glyph unicode="&#xe8;" horiz-adv-x="1096" d="M113 541q0 136 33 243t93 181.5t143.5 113.5t184.5 39q99 0 178 -35.5t134 -100t84.5 -155t29.5 -200.5v-113h-692q5 -193 81.5 -284t227.5 -91q51 0 94.5 5t84 14.5t78.5 24t77 32.5v-162q-40 -19 -78.5 -33t-79 -23t-84 -13t-94.5 -4q-110 0 -201 37t-156.5 108 t-101.5 176t-36 240zM305 662h492q0 68 -13.5 124.5t-42 96.5t-72.5 62t-106 22q-114 0 -180.5 -78t-77.5 -227zM285 1548v21h219q16 -34 37.5 -74.5t44.5 -81t47 -78.5t45 -67v-27h-120q-35 28 -76 69.5t-79.5 85.5t-70 84.5t-47.5 67.5z" />
+<glyph unicode="&#xe9;" horiz-adv-x="1096" d="M113 541q0 136 33 243t93 181.5t143.5 113.5t184.5 39q99 0 178 -35.5t134 -100t84.5 -155t29.5 -200.5v-113h-692q5 -193 81.5 -284t227.5 -91q51 0 94.5 5t84 14.5t78.5 24t77 32.5v-162q-40 -19 -78.5 -33t-79 -23t-84 -13t-94.5 -4q-110 0 -201 37t-156.5 108 t-101.5 176t-36 240zM305 662h492q0 68 -13.5 124.5t-42 96.5t-72.5 62t-106 22q-114 0 -180.5 -78t-77.5 -227zM475 1241v27q22 29 45.5 67t47 78.5t44.5 81t37 74.5h219v-21q-16 -27 -47.5 -67.5t-70 -84.5t-79 -85.5t-75.5 -69.5h-121z" />
+<glyph unicode="&#xea;" horiz-adv-x="1096" d="M113 541q0 136 33 243t93 181.5t143.5 113.5t184.5 39q99 0 178 -35.5t134 -100t84.5 -155t29.5 -200.5v-113h-692q5 -193 81.5 -284t227.5 -91q51 0 94.5 5t84 14.5t78.5 24t77 32.5v-162q-40 -19 -78.5 -33t-79 -23t-84 -13t-94.5 -4q-110 0 -201 37t-156.5 108 t-101.5 176t-36 240zM305 662h492q0 68 -13.5 124.5t-42 96.5t-72.5 62t-106 22q-114 0 -180.5 -78t-77.5 -227zM224 1241v27q26 29 60 67t67.5 78.5t63 81t45.5 74.5h192q16 -34 45.5 -74.5t63 -81t68 -78.5t59.5 -67v-27h-121q-51 34 -105 82.5t-106 103.5 q-54 -55 -107 -103.5t-104 -82.5h-121z" />
+<glyph unicode="&#xeb;" horiz-adv-x="1096" d="M113 541q0 136 33 243t93 181.5t143.5 113.5t184.5 39q99 0 178 -35.5t134 -100t84.5 -155t29.5 -200.5v-113h-692q5 -193 81.5 -284t227.5 -91q51 0 94.5 5t84 14.5t78.5 24t77 32.5v-162q-40 -19 -78.5 -33t-79 -23t-84 -13t-94.5 -4q-110 0 -201 37t-156.5 108 t-101.5 176t-36 240zM305 662h492q0 68 -13.5 124.5t-42 96.5t-72.5 62t-106 22q-114 0 -180.5 -78t-77.5 -227zM269 1395q0 54 28 78t68 24q39 0 68 -24.5t29 -77.5t-29 -78t-68 -25q-40 0 -68 25t-28 78zM644 1395q0 54 28 78t68 24q19 0 36.5 -6t30.5 -18.5t21 -31.5 t8 -46q0 -53 -29 -78t-67 -25q-40 0 -68 25t-28 78z" />
+<glyph unicode="&#xec;" horiz-adv-x="530" d="M174 0v1098h182v-1098h-182zM-34 1548v21h219q16 -34 37.5 -74.5t44.5 -81t47 -78.5t45 -67v-27h-120q-35 28 -76 69.5t-79.5 85.5t-70 84.5t-47.5 67.5z" />
+<glyph unicode="&#xed;" horiz-adv-x="530" d="M174 0v1098h182v-1098h-182zM185 1241v27q22 29 45.5 67t47 78.5t44.5 81t37 74.5h219v-21q-16 -27 -47.5 -67.5t-70 -84.5t-79 -85.5t-75.5 -69.5h-121z" />
+<glyph unicode="&#xee;" horiz-adv-x="530" d="M174 0v1098h182v-1098h-182zM-67 1241v27q26 29 60 67t67.5 78.5t63 81t45.5 74.5h192q16 -34 45.5 -74.5t63 -81t68 -78.5t59.5 -67v-27h-121q-51 34 -105 82.5t-106 103.5q-54 -55 -107 -103.5t-104 -82.5h-121z" />
+<glyph unicode="&#xef;" horiz-adv-x="530" d="M174 0v1098h182v-1098h-182zM-18 1395q0 54 28 78t68 24q39 0 68 -24.5t29 -77.5t-29 -78t-68 -25q-40 0 -68 25t-28 78zM357 1395q0 54 28 78t68 24q19 0 36.5 -6t30.5 -18.5t21 -31.5t8 -46q0 -53 -29 -78t-67 -25q-40 0 -68 25t-28 78z" />
+<glyph unicode="&#xf0;" horiz-adv-x="1182" d="M111 477q0 119 31.5 211t90.5 155t143 95.5t189 32.5q102 0 179 -29.5t120 -89.5l8 4q-31 118 -91 214t-150 177l-256 -153l-74 114l217 131q-40 28 -82.5 55.5t-89.5 53.5l70 123q65 -32 126 -68t120 -80l227 138l74 -113l-195 -117q67 -65 122.5 -143t95 -171.5 t61.5 -204t22 -239.5q0 -142 -33.5 -252t-96 -186t-151.5 -115.5t-200 -39.5q-104 0 -191.5 33t-151 96.5t-99 156t-35.5 211.5zM303 471q0 -76 16.5 -138.5t52 -107.5t90 -69.5t130.5 -24.5q154 0 221.5 99.5t67.5 295.5q0 56 -17 109.5t-52 94.5t-90 66t-130 25 q-77 0 -131.5 -23t-89.5 -67t-51.5 -109.5t-16.5 -150.5z" />
+<glyph unicode="&#xf1;" horiz-adv-x="1206" d="M174 0v1098h148l26 -148h10q25 43 59.5 74.5t75.5 52.5t87 31t94 10q183 0 275.5 -95.5t92.5 -305.5v-717h-182v707q0 130 -52.5 195t-164.5 65q-81 0 -136 -26t-88.5 -77t-48 -125t-14.5 -170v-569h-182zM251 1241q5 60 21.5 109t43 83.5t63.5 53t83 18.5 q42 0 82.5 -17.5t78.5 -38.5t72.5 -38.5t63.5 -17.5q45 0 68 26t38 88h105q-5 -60 -21.5 -108.5t-43 -83t-63.5 -53.5t-83 -19q-40 0 -79.5 17.5t-77.5 39t-73 39t-67 17.5q-45 0 -69 -26.5t-38 -88.5h-104z" />
+<glyph unicode="&#xf2;" horiz-adv-x="1182" d="M113 551q0 136 33.5 241.5t95.5 178t151.5 110t200.5 37.5q103 0 190 -37.5t150.5 -110t99 -178t35.5 -241.5q0 -137 -33.5 -243.5t-96 -179t-151.5 -110.5t-200 -38q-103 0 -190 38t-150.5 110.5t-99 179t-35.5 243.5zM301 551q0 -209 68.5 -314.5t222.5 -105.5 t221.5 105.5t67.5 314.5t-68.5 312.5t-222.5 103.5t-221.5 -103.5t-67.5 -312.5zM353 1548v21h219q16 -34 37.5 -74.5t44.5 -81t47 -78.5t45 -67v-27h-120q-35 28 -76 69.5t-79.5 85.5t-70 84.5t-47.5 67.5z" />
+<glyph unicode="&#xf3;" horiz-adv-x="1182" d="M113 551q0 136 33.5 241.5t95.5 178t151.5 110t200.5 37.5q103 0 190 -37.5t150.5 -110t99 -178t35.5 -241.5q0 -137 -33.5 -243.5t-96 -179t-151.5 -110.5t-200 -38q-103 0 -190 38t-150.5 110.5t-99 179t-35.5 243.5zM301 551q0 -209 68.5 -314.5t222.5 -105.5 t221.5 105.5t67.5 314.5t-68.5 312.5t-222.5 103.5t-221.5 -103.5t-67.5 -312.5zM473 1241v27q22 29 45.5 67t47 78.5t44.5 81t37 74.5h219v-21q-16 -27 -47.5 -67.5t-70 -84.5t-79 -85.5t-75.5 -69.5h-121z" />
+<glyph unicode="&#xf4;" horiz-adv-x="1182" d="M113 551q0 136 33.5 241.5t95.5 178t151.5 110t200.5 37.5q103 0 190 -37.5t150.5 -110t99 -178t35.5 -241.5q0 -137 -33.5 -243.5t-96 -179t-151.5 -110.5t-200 -38q-103 0 -190 38t-150.5 110.5t-99 179t-35.5 243.5zM301 551q0 -209 68.5 -314.5t222.5 -105.5 t221.5 105.5t67.5 314.5t-68.5 312.5t-222.5 103.5t-221.5 -103.5t-67.5 -312.5zM253 1241v27q26 29 60 67t67.5 78.5t63 81t45.5 74.5h192q16 -34 45.5 -74.5t63 -81t68 -78.5t59.5 -67v-27h-121q-51 34 -105 82.5t-106 103.5q-54 -55 -107 -103.5t-104 -82.5h-121z" />
+<glyph unicode="&#xf5;" horiz-adv-x="1182" d="M113 551q0 136 33.5 241.5t95.5 178t151.5 110t200.5 37.5q103 0 190 -37.5t150.5 -110t99 -178t35.5 -241.5q0 -137 -33.5 -243.5t-96 -179t-151.5 -110.5t-200 -38q-103 0 -190 38t-150.5 110.5t-99 179t-35.5 243.5zM301 551q0 -209 68.5 -314.5t222.5 -105.5 t221.5 105.5t67.5 314.5t-68.5 312.5t-222.5 103.5t-221.5 -103.5t-67.5 -312.5zM228 1241q5 60 21.5 109t43 83.5t63.5 53t83 18.5q42 0 82.5 -17.5t78.5 -38.5t72.5 -38.5t63.5 -17.5q45 0 68 26t38 88h105q-5 -60 -21.5 -108.5t-43 -83t-63.5 -53.5t-83 -19 q-40 0 -79.5 17.5t-77.5 39t-73 39t-67 17.5q-45 0 -69 -26.5t-38 -88.5h-104z" />
+<glyph unicode="&#xf6;" horiz-adv-x="1182" d="M113 551q0 136 33.5 241.5t95.5 178t151.5 110t200.5 37.5q103 0 190 -37.5t150.5 -110t99 -178t35.5 -241.5q0 -137 -33.5 -243.5t-96 -179t-151.5 -110.5t-200 -38q-103 0 -190 38t-150.5 110.5t-99 179t-35.5 243.5zM301 551q0 -209 68.5 -314.5t222.5 -105.5 t221.5 105.5t67.5 314.5t-68.5 312.5t-222.5 103.5t-221.5 -103.5t-67.5 -312.5zM300 1395q0 54 28 78t68 24q39 0 68 -24.5t29 -77.5t-29 -78t-68 -25q-40 0 -68 25t-28 78zM675 1395q0 54 28 78t68 24q19 0 36.5 -6t30.5 -18.5t21 -31.5t8 -46q0 -53 -29 -78t-67 -25 q-40 0 -68 25t-28 78z" />
+<glyph unicode="&#xf7;" d="M102 647v150h924v-150h-924zM449 373q0 35 9 58.5t24.5 38.5t36 21.5t44.5 6.5q23 0 44 -6.5t37 -21.5t25 -38.5t9 -58.5q0 -33 -9 -56.5t-25 -39t-37 -22.5t-44 -7q-24 0 -44.5 7t-36 22.5t-24.5 39t-9 56.5zM449 1071q0 35 9 58.5t24.5 38.5t36 21.5t44.5 6.5 q23 0 44 -6.5t37 -21.5t25 -38.5t9 -58.5q0 -33 -9 -56.5t-25 -39t-37 -22.5t-44 -7q-24 0 -44.5 7t-36 22.5t-24.5 39t-9 56.5z" />
+<glyph unicode="&#xf8;" horiz-adv-x="1182" d="M115 551q0 136 33.5 241.5t95.5 178t151.5 110t200.5 37.5q63 0 119.5 -14.5t105.5 -42.5l68 108l131 -73l-80 -129q62 -73 96.5 -177.5t34.5 -238.5q0 -137 -33.5 -243.5t-96 -179t-151.5 -110.5t-200 -38q-125 0 -223 53l-68 -109l-131 74l80 131q-63 72 -98 178.5 t-35 243.5zM303 551q0 -84 9.5 -149.5t31.5 -116.5l397 647q-29 17 -66.5 26t-82.5 9q-154 0 -221.5 -103.5t-67.5 -312.5zM446 164q31 -17 67 -25t81 -8q154 0 221.5 105.5t67.5 314.5q0 159 -39 258z" />
+<glyph unicode="&#xf9;" horiz-adv-x="1206" d="M164 381v717h182v-707q0 -130 53 -195t164 -65q81 0 136 26t88.5 76.5t48 124.5t14.5 170v570h182v-1098h-147l-27 147h-10q-25 -43 -59.5 -74.5t-75.5 -52t-87 -30.5t-94 -10q-91 0 -160 23t-115 72t-69.5 125t-23.5 181zM300 1548v21h219q16 -34 37.5 -74.5t44.5 -81 t47 -78.5t45 -67v-27h-120q-35 28 -76 69.5t-79.5 85.5t-70 84.5t-47.5 67.5z" />
+<glyph unicode="&#xfa;" horiz-adv-x="1206" d="M164 381v717h182v-707q0 -130 53 -195t164 -65q81 0 136 26t88.5 76.5t48 124.5t14.5 170v570h182v-1098h-147l-27 147h-10q-25 -43 -59.5 -74.5t-75.5 -52t-87 -30.5t-94 -10q-91 0 -160 23t-115 72t-69.5 125t-23.5 181zM489 1241v27q22 29 45.5 67t47 78.5t44.5 81 t37 74.5h219v-21q-16 -27 -47.5 -67.5t-70 -84.5t-79 -85.5t-75.5 -69.5h-121z" />
+<glyph unicode="&#xfb;" horiz-adv-x="1206" d="M164 381v717h182v-707q0 -130 53 -195t164 -65q81 0 136 26t88.5 76.5t48 124.5t14.5 170v570h182v-1098h-147l-27 147h-10q-25 -43 -59.5 -74.5t-75.5 -52t-87 -30.5t-94 -10q-91 0 -160 23t-115 72t-69.5 125t-23.5 181zM266 1241v27q26 29 60 67t67.5 78.5t63 81 t45.5 74.5h192q16 -34 45.5 -74.5t63 -81t68 -78.5t59.5 -67v-27h-121q-51 34 -105 82.5t-106 103.5q-54 -55 -107 -103.5t-104 -82.5h-121z" />
+<glyph unicode="&#xfc;" horiz-adv-x="1206" d="M164 381v717h182v-707q0 -130 53 -195t164 -65q81 0 136 26t88.5 76.5t48 124.5t14.5 170v570h182v-1098h-147l-27 147h-10q-25 -43 -59.5 -74.5t-75.5 -52t-87 -30.5t-94 -10q-91 0 -160 23t-115 72t-69.5 125t-23.5 181zM309 1395q0 54 28 78t68 24q39 0 68 -24.5 t29 -77.5t-29 -78t-68 -25q-40 0 -68 25t-28 78zM684 1395q0 54 28 78t68 24q19 0 36.5 -6t30.5 -18.5t21 -31.5t8 -46q0 -53 -29 -78t-67 -25q-40 0 -68 25t-28 78z" />
+<glyph unicode="&#xfd;" horiz-adv-x="1001" d="M10 1098h189l215 -613q14 -40 28.5 -84t27 -88t21.5 -85t13 -76h6q5 25 16 68t24.5 91.5t28 95.5t25.5 80l199 611h188l-434 -1241q-28 -81 -60.5 -145.5t-75.5 -109.5t-101 -69.5t-138 -24.5q-52 0 -90 5.5t-65 11.5v145q21 -5 53 -8.5t67 -3.5q48 0 83 11.5t61 33.5 t44.5 54t33.5 73l57 160zM407 1241v27q22 29 45.5 67t47 78.5t44.5 81t37 74.5h219v-21q-16 -27 -47.5 -67.5t-70 -84.5t-79 -85.5t-75.5 -69.5h-121z" />
+<glyph unicode="&#xfe;" horiz-adv-x="1200" d="M174 -492v2048h182v-458l-8 -148h8q23 35 52 65.5t67.5 53t86.5 36t108 13.5q94 0 171 -36t131.5 -107.5t84.5 -177.5t30 -246q0 -141 -30 -247.5t-84.5 -178.5t-131.5 -108.5t-171 -36.5q-59 0 -107 13t-86.5 34.5t-68 50.5t-52.5 61h-12q3 -34 6 -65q2 -26 4 -53.5 t2 -43.5v-469h-182zM356 551q0 -101 13.5 -179.5t46 -132t86.5 -81t135 -27.5q135 0 198.5 109t63.5 313q0 208 -63.5 311t-200.5 103q-76 0 -128.5 -23t-85 -70t-48 -117t-17.5 -165v-41z" />
+<glyph unicode="&#xff;" horiz-adv-x="1001" d="M10 1098h189l215 -613q14 -40 28.5 -84t27 -88t21.5 -85t13 -76h6q5 25 16 68t24.5 91.5t28 95.5t25.5 80l199 611h188l-434 -1241q-28 -81 -60.5 -145.5t-75.5 -109.5t-101 -69.5t-138 -24.5q-52 0 -90 5.5t-65 11.5v145q21 -5 53 -8.5t67 -3.5q48 0 83 11.5t61 33.5 t44.5 54t33.5 73l57 160zM228 1395q0 54 28 78t68 24q39 0 68 -24.5t29 -77.5t-29 -78t-68 -25q-40 0 -68 25t-28 78zM603 1395q0 54 28 78t68 24q19 0 36.5 -6t30.5 -18.5t21 -31.5t8 -46q0 -53 -29 -78t-67 -25q-40 0 -68 25t-28 78z" />
+<glyph unicode="&#x131;" horiz-adv-x="530" d="M174 0v1098h182v-1098h-182z" />
+<glyph unicode="&#x152;" horiz-adv-x="1823" d="M125 735q0 170 38 308.5t117 236.5t199 151.5t283 53.5q98 0 182 -23h756v-164h-574v-452h535v-162h-535v-520h574v-164h-758q-43 -9 -88.5 -14.5t-93.5 -5.5q-163 0 -282.5 54t-198 153t-116.5 238.5t-38 309.5zM322 733q0 -137 26 -246.5t79.5 -186t136 -117 t196.5 -40.5q52 0 97 9t83 24v1112q-38 16 -82.5 24.5t-95.5 8.5q-114 0 -197 -40.5t-137 -116t-80 -184.5t-26 -247z" />
+<glyph unicode="&#x153;" horiz-adv-x="1864" d="M113 551q0 136 33.5 241.5t95.5 178t151.5 110t200.5 37.5q121 0 218.5 -55.5t160.5 -161.5q60 105 152.5 161t209.5 56q99 0 178 -35.5t134 -100t84.5 -155t29.5 -200.5v-113h-692q5 -193 81.5 -284t227.5 -91q51 0 94.5 5t84 14.5t78.5 24t77 32.5v-162 q-40 -19 -78.5 -33t-79 -23t-84 -13t-94.5 -4q-130 0 -232 56t-167 165q-63 -109 -162 -165t-227 -56q-103 0 -190 38t-150.5 110.5t-99 179t-35.5 243.5zM301 551q0 -209 68.5 -314.5t222.5 -105.5q150 0 219.5 100.5t69.5 309.5q0 220 -70 323t-221 103 q-154 0 -221.5 -103.5t-67.5 -312.5zM1073 662h492q0 68 -13.5 124.5t-42 96.5t-72.5 62t-106 22q-114 0 -180.5 -78t-77.5 -227z" />
+<glyph unicode="&#x178;" horiz-adv-x="1079" d="M0 1462h203l336 -739l340 739h200l-446 -893v-569h-187v559zM257 1733q0 54 28 78t68 24q39 0 68 -24.5t29 -77.5t-29 -78t-68 -25q-40 0 -68 25t-28 78zM632 1733q0 54 28 78t68 24q19 0 36.5 -6t30.5 -18.5t21 -31.5t8 -46q0 -53 -29 -78t-67 -25q-40 0 -68 25t-28 78z " />
+<glyph unicode="&#x2c6;" horiz-adv-x="1182" d="M258 1241v27q26 29 60 67t67.5 78.5t63 81t45.5 74.5h192q16 -34 45.5 -74.5t63 -81t68 -78.5t59.5 -67v-27h-121q-51 34 -105 82.5t-106 103.5q-54 -55 -107 -103.5t-104 -82.5h-121z" />
+<glyph unicode="&#x2da;" horiz-adv-x="1182" d="M365 1456q0 51 16 90.5t45.5 67.5t70.5 42.5t91 14.5q48 0 90 -14.5t73 -42t48.5 -67t17.5 -89.5q0 -51 -17.5 -91.5t-48 -68.5t-72.5 -42.5t-91 -14.5q-50 0 -91 14.5t-70.5 42.5t-45.5 67.5t-16 90.5zM475 1456q0 -53 28.5 -83t84.5 -30q49 0 80.5 30t31.5 83t-31.5 83 t-80.5 30q-50 0 -81.5 -30t-31.5 -83z" />
+<glyph unicode="&#x2dc;" horiz-adv-x="1182" d="M258 1241q5 60 21.5 109t43 83.5t63.5 53t83 18.5q42 0 82.5 -17.5t78.5 -38.5t72.5 -38.5t63.5 -17.5q45 0 68 26t38 88h105q-5 -60 -21.5 -108.5t-43 -83t-63.5 -53.5t-83 -19q-40 0 -79.5 17.5t-77.5 39t-73 39t-67 17.5q-45 0 -69 -26.5t-38 -88.5h-104z" />
+<glyph unicode="&#x2000;" horiz-adv-x="953" />
+<glyph unicode="&#x2001;" horiz-adv-x="1907" />
+<glyph unicode="&#x2002;" horiz-adv-x="953" />
+<glyph unicode="&#x2003;" horiz-adv-x="1907" />
+<glyph unicode="&#x2004;" horiz-adv-x="635" />
+<glyph unicode="&#x2005;" horiz-adv-x="476" />
+<glyph unicode="&#x2006;" horiz-adv-x="317" />
+<glyph unicode="&#x2007;" horiz-adv-x="317" />
+<glyph unicode="&#x2008;" horiz-adv-x="238" />
+<glyph unicode="&#x2009;" horiz-adv-x="381" />
+<glyph unicode="&#x200a;" horiz-adv-x="105" />
+<glyph unicode="&#x2010;" horiz-adv-x="659" d="M82 465v168h496v-168h-496z" />
+<glyph unicode="&#x2011;" horiz-adv-x="659" d="M82 465v168h496v-168h-496z" />
+<glyph unicode="&#x2012;" horiz-adv-x="659" d="M82 465v168h496v-168h-496z" />
+<glyph unicode="&#x2013;" horiz-adv-x="1024" d="M82 465v168h860v-168h-860z" />
+<glyph unicode="&#x2014;" horiz-adv-x="2048" d="M82 465v168h1884v-168h-1884z" />
+<glyph unicode="&#x2018;" horiz-adv-x="358" d="M23 983q14 54 33.5 115t42.5 123t49 123.5t51 117.5h137q-15 -61 -29.5 -127t-27.5 -131.5t-24 -127.5t-19 -115h-199z" />
+<glyph unicode="&#x2019;" horiz-adv-x="358" d="M23 961q14 60 28.5 126t28 132t24.5 128t19 115h199l14 -22q-14 -55 -33.5 -115.5t-43 -123t-49 -123.5t-50.5 -117h-137z" />
+<glyph unicode="&#x201a;" horiz-adv-x="512" d="M63 -264q15 61 29.5 127t28 131.5t24.5 128t19 115.5h198l15 -23q-14 -54 -33.5 -115t-43 -123t-49 -123.5t-50.5 -117.5h-138z" />
+<glyph unicode="&#x201c;" horiz-adv-x="743" d="M23 983q14 54 33.5 115t42.5 123t49 123.5t51 117.5h137q-15 -61 -29.5 -127t-27.5 -131.5t-24 -127.5t-19 -115h-199zM408 983q14 54 33.5 115t42.5 123t49 123.5t51 117.5h137q-15 -61 -29.5 -127t-27.5 -131.5t-24 -127.5t-19 -115h-199z" />
+<glyph unicode="&#x201d;" horiz-adv-x="743" d="M23 961q14 60 28.5 126t28 132t24.5 128t19 115h199l14 -22q-14 -55 -33.5 -115.5t-43 -123t-49 -123.5t-50.5 -117h-137zM408 961q14 60 28.5 126t28 132t24.5 128t19 115h199l14 -22q-14 -55 -33.5 -115.5t-43 -123t-49 -123.5t-50.5 -117h-137z" />
+<glyph unicode="&#x201e;" horiz-adv-x="897" d="M63 -264q15 61 29.5 127t28 131.5t24.5 128t19 115.5h198l15 -23q-14 -54 -33.5 -115t-43 -123t-49 -123.5t-50.5 -117.5h-138zM449 -264q14 61 28.5 127t28 131.5t24.5 128t19 115.5h199l14 -23q-14 -54 -33.5 -115t-43 -123t-49 -123.5t-50.5 -117.5h-137z" />
+<glyph unicode="&#x2022;" horiz-adv-x="770" d="M150 748q0 71 18 121t49.5 81.5t74.5 45.5t93 14q49 0 92 -14t75 -45.5t50.5 -81.5t18.5 -121q0 -70 -18.5 -120t-50.5 -81.5t-75 -46.5t-92 -15q-50 0 -93 15t-74.5 46.5t-49.5 81.5t-18 120z" />
+<glyph unicode="&#x2026;" horiz-adv-x="1647" d="M147 111q0 38 10 64.5t27 43t40 24t50 7.5q26 0 49.5 -7.5t40.5 -24t27 -43t10 -64.5q0 -37 -10 -63.5t-27 -43.5t-40.5 -25t-49.5 -8q-27 0 -50 8t-40 25t-27 43.5t-10 63.5zM696 111q0 38 10 64.5t27 43t40 24t50 7.5q26 0 49.5 -7.5t40.5 -24t27 -43t10 -64.5 q0 -37 -10 -63.5t-27 -43.5t-40.5 -25t-49.5 -8q-27 0 -50 8t-40 25t-27 43.5t-10 63.5zM1245 111q0 38 9.5 64.5t27 43t40.5 24t50 7.5q26 0 49.5 -7.5t40.5 -24t27 -43t10 -64.5q0 -37 -10 -63.5t-27 -43.5t-40.5 -25t-49.5 -8q-54 0 -90.5 33t-36.5 107z" />
+<glyph unicode="&#x202f;" horiz-adv-x="381" />
+<glyph unicode="&#x2039;" horiz-adv-x="590" d="M82 526v27l309 414l117 -78l-238 -348l238 -348l-117 -78z" />
+<glyph unicode="&#x203a;" horiz-adv-x="590" d="M82 193l237 348l-237 348l117 78l309 -414v-27l-309 -411z" />
+<glyph unicode="&#x2044;" horiz-adv-x="266" d="M-352 0l811 1462h157l-811 -1462h-157z" />
+<glyph unicode="&#x205f;" horiz-adv-x="476" />
+<glyph unicode="&#x20ac;" d="M63 502v137h148q-2 23 -2 38v44q0 22 1 45t1 31h-148v137h160q18 125 62 226t111.5 173t159.5 111t206 39q97 0 177 -21.5t159 -70.5l-80 -146q-51 31 -110.5 52.5t-131.5 21.5q-69 0 -128 -26t-106 -75.5t-80.5 -121t-51.5 -162.5h432v-137h-447q0 -15 -1 -29 q-1 -12 -1 -25v-22v-39q0 -21 2 -43h385v-137h-366q34 -175 126.5 -267t241.5 -92q75 0 142.5 16t126.5 42v-162q-59 -28 -125.5 -43.5t-157.5 -15.5q-115 0 -206 36.5t-158.5 104t-111.5 164t-65 217.5h-164z" />
+<glyph unicode="&#x2122;" horiz-adv-x="1534" d="M37 1354v108h522v-108h-199v-613h-127v613h-196zM625 741v721h186l180 -551l191 551h178v-721h-127v428q0 9 0.5 24t0.5 33l2 34q0 18 1 30h-6l-195 -549h-100l-186 549h-7q1 -16 2 -33t1.5 -32t1 -27t0.5 -18v-439h-123z" />
+<glyph unicode="&#xe000;" horiz-adv-x="1100" d="M0 1100h1100v-1100h-1100v1100z" />
+<glyph unicode="&#xfb01;" horiz-adv-x="1204" d="M29 961v75l194 68v96q0 107 22.5 177.5t65 112.5t104.5 59.5t140 17.5q59 0 108.5 -11.5t88.5 -25.5l-47 -141q-31 11 -67.5 19.5t-76.5 8.5t-69 -9.5t-48 -33.5t-28.5 -65.5t-9.5 -106.5v-104h245v-137h-245v-961h-183v961h-194zM834 1395q0 60 30.5 87t75.5 27 q22 0 41.5 -6.5t34 -20.5t23 -35.5t8.5 -51.5q0 -58 -31.5 -86.5t-75.5 -28.5q-45 0 -75.5 28t-30.5 87zM848 0v1098h182v-1098h-182z" />
+<glyph unicode="&#xfb02;" horiz-adv-x="1204" d="M29 961v75l194 68v96q0 107 22.5 177.5t65 112.5t104.5 59.5t140 17.5q59 0 108.5 -11.5t88.5 -25.5l-47 -141q-31 11 -67.5 19.5t-76.5 8.5t-69 -9.5t-48 -33.5t-28.5 -65.5t-9.5 -106.5v-104h245v-137h-245v-961h-183v961h-194zM848 0v1556h182v-1556h-182z" />
+<glyph unicode="&#xfb03;" horiz-adv-x="1878" d="M29 961v75l194 68v96q0 107 22.5 177.5t65 112.5t104.5 59.5t140 17.5q59 0 108.5 -11.5t88.5 -25.5l-47 -141q-31 11 -67.5 19.5t-76.5 8.5t-69 -9.5t-48 -33.5t-28.5 -65.5t-9.5 -106.5v-104h245v-137h-245v-961h-183v961h-194zM703 961v75l194 68v96q0 107 22.5 177.5 t65 112.5t104.5 59.5t140 17.5q59 0 108.5 -11.5t88.5 -25.5l-47 -141q-31 11 -67.5 19.5t-76.5 8.5t-69 -9.5t-48 -33.5t-28.5 -65.5t-9.5 -106.5v-104h245v-137h-245v-961h-183v961h-194zM1508 1395q0 60 30.5 87t75.5 27q22 0 41.5 -6.5t34 -20.5t23 -35.5t8.5 -51.5 q0 -58 -31.5 -86.5t-75.5 -28.5q-45 0 -75.5 28t-30.5 87zM1522 0v1098h182v-1098h-182z" />
+<glyph unicode="&#xfb04;" horiz-adv-x="1878" d="M29 961v75l194 68v96q0 107 22.5 177.5t65 112.5t104.5 59.5t140 17.5q59 0 108.5 -11.5t88.5 -25.5l-47 -141q-31 11 -67.5 19.5t-76.5 8.5t-69 -9.5t-48 -33.5t-28.5 -65.5t-9.5 -106.5v-104h245v-137h-245v-961h-183v961h-194zM703 961v75l194 68v96q0 107 22.5 177.5 t65 112.5t104.5 59.5t140 17.5q59 0 108.5 -11.5t88.5 -25.5l-47 -141q-31 11 -67.5 19.5t-76.5 8.5t-69 -9.5t-48 -33.5t-28.5 -65.5t-9.5 -106.5v-104h245v-137h-245v-961h-183v961h-194zM1522 0v1556h182v-1556h-182z" />
+<glyph horiz-adv-x="678" d="M12 778v111l377 579h141v-563h125v-127h-125v-192h-143v192h-375zM158 905h229v195q0 42 1.5 91.5t4.5 98.5q-5 -11 -15 -29.5t-21 -39.5t-23 -41l-21 -35z" />
+</font>
+</defs></svg> 
\ No newline at end of file
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/fonts/OpenSans-Light-webfont.svg
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/fonts/OpenSans-Light-webfont.svg	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/fonts/OpenSans-Light-webfont.svg	(revision 47450)
@@ -0,0 +1,252 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" >
+<svg xmlns="http://www.w3.org/2000/svg">
+<metadata>
+This is a custom SVG webfont generated by Font Squirrel.
+Copyright   : Digitized data copyright  20102011 Google Corporation
+Foundry     : Ascender Corporation
+Foundry URL : httpwwwascendercorpcom
+</metadata>
+<defs>
+<font id="OpenSansLight" horiz-adv-x="1169" >
+<font-face units-per-em="2048" ascent="1638" descent="-410" />
+<missing-glyph horiz-adv-x="532" />
+<glyph unicode=" "  horiz-adv-x="532" />
+<glyph unicode="&#x09;" horiz-adv-x="532" />
+<glyph unicode="&#xa0;" horiz-adv-x="532" />
+<glyph unicode="!" horiz-adv-x="492" d="M164 78q0 98 80 98q82 0 82 -98t-82 -98q-80 0 -80 98zM186 1462h119l-29 -1085h-61z" />
+<glyph unicode="&#x22;" horiz-adv-x="723" d="M133 1462h127l-33 -528h-61zM463 1462h127l-33 -528h-61z" />
+<glyph unicode="#" horiz-adv-x="1323" d="M55 451v79h299l76 398h-297v80h311l86 454h91l-89 -454h365l88 454h86l-88 -454h285v-80h-301l-76 -398h303v-79h-320l-86 -451h-90l88 451h-360l-86 -451h-88l86 451h-283zM440 530h363l78 398h-363z" />
+<glyph unicode="$" d="M164 186v103q75 -36 179.5 -61t193.5 -25v508q-145 44 -215 88t-102 104t-32 146q0 124 94.5 208.5t254.5 104.5v192h81v-190q197 -9 351 -72l-33 -90q-141 62 -318 72v-486q213 -66 293 -144t80 -204q0 -133 -99 -217t-274 -106v-236h-81v232q-92 2 -200.5 22.5 t-172.5 50.5zM297 1049q0 -86 57 -141t183 -93v453q-119 -16 -179.5 -76t-60.5 -143zM618 209q122 13 192.5 75t70.5 160q0 85 -63 140.5t-200 95.5v-471z" />
+<glyph unicode="%" horiz-adv-x="1653" d="M113 1026q0 223 72 340t212 117q139 0 215 -120.5t76 -336.5q0 -226 -75 -343.5t-216 -117.5q-133 0 -208.5 120.5t-75.5 340.5zM211 1026q0 -186 45 -279.5t141 -93.5q193 0 193 373q0 184 -49.5 276.5t-143.5 92.5q-96 0 -141 -92.5t-45 -276.5zM373 0l811 1462h96 l-811 -1462h-96zM965 438q0 225 73.5 341t212.5 116q137 0 213 -120t76 -337q0 -226 -74 -343.5t-215 -117.5q-136 0 -211 121.5t-75 339.5zM1063 438q0 -185 45 -277.5t141 -92.5q193 0 193 370q0 369 -193 369q-96 0 -141 -91.5t-45 -277.5z" />
+<glyph unicode="&#x26;" horiz-adv-x="1460" d="M123 371q0 138 73.5 235t274.5 205l-75 82q-66 71 -98 139t-32 142q0 143 95.5 227t256.5 84q155 0 245.5 -81t90.5 -224q0 -105 -70 -192.5t-253 -194.5l452 -457q61 72 104 157t75 201h96q-63 -246 -209 -426l266 -268h-135l-193 197q-92 -90 -164 -131.5t-157.5 -63.5 t-194.5 -22q-209 0 -328.5 103t-119.5 288zM227 375q0 -143 93 -224t258 -81q128 0 234.5 43.5t209.5 146.5l-483 485q-136 -72 -196.5 -122.5t-88 -109.5t-27.5 -138zM373 1176q0 -79 40 -146t152 -174q159 85 221 159t62 169q0 94 -62 152.5t-168 58.5q-114 0 -179.5 -58 t-65.5 -161z" />
+<glyph unicode="'" horiz-adv-x="393" d="M133 1462h127l-33 -528h-61z" />
+<glyph unicode="(" horiz-adv-x="557" d="M82 561q0 265 77.5 496t223.5 405h113q-148 -182 -227 -412.5t-79 -486.5q0 -483 304 -887h-111q-147 170 -224 397t-77 488z" />
+<glyph unicode=")" horiz-adv-x="557" d="M61 1462h113q147 -175 224 -406.5t77 -494.5t-77.5 -490t-223.5 -395h-111q304 404 304 887q0 257 -79 487.5t-227 411.5z" />
+<glyph unicode="*" horiz-adv-x="1128" d="M104 1124l19 131l401 -104l-39 405h146l-37 -405l405 104l21 -131l-395 -39l247 -340l-124 -71l-191 379l-180 -379l-125 71l242 340z" />
+<glyph unicode="+" d="M111 682v82h432v434h82v-434h434v-82h-434v-432h-82v432h-432z" />
+<glyph unicode="," horiz-adv-x="440" d="M68 -264q77 275 110 502h117l12 -21q-75 -265 -174 -481h-65z" />
+<glyph unicode="-" horiz-adv-x="659" d="M92 512v82h475v-82h-475z" />
+<glyph unicode="." horiz-adv-x="487" d="M162 78q0 98 80 98q82 0 82 -98t-82 -98q-80 0 -80 98z" />
+<glyph unicode="/" horiz-adv-x="698" d="M25 0l544 1462h105l-545 -1462h-104z" />
+<glyph unicode="0" d="M115 735q0 382 115.5 566t351.5 184q231 0 352 -190.5t121 -559.5q0 -385 -117.5 -570t-355.5 -185q-229 0 -348 190.5t-119 564.5zM223 735q0 -340 89 -502.5t270 -162.5q189 0 275.5 168t86.5 497q0 324 -86.5 492t-275.5 168t-274 -168t-85 -492z" />
+<glyph unicode="1" d="M199 1165l397 297h86v-1462h-98v1065q0 145 12 301q-15 -15 -31 -29t-309 -243z" />
+<glyph unicode="2" d="M113 0v88l389 406q164 170 230 260t97 172t31 172q0 131 -86 213t-223 82q-183 0 -350 -133l-54 69q183 154 406 154q191 0 300.5 -102t109.5 -281q0 -145 -73.5 -280.5t-268.5 -334.5l-375 -385v-4h782v-96h-915z" />
+<glyph unicode="3" d="M94 63v99q84 -44 188.5 -69t196.5 -25q221 0 332 89.5t111 252.5q0 145 -113.5 223t-333.5 78h-158v96h160q182 0 288.5 86.5t106.5 234.5q0 122 -86.5 195.5t-226.5 73.5q-109 0 -199 -30.5t-202 -104.5l-49 67q85 71 205 112.5t243 41.5q202 0 312 -95.5t110 -269.5 q0 -136 -85.5 -229t-229.5 -119v-6q176 -22 268 -112t92 -242q0 -205 -139.5 -317.5t-401.5 -112.5q-223 0 -389 83z" />
+<glyph unicode="4" d="M43 373v67l725 1030h121v-1011h252v-86h-252v-373h-94v373h-752zM162 459h633v418q0 302 14 507h-8q-20 -37 -123 -188z" />
+<glyph unicode="5" d="M143 63v103q108 -55 192 -76.5t179 -21.5q192 0 308 101.5t116 274.5q0 163 -113 256t-307 93q-130 0 -272 -39l-60 39l58 669h704v-96h-610l-45 -516q156 29 244 29q234 0 368.5 -113t134.5 -311q0 -225 -140 -350t-386 -125q-109 0 -207 21.5t-164 61.5z" />
+<glyph unicode="6" d="M131 623q0 285 77.5 479.5t220 288.5t343.5 94q94 0 172 -23v-88q-73 27 -176 27q-247 0 -384.5 -178t-154.5 -518h13q76 98 174 148t207 50q205 0 320.5 -117t115.5 -323q0 -224 -121.5 -353.5t-327.5 -129.5q-222 0 -350.5 169.5t-128.5 473.5zM240 504 q0 -111 49.5 -213.5t134 -162.5t186.5 -60q164 0 255 103t91 294q0 168 -90 262t-245 94q-102 0 -189.5 -45t-139.5 -119.5t-52 -152.5z" />
+<glyph unicode="7" d="M109 1366v96h946v-73l-604 -1389h-117l602 1366h-827z" />
+<glyph unicode="8" d="M121 375q0 131 83 230t257 169q-161 76 -227 160.5t-66 202.5q0 105 53 184.5t148.5 122.5t212.5 43q186 0 299.5 -95t113.5 -257q0 -112 -70.5 -198t-228.5 -159q192 -79 270 -173t78 -228q0 -181 -126.5 -289t-339.5 -108q-221 0 -339 101t-118 294zM223 360 q0 -138 93.5 -214t261.5 -76q164 0 264 80.5t100 218.5q0 124 -78.5 201.5t-302.5 162.5q-184 -71 -261 -157t-77 -216zM268 1137q0 -70 31.5 -123.5t91 -97t199.5 -101.5q163 63 234 139t71 183q0 120 -84.5 190t-230.5 70q-141 0 -226.5 -69.5t-85.5 -190.5z" />
+<glyph unicode="9" d="M111 993q0 220 124.5 356t323.5 136q144 0 252 -75.5t166.5 -221.5t58.5 -346q0 -288 -75.5 -482t-220 -287t-349.5 -93q-104 0 -192 26v86q43 -14 103.5 -21.5t92.5 -7.5q247 0 387 178.5t156 520.5h-12q-73 -96 -174 -147.5t-211 -51.5q-203 0 -316.5 112t-113.5 318z M213 999q0 -174 87 -264t249 -90q101 0 188.5 45t139 119.5t51.5 151.5q0 117 -46.5 219t-130 159.5t-192.5 57.5q-158 0 -252 -106.5t-94 -291.5z" />
+<glyph unicode=":" horiz-adv-x="487" d="M162 78q0 98 80 98q82 0 82 -98t-82 -98q-80 0 -80 98zM162 971q0 98 80 98q82 0 82 -98q0 -53 -23.5 -76t-58.5 -23q-34 0 -57 23t-23 76z" />
+<glyph unicode=";" horiz-adv-x="487" d="M76 -264q29 97 62 245.5t48 256.5h117l12 -21q-75 -265 -174 -481h-65zM162 971q0 98 80 98q82 0 82 -98q0 -53 -23.5 -76t-58.5 -23q-34 0 -57 23t-23 76z" />
+<glyph unicode="&#x3c;" d="M111 682v61l948 474v-95l-823 -405l823 -355v-96z" />
+<glyph unicode="=" d="M111 477v82h948v-82h-948zM111 885v82h948v-82h-948z" />
+<glyph unicode="&#x3e;" d="M111 266v96l823 355l-823 405v95l948 -474v-61z" />
+<glyph unicode="?" horiz-adv-x="862" d="M57 1403q110 48 184.5 64t153.5 16q183 0 288 -98.5t105 -270.5q0 -68 -18 -119t-50.5 -94.5t-78.5 -84t-102 -87.5q-64 -54 -98.5 -98.5t-50 -93.5t-15.5 -146v-14h-82v37q0 123 37.5 201t138.5 167l91 79q72 61 103 121t31 138q0 127 -83.5 202t-219.5 75 q-79 0 -148 -17.5t-149 -56.5zM260 78q0 98 80 98q82 0 82 -98t-82 -98q-80 0 -80 98z" />
+<glyph unicode="@" horiz-adv-x="1815" d="M113 561q0 256 108.5 460.5t307 317.5t448.5 113q215 0 380.5 -89t255 -254.5t89.5 -383.5q0 -228 -90.5 -366t-245.5 -138q-89 0 -144.5 54t-64.5 147h-4q-43 -100 -124 -150.5t-189 -50.5q-148 0 -229 96.5t-81 270.5q0 202 120.5 330.5t314.5 128.5q138 0 286 -41 l-22 -464v-30q0 -104 35 -156.5t116 -52.5q103 0 168.5 116.5t65.5 303.5q0 194 -79 340t-225.5 224.5t-334.5 78.5q-230 0 -405.5 -99.5t-270 -281.5t-94.5 -418q0 -322 167 -497.5t474 -175.5q93 0 188.5 18t231.5 70v-99q-203 -80 -414 -80q-349 0 -544 200.5t-195 557.5 zM633 590q0 -143 55 -215t174 -72q255 0 273 346l16 291q-79 27 -193 27q-149 0 -237 -102.5t-88 -274.5z" />
+<glyph unicode="A" horiz-adv-x="1229" d="M0 0l588 1468h65l576 -1468h-115l-203 516h-594l-204 -516h-113zM354 608h523l-199 527q-25 62 -60 172q-27 -96 -59 -174z" />
+<glyph unicode="B" horiz-adv-x="1284" d="M207 0v1462h401q271 0 398 -92t127 -278q0 -127 -77.5 -211.5t-226.5 -108.5v-6q175 -26 257.5 -110.5t82.5 -235.5q0 -202 -134 -311t-380 -109h-448zM309 90h344q406 0 406 330q0 301 -428 301h-322v-631zM309 811h322q206 0 299.5 68.5t93.5 214.5t-105.5 212 t-314.5 66h-295v-561z" />
+<glyph unicode="C" horiz-adv-x="1272" d="M129 735q0 223 84.5 393t243 262.5t368.5 92.5q214 0 383 -80l-41 -92q-160 80 -336 80q-275 0 -433 -176t-158 -482q0 -313 149 -486t426 -173q184 0 338 47v-90q-145 -51 -362 -51q-308 0 -485 199t-177 556z" />
+<glyph unicode="D" horiz-adv-x="1446" d="M207 0v1462h395q350 0 532.5 -183t182.5 -534q0 -368 -193 -556.5t-567 -188.5h-350zM309 90h242q655 0 655 651q0 314 -159.5 472.5t-468.5 158.5h-269v-1282z" />
+<glyph unicode="E" horiz-adv-x="1130" d="M207 0v1462h799v-94h-697v-553h658v-94h-658v-627h697v-94h-799z" />
+<glyph unicode="F" horiz-adv-x="1028" d="M207 0v1462h801v-94h-699v-620h660v-95h-660v-653h-102z" />
+<glyph unicode="G" horiz-adv-x="1481" d="M129 729q0 223 91.5 395.5t262 266.5t391.5 94q239 0 429 -88l-41 -92q-190 88 -394 88q-289 0 -458.5 -178.5t-169.5 -481.5q0 -330 161 -496.5t473 -166.5q202 0 343 57v514h-435v96h539v-667q-212 -90 -477 -90q-346 0 -530.5 195.5t-184.5 553.5z" />
+<glyph unicode="H" horiz-adv-x="1473" d="M207 0v1462h102v-649h854v649h103v-1462h-103v719h-854v-719h-102z" />
+<glyph unicode="I" horiz-adv-x="516" d="M207 0v1462h102v-1462h-102z" />
+<glyph unicode="J" horiz-adv-x="506" d="M-184 -254q78 -20 149 -20q242 0 242 264v1472h102v-1462q0 -369 -342 -369q-92 0 -151 27v88z" />
+<glyph unicode="K" horiz-adv-x="1190" d="M207 0v1462h102v-760l162 162l573 598h130l-599 -618l615 -844h-125l-561 772l-195 -172v-600h-102z" />
+<glyph unicode="L" horiz-adv-x="1051" d="M207 0v1462h102v-1366h697v-96h-799z" />
+<glyph unicode="M" horiz-adv-x="1767" d="M207 0v1462h158l518 -1286h6l518 1286h154v-1462h-103v1108q0 116 12 240h-8l-547 -1348h-65l-545 1350h-8q8 -124 8 -254v-1096h-98z" />
+<glyph unicode="N" horiz-adv-x="1477" d="M207 0v1462h102l865 -1296h6q-9 180 -9 342v954h99v-1462h-103l-866 1298h-8q12 -232 12 -350v-948h-98z" />
+<glyph unicode="O" horiz-adv-x="1565" d="M129 735q0 349 175.5 549.5t479.5 200.5q306 0 479 -201.5t173 -550.5q0 -348 -174 -550.5t-480 -202.5q-305 0 -479 202.5t-174 552.5zM240 733q0 -314 140 -485.5t402 -171.5q264 0 403.5 170t139.5 487q0 316 -139.5 484.5t-401.5 168.5q-261 0 -402.5 -170 t-141.5 -483z" />
+<glyph unicode="P" horiz-adv-x="1198" d="M207 0v1462h358q522 0 522 -420q0 -212 -144 -325t-408 -113h-226v-604h-102zM309 692h201q247 0 357 81.5t110 264.5q0 169 -104 250.5t-322 81.5h-242v-678z" />
+<glyph unicode="Q" horiz-adv-x="1565" d="M129 735q0 349 175.5 549.5t479.5 200.5q306 0 479 -201.5t173 -550.5q0 -294 -126 -486.5t-349 -246.5l333 -348h-166l-282 330l-33 -2h-31q-305 0 -479 202.5t-174 552.5zM240 733q0 -314 140 -485.5t402 -171.5q264 0 403.5 170t139.5 487q0 316 -139.5 484.5 t-401.5 168.5q-261 0 -402.5 -170t-141.5 -483z" />
+<glyph unicode="R" horiz-adv-x="1217" d="M207 0v1462h348q272 0 402 -100.5t130 -302.5q0 -147 -77.5 -248t-235.5 -145l397 -666h-122l-377 637h-363v-637h-102zM309 725h279q185 0 287 82.5t102 243.5q0 167 -100 243t-326 76h-242v-645z" />
+<glyph unicode="S" horiz-adv-x="1116" d="M111 39v102q158 -67 403 -67q180 0 285.5 82.5t105.5 216.5q0 83 -35 137.5t-114 99.5t-232 97q-224 77 -309.5 166.5t-85.5 238.5q0 164 128.5 267.5t330.5 103.5q206 0 387 -78l-37 -88q-182 76 -348 76q-162 0 -258 -75t-96 -204q0 -81 29.5 -133t96.5 -93.5 t230 -99.5q171 -59 257 -114.5t125.5 -126t39.5 -170.5q0 -183 -134.5 -290t-357.5 -107q-268 0 -411 59z" />
+<glyph unicode="T" horiz-adv-x="1073" d="M10 1366v96h1053v-96h-475v-1366h-103v1366h-475z" />
+<glyph unicode="U" horiz-adv-x="1473" d="M190 520v942h103v-946q0 -211 117 -328.5t331 -117.5q209 0 324 115.5t115 320.5v956h102v-946q0 -252 -146 -394t-407 -142q-254 0 -396.5 142.5t-142.5 397.5z" />
+<glyph unicode="V" horiz-adv-x="1182" d="M0 1462h109l368 -995q84 -225 113 -338q20 75 79 233l402 1100h111l-547 -1462h-90z" />
+<glyph unicode="W" horiz-adv-x="1827" d="M51 1462h107l256 -942q15 -57 28 -105.5t23.5 -91t19 -82t15.5 -79.5q24 136 102 413l250 887h113l293 -1018q51 -176 73 -284q13 72 33.5 153t308.5 1149h103l-404 -1462h-84l-321 1128q-40 139 -60 228q-16 -87 -45.5 -200t-322.5 -1156h-86z" />
+<glyph unicode="X" horiz-adv-x="1102" d="M0 0l492 762l-447 700h115l395 -626l401 626h109l-453 -698l490 -764h-117l-432 682l-440 -682h-113z" />
+<glyph unicode="Y" horiz-adv-x="1081" d="M0 1462h117l426 -800l428 800h110l-487 -897v-565h-105v557z" />
+<glyph unicode="Z" horiz-adv-x="1180" d="M82 0v76l856 1290h-817v96h954v-76l-858 -1290h881v-96h-1016z" />
+<glyph unicode="[" horiz-adv-x="653" d="M174 -324v1786h428v-94h-330v-1597h330v-95h-428z" />
+<glyph unicode="\" horiz-adv-x="698" d="M25 1462h102l547 -1462h-103z" />
+<glyph unicode="]" horiz-adv-x="653" d="M51 -229h330v1597h-330v94h428v-1786h-428v95z" />
+<glyph unicode="^" d="M88 561l465 912h68l460 -912h-100l-395 791l-398 -791h-100z" />
+<glyph unicode="_" horiz-adv-x="842" d="M-4 -184h850v-82h-850v82z" />
+<glyph unicode="`" horiz-adv-x="1182" d="M393 1552v17h142q26 -48 98.5 -142t142.5 -170v-16h-69q-96 79 -188.5 171.5t-125.5 139.5z" />
+<glyph unicode="a" horiz-adv-x="1085" d="M98 289q0 159 132.5 247t383.5 93l207 6v72q0 155 -63 234t-203 79q-151 0 -313 -84l-37 86q179 84 354 84q179 0 267.5 -93t88.5 -290v-723h-73l-25 172h-8q-82 -105 -168.5 -148.5t-204.5 -43.5q-160 0 -249 82t-89 227zM203 285q0 -102 62.5 -158.5t176.5 -56.5 q174 0 274.5 99.5t100.5 276.5v107l-190 -8q-229 -11 -326.5 -71.5t-97.5 -188.5z" />
+<glyph unicode="b" horiz-adv-x="1219" d="M182 0v1556h99v-391q0 -88 -4 -162l-3 -85h7q62 98 149.5 144t210.5 46q228 0 343.5 -143.5t115.5 -419.5q0 -271 -121.5 -418t-341.5 -147q-116 0 -209 48t-147 136h-9l-28 -164h-62zM281 528q0 -246 86.5 -353t269.5 -107q178 0 268 124.5t90 354.5q0 471 -356 471 q-192 0 -275 -110t-83 -363v-17z" />
+<glyph unicode="c" horiz-adv-x="973" d="M119 537q0 270 137 420.5t375 150.5q141 0 270 -49l-27 -88q-141 47 -245 47q-200 0 -303 -123.5t-103 -355.5q0 -220 103 -344.5t288 -124.5q148 0 275 53v-92q-104 -51 -273 -51q-233 0 -365 147t-132 410z" />
+<glyph unicode="d" horiz-adv-x="1219" d="M119 528q0 282 118 431t343 149q118 0 204 -43t154 -147h6q-6 126 -6 247v391h98v-1556h-65l-25 166h-8q-124 -186 -356 -186q-225 0 -344 140t-119 408zM223 530q0 -462 359 -462q184 0 270 107t86 353v17q0 252 -84.5 362.5t-273.5 110.5q-178 0 -267.5 -125 t-89.5 -363z" />
+<glyph unicode="e" horiz-adv-x="1124" d="M119 535q0 260 128 416.5t345 156.5q192 0 303 -134t111 -364v-80h-783q2 -224 104.5 -342t293.5 -118q93 0 163.5 13t178.5 56v-90q-92 -40 -170 -54.5t-172 -14.5q-237 0 -369.5 146t-132.5 409zM229 618h672q0 189 -82 295.5t-227 106.5q-157 0 -252 -103.5 t-111 -298.5z" />
+<glyph unicode="f" horiz-adv-x="614" d="M29 1001v58l202 37v84q0 200 73.5 293.5t240.5 93.5q90 0 180 -27l-23 -86q-80 25 -159 25q-116 0 -164.5 -68.5t-48.5 -222.5v-101h256v-86h-256v-1001h-99v1001h-202z" />
+<glyph unicode="g" horiz-adv-x="1071" d="M45 -193q0 112 69.5 186t188.5 101q-49 21 -78.5 59.5t-29.5 88.5q0 109 139 192q-95 39 -148 122.5t-53 191.5q0 163 103.5 261.5t279.5 98.5q107 0 166 -21h348v-69l-225 -14q90 -112 90 -246q0 -157 -104.5 -254.5t-280.5 -97.5q-74 0 -104 6q-59 -31 -90 -73t-31 -89 q0 -52 39.5 -76t132.5 -24h190q177 0 271 -71.5t94 -211.5q0 -172 -139.5 -265.5t-397.5 -93.5q-205 0 -317.5 79t-112.5 220zM150 -184q0 -224 333 -224q428 0 428 273q0 98 -67 142t-217 44h-178q-299 0 -299 -235zM233 748q0 -126 76.5 -195.5t204.5 -69.5 q136 0 208.5 69t72.5 200q0 139 -74.5 208.5t-208.5 69.5q-130 0 -204.5 -74.5t-74.5 -207.5z" />
+<glyph unicode="h" horiz-adv-x="1208" d="M182 0v1556h99v-495l-5 -139h7q61 98 154 142t231 44q370 0 370 -397v-711h-98v705q0 164 -69 238.5t-214 74.5q-195 0 -285.5 -98.5t-90.5 -319.5v-600h-99z" />
+<glyph unicode="i" horiz-adv-x="463" d="M168 1389q0 96 63 96q31 0 48.5 -25t17.5 -71q0 -45 -17.5 -71t-48.5 -26q-63 0 -63 97zM182 0v1087h99v-1087h-99z" />
+<glyph unicode="j" horiz-adv-x="463" d="M-98 -381q69 -20 129 -20q151 0 151 176v1312h99v-1298q0 -135 -63.5 -208t-180.5 -73q-80 0 -135 25v86zM168 1389q0 96 63 96q31 0 48.5 -25t17.5 -71q0 -45 -17.5 -71t-48.5 -26q-63 0 -63 97z" />
+<glyph unicode="k" horiz-adv-x="991" d="M182 0v1556h99v-780l-7 -299h5l555 610h120l-428 -464l465 -623h-119l-413 549l-178 -162v-387h-99z" />
+<glyph unicode="l" horiz-adv-x="463" d="M182 0v1556h99v-1556h-99z" />
+<glyph unicode="m" horiz-adv-x="1808" d="M182 0v1087h82l21 -149h6q45 81 128 125.5t183 44.5q257 0 330 -193h4q53 93 142.5 143t203.5 50q178 0 267 -95t89 -302v-711h-98v713q0 159 -62 232t-190 73q-167 0 -247 -92t-80 -289v-637h-101v743q0 275 -252 275q-171 0 -249 -99.5t-78 -318.5v-600h-99z" />
+<glyph unicode="n" horiz-adv-x="1208" d="M182 0v1087h84l19 -149h6q106 170 377 170q370 0 370 -397v-711h-98v705q0 164 -69 238.5t-214 74.5q-195 0 -285.5 -98.5t-90.5 -319.5v-600h-99z" />
+<glyph unicode="o" horiz-adv-x="1200" d="M119 545q0 266 129 414.5t354 148.5q224 0 351.5 -150.5t127.5 -412.5q0 -266 -129 -415.5t-356 -149.5q-143 0 -252 69t-167 198t-58 298zM223 545q0 -224 98.5 -349.5t278.5 -125.5t278.5 125.5t98.5 349.5q0 225 -99.5 349t-279.5 124t-277.5 -123.5t-97.5 -349.5z " />
+<glyph unicode="p" horiz-adv-x="1219" d="M182 -492v1579h84l19 -155h6q112 176 358 176q220 0 335.5 -144.5t115.5 -420.5q0 -268 -121.5 -415.5t-331.5 -147.5q-251 0 -366 188h-7l3 -84q4 -74 4 -162v-414h-99zM281 541q0 -255 85.5 -364t278.5 -109q167 0 258.5 124t91.5 347q0 479 -346 479 q-190 0 -279 -104.5t-89 -340.5v-32z" />
+<glyph unicode="q" horiz-adv-x="1219" d="M119 532q0 275 118 425.5t338 150.5q236 0 353 -174h6l18 153h84v-1579h-98v414q0 122 6 248h-6q-118 -190 -369 -190q-214 0 -332 142t-118 410zM223 530q0 -229 89.5 -345.5t258.5 -116.5q198 0 282.5 109t84.5 366v12q0 245 -85 354t-271 109q-176 0 -267.5 -124 t-91.5 -364z" />
+<glyph unicode="r" horiz-adv-x="797" d="M182 0v1087h84l10 -196h7q67 120 143 168.5t184 48.5q69 0 148 -14l-19 -95q-68 17 -141 17q-139 0 -228 -118t-89 -298v-600h-99z" />
+<glyph unicode="s" horiz-adv-x="954" d="M84 47v107q164 -82 346 -82q161 0 244.5 53.5t83.5 142.5q0 82 -66.5 138t-218.5 110q-163 59 -229 101.5t-99.5 96t-33.5 130.5q0 122 102.5 193t286.5 71q176 0 334 -66l-37 -90q-160 66 -297 66q-133 0 -211 -44t-78 -122q0 -85 60.5 -136t236.5 -114 q147 -53 214 -95.5t100.5 -96.5t33.5 -127q0 -146 -111 -224.5t-315 -78.5q-218 0 -346 67z" />
+<glyph unicode="t" horiz-adv-x="686" d="M25 1001v58l161 45l50 246h51v-263h319v-86h-319v-688q0 -125 44 -185t138 -60t164 16v-80q-72 -24 -166 -24q-144 0 -212.5 77t-68.5 242v702h-161z" />
+<glyph unicode="u" horiz-adv-x="1208" d="M170 377v710h98v-704q0 -164 69 -238.5t214 -74.5q194 0 285.5 98t91.5 319v600h98v-1087h-84l-18 150h-6q-106 -170 -377 -170q-371 0 -371 397z" />
+<glyph unicode="v" horiz-adv-x="940" d="M0 1087h102l281 -739q56 -142 84 -248h6q41 136 84 250l281 737h102l-420 -1087h-100z" />
+<glyph unicode="w" horiz-adv-x="1481" d="M31 1087h106l174 -630q61 -234 80 -344h6q59 234 86 311l224 663h90l213 -661q72 -235 88 -311h6q8 65 80 348l166 624h100l-295 -1087h-104l-238 727q-23 74 -59 217h-6l-21 -74l-45 -145l-242 -725h-98z" />
+<glyph unicode="x" horiz-adv-x="1020" d="M55 0l394 559l-379 528h114l324 -458l321 458h109l-373 -528l400 -559h-115l-342 485l-344 -485h-109z" />
+<glyph unicode="y" horiz-adv-x="940" d="M0 1087h102l230 -610q105 -281 133 -379h6q42 129 137 385l230 604h102l-487 -1263q-59 -154 -99 -208t-93.5 -81t-129.5 -27q-57 0 -127 21v86q58 -16 125 -16q51 0 90 24t70.5 74.5t73 160t53.5 142.5z" />
+<glyph unicode="z" horiz-adv-x="944" d="M82 0v63l645 936h-598v88h727v-63l-649 -936h651v-88h-776z" />
+<glyph unicode="{" horiz-adv-x="723" d="M61 528v80q122 2 176 51t54 148v350q0 299 360 305v-90q-138 -5 -200 -58t-62 -157v-305q0 -130 -44 -194t-142 -85v-8q97 -20 141.5 -83.5t44.5 -186.5v-322q0 -102 59.5 -152.5t202.5 -53.5v-91q-195 0 -277.5 75t-82.5 231v337q0 205 -230 209z" />
+<glyph unicode="|" horiz-adv-x="1108" d="M508 -506v2067h92v-2067h-92z" />
+<glyph unicode="}" horiz-adv-x="723" d="M72 -233q141 2 201.5 52.5t60.5 153.5v322q0 123 44.5 186.5t141.5 83.5v8q-97 20 -141.5 84t-44.5 195v305q0 103 -61.5 156.5t-200.5 58.5v90q174 0 267 -77.5t93 -227.5v-350q0 -100 54.5 -148.5t175.5 -50.5v-80q-230 -4 -230 -209v-337q0 -155 -82.5 -230.5 t-277.5 -75.5v91z" />
+<glyph unicode="~" d="M111 625v94q108 110 233 110q61 0 115 -13.5t155 -57.5q126 -58 220 -58q56 0 109.5 30.5t115.5 94.5v-96q-48 -49 -104.5 -81t-129.5 -32q-116 0 -270 72q-124 57 -221 57q-49 0 -108 -30.5t-115 -89.5z" />
+<glyph unicode="&#xa1;" horiz-adv-x="492" d="M166 1010q0 98 80 98q82 0 82 -98q0 -53 -23.5 -76t-58.5 -23q-34 0 -57 23t-23 76zM186 -375l29 1086h61l29 -1086h-119z" />
+<glyph unicode="&#xa2;" d="M211 745q0 232 102.5 381.5t288.5 182.5v174h82v-166h14q131 0 275 -55l-31 -84q-134 51 -237 51q-187 0 -288.5 -122.5t-101.5 -358.5q0 -225 100.5 -349.5t280.5 -124.5q131 0 267 58v-92q-110 -56 -267 -56h-12v-204h-82v210q-186 30 -288.5 175t-102.5 380z" />
+<glyph unicode="&#xa3;" d="M78 0v84q110 21 171.5 110t61.5 224v258h-211v82h211v297q0 204 98 315t281 111q175 0 330 -68l-35 -86q-157 66 -295 66q-141 0 -209.5 -81t-68.5 -253v-301h411v-82h-411v-256q0 -116 -35 -196t-113 -128h809v-96h-995z" />
+<glyph unicode="&#xa4;" d="M127 326l139 141q-90 106 -90 256q0 147 90 258l-139 141l59 60l138 -142q103 93 260 93q155 0 260 -93l137 142l59 -60l-139 -141q90 -111 90 -258q0 -151 -90 -256l139 -141l-59 -60l-137 142q-110 -93 -260 -93q-153 0 -260 93l-138 -142zM260 723q0 -136 94.5 -232 t229.5 -96q134 0 228.5 95.5t94.5 232.5q0 136 -95 233t-228 97q-134 0 -229 -97t-95 -233z" />
+<glyph unicode="&#xa5;" d="M43 1462h117l426 -796l428 796h110l-432 -788h283v-82h-338v-205h338v-82h-338v-305h-105v305h-337v82h337v205h-337v82h278z" />
+<glyph unicode="&#xa6;" horiz-adv-x="1108" d="M508 258h92v-764h-92v764zM508 797v764h92v-764h-92z" />
+<glyph unicode="&#xa7;" horiz-adv-x="1057" d="M129 63v95q182 -78 332 -78q162 0 247 49.5t85 140.5q0 55 -25 87.5t-88.5 65.5t-190.5 79q-200 73 -272 141.5t-72 169.5q0 83 50.5 152.5t138.5 107.5q-86 47 -125 102t-39 136q0 117 101.5 183.5t275.5 66.5q175 0 336 -64l-35 -80q-91 34 -158.5 47t-144.5 13 q-134 0 -205.5 -44.5t-71.5 -119.5q0 -54 25.5 -88.5t85.5 -65.5t188 -74q192 -64 264 -132.5t72 -170.5q0 -173 -186 -274q86 -42 129 -96t43 -136q0 -135 -113 -207.5t-311 -72.5q-92 0 -171 15t-165 52zM246 825q0 -65 31.5 -104t105.5 -75t250 -99q82 41 126 98t44 121 q0 62 -32 102t-108.5 77t-236.5 87q-81 -23 -130.5 -79t-49.5 -128z" />
+<glyph unicode="&#xa8;" horiz-adv-x="1182" d="M336 1389q0 46 15.5 66t47.5 20q64 0 64 -86t-64 -86q-63 0 -63 86zM717 1389q0 46 15.5 66t47.5 20q64 0 64 -86t-64 -86q-63 0 -63 86z" />
+<glyph unicode="&#xa9;" horiz-adv-x="1704" d="M100 731q0 200 100 375t275 276t377 101q200 0 375 -100t276 -275t101 -377q0 -197 -97 -370t-272 -277t-383 -104q-207 0 -382 103.5t-272.5 276.5t-97.5 371zM193 731q0 -178 88.5 -329.5t240.5 -240.5t330 -89t329.5 88.5t240.5 240.5t89 330q0 174 -85.5 325 t-239 243t-334.5 92q-176 0 -328.5 -88.5t-241.5 -242.5t-89 -329zM489 725q0 208 111 332.5t297 124.5q119 0 227 -52l-37 -83q-98 45 -190 45q-142 0 -222.5 -94.5t-80.5 -264.5q0 -186 74.5 -275t220.5 -89q84 0 198 43v-88q-102 -45 -208 -45q-187 0 -288.5 115 t-101.5 331z" />
+<glyph unicode="&#xaa;" horiz-adv-x="686" d="M78 989q0 100 80 151.5t241 59.5l95 4v43q0 77 -38 114.5t-106 37.5q-87 0 -196 -49l-33 73q117 56 231 56q228 0 228 -215v-451h-68l-25 72q-84 -84 -202 -84q-95 0 -151 49t-56 139zM168 993q0 -54 35 -85t96 -31q90 0 142.5 50t52.5 142v64l-88 -5q-116 -6 -177 -36.5 t-61 -98.5z" />
+<glyph unicode="&#xab;" horiz-adv-x="885" d="M82 516v27l309 393l62 -43l-254 -363l254 -362l-62 -43zM442 516v27l310 393l61 -43l-254 -363l254 -362l-61 -43z" />
+<glyph unicode="&#xac;" d="M111 682v82h927v-494h-82v412h-845z" />
+<glyph unicode="&#xad;" horiz-adv-x="659" d="M92 512v82h475v-82h-475z" />
+<glyph unicode="&#xae;" horiz-adv-x="1704" d="M100 731q0 200 100 375t275 276t377 101q200 0 375 -100t276 -275t101 -377q0 -197 -97 -370t-272 -277t-383 -104q-207 0 -382 103.5t-272.5 276.5t-97.5 371zM193 731q0 -178 88.5 -329.5t240.5 -240.5t330 -89t329.5 88.5t240.5 240.5t89 330q0 174 -85.5 325 t-239 243t-334.5 92q-176 0 -328.5 -88.5t-241.5 -242.5t-89 -329zM608 291v880h211q143 0 222 -62t79 -191q0 -79 -38.5 -139.5t-110.5 -94.5l237 -393h-121l-210 360h-168v-360h-101zM709 731h112q91 0 143 46.5t52 135.5q0 172 -197 172h-110v-354z" />
+<glyph unicode="&#xaf;" horiz-adv-x="1024" d="M-6 1556v82h1036v-82h-1036z" />
+<glyph unicode="&#xb0;" horiz-adv-x="877" d="M139 1184q0 132 86.5 215.5t212.5 83.5t212.5 -83.5t86.5 -215.5t-86.5 -215.5t-212.5 -83.5q-130 0 -214.5 83t-84.5 216zM229 1184q0 -91 61 -154t148 -63q86 0 147.5 62t61.5 155q0 92 -60 154.5t-149 62.5q-90 0 -149.5 -64t-59.5 -153z" />
+<glyph unicode="&#xb1;" d="M111 1v82h948v-82h-948zM111 682v82h432v434h82v-434h434v-82h-434v-432h-82v432h-432z" />
+<glyph unicode="&#xb2;" horiz-adv-x="688" d="M53 586v78l242 237q125 121 172 193t47 149q0 71 -46.5 112.5t-123.5 41.5q-108 0 -217 -82l-49 65q119 103 270 103q124 0 194 -63.5t70 -174.5q0 -47 -13 -89t-40 -85.5t-68.5 -90t-308.5 -306.5h447v-88h-576z" />
+<glyph unicode="&#xb3;" horiz-adv-x="688" d="M41 629v88q136 -62 266 -62q115 0 174.5 49t59.5 136q0 83 -59.5 122t-178.5 39h-131v84h135q105 0 158 43.5t53 120.5q0 67 -47 107.5t-127 40.5q-128 0 -246 -78l-47 70q130 94 293 94q127 0 199.5 -60t72.5 -163q0 -78 -44 -131.5t-117 -75.5q186 -45 186 -211 q0 -130 -88.5 -201.5t-247.5 -71.5q-144 0 -264 60z" />
+<glyph unicode="&#xb4;" horiz-adv-x="1182" d="M393 1241v16q73 79 144.5 171.5t97.5 140.5h141v-17q-36 -52 -122.5 -138t-190.5 -173h-70z" />
+<glyph unicode="&#xb5;" horiz-adv-x="1221" d="M182 -492v1579h99v-704q0 -164 69 -238.5t213 -74.5q194 0 285.5 98t91.5 319v600h98v-1087h-84l-18 150h-6q-50 -77 -150 -123.5t-217 -46.5q-99 0 -167.5 27.5t-119.5 84.5q5 -92 5 -170v-414h-99z" />
+<glyph unicode="&#xb6;" horiz-adv-x="1341" d="M113 1042q0 260 109 387t341 127h543v-1816h-100v1722h-228v-1722h-100v819q-64 -18 -146 -18q-216 0 -317.5 125t-101.5 376z" />
+<glyph unicode="&#xb7;" horiz-adv-x="487" d="M162 721q0 98 80 98q82 0 82 -98t-82 -98q-80 0 -80 98z" />
+<glyph unicode="&#xb8;" horiz-adv-x="420" d="M43 -393q30 -10 92 -10q78 0 119 28t41 80q0 94 -193 121l93 174h96l-66 -117q168 -37 168 -174q0 -100 -67.5 -150.5t-188.5 -50.5q-68 0 -94 11v88z" />
+<glyph unicode="&#xb9;" horiz-adv-x="688" d="M76 1298l274 164h92v-876h-98v547q0 99 12 233q-26 -23 -233 -145z" />
+<glyph unicode="&#xba;" horiz-adv-x="739" d="M70 1141q0 162 78 250t223 88q142 0 220.5 -87t78.5 -251q0 -161 -80 -250.5t-223 -89.5t-220 86t-77 254zM160 1141q0 -264 209 -264t209 264q0 131 -50 194.5t-159 63.5t-159 -63.5t-50 -194.5z" />
+<glyph unicode="&#xbb;" horiz-adv-x="885" d="M72 168l254 362l-254 363l61 43l309 -391v-27l-309 -393zM432 168l254 362l-254 363l62 43l309 -391v-27l-309 -393z" />
+<glyph unicode="&#xbc;" horiz-adv-x="1516" d="M59 1298l274 164h92v-876h-98v547q0 99 12 233q-26 -23 -233 -145zM243 0l811 1462h94l-811 -1462h-94zM760 242v60l407 581h96v-563h129v-78h-129v-241h-90v241h-413zM864 320h309v221q0 132 8 232q-6 -12 -21.5 -35.5t-295.5 -417.5z" />
+<glyph unicode="&#xbd;" horiz-adv-x="1516" d="M11 1298l274 164h92v-876h-98v547q0 99 12 233q-26 -23 -233 -145zM168 0l811 1462h94l-811 -1462h-94zM827 1v78l242 237q125 121 172 193t47 149q0 71 -46.5 112.5t-123.5 41.5q-108 0 -217 -82l-49 65q119 103 270 103q124 0 194 -63.5t70 -174.5q0 -47 -13 -89 t-40 -85.5t-68.5 -90t-308.5 -306.5h447v-88h-576z" />
+<glyph unicode="&#xbe;" horiz-adv-x="1516" d="M41 629v88q136 -62 266 -62q115 0 174.5 49t59.5 136q0 83 -59.5 122t-178.5 39h-131v84h135q105 0 158 43.5t53 120.5q0 67 -47 107.5t-127 40.5q-128 0 -246 -78l-47 70q130 94 293 94q127 0 199.5 -60t72.5 -163q0 -78 -44 -131.5t-117 -75.5q186 -45 186 -211 q0 -130 -88.5 -201.5t-247.5 -71.5q-144 0 -264 60zM395 0l811 1462h94l-811 -1462h-94zM863 242v60l407 581h96v-563h129v-78h-129v-241h-90v241h-413zM967 320h309v221q0 132 8 232q-6 -12 -21.5 -35.5t-295.5 -417.5z" />
+<glyph unicode="&#xbf;" horiz-adv-x="862" d="M74 -27q0 70 20 124t58.5 102t171.5 159q64 53 98.5 98.5t49.5 94t15 145.5v15h82v-37q0 -125 -39.5 -204.5t-136.5 -164.5l-90 -79q-73 -61 -104 -120.5t-31 -138.5q0 -124 82 -200t221 -76q125 0 233 46l64 27l37 -79q-111 -48 -185.5 -64t-152.5 -16q-184 0 -288.5 99 t-104.5 269zM440 1010q0 98 80 98q82 0 82 -98q0 -53 -23.5 -76t-58.5 -23q-34 0 -57 23t-23 76z" />
+<glyph unicode="&#xc0;" horiz-adv-x="1229" d="M0 0l588 1468h65l576 -1468h-115l-203 516h-594l-204 -516h-113zM354 608h523l-199 527q-25 62 -60 172q-27 -96 -59 -174zM337 1890v17h142q26 -48 98.5 -142t142.5 -170v-16h-69q-96 79 -188.5 171.5t-125.5 139.5z" />
+<glyph unicode="&#xc1;" horiz-adv-x="1229" d="M0 0l588 1468h65l576 -1468h-115l-203 516h-594l-204 -516h-113zM354 608h523l-199 527q-25 62 -60 172q-27 -96 -59 -174zM504 1579v16q73 79 144.5 171.5t97.5 140.5h141v-17q-36 -52 -122.5 -138t-190.5 -173h-70z" />
+<glyph unicode="&#xc2;" horiz-adv-x="1229" d="M0 0l588 1468h65l576 -1468h-115l-203 516h-594l-204 -516h-113zM354 608h523l-199 527q-25 62 -60 172q-27 -96 -59 -174zM328 1579v16q62 67 131.5 156t110.5 156h98q68 -120 242 -312v-16h-70q-122 101 -221 207q-108 -114 -221 -207h-70z" />
+<glyph unicode="&#xc3;" horiz-adv-x="1229" d="M0 0l588 1468h65l576 -1468h-115l-203 516h-594l-204 -516h-113zM354 608h523l-199 527q-25 62 -60 172q-27 -96 -59 -174zM287 1581q10 111 63 174.5t137 63.5q48 0 88 -25t82 -59q34 -28 66 -50t61 -22q46 0 77 36.5t48 119.5h76q-16 -116 -69 -177t-132 -61 q-36 0 -75 18.5t-101 71.5q-32 26 -62.5 46t-62.5 20q-45 0 -75 -34.5t-48 -121.5h-73z" />
+<glyph unicode="&#xc4;" horiz-adv-x="1229" d="M0 0l588 1468h65l576 -1468h-115l-203 516h-594l-204 -516h-113zM354 608h523l-199 527q-25 62 -60 172q-27 -96 -59 -174zM367 1727q0 46 15.5 66t47.5 20q64 0 64 -86t-64 -86q-63 0 -63 86zM748 1727q0 46 15.5 66t47.5 20q64 0 64 -86t-64 -86q-63 0 -63 86z" />
+<glyph unicode="&#xc5;" horiz-adv-x="1229" d="M0 0l588 1468h65l576 -1468h-115l-203 516h-594l-204 -516h-113zM354 608h523l-199 527q-25 62 -60 172q-27 -96 -59 -174zM402 1610q0 94 60 152.5t157 58.5t157 -59t60 -152q0 -97 -60 -155t-157 -58t-157 58t-60 155zM482 1610q0 -66 37.5 -103.5t99.5 -37.5 t99.5 37.5t37.5 103.5q0 64 -39 101.5t-98 37.5q-62 0 -99.5 -38t-37.5 -101z" />
+<glyph unicode="&#xc6;" horiz-adv-x="1653" d="M-2 0l653 1462h877v-94h-615v-553h576v-94h-576v-627h615v-94h-717v516h-475l-227 -516h-111zM377 608h434v760h-100z" />
+<glyph unicode="&#xc7;" horiz-adv-x="1272" d="M129 735q0 223 84.5 393t243 262.5t368.5 92.5q214 0 383 -80l-41 -92q-160 80 -336 80q-275 0 -433 -176t-158 -482q0 -313 149 -486t426 -173q184 0 338 47v-90q-145 -51 -362 -51q-308 0 -485 199t-177 556zM561 -393q30 -10 92 -10q78 0 119 28t41 80q0 94 -193 121 l93 174h96l-66 -117q168 -37 168 -174q0 -100 -67.5 -150.5t-188.5 -50.5q-68 0 -94 11v88z" />
+<glyph unicode="&#xc8;" horiz-adv-x="1130" d="M207 0v1462h799v-94h-697v-553h658v-94h-658v-627h697v-94h-799zM314 1890v17h142q26 -48 98.5 -142t142.5 -170v-16h-69q-96 79 -188.5 171.5t-125.5 139.5z" />
+<glyph unicode="&#xc9;" horiz-adv-x="1130" d="M207 0v1462h799v-94h-697v-553h658v-94h-658v-627h697v-94h-799zM463 1579v16q73 79 144.5 171.5t97.5 140.5h141v-17q-36 -52 -122.5 -138t-190.5 -173h-70z" />
+<glyph unicode="&#xca;" horiz-adv-x="1130" d="M207 0v1462h799v-94h-697v-553h658v-94h-658v-627h697v-94h-799zM315 1579v16q62 67 131.5 156t110.5 156h98q68 -120 242 -312v-16h-70q-122 101 -221 207q-108 -114 -221 -207h-70z" />
+<glyph unicode="&#xcb;" horiz-adv-x="1130" d="M207 0v1462h799v-94h-697v-553h658v-94h-658v-627h697v-94h-799zM354 1727q0 46 15.5 66t47.5 20q64 0 64 -86t-64 -86q-63 0 -63 86zM735 1727q0 46 15.5 66t47.5 20q64 0 64 -86t-64 -86q-63 0 -63 86z" />
+<glyph unicode="&#xcc;" horiz-adv-x="516" d="M207 0v1462h102v-1462h-102zM-63 1890v17h142q26 -48 98.5 -142t142.5 -170v-16h-69q-96 79 -188.5 171.5t-125.5 139.5z" />
+<glyph unicode="&#xcd;" horiz-adv-x="516" d="M207 0v1462h102v-1462h-102zM191 1579v16q73 79 144.5 171.5t97.5 140.5h141v-17q-36 -52 -122.5 -138t-190.5 -173h-70z" />
+<glyph unicode="&#xce;" horiz-adv-x="516" d="M207 0v1462h102v-1462h-102zM-32 1579v16q62 67 131.5 156t110.5 156h98q68 -120 242 -312v-16h-70q-122 101 -221 207q-108 -114 -221 -207h-70z" />
+<glyph unicode="&#xcf;" horiz-adv-x="516" d="M207 0v1462h102v-1462h-102zM5 1727q0 46 15.5 66t47.5 20q64 0 64 -86t-64 -86q-63 0 -63 86zM386 1727q0 46 15.5 66t47.5 20q64 0 64 -86t-64 -86q-63 0 -63 86z" />
+<glyph unicode="&#xd0;" horiz-adv-x="1466" d="M47 678v94h160v690h395q350 0 532.5 -183t182.5 -534q0 -368 -193 -556.5t-567 -188.5h-350v678h-160zM309 90h242q655 0 655 651q0 314 -159.5 472.5t-468.5 158.5h-269v-600h406v-94h-406v-588z" />
+<glyph unicode="&#xd1;" horiz-adv-x="1477" d="M207 0v1462h102l865 -1296h6q-9 180 -9 342v954h99v-1462h-103l-866 1298h-8q12 -232 12 -350v-948h-98zM400 1581q10 111 63 174.5t137 63.5q48 0 88 -25t82 -59q34 -28 66 -50t61 -22q46 0 77 36.5t48 119.5h76q-16 -116 -69 -177t-132 -61q-36 0 -75 18.5t-101 71.5 q-32 26 -62.5 46t-62.5 20q-45 0 -75 -34.5t-48 -121.5h-73z" />
+<glyph unicode="&#xd2;" horiz-adv-x="1565" d="M129 735q0 349 175.5 549.5t479.5 200.5q306 0 479 -201.5t173 -550.5q0 -348 -174 -550.5t-480 -202.5q-305 0 -479 202.5t-174 552.5zM240 733q0 -314 140 -485.5t402 -171.5q264 0 403.5 170t139.5 487q0 316 -139.5 484.5t-401.5 168.5q-261 0 -402.5 -170 t-141.5 -483zM502 1890v17h142q26 -48 98.5 -142t142.5 -170v-16h-69q-96 79 -188.5 171.5t-125.5 139.5z" />
+<glyph unicode="&#xd3;" horiz-adv-x="1565" d="M129 735q0 349 175.5 549.5t479.5 200.5q306 0 479 -201.5t173 -550.5q0 -348 -174 -550.5t-480 -202.5q-305 0 -479 202.5t-174 552.5zM240 733q0 -314 140 -485.5t402 -171.5q264 0 403.5 170t139.5 487q0 316 -139.5 484.5t-401.5 168.5q-261 0 -402.5 -170 t-141.5 -483zM686 1579v16q73 79 144.5 171.5t97.5 140.5h141v-17q-36 -52 -122.5 -138t-190.5 -173h-70z" />
+<glyph unicode="&#xd4;" horiz-adv-x="1565" d="M129 735q0 349 175.5 549.5t479.5 200.5q306 0 479 -201.5t173 -550.5q0 -348 -174 -550.5t-480 -202.5q-305 0 -479 202.5t-174 552.5zM240 733q0 -314 140 -485.5t402 -171.5q264 0 403.5 170t139.5 487q0 316 -139.5 484.5t-401.5 168.5q-261 0 -402.5 -170 t-141.5 -483zM492 1579v16q62 67 131.5 156t110.5 156h98q68 -120 242 -312v-16h-70q-122 101 -221 207q-108 -114 -221 -207h-70z" />
+<glyph unicode="&#xd5;" horiz-adv-x="1565" d="M129 735q0 349 175.5 549.5t479.5 200.5q306 0 479 -201.5t173 -550.5q0 -348 -174 -550.5t-480 -202.5q-305 0 -479 202.5t-174 552.5zM240 733q0 -314 140 -485.5t402 -171.5q264 0 403.5 170t139.5 487q0 316 -139.5 484.5t-401.5 168.5q-261 0 -402.5 -170 t-141.5 -483zM443 1581q10 111 63 174.5t137 63.5q48 0 88 -25t82 -59q34 -28 66 -50t61 -22q46 0 77 36.5t48 119.5h76q-16 -116 -69 -177t-132 -61q-36 0 -75 18.5t-101 71.5q-32 26 -62.5 46t-62.5 20q-45 0 -75 -34.5t-48 -121.5h-73z" />
+<glyph unicode="&#xd6;" horiz-adv-x="1565" d="M129 735q0 349 175.5 549.5t479.5 200.5q306 0 479 -201.5t173 -550.5q0 -348 -174 -550.5t-480 -202.5q-305 0 -479 202.5t-174 552.5zM240 733q0 -314 140 -485.5t402 -171.5q264 0 403.5 170t139.5 487q0 316 -139.5 484.5t-401.5 168.5q-261 0 -402.5 -170 t-141.5 -483zM529 1727q0 46 15.5 66t47.5 20q64 0 64 -86t-64 -86q-63 0 -63 86zM910 1727q0 46 15.5 66t47.5 20q64 0 64 -86t-64 -86q-63 0 -63 86z" />
+<glyph unicode="&#xd7;" d="M119 1130l57 58l408 -408l409 408l58 -58l-408 -407l406 -408l-58 -57l-407 408l-406 -408l-57 57l405 408z" />
+<glyph unicode="&#xd8;" horiz-adv-x="1565" d="M129 735q0 349 175.5 549.5t479.5 200.5q232 0 392 -121l108 152l72 -60l-111 -153q191 -207 191 -570q0 -348 -174 -550.5t-480 -202.5q-236 0 -395 120l-86 -120l-74 59l90 127q-188 200 -188 569zM240 733q0 -312 139 -483l739 1034q-133 102 -334 102 q-261 0 -402.5 -170t-141.5 -483zM444 182q133 -106 338 -106q264 0 403.5 170t139.5 487q0 315 -139 486z" />
+<glyph unicode="&#xd9;" horiz-adv-x="1473" d="M190 520v942h103v-946q0 -211 117 -328.5t331 -117.5q209 0 324 115.5t115 320.5v956h102v-946q0 -252 -146 -394t-407 -142q-254 0 -396.5 142.5t-142.5 397.5zM450 1890v17h142q26 -48 98.5 -142t142.5 -170v-16h-69q-96 79 -188.5 171.5t-125.5 139.5z" />
+<glyph unicode="&#xda;" horiz-adv-x="1473" d="M190 520v942h103v-946q0 -211 117 -328.5t331 -117.5q209 0 324 115.5t115 320.5v956h102v-946q0 -252 -146 -394t-407 -142q-254 0 -396.5 142.5t-142.5 397.5zM633 1579v16q73 79 144.5 171.5t97.5 140.5h141v-17q-36 -52 -122.5 -138t-190.5 -173h-70z" />
+<glyph unicode="&#xdb;" horiz-adv-x="1473" d="M190 520v942h103v-946q0 -211 117 -328.5t331 -117.5q209 0 324 115.5t115 320.5v956h102v-946q0 -252 -146 -394t-407 -142q-254 0 -396.5 142.5t-142.5 397.5zM444 1579v16q62 67 131.5 156t110.5 156h98q68 -120 242 -312v-16h-70q-122 101 -221 207 q-108 -114 -221 -207h-70z" />
+<glyph unicode="&#xdc;" horiz-adv-x="1473" d="M190 520v942h103v-946q0 -211 117 -328.5t331 -117.5q209 0 324 115.5t115 320.5v956h102v-946q0 -252 -146 -394t-407 -142q-254 0 -396.5 142.5t-142.5 397.5zM481 1727q0 46 15.5 66t47.5 20q64 0 64 -86t-64 -86q-63 0 -63 86zM862 1727q0 46 15.5 66t47.5 20 q64 0 64 -86t-64 -86q-63 0 -63 86z" />
+<glyph unicode="&#xdd;" horiz-adv-x="1081" d="M0 1462h117l426 -800l428 800h110l-487 -897v-565h-105v557zM434 1579v16q73 79 144.5 171.5t97.5 140.5h141v-17q-36 -52 -122.5 -138t-190.5 -173h-70z" />
+<glyph unicode="&#xde;" horiz-adv-x="1198" d="M207 0v1462h102v-264h256q522 0 522 -420q0 -212 -144 -325t-408 -113h-226v-340h-102zM309 428h201q247 0 357 81.5t110 264.5q0 169 -104 250.5t-322 81.5h-242v-678z" />
+<glyph unicode="&#xdf;" horiz-adv-x="1194" d="M182 0v1206q0 173 103.5 267t292.5 94q188 0 285.5 -72.5t97.5 -210.5q0 -139 -139 -250q-81 -64 -110.5 -100.5t-29.5 -75.5q0 -44 14.5 -68t51.5 -57t102 -78q106 -75 151.5 -124.5t68 -103t22.5 -120.5q0 -156 -88 -241.5t-246 -85.5q-95 0 -174.5 18.5t-126.5 48.5 v107q65 -38 148.5 -62t152.5 -24q114 0 174.5 54.5t60.5 160.5q0 83 -39 144t-149 136q-127 87 -175 147t-48 146q0 60 32.5 110t106.5 108q74 57 106.5 105.5t32.5 106.5q0 93 -70 143t-202 50q-145 0 -226 -69t-81 -196v-1214h-99z" />
+<glyph unicode="&#xe0;" horiz-adv-x="1085" d="M98 289q0 159 132.5 247t383.5 93l207 6v72q0 155 -63 234t-203 79q-151 0 -313 -84l-37 86q179 84 354 84q179 0 267.5 -93t88.5 -290v-723h-73l-25 172h-8q-82 -105 -168.5 -148.5t-204.5 -43.5q-160 0 -249 82t-89 227zM203 285q0 -102 62.5 -158.5t176.5 -56.5 q174 0 274.5 99.5t100.5 276.5v107l-190 -8q-229 -11 -326.5 -71.5t-97.5 -188.5zM255 1552v17h142q26 -48 98.5 -142t142.5 -170v-16h-69q-96 79 -188.5 171.5t-125.5 139.5z" />
+<glyph unicode="&#xe1;" horiz-adv-x="1085" d="M98 289q0 159 132.5 247t383.5 93l207 6v72q0 155 -63 234t-203 79q-151 0 -313 -84l-37 86q179 84 354 84q179 0 267.5 -93t88.5 -290v-723h-73l-25 172h-8q-82 -105 -168.5 -148.5t-204.5 -43.5q-160 0 -249 82t-89 227zM203 285q0 -102 62.5 -158.5t176.5 -56.5 q174 0 274.5 99.5t100.5 276.5v107l-190 -8q-229 -11 -326.5 -71.5t-97.5 -188.5zM422 1241v16q73 79 144.5 171.5t97.5 140.5h141v-17q-36 -52 -122.5 -138t-190.5 -173h-70z" />
+<glyph unicode="&#xe2;" horiz-adv-x="1085" d="M98 289q0 159 132.5 247t383.5 93l207 6v72q0 155 -63 234t-203 79q-151 0 -313 -84l-37 86q179 84 354 84q179 0 267.5 -93t88.5 -290v-723h-73l-25 172h-8q-82 -105 -168.5 -148.5t-204.5 -43.5q-160 0 -249 82t-89 227zM203 285q0 -102 62.5 -158.5t176.5 -56.5 q174 0 274.5 99.5t100.5 276.5v107l-190 -8q-229 -11 -326.5 -71.5t-97.5 -188.5zM251 1241v16q62 67 131.5 156t110.5 156h98q68 -120 242 -312v-16h-70q-122 101 -221 207q-108 -114 -221 -207h-70z" />
+<glyph unicode="&#xe3;" horiz-adv-x="1085" d="M98 289q0 159 132.5 247t383.5 93l207 6v72q0 155 -63 234t-203 79q-151 0 -313 -84l-37 86q179 84 354 84q179 0 267.5 -93t88.5 -290v-723h-73l-25 172h-8q-82 -105 -168.5 -148.5t-204.5 -43.5q-160 0 -249 82t-89 227zM203 285q0 -102 62.5 -158.5t176.5 -56.5 q174 0 274.5 99.5t100.5 276.5v107l-190 -8q-229 -11 -326.5 -71.5t-97.5 -188.5zM200 1243q10 111 63 174.5t137 63.5q48 0 88 -25t82 -59q34 -28 66 -50t61 -22q46 0 77 36.5t48 119.5h76q-16 -116 -69 -177t-132 -61q-36 0 -75 18.5t-101 71.5q-32 26 -62.5 46t-62.5 20 q-45 0 -75 -34.5t-48 -121.5h-73z" />
+<glyph unicode="&#xe4;" horiz-adv-x="1085" d="M98 289q0 159 132.5 247t383.5 93l207 6v72q0 155 -63 234t-203 79q-151 0 -313 -84l-37 86q179 84 354 84q179 0 267.5 -93t88.5 -290v-723h-73l-25 172h-8q-82 -105 -168.5 -148.5t-204.5 -43.5q-160 0 -249 82t-89 227zM203 285q0 -102 62.5 -158.5t176.5 -56.5 q174 0 274.5 99.5t100.5 276.5v107l-190 -8q-229 -11 -326.5 -71.5t-97.5 -188.5zM282 1389q0 46 15.5 66t47.5 20q64 0 64 -86t-64 -86q-63 0 -63 86zM663 1389q0 46 15.5 66t47.5 20q64 0 64 -86t-64 -86q-63 0 -63 86z" />
+<glyph unicode="&#xe5;" horiz-adv-x="1085" d="M98 289q0 159 132.5 247t383.5 93l207 6v72q0 155 -63 234t-203 79q-151 0 -313 -84l-37 86q179 84 354 84q179 0 267.5 -93t88.5 -290v-723h-73l-25 172h-8q-82 -105 -168.5 -148.5t-204.5 -43.5q-160 0 -249 82t-89 227zM203 285q0 -102 62.5 -158.5t176.5 -56.5 q174 0 274.5 99.5t100.5 276.5v107l-190 -8q-229 -11 -326.5 -71.5t-97.5 -188.5zM325 1456q0 94 60 152.5t157 58.5t157 -59t60 -152q0 -97 -60 -155t-157 -58t-157 58t-60 155zM405 1456q0 -66 37.5 -103.5t99.5 -37.5t99.5 37.5t37.5 103.5q0 64 -39 101.5t-98 37.5 q-62 0 -99.5 -38t-37.5 -101z" />
+<glyph unicode="&#xe6;" horiz-adv-x="1731" d="M98 289q0 154 125 243t377 97l201 6v72q0 155 -61.5 234t-198.5 79q-148 0 -305 -84l-37 86q173 84 346 84q261 0 325 -211q111 213 347 213q184 0 289.5 -134.5t105.5 -363.5v-80h-715q0 -460 348 -460q85 0 150 12t174 57v-90q-92 -41 -165 -55t-161 -14 q-295 0 -397 256q-68 -133 -168 -194.5t-252 -61.5q-156 0 -242 82.5t-86 226.5zM203 285q0 -102 61 -158.5t170 -56.5q169 0 266 99.5t97 276.5v107l-187 -8q-219 -11 -313 -71.5t-94 -188.5zM903 618h604q0 188 -77.5 295t-212.5 107q-284 0 -314 -402z" />
+<glyph unicode="&#xe7;" horiz-adv-x="973" d="M119 537q0 270 137 420.5t375 150.5q141 0 270 -49l-27 -88q-141 47 -245 47q-200 0 -303 -123.5t-103 -355.5q0 -220 103 -344.5t288 -124.5q148 0 275 53v-92q-104 -51 -273 -51q-233 0 -365 147t-132 410zM373 -393q30 -10 92 -10q78 0 119 28t41 80q0 94 -193 121 l93 174h96l-66 -117q168 -37 168 -174q0 -100 -67.5 -150.5t-188.5 -50.5q-68 0 -94 11v88z" />
+<glyph unicode="&#xe8;" horiz-adv-x="1124" d="M119 535q0 260 128 416.5t345 156.5q192 0 303 -134t111 -364v-80h-783q2 -224 104.5 -342t293.5 -118q93 0 163.5 13t178.5 56v-90q-92 -40 -170 -54.5t-172 -14.5q-237 0 -369.5 146t-132.5 409zM229 618h672q0 189 -82 295.5t-227 106.5q-157 0 -252 -103.5 t-111 -298.5zM302 1552v17h142q26 -48 98.5 -142t142.5 -170v-16h-69q-96 79 -188.5 171.5t-125.5 139.5z" />
+<glyph unicode="&#xe9;" horiz-adv-x="1124" d="M119 535q0 260 128 416.5t345 156.5q192 0 303 -134t111 -364v-80h-783q2 -224 104.5 -342t293.5 -118q93 0 163.5 13t178.5 56v-90q-92 -40 -170 -54.5t-172 -14.5q-237 0 -369.5 146t-132.5 409zM229 618h672q0 189 -82 295.5t-227 106.5q-157 0 -252 -103.5 t-111 -298.5zM452 1241v16q73 79 144.5 171.5t97.5 140.5h141v-17q-36 -52 -122.5 -138t-190.5 -173h-70z" />
+<glyph unicode="&#xea;" horiz-adv-x="1124" d="M119 535q0 260 128 416.5t345 156.5q192 0 303 -134t111 -364v-80h-783q2 -224 104.5 -342t293.5 -118q93 0 163.5 13t178.5 56v-90q-92 -40 -170 -54.5t-172 -14.5q-237 0 -369.5 146t-132.5 409zM229 618h672q0 189 -82 295.5t-227 106.5q-157 0 -252 -103.5 t-111 -298.5zM290 1241v16q62 67 131.5 156t110.5 156h98q68 -120 242 -312v-16h-70q-122 101 -221 207q-108 -114 -221 -207h-70z" />
+<glyph unicode="&#xeb;" horiz-adv-x="1124" d="M119 535q0 260 128 416.5t345 156.5q192 0 303 -134t111 -364v-80h-783q2 -224 104.5 -342t293.5 -118q93 0 163.5 13t178.5 56v-90q-92 -40 -170 -54.5t-172 -14.5q-237 0 -369.5 146t-132.5 409zM229 618h672q0 189 -82 295.5t-227 106.5q-157 0 -252 -103.5 t-111 -298.5zM331 1389q0 46 15.5 66t47.5 20q64 0 64 -86t-64 -86q-63 0 -63 86zM712 1389q0 46 15.5 66t47.5 20q64 0 64 -86t-64 -86q-63 0 -63 86z" />
+<glyph unicode="&#xec;" horiz-adv-x="463" d="M182 0v1087h99v-1087h-99zM-34 1552v17h142q26 -48 98.5 -142t142.5 -170v-16h-69q-96 79 -188.5 171.5t-125.5 139.5z" />
+<glyph unicode="&#xed;" horiz-adv-x="463" d="M182 0v1087h99v-1087h-99zM107 1241v16q73 79 144.5 171.5t97.5 140.5h141v-17q-36 -52 -122.5 -138t-190.5 -173h-70z" />
+<glyph unicode="&#xee;" horiz-adv-x="463" d="M182 0v1087h99v-1087h-99zM-58 1241v16q62 67 131.5 156t110.5 156h98q68 -120 242 -312v-16h-70q-122 101 -221 207q-108 -114 -221 -207h-70z" />
+<glyph unicode="&#xef;" horiz-adv-x="463" d="M182 0v1087h99v-1087h-99zM-21 1389q0 46 15.5 66t47.5 20q64 0 64 -86t-64 -86q-63 0 -63 86zM360 1389q0 46 15.5 66t47.5 20q64 0 64 -86t-64 -86q-63 0 -63 86z" />
+<glyph unicode="&#xf0;" horiz-adv-x="1174" d="M117 471q0 228 126.5 357.5t342.5 129.5q108 0 187.5 -33t148.5 -96l4 2q-64 270 -269 459l-270 -157l-49 77l244 146q-86 62 -199 119l45 81q147 -69 248 -145l225 137l49 -84l-202 -121q154 -151 230.5 -353t76.5 -431q0 -276 -124 -427.5t-349 -151.5 q-214 0 -339.5 130t-125.5 361zM221 463q0 -186 94.5 -289.5t268.5 -103.5q179 0 272.5 123t93.5 364q0 146 -97 228.5t-267 82.5q-185 0 -275 -100.5t-90 -304.5z" />
+<glyph unicode="&#xf1;" horiz-adv-x="1208" d="M182 0v1087h84l19 -149h6q106 170 377 170q370 0 370 -397v-711h-98v705q0 164 -69 238.5t-214 74.5q-195 0 -285.5 -98.5t-90.5 -319.5v-600h-99zM282 1243q10 111 63 174.5t137 63.5q48 0 88 -25t82 -59q34 -28 66 -50t61 -22q46 0 77 36.5t48 119.5h76 q-16 -116 -69 -177t-132 -61q-36 0 -75 18.5t-101 71.5q-32 26 -62.5 46t-62.5 20q-45 0 -75 -34.5t-48 -121.5h-73z" />
+<glyph unicode="&#xf2;" horiz-adv-x="1200" d="M119 545q0 266 129 414.5t354 148.5q224 0 351.5 -150.5t127.5 -412.5q0 -266 -129 -415.5t-356 -149.5q-143 0 -252 69t-167 198t-58 298zM223 545q0 -224 98.5 -349.5t278.5 -125.5t278.5 125.5t98.5 349.5q0 225 -99.5 349t-279.5 124t-277.5 -123.5t-97.5 -349.5z M335 1552v17h142q26 -48 98.5 -142t142.5 -170v-16h-69q-96 79 -188.5 171.5t-125.5 139.5z" />
+<glyph unicode="&#xf3;" horiz-adv-x="1200" d="M119 545q0 266 129 414.5t354 148.5q224 0 351.5 -150.5t127.5 -412.5q0 -266 -129 -415.5t-356 -149.5q-143 0 -252 69t-167 198t-58 298zM223 545q0 -224 98.5 -349.5t278.5 -125.5t278.5 125.5t98.5 349.5q0 225 -99.5 349t-279.5 124t-277.5 -123.5t-97.5 -349.5z M499 1241v16q73 79 144.5 171.5t97.5 140.5h141v-17q-36 -52 -122.5 -138t-190.5 -173h-70z" />
+<glyph unicode="&#xf4;" horiz-adv-x="1200" d="M119 545q0 266 129 414.5t354 148.5q224 0 351.5 -150.5t127.5 -412.5q0 -266 -129 -415.5t-356 -149.5q-143 0 -252 69t-167 198t-58 298zM223 545q0 -224 98.5 -349.5t278.5 -125.5t278.5 125.5t98.5 349.5q0 225 -99.5 349t-279.5 124t-277.5 -123.5t-97.5 -349.5z M309 1241v16q62 67 131.5 156t110.5 156h98q68 -120 242 -312v-16h-70q-122 101 -221 207q-108 -114 -221 -207h-70z" />
+<glyph unicode="&#xf5;" horiz-adv-x="1200" d="M119 545q0 266 129 414.5t354 148.5q224 0 351.5 -150.5t127.5 -412.5q0 -266 -129 -415.5t-356 -149.5q-143 0 -252 69t-167 198t-58 298zM223 545q0 -224 98.5 -349.5t278.5 -125.5t278.5 125.5t98.5 349.5q0 225 -99.5 349t-279.5 124t-277.5 -123.5t-97.5 -349.5z M264 1243q10 111 63 174.5t137 63.5q48 0 88 -25t82 -59q34 -28 66 -50t61 -22q46 0 77 36.5t48 119.5h76q-16 -116 -69 -177t-132 -61q-36 0 -75 18.5t-101 71.5q-32 26 -62.5 46t-62.5 20q-45 0 -75 -34.5t-48 -121.5h-73z" />
+<glyph unicode="&#xf6;" horiz-adv-x="1200" d="M119 545q0 266 129 414.5t354 148.5q224 0 351.5 -150.5t127.5 -412.5q0 -266 -129 -415.5t-356 -149.5q-143 0 -252 69t-167 198t-58 298zM223 545q0 -224 98.5 -349.5t278.5 -125.5t278.5 125.5t98.5 349.5q0 225 -99.5 349t-279.5 124t-277.5 -123.5t-97.5 -349.5z M346 1389q0 46 15.5 66t47.5 20q64 0 64 -86t-64 -86q-63 0 -63 86zM727 1389q0 46 15.5 66t47.5 20q64 0 64 -86t-64 -86q-63 0 -63 86z" />
+<glyph unicode="&#xf7;" d="M111 682v82h948v-82h-948zM504 371q0 98 80 98q82 0 82 -98q0 -53 -23.5 -76t-58.5 -23q-34 0 -57 23t-23 76zM504 1075q0 99 80 99q82 0 82 -99q0 -52 -23.5 -75t-58.5 -23q-34 0 -57 23t-23 75z" />
+<glyph unicode="&#xf8;" horiz-adv-x="1200" d="M119 545q0 266 129 414.5t354 148.5q179 0 301 -104l96 124l74 -55l-104 -137q112 -147 112 -391q0 -266 -129 -415.5t-356 -149.5q-173 0 -291 98l-86 -113l-72 58l93 120q-121 153 -121 402zM223 545q0 -200 78 -322l543 705q-98 90 -246 90q-180 0 -277.5 -123.5 t-97.5 -349.5zM362 152q94 -82 238 -82q180 0 278.5 125.5t98.5 349.5q0 190 -72 309z" />
+<glyph unicode="&#xf9;" horiz-adv-x="1208" d="M170 377v710h98v-704q0 -164 69 -238.5t214 -74.5q194 0 285.5 98t91.5 319v600h98v-1087h-84l-18 150h-6q-106 -170 -377 -170q-371 0 -371 397zM304 1552v17h142q26 -48 98.5 -142t142.5 -170v-16h-69q-96 79 -188.5 171.5t-125.5 139.5z" />
+<glyph unicode="&#xfa;" horiz-adv-x="1208" d="M170 377v710h98v-704q0 -164 69 -238.5t214 -74.5q194 0 285.5 98t91.5 319v600h98v-1087h-84l-18 150h-6q-106 -170 -377 -170q-371 0 -371 397zM495 1241v16q73 79 144.5 171.5t97.5 140.5h141v-17q-36 -52 -122.5 -138t-190.5 -173h-70z" />
+<glyph unicode="&#xfb;" horiz-adv-x="1208" d="M170 377v710h98v-704q0 -164 69 -238.5t214 -74.5q194 0 285.5 98t91.5 319v600h98v-1087h-84l-18 150h-6q-106 -170 -377 -170q-371 0 -371 397zM313 1241v16q62 67 131.5 156t110.5 156h98q68 -120 242 -312v-16h-70q-122 101 -221 207q-108 -114 -221 -207h-70z" />
+<glyph unicode="&#xfc;" horiz-adv-x="1208" d="M170 377v710h98v-704q0 -164 69 -238.5t214 -74.5q194 0 285.5 98t91.5 319v600h98v-1087h-84l-18 150h-6q-106 -170 -377 -170q-371 0 -371 397zM350 1389q0 46 15.5 66t47.5 20q64 0 64 -86t-64 -86q-63 0 -63 86zM731 1389q0 46 15.5 66t47.5 20q64 0 64 -86t-64 -86 q-63 0 -63 86z" />
+<glyph unicode="&#xfd;" horiz-adv-x="940" d="M0 1087h102l230 -610q105 -281 133 -379h6q42 129 137 385l230 604h102l-487 -1263q-59 -154 -99 -208t-93.5 -81t-129.5 -27q-57 0 -127 21v86q58 -16 125 -16q51 0 90 24t70.5 74.5t73 160t53.5 142.5zM361 1241v16q73 79 144.5 171.5t97.5 140.5h141v-17 q-36 -52 -122.5 -138t-190.5 -173h-70z" />
+<glyph unicode="&#xfe;" horiz-adv-x="1219" d="M182 -492v2048h99v-391l-7 -247h7q114 190 368 190q220 0 335.5 -144.5t115.5 -420.5q0 -268 -121.5 -415.5t-331.5 -147.5q-251 0 -366 188h-7l3 -84q4 -74 4 -162v-414h-99zM281 541q0 -255 85.5 -364t278.5 -109q167 0 258.5 124t91.5 347q0 479 -348 479 q-193 0 -279.5 -105t-86.5 -354v-18z" />
+<glyph unicode="&#xff;" horiz-adv-x="940" d="M0 1087h102l230 -610q105 -281 133 -379h6q42 129 137 385l230 604h102l-487 -1263q-59 -154 -99 -208t-93.5 -81t-129.5 -27q-57 0 -127 21v86q58 -16 125 -16q51 0 90 24t70.5 74.5t73 160t53.5 142.5zM214 1389q0 46 15.5 66t47.5 20q64 0 64 -86t-64 -86 q-63 0 -63 86zM595 1389q0 46 15.5 66t47.5 20q64 0 64 -86t-64 -86q-63 0 -63 86z" />
+<glyph unicode="&#x131;" horiz-adv-x="463" d="M182 0v1087h99v-1087h-99z" />
+<glyph unicode="&#x152;" horiz-adv-x="1839" d="M129 735q0 347 174.5 545.5t480.5 198.5q78 0 183 -17h747v-94h-655v-553h616v-94h-616v-627h655v-94h-756q-76 -16 -176 -16q-305 0 -479 200t-174 551zM240 733q0 -315 140.5 -484t401.5 -169q109 0 174 18v1266q-62 16 -172 16q-262 0 -403 -167.5t-141 -479.5z" />
+<glyph unicode="&#x153;" horiz-adv-x="1942" d="M119 545q0 266 129 414.5t354 148.5q151 0 251 -70t157 -209q110 279 399 279q192 0 303 -134t111 -364v-80h-762q2 -230 100.5 -345t276.5 -115q93 0 163.5 13t178.5 56v-90q-92 -40 -170 -54.5t-172 -14.5q-156 0 -266.5 67.5t-165.5 198.5q-59 -128 -158 -197 t-252 -69q-143 0 -252 69t-167 198t-58 298zM223 545q0 -224 98.5 -349.5t278.5 -125.5q174 0 265 122.5t91 352.5q0 224 -93 348.5t-265 124.5q-180 0 -277.5 -123.5t-97.5 -349.5zM1065 618h653q0 189 -82 295.5t-227 106.5q-155 0 -242 -104t-102 -298z" />
+<glyph unicode="&#x178;" horiz-adv-x="1081" d="M0 1462h117l426 -800l428 800h110l-487 -897v-565h-105v557zM288 1727q0 46 15.5 66t47.5 20q64 0 64 -86t-64 -86q-63 0 -63 86zM669 1727q0 46 15.5 66t47.5 20q64 0 64 -86t-64 -86q-63 0 -63 86z" />
+<glyph unicode="&#x2c6;" horiz-adv-x="1182" d="M299 1241v16q62 67 131.5 156t110.5 156h98q68 -120 242 -312v-16h-70q-122 101 -221 207q-108 -114 -221 -207h-70z" />
+<glyph unicode="&#x2da;" horiz-adv-x="1182" d="M371 1456q0 94 60 152.5t157 58.5t157 -59t60 -152q0 -97 -60 -155t-157 -58t-157 58t-60 155zM451 1456q0 -66 37.5 -103.5t99.5 -37.5t99.5 37.5t37.5 103.5q0 64 -39 101.5t-98 37.5q-62 0 -99.5 -38t-37.5 -101z" />
+<glyph unicode="&#x2dc;" horiz-adv-x="1182" d="M283 1243q10 111 63 174.5t137 63.5q48 0 88 -25t82 -59q34 -28 66 -50t61 -22q46 0 77 36.5t48 119.5h76q-16 -116 -69 -177t-132 -61q-36 0 -75 18.5t-101 71.5q-32 26 -62.5 46t-62.5 20q-45 0 -75 -34.5t-48 -121.5h-73z" />
+<glyph unicode="&#x2000;" horiz-adv-x="953" />
+<glyph unicode="&#x2001;" horiz-adv-x="1907" />
+<glyph unicode="&#x2002;" horiz-adv-x="953" />
+<glyph unicode="&#x2003;" horiz-adv-x="1907" />
+<glyph unicode="&#x2004;" horiz-adv-x="635" />
+<glyph unicode="&#x2005;" horiz-adv-x="476" />
+<glyph unicode="&#x2006;" horiz-adv-x="317" />
+<glyph unicode="&#x2007;" horiz-adv-x="317" />
+<glyph unicode="&#x2008;" horiz-adv-x="238" />
+<glyph unicode="&#x2009;" horiz-adv-x="381" />
+<glyph unicode="&#x200a;" horiz-adv-x="105" />
+<glyph unicode="&#x2010;" horiz-adv-x="659" d="M92 512v82h475v-82h-475z" />
+<glyph unicode="&#x2011;" horiz-adv-x="659" d="M92 512v82h475v-82h-475z" />
+<glyph unicode="&#x2012;" horiz-adv-x="659" d="M92 512v82h475v-82h-475z" />
+<glyph unicode="&#x2013;" horiz-adv-x="1024" d="M82 512v82h860v-82h-860z" />
+<glyph unicode="&#x2014;" horiz-adv-x="2048" d="M82 512v82h1884v-82h-1884z" />
+<glyph unicode="&#x2018;" horiz-adv-x="297" d="M29 981q32 112 81.5 251t92.5 230h65q-30 -101 -64.5 -257t-45.5 -244h-117z" />
+<glyph unicode="&#x2019;" horiz-adv-x="297" d="M29 961q29 96 61 241.5t49 259.5h117l12 -20q-75 -265 -174 -481h-65z" />
+<glyph unicode="&#x201a;" horiz-adv-x="451" d="M68 -263q29 96 61 241.5t49 259.5h117l12 -20q-75 -265 -174 -481h-65z" />
+<glyph unicode="&#x201c;" horiz-adv-x="614" d="M29 981q32 112 81.5 251t92.5 230h65q-30 -101 -64.5 -257t-45.5 -244h-117zM346 981q34 120 83 255t91 226h66q-30 -98 -63 -248.5t-48 -252.5h-117z" />
+<glyph unicode="&#x201d;" horiz-adv-x="614" d="M29 961q29 96 61 241.5t49 259.5h117l12 -20q-75 -265 -174 -481h-65zM346 961q30 98 63 248.5t48 252.5h116l13 -20q-36 -128 -85 -261t-89 -220h-66z" />
+<glyph unicode="&#x201e;" horiz-adv-x="768" d="M68 -263q29 96 61 241.5t49 259.5h117l12 -20q-75 -265 -174 -481h-65zM385 -263q30 98 63 248.5t48 252.5h116l13 -20q-36 -128 -85 -261t-89 -220h-66z" />
+<glyph unicode="&#x2022;" horiz-adv-x="770" d="M231 748q0 89 40.5 134.5t113.5 45.5t113.5 -47t40.5 -133q0 -85 -41 -133t-113 -48t-113 47t-41 134z" />
+<glyph unicode="&#x2026;" horiz-adv-x="1466" d="M162 78q0 98 80 98q82 0 82 -98t-82 -98q-80 0 -80 98zM651 78q0 98 80 98q82 0 82 -98t-82 -98q-80 0 -80 98zM1141 78q0 98 80 98q82 0 82 -98t-82 -98q-80 0 -80 98z" />
+<glyph unicode="&#x202f;" horiz-adv-x="381" />
+<glyph unicode="&#x2039;" horiz-adv-x="524" d="M82 516v27l309 393l62 -43l-254 -363l254 -362l-62 -43z" />
+<glyph unicode="&#x203a;" horiz-adv-x="524" d="M72 168l254 362l-254 363l61 43l309 -391v-27l-309 -393z" />
+<glyph unicode="&#x2044;" horiz-adv-x="246" d="M-332 0l811 1462h94l-811 -1462h-94z" />
+<glyph unicode="&#x205f;" horiz-adv-x="476" />
+<glyph unicode="&#x2074;" horiz-adv-x="688" d="M25 827v60l407 581h96v-563h129v-78h-129v-241h-90v241h-413zM129 905h309v221q0 132 8 232q-6 -12 -21.5 -35.5t-295.5 -417.5z" />
+<glyph unicode="&#x20ac;" d="M74 528v82h172q-4 38 -4 113l4 102h-172v82h184q39 272 183 425t362 153q88 0 161 -17t148 -57l-39 -86q-132 72 -270 72q-174 0 -288 -125.5t-155 -364.5h502v-82h-510l-4 -104v-24q0 -65 4 -87h449v-82h-443q30 -217 147.5 -338.5t301.5 -121.5q148 0 287 65v-94 q-81 -34 -150.5 -46.5t-140.5 -12.5q-228 0 -367.5 140t-181.5 408h-180z" />
+<glyph unicode="&#x2122;" horiz-adv-x="1485" d="M10 1384v78h522v-78h-219v-643h-86v643h-217zM608 741v721h125l221 -606l224 606h125v-721h-86v398l4 207h-7l-227 -605h-74l-221 609h-6l4 -201v-408h-82z" />
+<glyph unicode="&#x2212;" d="M111 682v82h948v-82h-948z" />
+<glyph unicode="&#xe000;" horiz-adv-x="1085" d="M0 1085h1085v-1085h-1085v1085z" />
+<glyph unicode="&#xfb01;" horiz-adv-x="1077" d="M29 1001v58l202 37v84q0 200 73.5 293.5t240.5 93.5q90 0 180 -27l-23 -86q-80 25 -159 25q-116 0 -164.5 -68.5t-48.5 -222.5v-101h256v-86h-256v-1001h-99v1001h-202zM782 1389q0 96 63 96q31 0 48.5 -25t17.5 -71q0 -45 -17.5 -71t-48.5 -26q-63 0 -63 97zM796 0v1087 h99v-1087h-99z" />
+<glyph unicode="&#xfb02;" horiz-adv-x="1077" d="M29 1001v58l202 37v84q0 200 73.5 293.5t240.5 93.5q90 0 180 -27l-23 -86q-80 25 -159 25q-116 0 -164.5 -68.5t-48.5 -222.5v-101h256v-86h-256v-1001h-99v1001h-202zM796 0v1556h99v-1556h-99z" />
+<glyph unicode="&#xfb03;" horiz-adv-x="1692" d="M29 1001v58l202 37v84q0 200 73.5 293.5t240.5 93.5q90 0 180 -27l-23 -86q-80 25 -159 25q-116 0 -164.5 -68.5t-48.5 -222.5v-101h256v-86h-256v-1001h-99v1001h-202zM643 1001v58l202 37v84q0 200 73.5 293.5t240.5 93.5q90 0 180 -27l-23 -86q-80 25 -159 25 q-116 0 -164.5 -68.5t-48.5 -222.5v-101h256v-86h-256v-1001h-99v1001h-202zM1397 1389q0 96 63 96q31 0 48.5 -25t17.5 -71q0 -45 -17.5 -71t-48.5 -26q-63 0 -63 97zM1411 0v1087h99v-1087h-99z" />
+<glyph unicode="&#xfb04;" horiz-adv-x="1692" d="M29 1001v58l202 37v84q0 200 73.5 293.5t240.5 93.5q90 0 180 -27l-23 -86q-80 25 -159 25q-116 0 -164.5 -68.5t-48.5 -222.5v-101h256v-86h-256v-1001h-99v1001h-202zM643 1001v58l202 37v84q0 200 73.5 293.5t240.5 93.5q90 0 180 -27l-23 -86q-80 25 -159 25 q-116 0 -164.5 -68.5t-48.5 -222.5v-101h256v-86h-256v-1001h-99v1001h-202zM1411 0v1556h99v-1556h-99z" />
+</font>
+</defs></svg> 
\ No newline at end of file
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/fonts/YanoneKaffeesatz-Light-webfont.eot
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/fonts/YanoneKaffeesatz-Light-webfont.eot
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/fonts/YanoneKaffeesatz-Light-webfont.eot	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/fonts/YanoneKaffeesatz-Light-webfont.eot	(revision 47450)

Property changes on: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/fonts/YanoneKaffeesatz-Light-webfont.eot
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/fonts/YanoneKaffeesatz-Light-webfont.ttf
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/fonts/YanoneKaffeesatz-Light-webfont.ttf
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/fonts/YanoneKaffeesatz-Light-webfont.ttf	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/fonts/YanoneKaffeesatz-Light-webfont.ttf	(revision 47450)

Property changes on: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/fonts/YanoneKaffeesatz-Light-webfont.ttf
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/fonts/kreon.css
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/fonts/kreon.css	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/fonts/kreon.css	(revision 47450)
@@ -0,0 +1,12 @@
+/* Copyright (C) YOOtheme GmbH, YOOtheme Proprietary Use License (http://www.yootheme.com/license) */
+
+@font-face {
+	font-family: 'KreonRegular';
+	src: url('kreon-regular-webfont.eot');
+	src: url('kreon-regular-webfont.eot?#iefix') format('embedded-opentype'),
+		 url('kreon-regular-webfont.woff') format('woff'),
+		 url('kreon-regular-webfont.ttf') format('truetype'),
+		 url('kreon-regular-webfont.svg#KreonRegular') format('svg');
+	font-weight: normal;
+	font-style: normal;
+}
\ No newline at end of file
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/fonts/kreon-regular-webfont.ttf
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/fonts/kreon-regular-webfont.ttf
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/fonts/kreon-regular-webfont.ttf	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/fonts/kreon-regular-webfont.ttf	(revision 47450)

Property changes on: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/fonts/kreon-regular-webfont.ttf
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/fonts/DroidSans-webfont.eot
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/fonts/DroidSans-webfont.eot
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/fonts/DroidSans-webfont.eot	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/fonts/DroidSans-webfont.eot	(revision 47450)

Property changes on: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/fonts/DroidSans-webfont.eot
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/images/error_24.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/images/error_24.png
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/images/error_24.png	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/images/error_24.png	(revision 47450)

Property changes on: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/images/error_24.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/images/tick1.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/images/tick1.png
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/images/tick1.png	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/images/tick1.png	(revision 47450)

Property changes on: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/images/tick1.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/fonts/YanoneKaffeesatz-Light-webfont.svg
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/fonts/YanoneKaffeesatz-Light-webfont.svg	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/fonts/YanoneKaffeesatz-Light-webfont.svg	(revision 47450)
@@ -0,0 +1,299 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" >
+<svg xmlns="http://www.w3.org/2000/svg">
+<metadata>
+This is a custom SVG webfont generated by Font Squirrel.
+Copyright   : Copyright c 2010 Yanone httpyanonedetypedesign All rights reservedThis Font Software is licensed under the SIL Open Font License Version 11This license is available with a FAQ at httpscriptssilorgOFL
+Designer    : Yanone
+Foundry     : Yanone
+Foundry URL : httpyanonedetypedesign
+</metadata>
+<defs>
+<font id="webfont6ZqOUGp9" horiz-adv-x="882" >
+<font-face units-per-em="2048" ascent="1638" descent="-410" />
+<missing-glyph horiz-adv-x="350" />
+<glyph unicode="&#xfb01;" horiz-adv-x="811" d="M23 926q0 63 4 84q2 14 28 14h123v129q0 92 23 164q20 66 55 106q29 35 82 58q45 20 90 26q39 6 96 6q209 0 209 -73q0 -33 -14 -68q-80 39 -193 39q-52 0 -86 -6q-31 -6 -71 -33q-39 -27 -58 -80q-20 -61 -20 -141v-127h172q0 -63 -4 -84q-2 -14 -25 -14h-143v-899 q0 -27 -29 -27h-84v926h-155zM584 0v969q0 39 20 47q18 8 94 8v-997q0 -20 -14 -23q-20 -4 -100 -4z" />
+<glyph unicode="&#xfb02;" horiz-adv-x="831" d="M20 926q0 63 5 84q2 14 28 14h123v129q0 117 31 194.5t82 110.5q53 35 94 43q47 10 98 10q133 0 236 -57v-1427q0 -27 -29 -27h-84v1397q-55 18 -117 18q-41 0 -65.5 -6t-59.5 -27q-37 -20 -55 -77q-18 -55 -18 -140v-141h205q0 -63 -5 -84q-2 -14 -24 -14h-176v-899 q0 -27 -27 -27h-86v926h-156z" />
+<glyph horiz-adv-x="518" />
+<glyph horiz-adv-x="518" />
+<glyph unicode=" "  horiz-adv-x="350" />
+<glyph unicode="&#x09;" horiz-adv-x="350" />
+<glyph unicode="&#xa0;" horiz-adv-x="350" />
+<glyph unicode="!" horiz-adv-x="385" d="M104 82q0 41 23 65q25 27 66 27q46 0 67 -24q23 -27 23 -68t-25 -66q-27 -27 -65 -26q-89 0 -89 92zM125 1415q0 20 29 27q28 6 116 6l-18 -1006q-3 -34 -25 -43q-18 -8 -88 -8z" />
+<glyph unicode="&#x22;" horiz-adv-x="495" d="M72 1544q0 57 6 60q27 12 110 2q2 -72 -10 -240q-12 -158 -22 -168q-63 -2 -64 -2q-3 22 -12 147q-8 113 -8 201zM307 1544q0 57 6 60q27 12 111 2q2 -72 -10 -240q-12 -158 -23 -168l-63 -2q-3 22 -13 147q-8 113 -8 201z" />
+<glyph unicode="#" d="M78 408q0 83 12 92q4 2 14 2h109l14 254h-149q0 83 12 92q4 2 14 2h127l9 147q4 20 20 23q25 4 82 4l-10 -174h231l8 147q4 20 21 23q25 4 84 4l-10 -174h143q0 -57 -4 -78q-4 -16 -25 -16h-118l-15 -254h162q0 -57 -4 -78q-4 -16 -25 -16h-137l-8 -162q-4 -20 -21 -23 q-25 -4 -84 -4l11 189h-232l-8 -162q-4 -20 -20 -23q-25 -4 -82 -4l10 189h-131zM313 502h232l14 254h-231z" />
+<glyph unicode="$" d="M135 72q0 12 12 43q14 35 25 45q76 -63 227 -64q233 0 234 221q0 66 -31 121q-29 51 -106 129l-230 215q-127 123 -127 236q0 100 72 166q70 63 201 76v198q0 31 22 41q25 10 80 10v-247q70 -2 125 -19q53 -14 73.5 -26.5t20.5 -20.5q0 -51 -33 -82q-72 47 -213 47 q-227 0 -227 -145q0 -80 107 -180l251 -234q133 -127 134 -287q0 -287 -271 -323v-193q0 -29 -22 -39q-25 -10 -78 -10v236q-82 4 -139.5 18t-83.5 35q-23 17 -23 33z" />
+<glyph unicode="%" horiz-adv-x="1456" d="M125 1073q0 377 289 377q143 0 207 -82q66 -84 65 -293q0 -379 -283 -379q-76 0 -118 15q-49 16 -86 53t-56 115q-18 75 -18 194zM233 1065q0 -164 39 -221.5t129 -57.5q178 0 179 289q0 166 -39 223q-41 59 -127 60q-181 0 -181 -293zM256 29l862 1421q66 -18 66 -51 q0 -10 -858 -1415q-70 14 -70 45zM772 360q0 377 289 377q143 0 207 -82q66 -84 65 -293q0 -379 -282 -378q-76 0 -119 14q-49 16 -86 53q-39 39 -58 115q-16 67 -16 194zM879 350q0 -162 41 -221q39 -57 129 -57q178 0 178 288q0 166 -39 224q-41 59 -127 59 q-182 0 -182 -293z" />
+<glyph unicode="&#x26;" horiz-adv-x="1048" d="M74 352q0 120 67 221q66 98 168 158q-168 279 -168 432q0 145 92 213q94 70 250 70q119 0 209 -29q86 -28 86 -61q0 -47 -26 -80q-100 70 -258 70q-109 0 -172 -41q-61 -39 -62 -156q0 -121 148 -361q139 -227 340 -462q35 115 34 249q0 154 -49 269q-49 117 -123 174 q80 12 215 12q106 0 181 -4q4 -16 4 -45q0 -27 -17 -39q-12 -10 -67 -10l-148 2q113 -131 113 -375q0 -190 -60 -328q113 -127 173 -159q-2 -25 -27 -60q-23 -31 -45 -30q-33 0 -162 143q-115 -145 -321 -145q-375 -1 -375 372zM190 346q0 -109 57.5 -184.5t194.5 -75.5 q162 0 250 125q-172 195 -330 436q-172 -98 -172 -301z" />
+<glyph unicode="'" horiz-adv-x="260" d="M72 1544q0 57 6 60q27 12 110 2q2 -72 -10 -240q-12 -158 -22 -168q-63 -2 -64 -2q-3 22 -12 147q-8 113 -8 201z" />
+<glyph unicode="(" horiz-adv-x="600" d="M141 659q0 180 35 359q35 176 82 282q45 102 102 193q53 84 89 119q37 37 45 37q43 0 61 -74q-295 -350 -299 -911q0 -344 98 -607q100 -266 201 -381q-18 -82 -63 -82q-14 0 -50 41q-31 37 -88 134q-55 96 -100 211q-47 121 -80 299q-33 175 -33 380z" />
+<glyph unicode=")" horiz-adv-x="600" d="M47 -324q45 57 90 136q51 90 96 200q53 133 82 295q31 172 31 357q-3 316 -92 546q-90 231 -207 365q18 74 62 74q12 0 45 -35q37 -39 86 -119q57 -90 102 -192q51 -117 84 -281q33 -166 33 -363q0 -201 -33 -372q-35 -180 -80 -299q-47 -123 -98 -213q-57 -102 -88 -137 q-37 -43 -49 -44q-46 0 -64 82z" />
+<glyph unicode="*" horiz-adv-x="964" d="M43 1051q-4 49 26.5 79.5t55.5 18.5l287 -158q2 -25 -8.5 -39t-28.5 -4zM154 602l243 272q27 27 58 -12l-199 -319q-25 -25 -55 -2q-33 22 -47 61zM424 1372q-2 14 8 20.5t33 8.5q45 4 78 -17l-31 -337q-3 -34 -55 -25zM508 870.5q8 12.5 35 20.5l229 -295 q18 -25 -12 -51q-29 -27 -74 -33l-178 332q-8 14 0 26.5zM563 940q-33 45 4 66l320 151q33 -23 39 -67q6 -41 -23 -52z" />
+<glyph unicode="+" d="M86 526v49q0 20 2 31q4 16 8 19q8 4 17 4h280v278q0 22 19 25q25 4 84 4v-307h307q0 -53 -4 -82q-2 -20 -25 -21h-278v-280q0 -20 -19 -23q-25 -4 -84 -4v307h-307z" />
+<glyph unicode="," horiz-adv-x="366" d="M92 -184q55 92 62 190q-41 25 -41 82q0 35 22 62q20 23 58 22q84 0 83 -96q0 -86 -53 -193q-51 -104 -84 -104q-37 0 -47 37z" />
+<glyph unicode="-" horiz-adv-x="591" d="M88 526v49q0 20 2 31q4 16 8 19q8 4 17 4h391q0 -53 -4 -82q-2 -20 -25 -21h-389z" />
+<glyph unicode="." horiz-adv-x="366" d="M100 82q0 41 23 65q25 27 63 27q90 0 90 -92q0 -37 -24 -66q-25 -27 -66 -26q-86 0 -86 92z" />
+<glyph unicode="/" horiz-adv-x="626" d="M20 -41l463 1573q10 25 27 31q12 4 98 4l-461 -1577q-10 -23 -28 -27q-25 -4 -99 -4z" />
+<glyph unicode="0" d="M74 606q0 309 90 467q88 156 289 156q195 0 276.5 -143.5t81.5 -452.5q0 -330 -86 -489.5t-287 -159.5q-199 0 -280 149q-84 151 -84 473zM195 592q0 -272 57 -387q59 -119 186 -119q139 0 197 133q59 137 59 420q0 252 -53 371q-51 117 -182 116q-141 0 -202.5 -135 t-61.5 -399z" />
+<glyph unicode="1" d="M74 84q0 23 323 22l29 1006q-39 -2 -266 -49q-16 23 -17 82q0 12 166 49t201 37q16 0 33 -8l-25 -1117h180l113 7q0 -113 -18 -113h-717q-2 12 -2 84z" />
+<glyph unicode="2" d="M74 43q0 4 1 11t1 9q0 10 6 23l8 16l16 25q8 12 17 29q61 100 158 211l174 196q74 80 133 187q57 102 57 202q0 80 -41 125q-39 43 -145 43q-206 0 -326 -80q-14 35 -14 86q0 16 43 41t129 43.5t184 18.5q170 0 232 -64q63 -68 63 -204q0 -111 -59 -226 q-57 -111 -136 -198l-182 -209q-111 -127 -170 -222h379l209 9q0 -115 -20 -115h-709q-8 14 -8 43z" />
+<glyph unicode="3" d="M100 -115q0 45 15 88q82 -70 217 -69q152 0 244 116.5t92 292.5q0 57 -19 101q-16 41 -51 67q-33 27 -76 41q-39 14 -90 21q-10 2 -100 6l-2 76q287 160 286 342q0 154 -182 153q-199 0 -317 -82q-12 27 -13 84q0 23 39 47.5t125 42.5q74 16 189 17q285 0 284 -238 q0 -199 -245 -370q131 -12 211 -84q82 -74 81 -224q0 -233 -126 -376q-125 -141 -334 -142q-106 0 -168 29q-60 28 -60 61z" />
+<glyph unicode="4" d="M78 403q0 102 155 394q160 297 299 422q20 18 54 18q27 0 61 -14l-6 -801l176 4l4 -43q0 -68 -37 -68h-143v-274q0 -29 -14 -37q-8 -4 -99 -4v315h-419q-31 31 -31 88zM180 422h348l19 661q-104 -115 -217 -307q-109 -186 -150 -354z" />
+<glyph unicode="5" d="M80 -123q0 53 14 94q76 -70 221 -69q186 0 272.5 133t86.5 348q0 311 -361 311q-39 0 -77 -6q-10 -2 -32 -4t-30 -4l-49 -12q-25 -6 -27 -6l58 567h626q0 -66 -10 -86q-8 -16 -53 -17l-465 4l-39 -354q55 14 143 15q70 2 140 -11q55 -10 137 -53q72 -37 115 -123t43 -207 q0 -602 -474 -602q-78 0 -133 14.5t-82 34.5q-24 19 -24 33z" />
+<glyph unicode="6" d="M78 608q0 224 37 387q37 160 102 258q63 94 150 140q84 43 182 43q223 0 223 -62q0 -39 -10 -80q-92 35 -213 35q-152 0 -252 -155q-98 -154 -111 -463q100 186 320 186q141 0 225 -98q84 -100 84 -299q0 -518 -389 -518q-86 0 -151.5 30.5t-102.5 79.5t-59 135 q-20 78 -27 170q-8 115 -8 211zM186 588q-3 -249 50 -375q53 -127 194 -127q131 0 203 106.5t72 280.5q0 317 -230 318q-181 0 -289 -203z" />
+<glyph unicode="7" d="M106 1229h738q-436 -717 -557 -1403q-115 0 -115 29q71 372 215 718q147 354 289 555q-111 -4 -535 -4q-35 1 -35 105z" />
+<glyph unicode="8" d="M82 371q0 132 74 239q72 106 184 162q-86 49 -131 90q-113 82 -113 238q0 170 100.5 258t252.5 88q356 0 356 -330q0 -207 -246 -354q76 -49 127 -92q133 -123 133 -299q0 -178 -92 -282.5t-264 -104.5q-190 0 -287 106q-94 103 -94 281zM188 377q0 -129 70 -207 q70 -80 199 -80q119 0 186 78q68 77 68 203q0 141 -121 245q-49 43 -141 97q-113 -41 -187 -133t-74 -203zM207 1106q0 -123 112 -201q25 -18 140 -86q240 117 239 293q0 127 -71 176q-74 51 -168 51q-109 0 -180.5 -59t-71.5 -174z" />
+<glyph unicode="9" d="M74 729q0 520 389 520q209 0 276 -139q70 -141 72 -485q-2 -424 -129 -631q-125 -205 -387 -205q-172 0 -172 49q0 51 8 76q68 -18 154 -18q385 0 415 616q-100 -186 -311 -186q-139 0 -227 102t-88 301zM184 748q0 -156 61.5 -236t174.5 -80q170 0 285 203v4 q0 131 -9 205q-10 86 -32 155q-25 76 -72 111t-127 35q-281 0 -281 -397z" />
+<glyph unicode=":" horiz-adv-x="366" d="M100 82q0 41 23 65q25 27 63 27q90 0 90 -92q0 -37 -24 -66q-25 -27 -66 -26q-86 0 -86 92zM100 791q0 41 23 65q25 27 63 27q90 0 90 -92q0 -37 -24 -66q-25 -27 -66 -27q-86 1 -86 93z" />
+<glyph unicode=";" horiz-adv-x="366" d="M86 -184q58 95 61 190q-41 25 -41 82q0 35 23 62q20 23 59 22q84 0 84 -96q0 -88 -55 -192.5t-84 -104.5q-39 0 -47 37zM102 791q0 37 25 65q25 27 61 27q90 0 91 -92q0 -37 -25 -66q-25 -27 -66 -27q-86 1 -86 93z" />
+<glyph unicode="&#x3c;" horiz-adv-x="817" d="M90 532q0 43 39 64l549 268q39 -37 39 -76q0 -27 -21 -34l-458 -226l487 -213q-4 -41 -18.5 -65.5t-34.5 -24.5q-10 0 -47 15l-514 225q-21 26 -21 67z" />
+<glyph unicode="=" d="M86 348v49q0 18 2 29q4 18 8 20q8 4 17 5h690q0 -59 -4 -84q-3 -18 -25 -19h-688zM86 705v49q0 20 2 30q4 16 8 19q8 4 17 4h690q0 -59 -4 -84q-3 -18 -25 -18h-688z" />
+<glyph unicode="&#x3e;" horiz-adv-x="817" d="M98 762q0 35 17 63q14 27 35 27q12 0 49 -14l514 -226q18 -31 18 -67q0 -45 -39 -64l-549 -270q-39 39 -39 76q0 29 21 37l459 225z" />
+<glyph unicode="?" horiz-adv-x="602" d="M51 1370q0 31 76 57q74 27 166 27q127 0 207 -67.5t80 -223.5q0 -80 -29 -159q-27 -72 -64 -127q-12 -18 -42.5 -58.5l-38.5 -50.5q-47 -63 -66 -96q-39 -59 -39 -140q0 -37 4 -57q6 -37 8 -39q4 -10 0 -20q-18 -23 -102 -13q-23 55 -23 125q0 96 48 179q20 37 90 131 q66 88 98 155q35 74 35 152q0 197 -197 196q-120 0 -196 -61q-15 31 -15 90zM178 82q0 41 23 65q25 27 63 27q90 0 90 -92q0 -37 -24 -66q-25 -27 -66 -26q-86 0 -86 92z" />
+<glyph unicode="@" horiz-adv-x="1542" d="M109 541q0 451 190 655q190 207 528 207q311 0 463 -160q150 -158 150 -518q0 -199 -27 -334q-29 -145 -63 -213q-37 -72 -86 -115q-43 -39 -84 -49q-37 -10 -68 -10q-78 0 -129 51q-78 -53 -227 -53q-123 -2 -195 61q-66 61 -63 248q2 180 86 254q83 74 221 74 q80 0 125 -16q0 23 1 66.5t3 62.5q2 90 -39 124.5t-125 34.5q-133 0 -219 -49q-12 25 -12 64q0 23 18 35q78 49 250 49q120 0 178 -56q57 -53 53 -186l-12 -440l-4 -94.5t-4 -73t-2 -31.5q40 -25 86 -25q25 0 49 13q20 10 57 53q31 37 58 102q25 61 43 174q18 114 18 259 q0 326 -113 458q-115 137 -389 137q-297 0 -450.5 -178t-153.5 -594q0 -215 27 -356q29 -152 74 -235q47 -88 120 -136q80 -51 154 -65q72 -14 188 -15q260 0 480 107q31 -52 30 -86q0 -25 -57 -51q-61 -29 -180 -53.5t-262 -24.5q-94 0 -158 6q-61 6 -143 29 q-77 22 -129 61q-53 41 -104.5 106.5t-82.5 166.5q-35 111 -51 237q-18 142 -18 322zM604 307q-4 -133 37 -174q43 -43 127 -43q55 0 100 25q43 23 47 65l13 367q-51 10 -101 10q-106 0 -163 -55q-56 -54 -60 -195z" />
+<glyph unicode="A" horiz-adv-x="890" d="M14 2l387 1421q4 18 39 19q31 0 49 -6l388 -1409q4 -16 -6.5 -22.5t-41.5 -6.5q-49 0 -67 2l-103 395h-426l-94 -372q-3 -25 -55 -25q-33 0 -70 4zM260 500h371l-99 379q-78 305 -86 401q-16 -137 -88 -401z" />
+<glyph unicode="B" horiz-adv-x="800" d="M113 0v1399q0 35 51 35h205q342 0 342 -312q0 -162 -62 -241q-59 -78 -139 -90q43 -4 76 -15q35 -12 78 -45q45 -35 67 -92q25 -61 25 -150q0 -121 -27 -206q-28 -89 -67 -142q-41 -53 -95 -86q-47 -29 -104 -43q-49 -12 -101 -12h-249zM225 102h137q117 0 191 88 q74 89 74 289q0 86 -19 139q-18 49 -59 76q-40 25 -80 31q-39 6 -107 6h-137v-629zM225 829h154q211 0 211 273q0 231 -219 231h-146v-504z" />
+<glyph unicode="C" horiz-adv-x="720" d="M80 649q0 205 24 359q25 156 62 237q37 84 92 133q53 47 107 64q45 14 112 14q94 0 141 -33q49 -35 50 -69q0 -37 -21 -70q-70 63 -153 64q-49 0 -86 -13q-39 -12 -80 -57q-43 -47 -70 -116.5t-45 -205.5q-16 -117 -16 -309q0 -156 20 -282q18 -113 55 -168.5t76 -76 t92 -20.5q70 0 125 27q59 29 88 63q20 -35 21 -71q0 -49 -76 -96q-72 -45 -178 -46q-55 0 -101 11q-41 10 -90 49q-51 41 -79 108q-27 61 -50 197q-20 123 -20 307z" />
+<glyph unicode="D" horiz-adv-x="845" d="M115 0v1399q0 35 51 35h205q203 0 301 -148q96 -143 96 -493q0 -244 -29 -394q-33 -166 -88 -245q-61 -86 -125 -119q-70 -35 -164 -35h-247zM227 109h138q41 0 84 14q35 12 75 55q39 41 64 117q27 78 41 203q16 137 16 303q0 287 -65.5 407.5t-210.5 120.5h-142v-1220z " />
+<glyph unicode="E" horiz-adv-x="688" d="M117 0v1405q0 29 26 29h490q0 -98 -10 -103q-2 -2 -11 -2h-385v-493h361q0 -76 -2 -88q-2 -16 -23 -17h-336v-627h404q0 -80 -2 -90q-2 -14 -23 -14h-489z" />
+<glyph unicode="F" horiz-adv-x="667" d="M117 0v1405q0 29 26 29h490q0 -92 -10 -99q-2 -2 -11 -2h-385v-495h361q0 -78 -2 -90q-2 -16 -23 -17h-336v-704q2 -27 -24 -27h-86z" />
+<glyph unicode="G" horiz-adv-x="815" d="M74 694q0 229 30 383q33 162 89 234q63 82 135 112q74 31 178 31q90 0 153 -29q61 -29 62 -65q0 -31 -16 -70q-71 55 -179 56q-113 0 -182.5 -51.5t-110 -199t-40.5 -395.5q0 -184 20 -323q18 -131 57 -187q41 -59 82 -79.5t109 -20.5q65 0 110 25q45 23 58 53v551h-201 v69q0 27 31 27h276v-721q-109 -115 -278 -114q-74 0 -133 16q-57 16 -107 61q-45 43 -78 127q-27 70 -47 207q-18 125 -18 303z" />
+<glyph unicode="H" d="M113 0v1405q0 23 14 25q20 4 98 4v-600h434v571q0 23 15 25q20 4 98 4v-1407q0 -20 -14 -23q-20 -4 -99 -4v727h-434v-700q0 -20 -14 -23q-20 -4 -98 -4z" />
+<glyph unicode="I" horiz-adv-x="335" d="M111 0v1376q0 45 16 51q15 6 98 7v-1407q0 -20 -14 -23q-20 -4 -100 -4z" />
+<glyph unicode="J" horiz-adv-x="616" d="M43 88q0 37 20 70q72 -74 173 -74q53 0 85.5 20.5t47.5 65.5q18 53 20 90q4 57 4 117v1001q0 43 15 49t98 7v-1090q0 -78 -4 -108q-8 -57 -21 -99q-14 -47 -43 -82q-27 -31 -76 -53q-51 -23 -114 -22q-100 0 -152 32q-53 35 -53 76z" />
+<glyph unicode="K" horiz-adv-x="802" d="M111 0v1405q0 23 14 25q20 4 98 4v-625l412 618q29 6 72 7q50 0 49 -21q0 -8 -6 -18l-412 -586q52 -33 118.5 -105.5t135.5 -174.5t115.5 -238t46.5 -268q0 -12 -6 -17q-12 -8 -37 -8q-57 0 -74 2q-83 280 -153.5 430.5t-159.5 239.5q-35 35 -101 65v-708q0 -20 -14 -23 q-20 -4 -98 -4z" />
+<glyph unicode="L" horiz-adv-x="671" d="M113 0v1393q0 31 14 37q10 4 100 4v-1328h406v-79q0 -27 -29 -27h-491z" />
+<glyph unicode="M" horiz-adv-x="1017" d="M113 0v1405q0 29 26 29h76l223 -719l72 -246l70 240l215 696q10 29 28 29h86v-1407q0 -20 -14 -23q-20 -4 -100 -4l4 592l18 577l-153 -512l-119 -348q-6 -18 -23 -18h-53l-115 366l-30 97l-66 215l-57 192q16 -377 20 -555l2 -579q0 -20 -14 -23q-20 -4 -96 -4z" />
+<glyph unicode="N" horiz-adv-x="931" d="M113 0v1405q0 29 26 29h80l246 -566q63 -172 254 -647q-10 170 -10 699v485q0 23 14 25q20 4 98 4v-1407q0 -27 -26 -27h-78l-252 575q-45 102 -250 642q8 -270 8 -689v-501q0 -18 -12 -23q-16 -4 -98 -4z" />
+<glyph unicode="O" horiz-adv-x="911" d="M78 727q0 391 94 559t299 168q200 0 283 -160q82 -158 82 -565q0 -414 -91 -579q-92 -170 -296.5 -170t-286.5 161q-84 164 -84 586zM203 692q0 -326 55 -461t195 -135q141 0 202 144q59 139 60 491q0 338 -55.5 473t-192.5 135q-135 0 -201 -149q-63 -146 -63 -498z" />
+<glyph unicode="P" horiz-adv-x="755" d="M113 0v1405q0 29 26 29h213q358 0 359 -390q0 -224 -99 -331q-98 -106 -268 -107h-121v-579q0 -18 -12 -23q-16 -4 -98 -4zM223 713h129q236 0 236 340q0 279 -226 278h-139v-618z" />
+<glyph unicode="Q" horiz-adv-x="911" d="M78 727q0 391 94 559t299 168q200 0 283 -160q82 -158 82 -565q0 -356 -68 -528q-70 -176 -219 -209q14 -90 45 -131q29 -39 80 -39q74 0 133 35q18 -25 18 -62q0 -33 -55 -51t-117 -18q-90 0 -145 59q-55 57 -86 195q-127 6 -199 75q-72 68 -108 230q-37 159 -37 442z M203 692q0 -326 55 -461t195 -135q141 0 202 144q59 139 60 491q0 338 -55.5 473t-192.5 135q-135 0 -201 -149q-63 -146 -63 -498z" />
+<glyph unicode="R" horiz-adv-x="774" d="M113 0v1405q0 29 26 29h213q358 0 359 -390q0 -326 -211 -411q172 -225 207 -602q2 -16 -9 -25q-8 -4 -47 -8q-47 0 -63 2q-43 414 -199 608q-10 -2 -45 -2h-121v-579q0 -18 -12 -23q-16 -4 -98 -4zM223 713h129q236 0 236 336q0 283 -226 282h-139v-618z" />
+<glyph unicode="S" horiz-adv-x="753" d="M68 88q0 43 32 80q76 -74 230 -74q246 0 245 250q0 80 -32 156q-31 70 -111 155l-221 232q-139 158 -139 291q0 125 92 200q90 76 252 76q131 0 192 -27q66 -29 66 -63q0 -37 -31 -68q-74 55 -219 56q-104 0 -170 -47q-63 -45 -64 -125q0 -94 113 -222l244 -251 q86 -92 115 -168q33 -86 32 -185q0 -170 -86 -272t-270 -102q-125 0 -199 34q-71 35 -71 74z" />
+<glyph unicode="T" horiz-adv-x="749" d="M14 1327v78q0 29 27 29h696v-80q0 -27 -26 -27h-283v-1300q0 -20 -14 -23q-20 -4 -99 -4v1327h-301z" />
+<glyph unicode="U" horiz-adv-x="935" d="M113 440v965q0 23 14 25q20 4 100 4v-998q0 -51 4 -112q2 -35 21 -93q15 -49 43 -79q25 -27 74 -48q45 -18 114 -18q143 0 230 43v1278q0 20 14 23q20 4 100 4v-1383q-47 -31 -141 -51t-203 -20q-92 0 -168 26q-70 25 -108 64q-37 37 -60 104q-23 70 -28 123 q-6 59 -6 143z" />
+<glyph unicode="V" horiz-adv-x="860" d="M12 1425q2 8 25 9h90l227 -897q35 -152 86 -435q45 279 80 435l207 856q6 41 33 41h92l-350 -1446q-74 -6 -88 -6q-43 0 -74 120l-326 1293q-3 12 -3 21q0 5 1 9z" />
+<glyph unicode="W" horiz-adv-x="1314" d="M12 1395q-1 7 -1 12q0 27 26 27h90l188 -899q35 -186 62 -398h8q12 160 55 398l158 784q6 39 33 39h80l180 -823q23 -117 27 -140l6 -42.5t8 -53.5t6 -47q2 -25 7 -62.5t7 -50.5h9q23 205 55 396l168 858q6 41 33 41h92l-289 -1446q-49 -6 -88 -6q-37 0 -62 104l-153 664 q-16 72 -62 389l-57 -387l-160 -764q-70 -4 -94 -4q-37 0 -61 122z" />
+<glyph unicode="X" horiz-adv-x="870" d="M20 0l345 743l-289 670q-6 16 10 19q12 2 119 2l104 -248q70 -162 137 -346q92 233 142 346l98 227q6 16 21 19q10 2 106 2l-297 -691l332 -720q3 -6 3 -11q0 -12 -20 -12h-116l-140 307l-143 338q-68 -170 -145 -336l-140 -295q-8 -14 -28 -14h-99z" />
+<glyph unicode="Y" horiz-adv-x="737" d="M12 1415q-2 4 -1 7q0 7 14 10q10 2 114 2l99 -293q43 -115 86 -262q49 -166 53 -193q14 106 139 457l90 270q2 12 21 17q20 4 102 4l-299 -848v-559q0 -18 -14 -23q-16 -4 -99 -4v582z" />
+<glyph unicode="Z" horiz-adv-x="802" d="M47 45q0 29 10 55l564 1231h-435q-55 0 -84 -4v78q0 29 29 29h610q12 -16 13 -39q0 -27 -13 -58l-569 -1235h461q78 0 108 13v-88q0 -27 -26 -27h-649q-19 16 -19 45z" />
+<glyph unicode="[" horiz-adv-x="847" d="M305 -406v2046q0 27 14 33q20 8 74 8h436q0 -66 -8 -86q-6 -16 -39 -16h-364v-1878h409q0 -74 -10 -90.5t-39 -16.5h-473z" />
+<glyph unicode="\" horiz-adv-x="618" d="M23 1532q-6 25 12 31q12 4 96 4l467 -1598q6 -23 -12 -26q-25 -4 -97 -4z" />
+<glyph unicode="]" horiz-adv-x="847" d="M20 -410q0 71 7 86q6 16 41 17h364v1884h-409q0 74 10 90t39 16h473v-2052q0 -29 -14.5 -35t-75.5 -6h-435z" />
+<glyph unicode="^" horiz-adv-x="878" d="M117 494l329 299l291 -267q20 -18 21 -37q0 -23 -17 -38q-14 -14 -41 -19l-264 215l-221 -190q-33 -23 -45 -23q-23 0 -37 17q-12 16 -16 43z" />
+<glyph unicode="_" horiz-adv-x="782" d="M33 -193q0 59 4 84q3 18 24 19h689v-49q0 -20 -2 -31q-2 -14 -10.5 -18.5t-14.5 -4.5h-690z" />
+<glyph unicode="`" horiz-adv-x="329" d="M0 1411q2 20 20 57q16 31 33 31q2 0 133 -108q117 -96 146 -131q-23 -66 -43 -66q-2 0 -139 102q-140 105 -150 115z" />
+<glyph unicode="a" horiz-adv-x="749" d="M74 285q0 104 24 174q23 68 72 102q45 33 94 45t115 12q109 0 168 -24v180q0 92 -41 127t-121 35q-184 0 -295 -51q-16 33 -16 65q0 29 16 41q35 23 125 37q98 16 197 16q125 0 186 -57q59 -55 59 -190v-123q0 -324 -10 -621q-119 -74 -278 -73q-39 0 -88 4 q-31 2 -78 22.5t-68 48.5q-27 35 -43 90q-18 60 -18 140zM190 289q0 -72 15 -115q16 -47 45 -65q31 -18 59 -25q27 -6 76 -6q104 0 152 45q10 160 10 387q-53 20 -133 20q-104 0 -164 -47t-60 -194z" />
+<glyph unicode="b" horiz-adv-x="819" d="M119 41v1409q0 37 20 47q16 8 92 8v-544q106 84 254 83q131 -2 199 -92q70 -92 70 -301q0 -178 -27 -299q-29 -131 -65 -196q-39 -70 -95 -113q-47 -37 -104 -51q-49 -12 -109 -12q-157 0 -235 61zM231 119q39 -37 138 -37q262 0 262 539q0 180 -45 249.5t-150 69.5 q-125 0 -205 -80v-741z" />
+<glyph unicode="c" horiz-adv-x="675" d="M82 489q0 141 24 246q25 106 58 162q34 58 86 92q57 37 96 45q51 10 105 10q74 0 123 -24.5t49 -56.5q0 -37 -15 -68q-70 47 -159 47q-43 0 -70 -8q-31 -9 -68 -37q-33 -25 -59 -74q-23 -41 -39 -135q-16 -92 -16 -205q0 -237 55 -319t168 -82q121 0 188 61 q14 -31 15 -65q0 -37 -68 -67.5t-166 -30.5q-74 0 -127 18q-51 18 -94 70q-45 53 -66 157q-20 100 -20 264z" />
+<glyph unicode="d" horiz-adv-x="821" d="M84 483q0 281 94 420q95 141 246 141q104 0 168 -45v451q0 39 20 47q18 8 95 8v-1464q-121 -61 -291 -61q-76 0 -131 16q-51 16 -103 65q-49 49 -73 152q-25 104 -25 270zM205 494q0 -174 31 -267q31 -94 73 -118q41 -23 117 -27q102 0 168 41l-2 780q-53 41 -135 41 q-109 0 -180.5 -108.5t-71.5 -341.5z" />
+<glyph unicode="e" horiz-adv-x="768" d="M78 457q0 145 22 262q22 111 56 172q33 57 86 96t98 47q51 10 104 10q258 0 258 -323q0 -156 -20 -246q-182 -37 -489 -37q0 -137 32 -223q31 -78 78 -102q45 -23 129 -23q150 0 246 70q14 -35 14 -80q0 -37 -84 -68q-88 -33 -194 -32q-80 0 -135 18q-57 18 -104.5 65.5 t-72 145.5t-24.5 248zM195 532q270 0 389 29q8 57 8 137q-2 127 -37 187q-33 57 -121 57q-49 0 -80 -14q-39 -18 -71 -54q-35 -37 -60 -124q-26 -91 -28 -218z" />
+<glyph unicode="f" horiz-adv-x="505" d="M31 926q0 63 4 84q2 14 26 14h125v129q0 96 21 160q20 66 53 104q25 31 80 60q45 25 88 30q40 6 92 6q176 0 176 -63q0 -25 -12 -64q-68 25 -152 25q-51 0 -83 -8q-45 -10 -74 -31q-37 -25 -56 -78q-20 -61 -20 -137v-133h213q0 -63 -4 -84q-2 -14 -25 -14h-184v-899 q0 -27 -29 -27h-84v926h-155z" />
+<glyph unicode="g" horiz-adv-x="823" d="M68 -186q0 72 49 139t119 119q-68 20 -103 45q-37 27 -33 63q0 78 129 180q-129 80 -129 314q0 184 93 276q94 94 245 94q43 0 92 -12h254q12 -31 13 -53q0 -45 -47 -45q-52 0 -111 12q113 -74 113 -254q0 -170 -80 -274q-78 -102 -252 -103q-74 0 -117 15 q-86 -71 -86 -117q0 -47 297 -84q135 -18 203 -66q72 -49 71 -159q0 -127 -102 -217t-295 -90q-323 0 -323 217zM182 -164q0 -68 45 -100q47 -35 174 -35q131 0 201 57q72 59 72 131q0 78 -53 109q-47 29 -177 41q-102 12 -114 14q-59 -41 -103 -102q-45 -64 -45 -115z M217 676q0 -131 43 -199q45 -70 168 -69q104 0 158 86q53 88 53 221q0 242 -205 241q-96 0 -158 -71q-59 -68 -59 -209z" />
+<glyph unicode="h" horiz-adv-x="808" d="M111 0v1450q0 37 20 47q16 8 92 8v-549q109 88 260 88q137 0 186.5 -67.5t49.5 -206.5v-743q0 -20 -14 -23q-20 -4 -101 -4v745q0 92 -35 144q-34 49 -129 49q-129 0 -217 -82v-829q0 -20 -14 -23q-20 -4 -98 -4z" />
+<glyph unicode="i" horiz-adv-x="348" d="M113 1370q0 94 67 94q63 0 64 -92q-4 -96 -70 -96q-63 0 -61 94zM117 0v969q0 39 20 47q18 8 96 8v-997q0 -18 -16 -23q-20 -4 -100 -4z" />
+<glyph unicode="j" horiz-adv-x="370" d="M-231 -305q0 39 18 63q90 -53 197 -53q94 0 120 55q27 53 27 187v1022q0 39 19 47q16 8 94 8v-1100q0 -156 -53.5 -239.5t-198.5 -83.5q-102 0 -164 28q-59 29 -59 66zM127 1370q0 94 68 94q63 0 63 -92q-4 -96 -70 -96q-63 0 -61 94z" />
+<glyph unicode="k" horiz-adv-x="800" d="M117 0v1450q0 37 20 47q16 8 92 8v-585q59 59 139.5 91.5t149.5 32.5q180 0 180 -180q0 -61 -24.5 -120.5t-65.5 -100.5q-40 -40 -67 -61q-33 -25 -58 -39q82 -14 156 -92q72 -76 94 -220q6 -43 6 -94t-6 -108q-4 -25 -20 -27q-10 -2 -107 -2q8 57 8 127q0 98 -18 162 q-35 117 -104 157q-50 29 -101 30q-20 0 -41 -5l-121 -45v-399q0 -18 -14 -23q-16 -4 -98 -4zM229 514q346 119 346 322q0 104 -104 104q-131 0 -242 -131v-295z" />
+<glyph unicode="l" horiz-adv-x="346" d="M117 0v1450q0 37 18 47q16 8 94 8v-1478q0 -20 -14 -23q-20 -4 -98 -4z" />
+<glyph unicode="m" horiz-adv-x="1210" d="M117 0v977q154 68 303 67q141 0 196 -73q113 74 261 73q141 0 186 -69q43 -68 43 -227v-721q0 -20 -14 -23q-20 -4 -99 -4v754q0 109 -26 147q-29 41 -109 41q-104 0 -188 -55v-860q0 -18 -11 -23h-2q-16 -4 -100 -4v801q-3 77 -31 110q-27 33 -108 33q-92 0 -189 -45 v-872q0 -18 -16 -23q-20 -4 -96 -4z" />
+<glyph unicode="n" horiz-adv-x="819" d="M113 0v973q168 72 331 71q158 0 220 -65q61 -65 61 -215v-737q0 -20 -14 -23q-20 -4 -101 -4v733q0 117 -34.5 164t-135.5 47q-125 0 -215 -47v-870q0 -20 -14 -23q-20 -4 -98 -4z" />
+<glyph unicode="o" horiz-adv-x="782" d="M63 510q0 535 343 534q164 0 241 -114q76 -113 76 -418q0 -532 -340 -532q-83 0 -135 18q-55 18 -98 72q-43 51 -66 163q-21 103 -21 277zM184 502q0 -164 27 -266q25 -96 65 -127t111 -31q215 0 215 438q0 254 -47 340q-49 88 -154 88q-106 0 -161.5 -98t-55.5 -344z " />
+<glyph unicode="p" horiz-adv-x="817" d="M117 -356v1319q131 82 295 81q168 0 254 -96q84 -92 84 -336q0 -154 -23 -278q-20 -115 -57 -184q-35 -66 -82 -107q-43 -37 -88 -51q-40 -12 -86 -12q-126 0 -185 73v-448q-33 -8 -59 -8q-53 0 -53 47zM229 176q55 -94 154 -94q244 6 244 508q0 209 -52 280 q-51 74 -169 74q-100 0 -177 -51v-717z" />
+<glyph unicode="q" horiz-adv-x="833" d="M82 453q0 301 110.5 446t303.5 145q135 0 223 -63v-1337q0 -33 -12 -41q-10 -8 -58 -9h-24q-6 0 -12.5 1.5t-8.5 1.5v491q-74 -109 -229 -108q-293 0 -293 473zM205 451q0 -369 209 -369h9q53 0 101 31q52 34 80 98v696q-47 37 -133 37q-266 1 -266 -493z" />
+<glyph unicode="r" horiz-adv-x="561" d="M113 0v954q133 90 274 90q147 0 148 -71q0 -37 -17 -68q-51 31 -115 31q-100 0 -176 -57v-852q0 -20 -14 -23q-20 -4 -100 -4z" />
+<glyph unicode="s" horiz-adv-x="751" d="M80 68q0 35 24 69q90 -53 224 -53q221 0 221 158q0 113 -115 198l-215 156q-82 57 -108.5 104.5t-26.5 110.5q0 109 88 170q92 63 246 63q80 0 151 -20q63 -18 86 -40.5t23 -41.5q0 -35 -27 -63q-102 66 -223 65q-96 0 -155.5 -35t-59.5 -98q0 -76 100 -143l222 -158 q139 -115 139 -254q0 -135 -88 -205q-90 -72 -248 -71q-113 0 -188 26q-70 25 -70 62z" />
+<glyph unicode="t" horiz-adv-x="608" d="M55 924q0 63 4 84q4 16 23 16h125v324q0 33 18.5 39t93.5 6v-369h248q0 -63 -4 -84q-4 -16 -20 -16h-224v-629q0 -59 5 -113q2 -37 26 -71q23 -31 64 -31q66 0 133 33q8 -31 8 -60q0 -37 -47 -55q-49 -18 -119 -18q-59 0 -98 22q-37 23 -55 70q-16 43 -23 96 q-6 49 -6 129v627h-152z" />
+<glyph unicode="u" horiz-adv-x="849" d="M119 346v649q0 25 14 27q10 2 100 2v-692q0 -147 39 -199q41 -53 158 -53q111 0 188 47v868q0 23 15 25q20 4 98 4v-973q-139 -72 -311 -71.5t-238 83.5q-63 82 -63 283z" />
+<glyph unicode="v" horiz-adv-x="727" d="M53 987q-3 9 -3 15q0 13 11 18q10 4 107 4l88 -356q37 -143 57 -244l43 -215l17 -82h2q47 281 108 543l80 325q3 22 19 25q20 4 98 4l-262 -1036q-45 -4 -76 -4q-23 0 -51 102z" />
+<glyph unicode="w" horiz-adv-x="1130" d="M49 995q-3 22 12 25q20 4 107 4l82 -373q57 -283 96 -510h6q16 94 88 445l72 375q4 29 39 28h74l88 -407q4 -14 21.5 -87t25.5 -116l19.5 -96.5l15.5 -77.5l10 -64h8q15 163 86 510l70 344q2 20 20 25q20 4 94 4q-227 -1036 -233 -1036q-45 -4 -70 -4q-14 0 -32 30 q-16 27 -29 82l-33 142q-70 287 -119 571q-57 -346 -110 -573l-56 -248q-78 -4 -88 -4q-29 0 -49 100z" />
+<glyph unicode="x" horiz-adv-x="892" d="M45 0l332 537l-285 467q-6 16 10 18q12 2 109 2l104 -164l140 -244l143 248l92 140q10 16 23 18q10 2 106 2l-297 -479l320 -516q7 -10 7 -17t-9 -8q-20 -4 -121 -4l-107 164q-71 114 -172 295q-20 -39 -170 -297l-92 -139q-8 -14 -28 -19q-25 -4 -105 -4z" />
+<glyph unicode="y" horiz-adv-x="755" d="M2 -334q0 39 21 66q61 -29 124 -29q127 0 187 264l-266 1022q-6 29 8 31q20 4 100 4l154 -602l59 -318q18 141 55 320l138 565q3 28 18 31q20 4 102 4l-270 -1087q-47 -182 -110 -256q-66 -76 -170 -76q-150 0 -150 61z" />
+<glyph unicode="z" horiz-adv-x="743" d="M59 57q0 25 13 45l481 824h-248q-166 0 -231 -11q-4 37 -4 56q0 53 36 53h566q12 -12 12 -37q0 -33 -14 -59l-477 -822h237q184 0 248 17q2 -8 2 -53q0 -70 -43 -70h-557q-21 18 -21 57z" />
+<glyph unicode="{" horiz-adv-x="581" d="M106 606q0 43 31 62q39 23 53 37q18 18 33 55t15 104q0 90 -14.5 219t-14.5 201q0 240 317 240q23 -35 23 -70q0 -37 -29 -41q-94 -2 -145 -45q-51 -41 -51 -133q0 -43 12 -174q12 -132 12 -221q0 -174 -121 -224q57 -20 90 -65q31 -43 31 -127q0 -90 -12 -225.5 t-12 -188.5q0 -131 47 -168q47 -39 164 -47q6 -28 6 -43q0 -59 -43 -59q-156 0 -222 63q-68 63 -67 211q0 78 14.5 205t14.5 219q0 80 -31 117q-29 35 -92 47q-9 22 -9 51z" />
+<glyph unicode="|" horiz-adv-x="722" d="M305 -410v2044q0 23 17 29q14 6 96 6v-2048q0 -23 -17 -27q-20 -4 -96 -4z" />
+<glyph unicode="}" horiz-adv-x="581" d="M37 -240q0 37 26 41q98 3 148 43q51 41 51 136q0 46 -12 178q-12 133 -12 219q0 98 30 147q29 47 90 76q-61 23 -90 64q-31 43 -30 129q0 90 12 225t12 188q0 127 -47 164q-49 39 -166 51q0 8 -1 18.5t-2 16.5t-1 8q0 59 41 60q156 0 221 -64q68 -63 68 -211 q0 -80 -14.5 -207t-14.5 -219q0 -80 31 -116q29 -35 92 -48q10 -25 10 -49q0 -41 -30 -63q-40 -22 -56 -37q-16 -16 -31 -53q-16 -43 -16 -107q0 -90 14.5 -219t14.5 -201q0 -238 -318 -237q-20 26 -20 67z" />
+<glyph unicode="~" horiz-adv-x="817" d="M25 535q33 49 96 88t151 39q71 0 148 -50q80 -51 139 -51q92 0 160 82q25 20 49 2q23 -16 29 -55q-90 -133 -248 -133q-76 0 -160 51q-80 49 -127 49q-41 0 -72 -14q-39 -18 -67 -41l-19.5 -15.5t-14.5 -10.5l-5 -3q-18 -8 -37 10q-20 21 -22 52z" />
+<glyph unicode="&#xa1;" horiz-adv-x="385" d="M111 948q0 41 24 66q27 27 66 26q86 0 86 -92q0 -41 -23 -65q-25 -27 -63 -27q-90 0 -90 92zM123 -406l18 1002q3 34 25 43q25 10 86 10l16 -1022q0 -20 -28 -26q-28 -7 -117 -7z" />
+<glyph unicode="&#xa2;" d="M186 461q0 524 291 575v217q0 31 25 43q20 10 78 11v-267q57 -4 102 -24.5t45 -38.5q0 -55 -14 -84q-70 45 -148 45q-51 0 -94 -16q-41 -16 -84 -62q-41 -45 -63 -147q-23 -106 -23 -252q0 -135 14 -207q16 -82 47 -115q33 -37 70 -45q41 -10 103 -10q96 0 178 63 q14 -27 14 -73q0 -29 -59 -60q-59 -33 -133 -34v-218q0 -31 -21 -38q-25 -10 -80 -11v271q-84 10 -133 43q-47 33 -82 141q-33 105 -33 293z" />
+<glyph unicode="&#xa3;" horiz-adv-x="782" d="M31 569v49q0 10 4 31q4 16 8 19q8 4 14 4h123q0 301 84 426q82 121 240 121q86 0 145.5 -27t59.5 -70q0 -37 -21 -71q-74 55 -168 55q-74 0 -119 -31q-47 -31 -77.5 -129t-30.5 -266v-8h301q0 -53 -4 -82q-2 -20 -25 -21h-272q0 -264 14 -456l375 -9q10 -37 10 -53 q0 -51 -112 -51h-381q-18 313 -19 569h-149z" />
+<glyph unicode="&#xa5;" d="M78 1415q-6 14 12 17q10 2 115 2l98 -293q37 -104 88 -267q47 -147 49 -167q4 53 138 436l94 270q2 12 20 17q20 4 103 4l-228 -641h201q0 -55 -8 -74q-8 -20 -39 -21h-189l-36 -108v-127h274q0 -57 -8 -74q-10 -20 -39 -20h-227v-342q0 -20 -15 -23q-20 -4 -98 -4v369 h-279q0 59 9 75q10 18 39 19h231v119l-43 116h-236q0 55 9 74q8 20 39 21h153z" />
+<glyph unicode="&#xa6;" horiz-adv-x="460" d="M174 -397v809q0 25 14.5 35t45 10t53.5 -8v-814q0 -29 -11 -32q-12 -6 -47 -6q-37 0 -55 6zM174 682v793q0 47 59 47q31 0 54 -9v-798q0 -25 -10.5 -33t-47.5 -8q-32 0 -55 8z" />
+<glyph unicode="&#xa7;" horiz-adv-x="749" d="M96 805q0 135 127 209l-20 22q-49 55 -66 92q-20 45 -20 93q0 100 82 161q80 59 219 60q86 0 149 -29q61 -27 74 -59q4 -12 4 -23q0 -39 -24 -69q-80 61 -197 61q-86 0 -133 -33q-49 -33 -49 -88q0 -51 69 -131q18 -20 121 -110q98 -86 135 -130q88 -94 88 -204 q0 -51 -32 -113q-31 -57 -95 -94l21 -23q53 -59 67 -92q18 -40 19 -92q0 -98 -82 -159.5t-217 -61.5q-88 0 -152 28q-61 29 -73 60q-4 8 -5 22q0 39 25 70q77 -61 197 -61q88 0 135 32.5t47 87.5q0 61 -70 131q-37 37 -118.5 109t-137.5 131q-88 101 -88 203zM203 799 q0 -74 69 -156q20 -27 174 -151q39 16 74 63q31 43 31 78q0 74 -72 158q-37 41 -174 149q-45 -14 -73.5 -59t-28.5 -82z" />
+<glyph unicode="&#xa8;" horiz-adv-x="448" d="M0 1329q0 37 20 60q20 25 60 24q40 0 61 -24q20 -23 21 -60q0 -35 -23 -61q-20 -23 -59 -23q-80 0 -80 84zM289 1329q0 33 22 60q20 25 58 24q40 0 61 -24q20 -23 21 -60q0 -35 -23 -61q-20 -23 -59 -23q-80 0 -80 84z" />
+<glyph unicode="&#xa9;" horiz-adv-x="948" d="M78 1106q0 451 409 450q197 0 293 -102q94 -100 94 -346q0 -219 -104 -336t-295 -117q-203 0 -301 99q-96 96 -96 352zM168 1100q0 -197 73.5 -277t225.5 -80q145 0 231 92.5t86 276.5q0 195 -73 279q-74 82 -222 82q-321 0 -321 -373zM311 1081q0 184 54 240 q55 59 139 59q31 0 61.5 -12t30.5 -22q0 -31 -14 -54q-35 20 -68 21q-59 0 -92 -45q-35 -47 -35 -189q0 -113 24.5 -143.5t82.5 -30.5q41 0 88 27q14 -27 14 -49q0 -14 -37 -29q-39 -16 -74 -16q-96 0 -135 44.5t-39 198.5z" />
+<glyph unicode="&#xaa;" horiz-adv-x="684" d="M100 838q0 143 64 194q66 53 178 53q76 0 143 -22v160q0 129 -147 129q-109 0 -207 -49q-15 15 -18 43q-4 29 10 43q76 66 248 65q213 0 213 -197v-608q-113 -57 -252 -57q-113 0 -172.5 47t-59.5 199zM195 831q0 -92 41 -122q40 -31 116 -31q86 0 133 31v268 q-49 20 -114 20q-90 0 -133 -31t-43 -135z" />
+<glyph unicode="&#xab;" horiz-adv-x="851" d="M57 522q0 25 76 150q63 104 154 237l75 115q18 0 35 -14q23 -18 27 -29l6 -14q0 -23 -65 -136q-59 -100 -134 -208l-65 -101q272 -403 272 -452q-27 -70 -65 -70q-316 463 -316 522zM391 512q0 20 76 141q41 66 149 224l76 104q12 0 35 -14q18 -12 27 -27l6 -14 q0 -27 -64 -129q-39 -61 -131 -195l-65 -90q266 -352 266 -399q-25 -68 -64 -68q-311 416 -311 467z" />
+<glyph unicode="&#xac;" horiz-adv-x="817" d="M68 553q0 25 12 39q12 16 29 16h622v-381q-18 -8 -55 -8q-53 0 -53 39v242h-545q-10 26 -10 53z" />
+<glyph unicode="&#xad;" horiz-adv-x="591" d="M88 526v49q0 20 2 31q4 16 8 19q8 4 17 4h391q0 -53 -4 -82q-2 -20 -25 -21h-389z" />
+<glyph unicode="&#xae;" horiz-adv-x="948" d="M78 1106q0 451 409 450q197 0 293 -102q94 -100 94 -346q0 -219 -104 -336t-295 -117q-203 0 -301 99q-96 96 -96 352zM168 1100q0 -197 73.5 -277t225.5 -80q145 0 231 92.5t86 276.5q0 195 -73 279q-74 82 -222 82q-321 0 -321 -373zM352 844v530q0 10 13 10h100 q170 0 170 -147q0 -111 -84 -152q80 -82 96 -225q0 -14 -22 -18l-3 1q-3 1 -7.5 1h-10.5h-24q-23 166 -97 225h-67v-209q0 -10 -10 -14q-6 -2 -41 -2h-13zM416 1128h47q104 0 104 109q0 90 -102 90h-49v-199z" />
+<glyph unicode="&#xaf;" horiz-adv-x="522" d="M0 1313q4 55 47 55h467q10 -25 10 -51q-2 -57 -45 -57h-473q-6 22 -6 53z" />
+<glyph unicode="&#xb0;" horiz-adv-x="757" d="M199 1335q0 186 192 187q88 0 133 -41q43 -39 43 -144q0 -92 -49 -139q-51 -47 -141 -47q-92 0 -133 39q-45 41 -45 145zM283 1331q0 -100 96 -100q106 0 106 106q0 104 -94 105q-108 0 -108 -111z" />
+<glyph unicode="&#xb1;" horiz-adv-x="884" d="M86 27v49q0 20 2 30q4 16 8 19q8 4 17 4h690q0 -57 -4 -82q-4 -20 -25 -20h-688zM88 573v50q0 20 2 30q4 16 8 19q8 4 17 4h280v278q0 22 19 25q25 4 84 4v-307h307q0 -59 -4 -84q-3 -18 -25 -19h-278v-280q0 -18 -19 -23q-25 -4 -84 -4v307h-307z" />
+<glyph unicode="&#xb2;" horiz-adv-x="819" d="M106 633q0 43 19 65q53 59 180 170q131 115 184 183q59 76 60 153q0 59 -35 99q-34 37 -123 36q-115 0 -235 -90q-25 33 -25 70q0 43 96 90q92 45 205 45q137 0 192.5 -59.5t55.5 -161.5q0 -74 -45 -150q-46 -77 -98 -129l-140 -133q-104 -98 -127 -123h439q8 -33 8 -49 q0 -57 -39 -57h-563q-9 14 -9 41z" />
+<glyph unicode="&#xb3;" horiz-adv-x="845" d="M125 672q0 39 31 63q78 -59 215 -59q111 0 174 45t63 125q0 55 -39 92q-41 39 -100 47q-41 8 -168 8q-12 14 -12 51q0 41 37 41q61 0 135 -8q106 70 106 162q0 43 -37 78q-39 35 -127 35q-138 0 -239 -80q-25 25 -25 55q0 33 17 41q90 86 284 86q131 0 189 -51 q59 -53 59 -133q0 -125 -115 -215q70 -25 109 -76q41 -53 41 -123q0 -139 -96 -213q-92 -72 -258 -72q-164 0 -228 58q-16 16 -16 43z" />
+<glyph unicode="&#xb4;" horiz-adv-x="329" d="M0 1249q74 74 119 113q94 82 110 94q45 35 50 35q18 0 34 -33q14 -31 19 -57q-14 -18 -111 -90q-102 -78 -176 -127q-10 0 -22 16q-6 8 -17 33z" />
+<glyph unicode="&#xb5;" horiz-adv-x="856" d="M119 -391v1376q0 49 55 49q37 0 55 -8v-760q0 -180 195 -180q106 0 201 41v856q0 27 12 39t43 12q37 0 55 -8v-979q-158 -68 -311 -67q-137 0 -195 73v-407q0 -45 -61 -45q-26 0 -49 8z" />
+<glyph unicode="&#x3bc;" horiz-adv-x="856" d="M119 -391v1376q0 49 55 49q37 0 55 -8v-760q0 -180 195 -180q106 0 201 41v856q0 27 12 39t43 12q37 0 55 -8v-979q-158 -68 -311 -67q-137 0 -195 73v-407q0 -45 -61 -45q-26 0 -49 8z" />
+<glyph unicode="&#xb6;" horiz-adv-x="1116" d="M88 864q0 293 107 439q109 150 299 149q135 0 237 -53v-1364q0 -41 -57 -41q-35 0 -53 8v422q-70 -35 -187 -35q-152 0 -250 109q-96 104 -96 366zM203 874q0 -387 258 -391q90 -4 157 37v805q-41 29 -139 29q-135 0 -205 -123q-71 -126 -71 -357zM885 2v1364q0 47 59 47 q18 0 53 -10v-1368q0 -22 -12 -31q-10 -8 -45 -8q-37 0 -55 6z" />
+<glyph unicode="&#xb7;" horiz-adv-x="423" d="M121 551q0 39 24.5 65.5t61.5 26.5q90 0 90 -92q0 -39 -24.5 -65.5t-65.5 -26.5q-86 0 -86 92z" />
+<glyph unicode="&#xb8;" horiz-adv-x="256" d="M0 -375q10 53 20 68q9 3 19 0q2 0 12 -5t19 -7q20 -6 41 -7q70 0 69 74q0 72 -67 72l-80 -13l39 199h73l-26 -129q4 4 37 4q41 0 71 -31q29 -29 29 -88q0 -78 -43 -118q-41 -39 -104 -39q-62 0 -109 20z" />
+<glyph unicode="&#xb9;" horiz-adv-x="833" d="M125 639q0 59 39 59h231v631l-250 -51q-14 20 -14 53q0 41 39 53q229 70 301 70q25 0 39 -6v-750h195q6 -27 6 -51q0 -55 -37 -55h-543q-6 27 -6 47z" />
+<glyph unicode="&#xba;" horiz-adv-x="710" d="M86 1020q0 217 76 328q74 106 207 106q135 0 196.5 -92t61.5 -340q0 -428 -279 -428q-133 0 -198 90q-64 88 -64 336zM184 1012q0 -186 39 -252q41 -70 125 -70q182 0 182 334q0 186 -38 256q-41 72 -121 72q-187 0 -187 -340z" />
+<glyph unicode="&#xbb;" horiz-adv-x="847" d="M88 111q0 49 266 401l-63 90q-82 117 -131 195q-66 100 -66 129q0 39 64 57q305 -420 305 -471q0 -25 -78 -143q-70 -106 -158 -222l-77 -104q-4 2 -17 6q-10 4 -27 21q-18 18 -18 41zM412 68q0 18 69 135l135 217l68 102q-264 391 -264 445q0 16 18 32q16 14 33 21l16 4 q305 -449 306 -502q0 -31 -78 -155q-92 -150 -160 -248l-78 -119l-18 6q-12 4 -29 21q-18 18 -18 41z" />
+<glyph unicode="&#xbc;" horiz-adv-x="1794" d="M125 639q0 59 39 59h231v631l-250 -51q-14 20 -14 53q0 41 39 53q229 70 301 70q25 0 39 -6v-750h195q6 -27 6 -51q0 -55 -37 -55h-543q-6 27 -6 47zM485 29l818 1401q8 27 36 26q41 0 76 -43l-819 -1411q-10 -18 -33 -18q-51 0 -78 45zM1012 205q0 27 14 63 q41 127 148 293q111 172 204 262q37 39 92 39q10 0 48 -6v-596h143q10 -27 10 -55q0 -53 -35 -53h-118v-123q0 -39 -62 -39q-20 0 -45 6v156h-383q-16 20 -16 53zM1122 254h291l4 467q-82 -76 -168 -209q-90 -141 -127 -258z" />
+<glyph unicode="&#xbd;" horiz-adv-x="1863" d="M125 639q0 59 39 59h231v631l-250 -51q-14 20 -14 53q0 41 39 53q229 70 301 70q25 0 39 -6v-750h195q6 -27 6 -51q0 -55 -37 -55h-543q-6 27 -6 47zM485 29l818 1401q8 27 36 26q41 0 76 -43l-819 -1411q-10 -18 -33 -18q-51 0 -78 45zM1133 41q0 45 18 65 q53 59 180 170q125 109 184.5 185t59.5 151q0 59 -35 99q-34 37 -123 37q-115 0 -235 -91q-25 35 -25 70q0 41 96 88q98 47 205 47q137 0 193 -59q55 -57 55 -162q0 -74 -45 -149q-46 -77 -98 -130q-53 -53 -140 -131q-96 -88 -127 -125h439q8 -33 8 -49q0 -57 -39 -57h-563 q-8 14 -8 41z" />
+<glyph unicode="&#xbe;" horiz-adv-x="1787" d="M125 672q0 39 31 63q78 -59 215 -59q111 0 174 45t63 125q0 55 -39 92q-41 39 -100 47q-41 8 -168 8q-12 14 -12 51q0 41 37 41q61 0 135 -8q106 70 106 162q0 43 -37 78q-39 35 -127 35q-138 0 -239 -80q-25 25 -25 55q0 33 17 41q90 86 284 86q131 0 189 -51 q59 -53 59 -133q0 -125 -115 -215q70 -25 109 -76q41 -53 41 -123q0 -139 -96 -213q-92 -72 -258 -72q-164 0 -228 58q-16 16 -16 43zM498 29l817 1401q8 27 37 26q41 0 75 -43l-819 -1411q-10 -18 -33 -18q-50 0 -77 45zM1006 205q0 27 14 63q41 127 147 293 q111 172 205 262q37 39 92 39q10 0 47 -6v-596h144q10 -27 10 -55q0 -53 -35 -53h-119v-123q0 -39 -61 -39q-20 0 -45 6v156h-383q-16 20 -16 53zM1116 254h291l4 467q-82 -76 -168 -209q-90 -141 -127 -258z" />
+<glyph unicode="&#xbf;" horiz-adv-x="616" d="M29 -109q0 78 28 160q25 70 64 127l82 111q51 70 65 94q37 63 37 139q0 14 -4 56q-4 33 -6 40q-4 10 0 21q18 29 102 12q23 -55 23 -125q0 -94 -47 -178q-41 -66 -90 -131q-61 -80 -101 -154q-35 -68 -35 -151q0 -199 199 -199q117 0 197 62q14 -37 14 -88q0 -29 -78 -58 q-80 -29 -164 -28q-125 0 -206 69q-80 67 -80 221zM254 946q0 37 25 66q25 27 65 26q86 0 86 -92q0 -37 -24 -65q-25 -27 -62 -27q-90 0 -90 92z" />
+<glyph unicode="&#xc0;" horiz-adv-x="890" d="M14 2l387 1421q4 18 39 19q31 0 49 -6l388 -1409q4 -16 -6.5 -22.5t-41.5 -6.5q-49 0 -67 2l-103 395h-426l-94 -372q-3 -25 -55 -25q-33 0 -70 4zM209 1821q2 20 20 57q16 31 33 31q2 0 133 -109q117 -96 146 -131q-23 -66 -43 -65q-2 0 -140 102q-139 105 -149 115z M260 500h371l-99 379q-78 305 -86 401q-16 -137 -88 -401z" />
+<glyph unicode="&#xc1;" horiz-adv-x="890" d="M14 2l387 1421q4 18 39 19q31 0 49 -6l388 -1409q4 -16 -6.5 -22.5t-41.5 -6.5q-49 0 -67 2l-103 395h-426l-94 -372q-3 -25 -55 -25q-33 0 -70 4zM260 500h371l-99 379q-78 305 -86 401q-16 -137 -88 -401zM362 1659q74 74 119 113l113 94q45 35 47 35q18 0 33 -31 q18 -35 20 -60q-18 -23 -110 -92l-176 -125q-8 0 -21 17q-10 12 -18 32z" />
+<glyph unicode="&#xc2;" horiz-adv-x="890" d="M14 2l387 1421q4 18 39 19q31 0 49 -6l388 -1409q4 -16 -6.5 -22.5t-41.5 -6.5q-49 0 -67 2l-103 395h-426l-94 -372q-3 -25 -55 -25q-33 0 -70 4zM195 1636l227 234q16 4 27 4q27 0 40 -19q199 -199 199 -219q0 -12 -26.5 -26.5t-57.5 -14.5q-141 147 -158 177 q-150 -174 -174 -175q-50 0 -77 39zM260 500h371l-99 379q-78 305 -86 401q-16 -137 -88 -401z" />
+<glyph unicode="&#xc3;" horiz-adv-x="890" d="M14 2l387 1421q4 18 39 19q31 0 49 -6l388 -1409q4 -16 -6.5 -22.5t-41.5 -6.5q-49 0 -67 2l-103 395h-426l-94 -372q-3 -25 -55 -25q-33 0 -70 4zM152 1688q84 139 208 139q45 0 95 -53q49 -51 92 -52q47 0 76 23q27 20 45 47q16 23 22 23q10 0 23 -17q10 -12 16 -33 l6 -16q-12 -27 -33 -53q-16 -20 -69 -54q-47 -29 -101 -28q-70 0 -114 53q-45 55 -78 55q-34 0 -61 -24q-29 -27 -43 -45q-16 -23 -25 -23q-32 1 -59 58zM260 500h371l-99 379q-78 305 -86 401q-16 -137 -88 -401z" />
+<glyph unicode="&#xc4;" horiz-adv-x="890" d="M14 2l387 1421q4 18 39 19q31 0 49 -6l388 -1409q4 -16 -6.5 -22.5t-41.5 -6.5q-49 0 -67 2l-103 395h-426l-94 -372q-3 -25 -55 -25q-33 0 -70 4zM223 1739q0 37 21 59q23 25 59 25q39 0 59 -23q23 -27 23 -61q0 -33 -23 -60q-23 -25 -59 -24q-80 0 -80 84zM260 500h371 l-99 379q-78 305 -86 401q-16 -137 -88 -401zM512 1739q0 37 20 59q20 25 60 25q41 0 61.5 -22.5t20.5 -61.5q0 -33 -23 -60q-20 -25 -59 -24q-80 0 -80 84z" />
+<glyph unicode="&#xc5;" horiz-adv-x="890" d="M14 2l387 1421q4 18 39 19q31 0 49 -6l388 -1409q4 -16 -6.5 -22.5t-41.5 -6.5q-49 0 -67 2l-103 395h-426l-94 -372q-3 -25 -55 -25q-33 0 -70 4zM260 500h371l-99 379q-78 305 -86 401q-16 -137 -88 -401zM260 1769q0 186 193 187q90 0 135 -41q41 -39 41 -143 q0 -186 -191 -187q-90 0 -133 41q-45 43 -45 143zM348 1765q0 -98 92 -98q102 0 103 105q0 100 -90 100q-53 0 -78 -25q-27 -27 -27 -82z" />
+<glyph unicode="&#xc6;" horiz-adv-x="1312" d="M37 2l672 1409q6 23 36 23h515q0 -78 -3 -88q-4 -16 -20 -17h-383v-493h358q0 -63 -4 -88q-2 -16 -18 -17h-336v-627h403q0 -70 -4 -90q-2 -14 -20 -14h-492v395h-401l-178 -372q-9 -25 -56 -25q-32 0 -69 4zM389 500h352v800q-78 -215 -174 -430z" />
+<glyph unicode="&#xc7;" horiz-adv-x="720" d="M80 649q0 205 24 359q25 156 62 237q37 84 92 133q53 47 107 64q45 14 112 14q94 0 141 -33q49 -35 50 -69q0 -37 -21 -70q-70 63 -153 64q-49 0 -86 -13q-39 -12 -80 -57q-43 -47 -70 -116.5t-45 -205.5q-16 -117 -16 -309q0 -156 20 -282q18 -113 55 -168.5t76 -76 t92 -20.5q70 0 125 27q59 29 88 63q20 -35 21 -71q0 -47 -66 -90q-65 -43 -159 -49l-21 -103q4 4 37 4q39 0 69.5 -30.5t30.5 -88.5q0 -78 -43 -118q-41 -39 -104 -39q-61 0 -109 20q10 53 21 68q9 3 18 0q2 0 12.5 -5t18.5 -7q23 -6 41 -7q70 0 69 74q0 72 -67 72l-80 -13 l33 173q-43 2 -90 20q-39 14 -78 57t-68 115q-27 70 -43 193q-16 126 -16 284z" />
+<glyph unicode="&#xc8;" horiz-adv-x="688" d="M117 0v1405q0 29 26 29h490q0 -98 -10 -103q-2 -2 -11 -2h-385v-493h361q0 -76 -2 -88q-2 -16 -23 -17h-336v-627h404q0 -80 -2 -90q-2 -14 -23 -14h-489zM162 1821q2 20 20 57q14 31 33 31q2 0 133 -109q115 -96 146 -131q-23 -66 -43 -65q-2 0 -140 102 q-139 105 -149 115z" />
+<glyph unicode="&#xc9;" horiz-adv-x="688" d="M117 0v1405q0 29 26 29h490q0 -98 -10 -103q-2 -2 -11 -2h-385v-493h361q0 -76 -2 -88q-2 -16 -23 -17h-336v-627h404q0 -80 -2 -90q-2 -14 -23 -14h-489zM313 1659q74 74 119 113l113 94q45 35 47 35q18 0 33 -31q18 -35 20 -60q-18 -23 -110 -92q-74 -55 -177 -125 q-8 0 -20 17q-10 12 -19 32z" />
+<glyph unicode="&#xca;" horiz-adv-x="688" d="M117 0v1405q0 29 26 29h490q0 -98 -10 -103q-2 -2 -11 -2h-385v-493h361q0 -76 -2 -88q-2 -16 -23 -17h-336v-627h404q0 -80 -2 -90q-2 -14 -23 -14h-489zM145 1636l228 234q16 4 26 4q27 0 41 -19q199 -199 199 -219q0 -12 -26.5 -26.5t-57.5 -14.5q-141 147 -158 177 q-150 -174 -174 -175q-51 0 -78 39z" />
+<glyph unicode="&#xcb;" horiz-adv-x="688" d="M117 0v1405q0 29 26 29h490q0 -98 -10 -103q-2 -2 -11 -2h-385v-493h361q0 -76 -2 -88q-2 -16 -23 -17h-336v-627h404q0 -80 -2 -90q-2 -14 -23 -14h-489zM174 1739q0 37 21 59q23 25 59 25q41 0 61.5 -22.5t20.5 -61.5q0 -33 -23 -60q-23 -25 -59 -24q-80 0 -80 84z M463 1739q0 33 22 59q23 25 58 25q41 0 61.5 -22.5t20.5 -61.5q0 -33 -23 -60q-20 -25 -59 -24q-80 0 -80 84z" />
+<glyph unicode="&#xcc;" horiz-adv-x="335" d="M-68 1821q2 27 18.5 57.5t35.5 30.5q4 0 135 -109q123 -102 143 -131q-23 -66 -43 -65q-2 0 -139 102q-140 105 -150 115zM111 0v1376q0 45 16 51q15 6 98 7v-1407q0 -20 -14 -23q-20 -4 -100 -4z" />
+<glyph unicode="&#xcd;" horiz-adv-x="335" d="M84 1659q74 74 119 113q94 82 110 94q45 35 49 35q18 0 33 -31q18 -35 21 -60q-18 -23 -111 -92l-176 -125q-10 0 -23 17q-6 8 -16 32zM111 0v1376q0 45 16 51q15 6 98 7v-1407q0 -20 -14 -23q-20 -4 -100 -4z" />
+<glyph unicode="&#xce;" horiz-adv-x="335" d="M-82 1636l227 234q16 4 27 4q25 0 41 -19q199 -199 199 -219q0 -12 -27 -26.5t-57 -14.5q-141 147 -158 177q-150 -174 -174 -175q-51 0 -78 39zM111 0v1376q0 45 16 51q15 6 98 7v-1407q0 -20 -14 -23q-20 -4 -100 -4z" />
+<glyph unicode="&#xcf;" horiz-adv-x="335" d="M-53 1739q0 33 22 59q23 25 58 25q41 0 61.5 -22.5t20.5 -61.5q0 -33 -23 -60q-20 -25 -59 -24q-80 0 -80 84zM111 0v1376q0 45 16 51q15 6 98 7v-1407q0 -20 -14 -23q-20 -4 -100 -4zM236 1739q0 33 22 59q20 25 57 25q39 0 60 -23q23 -27 22 -61q0 -33 -22 -60 q-23 -25 -60 -24q-79 0 -79 84z" />
+<glyph unicode="&#xd0;" horiz-adv-x="845" d="M25 705v49q0 8 4 28q4 16 8 19q8 4 14 4h64v594q0 35 51 35h205q203 0 301 -146q96 -141 96 -487q0 -248 -29 -400q-31 -160 -88 -245q-59 -88 -125 -121q-70 -35 -164 -35h-247v705h-90zM227 109h138q41 0 84 14q35 12 75 55q39 41 64 117q27 78 41 203q16 137 16 303 q0 287 -65.5 407.5t-210.5 120.5h-142v-524h213q0 -57 -4 -82q-3 -18 -24 -18h-185v-596z" />
+<glyph unicode="&#xd1;" horiz-adv-x="931" d="M113 0v1405q0 29 26 29h80l246 -566q63 -172 254 -647q-10 170 -10 699v485q0 23 14 25q20 4 98 4v-1407q0 -27 -26 -27h-78l-252 575q-45 102 -250 642q8 -270 8 -689v-501q0 -18 -12 -23q-16 -4 -98 -4zM190 1688q84 139 209 139q45 0 95 -53q49 -51 92 -52q47 0 76 23 q27 20 45 47q16 23 22 23q10 0 23 -17q10 -12 16 -33l6 -16q-12 -27 -33 -53q-16 -20 -69 -54q-47 -29 -101 -28q-70 0 -114 53q-47 55 -78 55q-34 0 -62 -24q-29 -27 -43 -45q-16 -23 -24 -23q-33 1 -60 58z" />
+<glyph unicode="&#xd2;" horiz-adv-x="911" d="M78 727q0 391 94 559t299 168q200 0 283 -160q82 -158 82 -565q0 -414 -91 -579q-92 -170 -296.5 -170t-286.5 161q-84 164 -84 586zM203 692q0 -326 55 -461t195 -135q141 0 202 144q59 139 60 491q0 338 -55.5 473t-192.5 135q-135 0 -201 -149q-63 -146 -63 -498z M240 1821q2 27 18 57.5t35 30.5q2 0 133 -109q127 -106 145 -131q-23 -66 -43 -65q-4 0 -141 102q-131 99 -147 115z" />
+<glyph unicode="&#xd3;" horiz-adv-x="911" d="M78 727q0 391 94 559t299 168q200 0 283 -160q82 -158 82 -565q0 -414 -91 -579q-92 -170 -296.5 -170t-286.5 161q-84 164 -84 586zM203 692q0 -326 55 -461t195 -135q141 0 202 144q59 139 60 491q0 338 -55.5 473t-192.5 135q-135 0 -201 -149q-63 -146 -63 -498z M391 1659q74 74 119 113l113 94q45 35 47 35q18 0 35 -31q14 -31 18 -60q-18 -23 -111 -92l-176 -125q-10 0 -22 17q-6 8 -17 32z" />
+<glyph unicode="&#xd4;" horiz-adv-x="911" d="M78 727q0 391 94 559t299 168q200 0 283 -160q82 -158 82 -565q0 -414 -91 -579q-92 -170 -296.5 -170t-286.5 161q-84 164 -84 586zM203 692q0 -326 55 -461t195 -135q141 0 202 144q59 139 60 491q0 338 -55.5 473t-192.5 135q-135 0 -201 -149q-63 -146 -63 -498z M223 1636l228 234q16 4 26 4q27 0 41 -19q199 -199 199 -219q0 -12 -26.5 -26.5t-57.5 -14.5q-141 147 -158 177q-150 -174 -174 -175q-51 0 -78 39z" />
+<glyph unicode="&#xd5;" horiz-adv-x="911" d="M78 727q0 391 94 559t299 168q200 0 283 -160q82 -158 82 -565q0 -414 -91 -579q-92 -170 -296.5 -170t-286.5 161q-84 164 -84 586zM180 1688q84 139 209 139q45 0 94 -53q49 -51 92 -52q47 0 76 23q27 20 45 47q16 23 23 23q12 0 24 -17q10 -12 17 -33l4 -16 q-12 -27 -33 -53q-16 -20 -69 -54q-47 -29 -101 -28q-68 0 -115 53q-49 55 -77 55q-34 0 -62 -24q-29 -27 -43 -45q-16 -23 -24 -23q-33 1 -60 58zM203 692q0 -326 55 -461t195 -135q141 0 202 144q59 139 60 491q0 338 -55.5 473t-192.5 135q-135 0 -201 -149 q-63 -146 -63 -498z" />
+<glyph unicode="&#xd6;" horiz-adv-x="911" d="M78 727q0 391 94 559t299 168q200 0 283 -160q82 -158 82 -565q0 -414 -91 -579q-92 -170 -296.5 -170t-286.5 161q-84 164 -84 586zM203 692q0 -326 55 -461t195 -135q141 0 202 144q59 139 60 491q0 338 -55.5 473t-192.5 135q-135 0 -201 -149q-63 -146 -63 -498z M252 1739q0 33 22 59q20 25 58 25q41 0 61.5 -22.5t20.5 -61.5q0 -33 -23 -60q-23 -25 -59 -24q-80 0 -80 84zM541 1739q0 33 22 59q23 25 58 25q41 0 61 -22.5t20 -61.5q0 -33 -22 -60q-20 -25 -59 -24q-80 0 -80 84z" />
+<glyph unicode="&#xd7;" d="M178 795q66 61 80 59q6 0 12 -6l170 -193l172 193q18 10 29 2q25 -18 53 -45q10 -10 11 -10l-195 -220l192 -215q-49 -49 -57 -55q-10 -8 -35 2l-170 191l-168 -191q-8 -8 -16 -8q-10 0 -18.5 6t-22.5 21l-35 34l191 215z" />
+<glyph unicode="&#xd8;" horiz-adv-x="948" d="M96 727q0 387 94 559q92 168 295 168q154 0 238 -90l43 109q70 -2 76 -37q0 -18 -58 -172q70 -166 70 -535q0 -410 -90 -579.5t-295 -169.5q-162 0 -244 92l-43 -105q-14 -2 -42.5 8.5t-30.5 28.5l2 7l8 22l26 67l25 62q-74 166 -74 565zM221 692q0 -297 43 -432 l379 1008q-55 72 -156 71q-138 0 -202 -147q-64 -146 -64 -500zM309 166q53 -72 156 -72q94 0 151 53q55 51 86 195q31 141 31 389q0 305 -43 440z" />
+<glyph unicode="&#xd9;" horiz-adv-x="935" d="M113 440v965q0 23 14 25q20 4 100 4v-998q0 -51 4 -112q2 -35 21 -93q15 -49 43 -79q25 -27 74 -48q45 -18 114 -18q143 0 230 43v1278q0 20 14 23q20 4 100 4v-1383q-47 -31 -141 -51t-203 -20q-92 0 -168 26q-70 25 -108 64q-37 37 -60 104q-23 70 -28 123 q-6 59 -6 143zM246 1821q2 20 20 57q16 31 33 31q2 0 133 -109q117 -96 146 -131q-23 -66 -43 -65q-2 0 -140 102q-139 105 -149 115z" />
+<glyph unicode="&#xda;" horiz-adv-x="935" d="M113 440v965q0 23 14 25q20 4 100 4v-998q0 -51 4 -112q2 -35 21 -93q15 -49 43 -79q25 -27 74 -48q45 -18 114 -18q143 0 230 43v1278q0 20 14 23q20 4 100 4v-1383q-47 -31 -141 -51t-203 -20q-92 0 -168 26q-70 25 -108 64q-37 37 -60 104q-23 70 -28 123 q-6 59 -6 143zM397 1659q74 74 119 113l113 94q45 35 47 35q16 0 33 -31q18 -35 20 -60q-18 -23 -111 -92l-176 -125q-8 0 -20 17q-10 12 -19 32z" />
+<glyph unicode="&#xdb;" horiz-adv-x="935" d="M113 440v965q0 23 14 25q20 4 100 4v-998q0 -51 4 -112q2 -35 21 -93q15 -49 43 -79q25 -27 74 -48q45 -18 114 -18q143 0 230 43v1278q0 20 14 23q20 4 100 4v-1383q-47 -31 -141 -51t-203 -20q-92 0 -168 26q-70 25 -108 64q-37 37 -60 104q-23 70 -28 123 q-6 59 -6 143zM229 1636l228 234q16 4 26 4q25 0 41 -19q199 -199 199 -219q0 -12 -26.5 -26.5t-57.5 -14.5q-141 147 -158 177q-150 -174 -174 -175q-51 0 -78 39z" />
+<glyph unicode="&#xdc;" horiz-adv-x="935" d="M113 440v965q0 23 14 25q20 4 100 4v-998q0 -51 4 -112q2 -35 21 -93q15 -49 43 -79q25 -27 74 -48q45 -18 114 -18q143 0 230 43v1278q0 20 14 23q20 4 100 4v-1383q-47 -31 -141 -51t-203 -20q-92 0 -168 26q-70 25 -108 64q-37 37 -60 104q-23 70 -28 123 q-6 59 -6 143zM258 1739q0 37 21 59q20 25 59 25q41 0 61.5 -22.5t20.5 -61.5q0 -33 -23 -60q-20 -25 -59 -24q-80 0 -80 84zM547 1739q0 33 22 59q20 25 58 25q41 0 61.5 -22.5t20.5 -61.5q0 -33 -23 -60q-23 -25 -59 -24q-80 0 -80 84z" />
+<glyph unicode="&#xdd;" horiz-adv-x="737" d="M12 1415q-6 14 13 17q10 2 114 2l99 -293q43 -115 86 -262q49 -166 53 -193q14 106 139 457l90 270q2 12 21 17q20 4 102 4l-299 -848v-559q0 -18 -14 -23q-16 -4 -99 -4v582zM293 1659q74 74 119 113q94 82 110 94q45 35 49 35q18 0 33 -31q18 -35 21 -60 q-18 -23 -111 -92l-176 -125q-8 0 -21 17q-10 12 -18 32z" />
+<glyph unicode="&#xde;" horiz-adv-x="755" d="M113 0v1403q0 20 14 27q10 4 61 4h35v-265h129q358 0 359 -391q0 -221 -99 -329q-98 -106 -268 -107h-121v-315q0 -20 -14 -23q-20 -4 -96 -4zM223 451h66h20h17.5t13.5 -1t9 -1h3q236 0 236 339q0 279 -226 279h-71q-12 0 -28.5 -1t-20.5 -1h-19v-614z" />
+<glyph unicode="&#xdf;" horiz-adv-x="960" d="M100 2q18 39 19 109l-2 1013q0 317 321 318q199 0 299 -90q98 -90 99 -201q0 -61 -41 -113q-43 -51 -90 -75q-49 -25 -90.5 -66t-41.5 -86q0 -39 37 -82q29 -33 90 -84l107 -90q55 -53 90 -121q37 -74 37 -155q0 -143 -82 -220q-84 -78 -225 -77q-70 0 -131 16 q-57 14 -84 32.5t-27 39.5q0 41 31 77q70 -63 190 -63q94 0 150 47q57 49 57 143q0 80 -57 156q-59 78 -123 125q-72 51 -123 115q-57 70 -57 135q0 61 41 113q39 47 92 77q51 29 90 68q41 41 41 88q0 72 -69.5 129t-201.5 57q-113 0 -165 -65q-51 -63 -52 -213l2 -1002 q0 -37 -14 -57q-12 -18 -51 -18q-18 0 -35 6q-20 8 -22 10z" />
+<glyph unicode="&#xe0;" horiz-adv-x="749" d="M74 285q0 104 24 174q23 68 72 102q45 33 94 45t115 12q109 0 168 -24v180q0 92 -41 127t-121 35q-184 0 -295 -51q-16 33 -16 65q0 29 16 41q35 23 125 37q98 16 197 16q125 0 186 -57q59 -55 59 -190v-123q0 -324 -10 -621q-119 -74 -278 -73q-39 0 -88 4 q-31 2 -78 22.5t-68 48.5q-27 35 -43 90q-18 60 -18 140zM143 1411q2 27 19 57q14 31 35 31q4 0 135 -108q123 -102 143 -131q-23 -66 -43 -66q-2 0 -139 102q-140 105 -150 115zM190 289q0 -72 15 -115q16 -47 45 -65q31 -18 59 -25q27 -6 76 -6q104 0 152 45 q10 160 10 387q-53 20 -133 20q-104 0 -164 -47t-60 -194z" />
+<glyph unicode="&#xe1;" horiz-adv-x="749" d="M74 285q0 104 24 174q23 68 72 102q45 33 94 45t115 12q109 0 168 -24v180q0 92 -41 127t-121 35q-184 0 -295 -51q-16 33 -16 65q0 29 16 41q35 23 125 37q98 16 197 16q125 0 186 -57q59 -55 59 -190v-123q0 -324 -10 -621q-119 -74 -278 -73q-39 0 -88 4 q-31 2 -78 22.5t-68 48.5q-27 35 -43 90q-18 60 -18 140zM190 289q0 -72 15 -115q16 -47 45 -65q31 -18 59 -25q27 -6 76 -6q104 0 152 45q10 160 10 387q-53 20 -133 20q-104 0 -164 -47t-60 -194zM297 1249q74 74 119 113q94 82 110 94q45 35 49 35q16 0 33 -33 q18 -35 21 -57q-14 -18 -111 -90q-102 -78 -176 -127q-10 0 -23 16q-6 8 -16 33z" />
+<glyph unicode="&#xe2;" horiz-adv-x="749" d="M74 285q0 104 24 174q23 68 72 102q45 33 94 45t115 12q109 0 168 -24v180q0 92 -41 127t-121 35q-184 0 -295 -51q-16 33 -16 65q0 29 16 41q35 23 125 37q98 16 197 16q125 0 186 -57q59 -55 59 -190v-123q0 -324 -10 -621q-119 -74 -278 -73q-39 0 -88 4 q-31 2 -78 22.5t-68 48.5q-27 35 -43 90q-18 60 -18 140zM129 1227l227 233q16 4 27 4q27 0 41 -18q199 -199 199 -219q0 -12 -27 -26.5t-57 -14.5q-137 143 -158 176q-150 -174 -174 -174q-51 0 -78 39zM190 289q0 -72 15 -115q16 -47 45 -65q31 -18 59 -25q27 -6 76 -6 q104 0 152 45q10 160 10 387q-53 20 -133 20q-104 0 -164 -47t-60 -194z" />
+<glyph unicode="&#xe3;" horiz-adv-x="749" d="M74 285q0 104 24 174q23 68 72 102q45 33 94 45t115 12q109 0 168 -24v180q0 92 -41 127t-121 35q-184 0 -295 -51q-16 33 -16 65q0 29 16 41q35 23 125 37q98 16 197 16q125 0 186 -57q59 -55 59 -190v-123q0 -324 -10 -621q-119 -74 -278 -73q-39 0 -88 4 q-31 2 -78 22.5t-68 48.5q-27 35 -43 90q-18 60 -18 140zM86 1278q84 139 209 139q45 0 94 -51q49 -53 92 -53q45 0 76 24.5t45 44.5q16 23 23 23q10 0 22 -16q10 -12 19 -33l4 -17q-14 -33 -33 -53q-20 -25 -70 -53q-47 -29 -100 -29q-66 0 -115 56q-47 53 -78 53 q-37 0 -61 -23q-27 -23 -43 -47q-16 -23 -25 -22q-32 0 -59 57zM190 289q0 -72 15 -115q16 -47 45 -65q31 -18 59 -25q27 -6 76 -6q104 0 152 45q10 160 10 387q-53 20 -133 20q-104 0 -164 -47t-60 -194z" />
+<glyph unicode="&#xe4;" horiz-adv-x="749" d="M74 285q0 104 24 174q23 68 72 102q45 33 94 45t115 12q109 0 168 -24v180q0 92 -41 127t-121 35q-184 0 -295 -51q-16 33 -16 65q0 29 16 41q35 23 125 37q98 16 197 16q125 0 186 -57q59 -55 59 -190v-123q0 -324 -10 -621q-119 -74 -278 -73q-39 0 -88 4 q-31 2 -78 22.5t-68 48.5q-27 35 -43 90q-18 60 -18 140zM158 1329q0 33 22 60q20 25 58 24q40 0 61 -24q20 -23 20 -60q0 -35 -22 -61q-20 -23 -59 -23q-80 0 -80 84zM190 289q0 -72 15 -115q16 -47 45 -65q31 -18 59 -25q27 -6 76 -6q104 0 152 45q10 160 10 387 q-53 20 -133 20q-104 0 -164 -47t-60 -194zM446 1329q0 37 21 60q20 25 59 24.5t60 -24.5q23 -27 22 -60q0 -35 -22 -61q-20 -23 -60 -23q-80 0 -80 84z" />
+<glyph unicode="&#xe5;" horiz-adv-x="749" d="M74 285q0 104 24 174q23 68 72 102q45 33 94 45t115 12q109 0 168 -24v180q0 92 -41 127t-121 35q-184 0 -295 -51q-16 33 -16 65q0 29 16 41q35 23 125 37q98 16 197 16q125 0 186 -57q59 -55 59 -190v-123q0 -324 -10 -621q-119 -74 -278 -73q-39 0 -88 4 q-31 2 -78 22.5t-68 48.5q-27 35 -43 90q-18 60 -18 140zM190 289q0 -72 15 -115q16 -47 45 -65q31 -18 59 -25q27 -6 76 -6q104 0 152 45q10 160 10 387q-53 20 -133 20q-104 0 -164 -47t-60 -194zM195 1360q0 186 192 186q88 0 133 -41q43 -39 43 -143q0 -186 -190 -186 q-86 0 -133 43q-45 43 -45 141zM283 1356q0 -98 92 -99q102 0 102 105q0 100 -90 100q-53 0 -78 -24q-26 -27 -26 -82z" />
+<glyph unicode="&#xe6;" horiz-adv-x="1267" d="M74 291q0 197 84 270q80 72 219 72q111 0 170 -25v172q0 94 -45 127q-47 35 -129 35q-170 0 -277 -59q-14 23 -14 67q0 29 18 39q86 55 312 55q96 0 155 -38q51 -35 68 -123q46 95 117 129q68 33 168 32q258 0 258 -317q0 -162 -21 -252q-86 -14 -190 -14q-156 0 -299 31 v-35q0 -125 14 -197q14 -74 49 -110.5t72 -47.5q41 -10 96 -10q154 0 254 70q14 -31 14 -103q0 -12 -37 -30q-25 -12 -104 -31q-63 -14 -137 -14q-182 0 -246 94v-35q-104 -61 -274 -61q-72 0 -111 8q-49 10 -90 35q-45 27 -69.5 94.5t-24.5 171.5zM190 289 q0 -133 47.5 -172t145.5 -39q121 0 164 43v403q-53 20 -133 21q-100 0 -164 -53q-60 -51 -60 -203zM672 586q152 -33 280 -33q68 0 107 8q8 57 8 144q-4 127 -37 182q-35 55 -121 55q-94 0 -157 -72q-66 -73 -80 -284z" />
+<glyph unicode="&#xe7;" horiz-adv-x="675" d="M82 489q0 141 24 246q25 106 58 162q34 58 86 92q57 37 96 45q51 10 105 10q74 0 123 -24.5t49 -56.5q0 -37 -15 -68q-70 47 -159 47q-43 0 -70 -8q-31 -9 -68 -37q-33 -25 -59 -74q-23 -41 -39 -135q-16 -92 -16 -205q0 -237 55 -319t168 -82q121 0 188 61 q14 -31 15 -65q0 -34 -56 -62q-57 -29 -143 -34l-21 -105q4 4 37 4q41 0 72 -31q29 -29 29 -88q0 -78 -43 -118q-41 -39 -105 -39q-61 0 -108 20q10 53 20 68q9 3 19 0l12 -5q12 -5 20 -7q20 -6 39 -7q70 0 70 74q0 72 -68 72l-80 -13l33 175q-135 8 -200 114 q-68 107 -68 393z" />
+<glyph unicode="&#xe8;" horiz-adv-x="768" d="M78 457q0 145 22 262q22 111 56 172q33 57 86 96t98 47q51 10 104 10q258 0 258 -323q0 -156 -20 -246q-182 -37 -489 -37q0 -137 32 -223q31 -78 78 -102q45 -23 129 -23q150 0 246 70q14 -35 14 -80q0 -37 -84 -68q-88 -33 -194 -32q-80 0 -135 18q-57 18 -104.5 65.5 t-72 145.5t-24.5 248zM193 1411q2 20 20 57q16 31 33 31q4 0 135 -108q123 -102 143 -131q-23 -66 -43 -66q-2 0 -139 102q-139 105 -149 115zM195 532q270 0 389 29q8 57 8 137q-2 127 -37 187q-33 57 -121 57q-49 0 -80 -14q-39 -18 -71 -54q-35 -37 -60 -124 q-26 -91 -28 -218z" />
+<glyph unicode="&#xe9;" horiz-adv-x="768" d="M78 457q0 145 22 262q22 111 56 172q33 57 86 96t98 47q51 10 104 10q258 0 258 -323q0 -156 -20 -246q-182 -37 -489 -37q0 -137 32 -223q31 -78 78 -102q45 -23 129 -23q150 0 246 70q14 -35 14 -80q0 -37 -84 -68q-88 -33 -194 -32q-80 0 -135 18q-57 18 -104.5 65.5 t-72 145.5t-24.5 248zM195 532q270 0 389 29q8 57 8 137q-2 127 -37 187q-33 57 -121 57q-49 0 -80 -14q-39 -18 -71 -54q-35 -37 -60 -124q-26 -91 -28 -218zM346 1249q74 74 119 113q94 82 110 94q45 35 50 35q18 0 34 -33q14 -31 19 -57q-14 -18 -111 -90 q-102 -78 -176 -127q-10 0 -22 16q-6 8 -17 33z" />
+<glyph unicode="&#xea;" horiz-adv-x="768" d="M78 457q0 145 22 262q22 111 56 172q33 57 86 96t98 47q51 10 104 10q258 0 258 -323q0 -156 -20 -246q-182 -37 -489 -37q0 -137 32 -223q31 -78 78 -102q45 -23 129 -23q150 0 246 70q14 -35 14 -80q0 -37 -84 -68q-88 -33 -194 -32q-80 0 -135 18q-57 18 -104.5 65.5 t-72 145.5t-24.5 248zM178 1227l228 233q16 4 26 4q27 0 41 -18q199 -199 199 -219q0 -12 -27 -26.5t-57 -14.5q-137 143 -158 176q-150 -174 -174 -174q-51 0 -78 39zM195 532q270 0 389 29q8 57 8 137q-2 127 -37 187q-33 57 -121 57q-49 0 -80 -14q-39 -18 -71 -54 q-35 -37 -60 -124q-26 -91 -28 -218z" />
+<glyph unicode="&#xeb;" horiz-adv-x="768" d="M78 457q0 145 22 262q22 111 56 172q33 57 86 96t98 47q51 10 104 10q258 0 258 -323q0 -156 -20 -246q-182 -37 -489 -37q0 -137 32 -223q31 -78 78 -102q45 -23 129 -23q150 0 246 70q14 -35 14 -80q0 -37 -84 -68q-88 -33 -194 -32q-80 0 -135 18q-57 18 -104.5 65.5 t-72 145.5t-24.5 248zM195 532q270 0 389 29q8 57 8 137q-2 127 -37 187q-33 57 -121 57q-49 0 -80 -14q-39 -18 -71 -54q-35 -37 -60 -124q-26 -91 -28 -218zM207 1329q0 33 22 60q20 25 58 24q40 0 61 -24q20 -23 21 -60q0 -35 -23 -61q-20 -23 -59 -23q-80 0 -80 84z M496 1329q0 33 22 60q23 25 57 24q39 0 60 -24q23 -27 22 -60q0 -35 -22 -61q-20 -23 -60 -23q-79 0 -79 84z" />
+<glyph unicode="&#xec;" horiz-adv-x="348" d="M-59 1411q2 27 18 57.5t35 30.5q2 0 133 -108q127 -106 145 -131q-23 -66 -43 -66q-4 0 -141 102q-131 99 -147 115zM117 0v969q0 39 20 47q18 8 96 8v-997q0 -18 -16 -23q-20 -4 -100 -4z" />
+<glyph unicode="&#xed;" horiz-adv-x="348" d="M92 1249q74 74 119 113l113 94q45 35 47 35q18 0 35 -33q14 -31 18 -57q-14 -18 -111 -90q-102 -78 -176 -127q-10 0 -22 16q-6 8 -17 33zM117 0v969q0 39 20 47q18 8 96 8v-997q0 -18 -16 -23q-20 -4 -100 -4z" />
+<glyph unicode="&#xee;" horiz-adv-x="348" d="M-76 1227l228 233q16 4 26 4q27 0 41 -18q199 -199 199 -219q0 -12 -26.5 -26.5t-57.5 -14.5q-137 143 -158 176q-150 -174 -174 -174q-51 0 -78 39zM117 0v969q0 39 20 47q18 8 96 8v-997q0 -18 -16 -23q-20 -4 -100 -4z" />
+<glyph unicode="&#xef;" horiz-adv-x="348" d="M-47 1329q0 33 22 60q20 25 58 24q40 0 61 -24q20 -23 21 -60q0 -35 -23 -61q-20 -23 -59 -23q-80 0 -80 84zM117 0v969q0 39 20 47q18 8 96 8v-997q0 -18 -16 -23q-20 -4 -100 -4zM242 1329q0 33 22 60q23 25 58 24q40 0 61 -24q20 -23 20 -60q0 -35 -22 -61 q-20 -23 -59 -23q-80 0 -80 84z" />
+<glyph unicode="&#xf0;" horiz-adv-x="892" d="M94 526q0 252 92 383q92 133 258 133q139 0 226 -92q-47 186 -158 328l-197 -78q-31 84 -20 96q2 4 10 9l135 53q-46 46 -129 110q29 55 78 56q27 0 47 -21q78 -63 113 -102l158 63q31 -84 22 -96q-2 -4 -12 -8l-99 -39q201 -268 201 -729q0 -135 -12 -234 q-12 -90 -51 -190q-35 -90 -111 -139q-74 -49 -182 -49q-188 0 -279 129q-90 130 -90 417zM207 510q0 -432 254 -432q78 0 131 41q47 37 74 121q23 74 32 159q8 72 9 199q0 111 -11 197q-86 143 -227 143q-127 0 -194.5 -112.5t-67.5 -315.5z" />
+<glyph unicode="&#xf1;" horiz-adv-x="819" d="M113 0v973q168 72 331 71q158 0 220 -65q61 -65 61 -215v-737q0 -20 -14 -23q-20 -4 -101 -4v733q0 117 -34.5 164t-135.5 47q-125 0 -215 -47v-870q0 -20 -14 -23q-20 -4 -98 -4zM141 1278q84 139 209 139q47 0 96 -51q49 -53 91 -53q47 0 77 24q25 20 43 45 q16 23 23 23q12 0 25 -16q6 -8 16 -33l4 -17q-14 -33 -33 -53q-20 -25 -69 -53q-47 -29 -101 -29q-66 0 -114 56q-47 53 -78 53q-37 0 -62 -23q-27 -23 -43 -47q-16 -23 -24 -22q-33 0 -60 57z" />
+<glyph unicode="&#xf2;" horiz-adv-x="782" d="M63 510q0 535 343 534q164 0 241 -114q76 -113 76 -418q0 -532 -340 -532q-83 0 -135 18q-55 18 -98 72q-43 51 -66 163q-21 103 -21 277zM168 1411q2 20 20 57q16 31 33 31q2 0 133 -108q117 -96 146 -131q-23 -66 -43 -66q-2 0 -140 102q-139 105 -149 115zM184 502 q0 -164 27 -266q25 -96 65 -127t111 -31q215 0 215 438q0 254 -47 340q-49 88 -154 88q-106 0 -161.5 -98t-55.5 -344z" />
+<glyph unicode="&#xf3;" horiz-adv-x="782" d="M63 510q0 535 343 534q164 0 241 -114q76 -113 76 -418q0 -532 -340 -532q-83 0 -135 18q-55 18 -98 72q-43 51 -66 163q-21 103 -21 277zM184 502q0 -164 27 -266q25 -96 65 -127t111 -31q215 0 215 438q0 254 -47 340q-49 88 -154 88q-106 0 -161.5 -98t-55.5 -344z M319 1249q74 74 119 113l113 94q45 35 47 35q16 0 33 -33q18 -35 20 -57q-14 -18 -110 -90q-102 -78 -176 -127q-8 0 -21 16q-10 12 -18 33z" />
+<glyph unicode="&#xf4;" horiz-adv-x="782" d="M63 510q0 535 343 534q164 0 241 -114q76 -113 76 -418q0 -532 -340 -532q-83 0 -135 18q-55 18 -98 72q-43 51 -66 163q-21 103 -21 277zM152 1227l227 233q16 4 27 4q25 0 40 -18q199 -199 199 -219q0 -12 -26.5 -26.5t-57.5 -14.5q-137 143 -158 176 q-150 -174 -174 -174q-50 0 -77 39zM184 502q0 -164 27 -266q25 -96 65 -127t111 -31q215 0 215 438q0 254 -47 340q-49 88 -154 88q-106 0 -161.5 -98t-55.5 -344z" />
+<glyph unicode="&#xf5;" horiz-adv-x="782" d="M63 510q0 535 343 534q164 0 241 -114q76 -113 76 -418q0 -532 -340 -532q-83 0 -135 18q-55 18 -98 72q-43 51 -66 163q-21 103 -21 277zM109 1278q84 139 208 139q45 0 95 -51q49 -53 92 -53q45 0 75.5 24.5t45.5 44.5q16 23 22 23q10 0 23 -16q6 -8 16 -33l6 -17 q-14 -33 -33 -53q-20 -25 -69 -53q-47 -29 -101 -29q-68 0 -114 56q-45 53 -78 53q-37 0 -61 -23q-27 -23 -43 -47q-16 -23 -25 -22q-32 0 -59 57zM184 502q0 -164 27 -266q25 -96 65 -127t111 -31q215 0 215 438q0 254 -47 340q-49 88 -154 88q-106 0 -161.5 -98 t-55.5 -344z" />
+<glyph unicode="&#xf6;" horiz-adv-x="782" d="M63 510q0 535 343 534q164 0 241 -114q76 -113 76 -418q0 -532 -340 -532q-83 0 -135 18q-55 18 -98 72q-43 51 -66 163q-21 103 -21 277zM180 1329q0 37 21 60q20 25 59 24.5t59 -24.5q23 -27 23 -60q0 -35 -23 -61q-20 -23 -59 -23q-80 0 -80 84zM184 502 q0 -164 27 -266q25 -96 65 -127t111 -31q215 0 215 438q0 254 -47 340q-49 88 -154 88q-106 0 -161.5 -98t-55.5 -344zM469 1329q0 33 23 60q20 25 57 24q40 0 61 -24q20 -23 21 -60q0 -35 -23 -61q-20 -23 -59 -23q-80 0 -80 84z" />
+<glyph unicode="&#xf7;" d="M86 526v49q0 20 2 31q4 16 8 19q8 4 17 4h690q0 -53 -4 -82q-2 -20 -25 -21h-688zM358 287q0 39 21 61q23 25 59 25q82 0 82 -86q0 -33 -22 -60q-23 -25 -60 -24q-80 0 -80 84zM358 856q0 37 21 59q23 25 59 25q82 0 82 -84q0 -35 -22 -61q-23 -25 -60 -25q-80 0 -80 86z " />
+<glyph unicode="&#xf8;" horiz-adv-x="866" d="M57 4q0 10 95 166q-37 117 -37 340q0 535 338 534q158 0 227 -94q59 104 74 119q68 -15 67 -49q0 -16 -92 -164q43 -123 43 -344q0 -532 -330 -532q-178 0 -245 98l-32 -52.5t-27 -46t-15 -24.5q-12 2 -41 16q-25 13 -25 33zM233 502q0 -147 17 -232l348 592 q-43 82 -147 82q-106 0 -162 -98t-56 -344zM279 174q47 -96 157 -96q215 0 215 438q0 156 -20 252z" />
+<glyph unicode="&#xf9;" horiz-adv-x="849" d="M119 346v649q0 25 14 27q10 2 100 2v-692q0 -147 39 -199q41 -53 158 -53q111 0 188 47v868q0 23 15 25q20 4 98 4v-973q-139 -72 -311 -71.5t-238 83.5q-63 82 -63 283zM197 1411q2 27 18 57q14 31 35 31q4 0 135 -108q123 -102 143 -131q-23 -66 -43 -66q-4 0 -141 102 q-131 99 -147 115z" />
+<glyph unicode="&#xfa;" horiz-adv-x="849" d="M119 346v649q0 25 14 27q10 2 100 2v-692q0 -147 39 -199q41 -53 158 -53q111 0 188 47v868q0 23 15 25q20 4 98 4v-973q-139 -72 -311 -71.5t-238 83.5q-63 82 -63 283zM348 1249q74 74 119 113l113 94q45 35 47 35q18 0 35 -33q14 -31 18 -57q-14 -18 -111 -90 q-102 -78 -176 -127q-10 0 -22 16q-6 8 -17 33z" />
+<glyph unicode="&#xfb;" horiz-adv-x="849" d="M119 346v649q0 25 14 27q10 2 100 2v-692q0 -147 39 -199q41 -53 158 -53q111 0 188 47v868q0 23 15 25q20 4 98 4v-973q-139 -72 -311 -71.5t-238 83.5q-63 82 -63 283zM180 1227l228 233q16 4 26 4q25 0 41 -18q199 -199 199 -219q0 -12 -26.5 -26.5t-57.5 -14.5 q-137 143 -158 176q-150 -174 -174 -174q-51 0 -78 39z" />
+<glyph unicode="&#xfc;" horiz-adv-x="849" d="M119 346v649q0 25 14 27q10 2 100 2v-692q0 -147 39 -199q41 -53 158 -53q111 0 188 47v868q0 23 15 25q20 4 98 4v-973q-139 -72 -311 -71.5t-238 83.5q-63 82 -63 283zM209 1329q0 33 22 60q23 25 58 24q40 0 61 -24q20 -23 21 -60q0 -35 -23 -61q-20 -23 -59 -23 q-80 0 -80 84zM498 1329q0 33 22 60q20 25 58 24q40 0 61 -24q20 -23 20 -60q0 -35 -22 -61q-20 -23 -59 -23q-80 0 -80 84z" />
+<glyph unicode="&#xfd;" horiz-adv-x="755" d="M2 -334q0 39 21 66q61 -29 124 -29q127 0 187 264l-266 1022q-6 29 8 31q20 4 100 4l154 -602l59 -318q18 141 55 320l138 565q3 28 18 31q20 4 102 4l-270 -1087q-47 -182 -110 -256q-66 -76 -170 -76q-150 0 -150 61zM309 1249q74 74 119 113l113 94q45 35 47 35 q16 0 33 -33q18 -35 20 -57q-14 -18 -111 -90q-102 -78 -176 -127q-8 0 -20 16q-10 12 -19 33z" />
+<glyph unicode="&#xfe;" horiz-adv-x="817" d="M117 -365v1815q0 37 18 47q16 8 94 8v-489q78 27 183 26q168 0 254 -98q84 -96 84 -342q0 -158 -25 -274q-25 -115 -61 -181q-35 -61 -89 -104q-43 -35 -90 -49q-39 -12 -82 -12q-117 0 -174 63v-446q-23 -8 -65 -9q-29 0 -37 9q-10 9 -10 36zM229 158q47 -78 144 -78 q29 0 59 10q29 10 66 43q41 37 65.5 84t44.5 150q18 96 19 223q0 203 -54 278q-53 74 -163 74q-102 0 -181 -53v-731z" />
+<glyph unicode="&#xff;" horiz-adv-x="755" d="M2 -334q0 39 21 66q61 -29 124 -29q127 0 187 264l-266 1022q-6 29 8 31q20 4 100 4l154 -602l59 -318q18 141 55 320l138 565q3 28 18 31q20 4 102 4l-270 -1087q-47 -182 -110 -256q-66 -76 -170 -76q-150 0 -150 61zM170 1329q0 33 23 60q20 25 57 24q40 0 61 -24 q20 -23 21 -60q0 -35 -23 -61q-20 -23 -59 -23q-80 0 -80 84zM459 1329q0 33 22 60q23 25 58 24q40 0 61 -24q20 -23 21 -60q0 -35 -23 -61q-20 -23 -59 -23q-80 0 -80 84z" />
+<glyph unicode="&#x131;" horiz-adv-x="348" d="M117 0v969q0 39 20 47q18 8 96 8v-997q0 -18 -16 -23q-20 -4 -100 -4z" />
+<glyph unicode="&#x141;" horiz-adv-x="671" d="M12 721q0 20 17 31l84 26v615q0 31 14 37q10 4 100 4v-617l209 68q18 -57 18.5 -78t-16.5 -29l-211 -69v-603h406v-79q0 -27 -29 -27h-491v670l-84 -27q-17 66 -17 78z" />
+<glyph unicode="&#x142;" horiz-adv-x="346" d="M-2 694q0 18 2 22.5t14 8.5l103 33v692q0 37 18 47q16 8 94 8v-708l105 34l12 -47q4 -20 4 -30q0 -16 -2 -20.5t-14 -8.5l-105 -35v-663q0 -18 -14 -23q-16 -4 -98 -4v651l-103 -33q-4 16 -7 26.5t-5 19.5q-4 20 -4 30z" />
+<glyph unicode="&#x152;" horiz-adv-x="1282" d="M74 725q0 391 94 559q96 170 295 170q178 0 262 -133v84q0 29 27 29h477q0 -78 -2 -88q-4 -16 -21 -17h-383v-493h359q0 -76 -2 -88q-2 -16 -23 -17h-334v-627h404q0 -80 -2 -90q-2 -14 -25 -14h-475v133q-84 -152 -279 -151q-201 0 -288 161q-84 156 -84 582zM199 692 q0 -322 57 -465q55 -137 193 -137q139 0 194 145.5t55 495.5q0 338 -51 479q-49 135 -182 136q-137 0 -203 -152q-63 -148 -63 -502z" />
+<glyph unicode="&#x153;" horiz-adv-x="1314" d="M76 510q0 535 340 534q203 0 270 -170q47 102 125 138q72 33 176 32q258 0 258 -317q0 -162 -20 -252q-180 -37 -490 -37q0 -111 17 -188q14 -68 51 -104.5t69 -45.5q41 -10 95 -10q158 0 254 70q14 -35 14 -105q0 -12 -37 -30q-27 -12 -104 -31q-63 -14 -138 -14 q-113 0 -180 32q-70 33 -108 127q-82 -160 -262 -159q-86 0 -141.5 18t-100.5 72q-45 55 -68 163q-20 103 -20 277zM197 502q0 -164 26 -266q25 -96 66 -127q39 -31 110 -31q215 0 215 438q0 252 -49 338q-51 88 -151 88q-106 0 -161.5 -98t-55.5 -342zM735 532 q272 0 391 29q8 57 9 144q-4 133 -35 184q-33 53 -123 53q-46 0 -80 -12q-39 -14 -74 -51q-37 -41 -61 -125q-23 -83 -27 -222z" />
+<glyph unicode="&#x160;" horiz-adv-x="753" d="M68 88q0 43 32 80q76 -74 230 -74q246 0 245 250q0 80 -32 156q-31 70 -111 155l-221 232q-139 158 -139 291q0 125 92 200q90 76 252 76q131 0 192 -27q66 -29 66 -63q0 -37 -31 -68q-74 55 -219 56q-104 0 -170 -47q-63 -45 -64 -125q0 -94 113 -222l244 -251 q86 -92 115 -168q33 -86 32 -185q0 -170 -86 -272t-270 -102q-125 0 -199 34q-71 35 -71 74zM166 1829q14 33 27 47q18 23 30.5 22.5t61.5 -49.5q63 -63 92 -96l43 -47l80 96q57 66 67 76l27 25q47 -29 47 -56q0 -23 -102 -137q-100 -113 -121 -113t-127 103 q-100 98 -125 129z" />
+<glyph unicode="&#x161;" horiz-adv-x="751" d="M80 68q0 35 24 69q90 -53 224 -53q221 0 221 158q0 113 -115 198l-215 156q-82 57 -108.5 104.5t-26.5 110.5q0 109 88 170q92 63 246 63q80 0 151 -20q63 -18 86 -40.5t23 -41.5q0 -35 -27 -63q-102 66 -223 65q-96 0 -155.5 -35t-59.5 -98q0 -76 100 -143l222 -158 q139 -115 139 -254q0 -135 -88 -205q-90 -72 -248 -71q-113 0 -188 26q-70 25 -70 62zM170 1419q14 33 25 47q16 23 32 23q14 0 62 -47q63 -63 92 -96l43 -50l80 97q43 49 67 73l27 27q47 -29 47 -55q0 -23 -102 -138q-100 -113 -121 -112.5t-127 102.5q-80 78 -125 129z " />
+<glyph unicode="&#x178;" horiz-adv-x="737" d="M12 1415q-6 14 13 17q10 2 114 2l99 -293q43 -115 86 -262q49 -166 53 -193q14 106 139 457l90 270q2 12 21 17q20 4 102 4l-299 -848v-559q0 -18 -14 -23q-16 -4 -99 -4v582zM156 1739q0 33 22 59q23 25 58 25q41 0 61 -22.5t20 -61.5q0 -33 -22 -60q-20 -25 -59 -24 q-80 0 -80 84zM444 1739q0 37 21 59q23 25 59 25q39 0 60 -23q23 -27 22 -61q0 -33 -22 -60q-23 -25 -60 -24q-80 0 -80 84z" />
+<glyph unicode="&#x17d;" horiz-adv-x="802" d="M47 45q0 29 10 55l564 1231h-435q-55 0 -84 -4v78q0 29 29 29h610q12 -16 13 -39q0 -27 -13 -58l-569 -1235h461q78 0 108 13v-88q0 -27 -26 -27h-649q-19 16 -19 45zM195 1829q14 33 26 47q18 23 30.5 22.5t61.5 -49.5q63 -63 93 -96l43 -47l79 96q43 49 70 76l25 25 q47 -29 47 -56q0 -25 -100.5 -137.5t-123.5 -112.5q-20 0 -127 103q-99 98 -124 129z" />
+<glyph unicode="&#x17e;" horiz-adv-x="743" d="M59 57q0 25 13 45l481 824h-248q-166 0 -231 -11q-4 37 -4 56q0 53 36 53h566q12 -12 12 -37q0 -33 -14 -59l-477 -822h237q184 0 248 17q2 -8 2 -53q0 -70 -43 -70h-557q-21 18 -21 57zM139 1419q14 33 25 47q16 23 33 23q14 0 61 -47q63 -63 92 -96l43 -50l80 97 q29 33 70 73l24 27q47 -29 47 -55q0 -23 -102 -138q-100 -113 -121 -112q-18 0 -125 102q-94 90 -127 129z" />
+<glyph unicode="&#x17f;" horiz-adv-x="354" d="M106 2q14 43 15 119v1081q0 166 86 238q88 72 252 71q98 0 167.5 -30.5t69.5 -59.5q0 -43 -28 -78q-86 68 -211 68q-119 0 -172 -57q-51 -53 -52 -195v-1122q0 -33 -14 -43t-51 -10q-44 0 -62 18z" />
+<glyph unicode="&#x192;" horiz-adv-x="974" d="M33 -338q0 35 14 66q63 -25 152 -25q53 0 84 6q35 6 71 27q39 20 58 74q20 57 20 133v979h-278v49q0 10 4 30q4 16 8 19q8 4 14 4h252v139q0 98 21 162q20 68 53 102.5t80 53.5q59 23 88 24q49 4 92 4q86 0 131 -18t45 -45q0 -33 -12 -64q-68 25 -152 25q-52 0 -86 -6 q-33 -6 -71.5 -26.5t-57.5 -74.5q-18 -52 -18 -135v-141h325q0 -59 -4 -84q-3 -18 -24 -18h-297v-975q0 -100 -21 -164q-20 -68 -53 -102.5t-80 -53.5q-59 -23 -88 -24q-49 -4 -92 -4q-80 0 -131 20q-47 18 -47 43z" />
+<glyph unicode="&#x237;" horiz-adv-x="370" d="M-231 -305q0 39 18 63q90 -53 197 -53q94 0 120 55q27 53 27 187v1022q0 39 19 47q16 8 94 8v-1100q0 -156 -53.5 -239.5t-198.5 -83.5q-102 0 -164 28q-59 29 -59 66z" />
+<glyph unicode="&#x2c6;" horiz-adv-x="491" d="M0 1227l227 233q16 4 27 4q25 0 41 -18q199 -199 199 -219q0 -12 -27 -26.5t-57 -14.5q-137 143 -158 176q-150 -174 -174 -174q-51 0 -78 39z" />
+<glyph unicode="&#x2c7;" horiz-adv-x="473" d="M0 1419q14 33 25 47q16 23 32 23q14 0 62 -47q63 -63 92 -96l43 -50l80 97q43 49 67 73l27 27q47 -29 47 -55q0 -23 -102 -138q-100 -113 -121 -112.5t-127 102.5q-80 78 -125 129z" />
+<glyph unicode="&#x2d8;" horiz-adv-x="497" d="M0 1413q0 43 63 62q63 -178 183 -179q49 0 84 27t51 55q2 4 35 74q18 31 49 12q33 -18 35 -51q-72 -225 -256 -225q-102 0 -172 82q-72 84 -72 143z" />
+<glyph unicode="&#x2d9;" horiz-adv-x="131" d="M2 1370q0 94 68 94q63 0 63 -92q-4 -96 -70 -96q-63 0 -61 94z" />
+<glyph unicode="&#x2da;" horiz-adv-x="366" d="M0 1360q0 186 193 186q90 0 135 -41q41 -39 41 -143q0 -186 -191 -186q-88 0 -133 43t-45 141zM88 1356q0 -98 92 -99q102 0 103 105q0 100 -90 100q-53 0 -78 -24q-27 -27 -27 -82z" />
+<glyph unicode="&#x2db;" horiz-adv-x="260" d="M0 -233q0 90 57 167q55 76 127 99q20 12 39 8q27 -6 37 -41q-63 -35 -110.5 -96.5t-47.5 -124.5q0 -90 82 -90q29 0 62 16q12 -25 14 -41q0 -20 -2 -24q-8 -39 -100 -39q-158 0 -158 166z" />
+<glyph unicode="&#x2dc;" horiz-adv-x="581" d="M0 1278q84 139 209 139q45 0 94 -51q49 -53 92 -53q45 0 76 24.5t45 44.5q16 23 23 23q10 0 22 -16q10 -12 19 -33l4 -17q-14 -33 -33 -53q-20 -25 -70 -53q-47 -29 -100 -29q-66 0 -115 56q-47 53 -78 53q-37 0 -61 -23q-27 -23 -43 -47q-16 -23 -25 -22q-32 0 -59 57z " />
+<glyph unicode="&#x2dd;" horiz-adv-x="604" d="M106 1212l205 304q12 23 41 22q12 0 25 -6q12 12 33 12q28 0 49 -18.5t24 -48.5l-229 -297q-10 -16 -31 -17q-18 0 -33 13l-2 -5q-10 -10 -26 -10q-20 0 -37 15q-15 11 -19 36z" />
+<glyph unicode="&#x394;" horiz-adv-x="899" d="M57 0l328 1366q16 74 82 74q39 0 55 -15l338 -1425h-803zM188 106h545l-270 1164h-6z" />
+<glyph unicode="&#x2206;" horiz-adv-x="899" d="M57 0l328 1366q16 74 82 74q39 0 55 -15l338 -1425h-803zM188 106h545l-270 1164h-6z" />
+<glyph unicode="&#x3a9;" horiz-adv-x="942" d="M94 49q0 57 39 57h133q-168 248 -168 666q0 356 95 518q96 164 301 164q193 0 272 -154q78 -150 78 -520q0 -240 -56 -415q-55 -178 -118 -259h168q10 -35 10 -51q0 -55 -43 -55h-273q80 121 140 315q59 197 59 410q0 334 -59 475q-57 137 -191 137q-137 0 -202 -133 q-66 -135 -66 -461q0 -223 57.5 -427.5t132.5 -315.5h-301q-8 22 -8 49z" />
+<glyph unicode="&#x2126;" horiz-adv-x="942" d="M94 49q0 57 39 57h133q-168 248 -168 666q0 356 95 518q96 164 301 164q193 0 272 -154q78 -150 78 -520q0 -240 -56 -415q-55 -178 -118 -259h168q10 -35 10 -51q0 -55 -43 -55h-273q80 121 140 315q59 197 59 410q0 334 -59 475q-57 137 -191 137q-137 0 -202 -133 q-66 -135 -66 -461q0 -223 57.5 -427.5t132.5 -315.5h-301q-8 22 -8 49z" />
+<glyph unicode="&#x3c0;" horiz-adv-x="903" d="M70 963q0 61 41 61h710q10 -27 10 -53q0 -55 -43 -56h-81v-882q0 -41 -60 -41q-31 0 -53 8v915h-295v-882q0 -41 -59 -41q-23 0 -54 8v915h-106q-10 25 -10 48z" />
+<glyph unicode="&#x2000;" horiz-adv-x="976" />
+<glyph unicode="&#x2001;" horiz-adv-x="1955" />
+<glyph unicode="&#x2002;" horiz-adv-x="976" />
+<glyph unicode="&#x2003;" horiz-adv-x="1955" />
+<glyph unicode="&#x2004;" horiz-adv-x="651" />
+<glyph unicode="&#x2005;" horiz-adv-x="487" />
+<glyph unicode="&#x2006;" horiz-adv-x="325" />
+<glyph unicode="&#x2007;" horiz-adv-x="325" />
+<glyph unicode="&#x2008;" horiz-adv-x="243" />
+<glyph unicode="&#x2009;" horiz-adv-x="389" />
+<glyph unicode="&#x200a;" horiz-adv-x="106" />
+<glyph unicode="&#x2010;" horiz-adv-x="591" d="M88 526v49q0 20 2 31q4 16 8 19q8 4 17 4h391q0 -53 -4 -82q-2 -20 -25 -21h-389z" />
+<glyph unicode="&#x2011;" horiz-adv-x="591" d="M88 526v49q0 20 2 31q4 16 8 19q8 4 17 4h391q0 -53 -4 -82q-2 -20 -25 -21h-389z" />
+<glyph unicode="&#x2012;" horiz-adv-x="591" d="M88 526v49q0 20 2 31q4 16 8 19q8 4 17 4h391q0 -53 -4 -82q-2 -20 -25 -21h-389z" />
+<glyph unicode="&#x2013;" horiz-adv-x="890" d="M88 526v49q0 20 2 31q4 16 8 19q8 4 17 4h690q0 -53 -4 -82q-2 -20 -25 -21h-688z" />
+<glyph unicode="&#x2014;" horiz-adv-x="1431" d="M12 526v49q0 20 2 31q4 16 9 19q8 4 16 4h1382q0 -53 -4 -82q-2 -20 -24 -21h-1381z" />
+<glyph unicode="&#x2018;" horiz-adv-x="323" d="M76 1284q0 90 49 213t76 123q41 0 47 -37q-45 -88 -47 -231q41 -25 41 -82q0 -33 -23 -60q-23 -25 -57 -24q-86 0 -86 98z" />
+<glyph unicode="&#x2019;" horiz-adv-x="323" d="M78 1212q45 92 47 232q-41 25 -41 82q0 35 22 61q20 23 60 23q84 0 84 -99q0 -90 -49 -212.5t-76 -122.5q-39 -1 -47 36z" />
+<glyph unicode="&#x201a;" horiz-adv-x="319" d="M78 -193q45 92 47 232q-41 25 -41 82q0 35 22 61q20 23 60 23q84 0 84 -99q0 -90 -49 -212.5t-76 -122.5q-39 -1 -47 36z" />
+<glyph unicode="&#x201c;" horiz-adv-x="608" d="M76 1284q0 90 49 213t76 123q41 0 47 -37q-45 -88 -47 -231q41 -25 41 -82q0 -33 -23 -60q-23 -25 -57 -24q-86 0 -86 98zM360 1284q0 96 48 213q49 123 77 123q39 0 47 -37q-45 -88 -47 -231q39 -25 39 -82q0 -33 -22 -60q-23 -25 -58 -24q-84 0 -84 98z" />
+<glyph unicode="&#x201d;" horiz-adv-x="608" d="M78 1212q45 92 47 232q-41 25 -41 82q0 35 22 61q20 23 60 23q84 0 84 -99q0 -90 -49 -212.5t-76 -122.5q-39 -1 -47 36zM360 1212q43 80 50 232q-41 25 -41 82q0 33 22 59q23 25 58 25q84 0 83 -99q0 -90 -49 -212.5t-73 -122.5q-41 -1 -50 36z" />
+<glyph unicode="&#x201e;" horiz-adv-x="604" d="M78 -193q45 92 47 232q-41 25 -41 82q0 35 22 61q20 23 60 23q84 0 84 -99q0 -90 -49 -212.5t-76 -122.5q-39 -1 -47 36zM360 -193q43 82 50 232q-41 25 -41 82q0 35 22 61q20 23 58 23q84 0 83 -99q0 -90 -49 -212.5t-73 -122.5q-41 -1 -50 36z" />
+<glyph unicode="&#x2020;" horiz-adv-x="880" d="M76 985q0 37 26 64l260 -31q20 -6 24.5 -28.5t-9.5 -37.5l-248 -28q-23 -4 -39 16q-14 16 -14 45zM381 16l29 889q4 16 14 23q16 8 27 6q15 -3 24 -12l29 -879q4 -25 -17 -41q-16 -14 -45 -14q-43 -1 -61 28zM381 1395q-4 25 16.5 39t48.5 14q39 0 60 -27l-29 -366 q-6 -23 -28.5 -27t-36.5 10zM500 976.5q-4 24.5 8 39.5l246 31q25 8 39 -12.5t14 -51.5q0 -41 -27 -61l-258 28q-18 2 -22 26.5z" />
+<glyph unicode="&#x2021;" horiz-adv-x="880" d="M76 449q0 39 26 61l258 -29q18 -6 22.5 -28.5t-7.5 -36.5l-246 -31q-25 -8 -39 12.5t-14 51.5zM76 985q0 37 26 64l260 -31q20 -6 24.5 -28.5t-9.5 -37.5l-248 -28q-23 -4 -39 16q-14 16 -14 45zM377 20l31 357q4 23 26.5 27t36.5 -11l31 -344q2 -27 -14.5 -41t-51.5 -14 q-36 -1 -59 26zM381 1395q-4 25 16.5 39t48.5 14q39 0 60 -27l-29 -366q-6 -23 -28.5 -27t-36.5 10zM403 504v393q0 29 23 35q27 6 55 -8v-392q0 -29 -22 -34q-22 -6 -56 6zM494 440q-3 22 12 37l248 29q25 4 39 -14q14 -16 14 -48q0 -39 -27 -63l-258 31q-24 5 -28 28z M500 976.5q-4 24.5 8 39.5l246 31q25 8 39 -12.5t14 -51.5q0 -41 -27 -61l-258 28q-18 2 -22 26.5z" />
+<glyph unicode="&#x2022;" horiz-adv-x="436" d="M104 578q0 55 33 94t90 39q59 0 95 -37q35 -39 34 -96q0 -53 -34 -95q-33 -39 -95 -39q-123 1 -123 134z" />
+<glyph unicode="&#x2026;" horiz-adv-x="997" d="M90 82q0 41 23 65q25 27 63 27q90 0 90 -92q0 -37 -24 -66q-25 -27 -66 -26q-86 0 -86 92zM412 82q0 37 24 65q25 27 62 27q90 0 90 -92q0 -37 -25 -66q-25 -27 -65 -26q-86 0 -86 92zM733 82q0 41 23 65q25 27 63 27q90 0 90 -92q0 -37 -24 -66q-25 -27 -66 -26 q-86 0 -86 92z" />
+<glyph unicode="&#x202f;" horiz-adv-x="389" />
+<glyph unicode="&#x2030;" horiz-adv-x="2050" d="M125 1075q0 377 289 377q143 0 207 -82q66 -84 65 -293q0 -379 -283 -379q-76 0 -118 15q-49 16 -86 53t-55.5 114.5t-18.5 194.5zM229 25l865 1427q66 -18 65 -51q0 -4 -215 -361l-430 -708l-215 -352q-70 14 -70 45zM233 1067q0 -164 39 -221.5t129 -57.5 q178 0 179 289q0 166 -39 223q-41 59 -127 60q-181 0 -181 -293zM748 360q0 377 288 377q141 0 207 -84t66 -293q0 -379 -281 -378q-145 0 -213 75q-67 78 -67 303zM856 352q0 -164 41 -223q39 -57 127 -57q180 0 180 288q0 160 -41 224q-41 61 -125 61q-182 0 -182 -293z M1364 360q0 377 291 377q141 0 206.5 -84t65.5 -293q0 -379 -282 -378q-76 0 -119 14q-49 16 -86 53q-39 39 -58 115q-18 76 -18 196zM1473 352q0 -162 40.5 -221t128.5 -59q178 0 179 288q0 164 -39 224q-41 61 -127 61q-182 0 -182 -293z" />
+<glyph unicode="&#x2039;" horiz-adv-x="522" d="M57 512q0 53 305 512q18 0 35 -14q23 -18 27 -29l6 -14q0 -23 -65 -138q-66 -117 -134 -217l-65 -100q272 -395 272 -442q-27 -70 -65 -70q-316 453 -316 512z" />
+<glyph unicode="&#x203a;" horiz-adv-x="522" d="M88 67.5q0 22.5 68 133.5q37 61 137 211l67 100q-266 397 -266 455q0 39 70 57q303 -457 303 -512q0 -23 -78 -154q-68 -113 -158 -241l-77 -117l-19 6q-12 4 -29 21q-18 18 -18 40.5z" />
+<glyph unicode="&#x2044;" horiz-adv-x="399" d="M-250 27l817 1400q8 27 37 27q43 0 76 -43l-819 -1411q-8 -18 -33 -18q-51 0 -78 45z" />
+<glyph unicode="&#x205f;" horiz-adv-x="487" />
+<glyph unicode="&#x2074;" horiz-adv-x="837" d="M106 797q0 27 15 63q41 127 147 293q111 172 205 262q37 39 92 39q10 0 47 -6v-596h144q10 -27 10 -55q0 -53 -35 -54h-119v-122q0 -39 -61 -39q-20 0 -45 6v155h-383q-17 21 -17 54zM217 846h291l4 467q-86 -78 -168 -207q-90 -139 -127 -260z" />
+<glyph unicode="&#x20ac;" d="M45 430q0 57 8 74q10 20 39 20h135v29q0 94 6 170h-188q0 57 8 74q10 20 39 20h152q23 135 59 219q39 86 96 131q53 41 107 58q55 16 114.5 16t108.5 -16.5t66 -32.5q20 -20 20 -31q0 -53 -22 -76q-10 8 -60 31q-43 18 -90 19q-41 0 -82 -11q-37 -8 -78 -40.5t-71 -98.5 q-33 -72 -47 -168h333q0 -53 -10 -73.5t-37 -20.5h-299q-6 -76 -6 -170v-29h277q0 -59 -9 -75q-8 -18 -39 -19h-225q10 -113 30.5 -182.5t59.5 -104.5q37 -33 72 -43q37 -10 86 -10q125 0 199 74q18 -37 18 -76q0 -31 -71.5 -69.5t-163.5 -38.5q-72 0 -127.5 16t-102.5 57 q-49 43 -80 140q-29 92 -39 237h-186z" />
+<glyph unicode="&#x2122;" horiz-adv-x="1083" d="M70 1368v45q0 16 20 21h414v-45q0 -20 -19 -21h-155v-565q0 -12 -11 -17q-6 -2 -59 -2v584h-190zM553 784v629q0 20 20 21h43l103 -285l49 -125l41 123l98 266q6 20 21 21h49v-629q0 -12 -10 -17q-12 -4 -60 -4l2 234q0 35 6 237l-22 -65q-6 -20 -12.5 -35.5t-10.5 -26.5 q-2 -6 -4 -13t-4 -11l-2 -4l-67 -176q-4 -10 -11 -11h-43l-71 187l-56 151q8 -182 9 -235l2 -211q0 -14 -9 -17q-12 -4 -61 -4z" />
+<glyph unicode="&#x2202;" horiz-adv-x="892" d="M94 526q0 252 92 383q92 133 258 133q139 0 226 -92q-77 304 -357 516q23 55 78 56q27 0 45 -19q197 -151 289 -368q94 -223 94 -543q0 -135 -12 -234q-12 -90 -51 -190q-35 -90 -111 -139q-74 -49 -182 -49q-188 0 -279 129q-90 130 -90 417zM207 510q0 -432 254 -432 q78 0 131 41q47 37 74 121q23 74 32 159q8 72 9 199q0 111 -11 197q-86 143 -227 143q-127 0 -194.5 -112.5t-67.5 -315.5z" />
+<glyph unicode="&#x220f;" horiz-adv-x="903" d="M70 1372q0 61 41 62h710q10 -27 10 -54q0 -55 -43 -55h-81v-1679q0 -41 -60 -41q-20 0 -53 8v1712h-295v-1679q0 -41 -59 -41q-23 0 -54 8v1712h-106q-10 24 -10 47z" />
+<glyph unicode="&#x2211;" horiz-adv-x="829" d="M119 -389l334 821l-332 1002h555q6 -31 6 -43q0 -63 -39 -64h-360l286 -903l-293 -707h410q6 -25 6 -49q0 -57 -39 -57h-534z" />
+<glyph unicode="&#x2212;" d="M86 526v49q0 20 2 31q4 16 8 19q8 4 17 4h690q0 -53 -4 -82q-2 -20 -25 -21h-688z" />
+<glyph unicode="&#x221a;" horiz-adv-x="952" d="M113 453q20 27 65 26q43 0 49 -30l162 -605l209 1590h305q8 -23 8 -54q0 -53 -39 -53h-174l-225 -1665q-8 -57 -76 -57q-27 0 -61 10z" />
+<glyph unicode="&#x221e;" horiz-adv-x="1273" d="M106 547q0 121 62 207q59 84 211 84q104 0 162 -50q59 -51 108 -135q55 90 111 135q61 49 153 50q119 0 187 -76q70 -80 69 -215q0 -291 -247 -301q-27 -2 -76 8q-141 29 -215 186q-119 -184 -262 -184q-127 0 -195 82q-68 83 -68 209zM217 547q0 -78 41 -131.5 t117 -53.5q68 0 119 48q47 45 94 135l-2 8q-25 72 -70 119q-45 49 -106 51q-53 4 -91 -12q-102 -37 -102 -164zM692 543q78 -188 199 -189q77 0 123 49q45 47 45 144q0 137 -105 174q-23 8 -63 4q-31 0 -60 -12q-27 -12 -38 -25l-33 -39q-5 -6 -68 -106z" />
+<glyph unicode="&#x222b;" horiz-adv-x="974" d="M33 -338q0 35 14 66q63 -25 152 -25q53 0 84 6q35 6 71 27q39 20 58 74q20 57 20 133v1220q0 98 21 162q20 68 53 102.5t80 53.5q59 23 88 24q49 4 92 4q86 0 131 -18t45 -45q0 -33 -12 -64q-68 25 -152 25q-52 0 -86 -6q-33 -6 -71.5 -26.5t-57.5 -74.5 q-18 -52 -18 -135v-1218q0 -100 -21 -164q-20 -68 -53 -102.5t-80 -53.5q-59 -23 -88 -24q-49 -4 -92 -4q-80 0 -131 20q-47 18 -47 43z" />
+<glyph unicode="&#x2248;" horiz-adv-x="817" d="M31 393q37 49 94 84q66 39 141 39q71 0 148 -49q78 -49 139 -49q84 0 182 80q18 10 35 -6q14 -14 21 -48q-90 -133 -246 -133q-84 0 -156 51.5t-123 51.5q-90 0 -160 -82q-27 -18 -49 4q-24 24 -26 57zM31 657q96 127 241 127q68 0 146 -51q74 -49 135 -49q96 0 160 82 q16 16 35 10q20 -6 28 -24q6 -31 -2 -62q-80 -111 -225 -110q-78 0 -156 49q-77 49 -129 49q-31 0 -65 -10q-27 -8 -47 -21q-14 -8 -41 -29q-6 -6 -13.5 -10l-11.5 -6l-4 -2q-14 -8 -31 8q-18 18 -20 49z" />
+<glyph unicode="&#x2260;" horiz-adv-x="817" d="M49 281v49q0 20 2 30q2 14 10.5 18.5t14.5 4.5h221l94 254h-342v49q0 18 2 29q4 16 10 20q8 4 15 4h352l100 271q10 29 39 28q33 0 74 -39l-96 -260h221q0 -57 -4 -82q-4 -20 -25 -20h-229l-92 -254h350q0 -57 -4 -82q-4 -20 -25 -20h-360l-98 -271q-10 -23 -39 -22 q-41 0 -74 39l92 254h-209z" />
+<glyph unicode="&#x2264;" horiz-adv-x="851" d="M104 578q0 43 39 63l549 270q37 -37 41 -75q0 -25 -22 -37l-459 -226l487 -211q-4 -41 -18 -65q-16 -25 -33 -25q-20 0 -49 15l-514 225q-21 27 -21 66zM119 0q0 57 4 82q4 20 24 20h603q0 -59 -5 -84q-3 -18 -24 -18h-602z" />
+<glyph unicode="&#x2265;" horiz-adv-x="841" d="M104 815q2 39 19 64q16 27 35 26q10 0 47 -14l514 -225q20 -27 20 -68q0 -43 -39 -63l-550 -271q-37 39 -37 76q0 29 20 37l459 225zM119 0q0 57 4 82q4 20 24 20h586q0 -59 -4 -84q-3 -18 -24 -18h-586z" />
+<glyph unicode="&#x25ca;" horiz-adv-x="958" d="M74 717l409 727l410 -727l-410 -727zM197 717l286 -504l285 504l-285 506z" />
+<glyph unicode="&#xe000;" horiz-adv-x="1025" d="M0 1025h1025v-1025h-1025v1025z" />
+<glyph unicode="&#xfb00;" horiz-adv-x="940" d="M31 926q0 63 4 84q2 14 26 14h125v152q0 113 33 180t90 100q51 29 101 39q47 10 96 10q113 0 213 -65q80 74 237 73q176 0 177 -71q0 -25 -13 -56q-63 25 -151 25q-53 0 -84 -8q-47 -12 -74 -31q-41 -27 -57 -78q-18 -55 -19 -137v-133h213q0 -63 -4 -84q-2 -14 -22 -14 h-187v-899q0 -27 -28 -27h-84v926h-324v-899q0 -27 -29 -27h-84v926h-155zM299 1024h324v129q0 125 36 207q-63 45 -161 45q-31 0 -60 -6q-23 -4 -61 -25q-35 -16 -58 -69q-20 -47 -20 -125v-156z" />
+<glyph unicode="&#xfb03;" horiz-adv-x="1257" d="M29 926q0 63 4 84q2 14 28 14h123v152q0 113 33 180q33 70 88 100q51 29 101 39q47 10 98 10q113 0 213 -65q80 74 252 73q207 0 207 -73q0 -37 -13 -68q-80 39 -192 39q-52 0 -86 -6q-33 -6 -74 -33q-39 -27 -57 -80q-18 -55 -19 -141v-127h172q0 -63 -4 -84 q-2 -14 -24 -14h-144v-899q0 -27 -28 -27h-84v926h-326v-899q0 -27 -27 -27h-86v926h-155zM297 1024h326v129q0 129 36 207q-63 45 -161 45q-34 0 -62 -6q-23 -4 -61 -25q-35 -16 -58 -69q-20 -47 -20 -125v-156zM1028 0v969q0 39 21 47q18 8 92 8v-997q0 -18 -13 -23 q-16 -4 -100 -4z" />
+<glyph unicode="&#xfb04;" horiz-adv-x="1280" d="M29 926q0 63 4 84q2 14 28 14h123v152q0 113 33 180q33 70 88 100q51 29 101 39q47 10 98 10q109 0 207 -61q70 70 217 69q138 0 233 -55l-2 -2h2v-1429q0 -18 -12 -23q-16 -4 -98 -4v1391q-55 18 -117 18q-53 0 -72 -4q-31 -6 -61 -27q-33 -20 -49.5 -75.5t-16.5 -133.5 v-145h172q0 -63 -4 -84q-2 -14 -24 -14h-144v-899q0 -27 -28 -27h-84v926h-326v-899q0 -27 -27 -27h-86v926h-155zM297 1024h326v129q0 125 34 207q-63 45 -159 45q-34 0 -62 -6q-23 -4 -61 -25q-35 -16 -58 -69q-20 -47 -20 -125v-156z" />
+<glyph horiz-adv-x="1351" d="M55 924q0 63 4 84q4 16 23 16h125v324q0 33 18.5 39t93.5 6v-369h248q0 -63 -4 -84q-4 -16 -20 -16h-224v-629q0 -59 5 -113q2 -37 26 -71q23 -31 64 -31q66 0 133 33q8 -31 8 -60q0 -37 -47 -55q-49 -18 -119 -18q-59 0 -98 22q-37 23 -55 70q-16 43 -23 96 q-6 49 -6 129v627h-152zM670 57q0 25 12 45l481 824h-248q-166 0 -231 -11q-4 37 -4 56q0 53 37 53h565q12 -12 12 -37q0 -33 -14 -59l-477 -822h237q184 0 248 17q2 -8 2 -53q0 -70 -43 -70h-557q-20 18 -20 57z" />
+<glyph horiz-adv-x="835" d="M92 479q0 158 35 279q33 115 98 176q61 59 131 84q74 27 150 26q133 0 217 -73v-1069q0 -160 -92 -236q-90 -76 -250 -76q-115 0 -188.5 31t-73.5 70q0 37 24 67q111 -61 242 -61q90 0 157.5 49t67.5 172v160q-35 -41 -96 -68q-68 -29 -137 -28q-137 0 -211 108 q-74 106 -74 389zM213 479q0 -395 195 -395q145 0 204 141v676q-43 47 -135 47q-45 0 -92 -20q-39 -16 -84 -68q-41 -47 -65 -145q-23 -91 -23 -236z" />
+<glyph horiz-adv-x="503" d="M27 926q0 63 4 84q2 14 28 14h123v248q0 240 221 239q135 0 136 -59q0 -33 -13 -57q-37 18 -104 18q-61 0 -94 -30.5t-33 -122.5v-236h213q0 -63 -4 -84q-2 -14 -25 -14h-184v-899q0 -27 -29 -27h-84v926h-155z" />
+<glyph horiz-adv-x="921" d="M94 436q0 125 64 203q66 82 166 111q-76 8 -137.5 67.5t-61.5 175.5q0 141 92 232q90 88 248 100v197q0 29 22 39q18 8 80 8v-246q86 -8 158 -43q70 -35 100 -63q29 -29 29 -52q0 -41 -41 -94q-102 145 -293 146q-127 0 -201 -60q-78 -61 -77 -170q0 -172 213 -172 q68 0 135 10l-17 -110q-178 -6 -268 -82t-90 -189q0 -94 67.5 -155.5t200.5 -61.5q215 0 326 162q47 -47 47 -90q0 -14 -18 -39q-25 -33 -50 -55q-35 -33 -96 -55q-70 -27 -143 -35v-187q0 -29 -23 -39q-25 -10 -80 -10v234q-352 12 -352 323z" />
+<glyph horiz-adv-x="1351" d="M88 815q0 304 86 449t287 145q100 0 170 -68q72 -68 71 -233q0 -47 -12 -119q-12 -70 -31 -76l259 33v205q0 61 24 80q27 20 90 20v-290l234 34q0 -66 -9 -84q-10 -23 -40 -26q-104 -15 -185 -25v-553q0 -135 19 -180q18 -47 79 -47q92 0 144 22q8 -27 8 -63 q0 -55 -178 -55q-104 0 -146 61q-41 63 -40 262v541q-455 -53 -713 -53q0 -119 16 -205q14 -78 53 -113q35 -33 68 -41q31 -8 90 -8q158 0 248 154q33 -39 33 -86q0 -27 -31 -64q-33 -39 -100 -72q-74 -35 -162 -34q-78 0 -139 20q-57 18 -103 70q-49 55 -69.5 149 t-20.5 250zM205 885q66 0 151.5 6t141.5 12l53 6q27 6 35 70q10 72 10 104q0 129 -37 181q-37 53 -106 53q-94 0 -166 -96q-74 -98 -82 -336z" />
+<glyph horiz-adv-x="987" d="M106 2q14 43 15 119v1083q0 166 86 234q88 70 258 69q59 0 119 -16q57 -16 84 -37q29 -23 28 -35q0 -27 -28 -80q-84 66 -211 66q-119 0 -172 -59q-51 -57 -52 -207v-115h676q16 -33 -14 -98l-270 -410q133 -18 227 -102q92 -82 92 -232q0 -203 -104 -332 q-102 -127 -295 -126q-78 0 -133 16q-51 14 -72 35q-18 18 -18 37q0 41 26 79q84 -59 191 -59q132 0 209 92q76 90 75 250q0 186 -166 242q-74 27 -202 28l315 482h-537v-860q0 -47 -14 -64q-14 -18 -51 -18q-44 0 -62 18z" />
+<glyph horiz-adv-x="735" d="M51 926q0 90 10 96q2 2 11 2h575q18 -34 -12 -98l-273 -410q137 -18 228 -100q92 -83 92 -234q0 -203 -104 -332q-102 -127 -293 -126q-80 0 -135 18q-59 20 -74 35q-16 16 -17 35q0 45 27 79q90 -59 190 -59q132 0 209 92q78 94 78 250q0 182 -166 242q-74 25 -202 28 l313 482h-457z" />
+<glyph horiz-adv-x="1058" d="M6 924q0 63 4 84q4 16 23 16h168v324q0 33 18.5 39t91.5 6v-369h662q20 -31 -12 -98l-271 -410q133 -18 228 -102q90 -82 90 -232q0 -207 -101 -332q-102 -127 -289 -126q-70 0 -124 16q-51 14 -68 31q-18 18 -18 32q0 33 26 82q84 -53 180 -53q127 0 201 92t74 250 q0 182 -166 242q-74 27 -203 28l314 480h-523v-883q0 -31 -14 -37q-10 -4 -96 -4v924h-195z" />
+<glyph horiz-adv-x="1675" d="M100 717q0 338 201 536q205 201 537 201q330 0 534 -201q203 -201 203 -536.5t-203 -536.5q-205 -201 -534 -200q-332 0 -537 200q-201 199 -201 537zM371 637q0 -37 43 -37h10q2 0 6 1l4 1q8 0 10 -2l119 -192v-70q0 -16 -12 -16q-6 0 -14 4q-4 2 -13 2q-37 0 -37 -39 q0 -35 43 -35q8 0 37 4t35 4q4 0 37 -4t37 -4q45 0 45 37t-33 37q-14 0 -20 -2q-4 -2 -7 -3q-2 -1 -4 -1q-12 0 -12 16v74l119 186q2 6 8 6q4 0 8 -1t6 -1h13q27 0 32 19q16 -18 31 -19h17q4 0 7 1l3 1q12 0 12 -26v-232q0 -25 -12 -24q-6 0 -12.5 2t-14.5 2q-35 0 -35 -35 q0 -37 41 -37q2 0 7.5 1t12.5 2t15 1q37 4 41 4q8 0 37 -4t31 -4q43 0 43 35q0 37 -35 37q-8 0 -14.5 -2t-12.5 -2q-12 0 -12 26v199l139 -252q27 -49 64 -49q55 0 55 90v242q0 25 14 24h11q39 0 39 35q0 39 -41 39q-18 0 -33 -2q-29 -4 -33 -4q-6 0 -35 4q-14 2 -31 2 q-23 0 -34 -12q-10 -10 -11 -27q0 -35 37 -35h17q23 0 22 -24v-201l-143 262l-4 12q-2 25 -39 25q-14 0 -24.5 -2t-29 -2t-30.5 2t-23 2q-29 0 -34 -23q-10 23 -35 23q-18 0 -35 -2q-33 -4 -39 -4t-35 4q-14 2 -31 2q-39 0 -38 -39q0 -37 38 -37q6 0 11 2q-2 -4 -13.5 -23.5 t-19.5 -35.5q-27 -45 -29 -54l-69 113h4q45 0 45 35q0 39 -41 39q-8 0 -33 -4t-31 -4q-2 0 -34.5 4t-36.5 4q-41 0 -41 -39zM461 795q0 -41 43 -41q25 0 45 6q14 4 34.5 4t32.5 -4q18 -6 35 -6q43 0 43 41q0 35 -35 34l-5 -1q-5 -1 -9 -1h-14q-10 0 -10 25v229q0 25 10 25 h14q4 0 9 -1l5 -1q8 0 23 10q12 9 12 25q0 37 -43 37q-18 0 -33 -2l-36 -5q-10 0 -39 5q-14 2 -35 2q-47 0 -47 -37q0 -12 10 -23q12 -12 27 -12q2 0 6 1t8 1h14q10 0 11 -25v-229q0 -25 -11 -25h-14q-4 0 -8 1t-6 1q-37 1 -37 -34zM731 1057q0 -63 39 -111q47 -59 111 -108 q76 -59 112 -109q37 49 113 109q68 53 111 106q41 51 40.5 112.5t-36.5 94.5q-39 35 -91 35q-88 0 -137 -90q-49 90 -137 90q-49 0 -88 -35q-37 -33 -37 -94z" />
+<glyph horiz-adv-x="350" />
+</font>
+</defs></svg> 
\ No newline at end of file
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/fonts/kreon-regular-webfont.eot
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/fonts/kreon-regular-webfont.eot
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/fonts/kreon-regular-webfont.eot	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/fonts/kreon-regular-webfont.eot	(revision 47450)

Property changes on: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/fonts/kreon-regular-webfont.eot
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/images/box_info.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/images/box_info.png
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/images/box_info.png	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/images/box_info.png	(revision 47450)

Property changes on: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/images/box_info.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/images/exclamation-icon.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/images/exclamation-icon.png
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/images/exclamation-icon.png	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/images/exclamation-icon.png	(revision 47450)

Property changes on: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/images/exclamation-icon.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/images/info-left.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/images/info-left.png
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/images/info-left.png	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/images/info-left.png	(revision 47450)

Property changes on: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/images/info-left.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/images/line_dotted.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/images/line_dotted.png
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/images/line_dotted.png	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/images/line_dotted.png	(revision 47450)

Property changes on: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/images/line_dotted.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/images/icon_download.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/images/icon_download.png
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/images/icon_download.png	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/images/icon_download.png	(revision 47450)

Property changes on: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/images/icon_download.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/images/icon_folder.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/images/icon_folder.png
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/images/icon_folder.png	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/images/icon_folder.png	(revision 47450)

Property changes on: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/images/icon_folder.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/images/icon_external.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/images/icon_external.png
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/images/icon_external.png	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/images/icon_external.png	(revision 47450)

Property changes on: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/images/icon_external.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/images/help1.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/images/help1.png
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/images/help1.png	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/images/help1.png	(revision 47450)

Property changes on: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/images/help1.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/images/module_separator_m.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/images/module_separator_m.png
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/images/module_separator_m.png	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/images/module_separator_m.png	(revision 47450)

Property changes on: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/images/module_separator_m.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/images/number-2.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/images/number-2.png
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/images/number-2.png	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/images/number-2.png	(revision 47450)

Property changes on: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/images/number-2.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/images/spinner.gif
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/images/spinner.gif
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/images/spinner.gif	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/images/spinner.gif	(revision 47450)

Property changes on: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/images/spinner.gif
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/images/page_bg.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/images/page_bg.png
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/images/page_bg.png	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/images/page_bg.png	(revision 47450)

Property changes on: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/images/page_bg.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/images/img03.gif
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/images/img03.gif
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/images/img03.gif	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/images/img03.gif	(revision 47450)

Property changes on: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/images/img03.gif
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/registrationsReport.jsp
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/registrationsReport.jsp	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/registrationsReport.jsp	(revision 47450)
@@ -0,0 +1,74 @@
+<%@ page contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<%@ taglib prefix="s" uri="/struts-tags"%>
+<%@ taglib prefix="sj" uri="/struts-jquery-tags"%>
+<html>
+<head>
+<link href="jsps/style.css" rel="stylesheet" type="text/css" media="screen" />
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<!--<meta http-equiv="refresh" content="13" >-->
+<title><s:text name="manageJobs.sendReports.title"/></title>
+<link href="jsps/favicon.ico" rel="shortcut icon" type="image/x-icon" />
+<sj:head />
+</head>
+<body class="left">
+
+<div id="wrapper">
+	<jsp:include page="menu.jsp"/>
+	<div id="page">
+		<div id="page-bgtop">
+			<div id="middle">
+                <div class="middle-b">
+                    <div class="background">
+                    	<div id="left">
+                        	<div id="left_container">
+	                             <h2 class="helpHdr">Info</h2>
+                                 <s:text name="help.browsevalidations"/>
+                            </div>
+                        </div>
+                        <div id="main">
+                            <div id="main_container" class="clearfix">
+                                <div id="mainmiddle" class="floatbox">
+                                    <h1 class="title"><s:text name="manageJobs.sendReports.title"/></h1>
+<%--                                     <s:if test="%{enableCuration}"> --%>
+	                                    <s:form action="sendRegistrationsReport">
+	                                   		 <s:select name="month" 
+ 	                                    		key="manageJobs.sendReports.selectMonth"
+  	                          					list="#{'January-01':'January','February-02':'February','March-03':'March',
+  	                          					'April-04':'April','May-05':'May','June-06':'June',
+  	                          					'July-07':'July','August-08':'August','September-09':'September',
+  	                          					'October-10':'October','November-11':'November','December-12':'December'}"
+                                             	required="true"
+ 	  					                    />
+ 	  					                    <s:select name="year" 
+ 	                                    		key="manageJobs.sendReports.selectYear"
+  	                          					list="#{'2013':'2013','2014':'2014','2015':'2015'}"
+                                             	required="true"
+ 	  					                    />
+<%--      										<sj:datepicker name="manageJobs.sendReports.selectDateFrom" changeMonth="true" changeYear="true" displayFormat="yy-mm-dd"/> --%>
+<%--      										<sj:datepicker name="manageJobs.sendReports.selectMonthDateTo" changeMonth="true" changeYear="true" displayFormat="yy-mm-dd"/> --%>
+     										
+<%-- 	                                    	<s:select name="mode"  --%>
+<%-- 	                                    		key="manageJobs.deleteJobs.whatToDelete" --%>
+<%--  	                          					list="#{'all':'All jobs', 'compTest_only':'Compatibility Tests only', 'uncompleted_only':'Uncompleted jobs'}" --%>
+<%--                                             	required="true" --%>
+<%-- 	  					                    /> --%>
+	                                    	<s:submit cssClass="button-default"/>
+	                                    </s:form>
+<%-- 	                               </s:if> --%>
+                                    
+								</div>
+                            </div>
+                        </div>
+                    </div>
+                </div>
+            </div>
+		</div>
+		<!-- NMI This needs to be the same in all pages and the text is some properties file -->
+        <div id="footer"> 
+           <jsp:include page="footer.jsp"/>
+        </div>
+	</div>
+</div>
+</body>
+</html>
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/signin.jsp
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/signin.jsp	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/signin.jsp	(revision 47450)
@@ -0,0 +1,76 @@
+<%@ page contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<%@ taglib prefix="s" uri="/struts-tags"%>
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title><s:text name="login.title"/></title>
+<link href="jsps/favicon.ico" rel="shortcut icon" type="image/x-icon" />
+<link href="jsps/style.css" rel="stylesheet" type="text/css" media="screen" />
+</head>
+<body>
+<div id="wrapper">
+	<jsp:include page="menu.jsp"/>
+	<div id="page">
+		<div id="page-bgtop">
+			<div id="middle">
+                <div class="middle-b">
+                    <div class="background">
+                        <div class="main">
+                        <div id="main_container" class="clearfix">
+                                <div id="mainmiddle" class="floatbox">
+                                    <s:actionerror/>
+                                    <div class="post">
+                                        <h2 class="title"><s:text name="login.title"/></h2>
+                                        <s:text name="login.description"/>
+                                        <%--<p class="meta"><a href='<s:url value="/jsps/help.jsp#login"/>' target="_blank"><s:text name="help"/></a></p>--%>
+                                        <div class="entry">
+                                            <s:form action="Login">
+                                                <s:if test="%{repoMode.trim().toLowerCase().equals(\"dnet\")}">
+                                                    <s:textfield name="email" key="registration.username"/>
+                                                </s:if>
+                                                <s:else>
+                                                    <s:textfield name="email" key="registration.email"/>
+                                                </s:else>
+                                                <s:password name="password" key="registration.password"/>
+                                                <%-- <s:checkbox name="rememberme" key="registration.rememberme"/> --%>
+                                                <s:submit/>
+                                            </s:form>
+                                            <a href='<s:url value="forgotPassword" />'><s:text name="login.forgotpassword"/></a>
+                                        </div>
+                                    </div>
+                                    <div class="post">
+                                        <h2 class="title"><s:text name="registration.title"/></h2>
+                                        <s:text name="registration.description"/>
+                                        <%--<p class="meta"><a href='<s:url value="/jsps/help.jsp#registration"/>' target="_blank"><s:text name="help"/></a></p>--%>
+                                        <div class="entry">
+                                            <%-- <s:if test="%{@gr.uoa.di.validatorweb.configs.Constants@isModeLdap()}">
+                                                <s:text name="registration.ldap.message"/>
+                                            </s:if> --%>
+                                            <s:form action="Register">
+                                                <s:if test="%{repoMode.trim().toLowerCase().equals(\"dnet\")}">
+                                                    <s:textfield name="username" key="registration.username"/>
+                                                    <s:textfield name="firstName" key="registration.firstName"/>
+                                                    <s:textfield name="lastName" key="registration.lastName"/>
+                                                </s:if>
+                                                <s:textfield name="email" key="registration.email"/>
+                                                <s:password name="password" key="registration.password"/>
+                                                <s:password name="repassword" key="registration.repassword"/>
+                                                <s:submit/>
+                                            </s:form>
+                                        </div>
+                                    </div>
+								</div>
+                            </div>
+                        </div>
+                    </div>
+                </div>
+            </div>
+		</div>
+		  <div id="footer"> 
+           <jsp:include page="footer.jsp"/>
+        </div>
+	</div>
+</div>
+</body>
+</html>
\ No newline at end of file
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/fonts/OpenSans-Light-webfont.eot
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/fonts/OpenSans-Light-webfont.eot
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/fonts/OpenSans-Light-webfont.eot	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/fonts/OpenSans-Light-webfont.eot	(revision 47450)

Property changes on: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/fonts/OpenSans-Light-webfont.eot
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/fonts/DroidSans-webfont.woff
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/fonts/DroidSans-webfont.woff
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/fonts/DroidSans-webfont.woff	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/fonts/DroidSans-webfont.woff	(revision 47450)

Property changes on: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/fonts/DroidSans-webfont.woff
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/fonts/OpenSans-Light-webfont.woff
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/fonts/OpenSans-Light-webfont.woff
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/fonts/OpenSans-Light-webfont.woff	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/fonts/OpenSans-Light-webfont.woff	(revision 47450)

Property changes on: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/fonts/OpenSans-Light-webfont.woff
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/fonts/YanoneKaffeesatz-Light-webfont.woff
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/fonts/YanoneKaffeesatz-Light-webfont.woff
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/fonts/YanoneKaffeesatz-Light-webfont.woff	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/fonts/YanoneKaffeesatz-Light-webfont.woff	(revision 47450)

Property changes on: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/fonts/YanoneKaffeesatz-Light-webfont.woff
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/js/mootools-1.2.5-core-nc.js
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/js/mootools-1.2.5-core-nc.js	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/js/mootools-1.2.5-core-nc.js	(revision 47450)
@@ -0,0 +1,4288 @@
+/*
+---
+
+name: Core
+
+description: The core of MooTools, contains all the base functions and the Native and Hash implementations. Required by all the other scripts.
+
+license: MIT-style license.
+
+copyright: Copyright (c) 2006-2008 [Valerio Proietti](http://mad4milk.net/).
+
+authors: The MooTools production team (http://mootools.net/developers/)
+
+inspiration:
+  - Class implementation inspired by [Base.js](http://dean.edwards.name/weblog/2006/03/base/) Copyright (c) 2006 Dean Edwards, [GNU Lesser General Public License](http://opensource.org/licenses/lgpl-license.php)
+  - Some functionality inspired by [Prototype.js](http://prototypejs.org) Copyright (c) 2005-2007 Sam Stephenson, [MIT License](http://opensource.org/licenses/mit-license.php)
+
+provides: [MooTools, Native, Hash.base, Array.each, $util]
+
+...
+*/
+
+var MooTools = {
+	'version': '1.2.5',
+	'build': '008d8f0f2fcc2044e54fdd3635341aaab274e757'
+};
+
+var Native = function(options){
+	options = options || {};
+	var name = options.name;
+	var legacy = options.legacy;
+	var protect = options.protect;
+	var methods = options.implement;
+	var generics = options.generics;
+	var initialize = options.initialize;
+	var afterImplement = options.afterImplement || function(){};
+	var object = initialize || legacy;
+	generics = generics !== false;
+
+	object.constructor = Native;
+	object.$family = {name: 'native'};
+	if (legacy && initialize) object.prototype = legacy.prototype;
+	object.prototype.constructor = object;
+
+	if (name){
+		var family = name.toLowerCase();
+		object.prototype.$family = {name: family};
+		Native.typize(object, family);
+	}
+
+	var add = function(obj, name, method, force){
+		if (!protect || force || !obj.prototype[name]) obj.prototype[name] = method;
+		if (generics) Native.genericize(obj, name, protect);
+		afterImplement.call(obj, name, method);
+		return obj;
+	};
+
+	object.alias = function(a1, a2, a3){
+		if (typeof a1 == 'string'){
+			var pa1 = this.prototype[a1];
+			if ((a1 = pa1)) return add(this, a2, a1, a3);
+		}
+		for (var a in a1) this.alias(a, a1[a], a2);
+		return this;
+	};
+
+	object.implement = function(a1, a2, a3){
+		if (typeof a1 == 'string') return add(this, a1, a2, a3);
+		for (var p in a1) add(this, p, a1[p], a2);
+		return this;
+	};
+
+	if (methods) object.implement(methods);
+
+	return object;
+};
+
+Native.genericize = function(object, property, check){
+	if ((!check || !object[property]) && typeof object.prototype[property] == 'function') object[property] = function(){
+		var args = Array.prototype.slice.call(arguments);
+		return object.prototype[property].apply(args.shift(), args);
+	};
+};
+
+Native.implement = function(objects, properties){
+	for (var i = 0, l = objects.length; i < l; i++) objects[i].implement(properties);
+};
+
+Native.typize = function(object, family){
+	if (!object.type) object.type = function(item){
+		return ($type(item) === family);
+	};
+};
+
+(function(){
+	var natives = {'Array': Array, 'Date': Date, 'Function': Function, 'Number': Number, 'RegExp': RegExp, 'String': String};
+	for (var n in natives) new Native({name: n, initialize: natives[n], protect: true});
+
+	var types = {'boolean': Boolean, 'native': Native, 'object': Object};
+	for (var t in types) Native.typize(types[t], t);
+
+	var generics = {
+		'Array': ["concat", "indexOf", "join", "lastIndexOf", "pop", "push", "reverse", "shift", "slice", "sort", "splice", "toString", "unshift", "valueOf"],
+		'String': ["charAt", "charCodeAt", "concat", "indexOf", "lastIndexOf", "match", "replace", "search", "slice", "split", "substr", "substring", "toLowerCase", "toUpperCase", "valueOf"]
+	};
+	for (var g in generics){
+		for (var i = generics[g].length; i--;) Native.genericize(natives[g], generics[g][i], true);
+	}
+})();
+
+var Hash = new Native({
+
+	name: 'Hash',
+
+	initialize: function(object){
+		if ($type(object) == 'hash') object = $unlink(object.getClean());
+		for (var key in object) this[key] = object[key];
+		return this;
+	}
+
+});
+
+Hash.implement({
+
+	forEach: function(fn, bind){
+		for (var key in this){
+			if (this.hasOwnProperty(key)) fn.call(bind, this[key], key, this);
+		}
+	},
+
+	getClean: function(){
+		var clean = {};
+		for (var key in this){
+			if (this.hasOwnProperty(key)) clean[key] = this[key];
+		}
+		return clean;
+	},
+
+	getLength: function(){
+		var length = 0;
+		for (var key in this){
+			if (this.hasOwnProperty(key)) length++;
+		}
+		return length;
+	}
+
+});
+
+Hash.alias('forEach', 'each');
+
+Array.implement({
+
+	forEach: function(fn, bind){
+		for (var i = 0, l = this.length; i < l; i++) fn.call(bind, this[i], i, this);
+	}
+
+});
+
+Array.alias('forEach', 'each');
+
+function $A(iterable){
+	if (iterable.item){
+		var l = iterable.length, array = new Array(l);
+		while (l--) array[l] = iterable[l];
+		return array;
+	}
+	return Array.prototype.slice.call(iterable);
+};
+
+function $arguments(i){
+	return function(){
+		return arguments[i];
+	};
+};
+
+function $chk(obj){
+	return !!(obj || obj === 0);
+};
+
+function $clear(timer){
+	clearTimeout(timer);
+	clearInterval(timer);
+	return null;
+};
+
+function $defined(obj){
+	return (obj != undefined);
+};
+
+function $each(iterable, fn, bind){
+	var type = $type(iterable);
+	((type == 'arguments' || type == 'collection' || type == 'array') ? Array : Hash).each(iterable, fn, bind);
+};
+
+function $empty(){};
+
+function $extend(original, extended){
+	for (var key in (extended || {})) original[key] = extended[key];
+	return original;
+};
+
+function $H(object){
+	return new Hash(object);
+};
+
+function $lambda(value){
+	return ($type(value) == 'function') ? value : function(){
+		return value;
+	};
+};
+
+function $merge(){
+	var args = Array.slice(arguments);
+	args.unshift({});
+	return $mixin.apply(null, args);
+};
+
+function $mixin(mix){
+	for (var i = 1, l = arguments.length; i < l; i++){
+		var object = arguments[i];
+		if ($type(object) != 'object') continue;
+		for (var key in object){
+			var op = object[key], mp = mix[key];
+			mix[key] = (mp && $type(op) == 'object' && $type(mp) == 'object') ? $mixin(mp, op) : $unlink(op);
+		}
+	}
+	return mix;
+};
+
+function $pick(){
+	for (var i = 0, l = arguments.length; i < l; i++){
+		if (arguments[i] != undefined) return arguments[i];
+	}
+	return null;
+};
+
+function $random(min, max){
+	return Math.floor(Math.random() * (max - min + 1) + min);
+};
+
+function $splat(obj){
+	var type = $type(obj);
+	return (type) ? ((type != 'array' && type != 'arguments') ? [obj] : obj) : [];
+};
+
+var $time = Date.now || function(){
+	return +new Date;
+};
+
+function $try(){
+	for (var i = 0, l = arguments.length; i < l; i++){
+		try {
+			return arguments[i]();
+		} catch(e){}
+	}
+	return null;
+};
+
+function $type(obj){
+	if (obj == undefined) return false;
+	if (obj.$family) return (obj.$family.name == 'number' && !isFinite(obj)) ? false : obj.$family.name;
+	if (obj.nodeName){
+		switch (obj.nodeType){
+			case 1: return 'element';
+			case 3: return (/\S/).test(obj.nodeValue) ? 'textnode' : 'whitespace';
+		}
+	} else if (typeof obj.length == 'number'){
+		if (obj.callee) return 'arguments';
+		else if (obj.item) return 'collection';
+	}
+	return typeof obj;
+};
+
+function $unlink(object){
+	var unlinked;
+	switch ($type(object)){
+		case 'object':
+			unlinked = {};
+			for (var p in object) unlinked[p] = $unlink(object[p]);
+		break;
+		case 'hash':
+			unlinked = new Hash(object);
+		break;
+		case 'array':
+			unlinked = [];
+			for (var i = 0, l = object.length; i < l; i++) unlinked[i] = $unlink(object[i]);
+		break;
+		default: return object;
+	}
+	return unlinked;
+};
+
+
+/*
+---
+
+name: Array
+
+description: Contains Array Prototypes like each, contains, and erase.
+
+license: MIT-style license.
+
+requires: [$util, Array.each]
+
+provides: Array
+
+...
+*/
+
+Array.implement({
+
+	every: function(fn, bind){
+		for (var i = 0, l = this.length; i < l; i++){
+			if (!fn.call(bind, this[i], i, this)) return false;
+		}
+		return true;
+	},
+
+	filter: function(fn, bind){
+		var results = [];
+		for (var i = 0, l = this.length; i < l; i++){
+			if (fn.call(bind, this[i], i, this)) results.push(this[i]);
+		}
+		return results;
+	},
+
+	clean: function(){
+		return this.filter($defined);
+	},
+
+	indexOf: function(item, from){
+		var len = this.length;
+		for (var i = (from < 0) ? Math.max(0, len + from) : from || 0; i < len; i++){
+			if (this[i] === item) return i;
+		}
+		return -1;
+	},
+
+	map: function(fn, bind){
+		var results = [];
+		for (var i = 0, l = this.length; i < l; i++) results[i] = fn.call(bind, this[i], i, this);
+		return results;
+	},
+
+	some: function(fn, bind){
+		for (var i = 0, l = this.length; i < l; i++){
+			if (fn.call(bind, this[i], i, this)) return true;
+		}
+		return false;
+	},
+
+	associate: function(keys){
+		var obj = {}, length = Math.min(this.length, keys.length);
+		for (var i = 0; i < length; i++) obj[keys[i]] = this[i];
+		return obj;
+	},
+
+	link: function(object){
+		var result = {};
+		for (var i = 0, l = this.length; i < l; i++){
+			for (var key in object){
+				if (object[key](this[i])){
+					result[key] = this[i];
+					delete object[key];
+					break;
+				}
+			}
+		}
+		return result;
+	},
+
+	contains: function(item, from){
+		return this.indexOf(item, from) != -1;
+	},
+
+	extend: function(array){
+		for (var i = 0, j = array.length; i < j; i++) this.push(array[i]);
+		return this;
+	},
+	
+	getLast: function(){
+		return (this.length) ? this[this.length - 1] : null;
+	},
+
+	getRandom: function(){
+		return (this.length) ? this[$random(0, this.length - 1)] : null;
+	},
+
+	include: function(item){
+		if (!this.contains(item)) this.push(item);
+		return this;
+	},
+
+	combine: function(array){
+		for (var i = 0, l = array.length; i < l; i++) this.include(array[i]);
+		return this;
+	},
+
+	erase: function(item){
+		for (var i = this.length; i--; i){
+			if (this[i] === item) this.splice(i, 1);
+		}
+		return this;
+	},
+
+	empty: function(){
+		this.length = 0;
+		return this;
+	},
+
+	flatten: function(){
+		var array = [];
+		for (var i = 0, l = this.length; i < l; i++){
+			var type = $type(this[i]);
+			if (!type) continue;
+			array = array.concat((type == 'array' || type == 'collection' || type == 'arguments') ? Array.flatten(this[i]) : this[i]);
+		}
+		return array;
+	},
+
+	hexToRgb: function(array){
+		if (this.length != 3) return null;
+		var rgb = this.map(function(value){
+			if (value.length == 1) value += value;
+			return value.toInt(16);
+		});
+		return (array) ? rgb : 'rgb(' + rgb + ')';
+	},
+
+	rgbToHex: function(array){
+		if (this.length < 3) return null;
+		if (this.length == 4 && this[3] == 0 && !array) return 'transparent';
+		var hex = [];
+		for (var i = 0; i < 3; i++){
+			var bit = (this[i] - 0).toString(16);
+			hex.push((bit.length == 1) ? '0' + bit : bit);
+		}
+		return (array) ? hex : '#' + hex.join('');
+	}
+
+});
+
+
+/*
+---
+
+name: String
+
+description: Contains String Prototypes like camelCase, capitalize, test, and toInt.
+
+license: MIT-style license.
+
+requires: Native
+
+provides: String
+
+...
+*/
+
+String.implement({
+
+	test: function(regex, params){
+		return ((typeof regex == 'string') ? new RegExp(regex, params) : regex).test(this);
+	},
+
+	contains: function(string, separator){
+		return (separator) ? (separator + this + separator).indexOf(separator + string + separator) > -1 : this.indexOf(string) > -1;
+	},
+
+	trim: function(){
+		return this.replace(/^\s+|\s+$/g, '');
+	},
+
+	clean: function(){
+		return this.replace(/\s+/g, ' ').trim();
+	},
+
+	camelCase: function(){
+		return this.replace(/-\D/g, function(match){
+			return match.charAt(1).toUpperCase();
+		});
+	},
+
+	hyphenate: function(){
+		return this.replace(/[A-Z]/g, function(match){
+			return ('-' + match.charAt(0).toLowerCase());
+		});
+	},
+
+	capitalize: function(){
+		return this.replace(/\b[a-z]/g, function(match){
+			return match.toUpperCase();
+		});
+	},
+
+	escapeRegExp: function(){
+		return this.replace(/([-.*+?^${}()|[\]\/\\])/g, '\\$1');
+	},
+
+	toInt: function(base){
+		return parseInt(this, base || 10);
+	},
+
+	toFloat: function(){
+		return parseFloat(this);
+	},
+
+	hexToRgb: function(array){
+		var hex = this.match(/^#?(\w{1,2})(\w{1,2})(\w{1,2})$/);
+		return (hex) ? hex.slice(1).hexToRgb(array) : null;
+	},
+
+	rgbToHex: function(array){
+		var rgb = this.match(/\d{1,3}/g);
+		return (rgb) ? rgb.rgbToHex(array) : null;
+	},
+
+	stripScripts: function(option){
+		var scripts = '';
+		var text = this.replace(/<script[^>]*>([\s\S]*?)<\/script>/gi, function(){
+			scripts += arguments[1] + '\n';
+			return '';
+		});
+		if (option === true) $exec(scripts);
+		else if ($type(option) == 'function') option(scripts, text);
+		return text;
+	},
+
+	substitute: function(object, regexp){
+		return this.replace(regexp || (/\\?\{([^{}]+)\}/g), function(match, name){
+			if (match.charAt(0) == '\\') return match.slice(1);
+			return (object[name] != undefined) ? object[name] : '';
+		});
+	}
+
+});
+
+
+/*
+---
+
+name: Function
+
+description: Contains Function Prototypes like create, bind, pass, and delay.
+
+license: MIT-style license.
+
+requires: [Native, $util]
+
+provides: Function
+
+...
+*/
+
+try {
+	delete Function.prototype.bind;
+} catch(e){}
+
+Function.implement({
+
+	extend: function(properties){
+		for (var property in properties) this[property] = properties[property];
+		return this;
+	},
+
+	create: function(options){
+		var self = this;
+		options = options || {};
+		return function(event){
+			var args = options.arguments;
+			args = (args != undefined) ? $splat(args) : Array.slice(arguments, (options.event) ? 1 : 0);
+			if (options.event) args = [event || window.event].extend(args);
+			var returns = function(){
+				return self.apply(options.bind || null, args);
+			};
+			if (options.delay) return setTimeout(returns, options.delay);
+			if (options.periodical) return setInterval(returns, options.periodical);
+			if (options.attempt) return $try(returns);
+			return returns();
+		};
+	},
+
+	run: function(args, bind){
+		return this.apply(bind, $splat(args));
+	},
+
+	pass: function(args, bind){
+		return this.create({bind: bind, arguments: args});
+	},
+
+	bind: function(bind, args){
+		return this.create({bind: bind, arguments: args});
+	},
+
+	bindWithEvent: function(bind, args){
+		return this.create({bind: bind, arguments: args, event: true});
+	},
+
+	attempt: function(args, bind){
+		return this.create({bind: bind, arguments: args, attempt: true})();
+	},
+
+	delay: function(delay, bind, args){
+		return this.create({bind: bind, arguments: args, delay: delay})();
+	},
+
+	periodical: function(periodical, bind, args){
+		return this.create({bind: bind, arguments: args, periodical: periodical})();
+	}
+
+});
+
+
+/*
+---
+
+name: Number
+
+description: Contains Number Prototypes like limit, round, times, and ceil.
+
+license: MIT-style license.
+
+requires: [Native, $util]
+
+provides: Number
+
+...
+*/
+
+Number.implement({
+
+	limit: function(min, max){
+		return Math.min(max, Math.max(min, this));
+	},
+
+	round: function(precision){
+		precision = Math.pow(10, precision || 0);
+		return Math.round(this * precision) / precision;
+	},
+
+	times: function(fn, bind){
+		for (var i = 0; i < this; i++) fn.call(bind, i, this);
+	},
+
+	toFloat: function(){
+		return parseFloat(this);
+	},
+
+	toInt: function(base){
+		return parseInt(this, base || 10);
+	}
+
+});
+
+Number.alias('times', 'each');
+
+(function(math){
+	var methods = {};
+	math.each(function(name){
+		if (!Number[name]) methods[name] = function(){
+			return Math[name].apply(null, [this].concat($A(arguments)));
+		};
+	});
+	Number.implement(methods);
+})(['abs', 'acos', 'asin', 'atan', 'atan2', 'ceil', 'cos', 'exp', 'floor', 'log', 'max', 'min', 'pow', 'sin', 'sqrt', 'tan']);
+
+
+/*
+---
+
+name: Hash
+
+description: Contains Hash Prototypes. Provides a means for overcoming the JavaScript practical impossibility of extending native Objects.
+
+license: MIT-style license.
+
+requires: Hash.base
+
+provides: Hash
+
+...
+*/
+
+Hash.implement({
+
+	has: Object.prototype.hasOwnProperty,
+
+	keyOf: function(value){
+		for (var key in this){
+			if (this.hasOwnProperty(key) && this[key] === value) return key;
+		}
+		return null;
+	},
+
+	hasValue: function(value){
+		return (Hash.keyOf(this, value) !== null);
+	},
+
+	extend: function(properties){
+		Hash.each(properties || {}, function(value, key){
+			Hash.set(this, key, value);
+		}, this);
+		return this;
+	},
+
+	combine: function(properties){
+		Hash.each(properties || {}, function(value, key){
+			Hash.include(this, key, value);
+		}, this);
+		return this;
+	},
+
+	erase: function(key){
+		if (this.hasOwnProperty(key)) delete this[key];
+		return this;
+	},
+
+	get: function(key){
+		return (this.hasOwnProperty(key)) ? this[key] : null;
+	},
+
+	set: function(key, value){
+		if (!this[key] || this.hasOwnProperty(key)) this[key] = value;
+		return this;
+	},
+
+	empty: function(){
+		Hash.each(this, function(value, key){
+			delete this[key];
+		}, this);
+		return this;
+	},
+
+	include: function(key, value){
+		if (this[key] == undefined) this[key] = value;
+		return this;
+	},
+
+	map: function(fn, bind){
+		var results = new Hash;
+		Hash.each(this, function(value, key){
+			results.set(key, fn.call(bind, value, key, this));
+		}, this);
+		return results;
+	},
+
+	filter: function(fn, bind){
+		var results = new Hash;
+		Hash.each(this, function(value, key){
+			if (fn.call(bind, value, key, this)) results.set(key, value);
+		}, this);
+		return results;
+	},
+
+	every: function(fn, bind){
+		for (var key in this){
+			if (this.hasOwnProperty(key) && !fn.call(bind, this[key], key)) return false;
+		}
+		return true;
+	},
+
+	some: function(fn, bind){
+		for (var key in this){
+			if (this.hasOwnProperty(key) && fn.call(bind, this[key], key)) return true;
+		}
+		return false;
+	},
+
+	getKeys: function(){
+		var keys = [];
+		Hash.each(this, function(value, key){
+			keys.push(key);
+		});
+		return keys;
+	},
+
+	getValues: function(){
+		var values = [];
+		Hash.each(this, function(value){
+			values.push(value);
+		});
+		return values;
+	},
+
+	toQueryString: function(base){
+		var queryString = [];
+		Hash.each(this, function(value, key){
+			if (base) key = base + '[' + key + ']';
+			var result;
+			switch ($type(value)){
+				case 'object': result = Hash.toQueryString(value, key); break;
+				case 'array':
+					var qs = {};
+					value.each(function(val, i){
+						qs[i] = val;
+					});
+					result = Hash.toQueryString(qs, key);
+				break;
+				default: result = key + '=' + encodeURIComponent(value);
+			}
+			if (value != undefined) queryString.push(result);
+		});
+
+		return queryString.join('&');
+	}
+
+});
+
+Hash.alias({keyOf: 'indexOf', hasValue: 'contains'});
+
+
+/*
+---
+
+name: Class
+
+description: Contains the Class Function for easily creating, extending, and implementing reusable Classes.
+
+license: MIT-style license.
+
+requires: [$util, Native, Array, String, Function, Number, Hash]
+
+provides: Class
+
+...
+*/
+
+function Class(params){
+	
+	if (params instanceof Function) params = {initialize: params};
+	
+	var newClass = function(){
+		Object.reset(this);
+		if (newClass._prototyping) return this;
+		this._current = $empty;
+		var value = (this.initialize) ? this.initialize.apply(this, arguments) : this;
+		delete this._current; delete this.caller;
+		return value;
+	}.extend(this);
+	
+	newClass.implement(params);
+	
+	newClass.constructor = Class;
+	newClass.prototype.constructor = newClass;
+
+	return newClass;
+
+};
+
+Function.prototype.protect = function(){
+	this._protected = true;
+	return this;
+};
+
+Object.reset = function(object, key){
+		
+	if (key == null){
+		for (var p in object) Object.reset(object, p);
+		return object;
+	}
+	
+	delete object[key];
+	
+	switch ($type(object[key])){
+		case 'object':
+			var F = function(){};
+			F.prototype = object[key];
+			var i = new F;
+			object[key] = Object.reset(i);
+		break;
+		case 'array': object[key] = $unlink(object[key]); break;
+	}
+	
+	return object;
+	
+};
+
+new Native({name: 'Class', initialize: Class}).extend({
+
+	instantiate: function(F){
+		F._prototyping = true;
+		var proto = new F;
+		delete F._prototyping;
+		return proto;
+	},
+	
+	wrap: function(self, key, method){
+		if (method._origin) method = method._origin;
+		
+		return function(){
+			if (method._protected && this._current == null) throw new Error('The method "' + key + '" cannot be called.');
+			var caller = this.caller, current = this._current;
+			this.caller = current; this._current = arguments.callee;
+			var result = method.apply(this, arguments);
+			this._current = current; this.caller = caller;
+			return result;
+		}.extend({_owner: self, _origin: method, _name: key});
+
+	}
+	
+});
+
+Class.implement({
+	
+	implement: function(key, value){
+		
+		if ($type(key) == 'object'){
+			for (var p in key) this.implement(p, key[p]);
+			return this;
+		}
+		
+		var mutator = Class.Mutators[key];
+		
+		if (mutator){
+			value = mutator.call(this, value);
+			if (value == null) return this;
+		}
+		
+		var proto = this.prototype;
+
+		switch ($type(value)){
+			
+			case 'function':
+				if (value._hidden) return this;
+				proto[key] = Class.wrap(this, key, value);
+			break;
+			
+			case 'object':
+				var previous = proto[key];
+				if ($type(previous) == 'object') $mixin(previous, value);
+				else proto[key] = $unlink(value);
+			break;
+			
+			case 'array':
+				proto[key] = $unlink(value);
+			break;
+			
+			default: proto[key] = value;
+
+		}
+		
+		return this;
+
+	}
+	
+});
+
+Class.Mutators = {
+	
+	Extends: function(parent){
+
+		this.parent = parent;
+		this.prototype = Class.instantiate(parent);
+
+		this.implement('parent', function(){
+			var name = this.caller._name, previous = this.caller._owner.parent.prototype[name];
+			if (!previous) throw new Error('The method "' + name + '" has no parent.');
+			return previous.apply(this, arguments);
+		}.protect());
+
+	},
+
+	Implements: function(items){
+		$splat(items).each(function(item){
+			if (item instanceof Function) item = Class.instantiate(item);
+			this.implement(item);
+		}, this);
+
+	}
+	
+};
+
+
+/*
+---
+
+name: Class.Extras
+
+description: Contains Utility Classes that can be implemented into your own Classes to ease the execution of many common tasks.
+
+license: MIT-style license.
+
+requires: Class
+
+provides: [Chain, Events, Options, Class.Extras]
+
+...
+*/
+
+var Chain = new Class({
+
+	$chain: [],
+
+	chain: function(){
+		this.$chain.extend(Array.flatten(arguments));
+		return this;
+	},
+
+	callChain: function(){
+		return (this.$chain.length) ? this.$chain.shift().apply(this, arguments) : false;
+	},
+
+	clearChain: function(){
+		this.$chain.empty();
+		return this;
+	}
+
+});
+
+var Events = new Class({
+
+	$events: {},
+
+	addEvent: function(type, fn, internal){
+		type = Events.removeOn(type);
+		if (fn != $empty){
+			this.$events[type] = this.$events[type] || [];
+			this.$events[type].include(fn);
+			if (internal) fn.internal = true;
+		}
+		return this;
+	},
+
+	addEvents: function(events){
+		for (var type in events) this.addEvent(type, events[type]);
+		return this;
+	},
+
+	fireEvent: function(type, args, delay){
+		type = Events.removeOn(type);
+		if (!this.$events || !this.$events[type]) return this;
+		this.$events[type].each(function(fn){
+			fn.create({'bind': this, 'delay': delay, 'arguments': args})();
+		}, this);
+		return this;
+	},
+
+	removeEvent: function(type, fn){
+		type = Events.removeOn(type);
+		if (!this.$events[type]) return this;
+		if (!fn.internal) this.$events[type].erase(fn);
+		return this;
+	},
+
+	removeEvents: function(events){
+		var type;
+		if ($type(events) == 'object'){
+			for (type in events) this.removeEvent(type, events[type]);
+			return this;
+		}
+		if (events) events = Events.removeOn(events);
+		for (type in this.$events){
+			if (events && events != type) continue;
+			var fns = this.$events[type];
+			for (var i = fns.length; i--; i) this.removeEvent(type, fns[i]);
+		}
+		return this;
+	}
+
+});
+
+Events.removeOn = function(string){
+	return string.replace(/^on([A-Z])/, function(full, first){
+		return first.toLowerCase();
+	});
+};
+
+var Options = new Class({
+
+	setOptions: function(){
+		this.options = $merge.run([this.options].extend(arguments));
+		if (!this.addEvent) return this;
+		for (var option in this.options){
+			if ($type(this.options[option]) != 'function' || !(/^on[A-Z]/).test(option)) continue;
+			this.addEvent(option, this.options[option]);
+			delete this.options[option];
+		}
+		return this;
+	}
+
+});
+
+
+/*
+---
+
+name: Browser
+
+description: The Browser Core. Contains Browser initialization, Window and Document, and the Browser Hash.
+
+license: MIT-style license.
+
+requires: [Native, $util]
+
+provides: [Browser, Window, Document, $exec]
+
+...
+*/
+
+var Browser = $merge({
+
+	Engine: {name: 'unknown', version: 0},
+
+	Platform: {name: (window.orientation != undefined) ? 'ipod' : (navigator.platform.match(/mac|win|linux/i) || ['other'])[0].toLowerCase()},
+
+	Features: {xpath: !!(document.evaluate), air: !!(window.runtime), query: !!(document.querySelector)},
+
+	Plugins: {},
+
+	Engines: {
+
+		presto: function(){
+			return (!window.opera) ? false : ((arguments.callee.caller) ? 960 : ((document.getElementsByClassName) ? 950 : 925));
+		},
+
+		trident: function(){
+			return (!window.ActiveXObject) ? false : ((window.XMLHttpRequest) ? ((document.querySelectorAll) ? 6 : 5) : 4);
+		},
+
+		webkit: function(){
+			return (navigator.taintEnabled) ? false : ((Browser.Features.xpath) ? ((Browser.Features.query) ? 525 : 420) : 419);
+		},
+
+		gecko: function(){
+			return (!document.getBoxObjectFor && window.mozInnerScreenX == null) ? false : ((document.getElementsByClassName) ? 19 : 18);
+		}
+
+	}
+
+}, Browser || {});
+
+Browser.Platform[Browser.Platform.name] = true;
+
+Browser.detect = function(){
+
+	for (var engine in this.Engines){
+		var version = this.Engines[engine]();
+		if (version){
+			this.Engine = {name: engine, version: version};
+			this.Engine[engine] = this.Engine[engine + version] = true;
+			break;
+		}
+	}
+
+	return {name: engine, version: version};
+
+};
+
+Browser.detect();
+
+Browser.Request = function(){
+	return $try(function(){
+		return new XMLHttpRequest();
+	}, function(){
+		return new ActiveXObject('MSXML2.XMLHTTP');
+	}, function(){
+		return new ActiveXObject('Microsoft.XMLHTTP');
+	});
+};
+
+Browser.Features.xhr = !!(Browser.Request());
+
+Browser.Plugins.Flash = (function(){
+	var version = ($try(function(){
+		return navigator.plugins['Shockwave Flash'].description;
+	}, function(){
+		return new ActiveXObject('ShockwaveFlash.ShockwaveFlash').GetVariable('$version');
+	}) || '0 r0').match(/\d+/g);
+	return {version: parseInt(version[0] || 0 + '.' + version[1], 10) || 0, build: parseInt(version[2], 10) || 0};
+})();
+
+function $exec(text){
+	if (!text) return text;
+	if (window.execScript){
+		window.execScript(text);
+	} else {
+		var script = document.createElement('script');
+		script.setAttribute('type', 'text/javascript');
+		script[(Browser.Engine.webkit && Browser.Engine.version < 420) ? 'innerText' : 'text'] = text;
+		document.head.appendChild(script);
+		document.head.removeChild(script);
+	}
+	return text;
+};
+
+Native.UID = 1;
+
+var $uid = (Browser.Engine.trident) ? function(item){
+	return (item.uid || (item.uid = [Native.UID++]))[0];
+} : function(item){
+	return item.uid || (item.uid = Native.UID++);
+};
+
+var Window = new Native({
+
+	name: 'Window',
+
+	legacy: (Browser.Engine.trident) ? null: window.Window,
+
+	initialize: function(win){
+		$uid(win);
+		if (!win.Element){
+			win.Element = $empty;
+			if (Browser.Engine.webkit) win.document.createElement("iframe"); //fixes safari 2
+			win.Element.prototype = (Browser.Engine.webkit) ? window["[[DOMElement.prototype]]"] : {};
+		}
+		win.document.window = win;
+		return $extend(win, Window.Prototype);
+	},
+
+	afterImplement: function(property, value){
+		window[property] = Window.Prototype[property] = value;
+	}
+
+});
+
+Window.Prototype = {$family: {name: 'window'}};
+
+new Window(window);
+
+var Document = new Native({
+
+	name: 'Document',
+
+	legacy: (Browser.Engine.trident) ? null: window.Document,
+
+	initialize: function(doc){
+		$uid(doc);
+		doc.head = doc.getElementsByTagName('head')[0];
+		doc.html = doc.getElementsByTagName('html')[0];
+		if (Browser.Engine.trident && Browser.Engine.version <= 4) $try(function(){
+			doc.execCommand("BackgroundImageCache", false, true);
+		});
+		if (Browser.Engine.trident) doc.window.attachEvent('onunload', function(){
+			doc.window.detachEvent('onunload', arguments.callee);
+			doc.head = doc.html = doc.window = null;
+		});
+		return $extend(doc, Document.Prototype);
+	},
+
+	afterImplement: function(property, value){
+		document[property] = Document.Prototype[property] = value;
+	}
+
+});
+
+Document.Prototype = {$family: {name: 'document'}};
+
+new Document(document);
+
+
+/*
+---
+
+name: Element
+
+description: One of the most important items in MooTools. Contains the dollar function, the dollars function, and an handful of cross-browser, time-saver methods to let you easily work with HTML Elements.
+
+license: MIT-style license.
+
+requires: [Window, Document, Array, String, Function, Number, Hash]
+
+provides: [Element, Elements, $, $$, Iframe]
+
+...
+*/
+
+var Element = new Native({
+
+	name: 'Element',
+
+	legacy: window.Element,
+
+	initialize: function(tag, props){
+		var konstructor = Element.Constructors.get(tag);
+		if (konstructor) return konstructor(props);
+		if (typeof tag == 'string') return document.newElement(tag, props);
+		return document.id(tag).set(props);
+	},
+
+	afterImplement: function(key, value){
+		Element.Prototype[key] = value;
+		if (Array[key]) return;
+		Elements.implement(key, function(){
+			var items = [], elements = true;
+			for (var i = 0, j = this.length; i < j; i++){
+				var returns = this[i][key].apply(this[i], arguments);
+				items.push(returns);
+				if (elements) elements = ($type(returns) == 'element');
+			}
+			return (elements) ? new Elements(items) : items;
+		});
+	}
+
+});
+
+Element.Prototype = {$family: {name: 'element'}};
+
+Element.Constructors = new Hash;
+
+var IFrame = new Native({
+
+	name: 'IFrame',
+
+	generics: false,
+
+	initialize: function(){
+		var params = Array.link(arguments, {properties: Object.type, iframe: $defined});
+		var props = params.properties || {};
+		var iframe = document.id(params.iframe);
+		var onload = props.onload || $empty;
+		delete props.onload;
+		props.id = props.name = $pick(props.id, props.name, iframe ? (iframe.id || iframe.name) : 'IFrame_' + $time());
+		iframe = new Element(iframe || 'iframe', props);
+		var onFrameLoad = function(){
+			var host = $try(function(){
+				return iframe.contentWindow.location.host;
+			});
+			if (!host || host == window.location.host){
+				var win = new Window(iframe.contentWindow);
+				new Document(iframe.contentWindow.document);
+				$extend(win.Element.prototype, Element.Prototype);
+			}
+			onload.call(iframe.contentWindow, iframe.contentWindow.document);
+		};
+		var contentWindow = $try(function(){
+			return iframe.contentWindow;
+		});
+		((contentWindow && contentWindow.document.body) || window.frames[props.id]) ? onFrameLoad() : iframe.addListener('load', onFrameLoad);
+		return iframe;
+	}
+
+});
+
+var Elements = new Native({
+
+	initialize: function(elements, options){
+		options = $extend({ddup: true, cash: true}, options);
+		elements = elements || [];
+		if (options.ddup || options.cash){
+			var uniques = {}, returned = [];
+			for (var i = 0, l = elements.length; i < l; i++){
+				var el = document.id(elements[i], !options.cash);
+				if (options.ddup){
+					if (uniques[el.uid]) continue;
+					uniques[el.uid] = true;
+				}
+				if (el) returned.push(el);
+			}
+			elements = returned;
+		}
+		return (options.cash) ? $extend(elements, this) : elements;
+	}
+
+});
+
+Elements.implement({
+
+	filter: function(filter, bind){
+		if (!filter) return this;
+		return new Elements(Array.filter(this, (typeof filter == 'string') ? function(item){
+			return item.match(filter);
+		} : filter, bind));
+	}
+
+});
+
+(function(){
+
+/*<ltIE8>*/
+var createElementAcceptsHTML;
+try {
+	var x = document.createElement('<input name=x>');
+	createElementAcceptsHTML = (x.name == 'x');
+} catch(e){}
+
+var escapeQuotes = function(html){
+	return ('' + html).replace(/&/g,'&amp;').replace(/"/g,'&quot;');
+};
+/*</ltIE8>*/
+
+Document.implement({
+
+	newElement: function(tag, props){
+		if (props && props.checked != null) props.defaultChecked = props.checked;
+		/*<ltIE8>*/// Fix for readonly name and type properties in IE < 8
+		if (createElementAcceptsHTML && props){
+			tag = '<' + tag;
+			if (props.name) tag += ' name="' + escapeQuotes(props.name) + '"';
+			if (props.type) tag += ' type="' + escapeQuotes(props.type) + '"';
+			tag += '>';
+			delete props.name;
+			delete props.type;
+		}
+		/*</ltIE8>*/
+		return this.id(this.createElement(tag)).set(props);
+	},
+
+	newTextNode: function(text){
+		return this.createTextNode(text);
+	},
+
+	getDocument: function(){
+		return this;
+	},
+
+	getWindow: function(){
+		return this.window;
+	},
+	
+	id: (function(){
+		
+		var types = {
+
+			string: function(id, nocash, doc){
+				id = doc.getElementById(id);
+				return (id) ? types.element(id, nocash) : null;
+			},
+			
+			element: function(el, nocash){
+				$uid(el);
+				if (!nocash && !el.$family && !(/^object|embed$/i).test(el.tagName)){
+					var proto = Element.Prototype;
+					for (var p in proto) el[p] = proto[p];
+				};
+				return el;
+			},
+			
+			object: function(obj, nocash, doc){
+				if (obj.toElement) return types.element(obj.toElement(doc), nocash);
+				return null;
+			}
+			
+		};
+
+		types.textnode = types.whitespace = types.window = types.document = $arguments(0);
+		
+		return function(el, nocash, doc){
+			if (el && el.$family && el.uid) return el;
+			var type = $type(el);
+			return (types[type]) ? types[type](el, nocash, doc || document) : null;
+		};
+
+	})()
+
+});
+
+})();
+
+if (window.$ == null) Window.implement({
+	$: function(el, nc){
+		return document.id(el, nc, this.document);
+	}
+});
+
+Window.implement({
+
+	$$: function(selector){
+		if (arguments.length == 1 && typeof selector == 'string') return this.document.getElements(selector);
+		var elements = [];
+		var args = Array.flatten(arguments);
+		for (var i = 0, l = args.length; i < l; i++){
+			var item = args[i];
+			switch ($type(item)){
+				case 'element': elements.push(item); break;
+				case 'string': elements.extend(this.document.getElements(item, true));
+			}
+		}
+		return new Elements(elements);
+	},
+
+	getDocument: function(){
+		return this.document;
+	},
+
+	getWindow: function(){
+		return this;
+	}
+
+});
+
+Native.implement([Element, Document], {
+
+	getElement: function(selector, nocash){
+		return document.id(this.getElements(selector, true)[0] || null, nocash);
+	},
+
+	getElements: function(tags, nocash){
+		tags = tags.split(',');
+		var elements = [];
+		var ddup = (tags.length > 1);
+		tags.each(function(tag){
+			var partial = this.getElementsByTagName(tag.trim());
+			(ddup) ? elements.extend(partial) : elements = partial;
+		}, this);
+		return new Elements(elements, {ddup: ddup, cash: !nocash});
+	}
+
+});
+
+(function(){
+
+var collected = {}, storage = {};
+var props = {input: 'checked', option: 'selected', textarea: (Browser.Engine.webkit && Browser.Engine.version < 420) ? 'innerHTML' : 'value'};
+
+var get = function(uid){
+	return (storage[uid] || (storage[uid] = {}));
+};
+
+var clean = function(item, retain){
+	if (!item) return;
+	var uid = item.uid;
+	if (retain !== true) retain = false;
+	if (Browser.Engine.trident){
+		if (item.clearAttributes){
+			var clone = retain && item.cloneNode(false);
+			item.clearAttributes();
+			if (clone) item.mergeAttributes(clone);
+		} else if (item.removeEvents){
+			item.removeEvents();
+		}
+		if ((/object/i).test(item.tagName)){
+			for (var p in item){
+				if (typeof item[p] == 'function') item[p] = $empty;
+			}
+			Element.dispose(item);
+		}
+	}	
+	if (!uid) return;
+	collected[uid] = storage[uid] = null;
+};
+
+var purge = function(){
+	Hash.each(collected, clean);
+	if (Browser.Engine.trident) $A(document.getElementsByTagName('object')).each(clean);
+	if (window.CollectGarbage) CollectGarbage();
+	collected = storage = null;
+};
+
+var walk = function(element, walk, start, match, all, nocash){
+	var el = element[start || walk];
+	var elements = [];
+	while (el){
+		if (el.nodeType == 1 && (!match || Element.match(el, match))){
+			if (!all) return document.id(el, nocash);
+			elements.push(el);
+		}
+		el = el[walk];
+	}
+	return (all) ? new Elements(elements, {ddup: false, cash: !nocash}) : null;
+};
+
+var attributes = {
+	'html': 'innerHTML',
+	'class': 'className',
+	'for': 'htmlFor',
+	'defaultValue': 'defaultValue',
+	'text': (Browser.Engine.trident || (Browser.Engine.webkit && Browser.Engine.version < 420)) ? 'innerText' : 'textContent'
+};
+var bools = ['compact', 'nowrap', 'ismap', 'declare', 'noshade', 'checked', 'disabled', 'readonly', 'multiple', 'selected', 'noresize', 'defer'];
+var camels = ['value', 'type', 'defaultValue', 'accessKey', 'cellPadding', 'cellSpacing', 'colSpan', 'frameBorder', 'maxLength', 'readOnly', 'rowSpan', 'tabIndex', 'useMap'];
+
+bools = bools.associate(bools);
+
+Hash.extend(attributes, bools);
+Hash.extend(attributes, camels.associate(camels.map(String.toLowerCase)));
+
+var inserters = {
+
+	before: function(context, element){
+		if (element.parentNode) element.parentNode.insertBefore(context, element);
+	},
+
+	after: function(context, element){
+		if (!element.parentNode) return;
+		var next = element.nextSibling;
+		(next) ? element.parentNode.insertBefore(context, next) : element.parentNode.appendChild(context);
+	},
+
+	bottom: function(context, element){
+		element.appendChild(context);
+	},
+
+	top: function(context, element){
+		var first = element.firstChild;
+		(first) ? element.insertBefore(context, first) : element.appendChild(context);
+	}
+
+};
+
+inserters.inside = inserters.bottom;
+
+Hash.each(inserters, function(inserter, where){
+
+	where = where.capitalize();
+
+	Element.implement('inject' + where, function(el){
+		inserter(this, document.id(el, true));
+		return this;
+	});
+
+	Element.implement('grab' + where, function(el){
+		inserter(document.id(el, true), this);
+		return this;
+	});
+
+});
+
+Element.implement({
+
+	set: function(prop, value){
+		switch ($type(prop)){
+			case 'object':
+				for (var p in prop) this.set(p, prop[p]);
+				break;
+			case 'string':
+				var property = Element.Properties.get(prop);
+				(property && property.set) ? property.set.apply(this, Array.slice(arguments, 1)) : this.setProperty(prop, value);
+		}
+		return this;
+	},
+
+	get: function(prop){
+		var property = Element.Properties.get(prop);
+		return (property && property.get) ? property.get.apply(this, Array.slice(arguments, 1)) : this.getProperty(prop);
+	},
+
+	erase: function(prop){
+		var property = Element.Properties.get(prop);
+		(property && property.erase) ? property.erase.apply(this) : this.removeProperty(prop);
+		return this;
+	},
+
+	setProperty: function(attribute, value){
+		var key = attributes[attribute];
+		if (value == undefined) return this.removeProperty(attribute);
+		if (key && bools[attribute]) value = !!value;
+		(key) ? this[key] = value : this.setAttribute(attribute, '' + value);
+		return this;
+	},
+
+	setProperties: function(attributes){
+		for (var attribute in attributes) this.setProperty(attribute, attributes[attribute]);
+		return this;
+	},
+
+	getProperty: function(attribute){
+		var key = attributes[attribute];
+		var value = (key) ? this[key] : this.getAttribute(attribute, 2);
+		return (bools[attribute]) ? !!value : (key) ? value : value || null;
+	},
+
+	getProperties: function(){
+		var args = $A(arguments);
+		return args.map(this.getProperty, this).associate(args);
+	},
+
+	removeProperty: function(attribute){
+		var key = attributes[attribute];
+		(key) ? this[key] = (key && bools[attribute]) ? false : '' : this.removeAttribute(attribute);
+		return this;
+	},
+
+	removeProperties: function(){
+		Array.each(arguments, this.removeProperty, this);
+		return this;
+	},
+
+	hasClass: function(className){
+		return this.className.contains(className, ' ');
+	},
+
+	addClass: function(className){
+		if (!this.hasClass(className)) this.className = (this.className + ' ' + className).clean();
+		return this;
+	},
+
+	removeClass: function(className){
+		this.className = this.className.replace(new RegExp('(^|\\s)' + className + '(?:\\s|$)'), '$1');
+		return this;
+	},
+
+	toggleClass: function(className){
+		return this.hasClass(className) ? this.removeClass(className) : this.addClass(className);
+	},
+
+	adopt: function(){
+		Array.flatten(arguments).each(function(element){
+			element = document.id(element, true);
+			if (element) this.appendChild(element);
+		}, this);
+		return this;
+	},
+
+	appendText: function(text, where){
+		return this.grab(this.getDocument().newTextNode(text), where);
+	},
+
+	grab: function(el, where){
+		inserters[where || 'bottom'](document.id(el, true), this);
+		return this;
+	},
+
+	inject: function(el, where){
+		inserters[where || 'bottom'](this, document.id(el, true));
+		return this;
+	},
+
+	replaces: function(el){
+		el = document.id(el, true);
+		el.parentNode.replaceChild(this, el);
+		return this;
+	},
+
+	wraps: function(el, where){
+		el = document.id(el, true);
+		return this.replaces(el).grab(el, where);
+	},
+
+	getPrevious: function(match, nocash){
+		return walk(this, 'previousSibling', null, match, false, nocash);
+	},
+
+	getAllPrevious: function(match, nocash){
+		return walk(this, 'previousSibling', null, match, true, nocash);
+	},
+
+	getNext: function(match, nocash){
+		return walk(this, 'nextSibling', null, match, false, nocash);
+	},
+
+	getAllNext: function(match, nocash){
+		return walk(this, 'nextSibling', null, match, true, nocash);
+	},
+
+	getFirst: function(match, nocash){
+		return walk(this, 'nextSibling', 'firstChild', match, false, nocash);
+	},
+
+	getLast: function(match, nocash){
+		return walk(this, 'previousSibling', 'lastChild', match, false, nocash);
+	},
+
+	getParent: function(match, nocash){
+		return walk(this, 'parentNode', null, match, false, nocash);
+	},
+
+	getParents: function(match, nocash){
+		return walk(this, 'parentNode', null, match, true, nocash);
+	},
+	
+	getSiblings: function(match, nocash){
+		return this.getParent().getChildren(match, nocash).erase(this);
+	},
+
+	getChildren: function(match, nocash){
+		return walk(this, 'nextSibling', 'firstChild', match, true, nocash);
+	},
+
+	getWindow: function(){
+		return this.ownerDocument.window;
+	},
+
+	getDocument: function(){
+		return this.ownerDocument;
+	},
+
+	getElementById: function(id, nocash){
+		var el = this.ownerDocument.getElementById(id);
+		if (!el) return null;
+		for (var parent = el.parentNode; parent != this; parent = parent.parentNode){
+			if (!parent) return null;
+		}
+		return document.id(el, nocash);
+	},
+
+	getSelected: function(){
+		return new Elements($A(this.options).filter(function(option){
+			return option.selected;
+		}));
+	},
+
+	getComputedStyle: function(property){
+		if (this.currentStyle) return this.currentStyle[property.camelCase()];
+		var computed = this.getDocument().defaultView.getComputedStyle(this, null);
+		return (computed) ? computed.getPropertyValue([property.hyphenate()]) : null;
+	},
+
+	toQueryString: function(){
+		var queryString = [];
+		this.getElements('input, select, textarea', true).each(function(el){
+			if (!el.name || el.disabled || el.type == 'submit' || el.type == 'reset' || el.type == 'file') return;
+			var value = (el.tagName.toLowerCase() == 'select') ? Element.getSelected(el).map(function(opt){
+				return opt.value;
+			}) : ((el.type == 'radio' || el.type == 'checkbox') && !el.checked) ? null : el.value;
+			$splat(value).each(function(val){
+				if (typeof val != 'undefined') queryString.push(el.name + '=' + encodeURIComponent(val));
+			});
+		});
+		return queryString.join('&');
+	},
+
+	clone: function(contents, keepid){
+		contents = contents !== false;
+		var clone = this.cloneNode(contents);
+		var clean = function(node, element){
+			if (!keepid) node.removeAttribute('id');
+			if (Browser.Engine.trident){
+				node.clearAttributes();
+				node.mergeAttributes(element);
+				node.removeAttribute('uid');
+				if (node.options){
+					var no = node.options, eo = element.options;
+					for (var j = no.length; j--;) no[j].selected = eo[j].selected;
+				}
+			}
+			var prop = props[element.tagName.toLowerCase()];
+			if (prop && element[prop]) node[prop] = element[prop];
+		};
+
+		if (contents){
+			var ce = clone.getElementsByTagName('*'), te = this.getElementsByTagName('*');
+			for (var i = ce.length; i--;) clean(ce[i], te[i]);
+		}
+
+		clean(clone, this);
+		return document.id(clone);
+	},
+
+	destroy: function(){
+		Element.empty(this);
+		Element.dispose(this);
+		clean(this, true);
+		return null;
+	},
+
+	empty: function(){
+		$A(this.childNodes).each(function(node){
+			Element.destroy(node);
+		});
+		return this;
+	},
+
+	dispose: function(){
+		return (this.parentNode) ? this.parentNode.removeChild(this) : this;
+	},
+
+	hasChild: function(el){
+		el = document.id(el, true);
+		if (!el) return false;
+		if (Browser.Engine.webkit && Browser.Engine.version < 420) return $A(this.getElementsByTagName(el.tagName)).contains(el);
+		return (this.contains) ? (this != el && this.contains(el)) : !!(this.compareDocumentPosition(el) & 16);
+	},
+
+	match: function(tag){
+		return (!tag || (tag == this) || (Element.get(this, 'tag') == tag));
+	}
+
+});
+
+Native.implement([Element, Window, Document], {
+
+	addListener: function(type, fn){
+		if (type == 'unload'){
+			var old = fn, self = this;
+			fn = function(){
+				self.removeListener('unload', fn);
+				old();
+			};
+		} else {
+			collected[this.uid] = this;
+		}
+		if (this.addEventListener) this.addEventListener(type, fn, false);
+		else this.attachEvent('on' + type, fn);
+		return this;
+	},
+
+	removeListener: function(type, fn){
+		if (this.removeEventListener) this.removeEventListener(type, fn, false);
+		else this.detachEvent('on' + type, fn);
+		return this;
+	},
+
+	retrieve: function(property, dflt){
+		var storage = get(this.uid), prop = storage[property];
+		if (dflt != undefined && prop == undefined) prop = storage[property] = dflt;
+		return $pick(prop);
+	},
+
+	store: function(property, value){
+		var storage = get(this.uid);
+		storage[property] = value;
+		return this;
+	},
+
+	eliminate: function(property){
+		var storage = get(this.uid);
+		delete storage[property];
+		return this;
+	}
+
+});
+
+window.addListener('unload', purge);
+
+})();
+
+Element.Properties = new Hash;
+
+Element.Properties.style = {
+
+	set: function(style){
+		this.style.cssText = style;
+	},
+
+	get: function(){
+		return this.style.cssText;
+	},
+
+	erase: function(){
+		this.style.cssText = '';
+	}
+
+};
+
+Element.Properties.tag = {
+
+	get: function(){
+		return this.tagName.toLowerCase();
+	}
+
+};
+
+Element.Properties.html = (function(){
+	var wrapper = document.createElement('div');
+
+	var translations = {
+		table: [1, '<table>', '</table>'],
+		select: [1, '<select>', '</select>'],
+		tbody: [2, '<table><tbody>', '</tbody></table>'],
+		tr: [3, '<table><tbody><tr>', '</tr></tbody></table>']
+	};
+	translations.thead = translations.tfoot = translations.tbody;
+
+	var html = {
+		set: function(){
+			var html = Array.flatten(arguments).join('');
+			var wrap = Browser.Engine.trident && translations[this.get('tag')];
+			if (wrap){
+				var first = wrapper;
+				first.innerHTML = wrap[1] + html + wrap[2];
+				for (var i = wrap[0]; i--;) first = first.firstChild;
+				this.empty().adopt(first.childNodes);
+			} else {
+				this.innerHTML = html;
+			}
+		}
+	};
+
+	html.erase = html.set;
+
+	return html;
+})();
+
+if (Browser.Engine.webkit && Browser.Engine.version < 420) Element.Properties.text = {
+	get: function(){
+		if (this.innerText) return this.innerText;
+		var temp = this.ownerDocument.newElement('div', {html: this.innerHTML}).inject(this.ownerDocument.body);
+		var text = temp.innerText;
+		temp.destroy();
+		return text;
+	}
+};
+
+
+/*
+---
+
+name: Element.Dimensions
+
+description: Contains methods to work with size, scroll, or positioning of Elements and the window object.
+
+license: MIT-style license.
+
+credits:
+  - Element positioning based on the [qooxdoo](http://qooxdoo.org/) code and smart browser fixes, [LGPL License](http://www.gnu.org/licenses/lgpl.html).
+  - Viewport dimensions based on [YUI](http://developer.yahoo.com/yui/) code, [BSD License](http://developer.yahoo.com/yui/license.html).
+
+requires: Element
+
+provides: Element.Dimensions
+
+...
+*/
+
+(function(){
+
+Element.implement({
+
+	scrollTo: function(x, y){
+		if (isBody(this)){
+			this.getWindow().scrollTo(x, y);
+		} else {
+			this.scrollLeft = x;
+			this.scrollTop = y;
+		}
+		return this;
+	},
+
+	getSize: function(){
+		if (isBody(this)) return this.getWindow().getSize();
+		return {x: this.offsetWidth, y: this.offsetHeight};
+	},
+
+	getScrollSize: function(){
+		if (isBody(this)) return this.getWindow().getScrollSize();
+		return {x: this.scrollWidth, y: this.scrollHeight};
+	},
+
+	getScroll: function(){
+		if (isBody(this)) return this.getWindow().getScroll();
+		return {x: this.scrollLeft, y: this.scrollTop};
+	},
+
+	getScrolls: function(){
+		var element = this, position = {x: 0, y: 0};
+		while (element && !isBody(element)){
+			position.x += element.scrollLeft;
+			position.y += element.scrollTop;
+			element = element.parentNode;
+		}
+		return position;
+	},
+
+	getOffsetParent: function(){
+		var element = this;
+		if (isBody(element)) return null;
+		if (!Browser.Engine.trident) return element.offsetParent;
+		while ((element = element.parentNode) && !isBody(element)){
+			if (styleString(element, 'position') != 'static') return element;
+		}
+		return null;
+	},
+
+	getOffsets: function(){
+		if (this.getBoundingClientRect){
+			var bound = this.getBoundingClientRect(),
+				html = document.id(this.getDocument().documentElement),
+				htmlScroll = html.getScroll(),
+				elemScrolls = this.getScrolls(),
+				elemScroll = this.getScroll(),
+				isFixed = (styleString(this, 'position') == 'fixed');
+
+			return {
+				x: bound.left.toInt() + elemScrolls.x - elemScroll.x + ((isFixed) ? 0 : htmlScroll.x) - html.clientLeft,
+				y: bound.top.toInt()  + elemScrolls.y - elemScroll.y + ((isFixed) ? 0 : htmlScroll.y) - html.clientTop
+			};
+		}
+
+		var element = this, position = {x: 0, y: 0};
+		if (isBody(this)) return position;
+
+		while (element && !isBody(element)){
+			position.x += element.offsetLeft;
+			position.y += element.offsetTop;
+
+			if (Browser.Engine.gecko){
+				if (!borderBox(element)){
+					position.x += leftBorder(element);
+					position.y += topBorder(element);
+				}
+				var parent = element.parentNode;
+				if (parent && styleString(parent, 'overflow') != 'visible'){
+					position.x += leftBorder(parent);
+					position.y += topBorder(parent);
+				}
+			} else if (element != this && Browser.Engine.webkit){
+				position.x += leftBorder(element);
+				position.y += topBorder(element);
+			}
+
+			element = element.offsetParent;
+		}
+		if (Browser.Engine.gecko && !borderBox(this)){
+			position.x -= leftBorder(this);
+			position.y -= topBorder(this);
+		}
+		return position;
+	},
+
+	getPosition: function(relative){
+		if (isBody(this)) return {x: 0, y: 0};
+		var offset = this.getOffsets(),
+				scroll = this.getScrolls();
+		var position = {
+			x: offset.x - scroll.x,
+			y: offset.y - scroll.y
+		};
+		var relativePosition = (relative && (relative = document.id(relative))) ? relative.getPosition() : {x: 0, y: 0};
+		return {x: position.x - relativePosition.x, y: position.y - relativePosition.y};
+	},
+
+	getCoordinates: function(element){
+		if (isBody(this)) return this.getWindow().getCoordinates();
+		var position = this.getPosition(element),
+				size = this.getSize();
+		var obj = {
+			left: position.x,
+			top: position.y,
+			width: size.x,
+			height: size.y
+		};
+		obj.right = obj.left + obj.width;
+		obj.bottom = obj.top + obj.height;
+		return obj;
+	},
+
+	computePosition: function(obj){
+		return {
+			left: obj.x - styleNumber(this, 'margin-left'),
+			top: obj.y - styleNumber(this, 'margin-top')
+		};
+	},
+
+	setPosition: function(obj){
+		return this.setStyles(this.computePosition(obj));
+	}
+
+});
+
+
+Native.implement([Document, Window], {
+
+	getSize: function(){
+		if (Browser.Engine.presto || Browser.Engine.webkit){
+			var win = this.getWindow();
+			return {x: win.innerWidth, y: win.innerHeight};
+		}
+		var doc = getCompatElement(this);
+		return {x: doc.clientWidth, y: doc.clientHeight};
+	},
+
+	getScroll: function(){
+		var win = this.getWindow(), doc = getCompatElement(this);
+		return {x: win.pageXOffset || doc.scrollLeft, y: win.pageYOffset || doc.scrollTop};
+	},
+
+	getScrollSize: function(){
+		var doc = getCompatElement(this), min = this.getSize();
+		return {x: Math.max(doc.scrollWidth, min.x), y: Math.max(doc.scrollHeight, min.y)};
+	},
+
+	getPosition: function(){
+		return {x: 0, y: 0};
+	},
+
+	getCoordinates: function(){
+		var size = this.getSize();
+		return {top: 0, left: 0, bottom: size.y, right: size.x, height: size.y, width: size.x};
+	}
+
+});
+
+// private methods
+
+var styleString = Element.getComputedStyle;
+
+function styleNumber(element, style){
+	return styleString(element, style).toInt() || 0;
+};
+
+function borderBox(element){
+	return styleString(element, '-moz-box-sizing') == 'border-box';
+};
+
+function topBorder(element){
+	return styleNumber(element, 'border-top-width');
+};
+
+function leftBorder(element){
+	return styleNumber(element, 'border-left-width');
+};
+
+function isBody(element){
+	return (/^(?:body|html)$/i).test(element.tagName);
+};
+
+function getCompatElement(element){
+	var doc = element.getDocument();
+	return (!doc.compatMode || doc.compatMode == 'CSS1Compat') ? doc.html : doc.body;
+};
+
+})();
+
+//aliases
+Element.alias('setPosition', 'position'); //compatability
+
+Native.implement([Window, Document, Element], {
+
+	getHeight: function(){
+		return this.getSize().y;
+	},
+
+	getWidth: function(){
+		return this.getSize().x;
+	},
+
+	getScrollTop: function(){
+		return this.getScroll().y;
+	},
+
+	getScrollLeft: function(){
+		return this.getScroll().x;
+	},
+
+	getScrollHeight: function(){
+		return this.getScrollSize().y;
+	},
+
+	getScrollWidth: function(){
+		return this.getScrollSize().x;
+	},
+
+	getTop: function(){
+		return this.getPosition().y;
+	},
+
+	getLeft: function(){
+		return this.getPosition().x;
+	}
+
+});
+
+
+/*
+---
+
+name: Event
+
+description: Contains the Event Class, to make the event object cross-browser.
+
+license: MIT-style license.
+
+requires: [Window, Document, Hash, Array, Function, String]
+
+provides: Event
+
+...
+*/
+
+var Event = new Native({
+
+	name: 'Event',
+
+	initialize: function(event, win){
+		win = win || window;
+		var doc = win.document;
+		event = event || win.event;
+		if (event.$extended) return event;
+		this.$extended = true;
+		var type = event.type;
+		var target = event.target || event.srcElement;
+		while (target && target.nodeType == 3) target = target.parentNode;
+
+		if (type.test(/key/)){
+			var code = event.which || event.keyCode;
+			var key = Event.Keys.keyOf(code);
+			if (type == 'keydown'){
+				var fKey = code - 111;
+				if (fKey > 0 && fKey < 13) key = 'f' + fKey;
+			}
+			key = key || String.fromCharCode(code).toLowerCase();
+		} else if (type.match(/(click|mouse|menu)/i)){
+			doc = (!doc.compatMode || doc.compatMode == 'CSS1Compat') ? doc.html : doc.body;
+			var page = {
+				x: event.pageX || event.clientX + doc.scrollLeft,
+				y: event.pageY || event.clientY + doc.scrollTop
+			};
+			var client = {
+				x: (event.pageX) ? event.pageX - win.pageXOffset : event.clientX,
+				y: (event.pageY) ? event.pageY - win.pageYOffset : event.clientY
+			};
+			if (type.match(/DOMMouseScroll|mousewheel/)){
+				var wheel = (event.wheelDelta) ? event.wheelDelta / 120 : -(event.detail || 0) / 3;
+			}
+			var rightClick = (event.which == 3) || (event.button == 2);
+			var related = null;
+			if (type.match(/over|out/)){
+				switch (type){
+					case 'mouseover': related = event.relatedTarget || event.fromElement; break;
+					case 'mouseout': related = event.relatedTarget || event.toElement;
+				}
+				if (!(function(){
+					while (related && related.nodeType == 3) related = related.parentNode;
+					return true;
+				}).create({attempt: Browser.Engine.gecko})()) related = false;
+			}
+		}
+
+		return $extend(this, {
+			event: event,
+			type: type,
+
+			page: page,
+			client: client,
+			rightClick: rightClick,
+
+			wheel: wheel,
+
+			relatedTarget: related,
+			target: target,
+
+			code: code,
+			key: key,
+
+			shift: event.shiftKey,
+			control: event.ctrlKey,
+			alt: event.altKey,
+			meta: event.metaKey
+		});
+	}
+
+});
+
+Event.Keys = new Hash({
+	'enter': 13,
+	'up': 38,
+	'down': 40,
+	'left': 37,
+	'right': 39,
+	'esc': 27,
+	'space': 32,
+	'backspace': 8,
+	'tab': 9,
+	'delete': 46
+});
+
+Event.implement({
+
+	stop: function(){
+		return this.stopPropagation().preventDefault();
+	},
+
+	stopPropagation: function(){
+		if (this.event.stopPropagation) this.event.stopPropagation();
+		else this.event.cancelBubble = true;
+		return this;
+	},
+
+	preventDefault: function(){
+		if (this.event.preventDefault) this.event.preventDefault();
+		else this.event.returnValue = false;
+		return this;
+	}
+
+});
+
+
+/*
+---
+
+name: Element.Event
+
+description: Contains Element methods for dealing with events. This file also includes mouseenter and mouseleave custom Element Events.
+
+license: MIT-style license.
+
+requires: [Element, Event]
+
+provides: Element.Event
+
+...
+*/
+
+Element.Properties.events = {set: function(events){
+	this.addEvents(events);
+}};
+
+Native.implement([Element, Window, Document], {
+
+	addEvent: function(type, fn){
+		var events = this.retrieve('events', {});
+		events[type] = events[type] || {'keys': [], 'values': []};
+		if (events[type].keys.contains(fn)) return this;
+		events[type].keys.push(fn);
+		var realType = type, custom = Element.Events.get(type), condition = fn, self = this;
+		if (custom){
+			if (custom.onAdd) custom.onAdd.call(this, fn);
+			if (custom.condition){
+				condition = function(event){
+					if (custom.condition.call(this, event)) return fn.call(this, event);
+					return true;
+				};
+			}
+			realType = custom.base || realType;
+		}
+		var defn = function(){
+			return fn.call(self);
+		};
+		var nativeEvent = Element.NativeEvents[realType];
+		if (nativeEvent){
+			if (nativeEvent == 2){
+				defn = function(event){
+					event = new Event(event, self.getWindow());
+					if (condition.call(self, event) === false) event.stop();
+				};
+			}
+			this.addListener(realType, defn);
+		}
+		events[type].values.push(defn);
+		return this;
+	},
+
+	removeEvent: function(type, fn){
+		var events = this.retrieve('events');
+		if (!events || !events[type]) return this;
+		var pos = events[type].keys.indexOf(fn);
+		if (pos == -1) return this;
+		events[type].keys.splice(pos, 1);
+		var value = events[type].values.splice(pos, 1)[0];
+		var custom = Element.Events.get(type);
+		if (custom){
+			if (custom.onRemove) custom.onRemove.call(this, fn);
+			type = custom.base || type;
+		}
+		return (Element.NativeEvents[type]) ? this.removeListener(type, value) : this;
+	},
+
+	addEvents: function(events){
+		for (var event in events) this.addEvent(event, events[event]);
+		return this;
+	},
+
+	removeEvents: function(events){
+		var type;
+		if ($type(events) == 'object'){
+			for (type in events) this.removeEvent(type, events[type]);
+			return this;
+		}
+		var attached = this.retrieve('events');
+		if (!attached) return this;
+		if (!events){
+			for (type in attached) this.removeEvents(type);
+			this.eliminate('events');
+		} else if (attached[events]){
+			while (attached[events].keys[0]) this.removeEvent(events, attached[events].keys[0]);
+			attached[events] = null;
+		}
+		return this;
+	},
+
+	fireEvent: function(type, args, delay){
+		var events = this.retrieve('events');
+		if (!events || !events[type]) return this;
+		events[type].keys.each(function(fn){
+			fn.create({'bind': this, 'delay': delay, 'arguments': args})();
+		}, this);
+		return this;
+	},
+
+	cloneEvents: function(from, type){
+		from = document.id(from);
+		var fevents = from.retrieve('events');
+		if (!fevents) return this;
+		if (!type){
+			for (var evType in fevents) this.cloneEvents(from, evType);
+		} else if (fevents[type]){
+			fevents[type].keys.each(function(fn){
+				this.addEvent(type, fn);
+			}, this);
+		}
+		return this;
+	}
+
+});
+
+// IE9
+try {
+	if (typeof HTMLElement != 'undefined')
+		HTMLElement.prototype.fireEvent = Element.prototype.fireEvent;
+} catch(e){}
+
+Element.NativeEvents = {
+	click: 2, dblclick: 2, mouseup: 2, mousedown: 2, contextmenu: 2, //mouse buttons
+	mousewheel: 2, DOMMouseScroll: 2, //mouse wheel
+	mouseover: 2, mouseout: 2, mousemove: 2, selectstart: 2, selectend: 2, //mouse movement
+	keydown: 2, keypress: 2, keyup: 2, //keyboard
+	focus: 2, blur: 2, change: 2, reset: 2, select: 2, submit: 2, //form elements
+	load: 1, unload: 1, beforeunload: 2, resize: 1, move: 1, DOMContentLoaded: 1, readystatechange: 1, //window
+	error: 1, abort: 1, scroll: 1 //misc
+};
+
+(function(){
+
+var $check = function(event){
+	var related = event.relatedTarget;
+	if (related == undefined) return true;
+	if (related === false) return false;
+	return ($type(this) != 'document' && related != this && related.prefix != 'xul' && !this.hasChild(related));
+};
+
+Element.Events = new Hash({
+
+	mouseenter: {
+		base: 'mouseover',
+		condition: $check
+	},
+
+	mouseleave: {
+		base: 'mouseout',
+		condition: $check
+	},
+
+	mousewheel: {
+		base: (Browser.Engine.gecko) ? 'DOMMouseScroll' : 'mousewheel'
+	}
+
+});
+
+})();
+
+
+/*
+---
+
+name: Element.Style
+
+description: Contains methods for interacting with the styles of Elements in a fashionable way.
+
+license: MIT-style license.
+
+requires: Element
+
+provides: Element.Style
+
+...
+*/
+
+Element.Properties.styles = {set: function(styles){
+	this.setStyles(styles);
+}};
+
+Element.Properties.opacity = {
+
+	set: function(opacity, novisibility){
+		if (!novisibility){
+			if (opacity == 0){
+				if (this.style.visibility != 'hidden') this.style.visibility = 'hidden';
+			} else {
+				if (this.style.visibility != 'visible') this.style.visibility = 'visible';
+			}
+		}
+		if (!this.currentStyle || !this.currentStyle.hasLayout) this.style.zoom = 1;
+		if (Browser.Engine.trident) this.style.filter = (opacity == 1) ? '' : 'alpha(opacity=' + opacity * 100 + ')';
+		this.style.opacity = opacity;
+		this.store('opacity', opacity);
+	},
+
+	get: function(){
+		return this.retrieve('opacity', 1);
+	}
+
+};
+
+Element.implement({
+
+	setOpacity: function(value){
+		return this.set('opacity', value, true);
+	},
+
+	getOpacity: function(){
+		return this.get('opacity');
+	},
+
+	setStyle: function(property, value){
+		switch (property){
+			case 'opacity': return this.set('opacity', parseFloat(value));
+			case 'float': property = (Browser.Engine.trident) ? 'styleFloat' : 'cssFloat';
+		}
+		property = property.camelCase();
+		if ($type(value) != 'string'){
+			var map = (Element.Styles.get(property) || '@').split(' ');
+			value = $splat(value).map(function(val, i){
+				if (!map[i]) return '';
+				return ($type(val) == 'number') ? map[i].replace('@', Math.round(val)) : val;
+			}).join(' ');
+		} else if (value == String(Number(value))){
+			value = Math.round(value);
+		}
+		this.style[property] = value;
+		return this;
+	},
+
+	getStyle: function(property){
+		switch (property){
+			case 'opacity': return this.get('opacity');
+			case 'float': property = (Browser.Engine.trident) ? 'styleFloat' : 'cssFloat';
+		}
+		property = property.camelCase();
+		var result = this.style[property];
+		if (!$chk(result)){
+			result = [];
+			for (var style in Element.ShortStyles){
+				if (property != style) continue;
+				for (var s in Element.ShortStyles[style]) result.push(this.getStyle(s));
+				return result.join(' ');
+			}
+			result = this.getComputedStyle(property);
+		}
+		if (result){
+			result = String(result);
+			var color = result.match(/rgba?\([\d\s,]+\)/);
+			if (color) result = result.replace(color[0], color[0].rgbToHex());
+		}
+		if (Browser.Engine.presto || (Browser.Engine.trident && !$chk(parseInt(result, 10)))){
+			if (property.test(/^(height|width)$/)){
+				var values = (property == 'width') ? ['left', 'right'] : ['top', 'bottom'], size = 0;
+				values.each(function(value){
+					size += this.getStyle('border-' + value + '-width').toInt() + this.getStyle('padding-' + value).toInt();
+				}, this);
+				return this['offset' + property.capitalize()] - size + 'px';
+			}
+			if ((Browser.Engine.presto) && String(result).test('px')) return result;
+			if (property.test(/(border(.+)Width|margin|padding)/)) return '0px';
+		}
+		return result;
+	},
+
+	setStyles: function(styles){
+		for (var style in styles) this.setStyle(style, styles[style]);
+		return this;
+	},
+
+	getStyles: function(){
+		var result = {};
+		Array.flatten(arguments).each(function(key){
+			result[key] = this.getStyle(key);
+		}, this);
+		return result;
+	}
+
+});
+
+Element.Styles = new Hash({
+	left: '@px', top: '@px', bottom: '@px', right: '@px',
+	width: '@px', height: '@px', maxWidth: '@px', maxHeight: '@px', minWidth: '@px', minHeight: '@px',
+	backgroundColor: 'rgb(@, @, @)', backgroundPosition: '@px @px', color: 'rgb(@, @, @)',
+	fontSize: '@px', letterSpacing: '@px', lineHeight: '@px', clip: 'rect(@px @px @px @px)',
+	margin: '@px @px @px @px', padding: '@px @px @px @px', border: '@px @ rgb(@, @, @) @px @ rgb(@, @, @) @px @ rgb(@, @, @)',
+	borderWidth: '@px @px @px @px', borderStyle: '@ @ @ @', borderColor: 'rgb(@, @, @) rgb(@, @, @) rgb(@, @, @) rgb(@, @, @)',
+	zIndex: '@', 'zoom': '@', fontWeight: '@', textIndent: '@px', opacity: '@'
+});
+
+Element.ShortStyles = {margin: {}, padding: {}, border: {}, borderWidth: {}, borderStyle: {}, borderColor: {}};
+
+['Top', 'Right', 'Bottom', 'Left'].each(function(direction){
+	var Short = Element.ShortStyles;
+	var All = Element.Styles;
+	['margin', 'padding'].each(function(style){
+		var sd = style + direction;
+		Short[style][sd] = All[sd] = '@px';
+	});
+	var bd = 'border' + direction;
+	Short.border[bd] = All[bd] = '@px @ rgb(@, @, @)';
+	var bdw = bd + 'Width', bds = bd + 'Style', bdc = bd + 'Color';
+	Short[bd] = {};
+	Short.borderWidth[bdw] = Short[bd][bdw] = All[bdw] = '@px';
+	Short.borderStyle[bds] = Short[bd][bds] = All[bds] = '@';
+	Short.borderColor[bdc] = Short[bd][bdc] = All[bdc] = 'rgb(@, @, @)';
+});
+
+
+/*
+---
+
+name: Fx
+
+description: Contains the basic animation logic to be extended by all other Fx Classes.
+
+license: MIT-style license.
+
+requires: [Chain, Events, Options]
+
+provides: Fx
+
+...
+*/
+
+var Fx = new Class({
+
+	Implements: [Chain, Events, Options],
+
+	options: {
+		/*
+		onStart: $empty,
+		onCancel: $empty,
+		onComplete: $empty,
+		*/
+		fps: 50,
+		unit: false,
+		duration: 500,
+		link: 'ignore'
+	},
+
+	initialize: function(options){
+		this.subject = this.subject || this;
+		this.setOptions(options);
+		this.options.duration = Fx.Durations[this.options.duration] || this.options.duration.toInt();
+		var wait = this.options.wait;
+		if (wait === false) this.options.link = 'cancel';
+	},
+
+	getTransition: function(){
+		return function(p){
+			return -(Math.cos(Math.PI * p) - 1) / 2;
+		};
+	},
+
+	step: function(){
+		var time = $time();
+		if (time < this.time + this.options.duration){
+			var delta = this.transition((time - this.time) / this.options.duration);
+			this.set(this.compute(this.from, this.to, delta));
+		} else {
+			this.set(this.compute(this.from, this.to, 1));
+			this.complete();
+		}
+	},
+
+	set: function(now){
+		return now;
+	},
+
+	compute: function(from, to, delta){
+		return Fx.compute(from, to, delta);
+	},
+
+	check: function(){
+		if (!this.timer) return true;
+		switch (this.options.link){
+			case 'cancel': this.cancel(); return true;
+			case 'chain': this.chain(this.caller.bind(this, arguments)); return false;
+		}
+		return false;
+	},
+
+	start: function(from, to){
+		if (!this.check(from, to)) return this;
+		this.from = from;
+		this.to = to;
+		this.time = 0;
+		this.transition = this.getTransition();
+		this.startTimer();
+		this.onStart();
+		return this;
+	},
+
+	complete: function(){
+		if (this.stopTimer()) this.onComplete();
+		return this;
+	},
+
+	cancel: function(){
+		if (this.stopTimer()) this.onCancel();
+		return this;
+	},
+
+	onStart: function(){
+		this.fireEvent('start', this.subject);
+	},
+
+	onComplete: function(){
+		this.fireEvent('complete', this.subject);
+		if (!this.callChain()) this.fireEvent('chainComplete', this.subject);
+	},
+
+	onCancel: function(){
+		this.fireEvent('cancel', this.subject).clearChain();
+	},
+
+	pause: function(){
+		this.stopTimer();
+		return this;
+	},
+
+	resume: function(){
+		this.startTimer();
+		return this;
+	},
+
+	stopTimer: function(){
+		if (!this.timer) return false;
+		this.time = $time() - this.time;
+		this.timer = $clear(this.timer);
+		return true;
+	},
+
+	startTimer: function(){
+		if (this.timer) return false;
+		this.time = $time() - this.time;
+		this.timer = this.step.periodical(Math.round(1000 / this.options.fps), this);
+		return true;
+	}
+
+});
+
+Fx.compute = function(from, to, delta){
+	return (to - from) * delta + from;
+};
+
+Fx.Durations = {'short': 250, 'normal': 500, 'long': 1000};
+
+
+/*
+---
+
+name: Fx.CSS
+
+description: Contains the CSS animation logic. Used by Fx.Tween, Fx.Morph, Fx.Elements.
+
+license: MIT-style license.
+
+requires: [Fx, Element.Style]
+
+provides: Fx.CSS
+
+...
+*/
+
+Fx.CSS = new Class({
+
+	Extends: Fx,
+
+	//prepares the base from/to object
+
+	prepare: function(element, property, values){
+		values = $splat(values);
+		var values1 = values[1];
+		if (!$chk(values1)){
+			values[1] = values[0];
+			values[0] = element.getStyle(property);
+		}
+		var parsed = values.map(this.parse);
+		return {from: parsed[0], to: parsed[1]};
+	},
+
+	//parses a value into an array
+
+	parse: function(value){
+		value = $lambda(value)();
+		value = (typeof value == 'string') ? value.split(' ') : $splat(value);
+		return value.map(function(val){
+			val = String(val);
+			var found = false;
+			Fx.CSS.Parsers.each(function(parser, key){
+				if (found) return;
+				var parsed = parser.parse(val);
+				if ($chk(parsed)) found = {value: parsed, parser: parser};
+			});
+			found = found || {value: val, parser: Fx.CSS.Parsers.String};
+			return found;
+		});
+	},
+
+	//computes by a from and to prepared objects, using their parsers.
+
+	compute: function(from, to, delta){
+		var computed = [];
+		(Math.min(from.length, to.length)).times(function(i){
+			computed.push({value: from[i].parser.compute(from[i].value, to[i].value, delta), parser: from[i].parser});
+		});
+		computed.$family = {name: 'fx:css:value'};
+		return computed;
+	},
+
+	//serves the value as settable
+
+	serve: function(value, unit){
+		if ($type(value) != 'fx:css:value') value = this.parse(value);
+		var returned = [];
+		value.each(function(bit){
+			returned = returned.concat(bit.parser.serve(bit.value, unit));
+		});
+		return returned;
+	},
+
+	//renders the change to an element
+
+	render: function(element, property, value, unit){
+		element.setStyle(property, this.serve(value, unit));
+	},
+
+	//searches inside the page css to find the values for a selector
+
+	search: function(selector){
+		if (Fx.CSS.Cache[selector]) return Fx.CSS.Cache[selector];
+		var to = {};
+		Array.each(document.styleSheets, function(sheet, j){
+			var href = sheet.href;
+			if (href && href.contains('://') && !href.contains(document.domain)) return;
+			var rules = sheet.rules || sheet.cssRules;
+			Array.each(rules, function(rule, i){
+				if (!rule.style) return;
+				var selectorText = (rule.selectorText) ? rule.selectorText.replace(/^\w+/, function(m){
+					return m.toLowerCase();
+				}) : null;
+				if (!selectorText || !selectorText.test('^' + selector + '$')) return;
+				Element.Styles.each(function(value, style){
+					if (!rule.style[style] || Element.ShortStyles[style]) return;
+					value = String(rule.style[style]);
+					to[style] = (value.test(/^rgb/)) ? value.rgbToHex() : value;
+				});
+			});
+		});
+		return Fx.CSS.Cache[selector] = to;
+	}
+
+});
+
+Fx.CSS.Cache = {};
+
+Fx.CSS.Parsers = new Hash({
+
+	Color: {
+		parse: function(value){
+			if (value.match(/^#[0-9a-f]{3,6}$/i)) return value.hexToRgb(true);
+			return ((value = value.match(/(\d+),\s*(\d+),\s*(\d+)/))) ? [value[1], value[2], value[3]] : false;
+		},
+		compute: function(from, to, delta){
+			return from.map(function(value, i){
+				return Math.round(Fx.compute(from[i], to[i], delta));
+			});
+		},
+		serve: function(value){
+			return value.map(Number);
+		}
+	},
+
+	Number: {
+		parse: parseFloat,
+		compute: Fx.compute,
+		serve: function(value, unit){
+			return (unit) ? value + unit : value;
+		}
+	},
+
+	String: {
+		parse: $lambda(false),
+		compute: $arguments(1),
+		serve: $arguments(0)
+	}
+
+});
+
+
+/*
+---
+
+name: Fx.Morph
+
+description: Formerly Fx.Styles, effect to transition any number of CSS properties for an element using an object of rules, or CSS based selector rules.
+
+license: MIT-style license.
+
+requires: Fx.CSS
+
+provides: Fx.Morph
+
+...
+*/
+
+Fx.Morph = new Class({
+
+	Extends: Fx.CSS,
+
+	initialize: function(element, options){
+		this.element = this.subject = document.id(element);
+		this.parent(options);
+	},
+
+	set: function(now){
+		if (typeof now == 'string') now = this.search(now);
+		for (var p in now) this.render(this.element, p, now[p], this.options.unit);
+		return this;
+	},
+
+	compute: function(from, to, delta){
+		var now = {};
+		for (var p in from) now[p] = this.parent(from[p], to[p], delta);
+		return now;
+	},
+
+	start: function(properties){
+		if (!this.check(properties)) return this;
+		if (typeof properties == 'string') properties = this.search(properties);
+		var from = {}, to = {};
+		for (var p in properties){
+			var parsed = this.prepare(this.element, p, properties[p]);
+			from[p] = parsed.from;
+			to[p] = parsed.to;
+		}
+		return this.parent(from, to);
+	}
+
+});
+
+Element.Properties.morph = {
+
+	set: function(options){
+		var morph = this.retrieve('morph');
+		if (morph) morph.cancel();
+		return this.eliminate('morph').store('morph:options', $extend({link: 'cancel'}, options));
+	},
+
+	get: function(options){
+		if (options || !this.retrieve('morph')){
+			if (options || !this.retrieve('morph:options')) this.set('morph', options);
+			this.store('morph', new Fx.Morph(this, this.retrieve('morph:options')));
+		}
+		return this.retrieve('morph');
+	}
+
+};
+
+Element.implement({
+
+	morph: function(props){
+		this.get('morph').start(props);
+		return this;
+	}
+
+});
+
+
+/*
+---
+
+name: Fx.Transitions
+
+description: Contains a set of advanced transitions to be used with any of the Fx Classes.
+
+license: MIT-style license.
+
+credits: Easing Equations by Robert Penner, <http://www.robertpenner.com/easing/>, modified and optimized to be used with MooTools.
+
+requires: Fx
+
+provides: Fx.Transitions
+
+...
+*/
+
+Fx.implement({
+
+	getTransition: function(){
+		var trans = this.options.transition || Fx.Transitions.Sine.easeInOut;
+		if (typeof trans == 'string'){
+			var data = trans.split(':');
+			trans = Fx.Transitions;
+			trans = trans[data[0]] || trans[data[0].capitalize()];
+			if (data[1]) trans = trans['ease' + data[1].capitalize() + (data[2] ? data[2].capitalize() : '')];
+		}
+		return trans;
+	}
+
+});
+
+Fx.Transition = function(transition, params){
+	params = $splat(params);
+	return $extend(transition, {
+		easeIn: function(pos){
+			return transition(pos, params);
+		},
+		easeOut: function(pos){
+			return 1 - transition(1 - pos, params);
+		},
+		easeInOut: function(pos){
+			return (pos <= 0.5) ? transition(2 * pos, params) / 2 : (2 - transition(2 * (1 - pos), params)) / 2;
+		}
+	});
+};
+
+Fx.Transitions = new Hash({
+
+	linear: $arguments(0)
+
+});
+
+Fx.Transitions.extend = function(transitions){
+	for (var transition in transitions) Fx.Transitions[transition] = new Fx.Transition(transitions[transition]);
+};
+
+Fx.Transitions.extend({
+
+	Pow: function(p, x){
+		return Math.pow(p, x[0] || 6);
+	},
+
+	Expo: function(p){
+		return Math.pow(2, 8 * (p - 1));
+	},
+
+	Circ: function(p){
+		return 1 - Math.sin(Math.acos(p));
+	},
+
+	Sine: function(p){
+		return 1 - Math.sin((1 - p) * Math.PI / 2);
+	},
+
+	Back: function(p, x){
+		x = x[0] || 1.618;
+		return Math.pow(p, 2) * ((x + 1) * p - x);
+	},
+
+	Bounce: function(p){
+		var value;
+		for (var a = 0, b = 1; 1; a += b, b /= 2){
+			if (p >= (7 - 4 * a) / 11){
+				value = b * b - Math.pow((11 - 6 * a - 11 * p) / 4, 2);
+				break;
+			}
+		}
+		return value;
+	},
+
+	Elastic: function(p, x){
+		return Math.pow(2, 10 * --p) * Math.cos(20 * p * Math.PI * (x[0] || 1) / 3);
+	}
+
+});
+
+['Quad', 'Cubic', 'Quart', 'Quint'].each(function(transition, i){
+	Fx.Transitions[transition] = new Fx.Transition(function(p){
+		return Math.pow(p, [i + 2]);
+	});
+});
+
+
+/*
+---
+
+name: Fx.Tween
+
+description: Formerly Fx.Style, effect to transition any CSS property for an element.
+
+license: MIT-style license.
+
+requires: Fx.CSS
+
+provides: [Fx.Tween, Element.fade, Element.highlight]
+
+...
+*/
+
+Fx.Tween = new Class({
+
+	Extends: Fx.CSS,
+
+	initialize: function(element, options){
+		this.element = this.subject = document.id(element);
+		this.parent(options);
+	},
+
+	set: function(property, now){
+		if (arguments.length == 1){
+			now = property;
+			property = this.property || this.options.property;
+		}
+		this.render(this.element, property, now, this.options.unit);
+		return this;
+	},
+
+	start: function(property, from, to){
+		if (!this.check(property, from, to)) return this;
+		var args = Array.flatten(arguments);
+		this.property = this.options.property || args.shift();
+		var parsed = this.prepare(this.element, this.property, args);
+		return this.parent(parsed.from, parsed.to);
+	}
+
+});
+
+Element.Properties.tween = {
+
+	set: function(options){
+		var tween = this.retrieve('tween');
+		if (tween) tween.cancel();
+		return this.eliminate('tween').store('tween:options', $extend({link: 'cancel'}, options));
+	},
+
+	get: function(options){
+		if (options || !this.retrieve('tween')){
+			if (options || !this.retrieve('tween:options')) this.set('tween', options);
+			this.store('tween', new Fx.Tween(this, this.retrieve('tween:options')));
+		}
+		return this.retrieve('tween');
+	}
+
+};
+
+Element.implement({
+
+	tween: function(property, from, to){
+		this.get('tween').start(arguments);
+		return this;
+	},
+
+	fade: function(how){
+		var fade = this.get('tween'), o = 'opacity', toggle;
+		how = $pick(how, 'toggle');
+		switch (how){
+			case 'in': fade.start(o, 1); break;
+			case 'out': fade.start(o, 0); break;
+			case 'show': fade.set(o, 1); break;
+			case 'hide': fade.set(o, 0); break;
+			case 'toggle':
+				var flag = this.retrieve('fade:flag', this.get('opacity') == 1);
+				fade.start(o, (flag) ? 0 : 1);
+				this.store('fade:flag', !flag);
+				toggle = true;
+			break;
+			default: fade.start(o, arguments);
+		}
+		if (!toggle) this.eliminate('fade:flag');
+		return this;
+	},
+
+	highlight: function(start, end){
+		if (!end){
+			end = this.retrieve('highlight:original', this.getStyle('background-color'));
+			end = (end == 'transparent') ? '#fff' : end;
+		}
+		var tween = this.get('tween');
+		tween.start('background-color', start || '#ffff88', end).chain(function(){
+			this.setStyle('background-color', this.retrieve('highlight:original'));
+			tween.callChain();
+		}.bind(this));
+		return this;
+	}
+
+});
+
+
+/*
+---
+
+name: Request
+
+description: Powerful all purpose Request Class. Uses XMLHTTPRequest.
+
+license: MIT-style license.
+
+requires: [Element, Chain, Events, Options, Browser]
+
+provides: Request
+
+...
+*/
+
+var Request = new Class({
+
+	Implements: [Chain, Events, Options],
+
+	options: {/*
+		onRequest: $empty,
+		onComplete: $empty,
+		onCancel: $empty,
+		onSuccess: $empty,
+		onFailure: $empty,
+		onException: $empty,*/
+		url: '',
+		data: '',
+		headers: {
+			'X-Requested-With': 'XMLHttpRequest',
+			'Accept': 'text/javascript, text/html, application/xml, text/xml, */*'
+		},
+		async: true,
+		format: false,
+		method: 'post',
+		link: 'ignore',
+		isSuccess: null,
+		emulation: true,
+		urlEncoded: true,
+		encoding: 'utf-8',
+		evalScripts: false,
+		evalResponse: false,
+		noCache: false
+	},
+
+	initialize: function(options){
+		this.xhr = new Browser.Request();
+		this.setOptions(options);
+		this.options.isSuccess = this.options.isSuccess || this.isSuccess;
+		this.headers = new Hash(this.options.headers);
+	},
+
+	onStateChange: function(){
+		if (this.xhr.readyState != 4 || !this.running) return;
+		this.running = false;
+		this.status = 0;
+		$try(function(){
+			this.status = this.xhr.status;
+		}.bind(this));
+		this.xhr.onreadystatechange = $empty;
+		if (this.options.isSuccess.call(this, this.status)){
+			this.response = {text: this.xhr.responseText, xml: this.xhr.responseXML};
+			this.success(this.response.text, this.response.xml);
+		} else {
+			this.response = {text: null, xml: null};
+			this.failure();
+		}
+	},
+
+	isSuccess: function(){
+		return ((this.status >= 200) && (this.status < 300));
+	},
+
+	processScripts: function(text){
+		if (this.options.evalResponse || (/(ecma|java)script/).test(this.getHeader('Content-type'))) return $exec(text);
+		return text.stripScripts(this.options.evalScripts);
+	},
+
+	success: function(text, xml){
+		this.onSuccess(this.processScripts(text), xml);
+	},
+
+	onSuccess: function(){
+		this.fireEvent('complete', arguments).fireEvent('success', arguments).callChain();
+	},
+
+	failure: function(){
+		this.onFailure();
+	},
+
+	onFailure: function(){
+		this.fireEvent('complete').fireEvent('failure', this.xhr);
+	},
+
+	setHeader: function(name, value){
+		this.headers.set(name, value);
+		return this;
+	},
+
+	getHeader: function(name){
+		return $try(function(){
+			return this.xhr.getResponseHeader(name);
+		}.bind(this));
+	},
+
+	check: function(){
+		if (!this.running) return true;
+		switch (this.options.link){
+			case 'cancel': this.cancel(); return true;
+			case 'chain': this.chain(this.caller.bind(this, arguments)); return false;
+		}
+		return false;
+	},
+
+	send: function(options){
+		if (!this.check(options)) return this;
+		this.running = true;
+
+		var type = $type(options);
+		if (type == 'string' || type == 'element') options = {data: options};
+
+		var old = this.options;
+		options = $extend({data: old.data, url: old.url, method: old.method}, options);
+		var data = options.data, url = String(options.url), method = options.method.toLowerCase();
+
+		switch ($type(data)){
+			case 'element': data = document.id(data).toQueryString(); break;
+			case 'object': case 'hash': data = Hash.toQueryString(data);
+		}
+
+		if (this.options.format){
+			var format = 'format=' + this.options.format;
+			data = (data) ? format + '&' + data : format;
+		}
+
+		if (this.options.emulation && !['get', 'post'].contains(method)){
+			var _method = '_method=' + method;
+			data = (data) ? _method + '&' + data : _method;
+			method = 'post';
+		}
+
+		if (this.options.urlEncoded && method == 'post'){
+			var encoding = (this.options.encoding) ? '; charset=' + this.options.encoding : '';
+			this.headers.set('Content-type', 'application/x-www-form-urlencoded' + encoding);
+		}
+
+		if (this.options.noCache){
+			var noCache = 'noCache=' + new Date().getTime();
+			data = (data) ? noCache + '&' + data : noCache;
+		}
+
+		var trimPosition = url.lastIndexOf('/');
+		if (trimPosition > -1 && (trimPosition = url.indexOf('#')) > -1) url = url.substr(0, trimPosition);
+
+		if (data && method == 'get'){
+			url = url + (url.contains('?') ? '&' : '?') + data;
+			data = null;
+		}
+
+		this.xhr.open(method.toUpperCase(), url, this.options.async);
+
+		this.xhr.onreadystatechange = this.onStateChange.bind(this);
+
+		this.headers.each(function(value, key){
+			try {
+				this.xhr.setRequestHeader(key, value);
+			} catch (e){
+				this.fireEvent('exception', [key, value]);
+			}
+		}, this);
+
+		this.fireEvent('request');
+		this.xhr.send(data);
+		if (!this.options.async) this.onStateChange();
+		return this;
+	},
+
+	cancel: function(){
+		if (!this.running) return this;
+		this.running = false;
+		this.xhr.abort();
+		this.xhr.onreadystatechange = $empty;
+		this.xhr = new Browser.Request();
+		this.fireEvent('cancel');
+		return this;
+	}
+
+});
+
+(function(){
+
+var methods = {};
+['get', 'post', 'put', 'delete', 'GET', 'POST', 'PUT', 'DELETE'].each(function(method){
+	methods[method] = function(){
+		var params = Array.link(arguments, {url: String.type, data: $defined});
+		return this.send($extend(params, {method: method}));
+	};
+});
+
+Request.implement(methods);
+
+})();
+
+Element.Properties.send = {
+
+	set: function(options){
+		var send = this.retrieve('send');
+		if (send) send.cancel();
+		return this.eliminate('send').store('send:options', $extend({
+			data: this, link: 'cancel', method: this.get('method') || 'post', url: this.get('action')
+		}, options));
+	},
+
+	get: function(options){
+		if (options || !this.retrieve('send')){
+			if (options || !this.retrieve('send:options')) this.set('send', options);
+			this.store('send', new Request(this.retrieve('send:options')));
+		}
+		return this.retrieve('send');
+	}
+
+};
+
+Element.implement({
+
+	send: function(url){
+		var sender = this.get('send');
+		sender.send({data: this, url: url || sender.options.url});
+		return this;
+	}
+
+});
+
+
+/*
+---
+
+name: Request.HTML
+
+description: Extends the basic Request Class with additional methods for interacting with HTML responses.
+
+license: MIT-style license.
+
+requires: [Request, Element]
+
+provides: Request.HTML
+
+...
+*/
+
+Request.HTML = new Class({
+
+	Extends: Request,
+
+	options: {
+		update: false,
+		append: false,
+		evalScripts: true,
+		filter: false
+	},
+
+	processHTML: function(text){
+		var match = text.match(/<body[^>]*>([\s\S]*?)<\/body>/i);
+		text = (match) ? match[1] : text;
+
+		var container = new Element('div');
+
+		return $try(function(){
+			var root = '<root>' + text + '</root>', doc;
+			if (Browser.Engine.trident){
+				doc = new ActiveXObject('Microsoft.XMLDOM');
+				doc.async = false;
+				doc.loadXML(root);
+			} else {
+				doc = new DOMParser().parseFromString(root, 'text/xml');
+			}
+			root = doc.getElementsByTagName('root')[0];
+			if (!root) return null;
+			for (var i = 0, k = root.childNodes.length; i < k; i++){
+				var child = Element.clone(root.childNodes[i], true, true);
+				if (child) container.grab(child);
+			}
+			return container;
+		}) || container.set('html', text);
+	},
+
+	success: function(text){
+		var options = this.options, response = this.response;
+
+		response.html = text.stripScripts(function(script){
+			response.javascript = script;
+		});
+
+		var temp = this.processHTML(response.html);
+
+		response.tree = temp.childNodes;
+		response.elements = temp.getElements('*');
+
+		if (options.filter) response.tree = response.elements.filter(options.filter);
+		if (options.update) document.id(options.update).empty().set('html', response.html);
+		else if (options.append) document.id(options.append).adopt(temp.getChildren());
+		if (options.evalScripts) $exec(response.javascript);
+
+		this.onSuccess(response.tree, response.elements, response.html, response.javascript);
+	}
+
+});
+
+Element.Properties.load = {
+
+	set: function(options){
+		var load = this.retrieve('load');
+		if (load) load.cancel();
+		return this.eliminate('load').store('load:options', $extend({data: this, link: 'cancel', update: this, method: 'get'}, options));
+	},
+
+	get: function(options){
+		if (options || ! this.retrieve('load')){
+			if (options || !this.retrieve('load:options')) this.set('load', options);
+			this.store('load', new Request.HTML(this.retrieve('load:options')));
+		}
+		return this.retrieve('load');
+	}
+
+};
+
+Element.implement({
+
+	load: function(){
+		this.get('load').send(Array.link(arguments, {data: Object.type, url: String.type}));
+		return this;
+	}
+
+});
+
+
+/*
+---
+
+name: JSON
+
+description: JSON encoder and decoder.
+
+license: MIT-style license.
+
+see: <http://www.json.org/>
+
+requires: [Array, String, Number, Function, Hash]
+
+provides: JSON
+
+...
+*/
+
+var JSON = new Hash(this.JSON && {
+	stringify: JSON.stringify,
+	parse: JSON.parse
+}).extend({
+	
+	$specialChars: {'\b': '\\b', '\t': '\\t', '\n': '\\n', '\f': '\\f', '\r': '\\r', '"' : '\\"', '\\': '\\\\'},
+
+	$replaceChars: function(chr){
+		return JSON.$specialChars[chr] || '\\u00' + Math.floor(chr.charCodeAt() / 16).toString(16) + (chr.charCodeAt() % 16).toString(16);
+	},
+
+	encode: function(obj){
+		switch ($type(obj)){
+			case 'string':
+				return '"' + obj.replace(/[\x00-\x1f\\"]/g, JSON.$replaceChars) + '"';
+			case 'array':
+				return '[' + String(obj.map(JSON.encode).clean()) + ']';
+			case 'object': case 'hash':
+				var string = [];
+				Hash.each(obj, function(value, key){
+					var json = JSON.encode(value);
+					if (json) string.push(JSON.encode(key) + ':' + json);
+				});
+				return '{' + string + '}';
+			case 'number': case 'boolean': return String(obj);
+			case false: return 'null';
+		}
+		return null;
+	},
+
+	decode: function(string, secure){
+		if ($type(string) != 'string' || !string.length) return null;
+		if (secure && !(/^[,:{}\[\]0-9.\-+Eaeflnr-u \n\r\t]*$/).test(string.replace(/\\./g, '@').replace(/"[^"\\\n\r]*"/g, ''))) return null;
+		return eval('(' + string + ')');
+	}
+
+});
+
+
+/*
+---
+
+name: Request.JSON
+
+description: Extends the basic Request Class with additional methods for sending and receiving JSON data.
+
+license: MIT-style license.
+
+requires: [Request, JSON]
+
+provides: [Request.JSON]
+
+...
+*/
+
+Request.JSON = new Class({
+
+	Extends: Request,
+
+	options: {
+		secure: true
+	},
+
+	initialize: function(options){
+		this.parent(options);
+		this.headers.extend({'Accept': 'application/json', 'X-Request': 'JSON'});
+	},
+
+	success: function(text){
+		this.response.json = JSON.decode(text, this.options.secure);
+		this.onSuccess(this.response.json, text);
+	}
+
+});
+
+
+/*
+---
+
+name: Cookie
+
+description: Class for creating, reading, and deleting browser Cookies.
+
+license: MIT-style license.
+
+credits: Based on the functions by Peter-Paul Koch (http://quirksmode.org).
+
+requires: Options
+
+provides: Cookie
+
+...
+*/
+
+var Cookie = new Class({
+
+	Implements: Options,
+
+	options: {
+		path: false,
+		domain: false,
+		duration: false,
+		secure: false,
+		document: document
+	},
+
+	initialize: function(key, options){
+		this.key = key;
+		this.setOptions(options);
+	},
+
+	write: function(value){
+		value = encodeURIComponent(value);
+		if (this.options.domain) value += '; domain=' + this.options.domain;
+		if (this.options.path) value += '; path=' + this.options.path;
+		if (this.options.duration){
+			var date = new Date();
+			date.setTime(date.getTime() + this.options.duration * 24 * 60 * 60 * 1000);
+			value += '; expires=' + date.toGMTString();
+		}
+		if (this.options.secure) value += '; secure';
+		this.options.document.cookie = this.key + '=' + value;
+		return this;
+	},
+
+	read: function(){
+		var value = this.options.document.cookie.match('(?:^|;)\\s*' + this.key.escapeRegExp() + '=([^;]*)');
+		return (value) ? decodeURIComponent(value[1]) : null;
+	},
+
+	dispose: function(){
+		new Cookie(this.key, $merge(this.options, {duration: -1})).write('');
+		return this;
+	}
+
+});
+
+Cookie.write = function(key, value, options){
+	return new Cookie(key, options).write(value);
+};
+
+Cookie.read = function(key){
+	return new Cookie(key).read();
+};
+
+Cookie.dispose = function(key, options){
+	return new Cookie(key, options).dispose();
+};
+
+
+/*
+---
+
+name: DomReady
+
+description: Contains the custom event domready.
+
+license: MIT-style license.
+
+requires: Element.Event
+
+provides: DomReady
+
+...
+*/
+
+Element.Events.domready = {
+
+	onAdd: function(fn){
+		if (Browser.loaded) fn.call(this);
+	}
+
+};
+
+(function(){
+
+	var domready = function(){
+		if (Browser.loaded) return;
+		Browser.loaded = true;
+		window.fireEvent('domready');
+		document.fireEvent('domready');
+	};
+	
+	window.addEvent('load', domready);
+
+	if (Browser.Engine.trident){
+		var temp = document.createElement('div');
+		(function(){
+			($try(function(){
+				temp.doScroll(); // Technique by Diego Perini
+				return document.id(temp).inject(document.body).set('html', 'temp').dispose();
+			})) ? domready() : arguments.callee.delay(50);
+		})();
+	} else if (Browser.Engine.webkit && Browser.Engine.version < 525){
+		(function(){
+			(['loaded', 'complete'].contains(document.readyState)) ? domready() : arguments.callee.delay(50);
+		})();
+	} else {
+		document.addEvent('DOMContentLoaded', domready);
+	}
+
+})();
+
+
+/*
+---
+
+name: Selectors
+
+description: Adds advanced CSS-style querying capabilities for targeting HTML Elements. Includes pseudo selectors.
+
+license: MIT-style license.
+
+requires: Element
+
+provides: Selectors
+
+...
+*/
+
+Native.implement([Document, Element], {
+
+	getElements: function(expression, nocash){
+		expression = expression.split(',');
+		var items, local = {};
+		for (var i = 0, l = expression.length; i < l; i++){
+			var selector = expression[i], elements = Selectors.Utils.search(this, selector, local);
+			if (i != 0 && elements.item) elements = $A(elements);
+			items = (i == 0) ? elements : (items.item) ? $A(items).concat(elements) : items.concat(elements);
+		}
+		return new Elements(items, {ddup: (expression.length > 1), cash: !nocash});
+	}
+
+});
+
+Element.implement({
+
+	match: function(selector){
+		if (!selector || (selector == this)) return true;
+		var tagid = Selectors.Utils.parseTagAndID(selector);
+		var tag = tagid[0], id = tagid[1];
+		if (!Selectors.Filters.byID(this, id) || !Selectors.Filters.byTag(this, tag)) return false;
+		var parsed = Selectors.Utils.parseSelector(selector);
+		return (parsed) ? Selectors.Utils.filter(this, parsed, {}) : true;
+	}
+
+});
+
+var Selectors = {Cache: {nth: {}, parsed: {}}};
+
+Selectors.RegExps = {
+	id: (/#([\w-]+)/),
+	tag: (/^(\w+|\*)/),
+	quick: (/^(\w+|\*)$/),
+	splitter: (/\s*([+>~\s])\s*([a-zA-Z#.*:\[])/g),
+	combined: (/\.([\w-]+)|\[(\w+)(?:([!*^$~|]?=)(["']?)([^\4]*?)\4)?\]|:([\w-]+)(?:\(["']?(.*?)?["']?\)|$)/g)
+};
+
+Selectors.Utils = {
+
+	chk: function(item, uniques){
+		if (!uniques) return true;
+		var uid = $uid(item);
+		if (!uniques[uid]) return uniques[uid] = true;
+		return false;
+	},
+
+	parseNthArgument: function(argument){
+		if (Selectors.Cache.nth[argument]) return Selectors.Cache.nth[argument];
+		var parsed = argument.match(/^([+-]?\d*)?([a-z]+)?([+-]?\d*)?$/);
+		if (!parsed) return false;
+		var inta = parseInt(parsed[1], 10);
+		var a = (inta || inta === 0) ? inta : 1;
+		var special = parsed[2] || false;
+		var b = parseInt(parsed[3], 10) || 0;
+		if (a != 0){
+			b--;
+			while (b < 1) b += a;
+			while (b >= a) b -= a;
+		} else {
+			a = b;
+			special = 'index';
+		}
+		switch (special){
+			case 'n': parsed = {a: a, b: b, special: 'n'}; break;
+			case 'odd': parsed = {a: 2, b: 0, special: 'n'}; break;
+			case 'even': parsed = {a: 2, b: 1, special: 'n'}; break;
+			case 'first': parsed = {a: 0, special: 'index'}; break;
+			case 'last': parsed = {special: 'last-child'}; break;
+			case 'only': parsed = {special: 'only-child'}; break;
+			default: parsed = {a: (a - 1), special: 'index'};
+		}
+
+		return Selectors.Cache.nth[argument] = parsed;
+	},
+
+	parseSelector: function(selector){
+		if (Selectors.Cache.parsed[selector]) return Selectors.Cache.parsed[selector];
+		var m, parsed = {classes: [], pseudos: [], attributes: []};
+		while ((m = Selectors.RegExps.combined.exec(selector))){
+			var cn = m[1], an = m[2], ao = m[3], av = m[5], pn = m[6], pa = m[7];
+			if (cn){
+				parsed.classes.push(cn);
+			} else if (pn){
+				var parser = Selectors.Pseudo.get(pn);
+				if (parser) parsed.pseudos.push({parser: parser, argument: pa});
+				else parsed.attributes.push({name: pn, operator: '=', value: pa});
+			} else if (an){
+				parsed.attributes.push({name: an, operator: ao, value: av});
+			}
+		}
+		if (!parsed.classes.length) delete parsed.classes;
+		if (!parsed.attributes.length) delete parsed.attributes;
+		if (!parsed.pseudos.length) delete parsed.pseudos;
+		if (!parsed.classes && !parsed.attributes && !parsed.pseudos) parsed = null;
+		return Selectors.Cache.parsed[selector] = parsed;
+	},
+
+	parseTagAndID: function(selector){
+		var tag = selector.match(Selectors.RegExps.tag);
+		var id = selector.match(Selectors.RegExps.id);
+		return [(tag) ? tag[1] : '*', (id) ? id[1] : false];
+	},
+
+	filter: function(item, parsed, local){
+		var i;
+		if (parsed.classes){
+			for (i = parsed.classes.length; i--; i){
+				var cn = parsed.classes[i];
+				if (!Selectors.Filters.byClass(item, cn)) return false;
+			}
+		}
+		if (parsed.attributes){
+			for (i = parsed.attributes.length; i--; i){
+				var att = parsed.attributes[i];
+				if (!Selectors.Filters.byAttribute(item, att.name, att.operator, att.value)) return false;
+			}
+		}
+		if (parsed.pseudos){
+			for (i = parsed.pseudos.length; i--; i){
+				var psd = parsed.pseudos[i];
+				if (!Selectors.Filters.byPseudo(item, psd.parser, psd.argument, local)) return false;
+			}
+		}
+		return true;
+	},
+
+	getByTagAndID: function(ctx, tag, id){
+		if (id){
+			var item = (ctx.getElementById) ? ctx.getElementById(id, true) : Element.getElementById(ctx, id, true);
+			return (item && Selectors.Filters.byTag(item, tag)) ? [item] : [];
+		} else {
+			return ctx.getElementsByTagName(tag);
+		}
+	},
+
+	search: function(self, expression, local){
+		var splitters = [];
+
+		var selectors = expression.trim().replace(Selectors.RegExps.splitter, function(m0, m1, m2){
+			splitters.push(m1);
+			return ':)' + m2;
+		}).split(':)');
+
+		var items, filtered, item;
+
+		for (var i = 0, l = selectors.length; i < l; i++){
+
+			var selector = selectors[i];
+
+			if (i == 0 && Selectors.RegExps.quick.test(selector)){
+				items = self.getElementsByTagName(selector);
+				continue;
+			}
+
+			var splitter = splitters[i - 1];
+
+			var tagid = Selectors.Utils.parseTagAndID(selector);
+			var tag = tagid[0], id = tagid[1];
+
+			if (i == 0){
+				items = Selectors.Utils.getByTagAndID(self, tag, id);
+			} else {
+				var uniques = {}, found = [];
+				for (var j = 0, k = items.length; j < k; j++) found = Selectors.Getters[splitter](found, items[j], tag, id, uniques);
+				items = found;
+			}
+
+			var parsed = Selectors.Utils.parseSelector(selector);
+
+			if (parsed){
+				filtered = [];
+				for (var m = 0, n = items.length; m < n; m++){
+					item = items[m];
+					if (Selectors.Utils.filter(item, parsed, local)) filtered.push(item);
+				}
+				items = filtered;
+			}
+
+		}
+
+		return items;
+
+	}
+
+};
+
+Selectors.Getters = {
+
+	' ': function(found, self, tag, id, uniques){
+		var items = Selectors.Utils.getByTagAndID(self, tag, id);
+		for (var i = 0, l = items.length; i < l; i++){
+			var item = items[i];
+			if (Selectors.Utils.chk(item, uniques)) found.push(item);
+		}
+		return found;
+	},
+
+	'>': function(found, self, tag, id, uniques){
+		var children = Selectors.Utils.getByTagAndID(self, tag, id);
+		for (var i = 0, l = children.length; i < l; i++){
+			var child = children[i];
+			if (child.parentNode == self && Selectors.Utils.chk(child, uniques)) found.push(child);
+		}
+		return found;
+	},
+
+	'+': function(found, self, tag, id, uniques){
+		while ((self = self.nextSibling)){
+			if (self.nodeType == 1){
+				if (Selectors.Utils.chk(self, uniques) && Selectors.Filters.byTag(self, tag) && Selectors.Filters.byID(self, id)) found.push(self);
+				break;
+			}
+		}
+		return found;
+	},
+
+	'~': function(found, self, tag, id, uniques){
+		while ((self = self.nextSibling)){
+			if (self.nodeType == 1){
+				if (!Selectors.Utils.chk(self, uniques)) break;
+				if (Selectors.Filters.byTag(self, tag) && Selectors.Filters.byID(self, id)) found.push(self);
+			}
+		}
+		return found;
+	}
+
+};
+
+Selectors.Filters = {
+
+	byTag: function(self, tag){
+		return (tag == '*' || (self.tagName && self.tagName.toLowerCase() == tag));
+	},
+
+	byID: function(self, id){
+		return (!id || (self.id && self.id == id));
+	},
+
+	byClass: function(self, klass){
+		return (self.className && self.className.contains && self.className.contains(klass, ' '));
+	},
+
+	byPseudo: function(self, parser, argument, local){
+		return parser.call(self, argument, local);
+	},
+
+	byAttribute: function(self, name, operator, value){
+		var result = Element.prototype.getProperty.call(self, name);
+		if (!result) return (operator == '!=');
+		if (!operator || value == undefined) return true;
+		switch (operator){
+			case '=': return (result == value);
+			case '*=': return (result.contains(value));
+			case '^=': return (result.substr(0, value.length) == value);
+			case '$=': return (result.substr(result.length - value.length) == value);
+			case '!=': return (result != value);
+			case '~=': return result.contains(value, ' ');
+			case '|=': return result.contains(value, '-');
+		}
+		return false;
+	}
+
+};
+
+Selectors.Pseudo = new Hash({
+
+	// w3c pseudo selectors
+
+	checked: function(){
+		return this.checked;
+	},
+	
+	empty: function(){
+		return !(this.innerText || this.textContent || '').length;
+	},
+
+	not: function(selector){
+		return !Element.match(this, selector);
+	},
+
+	contains: function(text){
+		return (this.innerText || this.textContent || '').contains(text);
+	},
+
+	'first-child': function(){
+		return Selectors.Pseudo.index.call(this, 0);
+	},
+
+	'last-child': function(){
+		var element = this;
+		while ((element = element.nextSibling)){
+			if (element.nodeType == 1) return false;
+		}
+		return true;
+	},
+
+	'only-child': function(){
+		var prev = this;
+		while ((prev = prev.previousSibling)){
+			if (prev.nodeType == 1) return false;
+		}
+		var next = this;
+		while ((next = next.nextSibling)){
+			if (next.nodeType == 1) return false;
+		}
+		return true;
+	},
+
+	'nth-child': function(argument, local){
+		argument = (argument == undefined) ? 'n' : argument;
+		var parsed = Selectors.Utils.parseNthArgument(argument);
+		if (parsed.special != 'n') return Selectors.Pseudo[parsed.special].call(this, parsed.a, local);
+		var count = 0;
+		local.positions = local.positions || {};
+		var uid = $uid(this);
+		if (!local.positions[uid]){
+			var self = this;
+			while ((self = self.previousSibling)){
+				if (self.nodeType != 1) continue;
+				count ++;
+				var position = local.positions[$uid(self)];
+				if (position != undefined){
+					count = position + count;
+					break;
+				}
+			}
+			local.positions[uid] = count;
+		}
+		return (local.positions[uid] % parsed.a == parsed.b);
+	},
+
+	// custom pseudo selectors
+
+	index: function(index){
+		var element = this, count = 0;
+		while ((element = element.previousSibling)){
+			if (element.nodeType == 1 && ++count > index) return false;
+		}
+		return (count == index);
+	},
+
+	even: function(argument, local){
+		return Selectors.Pseudo['nth-child'].call(this, '2n+1', local);
+	},
+
+	odd: function(argument, local){
+		return Selectors.Pseudo['nth-child'].call(this, '2n', local);
+	},
+	
+	selected: function(){
+		return this.selected;
+	},
+	
+	enabled: function(){
+		return (this.disabled === false);
+	}
+
+});
+
+
+/*
+---
+
+name: Swiff
+
+description: Wrapper for embedding SWF movies. Supports External Interface Communication.
+
+license: MIT-style license.
+
+credits: Flash detection & Internet Explorer + Flash Player 9 fix inspired by SWFObject.
+
+requires: [Options, $util]
+
+provides: Swiff
+
+...
+*/
+
+var Swiff = new Class({
+
+	Implements: [Options],
+
+	options: {
+		id: null,
+		height: 1,
+		width: 1,
+		container: null,
+		properties: {},
+		params: {
+			quality: 'high',
+			allowScriptAccess: 'always',
+			wMode: 'transparent',
+			swLiveConnect: true
+		},
+		callBacks: {},
+		vars: {}
+	},
+
+	toElement: function(){
+		return this.object;
+	},
+
+	initialize: function(path, options){
+		this.instance = 'Swiff_' + $time();
+
+		this.setOptions(options);
+		options = this.options;
+		var id = this.id = options.id || this.instance;
+		var container = document.id(options.container);
+
+		Swiff.CallBacks[this.instance] = {};
+
+		var params = options.params, vars = options.vars, callBacks = options.callBacks;
+		var properties = $extend({height: options.height, width: options.width}, options.properties);
+
+		var self = this;
+
+		for (var callBack in callBacks){
+			Swiff.CallBacks[this.instance][callBack] = (function(option){
+				return function(){
+					return option.apply(self.object, arguments);
+				};
+			})(callBacks[callBack]);
+			vars[callBack] = 'Swiff.CallBacks.' + this.instance + '.' + callBack;
+		}
+
+		params.flashVars = Hash.toQueryString(vars);
+		if (Browser.Engine.trident){
+			properties.classid = 'clsid:D27CDB6E-AE6D-11cf-96B8-444553540000';
+			params.movie = path;
+		} else {
+			properties.type = 'application/x-shockwave-flash';
+			properties.data = path;
+		}
+		var build = '<object id="' + id + '"';
+		for (var property in properties) build += ' ' + property + '="' + properties[property] + '"';
+		build += '>';
+		for (var param in params){
+			if (params[param]) build += '<param name="' + param + '" value="' + params[param] + '" />';
+		}
+		build += '</object>';
+		this.object = ((container) ? container.empty() : new Element('div')).set('html', build).firstChild;
+	},
+
+	replaces: function(element){
+		element = document.id(element, true);
+		element.parentNode.replaceChild(this.toElement(), element);
+		return this;
+	},
+
+	inject: function(element){
+		document.id(element, true).appendChild(this.toElement());
+		return this;
+	},
+
+	remote: function(){
+		return Swiff.remote.apply(Swiff, [this.toElement()].extend(arguments));
+	}
+
+});
+
+Swiff.CallBacks = {};
+
+Swiff.remote = function(obj, fn){
+	var rs = obj.CallFunction('<invoke name="' + fn + '" returntype="javascript">' + __flash__argumentsToXML(arguments, 2) + '</invoke>');
+	return eval(rs);
+};
+
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/info.jsp
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/info.jsp	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/info.jsp	(revision 47450)
@@ -0,0 +1,25 @@
+<%@ page contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<%@ taglib prefix="s" uri="/struts-tags"%>
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<link href="jsps/style.css" rel="stylesheet" type="text/css" media="screen" />
+<link href="jsps/favicon.ico" rel="shortcut icon" type="image/x-icon" />
+<title><s:text name="info.title"/></title>
+</head>
+<body>
+<div id="wrapper">
+	<jsp:include page="menu.jsp"/>
+	<div id="page">
+	<div id="page-bgtop">
+		<div id="content">
+			<s:actionerror escape="false"/> 
+			<s:actionmessage escape="false"/> 
+		</div>
+		<div style="clear: both;">&nbsp;</div>
+	</div>
+	</div>
+</div>
+</body>
+</html>
\ No newline at end of file
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/table-images/pattern.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/table-images/pattern.png
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/table-images/pattern.png	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/table-images/pattern.png	(revision 47450)

Property changes on: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/table-images/pattern.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/table-images/botleft.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/table-images/botleft.png
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/table-images/botleft.png	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/table-images/botleft.png	(revision 47450)

Property changes on: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/table-images/botleft.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/table-images/gradhover.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/table-images/gradhover.png
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/table-images/gradhover.png	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/table-images/gradhover.png	(revision 47450)

Property changes on: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/table-images/gradhover.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/table-images/blurry.jpg
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/table-images/blurry.jpg
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/table-images/blurry.jpg	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/table-images/blurry.jpg	(revision 47450)

Property changes on: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/table-images/blurry.jpg
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/manuals/example_record.txt
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/manuals/example_record.txt	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/manuals/example_record.txt	(revision 47450)
@@ -0,0 +1,25 @@
+<header>
+	<identifier>oai:openaire.cern.ch:1</identifier>
+	<datestamp>2011-01-18T14:26:14Z</datestamp>
+	<setSpec>EC_fundedresources</setSpec>
+</header>
+<metadata>
+	<oai_dc:dc xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:oai_dc="http://www.openarchives.org/OAI/2.0/oai_dc/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.openarchives.org/OAI/2.0/oai_dc/ http://www.openarchives.org/OAI/2.0/oai_dc.xsd">
+		<dc:language>eng</dc:language>
+		<dc:creator>Berchum, Marnix</dc:creator>
+		<dc:creator>Rodrigues, Eloy</dc:creator>
+		<dc:contributor>Brown, John</dc:contributor>
+		<dc:title>OpenAIRE Guidelines</dc:title>
+		<dc:date>2010-09-01</dc:date>
+		<dc:identifier>http://openaire.cern.ch/record/1</dc:identifier>
+		<dc:description>
+			The OpenAIRE Guidelines will provide orientation for repository managers to define and implement their local data management policies in compliance with the Open Access demands of the European Commission. Furthermore they will comply with the technical requirements of the OpenAIRE infrastructure that is being established to support and monitor the implementation of the FP7 OA pilot. By implementing these Guidelines repository managers are facilitating the authors who deposit their publications in the repository, in complying with the EC Open Access requirements. For developers of repository platforms the Guidelines provide guidance to add supportive functionalities for authors of EC funded research in future versions.
+		</dc:description>
+		<dc:relation>info:eu-repo/grantAgreement/EC/FP7/246686</dc:relation>
+		<dc:rights>info:eu-repo/semantics/openAccess</dc:rights>
+		<dc:audience>Librarians</dc:audience>
+		<dc:type>info:eu-repo/semantics/article</dc:type>
+		<dc:format>application/pdf</dc:format>
+		<dc:source>ISSN:0165-0505</dc:source>
+	</oai_dc:dc>
+</metadata>
\ No newline at end of file
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/fonts/kreon-regular-webfont.svg
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/fonts/kreon-regular-webfont.svg	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/fonts/kreon-regular-webfont.svg	(revision 47450)
@@ -0,0 +1,234 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" >
+<svg xmlns="http://www.w3.org/2000/svg">
+<metadata></metadata>
+<defs>
+<font id="KreonRegular" horiz-adv-x="1333" >
+<font-face units-per-em="2048" ascent="1638" descent="-410" />
+<missing-glyph horiz-adv-x="491" />
+<glyph horiz-adv-x="0" />
+<glyph horiz-adv-x="2048" />
+<glyph unicode=" "  horiz-adv-x="491" />
+<glyph unicode="&#x09;" horiz-adv-x="491" />
+<glyph unicode="&#xa0;" horiz-adv-x="491" />
+<glyph unicode="!" horiz-adv-x="548" d="M135 1386l240 27l43 -78l-76 -850h-141zM152 112.5q0 51.5 34.5 86t85 34.5t87 -35.5t36.5 -85t-36.5 -85t-87 -35.5t-85 34.5t-34.5 86z" />
+<glyph unicode="&#x22;" horiz-adv-x="661" d="M74 1411l190 21l35 -62l-59 -414h-113zM362 1411l191 21l35 -62l-60 -414h-112z" />
+<glyph unicode="#" horiz-adv-x="1323" d="M59 602l27 47h281l86 234h-283l-27 106l27 47h338l141 379h135l23 -29l-131 -350h207l137 379h135l23 -29l-127 -350h192q12 0 12 -16v-137h-262l-84 -234h250q12 0 12 -16v-137h-319l-143 -398h-136l-22 27l135 371h-209l-145 -398h-135l-23 27l135 371h-223zM535 649 h206l84 234h-204z" />
+<glyph unicode="$" horiz-adv-x="987" d="M68 1028q0 92 25.5 151.5t70.5 104.5q90 90 242 121v385h184v-377q137 -12 272 -59l29 -353h-141l-91 222q-61 20 -154 20t-157.5 -43t-64.5 -131q0 -102 102 -168q45 -31 100.5 -54.5t128 -56t136 -77.5t102.5 -95q74 -92 74 -200.5t-27 -175t-72 -115.5 q-90 -92 -237 -123v-397h-184v387q-182 8 -318 76v346h148l36 -219q88 -33 177 -33q176 0 241 115q23 39 23 101t-38 112.5t-125 93.5t-172 77.5t-153.5 83t-112.5 119t-44 162.5z" />
+<glyph unicode="%" horiz-adv-x="1472" d="M63 1059q0 61 17.5 123.5t52.5 113.5q80 117 219 117t217 -106q72 -100 72 -246q0 -154 -80 -256q-80 -104 -209 -105q-143 0 -221 119q-68 101 -68 240zM180 27l907 1388h173l8 -29l-897 -1386h-178zM215 1058q0 -93 38 -157.5t99 -64.5t98 65.5t37 158.5t-35.5 156.5 t-100 63.5t-100.5 -64.5t-36 -157.5zM836 348q0 139 69 238q80 117 217 116q139 0 217 -108q72 -96 72 -246q0 -152 -78 -254q-80 -102 -211 -102q-139 0 -219 117q-67 100 -67 239zM989 346q0 -94 37 -157.5t98.5 -63.5t97 64.5t35.5 158.5t-35.5 157.5t-100 63.5 t-98.5 -64.5t-34 -158.5z" />
+<glyph unicode="&#x26;" horiz-adv-x="1376" d="M66 412q0 217 258 422q-111 188 -111 319q0 150 94 244q100 100 244.5 100t226.5 -81t82 -206q0 -186 -262 -407q88 -121 182 -230l107 -127q53 111 78 226h-93l-32 143h319l23 -29q-45 -268 -150 -456l-16 -27q123 -127 158 -137q8 2 25.5 15.5t37.5 27.5l59 39l86 -189 q-78 -66 -209 -65.5t-290 137.5q-150 -139 -365 -139q-197 0 -325 123q-127 119 -127 297zM279 402.5q0 -97.5 68.5 -166t187.5 -68.5t217 94q-170 199 -336 428q-63 -61 -100 -125.5t-37 -162zM408 1194q0 -98 98 -258q160 145 160 274q0 66 -36 99.5t-96.5 33.5t-93 -46 t-32.5 -103z" />
+<glyph unicode="'" horiz-adv-x="372" d="M74 1391l190 20l35 -61l-59 -414h-113z" />
+<glyph unicode="(" horiz-adv-x="565" d="M104 600q0 160 23 302t55 259q57 201 146 359h172q-133 -266 -183 -633q-18 -137 -18 -293t21.5 -296t52.5 -257q43 -166 127 -373h-172l-15 31q-129 260 -186 604q-23 137 -23 297z" />
+<glyph unicode=")" horiz-adv-x="565" d="M66 -332q84 207 120 348q80 307 80 580q0 522 -200 924h172q223 -418 223 -926q0 -266 -76 -543q-47 -168 -133 -352l-14 -31h-172z" />
+<glyph unicode="*" horiz-adv-x="741" d="M72 1038l12 47l231 86l-243 78l32 115l50 12l188 -153l-47 247l115 25l32 -35l-41 -237l187 170l82 -88l-13 -48l-231 -86l244 -77l-33 -115l-49 -12l-189 153l47 -248l-114 -24l-33 35l41 237l-186 -170zM336 1169l18 -26h35l14 28l-16 29h-37z" />
+<glyph unicode="+" horiz-adv-x="821" d="M70 645v125l26 29h242v262h154v-262h256v-154h-256v-307h-127l-27 24v283h-268z" />
+<glyph unicode="," horiz-adv-x="438" d="M45 -211l102 209l-53 235l215 39q23 -90 23 -156.5t-17.5 -130t-44.5 -116.5q-49 -100 -118 -170l-107 61v29z" />
+<glyph unicode="-" horiz-adv-x="817" d="M119 500v125l24 28h543q12 0 12 -16v-137h-579z" />
+<glyph unicode="." horiz-adv-x="425" d="M92 112.5q0 51.5 35 86t85 34.5t87 -35.5t37 -85t-36 -85t-87 -35.5t-86 34.5t-35 86z" />
+<glyph unicode="/" horiz-adv-x="944" d="M45 27l672 1386h184l-2 -29l-672 -1384h-176z" />
+<glyph unicode="0" horiz-adv-x="1193" d="M94 702q0 483 260 650q96 61 242 61q266 0 395 -221q109 -184 109 -490q0 -481 -262 -649q-96 -61 -242 -61q-266 0 -395 223q-107 182 -107 487zM309 702q0 -371 158 -493q53 -41 129 -41q145 0 221 156q68 139 68 378q0 373 -158 494q-55 41 -132 41t-131 -42t-87 -114 q-68 -141 -68 -379z" />
+<glyph unicode="1" horiz-adv-x="741" d="M51 1286l428 133l41 -18v-1239l191 -25v-137h-605l-22 135l231 35v1016l-233 -47z" />
+<glyph unicode="2" horiz-adv-x="1060" d="M45 1135q72 131 189.5 204.5t265.5 73.5q180 0 295 -86q131 -96 131 -283q0 -190 -226 -477q-119 -154 -212 -250t-132 -141h412l80 219h135l-43 -395h-834l-24 141q41 45 102.5 109.5t130 141.5t138 161t125.5 168q125 182 133 303v14q0 98 -68 154q-59 45 -131 45 q-102 0 -182 -53l-56 -172z" />
+<glyph unicode="3" horiz-adv-x="1071" d="M55 1139q72 131 196 202.5t296 71.5q162 0 280 -90q129 -100 129 -272q0 -117 -62.5 -202t-166.5 -122q92 -31 160 -106q86 -96 86 -212t-42 -193t-108 -126q-131 -98 -301 -98q-287 0 -456 139l108 164q150 -127 320 -127q135 0 199.5 63.5t64.5 140.5t-28 122t-75 75 q-86 55 -235 56h-105v176q213 0 308 41q119 53 118 196q0 100 -67 154q-59 47 -139 47t-124 -17.5t-73 -33.5l-76 -168z" />
+<glyph unicode="4" horiz-adv-x="1060" d="M4 557l590 858h221v-835h168v-177h-168v-235l166 -27v-139h-651v139l282 33v229h-540zM205 580h407v583z" />
+<glyph unicode="5" horiz-adv-x="1028" d="M39 133l100 158q133 -123 301 -123q131 0 219 86q86 82 86 213q0 164 -116 240q-94 61 -287 61q-94 0 -180 -12v592l65 65h654v-176h-525v-295h50q35 0 99 -3t150 -31.5t154 -84.5q152 -127 152 -342q0 -213 -160 -354q-156 -135 -373 -135q-125 0 -224.5 41t-164.5 100z " />
+<glyph unicode="6" horiz-adv-x="1140" d="M88 694q0 311 148 514q71 101 174.5 159t211 58t174 -21.5t115.5 -51.5q76 -47 131 -127l-194 -138l-103 146q-49 16 -107 16t-118.5 -37.5t-105.5 -105.5q-96 -141 -109 -344q47 53 126 93t179.5 40t182 -29.5t141.5 -87.5q127 -123 127 -327q0 -190 -123 -320 q-131 -139 -326 -139q-264 0 -407 227q-117 188 -117 475zM336 430q70 -262 266 -262q121 0 184 84q59 76 60 192q0 121 -70 199t-174 78q-113 0 -188 -84q-74 -82 -78 -207z" />
+<glyph unicode="7" horiz-adv-x="909" d="M55 989v424h807l37 -53l-428 -1360h-211l-10 55l448 1182h-462l-52 -248h-129z" />
+<glyph unicode="8" horiz-adv-x="1089" d="M84 377q0 242 250 381q-78 51 -132.5 125.5t-54.5 172t36 162t93 109.5q121 98 273 98q158 0 274 -90q125 -100 125 -254q0 -143 -125 -245q-35 -31 -73 -58q127 -76 170 -133q86 -111 86 -248q0 -176 -142 -295q-131 -113 -317 -112q-190 0 -322 96q-141 107 -141 291z M299 383q0 -104 86 -166q72 -51 143.5 -51t116.5 17.5t76 45.5q70 66 70 152q0 139 -185 233q-51 27 -108 56q-199 -109 -199 -287zM362 1100.5q0 -56.5 19.5 -91t50.5 -59.5q47 -39 150 -86q65 41 108 91.5t43 123t-51 121.5t-133 49t-134.5 -46t-52.5 -102.5z" />
+<glyph unicode="9" horiz-adv-x="1112" d="M86 133l115 160q143 -125 297 -125q274 0 303 446q-61 -59 -140 -85.5t-155 -26.5t-156 28.5t-137 83.5q-125 117 -125 324q0 203 117 340q125 143 344 143q248 0 371 -233q100 -190 100 -496q0 -293 -127 -487q-61 -96 -157.5 -154.5t-203 -58.5t-174 15.5t-120.5 37.5 q-74 31 -152 88zM303 956q0 -137 70 -211q64 -67 164 -67q43 0 86 15.5t77 45.5q80 72 88 176q-35 229 -153 304q-43 27 -100 26q-100 0 -166 -73.5t-66 -215.5z" />
+<glyph unicode=":" horiz-adv-x="481" d="M119 399.5q0 51.5 35.5 86t86 34.5t86 -35.5t35.5 -85t-35.5 -85t-86 -35.5t-86 34.5t-35.5 86zM119 884q0 50 35.5 86t86 36t86 -37t35.5 -87.5t-35.5 -85t-87 -34.5t-86 36t-34.5 86z" />
+<glyph unicode=";" horiz-adv-x="499" d="M90 -211l103 209l-54 235l215 39q23 -90 23 -156.5t-17.5 -130t-44.5 -116.5q-49 -100 -118 -170l-107 61v29zM117 679q0 50 35.5 86t86 36t86 -37t35.5 -87t-35.5 -85t-87 -35t-86 36t-34.5 86z" />
+<glyph unicode="&#x3c;" horiz-adv-x="866" d="M59 627v139l670 405v-192l-473 -285l473 -282v-199z" />
+<glyph unicode="=" horiz-adv-x="923" d="M125 475v156h674v-156h-674zM125 733v156h674v-156h-674z" />
+<glyph unicode="&#x3e;" horiz-adv-x="866" d="M137 213v199l473 282l-473 285v192l670 -405v-139z" />
+<glyph unicode="?" horiz-adv-x="835" d="M80 1028l35 326q174 61 282.5 61t177 -25.5t113.5 -68.5q88 -84 88 -215q0 -174 -129 -293q-39 -35 -78 -63l-75 -54q-94 -68 -103 -168q-2 -25 -2 -43l-162 -2l-4 21q-8 29 -8 89t25.5 105t64.5 80t84 65.5t84 65.5q90 78 90 181q0 61 -44 107t-130 46q-88 0 -129 -18 l-55 -197h-125zM193 113.5q0 50.5 34.5 85t84.5 34.5t87 -35.5t37 -85t-37 -85t-87 -35.5t-84.5 35.5t-34.5 86z" />
+<glyph unicode="@" horiz-adv-x="1701" d="M63 553q0 184 67 329.5t177 247.5q229 207 567 207q326 0 539 -207q102 -96 160.5 -229t58.5 -261t-27.5 -221t-78.5 -165q-113 -156 -289 -156q-119 0 -174 64q-98 -63 -221 -64q-166 0 -275 103q-121 115 -121 319q0 231 152 348q117 88 272 88q109 0 203 -45l74 29 l55 -18v-586q0 -43 16.5 -55.5t43 -12.5t59.5 24.5t59 72.5q59 102 59.5 235t-38.5 234.5t-111 173.5q-156 156 -413 155q-266 0 -443 -172q-176 -172 -176 -442q0 -313 184 -486q168 -159 455 -159q143 0 240 39l37 -9l-58 -176q-100 -31 -261 -30.5t-307.5 56.5 t-252.5 163q-231 225 -232 606zM643 528q0 -141 74 -217q59 -61 176 -61q61 0 119 47q-2 20 -2 39v440q-61 31 -118.5 31t-100.5 -16.5t-76 -49.5q-72 -76 -72 -213z" />
+<glyph unicode="A" horiz-adv-x="1245" d="M-2 127l106 37l414 1251h197l436 -1251l94 -37l-22 -127h-482v121l181 43l-99 303h-438l-94 -303l176 -41v-123h-442zM438 643h328l-168 514z" />
+<glyph unicode="B" horiz-adv-x="1181" d="M94 1262v153h473q221 0 353 -104q124 -99 124 -264q0 -120 -65 -211q-59 -84 -145 -111q111 -23 186 -102q82 -86 82 -213t-44 -205t-116 -123q-123 -82 -332 -82h-489l-21 143l125 29v1077zM430 176h160q201 0 270 115q27 45 27 110.5t-25.5 108.5t-68.5 68 q-80 45 -207 45h-156v-447zM430 799h90q158 0 233.5 54t75.5 171q0 215 -274 215h-125v-440z" />
+<glyph unicode="C" horiz-adv-x="1191" d="M70 692q0 340 209 541q190 182 483 182q131 0 303 -39l39 -372h-139l-80 221q-39 14 -135.5 14t-185.5 -43t-150 -115q-129 -152 -129 -368q0 -236 141 -389q143 -156 381 -156q88 0 161.5 26.5t106.5 51.5l60 -162q-129 -92 -363 -92q-283 0 -483 180q-219 199 -219 520 z" />
+<glyph unicode="D" horiz-adv-x="1296" d="M100 145l125 29v1077l-123 13v151h387q334 0 531 -178q203 -182 203 -520t-195 -529q-193 -188 -530 -188h-377zM428 176l16 -2q563 0 564 545q0 246 -148 387q-143 135 -383 135l-49 -2v-1063z" />
+<glyph unicode="E" horiz-adv-x="1103" d="M98 145l125 27v1079l-123 11v153h873l41 -385h-129l-78 209h-381v-430h324v-176h-324v-457h401l72 207h129l-41 -383h-868z" />
+<glyph unicode="F" horiz-adv-x="1046" d="M98 145l125 27v1079l-123 11v153h873l43 -385h-127l-82 209h-381v-430h324v-176h-324v-453l332 -47l-13 -133h-626z" />
+<glyph unicode="G" horiz-adv-x="1259" d="M68 690q0 328 198 527q198 198 511 198h3q154 0 320 -43l30 -371h-149l-74 228q-61 10 -151 10t-180.5 -41t-153.5 -113q-139 -158 -139 -389q0 -240 147 -383q150 -145 399 -145q70 0 111 8l2 301l-233 29l36 145h400v-622q-147 -37 -321.5 -37t-308.5 47t-234 137 q-213 190 -213 514z" />
+<glyph unicode="H" horiz-adv-x="1376" d="M100 147l123 23v1079l-123 11v155h430l21 -153l-123 -21v-424h520v432l-117 11v155h424l21 -153l-123 -21v-1075l123 -16v-150h-424l-21 147l117 23v471h-520v-475l125 -16v-150h-432z" />
+<glyph unicode="I" horiz-adv-x="653" d="M94 147l129 23v1079l-129 11v155h447l20 -153l-133 -21v-1075l133 -16v-150h-448z" />
+<glyph unicode="J" horiz-adv-x="751" d="M16 96l109 162q90 -84 149 -84q76 0 76 113v954l-157 21l20 153h469v-155l-127 -11v-944q0 -182 -109 -262q-70 -51 -161 -51q-160 0 -269 104z" />
+<glyph unicode="K" horiz-adv-x="1255" d="M94 147l129 23v1079l-129 8v158h438l19 -151l-123 -23v-577l477 581l-145 23v147h452v-149l-67 -15l-393 -473l354 -612l113 -21v-145h-285l-324 608l-182 -219v-223l125 -16v-150h-440z" />
+<glyph unicode="L" horiz-adv-x="1046" d="M98 145l125 23v1083l-123 11v153h441l18 -151l-133 -23v-1065h401l72 207h129l-41 -383h-868z" />
+<glyph unicode="M" horiz-adv-x="1748" d="M92 145l129 27v1075l-102 10v158h422l331 -1147l345 1147h399l20 -158l-106 -16v-1075l112 -23l-8 -143h-397l-16 147l118 27v1053l-362 -1196h-236l-350 1206v-1069l121 -23v-145h-395z" />
+<glyph unicode="N" horiz-adv-x="1425" d="M96 145l129 27v1075l-123 13v155h428l517 -1218v1050l-127 17v151h403l27 -153l-131 -25v-1237h-304l-518 1221v-891l2 -146q0 -12 2 -18l117 -21v-145h-397z" />
+<glyph unicode="O" d="M88 705q0 303 143 499q156 213 435 213t436 -213q145 -199 145 -499q0 -301 -145 -500q-157 -213 -436 -213t-435 213q-143 197 -143 500zM303 700q0 -221 90 -370q96 -162 273 -162q178 0 276 162q90 147 90 370q0 225 -90 377q-100 164 -276 164t-273 -164 q-90 -152 -90 -377z" />
+<glyph unicode="P" horiz-adv-x="1132" d="M94 143l131 29v1077l-129 11v155h432q285 0 430 -129q131 -119 132 -323q0 -240 -162 -359q-143 -104 -404 -104h-94v-322q51 -10 297 -41l-6 -137h-606zM430 676h86q188 0 279 86q79 76 79 203q0 274 -372 274h-72v-563z" />
+<glyph unicode="Q" d="M88 705q0 303 143 499q156 213 435 213t436 -213q145 -199 145 -499q0 -301 -145 -500q-157 -213 -436 -213t-435 213q-143 197 -143 500zM303 700q0 -221 90 -370q96 -162 273 -162q178 0 276 162q90 147 90 370q0 225 -90 377q-100 164 -276 164t-273 -164 q-90 -152 -90 -377zM530 -131l80 86l430 -154l13 -67l-183 -162q-88 72 -171 146.5t-169 150.5z" />
+<glyph unicode="R" horiz-adv-x="1196" d="M94 143l131 29v1077l-129 11v155h432q285 0 430 -129q131 -119 132 -323q0 -141 -72 -239.5t-195 -150.5l199 -407l117 -25v-141h-285l-229 524q-49 -6 -101 -6h-94v-348l162 -29v-141h-477zM430 694h86q182 0 279 88q79 70 79 183q0 274 -372 274h-72v-545z" />
+<glyph unicode="S" horiz-adv-x="1038" d="M96 1035.5q0 99.5 36 167t97 114.5q129 98 316 98q180 0 346 -61l29 -353h-142l-90 222q-61 20 -154.5 20t-158 -43t-64.5 -131q0 -102 103 -168q45 -31 100 -54.5t128 -56t136.5 -77.5t102.5 -95q74 -91 74 -209q0 -119 -41 -197q-40 -77 -107 -126q-127 -94 -336 -94 t-365 78l15 346h143l37 -219q88 -33 176 -33q176 0 242 115q23 38 23 98q0 63 -38 115q-38 50 -125 93.5t-172 78t-154 83t-113 119t-44 170z" />
+<glyph unicode="T" horiz-adv-x="1187" d="M29 1036l43 379h1044l45 -379h-125l-86 203h-256v-1063l238 -41l-19 -135h-630l-27 135l233 41v1063h-251l-84 -203h-125z" />
+<glyph unicode="U" horiz-adv-x="1325" d="M61 1262v153h474v-151l-142 -19v-768q0 -145 72 -227t219 -82q190 0 258 164q25 59 25 147v768l-125 19v149h413v-151l-116 -21v-772q0 -238 -144 -365q-124 -114 -314 -114h-3q-236 0 -363 126t-127 353v778z" />
+<glyph unicode="V" horiz-adv-x="1185" d="M14 1276v139h463l17 -127l-187 -39l301 -930l305 934l-184 35v127h449v-139l-78 -27l-414 -1249h-188l-410 1249z" />
+<glyph unicode="W" horiz-adv-x="1830" d="M31 1274v141h440l18 -127l-149 -33l186 -1024l305 1147h205l307 -1155l193 1037l-168 30l12 125h441v-139l-121 -39l-242 -1237h-270l-275 1047l-276 -1047h-272l-232 1243z" />
+<glyph unicode="X" horiz-adv-x="1175" d="M41 0v127l90 14l334 545l-338 561l-86 25v143h457l16 -125l-145 -30l239 -392l230 389l-121 29v129h416v-149l-89 -15l-333 -549l331 -542l91 -25v-135h-463v127l129 10l-232 383l-225 -385l115 -14v-121h-416z" />
+<glyph unicode="Y" horiz-adv-x="1153" d="M8 1262v153h436l15 -135l-131 -25l278 -512l250 514l-117 23v135h400v-153l-88 -21l-369 -737v-334l238 -41l-21 -129h-635l-20 129l235 41v346l-389 727z" />
+<glyph unicode="Z" horiz-adv-x="1132" d="M76 158l727 1081h-531l-41 -219h-129v395h906l24 -190q-66 -100 -151.5 -233.5t-179 -276t-186.5 -282.5t-169 -257h522l39 217h131v-393h-929z" />
+<glyph unicode="[" horiz-adv-x="657" d="M160 -338v1751l16 25h475q12 0 13 -15v-137h-310v-1501h310v-135q0 -16 -13 -17h-469z" />
+<glyph unicode="\" horiz-adv-x="942" d="M43 1391v24h182l674 -1388l-16 -27h-166z" />
+<glyph unicode="]" horiz-adv-x="657" d="M-6 -215h309v1501h-309v137q0 14 12 15h475l17 -25v-1751l-23 -29h-469q-12 0 -12 17v135z" />
+<glyph unicode="^" horiz-adv-x="907" d="M106 1151l322 332h53l320 -334l-4 -10h-166l-178 121l-177 -121h-163z" />
+<glyph unicode="_" horiz-adv-x="1153" d="M10 -27l29 27h1091q12 0 13 -14v-140h-1133v127z" />
+<glyph unicode="`" horiz-adv-x="618" d="M106 1294l123 146l64 -17l219 -323l-76 -76z" />
+<glyph unicode="a" horiz-adv-x="942" d="M74 253.5q0 108.5 44 172t115 100.5q125 63 367 68v145q0 41 -38 75t-118 34q-76 0 -112 -33l-41 -133l-215 63q47 170 231 230q66 20 148 20q160 0 244.5 -79.5t84.5 -208.5v-525q0 -43 29 -43q14 0 43 15l45 -109q-63 -53 -141 -53q-117 0 -148 92q-90 -94 -229 -94 t-224 77.5t-85 186zM268 283.5q0 -50.5 15.5 -76t38 -40.5t47 -20.5t55.5 -5.5t62.5 13.5t54.5 31.5q43 33 59 82v176q-135 0 -198.5 -21.5t-98.5 -55t-35 -84z" />
+<glyph unicode="b" horiz-adv-x="1003" d="M4 1458l260 39l62 -65v-492q86 55 188 55t176 -34.5t127 -98.5q113 -135 113 -356q0 -279 -152 -412q-117 -102 -286 -102q-113 0 -197 47q-98 -49 -107 -51l-47 28v1327l-118 -8zM326 199q16 -20 62 -37t91 -17t88 15.5t80 56.5q88 90 88 277q0 176 -76 266 q-65 80 -167 80q-49 0 -95.5 -19.5t-70.5 -48.5v-573z" />
+<glyph unicode="c" horiz-adv-x="884" d="M74 477q0 268 143 408q114 110 294 110h3q133 0 231 -69q80 -55 107 -117l-203 -96l-65 118q-41 10 -68 11q-248 0 -248 -361q0 -154 75 -245t198 -91q57 0 120.5 21.5t104.5 62.5l45 -143q-123 -94 -299 -94q-184 0 -303 119q-135 131 -135 366z" />
+<glyph unicode="d" horiz-adv-x="1028" d="M74 481q0 279 151 412q117 102 287 102q86 0 164 -32v380l-117 -8l-18 123l256 43l63 -69v-1250q0 -43 29 -43q14 0 43 15l45 -109q-63 -53 -153 -53q-1 0 -2 -1q-89 0 -124 68q-95 -68 -202 -68l-2 1q-108 0 -181 34.5t-127 98.5q-113 135 -112 356zM268 494 q0 -176 76 -267q66 -80 168.5 -80t163.5 66v578q-18 18 -62.5 34.5t-89.5 16.5t-88 -15.5t-80 -56.5q-88 -90 -88 -276z" />
+<glyph unicode="e" horiz-adv-x="909" d="M108 706q36 96 99 158q123 131 307 131q135 0 227 -71q95 -76 95 -199q0 -63 -21.5 -123.5t-83.5 -109.5q-139 -111 -455 -115q33 -162 166 -213q46 -18 102 -18q3 0 6 -1q52 -1 89 9q39 10 68 22q55 27 77 49l45 -143q-23 -23 -75 -45q-112 -46 -221 -46q-91 0 -181 32 q-178 63 -246 247q-35 91 -35 213q0 126 37 223zM266 528q150 0 223.5 23.5t112.5 61.5t39 95.5t-30.5 94.5t-89 37t-98.5 -18.5t-73 -55.5q-72 -84 -84 -238z" />
+<glyph unicode="f" horiz-adv-x="690" d="M35 975l14 20h154v187q0 156 84 239q74 74 196 74q141 0 262 -86q25 -16 31 -23l-145 -169l-131 120q-12 4 -29 4q-82 0 -82 -135v-211h232q10 0 10 -12v-141h-242v-697l234 -34v-111h-512l-25 111l117 24v707h-140z" />
+<glyph unicode="g" horiz-adv-x="999" d="M37 -258q0 193 170 276q-49 41 -49 130t80 169q-158 104 -158 301q0 164 113 271q109 106 265 106t267 -90l203 103l43 -7l20 -170l-184 -22q49 -90 49 -185.5t-34 -163t-89 -112.5q-109 -90 -266 -90q-51 0 -90 8l-51 -80l8 -34q20 -4 87.5 -13.5t156 -30t151 -52 t98.5 -68.5q62 -69 62 -173q0 -101 -37 -169q-37 -70 -96 -117q-121 -92 -295 -92q-184 0 -299 78q-125 84 -125 227zM217 -229q0 -68 76 -113q70 -41 180 -41q109 0 182 47q78 47 78 111.5t-56 90t-157.5 47t-157.5 38.5q-145 -59 -145 -180zM274 644q0 -75 16.5 -116 t43.5 -65q51 -51 134 -51t138.5 55t55.5 160q0 104 -58.5 159.5t-136.5 55.5h-8q-84 -4 -134.5 -63.5t-50.5 -134.5z" />
+<glyph unicode="h" horiz-adv-x="1067" d="M37 1458l256 43l63 -69v-510q101 73 238 73h4q213 0 279 -155q24 -51 24 -125v-6v-566l123 -32v-111h-408l-24 111l125 28v539q0 92 -43 126t-91 34t-80 -8.5t-61 -20.5q-57 -25 -86 -53v-613l121 -32v-111h-407l-25 111l127 28v1204l-117 -8z" />
+<glyph unicode="i" horiz-adv-x="548" d="M59 950l252 45l66 -65v-787l121 -32v-111h-410l-22 111l127 28v697l-113 -9zM127 1364q0 53 37 90t90 37t90 -39t37 -90t-37 -88t-90 -37t-90 37t-37 90z" />
+<glyph unicode="j" horiz-adv-x="497" d="M-76 -504l78 150q14 -10 39.5 -28.5t60.5 -18.5q72 0 72 125v1112l-108 -9l-19 123l248 45l63 -65v-1184q0 -162 -66.5 -232.5t-178.5 -70.5q-104 0 -189 53zM106 1364q0 53 37 90t90 37t90 -39t37 -90t-36.5 -88t-91 -37t-90.5 37t-36 90z" />
+<glyph unicode="k" horiz-adv-x="993" d="M37 1458l256 43l63 -69v-891l314 325h-101l-16 129h326l49 -94l-318 -307l236 -455l108 -24v-115h-256l-233 453l-109 -105v-213l121 -24v-111h-407l-25 111l127 28v1204l-117 -8z" />
+<glyph unicode="l" horiz-adv-x="532" d="M35 1458l256 43l65 -69v-1289l129 -32v-111h-417l-25 111l129 28v1204l-117 -8z" />
+<glyph unicode="m" horiz-adv-x="1632" d="M59 950q27 4 62 11.5t69.5 13.5t67.5 11t53 9l60 -75q97 76 254 76h3q158 0 234 -99q133 98 299 98q213 0 283 -155q24 -51 24 -125v-6v-566l121 -32v-111h-409l-23 111l127 28v539q0 86 -51 127q-43 33 -108.5 33t-122 -25t-84.5 -49v-21l2 -59v-541l122 -32v-111h-407 l-25 111l125 28v539q0 92 -43 126t-106.5 34t-123 -27t-85.5 -53v-615l119 -32v-111h-408l-25 111l130 28v697l-113 -9z" />
+<glyph unicode="n" horiz-adv-x="1085" d="M59 950q27 4 62 11.5t69.5 13.5t67.5 11t53 9l60 -75q97 75 241 75h4q213 0 281 -155q23 -53 23 -131v-564l122 -34v-111h-407l-25 111l125 28v539q0 92 -43 126t-106.5 34t-123 -27t-85.5 -53v-615l119 -32v-111h-408l-25 111l130 28v697l-113 -9z" />
+<glyph unicode="o" horiz-adv-x="1013" d="M74 502q0 119 34.5 211t96.5 155q119 127 303 127q188 0 311 -135t123 -362q0 -238 -131 -375q-121 -131 -303 -131q-190 0 -311 139q-123 138 -123 371zM268 478q0 -163 66 -248t172 -85t174 83t68 253t-65 265.5t-175 95.5q-117 0 -180 -101q-60 -96 -60 -263z" />
+<glyph unicode="p" horiz-adv-x="1034" d="M39 952l256 43l55 -59q92 59 194.5 59t176.5 -34.5t127 -98.5q113 -135 113 -356q0 -279 -152 -412q-117 -102 -287 -102q-94 0 -164 31v-431l250 -45v-108h-536l-25 108l127 31v1260l-117 -9zM358 197q18 -20 62.5 -36t89.5 -16t88 15.5t82 56.5q86 90 86 277 q0 176 -74 266q-68 80 -168 80t-166 -66v-577z" />
+<glyph unicode="q" horiz-adv-x="1001" d="M74 481q0 279 151 412q117 102 287 102q102 0 184 -41l117 43l47 -39v-1331l113 -39v-149h-527l-22 129l252 49v428q-82 -53 -185.5 -53t-177 34.5t-127.5 98.5q-113 135 -112 356zM268 494q0 -176 76 -267q66 -80 168.5 -80t163.5 66v578q-18 18 -62.5 34.5t-89.5 16.5 t-88 -15.5t-80 -56.5q-88 -90 -88 -276z" />
+<glyph unicode="r" horiz-adv-x="829" d="M59 950q115 18 242 43l64 -94q82 94 213 94q90 0 152.5 -45t92.5 -110l-202 -103l-64 99q-70 0 -125 -60q-57 -59 -57 -158v-442q0 -8 35 -14l231 -49v-111h-553l-25 111l127 28v690h-112z" />
+<glyph unicode="s" horiz-adv-x="827" d="M49 207l211 80l49 -119q47 -20 87 -20q3 0 6 -1q36 1 58 7q24 6 46 18q47 31 47 90q0 76 -93 116t-160 72.5t-112 69.5q-92 78 -92 205q0 125 101 201q94 69 225 69q66 0 121 -18.5t96 -46.5q78 -53 121 -137l-209 -80l-47 104q-41 21 -88 21h-2q-46 0 -84 -28 q-39 -28 -39 -81t51 -87t141 -70.5t138.5 -69.5t74.5 -70q52 -69 52 -153q0 -81 -31 -133q-31 -54 -80 -89q-95 -65 -230 -65h-4q-115 0 -223 63q-100 61 -131 152z" />
+<glyph unicode="t" horiz-adv-x="665" d="M8 975l15 20h182v342l164 39l10 -30v-351h213q10 0 10 -12v-141h-223v-588q0 -66 19.5 -85t49 -19t50 6t39.5 16q38 17 61 35q4 -14 43 -135q-29 -27 -84 -53.5t-143 -26.5t-148.5 53t-60.5 174v623h-168z" />
+<glyph unicode="u" horiz-adv-x="1044" d="M25 950l254 45l63 -67v-555q0 -193 113 -217q31 -8 58.5 -8t55 7t54.5 21q59 33 77 80v575h-106l-19 119l250 47l60 -69v-723q0 -68 37 -68l36 4l29 -92q-57 -57 -133 -57q-106 0 -139 92q-96 -92 -230 -92q-225 0 -301 184q-26 61 -26 148v6v501h-113z" />
+<glyph unicode="v" horiz-adv-x="956" d="M0 977l248 18l260 -755l252 620h-111l-14 117l248 18l65 -77l-381 -928h-161l-310 870h-80z" />
+<glyph unicode="w" horiz-adv-x="1441" d="M10 979l273 20l159 -784l193 758h223l209 -760l158 639h-92l-15 127l228 18l45 -71l-224 -932h-241l-195 731l-188 -731h-244l-184 858h-90z" />
+<glyph unicode="x" horiz-adv-x="950" d="M57 129h86l213 367l-215 364h-84v135h230l217 -360l196 360h185v-129h-78l-219 -372l217 -361h88v-133h-240l-207 346l-198 -346h-182z" />
+<glyph unicode="y" horiz-adv-x="983" d="M2 979l254 16l276 -829l259 686h-107l-14 125l248 18l53 -69q-184 -522 -329.5 -896t-169 -422t-54.5 -87q-72 -84 -185 -84q-90 0 -182 82l76 141q57 -70 121 -70q66 0 112 123q14 35 27 66l45 121l-332 952h-82z" />
+<glyph unicode="z" horiz-adv-x="866" d="M88 0v158l469 682q-160 4 -321 4l-29 -160h-119v311h690v-159l-471 -682h326l29 168h116v-322h-690z" />
+<glyph unicode="{" horiz-adv-x="690" d="M14 477v170q98 0 163 57.5t65 167.5l-2 78l-2 92q0 205 53 293q66 111 252 111q53 0 101 -9.5t50 -10.5t6 -1l-61 -196l-145 49q-63 -35 -64 -201l2 -205q0 -297 -215 -313q215 -8 215 -311l-2 -180q0 -143 29 -197q12 -23 35 -33l145 49l61 -196q-121 -23 -157 -23 q-182 0 -254 127q-51 90 -51 283l4 198q0 141 -142 187q-41 14 -86 14z" />
+<glyph unicode="|" horiz-adv-x="505" d="M160 -438v1859h186v-1859h-186z" />
+<glyph unicode="}" horiz-adv-x="690" d="M-10 -309l61 196l146 -49q63 29 63 230l-2 180q0 305 217 317q-217 0 -217 307l2 205q0 166 -63 201l-146 -49l-61 196q123 20 190.5 20.5t127 -28t91.5 -82.5q53 -86 54 -293l-2 -92l-2 -78q0 -111 64.5 -168t162.5 -57v-170q-92 0 -160 -51q-68 -53 -67 -150l4 -198 q0 -193 -52 -283q-72 -127 -254 -127q-43 0 -83.5 8.5t-73.5 14.5z" />
+<glyph unicode="~" horiz-adv-x="839" d="M51 1186l2 26q35 74 76 107q80 63 164 63q70 0 158 -47l63 -30q29 -14 53 -15l113 101l121 -140q-109 -121 -213 -121q-55 0 -116.5 29t-96.5 42t-80 13t-77 -31.5t-46 -68.5z" />
+<glyph unicode="&#xa1;" horiz-adv-x="520" d="M121 -387l65 901h142l75 -850l-43 -78zM137 887q0 51 35 86t85 35t87 -36t37 -85t-37 -85t-87 -36t-85 35t-35 86z" />
+<glyph unicode="&#xa2;" horiz-adv-x="894" d="M63 477q0 233 105 367q92 115 242 141v420h184v-420q96 -18 168 -80q47 -39 80 -96l-203 -96l-66 118q-41 10 -67 11q-248 0 -248 -361q0 -154 75 -245t197 -91q57 0 121 21.5t105 62.5l45 -143q-90 -68 -207 -86v-430h-184v430q-150 31 -242 145q-104 127 -105 332z" />
+<glyph unicode="&#xa3;" horiz-adv-x="1079" d="M61 42q0 32 21.5 78t64.5 83q82 82 114 213t40 276h-182v135l16 19h172l-4 192q0 289 205 355q59 20 123.5 20t115 -12t91.5 -29q66 -29 114 -65l-145 -187l-164 140q-96 -4 -125 -82q-18 -49 -18 -226v-106h286q14 0 15 -17v-137h-307q-14 -276 -82 -413q113 -8 315 -82 q39 -14 61 -15l156 105l80 -217q-72 -78 -231 -78q-100 0 -197.5 31.5t-145 46t-102.5 14.5t-89 -28.5t-44 -61.5h-149q-2 4 -3 10q-2 6 -2 38z" />
+<glyph unicode="&#xa4;" horiz-adv-x="1232" d="M104 317l138 138q-78 113 -78 254q0 143 82 260l-142 143l142 145l153 -153q98 55 216 55t216 -57l156 155l143 -145l-147 -145q82 -117 82 -258q0 -139 -78 -252l143 -140l-143 -145l-149 147q-102 -59 -222 -59t-223 57l-147 -145zM358 709q0 -113 72 -186.5t184 -73.5 q113 0 184.5 73.5t71.5 186.5t-71.5 186.5t-184.5 73.5t-184.5 -73.5t-71.5 -186.5z" />
+<glyph unicode="&#xa5;" horiz-adv-x="1249" d="M51 1266v149h424l14 -129l-124 -26l284 -451l281 453l-121 22v131h389v-149l-78 -21l-385 -612h223v-158h-225v-43h225v-158h-225v-104l234 -41l-17 -129h-631l-18 129l227 41v104h-243v158h243v43h-243v158h229l-381 614z" />
+<glyph unicode="&#xa6;" horiz-adv-x="528" d="M166 -381v778h196v-778h-196zM166 635v778h196v-778h-196z" />
+<glyph unicode="&#xa7;" horiz-adv-x="1030" d="M98 -254l17 346h139l29 -231q98 -29 165.5 -29t110.5 9t76 32q76 47 76 122t-44 118t-112 78.5t-144.5 69.5t-144.5 79q-156 100 -156 244.5t113 246.5q-117 98 -117 240q0 147 119 244q123 100 305 100q176 0 357 -61l26 -353h-141l-88 232q-57 20 -150.5 20t-154 -45 t-60.5 -104.5t32 -96t80 -66.5t104.5 -52.5t123 -55t124 -72.5t91.5 -81q66 -80 66 -197.5t-111 -228.5q94 -90 95 -219q0 -178 -142 -279q-125 -86 -321 -86q-113 0 -196 21.5t-167 54.5zM324 622.5q0 -63.5 61 -106.5t131 -74q117 -55 162 -80q47 63 47 110.5t-31.5 83.5 t-82 65.5t-113 57.5t-123.5 58q-51 -51 -51 -114.5z" />
+<glyph unicode="&#xa8;" horiz-adv-x="790" d="M106 1246q0 48 34 85t84 37t86 -37t36 -86t-37 -84t-85 -35t-83 36t-35 84zM442 1247q0 47 36 84t86 37t85 -37t35 -85t-36 -84t-84 -36t-85 37t-37 84z" />
+<glyph unicode="&#xa9;" horiz-adv-x="1466" d="M66 765q0 138 52 260t142 213t212 143.5t260 52.5t260 -52.5t213 -143.5t143.5 -213t52.5 -260t-52.5 -260t-143.5 -212t-213 -142.5t-260 -52.5t-260 52.5t-212 142.5t-142 212t-52 260zM246 766q0 -102 38 -190.5t105 -153.5q141 -143 344 -143t345.5 142t142.5 345 t-142.5 345t-345.5 142t-345 -142t-142 -345zM375 752q0 182 112 290q106 104 273 105q57 0 94 -4l53 -10l19 -248h-97l-28 104l-37 2q-104 0 -168 -57t-64 -166t61.5 -173.5t153 -64.5t164.5 45l54 -133q-98 -63 -192.5 -63t-164 26.5t-121.5 73.5q-113 104 -112 273z" />
+<glyph unicode="&#xaa;" horiz-adv-x="700" d="M78 1019.5q0 67.5 27.5 106.5t72.5 60q76 35 219 35v18q0 47 -23.5 61.5t-45.5 14.5q-31 0 -62 -6l-8 -49l-178 34q18 78 92 123q63 37 150.5 37t137.5 -27.5t72.5 -74.5t26.5 -110.5t4 -138.5t3 -93.5t14 -18.5l26 6l31 -94q-59 -45 -121.5 -45t-93.5 49 q-53 -53 -143.5 -53t-145.5 49t-55 116.5zM242 1038q0 -20 13 -39.5t50 -19.5q70 0 92 51v88q-156 0 -155 -80z" />
+<glyph unicode="&#xab;" horiz-adv-x="944" d="M12 694l437 439l110 -111l-330 -330l330 -332l-110 -108zM360 694l394 396l110 -111l-286 -287l286 -289l-110 -108z" />
+<glyph unicode="&#xac;" horiz-adv-x="1204" d="M100 778v131l23 23h928l22 -23v-413q0 -14 -16 -15h-144v297h-813z" />
+<glyph unicode="&#xad;" horiz-adv-x="825" d="M-57 639v176h938v-176h-938z" />
+<glyph unicode="&#xae;" horiz-adv-x="1466" d="M66 765q0 138 52 260t142 213t212 143.5t260 52.5t260 -52.5t213 -143.5t143.5 -213t52.5 -260t-52.5 -260t-143.5 -212t-213 -142.5t-260 -52.5t-260 52.5t-212 142.5t-142 212t-52 260zM246 766q0 -102 38 -190.5t105 -153.5q141 -143 344 -143t345.5 142t142.5 345 t-142.5 345t-345.5 142t-345 -142t-142 -345zM467 1026v119h205q174 0 262 -74q80 -65 80 -178q0 -147 -133 -211l94 -172l63 -12v-103h-180l-117 252q-23 -4 -43 -4h-41v-131l95 -23v-94h-275l-8 99l47 16v506zM657 776h29q178 0 178 116t-170 116h-37v-232z" />
+<glyph unicode="&#xaf;" horiz-adv-x="905" d="M117 1257v156h671v-156h-671z" />
+<glyph unicode="&#xb0;" horiz-adv-x="624" d="M68 1220.5q0 118.5 63 194.5q66 78 180 78q113 0 181 -78q66 -78 65.5 -195.5t-65 -194.5t-182 -77t-180 77t-62.5 195.5zM229 1221q0 -82 41 -119q14 -14 40 -14.5t41.5 13t25.5 34.5q18 37 18 86q0 78 -43 114q-16 14 -41.5 14.5t-41 -13t-23.5 -33.5q-17 -35 -17 -82z " />
+<glyph unicode="&#xb1;" horiz-adv-x="931" d="M129 346v156h674v-156h-674zM129 842v155h258v240h156v-240h260v-155h-260v-264h-156v264h-258z" />
+<glyph unicode="&#xb2;" horiz-adv-x="614" d="M72 1286q29 86 96.5 126t123.5 40t92 -11t65 -34q66 -51 65.5 -123t-25 -119t-58.5 -82.5t-69.5 -62.5t-56.5 -45h107l30 69h86l-22 -188h-391l-21 88l72 64q131 121 158.5 169.5t27.5 79.5q0 68 -67 68q-23 0 -43 -8l-31 -74z" />
+<glyph unicode="&#xb3;" horiz-adv-x="604" d="M72 934l63 108q35 -29 68 -50t78 -21t66.5 21.5t21.5 56.5q0 59 -146 59v98q125 0 125 72q0 16 -14.5 32.5t-34.5 16.5q-53 0 -57 -10l-29 -62l-135 45q59 152 233 152q72 0 115 -31q82 -59 82 -127q0 -106 -100 -129q45 -10 82.5 -40.5t37.5 -87t-20.5 -90.5t-52.5 -56 q-66 -43 -154 -43q-143 0 -229 86z" />
+<glyph unicode="&#xb4;" horiz-adv-x="641" d="M106 1124l238 310l66 16l125 -166l-345 -250z" />
+<glyph unicode="&#xb6;" horiz-adv-x="1196" d="M57 1024q0 154 95 258q123 133 354 133h575v-164h-98v-1251h-174v1251h-92v-979l-2 -67q0 -82 -187 -232l-135 185l139 88v366q-225 10 -350 121t-125 291z" />
+<glyph unicode="&#xb7;" horiz-adv-x="485" d="M121 489v328h219l27 -31l-2 -297h-244z" />
+<glyph unicode="&#xb8;" horiz-adv-x="831" d="M147 -510l89 176l145 -96q78 0 117 55q14 20 14 58t-37 73t-125 35l-26 2l-35 39l71 199h203l-47 -119q76 -20 132.5 -74.5t56.5 -158t-83 -174t-229 -70.5q-147 0 -246 55z" />
+<glyph unicode="&#xb9;" horiz-adv-x="485" d="M70 1399l241 69l23 -32v-478l74 -16v-86h-302l-6 82l78 14v367l-90 -16z" />
+<glyph unicode="&#xba;" horiz-adv-x="684" d="M70 1152q0 77 21.5 134t58.5 94q74 76 192 76q121 0 195 -76q78 -82 77 -227q0 -221 -163 -285q-51 -20 -109 -20q-186 0 -252 170q-20 57 -20 134zM233 1146.5q0 -65.5 28 -106.5t81 -41t82 40t29 107.5t-28 112t-82 44.5t-82 -45.5t-28 -111z" />
+<glyph unicode="&#xbb;" horiz-adv-x="946" d="M82 403l285 289l-285 287l111 111l393 -400l-393 -395zM387 1022l113 111l436 -443l-436 -438l-111 108l328 330z" />
+<glyph unicode="&#xbc;" horiz-adv-x="1343" d="M63 1362l273 78l24 -17v-114q0 -12 -2 -25v-524q0 -18 74 -19v-96h-338v92l92 15v522l-106 -17zM193 4l684 1411h182l-2 -29l-682 -1409l-176 23zM686 221v150l318 420h180v-435h96v-135h-96v-108l86 -13v-100h-422l-8 90l172 25v106h-326zM827 356h185v238z" />
+<glyph unicode="&#xbd;" horiz-adv-x="1435" d="M68 1362l272 78l25 -17v-114q0 -12 -3 -25v-524q0 -18 74 -19v-96h-338v92l92 15v522l-106 -17zM197 4l684 1411h182l-2 -29l-682 -1409l-176 23zM776 608q45 92 110.5 139.5t151.5 47.5t135.5 -18.5t79.5 -51.5q63 -63 64 -164q0 -141 -154 -311q-43 -49 -84 -94 l-20 -23h182l43 115h92l-26 -248h-514l-27 100q37 39 93 93.5t110 117.5q127 156 127 264q0 47 -29 63.5t-53 16.5q-27 0 -58 -12l-49 -117z" />
+<glyph unicode="&#xbe;" horiz-adv-x="1445" d="M59 1251q45 121 187 168q49 16 105.5 16.5t103.5 -13t82 -38.5q78 -55 77 -159q0 -61 -32.5 -109.5t-92.5 -66.5q66 -18 102 -63.5t36 -108.5q0 -119 -97 -185q-84 -59 -186 -59q-166 0 -262 72l111 114q59 -47 133 -47t112 55q13 18 13 47q0 113 -172 113h-27v119h27 q80 0 108 14q57 29 57 79t-36.5 73.5t-69.5 23.5q-35 0 -76 -16l-47 -100zM305 4l682 1411h184l-2 -29l-682 -1409l-176 23zM784 221v150l318 420h180v-435h96v-135h-96v-108l86 -13v-100h-422l-8 90l172 25v106h-326zM926 356h184v238z" />
+<glyph unicode="&#xbf;" horiz-adv-x="800" d="M47 -126q0 128 57.5 212t144.5 148.5t135 116.5t48 130v25l162 2l4 -21q6 -31 6 -88t-25.5 -106t-63.5 -87t-82 -67.5t-81 -64.5q-90 -78 -90 -172q0 -98 86 -140q31 -14 70 -14q84 0 135 19l53 194h125l-35 -323q-66 -23 -136.5 -41.5t-160.5 -18.5q-170 0 -261 84 t-91 212zM385 876.5q0 51.5 35 86t86 34.5t87 -35.5t36 -86t-37 -85t-88 -34.5t-85 34.5t-34 86z" />
+<glyph unicode="&#xc0;" horiz-adv-x="1245" d="M-2 127l106 37l414 1251h197l436 -1251l94 -37l-22 -127h-482v121l181 43l-99 307h-438l-94 -307l176 -41v-123h-442zM387 1726l115 168l69 -12l287 -317l-76 -90zM438 643h328l-168 514z" />
+<glyph unicode="&#xc1;" horiz-adv-x="1245" d="M-2 127l106 37l414 1251h197l436 -1251l94 -37l-22 -127h-482v121l181 43l-99 303h-438l-94 -303l176 -41v-123h-442zM387 1597l293 304l68 8l118 -187l-399 -229zM438 643h328l-168 514z" />
+<glyph unicode="&#xc2;" horiz-adv-x="1245" d="M-2 127l106 37l414 1251h197l436 -1251l94 -37l-22 -127h-482v121l181 43l-99 303h-438l-94 -303l176 -41v-123h-442zM274 1499l322 332h53l320 -334l-4 -10h-166l-178 121l-177 -121h-163zM438 643h328l-168 514z" />
+<glyph unicode="&#xc3;" horiz-adv-x="1245" d="M-2 127l106 37l414 1251h197l436 -1251l94 -37l-22 -127h-482v121l181 43l-99 303h-438l-94 -303l176 -41v-123h-442zM274 1559v34q45 100 148 144q45 18 113.5 18t127 -32.5t105.5 -67.5l18 -13l125 115l121 -137q-113 -125 -205 -125q-49 0 -83.5 15.5t-66.5 34 t-64.5 33.5t-87 15t-87 -34.5t-49.5 -69.5zM438 643h328l-168 514z" />
+<glyph unicode="&#xc4;" horiz-adv-x="1245" d="M-2 127l106 37l414 1251h197l436 -1251l94 -37l-22 -127h-482v121l181 43l-99 303h-438l-94 -303l176 -41v-123h-442zM311 1788q0 53 37 92t91.5 39t92 -39t37.5 -93t-40 -92t-91 -38t-89 39t-38 92zM438 643h328l-168 514zM674 1789q0 52 39 91t93 39t92 -39t38 -92 t-39 -92t-91 -39t-92 40t-40 92z" />
+<glyph unicode="&#xc5;" horiz-adv-x="1236" d="M-6 127l106 37l394 1192q-86 59 -86 170q0 86 59 145t145 60q86 0 146.5 -60.5t60.5 -157t-88 -157.5l416 -1192l94 -37l-22 -127h-482v121l181 43l-99 303h-438l-94 -303l176 -41v-123h-443zM434 643h328l-168 514zM535 1526q0 -37 21.5 -57.5t57 -20.5t57 20.5 t21.5 57.5t-21.5 57.5t-57 20.5t-57 -20.5t-21.5 -57.5z" />
+<glyph unicode="&#xc6;" horiz-adv-x="1609" d="M-25 127l107 37l524 1251h873l41 -385h-129l-78 209h-381v-430h323v-176h-323v-457h401l72 207h129l-41 -383h-868l-21 145l125 27v356h-319l-146 -364l180 -41v-123h-442zM481 705h248v546l-29 2z" />
+<glyph unicode="&#xc7;" horiz-adv-x="1193" d="M72 692q0 340 207 541q193 182 485 182q131 0 303 -39l39 -372h-139l-80 221q-39 14 -134.5 14t-185.5 -43t-153 -115q-127 -147 -127 -368q0 -236 141 -389q143 -156 381 -156q88 0 161.5 26.5t106.5 51.5l60 -162q-113 -80 -320 -90l-29 -74q72 -18 124.5 -69.5 t52.5 -148.5t-78 -163.5t-213 -66.5q-100 0 -219 49l-13 4l84 164l136 -88q72 0 108 51q14 18 14 53t-33.5 68.5t-117.5 33.5l-25 3l-33 34l58 160q-238 43 -391 217q-170 193 -170 471z" />
+<glyph unicode="&#xc8;" horiz-adv-x="1103" d="M98 145l125 27v1079l-123 11v153h873l41 -385h-129l-78 209h-381v-430h324v-176h-324v-457h401l72 207h129l-41 -383h-868zM301 1726l117 168l69 -12l285 -317l-74 -90z" />
+<glyph unicode="&#xc9;" horiz-adv-x="1103" d="M98 145l125 27v1079l-123 11v153h873l41 -385h-129l-78 209h-381v-430h324v-176h-324v-457h401l72 207h129l-41 -383h-868zM387 1597l295 304l70 8l116 -187l-399 -229z" />
+<glyph unicode="&#xca;" horiz-adv-x="1103" d="M98 145l125 27v1079l-123 11v153h873l41 -385h-129l-78 209h-381v-430h324v-176h-324v-457h401l72 207h129l-41 -383h-868zM207 1499l321 332h54l319 -334l-4 -10h-166l-178 121l-176 -121h-164z" />
+<glyph unicode="&#xcb;" horiz-adv-x="1103" d="M98 145l125 27v1079l-123 11v153h873l41 -385h-129l-78 209h-381v-430h324v-176h-324v-457h401l72 207h129l-41 -383h-868zM258 1810q0 53 37 92.5t91 39.5t92 -39t38 -93.5t-40 -92.5t-91 -38t-89 39t-38 92zM621 1811.5q0 52.5 38.5 91.5t93 39t92.5 -39t38 -93 q0 -53 -39 -92t-91.5 -39t-92 40t-39.5 92.5z" />
+<glyph unicode="&#xcc;" horiz-adv-x="655" d="M78 147l147 23v1079l-129 11v155h447l20 -153l-133 -21v-1075l133 -16v-150h-448zM78 1726l117 168l65 -12l287 -317l-74 -90z" />
+<glyph unicode="&#xcd;" horiz-adv-x="653" d="M94 147l129 23v1079l-129 11v155h447l20 -153l-133 -21v-1075l133 -16v-150h-448zM96 1597l293 304l70 8l116 -187l-399 -229z" />
+<glyph unicode="&#xce;" horiz-adv-x="653" d="M-20 1499l321 332h53l320 -334l-4 -10h-166l-178 121l-176 -121h-164zM94 147l129 23v1079l-129 11v155h447l20 -153l-133 -21v-1075l133 -16v-150h-448z" />
+<glyph unicode="&#xcf;" horiz-adv-x="653" d="M43 1634q0 53 37 91t88 38t91 -37.5t40 -91.5q0 -53 -40 -91t-91 -38t-88 38t-37 91zM94 147l129 23v1079l-129 11v155h447l20 -153l-133 -21v-1075l133 -16v-150h-448zM371 1633.5q0 54.5 39 92t92 37.5t89 -38.5t36 -91t-37 -90.5t-89 -38t-91 37t-39 91.5z" />
+<glyph unicode="&#xd0;" horiz-adv-x="1294" d="M76 637v139l20 23h127v452l-123 13v151h387q334 0 531 -178q203 -182 203 -520t-195 -529q-193 -188 -530 -188h-377l-21 145l125 29v463h-147zM426 176h49q264 0 399 148q132 139 132 401q0 129 -42 227.5t-120 161.5q-152 129 -418 129v-444h340q14 0 14 -17v-145h-354 v-461z" />
+<glyph unicode="&#xd1;" horiz-adv-x="1425" d="M96 145l129 27v1075l-123 13v155h428l517 -1218v1050l-127 17v151h403l27 -153l-131 -25v-1237h-240l-582 1223v-893l2 -146q0 -12 2 -18l117 -21v-145h-397zM342 1559v34q45 100 150 144q43 18 111.5 18t126.5 -32.5t106 -67.5l18 -13l125 115l121 -137 q-113 -125 -205 -125q-49 0 -84 15.5t-66.5 34t-64.5 33.5t-87 15t-87 -34.5t-49 -69.5z" />
+<glyph unicode="&#xd2;" d="M88 705q0 303 143 499q156 213 435 213t436 -213q145 -199 145 -499q0 -301 -145 -500q-157 -213 -436 -213t-435 213q-143 197 -143 500zM303 700q0 -221 90 -370q96 -162 273 -162q178 0 276 162q90 147 90 370q0 225 -90 377q-100 164 -276 164t-273 -164 q-90 -152 -90 -377zM428 1726l115 168l67 -12l287 -317l-74 -90z" />
+<glyph unicode="&#xd3;" d="M88 705q0 303 143 499q156 213 435 213t436 -213q145 -199 145 -499q0 -301 -145 -500q-157 -213 -436 -213t-435 213q-143 197 -143 500zM303 700q0 -221 90 -370q96 -162 273 -162q178 0 276 162q90 147 90 370q0 225 -90 377q-100 164 -276 164t-273 -164 q-90 -152 -90 -377zM449 1597l292 304l70 8l117 -187l-400 -229z" />
+<glyph unicode="&#xd4;" d="M88 705q0 303 143 499q156 213 435 213t436 -213q145 -199 145 -499q0 -301 -145 -500q-157 -213 -436 -213t-435 213q-143 197 -143 500zM303 700q0 -221 90 -370q96 -162 273 -162q178 0 276 162q90 147 90 370q0 225 -90 377q-100 164 -276 164t-273 -164 q-90 -152 -90 -377zM319 1499l322 332h53l320 -334l-2 -10h-168l-178 121l-177 -121h-167z" />
+<glyph unicode="&#xd5;" d="M88 705q0 303 143 499q156 213 435 213t436 -213q145 -199 145 -499q0 -301 -145 -500q-157 -213 -436 -213t-435 213q-143 197 -143 500zM297 1559v34q45 100 145 144q45 18 117 18t135.5 -38t110.5 -75l125 115l121 -137q-66 -82 -148 -113q-29 -12 -66.5 -12 t-73.5 15.5t-66.5 34t-63.5 33.5t-86 15q-84 0 -139 -104zM303 700q0 -221 90 -370q96 -162 273 -162q178 0 276 162q90 147 90 370q0 225 -90 377q-100 164 -276 164t-273 -164q-90 -152 -90 -377z" />
+<glyph unicode="&#xd6;" d="M88 705q0 303 143 499q156 213 435 213t436 -213q145 -199 145 -499q0 -301 -145 -500q-157 -213 -436 -213t-435 213q-143 197 -143 500zM303 700q0 -221 90 -370q96 -162 273 -162q178 0 276 162q90 147 90 370q0 225 -90 377q-100 164 -276 164t-273 -164 q-90 -152 -90 -377zM371 1810q0 53 36.5 92.5t91 39.5t92.5 -39t38 -93.5t-40 -92.5t-91.5 -38t-89 39t-37.5 92zM733 1811.5q0 52.5 39 91.5t93.5 39t92 -39t37.5 -93q0 -53 -38.5 -92t-91 -39t-92.5 40t-40 92.5z" />
+<glyph unicode="&#xd7;" horiz-adv-x="978" d="M100 1008l109 108l283 -282l274 274l111 -109l-277 -276l272 -270l-108 -109l-272 270l-277 -276l-109 111l277 276z" />
+<glyph unicode="&#xd8;" d="M88 691.5q0 156.5 36 285.5t107 227q156 213 435 213q104 0 194 -33l70 154h200l-2 -39l-100 -217q111 -98 165 -250.5t54 -311.5t-36.5 -288t-108.5 -227q-158 -213 -436 -213q-123 0 -215 39l-64 -140h-192l-7 37l99 213q-100 98 -149.5 246t-49.5 304.5zM303 704.5 q0 -221.5 78 -358.5l401 873q-55 23 -132 22.5t-145.5 -45.5t-111.5 -119q-90 -151 -90 -372.5zM528 199q61 -31 145.5 -31t154 44t114.5 118q90 147 90 372t-96 381z" />
+<glyph unicode="&#xd9;" horiz-adv-x="1306" d="M61 1262v153h474v-151l-142 -19v-768q0 -309 283 -309q188 0 250 164q23 59 22 147v768l-125 19v149h414v-151l-117 -21v-772q0 -238 -137 -365q-121 -115 -313 -114q-236 0 -359 126t-123 353v778zM420 1726l115 168l69 -12l287 -317l-76 -90z" />
+<glyph unicode="&#xda;" horiz-adv-x="1306" d="M61 1262v153h474v-151l-142 -19v-768q0 -309 283 -309q188 0 250 164q23 59 22 147v768l-125 19v149h414v-151l-117 -21v-772q0 -238 -137 -365q-121 -115 -313 -114q-236 0 -359 126t-123 353v778zM485 1597l295 304l70 8l115 -187l-398 -229z" />
+<glyph unicode="&#xdb;" horiz-adv-x="1306" d="M61 1262v153h474v-151l-142 -19v-768q0 -309 283 -309q188 0 250 164q23 59 22 147v768l-125 19v149h414v-151l-117 -21v-772q0 -238 -137 -365q-121 -115 -313 -114q-236 0 -359 126t-123 353v778zM326 1499l321 332h53l320 -334l-2 -10h-168l-178 121l-176 -121h-168z " />
+<glyph unicode="&#xdc;" horiz-adv-x="1325" d="M61 1262v153h474v-151l-142 -19v-768q0 -145 72 -227t219 -82q190 0 258 164q25 59 25 147v768l-125 19v149h413v-151l-116 -21v-772q0 -238 -144 -365q-125 -115 -317 -114q-236 0 -363 126t-127 353v778zM395 1810q0 53 37 92.5t91.5 39.5t92 -39t37.5 -93.5t-40 -92.5 t-91 -38t-89 39t-38 92zM758 1811.5q0 52.5 39 91.5t93 39t92 -39t38 -93q0 -53 -39 -92t-91 -39t-92 40t-40 92.5z" />
+<glyph unicode="&#xdd;" horiz-adv-x="1153" d="M8 1262v153h436l15 -135l-137 -25l284 -524l258 526l-125 23v135h400v-153l-88 -21l-369 -737v-334l238 -41l-21 -129h-635l-20 129l235 41v346l-389 727zM412 1597l295 304l69 8l115 -187l-397 -229z" />
+<glyph unicode="&#xde;" horiz-adv-x="1075" d="M94 147l129 23v1079l-129 11v155h447l20 -153l-133 -21l4 -76q301 0 451.5 -103.5t150.5 -320.5q0 -219 -162 -331q-143 -98 -403 -99h-41v-145l236 -37v-129h-551zM428 487h33q199 0 278.5 64.5t79.5 173.5q0 141 -94 197.5t-281 56.5h-16v-492z" />
+<glyph unicode="&#xdf;" horiz-adv-x="1079" d="M66 0v119l104 20v948q0 203 106 314q96 96 263 96q143 0 243 -80q111 -88 111 -233q0 -94 -34 -154.5t-75 -103.5t-74.5 -76t-33.5 -70q8 -45 92 -88q268 -139 268 -358q0 -160 -114 -260q-102 -90 -244 -90q-119 0 -229 49l110 192q27 -23 53.5 -48t49.5 -40 q72 0 126 53.5t54 147.5q0 88 -90 162q-39 31 -84 58.5t-84 59.5q-90 72 -90 158q0 59 32.5 100.5t72.5 82t73 92t33 133.5q-4 66 -52 112.5t-118 46.5q-176 0 -177 -217v-1126h-292z" />
+<glyph unicode="&#xe0;" horiz-adv-x="942" d="M74 253.5q0 108.5 44 172t115 100.5q125 63 367 68v145q0 41 -38 75t-118 34q-76 0 -112 -33l-41 -133l-215 63q47 170 231 230q66 20 148 20q160 0 244.5 -79.5t84.5 -208.5v-525q0 -43 29 -43q14 0 43 15l45 -109q-63 -53 -141 -53q-117 0 -148 92q-90 -94 -229 -94 t-224 77.5t-85 186zM256 1294l123 146l63 -17l220 -323l-76 -76zM268 283.5q0 -50.5 15.5 -76t38 -40.5t47 -20.5t55.5 -5.5t62.5 13.5t54.5 31.5q43 33 59 82v176q-135 0 -198.5 -21.5t-98.5 -55t-35 -84z" />
+<glyph unicode="&#xe1;" horiz-adv-x="942" d="M74 253.5q0 108.5 44 172t115 100.5q125 63 367 68v145q0 41 -38 75t-118 34q-76 0 -112 -33l-41 -133l-215 63q47 170 231 230q66 20 148 20q160 0 244.5 -79.5t84.5 -208.5v-525q0 -43 29 -43q14 0 43 15l45 -109q-63 -53 -141 -53q-117 0 -148 92q-90 -94 -229 -94 t-224 77.5t-85 186zM268 283.5q0 -50.5 15.5 -76t38 -40.5t47 -20.5t55.5 -5.5t62.5 13.5t54.5 31.5q43 33 59 82v176q-135 0 -198.5 -21.5t-98.5 -55t-35 -84zM270 1174l236 305l65 16l123 -164l-340 -248z" />
+<glyph unicode="&#xe2;" horiz-adv-x="942" d="M74 253.5q0 108.5 44 172t115 100.5q125 63 367 68v145q0 41 -38 75t-118 34q-76 0 -112 -33l-41 -133l-215 63q47 170 231 230q66 20 148 20q160 0 244.5 -79.5t84.5 -208.5v-525q0 -43 29 -43q14 0 43 15l45 -109q-63 -53 -141 -53q-117 0 -148 92q-90 -94 -229 -94 t-224 77.5t-85 186zM123 1108l272 326h68l274 -328l-12 -23h-160l-137 107l-137 -107h-158zM268 283.5q0 -50.5 15.5 -76t38 -40.5t47 -20.5t55.5 -5.5t62.5 13.5t54.5 31.5q43 33 59 82v176q-135 0 -198.5 -21.5t-98.5 -55t-35 -84z" />
+<glyph unicode="&#xe3;" horiz-adv-x="942" d="M74 253.5q0 108.5 44 172t115 100.5q125 63 367 68v145q0 41 -38 75t-118 34q-76 0 -112 -33l-41 -133l-215 63q47 170 231 230q66 20 148 20q160 0 244.5 -79.5t84.5 -208.5v-525q0 -43 29 -43q14 0 43 15l45 -109q-63 -53 -141 -53q-117 0 -148 92q-90 -94 -229 -94 t-224 77.5t-85 186zM143 1198q0 57 54 115q66 72 163 71q74 0 177 -59q25 -14 47 -22l2 -7l94 97l115 -136q-43 -47 -89.5 -79.5t-94.5 -32.5t-77.5 12t-57 25.5t-54 26t-57.5 12.5q-74 0 -113 -93zM268 283.5q0 -50.5 15.5 -76t38 -40.5t47 -20.5t55.5 -5.5t62.5 13.5 t54.5 31.5q43 33 59 82v176q-135 0 -198.5 -21.5t-98.5 -55t-35 -84z" />
+<glyph unicode="&#xe4;" horiz-adv-x="942" d="M74 253.5q0 108.5 44 172t115 100.5q125 63 367 68v145q0 41 -38 75t-118 34q-76 0 -112 -33l-41 -133l-215 63q47 170 231 230q66 20 148 20q160 0 244.5 -79.5t84.5 -208.5v-525q0 -43 29 -43q14 0 43 15l45 -109q-63 -53 -141 -53q-117 0 -148 92q-90 -94 -229 -94 t-224 77.5t-85 186zM141 1278q0 53 37 90t90 37t90 -37t37 -90t-36.5 -90t-90.5 -37q-53 0 -90 37t-37 90zM268 283.5q0 -50.5 15.5 -76t38 -40.5t47 -20.5t55.5 -5.5t62.5 13.5t54.5 31.5q43 33 59 82v176q-135 0 -198.5 -21.5t-98.5 -55t-35 -84zM471 1278q0 53 37 90 t90 37t90 -37t37 -90t-37 -90t-90 -37t-90 37t-37 90z" />
+<glyph unicode="&#xe5;" horiz-adv-x="942" d="M74 253.5q0 108.5 44 172t115 100.5q125 63 367 68v145q0 41 -38 75t-118 34q-76 0 -112 -33l-41 -133l-215 63q47 170 231 230q66 20 148 20q160 0 244.5 -79.5t84.5 -208.5v-525q0 -43 29 -43q14 0 43 15l45 -109q-63 -53 -141 -53q-117 0 -148 92q-90 -94 -229 -94 t-224 77.5t-85 186zM268 283.5q0 -50.5 15.5 -76t38 -40.5t47 -20.5t55.5 -5.5t62.5 13.5t54.5 31.5q43 33 59 82v176q-135 0 -198.5 -21.5t-98.5 -55t-35 -84zM268 1290q0 82 56.5 138.5t139.5 56.5t139 -56.5t56 -138.5t-56 -138t-139 -56t-139.5 56t-56.5 138zM389 1290 q0 -31 21.5 -52t52.5 -21t53.5 21.5t22.5 51.5q0 31 -22.5 52.5t-53.5 21.5t-52.5 -21.5t-21.5 -52.5z" />
+<glyph unicode="&#xe6;" horiz-adv-x="1441" d="M74 252.5q0 107.5 46 171t122 100.5q135 70 358 70v145q0 41 -38 75t-118 34q-76 0 -112 -33l-41 -133l-215 63q47 170 231 230q66 20 148 20q198 0 286 -131q131 131 318 131q137 0 229 -69q96 -72 96 -199q0 -213 -278 -283q-98 -25 -236 -24h-36q-18 0 -39 2 q20 -193 163 -254q51 -23 124 -23t131.5 29t80.5 47l39 -139q-25 -27 -98.5 -58.5t-182 -31.5t-210 46t-166.5 144q-53 -127 -182 -174q-47 -18 -107 -18q-143 0 -228 77.5t-85 185zM268 274q0 -72 54 -106q37 -27 85 -27t79.5 13.5t54.5 31.5q43 33 59 82v176 q-332 0 -332 -170zM795 573h75q135 0 196.5 19.5t92.5 49.5t31 63.5t-6 55t-21.5 39t-43 30t-68.5 12.5t-83 -16.5t-77 -51.5q-82 -78 -96 -201z" />
+<glyph unicode="&#xe7;" horiz-adv-x="882" d="M74 477q0 268 143 408q115 111 297 110q133 0 231 -69q80 -55 107 -117l-203 -96l-65 118q-41 10 -68 11q-248 0 -248 -361q0 -154 75 -245t198 -91q57 0 120.5 21.5t104.5 62.5l45 -143q-92 -74 -227 -90l-25 -72q53 -14 96 -52t43 -116t-62.5 -130t-172.5 -52 q-84 0 -180 39l67 135l111 -76q61 0 92 43q10 16 10 39q0 90 -145 90l-25 31l43 123q-156 27 -252 141q-111 129 -110 338z" />
+<glyph unicode="&#xe8;" horiz-adv-x="927" d="M72 485q0 -242 133 -370q125 -123 334 -123q141 0 258 67q25 14 32 23l-45 143q-47 -47 -145 -69q-39 -10 -94.5 -10.5t-102.5 18t-82 49.5q-61 57 -84 164q315 4 455 115q105 83 105 233q0 61 -26 112.5t-69 86.5q-92 72 -227 71q-184 0 -307 -131q-135 -141 -135 -379z M266 528q12 154 84 238q66 74 170 74q59 0 90 -37t31 -94.5t-39 -95.5t-96 -56q-90 -29 -240 -29zM317 1378l121 162l66 -16l233 -303l-84 -88z" />
+<glyph unicode="&#xe9;" horiz-adv-x="909" d="M71.5 486q0.5 124 37 219.5t98.5 158.5q123 131 307 131q135 0 227 -71q95 -76 95 -199q0 -63 -21.5 -123.5t-83.5 -109.5q-139 -111 -455 -115q33 -162 166 -213q47 -18 102.5 -18.5t94.5 9t68 21.5q55 27 77 49l45 -143q-23 -23 -75 -45q-205 -84 -402 -14 q-178 63 -246 247q-35 92 -34.5 216zM266 528q150 0 223.5 23.5t112.5 61.5t39 95.5t-30.5 94.5t-89 37t-98.5 -18.5t-73 -55.5q-72 -84 -84 -238zM319 1174l236 305l66 16l122 -164l-340 -248z" />
+<glyph unicode="&#xea;" horiz-adv-x="927" d="M71.5 486q0.5 124 37 219.5t98.5 158.5q123 131 307 131q135 0 227 -71q95 -76 95 -199q0 -63 -21.5 -123.5t-83.5 -109.5q-139 -111 -455 -115q33 -162 166 -213q47 -18 102.5 -18.5t94.5 9t68 21.5q55 27 77 49l45 -143q-23 -23 -75 -45q-205 -84 -402 -14 q-178 63 -246 247q-35 92 -34.5 216zM199 1108l272 326h68l274 -328l-12 -23h-160l-137 107l-137 -107h-158zM266 528q150 0 223.5 23.5t112.5 61.5t39 95.5t-30.5 94.5t-89 37t-98.5 -18.5t-73 -55.5q-72 -84 -84 -238z" />
+<glyph unicode="&#xeb;" horiz-adv-x="927" d="M71.5 486q0.5 124 37 219.5t98.5 158.5q123 131 307 131q135 0 227 -71q95 -76 95 -199q0 -63 -21.5 -123.5t-83.5 -109.5q-139 -111 -455 -115q33 -162 166 -213q47 -18 102.5 -18.5t94.5 9t68 21.5q55 27 77 49l45 -143q-23 -23 -75 -45q-205 -84 -402 -14 q-178 63 -246 247q-35 92 -34.5 216zM217 1282q0 47 32 80t80 33t80.5 -34t32.5 -80t-33.5 -79t-80.5 -33t-79 33t-32 80zM266 528q150 0 223.5 23.5t112.5 61.5t39 95.5t-30.5 94.5t-89 37t-98.5 -18.5t-73 -55.5q-72 -84 -84 -238zM524 1283q0 46 32 79t80 33t81 -34 t33 -80t-34 -79t-81 -33t-79 34t-32 80z" />
+<glyph unicode="&#xec;" horiz-adv-x="548" d="M59 950l21 -123l113 9v-697l-127 -28l22 -111h410v111l-121 32v787l-66 65zM59 1333l123 164l66 -16l233 -305l-82 -89z" />
+<glyph unicode="&#xed;" horiz-adv-x="548" d="M59 950l252 45l66 -65v-787l121 -32v-111h-410l-22 111l127 28v697l-113 -9zM66 1174l235 305l66 16l120 -164l-337 -246z" />
+<glyph unicode="&#xee;" horiz-adv-x="548" d="M-23 1114l256 309h50l256 -307l-11 -16h-137l-135 110l-137 -110h-133zM59 950l252 45l66 -65v-787l121 -32v-111h-410l-22 111l127 28v697l-113 -9z" />
+<glyph unicode="&#xef;" horiz-adv-x="548" d="M-2 1282q0 47 31.5 80t80 33t81 -34t32.5 -80t-33.5 -79t-81 -33t-79 33t-31.5 80zM59 950l252 45l66 -65v-787l121 -32v-111h-410l-22 111l127 28v697l-113 -9zM283 1283q0 46 32.5 79t79.5 33t81 -34t34 -80t-35 -79t-81 -33t-78.5 34t-32.5 80z" />
+<glyph unicode="&#xf0;" horiz-adv-x="1046" d="M72 438q0 190 108 328q115 139 293 139q170 0 260 -94q-45 156 -155 274l-218 -122l-65 116l166 113q-84 63 -207 121l76 182q154 -59 303 -184l219 149l100 -164l-198 -112q188 -229 207 -529v-41q0 -256 -107 -426q-123 -197 -348 -196q-213 0 -330 143 q-104 125 -104 303zM266 438q0 -125 68 -197.5t174 -72.5q195 0 244 274q0 141 -80 222q-68 68 -178 67q-115 0 -175 -90q-53 -78 -53 -203z" />
+<glyph unicode="&#xf1;" horiz-adv-x="1085" d="M59 950q27 4 62 11.5t69.5 13.5t67.5 11t53 9l60 -75q98 76 245 75q213 0 281 -155q23 -53 23 -131v-564l122 -34v-111h-407l-25 111l125 28v539q0 92 -43 126t-106.5 34t-123 -27t-85.5 -53v-615l119 -32v-111h-408l-25 111l130 28v697l-113 -9zM246 1198q0 57 53 115 q66 72 164 71q74 0 176 -59q25 -14 47 -22l2 -7l94 97l115 -136q-43 -47 -89 -79.5t-94 -32.5t-78 12t-57.5 25.5t-54 26t-57.5 12.5q-74 0 -113 -93z" />
+<glyph unicode="&#xf2;" horiz-adv-x="1013" d="M74 502q0 -119 31.5 -212t91.5 -159q121 -139 311 -139q182 0 303 131q131 137 131 375q0 227 -123 362t-311 135q-184 0 -303 -127q-131 -137 -131 -366zM268 485q0 250 135 330q45 27 105 27q111 0 175.5 -95.5t64.5 -265.5t-68 -253t-174.5 -83t-172 85t-65.5 255z M319 1333l123 164l66 -16l233 -307l-82 -89z" />
+<glyph unicode="&#xf3;" horiz-adv-x="1013" d="M74 502q0 119 34.5 211t96.5 155q119 127 303 127q188 0 311 -135t123 -362q0 -238 -131 -375q-121 -131 -303 -131q-190 0 -311 139q-123 138 -123 371zM268.5 480q-0.5 -165 65 -250t172 -85t174.5 83t68 253t-65 265.5t-175 95.5q-117 0 -180 -101q-59 -96 -59.5 -261 zM326 1174l235 305l66 16l123 -164l-340 -248z" />
+<glyph unicode="&#xf4;" horiz-adv-x="1011" d="M74 502q0 119 34.5 211t96.5 155q119 127 303 127q188 0 311 -135t123 -362q0 -238 -131 -375q-121 -131 -303 -131q-190 0 -311 139q-123 138 -123 371zM223 1114l256 309h49l256 -307l-8 -16h-135l-137 110l-137 -110h-134zM268.5 480q-0.5 -165 65 -250t172 -85 t174.5 83t68 253t-65 265.5t-175 95.5q-117 0 -180 -101q-59 -96 -59.5 -261z" />
+<glyph unicode="&#xf5;" horiz-adv-x="1011" d="M74 502q0 119 34.5 211t96.5 155q119 127 303 127q188 0 311 -135t123 -362q0 -238 -131 -375q-121 -131 -303 -131q-190 0 -311 139q-123 138 -123 371zM193 1196q0 57 53 115q70 74 164 73q72 0 176 -59q27 -14 49 -22l2 -7l94 95l115 -136q-45 -47 -89 -78.5 t-94.5 -31.5t-80 11t-56.5 26q-68 37 -112.5 37t-72.5 -29t-38 -64zM268.5 480q-0.5 -165 65 -250t172 -85t174.5 83t68 253t-65 265.5t-175 95.5q-117 0 -180 -101q-59 -96 -59.5 -261z" />
+<glyph unicode="&#xf6;" horiz-adv-x="1011" d="M74 502q0 119 34.5 211t96.5 155q119 127 303 127q188 0 311 -135t123 -362q0 -238 -131 -375q-121 -131 -303 -131q-190 0 -311 139q-123 138 -123 371zM246 1282q0 47 31.5 80t80 33t81 -34t32.5 -80t-34 -79t-81 -33t-78.5 33t-31.5 80zM268.5 480q-0.5 -165 65 -250 t172 -85t174.5 83t68 253t-65 265.5t-175 95.5q-117 0 -180 -101q-59 -96 -59.5 -261zM553 1283q0 46 31.5 79t80 33t81 -34t32.5 -80t-33.5 -79t-81 -33t-79 34t-31.5 80z" />
+<glyph unicode="&#xf7;" horiz-adv-x="858" d="M92 520v156h674v-156h-674zM328 284q0 46 31.5 78.5t79.5 32.5t81 -33.5t33 -79.5t-34 -79t-81 -33t-78.5 34t-31.5 80zM328 915.5q0 47.5 31.5 80t79.5 32.5t81 -33.5t33 -80t-34 -79t-81 -32.5t-78.5 32.5t-31.5 80z" />
+<glyph unicode="&#xf8;" horiz-adv-x="1011" d="M74 498q0 231 131 370q119 127 303 127q61 0 125 -18l108 237h174l-2 -26l-131 -291q158 -139 158 -399q0 -238 -129 -375q-123 -131 -303 -131q-61 0 -127 18l-94 -211h-168l-6 27l120 266q-160 137 -159 406zM268 493.5q0 -147.5 43 -227.5l256 563q-29 8 -59 9 q-119 0 -179.5 -98.5t-60.5 -246zM446 154q25 -8 62 -9q104 0 170.5 83t66.5 240t-47 245z" />
+<glyph unicode="&#xf9;" horiz-adv-x="1044" d="M25 950l20 -119h113v-501q0 -170 98 -260q86 -78 229 -78q133 0 230 92q33 -92 139 -92q76 0 133 57l-29 92l-36 -4q-37 0 -37 68v723l-60 69l-250 -47l19 -119h106v-575q-18 -47 -77 -80q-53 -29 -95.5 -29t-74 7.5t-56.5 29.5q-55 53 -55 189v555l-63 67zM236 1333 l120 164l66 -16l235 -307l-84 -89z" />
+<glyph unicode="&#xfa;" horiz-adv-x="1044" d="M25 950l254 45l63 -67v-555q0 -193 113 -217q31 -8 58.5 -8.5t55 7t54.5 21.5q59 33 77 80v575h-106l-19 119l250 47l60 -69v-723q0 -68 37 -68l36 4l29 -92q-57 -57 -133 -57q-106 0 -139 92q-96 -92 -230 -92q-225 0 -301 184q-27 63 -26 154v501h-113zM305 1174 l236 305l65 16l123 -164l-340 -248z" />
+<glyph unicode="&#xfb;" horiz-adv-x="1044" d="M25 950l254 45l63 -67v-555q0 -193 113 -217q31 -8 58.5 -8.5t55 7t54.5 21.5q59 33 77 80v575h-106l-19 119l250 47l60 -69v-723q0 -68 37 -68l36 4l29 -92q-57 -57 -133 -57q-106 0 -139 92q-96 -92 -230 -92q-225 0 -301 184q-27 63 -26 154v501h-113zM201 1114 l256 309h49l256 -307l-10 -16h-138l-135 110l-137 -110h-133z" />
+<glyph unicode="&#xfc;" horiz-adv-x="1044" d="M25 950l254 45l63 -67v-555q0 -193 113 -217q31 -8 58.5 -8.5t55 7t54.5 21.5q59 33 77 80v575h-106l-19 119l250 47l60 -69v-723q0 -68 37 -68l36 4l29 -92q-57 -57 -133 -57q-106 0 -139 92q-96 -92 -230 -92q-225 0 -301 184q-27 63 -26 154v501h-113zM256 1282 q0 47 31.5 80t80 33t81 -34t32.5 -80t-33.5 -79t-81 -33t-79 33t-31.5 80zM563 1283q0 46 32 79t80 33t80.5 -34t32.5 -80t-33.5 -79t-80.5 -33t-79 34t-32 80z" />
+<glyph unicode="&#xfd;" horiz-adv-x="983" d="M2 979l254 16l276 -829l259 686h-107l-14 125l248 18l53 -69q-184 -522 -329.5 -896t-169 -422t-54.5 -87q-72 -84 -185 -84q-90 0 -182 82l76 141q57 -70 121 -70q66 0 112 123q14 35 27 66l45 121l-332 952h-82zM283 1174l235 305l66 16l123 -164l-340 -248z" />
+<glyph unicode="&#xfe;" horiz-adv-x="1007" d="M8 1466l260 39l62 -65v-500q86 55 188.5 55t176 -34.5t126.5 -98.5q113 -135 113 -356q0 -279 -152 -412q-117 -102 -286 -102q-102 0 -170 33q4 -66 4 -93v-329l245 -49v-113h-530l-14 110l112 27v1774l-116 -9zM330 197q18 -20 63 -36t90 -16t88 15.5t80 56.5 q88 90 88 277q0 172 -75 264q-62 80 -168 80q-49 0 -95.5 -19.5t-70.5 -48.5v-573z" />
+<glyph unicode="&#xff;" horiz-adv-x="978" d="M0 979l248 16l276 -829l264 694h-108l-14 117l249 18l52 -69q-164 -463 -284 -769.5t-158 -403.5t-61.5 -145t-53.5 -87q-72 -84 -185 -84q-90 0 -182 82l76 141q57 -70 121 -70q66 0 112 123q14 35 27 66l45 121l-332 960h-76zM215 1282q0 47 32 80t80 33t80.5 -34 t32.5 -80t-33.5 -79t-80.5 -33t-79 33t-32 80zM522 1283q0 46 32 79t80 33t81 -34t33 -80t-34 -79t-81 -33t-79 34t-32 80z" />
+<glyph unicode="&#x152;" horiz-adv-x="1787" d="M88 705q0 303 143 499q156 213 435 213l55 -2h936l41 -385h-129l-78 209h-381v-430h324v-176h-324v-457h401l72 207h129l-41 -383h-872q-70 -8 -133 -8q-279 0 -435 213q-143 197 -143 500zM303 700q0 -215 111 -370q113 -162 293 -162q133 0 200 72v923 q-96 78 -199.5 78t-178 -45t-123.5 -119q-102 -152 -103 -377z" />
+<glyph unicode="&#x153;" horiz-adv-x="1587" d="M74 498q0 233 131 370q119 127 303 127q219 0 342 -174q63 86 153.5 130t172 44t140 -18.5t101.5 -52.5q96 -76 96 -203q0 -145 -104 -229q-139 -111 -455 -115q33 -162 166 -213q47 -18 102.5 -18.5t94.5 9t67 21.5q55 27 78 49l45 -143q-23 -23 -75 -45 q-109 -45 -215 -45q-248 0 -373 168q-61 -84 -149.5 -126t-185.5 -42t-176 35.5t-136 103.5q-123 137 -123 367zM268.5 480q-0.5 -165 65 -250t172 -85t174.5 83t68 253t-65 265.5t-175 95.5q-117 0 -180 -101q-59 -96 -59.5 -261zM944 528q150 0 223.5 23.5t112.5 61.5 t39 95.5t-31 94.5t-89 37t-98 -18.5t-73 -55.5q-72 -84 -84 -238z" />
+<glyph unicode="&#x2000;" horiz-adv-x="971" />
+<glyph unicode="&#x2001;" horiz-adv-x="1942" />
+<glyph unicode="&#x2002;" horiz-adv-x="971" />
+<glyph unicode="&#x2003;" horiz-adv-x="1942" />
+<glyph unicode="&#x2004;" horiz-adv-x="647" />
+<glyph unicode="&#x2005;" horiz-adv-x="485" />
+<glyph unicode="&#x2006;" horiz-adv-x="323" />
+<glyph unicode="&#x2007;" horiz-adv-x="323" />
+<glyph unicode="&#x2008;" horiz-adv-x="242" />
+<glyph unicode="&#x2009;" horiz-adv-x="388" />
+<glyph unicode="&#x200a;" horiz-adv-x="107" />
+<glyph unicode="&#x2010;" horiz-adv-x="817" d="M119 500v125l24 28h543q12 0 12 -16v-137h-579z" />
+<glyph unicode="&#x2011;" horiz-adv-x="817" d="M119 500v125l24 28h543q12 0 12 -16v-137h-579z" />
+<glyph unicode="&#x2012;" horiz-adv-x="817" d="M119 500v125l24 28h543q12 0 12 -16v-137h-579z" />
+<glyph unicode="&#x2013;" horiz-adv-x="987" d="M111 616v154h759v-154h-759z" />
+<glyph unicode="&#x2014;" horiz-adv-x="1294" d="M111 616v154h1067v-154h-1067z" />
+<glyph unicode="&#x2018;" horiz-adv-x="411" d="M78 1196q0 68 26.5 151t73.5 152l113 -33l8 -28l-49 -234l110 -209l-198 -92q-84 135 -84 293z" />
+<glyph unicode="&#x2019;" horiz-adv-x="407" d="M61 985v29l103 209l-53 235l215 39q23 -90 22.5 -156.5t-18 -130t-43.5 -116.5q-49 -100 -119 -170z" />
+<glyph unicode="&#x201a;" horiz-adv-x="434" d="M74 -199l84 213l-76 230l203 59q10 -16 29.5 -72.5t19.5 -126t-16.5 -128t-43.5 -107.5q-45 -92 -108 -156l-92 64v24z" />
+<glyph unicode="&#x201c;" horiz-adv-x="684" d="M90 1083q0 207 121 418l125 -61v-29l-62 -209l54 -276l-215 -43q-2 8 -5.5 31.5t-7.5 52.5q-10 76 -10 116zM364.5 1084.5q0.5 66.5 14.5 130t35 116.5q35 92 90 170l106 -61v-29l-61 -209l53 -235l-215 -39q-23 90 -22.5 156.5z" />
+<glyph unicode="&#x201d;" horiz-adv-x="673" d="M80 924v28l61 209l-53 236l215 39q23 -90 23 -157t-14.5 -130.5t-35.5 -116.5q-35 -92 -90 -170zM354 924v28l62 209l-54 277l216 43q2 -8 5 -32t7 -52q10 -76 10 -117q0 -207 -121 -418z" />
+<glyph unicode="&#x201e;" horiz-adv-x="708" d="M68 -223l84 192l-76 230l194 59q8 -18 26.5 -83.5t18.5 -131.5t-15 -115t-40 -94q-45 -82 -108 -145l-84 63v25zM330 -246l104 215l-76 291l203 59q47 -141 47 -272q0 -150 -104 -305q-31 -45 -62 -74l-112 62v24z" />
+<glyph unicode="&#x2022;" horiz-adv-x="530" d="M88 784q0 74 51 126.5t125 52.5t126 -52.5t52 -126.5t-52 -125t-126 -51t-125 51t-51 125z" />
+<glyph unicode="&#x202f;" horiz-adv-x="388" />
+<glyph unicode="&#x2039;" horiz-adv-x="714" d="M23 590v53l579 442l10 -4v-186l-366 -281l366 -278v-186l-12 -7z" />
+<glyph unicode="&#x203a;" horiz-adv-x="716" d="M102 150v186l367 278l-367 281v186l11 4l579 -442v-53l-577 -447z" />
+<glyph unicode="&#x205f;" horiz-adv-x="485" />
+<glyph unicode="&#x20ac;" horiz-adv-x="1165" d="M63 455v155h117q-2 20 -2 39v64h-115v155h125q35 283 179.5 417t375.5 134q188 0 306 -35l38 -360h-139l-80 201q-49 18 -126.5 18t-141 -28.5t-104.5 -79.5q-76 -96 -95 -267h521v-155h-529l2 -103h527v-155h-510q27 -141 102 -209q86 -78 244 -78q88 0 154.5 26.5 t99.5 51.5l59 -162q-129 -92 -348 -92q-432 0 -524 463h-136z" />
+<glyph unicode="&#xe000;" horiz-adv-x="993" d="M0 0v993h993v-993h-993z" />
+</font>
+</defs></svg> 
\ No newline at end of file
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/fonts/mavenpro.css
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/fonts/mavenpro.css	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/fonts/mavenpro.css	(revision 47450)
@@ -0,0 +1,12 @@
+/* Copyright (C) YOOtheme GmbH, YOOtheme Proprietary Use License (http://www.yootheme.com/license) */
+
+@font-face {
+	font-family: 'MavenProRegular';
+	src: url('maven_pro_regular-webfont.eot');
+	src: url('maven_pro_regular-webfont.eot?#iefix') format('embedded-opentype'),
+		 url('maven_pro_regular-webfont.woff') format('woff'),
+		 url('maven_pro_regular-webfont.ttf') format('truetype'),
+		 url('maven_pro_regular-webfont.svg#MavenProRegular') format('svg');
+	font-weight: normal;
+	font-style: normal;
+}
\ No newline at end of file
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/index.jsp
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/index.jsp	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/index.jsp	(revision 47450)
@@ -0,0 +1,4 @@
+
+<% 
+response.sendRedirect("welcome");
+%>
\ No newline at end of file
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/js/ddmenu.js
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/js/ddmenu.js	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/js/ddmenu.js	(revision 47450)
@@ -0,0 +1,16 @@
+var ddmenuOptions=
+{
+	menuId: "ddmenu",
+	linkIdToMenuHtml: null,
+	effect: "slide",
+	delay: 50,
+	//dl114
+/*	license: "2c7u1" */
+	//production
+	license: "2c1o2"
+};
+
+var ddmenu=new McDdMenu(ddmenuOptions);
+
+/* Menucool Drop Down Menu v2013.3.18 Copyright www.menucool.com */
+function McDdMenu(d){var o=function(a,b){return a.getElementsByTagName(b)},k=function(b,d){if(window.getComputedStyle)var c=window.getComputedStyle(b,null);else if(b.currentStyle)c=b.currentStyle;else c=b[a];return c[d]},e=function(a,c,b){if(a.addEventListener)a.addEventListener(c,b,false);else a.attachEvent&&a.attachEvent("on"+c,b)},t=function(a){if(a&&a.stopPropagation)a.stopPropagation();else window.event.cancelBubble=true},F=function(b){var a=b?b:window.event;a.preventDefault&&a.preventDefault();a.returnValue=false;return false},b,l,y,a,c,i,g,f,n,x=document,L=["$1$2$3","$1$2$3","$1$24","$1$23","$1$22"];mcDdl=0;var K=[/(?:.*\.)?(\w)([\w\-])[^.]*(\w)\.[^.]+$/,/.*([\w\-])\.(\w)(\w)\.[^.]+$/,/^(?:.*\.)?(\w)(\w)\.[^.]+$/,/.*([\w\-])([\w\-])\.com\.[^.]+$/,/^(\w)[^.]*(\w)+$/],D=function(){var c=50,b=navigator.userAgent,a;if((a=b.indexOf("MSIE "))!=-1)c=parseInt(b.substring(a+5,b.indexOf(".",a)));return c},B=function(){b={a:d.license,b:d.menuId,c:d.effect=="none"?0:1,d:d.delay,e:d.linkIdToMenuHtml}},j=D(),m=function(d){var a=d.childNodes,c=[];if(a)for(var b=0,e=a.length;b<e;b++)a[b].nodeType==1&&c.push(a[b]);return c},C=function(b){var a=[],c=b.length;while(c--)a.push(String.fromCharCode(b[c]));return a.join("")},z=function(a){return a.replace(/(?:.*\.)?(\w)([\w\-])?[^.]*(\w)\.[^.]*$/,"$1$3$2")},L_1=function(e,c){var d=function(a){for(var c=a.substr(0,a.length-1),e=a.substr(a.length-1,1),d="",b=0;b<c.length;b++)d+=c.charCodeAt(b)-e;return unescape(d)},a=z(document.domain)+Math.random(),b=d(a);l="%66%75%6E%63%74%69%6F%6E%20%71%51%28%73%2C%6B%29%7B%76%61%72%20%72%3D%27%27%3B%66%6F%72%28%76%61%72%20%69%";if(b.length==39)try{a=(new Function("$","_",w(l))).apply(this,[b,c]);l=a}catch(f){}},M=function(a,b){return b?x[a](b):x[a]},w=function(d,b){for(var c=[],a=0;a<d.length;a++)c[c.length]=String.fromCharCode(d.charCodeAt(a)-(b&&b>7?b:3));return c.join("")},I=function(c,a){var b=function(b){var a=b.charCodeAt(0).toString();return a.substring(a.length-1)};return c+b(a[2])+a[0]+b(a[1])},G=function(a,c){var b=a.length;while(b--)if(a[b]===c)return true;return false},H=function(a,c){var b=false;if(a.className)b=G(a.className.split(" "),c);return b},h=function(a,b,c){if(!H(a,b))if(a.className=="")a.className=b;else if(c)a.className=b+" "+a.className;else a.className+=" "+b},p=function(c,e){if(c.className){for(var d="",b=c.className.split(" "),a=0,f=b.length;a<f;a++)if(b[a]!==e)d+=b[a]+" ";c.className=d}},s=function(a){this.a=null;this.b=a;this.c=null;this.d=null;this.e=null;this.f();this.g()},v=function(a){this.o(a);this.p(a)};s.prototype={j:function(){var a=this;clearTimeout(a.d);j<9&&clearTimeout(a.e);a.d=setTimeout(function(){a.l()},110)},k:function(){h(this.b,"over");this.c[a][c]="block";b.c&&this.m(this.c.mh,this.c.mj)},f:function(){if(j<8)this.b[a][c]="inline";var f=m(this.b);if(f.length)if(f[0][n]!="A"){var b=document.createElement("a");b.setAttribute("href","#");e(b,"click",function(a){t(a);return F(a)});this.b.insertBefore(b,this.b.firstChild);var d;while(d=b.nextSibling){if(d.nodeType==1&&d[n]=="DIV")break;b.appendChild(d)}this.a=b}else this.a=f[0]},m:function(b,h){var i=this;clearTimeout(i.e);var c=this.c[f];if(c<b){var e=Math.ceil((b-c)*.3);if(e<2)e=2;var d=c+e;if(d>b)d=b;this.c[a][g]=d-h+"px";this.e=setTimeout(function(){i.m(b,h)},16)}else delete this.e},g:function(){var d=m(this.b),s=this;if(d.length==2){h(d[0],"arrow",1);h(d[1],"drop",1);this.h();var o=parseInt(k(d[1],"borderTopWidth")),t=parseInt(k(d[1],"borderBottomWidth")),n=k(d[1],"width");d[1][a][i]="3000px";d[1][a].top=d[0][f]-o+"px";d[1][a].overflow="hidden";var l=document.createElement("div");l[a][c]="block";l[a].position="relative";l[a].styleFloat="left";l[a].cssFloat="left";d[1].insertBefore(l,d[1].firstChild);var r;while(r=l.nextSibling)l.appendChild(r);if(n=="auto"||parseInt(n)<l.offsetWidth+1)d[1][a][i]=l.offsetWidth+(j==9?1:j==7?4:0)+"px";else d[1][a][i]=n;l[a].top="auto";l[a].bottom="0";this.c=d[1];this.c.mj=o+t;this.c.mh=this.c[f];var q=this.c.firstChild.offsetTop,u=this.c.mh-q-this.c.firstChild[f]-this.c.mj;this.c.mi=this.c.mh-this.c.mj;this.c[a].paddingTop="0px";this.c[a].paddingBottom="0px";this.c[a][g]=b.c?"0px":this.c.mi+"px";this.c[a][c]="none";l[a].position="absolute";l[a].paddingTop=q+"px";l[a].paddingBottom=u+"px";e(this.b,"mouseover",function(a){s.i(a)});e(this.b,"mouseout",function(a){s.j(a)})}else{e(this.b,"mouseover",function(){h(this,"over")});e(this.b,"mouseout",function(){p(this,"over")})}},h:function(){for(var d=o(this.b,"div"),b=0,e=d.length;b<e;b++)d[b][a][c]="block"},n:function(h,f){var e=this;clearTimeout(e.e);var d=parseInt(this.c[a][g]);if(d>0){var b=Math.floor(d*.7);if(d-b<6)b=d-6;if(b<0)b=0;this.c[a][g]=b+"px";this.e=setTimeout(function(){e.n(h,f)},16)}else{this.c[a][c]="none";delete this.e}},i:function(c){var a=this;clearTimeout(a.d);a.d=setTimeout(function(){a.k()},b.d);t(c)},l:function(){p(this.b,"over");delete this.d;var d=this;if(b.c)d.n(d.c.mh,d.c.mj);else d.c[a][c]="none"}};v.prototype={o:function(a){L_1(a,b.a)},p:function(a){c="display";i="width";g="height";(new Function("a","b","c","d","e","f","g","h","i","j","k","z","y",function(c){for(var b=[],a=0,d=c.length;a<d;a++)b[b.length]=String.fromCharCode(c.charCodeAt(a)-4);return b.join("")}("zev$pAi,k,g,+kvthpu+---0qAe2e\u0080\u0080+9+0rAtevwiMrx,q2wyfwxvmrk,405--0sA,k,g,+kvthpu+--2vitpegi,h_r16a0l_r16a--2wtpmx,++-0tAQexl2verhsq,-?mj,%p\u0080\u0080p2wyfwxvmrk,406-AA+ps+\u0080\u0080qAAj,r/+g+0s--qgHhpA5?ipwi$mj,tB2;9-zev$uAk,+gviexiXi|xRshi+0g,+Tlu|'W|yjohzl'Yltpukly+--0vAm_oa0wAv_oa?mj,tB2<9**w2rshiReqi%A+FSH]+-w_oa2mrwivxFijsvi,u0w-?ipwi$w2mrwivxFijsvi,u0v-?\u0081jsv,zev$xA4?x@~2pirkxl?x//-mj,~_xa2rshiReqiAA+PM+-ri{$},~_xa-?"))).apply(this,[b,C,w,K,z,I,M,L,a,null,y,m(a),s])}};var A=function(b){var a;if(window.XMLHttpRequest)a=new XMLHttpRequest;else a=new ActiveXObject("Microsoft.XMLHTTP");a.onreadystatechange=function(){if(a.readyState==4&&a.status==200){var c=a.responseText,e=/^[\s\S]*<body[^>]*>([\s\S]+)<\/body>[\s\S]*$/i;if(e.test(c))c=c.replace(e,"$1");c=c.replace(/^\s+|\s+$/g,"");var d=document.createElement("div");d.style.padding="0";d.style.margin="0";b.parentNode.insertBefore(d,b);d.innerHTML=c;b.style.display="none";q()}};a.open("GET",b.href,true);a.send()},r=function(){if(b.e){var a=document.getElementById(b.e);if(a)A(a);else alert('Cannot find the anchor (id="'+b.e+'")')}else q()},q=function(){var b=document.getElementById(d.menuId);y="parentNode",a="style",n="nodeName",f="offsetHeight";if(b){b=o(b,"ul");b.length&&new v(b[0])}},E=function(d){var b=false;function a(){if(b)return;b=true;setTimeout(d,4)}if(document.addEventListener)document.addEventListener("DOMContentLoaded",a,false);else if(document.attachEvent){try{var e=window.frameElement!=null}catch(f){}if(document.documentElement.doScroll&&!e){function c(){if(b)return;try{document.documentElement.doScroll("left");a()}catch(d){setTimeout(c,10)}}c()}document.attachEvent("onreadystatechange",function(){document.readyState==="complete"&&a()})}if(window.addEventListener)window.addEventListener("load",a,false);else window.attachEvent&&window.attachEvent("onload",a)};B();var J=document.createElement("nav"),u=o(document,"head");if(!u.length)return;u[0].appendChild(J);E(r);return{init:r}}
\ No newline at end of file
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/homepage.jsp
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/homepage.jsp	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/homepage.jsp	(revision 47450)
@@ -0,0 +1,47 @@
+<%@ page contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<%@ taglib prefix="s" uri="/struts-tags"%>
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title><s:text name="home.title"/></title>
+<link href="jsps/style.css" rel="stylesheet" type="text/css" media="screen" />
+
+ <link href="jsps/favicon.ico" rel="shortcut icon" type="image/x-icon" />
+</head>	
+<body>
+<div id="wrapper">
+	<jsp:include page="menu.jsp"/>
+	<div id="page">
+	<div id="page-bgtop">
+		<div id="middle">
+            <div class="middle-b">
+                <div class="background">
+        			<div id="main">
+                        <div id="main_container" class="clearfix">
+                            <div id="mainmiddle" class="floatbox">
+                                <h1 class="title"><s:text name="homepage.welcome"/></h1>
+                                <div class="entry">
+                                    <s:if test="%{#session.isAdmin != null && #session.isAdmin.equals(\"true\")}">
+                                        <s:text name="homepage.admin.message"/>
+                                    </s:if>
+                                    <s:else>
+                                        <s:text name="homepage.message"/>
+                                    </s:else>
+                                </div>
+                             </div>
+                        </div>
+                    </div>
+                 </div>
+			</div>
+		</div>
+		<div style="clear: both;">&nbsp;</div>
+	</div>
+    <!-- NMI This needs to be the same in all pages and the text is some properties file -->
+    <div id="footer"> 
+		<jsp:include page="footer.jsp"/>
+	</div>
+</div>
+</div>
+</body>
+</html>
\ No newline at end of file
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/table-images/pattern-head.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/table-images/pattern-head.png
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/table-images/pattern-head.png	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/table-images/pattern-head.png	(revision 47450)

Property changes on: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/table-images/pattern-head.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/table-images/gradback.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/table-images/gradback.png
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/table-images/gradback.png	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/table-images/gradback.png	(revision 47450)

Property changes on: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/table-images/gradback.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/table-images/gradhead.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/table-images/gradhead.png
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/table-images/gradhead.png	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/table-images/gradhead.png	(revision 47450)

Property changes on: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/table-images/gradhead.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/table-images/header.jpg
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/table-images/header.jpg
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/table-images/header.jpg	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/table-images/header.jpg	(revision 47450)

Property changes on: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/table-images/header.jpg
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/resetPassword.jsp
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/resetPassword.jsp	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/resetPassword.jsp	(revision 47450)
@@ -0,0 +1,46 @@
+<%@ page contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<%@ taglib prefix="s" uri="/struts-tags"%>
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title><s:text name="forgotPassword.title"/></title>
+<link href="jsps/favicon.ico" rel="shortcut icon" type="image/x-icon" />
+<link href="jsps/style.css" rel="stylesheet" type="text/css" media="screen" />
+</head>
+<body>
+<div id="wrapper">
+	<jsp:include page="menu.jsp"/>
+	<div id="page">
+		<div id="page-bgtop">
+			<div id="middle">
+                <div class="middle-b">
+                    <div class="background">
+                        <div class="main">
+                        <div id="main_container" class="clearfix">
+                                <div id="mainmiddle" class="floatbox">
+                                <h2 class="title"><s:text name="forgotPassword.title"/></h2>
+                                <%--<p class="meta"><a href='<s:url value="/jsps/help.jsp#forgotPassword"/>' target="_blank"><s:text name="help"/></a></p>--%>
+                                <div class="entry">
+                                    <s:form action="resetPassword">
+                                    	<s:text name="resetPassword.securityCode.message" />
+                                        <s:textfield name="securityCode" key="resetPassword.securityCode"/>
+                                        <s:password name="password" key="registration.password"/>
+                                        <s:password name="repassword" key="registration.repassword"/>
+                                        <s:submit/>
+                                    </s:form>
+                                </div>
+								</div>
+                            </div>
+                        </div>
+                    </div>
+                </div>
+            </div>
+		</div>
+		  <div id="footer"> 
+           <jsp:include page="footer.jsp"/>
+        </div>
+	</div>
+</div>
+</body>
+</html>
\ No newline at end of file
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/MenuMatic.css
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/MenuMatic.css	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/MenuMatic.css	(revision 47450)
@@ -0,0 +1,125 @@
+/* Based partially on Matthew Carroll's keyboard accessible flavor of Suckerfish 
+ * Dropdowns by Patrick Griffiths and Dan Webb. 
+ * http://carroll.org.uk/sandbox/suckerfish/bones2.html
+ */
+
+/* ----[ LINKS ]----*/
+
+/* all menu links */
+#nav a, #subMenusContainer a{
+	text-decoration:none;
+	display:block;
+	padding:10px 20px;
+	background-color:#fff ;
+	-moz-border-radius: 7px;
+	-webkit-border-radius: 7px;
+}
+
+/* Just main menu links --[for non-javascript users this applies to submenu links as well]*/
+#nav a{
+	margin:0;
+	float:left;	
+}
+
+/* Just sub menu links */
+#subMenusContainer a, #nav li li a{
+	text-align:left;
+}
+
+/* All menu links on hover or focus */
+#nav a:hover, #nav a:focus, #subMenusContainer a:hover, #subMenusContainer a:focus, #nav a.mainMenuParentBtnFocused, #subMenusContainer a.subMenuParentBtnFocused{
+	background-color:#F6C739 ;
+	color:#FFF;
+}
+
+/* sub menu links on hover or focus */
+#subMenusContainer a:hover, 
+#subMenusContainer a:focus, 
+#nav a.mainMenuParentBtnFocused, 
+#subMenusContainer a.subMenuParentBtnFocused,
+#nav li a:hover,
+#nav li a:focus{
+	background-color:#F6C739 ;
+	color:#FFF;
+}
+
+/* Parent Sub Menu Links ---[javascript users only]*/
+.subMenuParentBtn{ 
+	background: url(../img/arrow_right.gif) right center no-repeat;  
+}
+
+/* Parent Sub Menu Links on hover or focus ---[javascript users only]*/
+.subMenuParentBtnFocused{ 
+	background: url(../img/arrow_right_over.gif) right center no-repeat;  
+}
+
+/* Parent Main Menu Links ---[javascript users only]*/
+.mainMenuParentBtn{	
+	 background: url(../img/arrow_down.gif) right center no-repeat; 
+}
+
+/* Parent Main Menu Links on hover or focus ---[javascript users only]*/
+.mainMenuParentBtnFocused{	
+	background: url(../img/arrow_down_over.gif) right center no-repeat; 
+}
+
+/* ----[ OLs ULs, LIs, and DIVs ]----*/
+
+/* Submenu Outer Wrapper - each submenu is inside a div with this class - javascript users only */
+.smOW{ 
+	display:none; 
+	position: absolute; 
+	overflow:hidden; 
+	/*the 2px left & right padding lets you have a 1px border 
+	  on the ul or ol inside since overflow is set to hidden*/
+	padding:0 2px;
+	margin:0 0 0 -2px;
+}
+
+
+/* All ULs and OLs */
+#nav, #nav ul, #nav ol, #subMenusContainer ul, #subMenusContainer ol { 
+	padding: 0;
+	margin: 0;
+	list-style: none;
+	line-height: 1em;
+}
+
+/* All submenu OLs and ULs */
+#nav ol, #nav ul, #subMenusContainer ul, #subMenusContainer ol {	
+	/*border around submenu goes here*/	 
+	background:#fff;	
+	border:1px solid #C3D46A;
+	left:0;
+}
+
+
+/* List items in main menu --[for non-javascript users this applies to submenus as well]  */
+#nav li { 
+	/*great place to use a background image as a divider*/
+	display:block;
+	list-style:none;
+	position:relative;
+	float:left;
+}
+
+#subMenusContainer li{
+	list-style: none;
+}
+
+/* main menu ul or ol elment */
+#nav{
+	display:block;
+	position: absolute;
+	list-style:none;
+	margin:0 0 0 0;
+	z-index:5;
+	top:15px;
+	left:50%;
+	text-align: center;
+	display:block;
+}
+
+#subMenusContainer{	display:block; 	position:absolute;	top:0;	left:0;	width:100%;	height:0;	overflow:visible;	z-index:1000000000; }
+
+
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/forgotPassword.jsp
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/forgotPassword.jsp	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/forgotPassword.jsp	(revision 47450)
@@ -0,0 +1,43 @@
+<%@ page contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<%@ taglib prefix="s" uri="/struts-tags"%>
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title><s:text name="forgotPassword.title"/></title>
+<link href="jsps/favicon.ico" rel="shortcut icon" type="image/x-icon" />
+<link href="jsps/style.css" rel="stylesheet" type="text/css" media="screen" />
+</head>
+<body>
+<div id="wrapper">
+	<jsp:include page="menu.jsp"/>
+	<div id="page">
+        <div id="page-bgtop">
+             <div id="middle">
+                <div class="middle-b">
+                    <div class="background">
+                        <div id="main">
+                            <div id="main_container" class="clearfix">
+                                <div id="mainmiddle" class="floatbox">
+                                    <h1>Reset your password</h1>
+                                    <s:actionerror/>
+                                    <s:form action="sendPassword">
+                                        <s:textfield name="email" key="registration.email"/>
+                                        <s:submit/>
+                                    </s:form>
+                                    <s:text name="forgotPassword.message"/>
+                                </div>
+                            </div>
+                        </div>
+                    </div>
+                </div>
+            </div>
+        </div>
+        <!-- NMI This needs to be the same in all pages and the text is some properties file -->
+        <div id="footer"> 
+           <jsp:include page="footer.jsp"/>
+        </div>
+	</div>
+</div>
+</body>
+</html>
\ No newline at end of file
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/footer.jsp
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/footer.jsp	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/footer.jsp	(revision 47450)
@@ -0,0 +1,7 @@
+<%@ taglib prefix="s" uri="/struts-tags"%>
+
+<div id="footer-bgcontent">
+	<p>
+		<s:text name="footer.text"/> 
+	</p>
+</div>
\ No newline at end of file
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/table-images/patternb-head.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/table-images/patternb-head.png
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/table-images/patternb-head.png	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/table-images/patternb-head.png	(revision 47450)

Property changes on: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/table-images/patternb-head.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/table-images/patternb.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/table-images/patternb.png
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/table-images/patternb.png	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/table-images/patternb.png	(revision 47450)

Property changes on: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/table-images/patternb.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/table-images/botright.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/table-images/botright.png
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/table-images/botright.png	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/table-images/botright.png	(revision 47450)

Property changes on: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/table-images/botright.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/java/eu/dnetlib/validator/admin/api/impls/ValidatorAdminApiImpl.java
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/java/eu/dnetlib/validator/admin/api/impls/ValidatorAdminApiImpl.java	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/java/eu/dnetlib/validator/admin/api/impls/ValidatorAdminApiImpl.java	(revision 47450)
@@ -0,0 +1,499 @@
+package eu.dnetlib.validator.admin.api.impls;
+
+import java.io.BufferedReader;
+import java.io.StringReader;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.Properties;
+
+import org.apache.log4j.Logger;
+import org.springframework.transaction.annotation.Propagation;
+import org.springframework.transaction.annotation.Transactional;
+
+import eu.dnetlib.domain.functionality.validator.Rule;
+import eu.dnetlib.domain.functionality.validator.RuleSet;
+import eu.dnetlib.domain.functionality.validator.StoredJob;
+import eu.dnetlib.validator.admin.actions.rules.FieldPair;
+import eu.dnetlib.validator.admin.api.ValidatorAdminAPI;
+import eu.dnetlib.validator.admin.api.ValidatorAdminException;
+import eu.dnetlib.validator.admin.constants.FieldNames;
+import eu.dnetlib.validator.admin.constants.FieldsAndDetails;
+import eu.dnetlib.validator.admin.constants.TypesAndTableNames;
+import eu.dnetlib.validator.admin.constants.fielddetails.FieldDetails;
+import eu.dnetlib.validator.commons.dao.jobs.JobsDAO;
+import eu.dnetlib.validator.commons.dao.rules.RulesDAO;
+import eu.dnetlib.validator.commons.dao.rules.RulesetsDAO;
+import eu.dnetlib.validator.commons.dao.users.UsersDAO;
+import eu.dnetlib.validator.commons.email.Emailer;
+
+
+/**
+ * 
+ * @author Nikon Gasparis
+ *
+ */
+
+@Transactional(propagation = Propagation.REQUIRED)
+public class ValidatorAdminApiImpl implements ValidatorAdminAPI {
+	
+	private JobsDAO jobsDao;
+	private RulesetsDAO rulesetsDao;
+	private RulesDAO rulesDao;
+	private UsersDAO usersDao;
+
+	private EmailBuilder emailBuilder;
+	
+	private Emailer emailer = null;
+	private List<String> masterAdmins = new ArrayList<String>();
+	private List<String> secondaryAdmins = new ArrayList<String>();
+	private String registrationsReportEmail;
+	private static Logger logger = Logger.getLogger(ValidatorAdminApiImpl.class);
+
+	public void start(){
+	}
+
+	@Override
+	public Rule getRule(int ruleId) throws ValidatorAdminException {
+		try {
+			logger.debug("getting rule with id: "+ruleId);
+			return rulesDao.get(ruleId);
+		} catch (Exception e) {
+			logger.error("Error getting rule ", e);
+			throw new ValidatorAdminException(e);
+		}
+		
+	}
+		
+	@Override
+	public List<FieldPair> getRuleValuePairs(Rule rule) throws ValidatorAdminException {
+		try {
+			logger.debug("getting rule value pairs");
+			boolean forUsage = false;
+			if( rule.getJob_type().equals("usage"))
+				forUsage = true;
+			List<String> labels = this.getRuleLabels(rule.getType(), forUsage, rule.isFor_cris());
+
+			List<FieldPair> ruleValues = new ArrayList<FieldPair>();
+			for (String fieldName : labels) {
+				FieldPair pair = new FieldPair();
+//				String fieldValue=null;
+				pair.setFieldName(fieldName);
+				if (fieldName.split("\\.")[1].equals(FieldNames.RULE_NAME)) {
+					pair.setFieldValue(rule.getName());
+				}
+				else if (fieldName.split("\\.")[1].equals(FieldNames.RULE_DESCRIPTION)) {
+					pair.setFieldValue(rule.getDescription());
+				}
+				else if (fieldName.split("\\.")[1].equals(FieldNames.RULE_MANDATORY)) {
+					pair.setFieldValue(Boolean.toString(rule.isMandatory()));
+				}				
+				else if (fieldName.split("\\.")[1].equals(FieldNames.RULE_WEIGHT)) {
+					pair.setFieldValue(Integer.toString(rule.getWeight()));
+				}
+				else if (fieldName.split("\\.")[1].equals(FieldNames.RULE_PROVIDER_INFORMATION)) {
+					pair.setFieldValue(rule.getProvider_information());
+				}
+				else{
+					pair.setFieldValue(rule.getConfiguration().getProperty(fieldName.split("\\.")[1]));
+				}				
+				logger.debug("getting rule value pairs-addpair: "+fieldName+"-"+rule.getConfiguration().getProperty(fieldName.split("\\.")[1]));
+				ruleValues.add(pair);
+			}
+			return ruleValues;
+		} catch (Exception e) {
+			logger.error("Error getting ruleValue pairs", e);
+			throw new ValidatorAdminException(e);
+		}
+
+	}	
+
+	
+	@Override
+	public List<Rule> getAllRules() throws ValidatorAdminException {
+		try {
+			logger.debug("getting all rules ");
+			return rulesDao.getAllRules();
+		} catch (Exception e) {
+			logger.error("Error getting all rules  to rule pair", e);
+			throw new ValidatorAdminException(e);
+		}	
+	}	
+	
+	@Override
+	@Transactional(propagation = Propagation.REQUIRED)
+	public String storeRule(Rule rule, String[] inputs, Boolean updateExisting) throws ValidatorAdminException {
+		try {
+			logger.debug("edit rule using the inputs of the user");
+			List<String> fields = new ArrayList<String>();
+			List<FieldDetails> generalFields = FieldsAndDetails.getFieldsAndDetails("Rules");
+			List<FieldDetails> usageFields = FieldsAndDetails.getFieldsAndDetails("usage_rules");
+			List<FieldDetails> crisFields = FieldsAndDetails.getFieldsAndDetails("cris_rules");
+			List<FieldDetails> subFields = FieldsAndDetails.getFieldsAndDetails(TypesAndTableNames.getTableNameOfType(rule.getType()));
+			for (FieldDetails field : generalFields) {
+				if (field.isForDet() && !field.getFieldName().equals(FieldNames.RULE_TYPE) && !field.getFieldName().equals(FieldNames.RULE_JOBTYPE))
+					fields.add(field.getFieldName());
+			}
+			if (subFields != null) {
+				for (FieldDetails field : subFields) {
+					if (field.isForDet())
+						fields.add(field.getFieldName());
+				}
+			}
+			if (rule.getJob_type().toLowerCase().contains("usage")) {
+				for (FieldDetails field : usageFields) {
+					if (field.isForDet())
+						fields.add(field.getFieldName());
+				}
+			}
+			if (rule.isFor_cris()) {
+				for (FieldDetails field : crisFields) {
+					if (field.isForDet())
+						fields.add(field.getFieldName());
+				}
+			}
+			Properties pros = new Properties();
+			logger.debug("Fields: " + fields);
+			for (int i = 0; i < inputs.length; i++) {
+				logger.debug("input-" + i + " : "+ inputs[i]);
+			}
+			for (int i = 0; i < inputs.length; i++) {
+				logger.debug("Field: " + fields.get(i) + " - input: " + inputs[i]);
+				if (fields.get(i).equals(FieldNames.RULE_NAME)) {
+					rule.setName(inputs[i]);
+				}
+				else if (fields.get(i).equals(FieldNames.RULE_DESCRIPTION)) {
+					rule.setDescription(inputs[i]);
+				}
+				else if (fields.get(i).equals(FieldNames.RULE_MANDATORY)) {
+					rule.setMandatory(Boolean.parseBoolean(inputs[i]));
+				}				
+				else if (fields.get(i).equals(FieldNames.RULE_WEIGHT)) {
+					rule.setWeight(Integer.parseInt(inputs[i]));
+				}
+				else if (fields.get(i).equals(FieldNames.RULE_PROVIDER_INFORMATION)) {
+					rule.setProvider_information(inputs[i]);
+				}
+				else if (fields.get(i).equals(FieldNames.RULE_CRIS_ENTITY)) {
+					rule.setEntity_type(inputs[i]);
+				}
+				else{
+					if (fields.get(i).equals(FieldNames.RULE_VOCABULARY_WORDS)) {
+						String words = "";
+						BufferedReader bf = new BufferedReader(new StringReader(inputs[i]));
+						String line;
+						while ((line = bf.readLine()) != null) {
+							words += ",";
+							words += line;
+						}
+						words = words.substring(1);
+						pros.setProperty(fields.get(i), words);
+					} else if (fields.get(i).equals(FieldNames.RULE_NOTCONNFUSEDFIELDS)) {
+						String ncfields = "";
+						BufferedReader bf = new BufferedReader(new StringReader(inputs[i]));
+						String line;
+						while ((line = bf.readLine()) != null)
+							ncfields += line + "\n";
+						ncfields = ncfields.substring(0, ncfields.lastIndexOf('\n'));
+						pros.setProperty(fields.get(i), ncfields);
+					
+					}else  
+						pros.setProperty(fields.get(i), inputs[i]);
+				}
+			}
+			rule.setConfiguration(pros);
+			
+			if (!updateExisting)
+				rule.setId(-1);
+			rulesDao.save(rule);
+			return null;
+
+		} catch (Exception e) {
+			logger.error("Error storing rule", e);
+			throw new ValidatorAdminException(e);
+		}
+	}
+		
+	@Override
+	public List<String> getRuleLabels(String ruleType, Boolean forUsage, Boolean forCris) throws ValidatorAdminException {
+		try {
+			logger.debug("getting rule labels for type " + ruleType);
+			List<String> labels = new ArrayList<String>();
+			List<FieldDetails> generalFields = FieldsAndDetails.getFieldsAndDetails("Rules");
+			List<FieldDetails> usageFields = FieldsAndDetails.getFieldsAndDetails("usage_rules");
+			List<FieldDetails> crisFields = FieldsAndDetails.getFieldsAndDetails("cris_rules");
+			List<FieldDetails> subFields = FieldsAndDetails.getFieldsAndDetails(TypesAndTableNames.getTableNameOfType(ruleType));
+			for (FieldDetails field : generalFields) {
+				if (field.isForDet() && !field.getFieldName().equals(FieldNames.RULE_TYPE) && !field.getFieldName().equals(FieldNames.RULE_JOBTYPE))
+					labels.add(field.getTableName() + "." + field.getFieldName());
+			}
+			if (subFields != null) {
+				for (FieldDetails field : subFields) {
+					if (field.isForDet())
+						labels.add(field.getTableName() + "." + field.getFieldName());
+				}
+			}
+			if (forUsage) {
+				for (FieldDetails field : usageFields) {
+					if (field.isForDet())
+						labels.add(field.getTableName().split("_")[1] + "." + field.getFieldName());
+				}
+			}
+			if (forCris) {
+				for (FieldDetails field :crisFields) {
+					if (field.isForDet())
+						labels.add(field.getTableName().split("_")[1] + "." + field.getFieldName());
+				}
+			}
+			return labels;
+		}catch (Exception e) {
+			logger.error("getting rule labels for type " + ruleType, e);
+			throw new ValidatorAdminException(e);
+		}			
+	}
+	
+	@Override
+	public List<RuleSet> getRuleSets() throws ValidatorAdminException {
+		try {
+			logger.debug("Getting all rule sets");
+			return rulesetsDao.getRuleSets();
+		} catch (Exception e) {
+			logger.error("Error getting all rule sets", e);
+			throw new ValidatorAdminException(e);
+		}
+	}
+	
+	@Override
+	public String deleteRule(int ruleId) throws ValidatorAdminException {
+		try {
+			logger.debug("deleting rule with id "+ruleId);
+			return rulesDao.delete(ruleId);
+		}
+		catch (Exception e) {
+			logger.error("Error deleting rule with id "+ruleId, e);
+			throw new ValidatorAdminException(e);
+		}
+	}
+	
+	@Override
+	public RuleSet getRuleSet(int setId) throws ValidatorAdminException {
+		try {
+			logger.debug("getting ruleSet with id: " + setId);
+			return rulesetsDao.get(setId);
+		} catch (Exception e) {
+			logger.error("Error getting ruleSet with id: " + setId, e);
+			throw new ValidatorAdminException(e);
+		}
+	}
+	
+	@Override
+	public void storeRuleSet(RuleSet ruleSet, boolean updateExisting) throws ValidatorAdminException {
+		try {
+			if (updateExisting)
+				logger.debug("editing rule set " + ruleSet.getId());
+			else
+				logger.debug("creating rule set " + ruleSet.getName());
+			
+			rulesetsDao.save(ruleSet);
+			
+			} catch (Exception e) {
+				logger.error("Error storing ruleSet " + ruleSet.getName(), e);
+			throw new ValidatorAdminException(e);
+		}
+		
+	}
+	
+	@Override
+	public void deleteRuleSet(int setId) throws ValidatorAdminException {
+		try {
+			logger.debug("deleting rule set " + setId);
+			rulesetsDao.delete(setId);
+		} catch (Exception e) {
+			logger.error("Error deleting rule set " + setId, e);
+			throw new ValidatorAdminException(e);
+		}
+	}	
+	
+	@Override
+	@Transactional(propagation = Propagation.REQUIRED)
+	public int deleteOldJobs(String date, String period, String mode) throws ValidatorAdminException {
+		int jobsDeleted = 0;
+		try {
+			logger.debug("Deleting jobs " + period + " than "+date);
+			if (mode.equalsIgnoreCase("uncompleted_only")) {
+				jobsDeleted = jobsDao.deleteUncompletedJobs();
+			}
+			else if (mode.equalsIgnoreCase("compTest_only"))
+				jobsDeleted = jobsDao.deleteOld(date, period, "Compatibility Test");
+			else if (mode.equalsIgnoreCase("all"))
+				jobsDeleted = jobsDao.deleteOld(date, period, null);
+			else if (mode.equalsIgnoreCase("import"))
+				jobsDao.importOldJobs();;
+		} catch (Exception e) {
+			logger.error("Error deleting old jobs", e);
+			throw new ValidatorAdminException(e);
+		}
+		return jobsDeleted;
+	}
+
+	public Emailer getEmailer() {
+		return emailer;
+	}
+	public JobsDAO getJobsDao() {
+		return jobsDao;
+	}
+
+	public void setJobsDao(JobsDAO jobsDao) {
+		this.jobsDao = jobsDao;
+	}
+
+	public RulesetsDAO getRulesetsDao() {
+		return rulesetsDao;
+	}
+
+	public void setRulesetsDao(RulesetsDAO rulesetsDao) {
+		this.rulesetsDao = rulesetsDao;
+	}
+
+	public RulesDAO getRulesDao() {
+		return rulesDao;
+	}
+
+	public void setRulesDao(RulesDAO rulesDao) {
+		this.rulesDao = rulesDao;
+	}
+
+	public UsersDAO getUsersDao() {
+		return usersDao;
+	}
+
+	public void setUsersDao(UsersDAO usersDao) {
+		this.usersDao = usersDao;
+	}
+
+	public void setEmailer(Emailer emailer) {
+		this.emailer = emailer;
+	}
+
+	
+	public String getRegistrationsReportEmail() {
+		return registrationsReportEmail;
+	}
+
+	public void setRegistrationsReportEmail(String registrationsReportEmail) {
+		this.registrationsReportEmail = registrationsReportEmail;
+	}
+
+	public EmailBuilder getEmailBuilder() {
+		return emailBuilder;
+	}
+
+	public void setEmailBuilder(EmailBuilder emailBuilder) {
+		this.emailBuilder = emailBuilder;
+	}
+
+	@Override
+	public boolean userIsMasterAdmin(String user)
+			throws ValidatorAdminException {
+		logger.debug("checking if user " + user + " is master admin");
+		if (this.masterAdmins.contains(user)) {
+			logger.debug("is master admin");
+			return true;
+		} else {
+			logger.debug("isn't master admin");
+			return false;
+		}
+	}
+	
+	@Override
+	public boolean userIsSecondaryAdmin(String user)
+			throws ValidatorAdminException {
+		logger.debug("checking if user " + user + " is secondary admin");
+		if (this.secondaryAdmins.contains(user)) {
+			logger.debug("is secondary admin");
+			return true;
+		} else {
+			logger.debug("isn't secondary admin");
+			return false;
+		}
+	}
+	
+
+	public void setMasterAdmins(String masterAdmins) {
+		String[] recps = masterAdmins.split(",");
+
+		for (String recp : recps) {
+			recp = recp.trim();
+			this.masterAdmins.add(recp);
+		}
+	}
+
+	public void setSecondaryAdmins(String secondaryAdmins) {
+		String[] recps = secondaryAdmins.split(",");
+
+		for (String recp : recps) {
+			recp = recp.trim();
+			this.secondaryAdmins.add(recp);
+		}
+	}
+
+	@Override
+	public String sendRegistrationsReport(String dateFrom, String dateTo, String month, String year) throws ValidatorAdminException {
+		try {
+			List <StoredJob> jobs = null;
+			Map<String, String> jobInfo = null;
+			List<Map<String, String>> passedJobsList = new ArrayList<Map<String, String>>();
+			List<Map<String, String>> failedJobsList = new ArrayList<Map<String, String>>();
+			
+			Map<String, StoredJob> passedJobsMap = new HashMap<String, StoredJob>();
+			Map<String, StoredJob> failedJobsMap = new HashMap<String, StoredJob>();
+			
+			logger.debug("Sending registrations Report for period: " + dateFrom + " to: " + dateTo);
+			jobs = jobsDao.getJobs(null, "Registration Request", null, null, dateFrom, dateTo);
+			for (StoredJob job : jobs) {
+				String key = job.getBaseUrl()+"|"+job.getDesiredCompatibilityLevel();
+				if (job.getContentJobScore() >= 50 && job.getContentJobScore() >= 50) {
+					failedJobsMap.remove(key);
+					passedJobsMap.put (key, job);
+				} else {
+					if (!passedJobsMap.containsKey(key)) {
+						failedJobsMap.put (key, job);
+					}
+				}
+			}
+			boolean oldFormat = false;
+			for (StoredJob job : passedJobsMap.values()) {
+				jobInfo = new HashMap<String, String>();
+				jobInfo.put("name", job.getOfficialName());
+				jobInfo.put("baseUrl", job.getBaseUrl());
+				jobInfo.put("email", job.getUserEmail());
+				jobInfo.put("compliance", job.getDesiredCompatibilityLevel());
+				if (job.getOfficialName() == null)
+					oldFormat = true;
+				passedJobsList.add(jobInfo);
+			}
+			for (StoredJob job : failedJobsMap.values()) {
+				jobInfo = new HashMap<String, String>();
+				jobInfo.put("name", job.getOfficialName());
+				jobInfo.put("baseUrl", job.getBaseUrl());
+				jobInfo.put("email", job.getUserEmail());
+				jobInfo.put("compliance", job.getDesiredCompatibilityLevel());
+				if (job.getOfficialName() == null)
+					oldFormat = true;
+				failedJobsList.add(jobInfo);
+			}
+			String report = emailBuilder.buildXml(passedJobsList, failedJobsList, month, oldFormat);
+			ArrayList<String> recps = new ArrayList<String>();
+			recps.add(registrationsReportEmail);
+			emailer.sendMail(recps,"Datasource Registrations -- " + month + " " + year, report, false, null);
+			logger.debug("email : " + report);
+			return report;
+		} catch (Exception e) {
+			logger.error("Error deleting old jobs", e);
+			throw new ValidatorAdminException(e);
+		}
+	}
+
+}
+
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/java/eu/dnetlib/validator/admin/api/ValidatorAdminAPI.java
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/java/eu/dnetlib/validator/admin/api/ValidatorAdminAPI.java	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/java/eu/dnetlib/validator/admin/api/ValidatorAdminAPI.java	(revision 47450)
@@ -0,0 +1,136 @@
+package eu.dnetlib.validator.admin.api;
+
+import java.util.List;
+
+import eu.dnetlib.domain.functionality.validator.Rule;
+import eu.dnetlib.domain.functionality.validator.RuleSet;
+import eu.dnetlib.validator.admin.actions.rules.FieldPair;
+
+/**
+ * 
+ * @author Nikon Gasparis
+ * 
+ */
+public interface ValidatorAdminAPI {
+
+	public List<Rule> getAllRules() throws  ValidatorAdminException;
+
+	public List<FieldPair> getRuleValuePairs(Rule rule) throws  ValidatorAdminException;
+	
+	public Rule getRule(int ruleId) throws ValidatorAdminException;
+	
+	public List<String> getRuleLabels(String ruleType, Boolean forUsage, Boolean forCris) throws ValidatorAdminException;
+	
+	public String storeRule(Rule rule, String[] inputs, Boolean updateExisting) throws ValidatorAdminException;
+	
+	public void storeRuleSet(RuleSet ruleSet, boolean updateExisting) throws ValidatorAdminException;	
+	
+	public void deleteRuleSet(int setId) throws  ValidatorAdminException;
+	
+	public String deleteRule(int ruleId) throws  ValidatorAdminException;
+
+	public List<RuleSet> getRuleSets() throws  ValidatorAdminException;
+
+	public RuleSet getRuleSet(int setId) throws  ValidatorAdminException;
+
+	public boolean userIsSecondaryAdmin(String user)
+			throws ValidatorAdminException;
+	
+	public boolean userIsMasterAdmin(String user)
+			throws ValidatorAdminException;
+			
+	public int deleteOldJobs(String date, String period, String target) throws ValidatorAdminException;
+
+	public String sendRegistrationsReport(String dateFrom, String dateTo, String month, String year) throws ValidatorAdminException;
+	
+
+//	public List<String> getConstantRuleTypes() throws  AdminAPIException;
+	
+//	public String[] getJobTypesAsArray() throws  AdminAPIException;
+
+
+	/*
+	public String getRuleSetName(int setId) throws  AdminAPIException;
+	
+
+	
+
+	public List<String> getRuleSetRuleIdsByJobType(int setId, String jobType)
+			throws  AdminAPIException;
+
+	public List<RuleS> getAllRulesForPresentationByJobType(String jobType)
+			throws  AdminAPIException;
+
+	public List<RuleS> getAllRulesForPresentationByJobTypeByRuleSet(
+			List<String> ruleSetRuleIds, String jobType)
+			throws  AdminAPIException;
+
+	public List<RuleD> getRulesForJobValidationByJobType(String jobType)
+			throws  AdminAPIException;
+
+	public List<RuleD> getRulesForJobValidationByJobTypeByRuleSet(int setId,
+			String jobType) throws  AdminAPIException;
+
+	public List<RuleStored> getAllRulesByJobType(String jobType)
+			throws  AdminAPIException;
+
+	public List<RulePair> getAllRulesToRulePair() throws  AdminAPIException;
+
+	public Map<String, List<JobSubmitted>> getJobsOfUser(String userName)
+			throws  AdminAPIException;
+
+
+
+	public Properties getRuleProperties(String ruleId)
+			throws  AdminAPIException;
+
+
+
+	public Serializable getRuleClassInstanceByType(String type, Properties pros,int id) throws  AdminAPIException;
+
+	public List<String> getAllRuleIdsByJobType(String jobType)
+			throws  AdminAPIException;
+
+	public List<RuleD> convertRuleIdsListToRuleDList(List<String> ruleIds);
+
+	public List<String> getValidationErrors(int jobId, int ruleId)
+			throws  AdminAPIException;
+
+	public JobSubmitted getJobSubmitted(String jobId) throws  AdminAPIException;
+
+	public List<TaskStored> getJobTasks(String jobId, JobSubmitted job)
+			throws  AdminAPIException;
+
+	public List<Entry> getJobSummary(String jobId, String groupBy) throws AdminAPIException;
+
+
+	public Map<String, String> getRuleSetsMap() throws AdminAPIException;
+
+
+	public void restore();
+
+	public List<String> getDistinctGroupByValues(String jobId) throws  AdminAPIException;
+
+	public String getFilteredScore(String jobId, String groupBy) throws  AdminAPIException;
+
+	public void preRegistrationValidations(JobForRegistration job) throws AdminAPIException;
+
+	public void storeJobForRegistration(JobForRegistration job) throws AdminAPIException;
+
+	public JobForRegistration getJobForRegistration(String activationId) throws AdminAPIException;
+
+	public void deleteJobForRegistration(String activationId) throws AdminAPIException;
+
+	public void cleanUncompletedJobs() throws AdminAPIException;
+
+	public Map<String, Set<Integer>> prepareCrisJobs(Set<Integer> chosenContentRules, Boolean referential, String selectedEntities) throws AdminAPIException;
+
+	public Map<String, String> getRuleSetsMap(String deployEnvironment)
+			throws AdminAPIException;
+
+	public Boolean isRepoAdmin(String user) throws AdminAPIException;
+	
+	*
+	*/
+
+}
\ No newline at end of file
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/java/eu/dnetlib/validator/admin/actions/login/AdminInterceptor.java
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/java/eu/dnetlib/validator/admin/actions/login/AdminInterceptor.java	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/java/eu/dnetlib/validator/admin/actions/login/AdminInterceptor.java	(revision 47450)
@@ -0,0 +1,47 @@
+package eu.dnetlib.validator.admin.actions.login;
+
+import java.util.Map;
+
+import com.opensymphony.xwork2.Action;
+import com.opensymphony.xwork2.ActionInvocation;
+import com.opensymphony.xwork2.interceptor.Interceptor;
+
+import eu.dnetlib.validator.admin.api.UserApi;
+import eu.dnetlib.validator.admin.config.Constants;
+
+public class AdminInterceptor implements Interceptor {
+
+	private static final long serialVersionUID = -172948943490485824L;
+	private UserApi userAPI = null;
+
+//	private Logger logger = Logger.getLogger(AdminInterceptor.class);
+	
+	@Override
+	public void destroy() {
+
+	}
+
+	@Override
+	public void init() {
+
+	}
+
+	@Override
+	public String intercept(ActionInvocation actionInvocation) throws Exception {
+		Map<String, Object> session = actionInvocation.getInvocationContext().getSession();
+		String auth = (String) session.get(Constants.loggedInField);
+		
+		if (!userAPI.isAdmin(auth)) {
+			return Action.LOGIN;
+		}
+		return actionInvocation.invoke();
+	}
+
+	public UserApi getUserAPI() {
+		return userAPI;
+	}
+
+	public void setUserAPI(UserApi userAPI) {
+		this.userAPI = userAPI;
+	}
+}
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/java/eu/dnetlib/validator/admin/actions/login/AuthenticationInterceptor.java
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/java/eu/dnetlib/validator/admin/actions/login/AuthenticationInterceptor.java	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/java/eu/dnetlib/validator/admin/actions/login/AuthenticationInterceptor.java	(revision 47450)
@@ -0,0 +1,35 @@
+package eu.dnetlib.validator.admin.actions.login;
+
+import java.util.Map;
+
+import com.opensymphony.xwork2.Action;
+import com.opensymphony.xwork2.ActionInvocation;
+import com.opensymphony.xwork2.interceptor.Interceptor;
+
+import eu.dnetlib.validator.admin.config.Constants;
+
+public class AuthenticationInterceptor implements Interceptor {
+
+	private static final long serialVersionUID = 977098762082596481L;
+
+	@Override
+	public void destroy() {
+
+	}
+
+	@Override
+	public void init() {
+
+	}
+
+	@Override
+	public String intercept(ActionInvocation actionInvocation) throws Exception {
+		Map<String, Object> session = actionInvocation.getInvocationContext().getSession();
+		String auth = (String) session.get(Constants.loggedInField);
+
+		if (auth == null) {
+			return Action.LOGIN;
+		}
+		return actionInvocation.invoke();
+	}
+}
\ No newline at end of file
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/java/eu/dnetlib/validator/admin/actions/users/EditUser.java
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/java/eu/dnetlib/validator/admin/actions/users/EditUser.java	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/java/eu/dnetlib/validator/admin/actions/users/EditUser.java	(revision 47450)
@@ -0,0 +1,66 @@
+package eu.dnetlib.validator.admin.actions.users;
+
+import java.util.Map;
+
+import org.apache.log4j.Logger;
+import org.apache.struts2.interceptor.SessionAware;
+
+import com.opensymphony.xwork2.Action;
+
+import eu.dnetlib.domain.functionality.UserProfile;
+import eu.dnetlib.validator.admin.actions.BaseValidatorAction;
+import eu.dnetlib.validator.admin.config.Constants;
+
+public class EditUser extends BaseValidatorAction implements SessionAware {
+
+	private static final long serialVersionUID = -362061491263257713L;
+	private Logger logger = Logger.getLogger(EditUser.class);
+
+	private UserProfile user;
+
+	private Map<String, Object> session;
+
+	public String execute() {
+		this.clearErrorsAndMessages();
+		try {
+			logger.debug("getting for edit user " + (String) session.get(Constants.loggedInField));
+				user = this.getUserAPI().getUser((String) session.get(Constants.loggedInField));
+			return Action.SUCCESS;
+		} catch (Exception e) {
+			logger.error("error getting for edit user " + (String) session.get(Constants.loggedInField), e);
+			this.addActionError(this.getText("generic.error"));
+			reportException(e);
+			return "exception";
+		}
+	}
+
+	public String edit() {
+		this.clearErrorsAndMessages();
+		try {
+			logger.debug("editing user " + (String) session.get(Constants.loggedInField));
+			this.getUserAPI().editUser(user);
+			this.addActionMessage(this.getText("editUser.success"));
+			return Action.SUCCESS;
+		} catch (Exception e) {
+			logger.error("error editing user " + (String) session.get(Constants.loggedInField), e);
+			this.addActionError(this.getText("generic.error"));
+			reportException(e);
+			return "exception";
+		}
+
+	}
+
+
+	public UserProfile getUser() {
+		return user;
+	}
+
+	public void setUser(UserProfile user) {
+		this.user = user;
+	}
+
+	@Override
+	public void setSession(Map<String, Object> session) {
+		this.session = session;
+	}
+}
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/java/eu/dnetlib/validator/admin/actions/jobs/DatabaseCurator.java
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/java/eu/dnetlib/validator/admin/actions/jobs/DatabaseCurator.java	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/java/eu/dnetlib/validator/admin/actions/jobs/DatabaseCurator.java	(revision 47450)
@@ -0,0 +1,83 @@
+package eu.dnetlib.validator.admin.actions.jobs;
+
+import java.text.ParseException;
+import java.text.SimpleDateFormat;
+
+import org.apache.log4j.Logger;
+
+import com.opensymphony.xwork2.Action;
+
+import eu.dnetlib.validator.admin.actions.BaseValidatorAction;
+import eu.dnetlib.validator.admin.api.ValidatorAdminException;
+
+public class DatabaseCurator extends BaseValidatorAction {
+
+	private static final long serialVersionUID = -1868055729316139461L;
+	private static final Logger logger = Logger.getLogger(DatabaseCurator.class);
+	private String inDate = null;
+	private String mode, period;
+
+	public String execute() {
+		this.clearErrorsAndMessages();
+		int jobsDeleted = 0;
+		try {
+			jobsDeleted = this.getValidatorAdminAPI().deleteOldJobs(inDate, period, mode);
+		} catch (ValidatorAdminException e) {
+			logger.error("Error deleting old jobs", e);
+			this.addActionError(this.getText("generic.error"));
+			reportException(e);
+			return "input-problem";
+		}
+		
+		this.addActionMessage(jobsDeleted + " " + this.getText("manageJobs.deleteJobs.success"));
+		return Action.SUCCESS;
+	}
+	
+
+	public void validate() {
+		this.clearErrors();
+		if (!mode.equalsIgnoreCase("uncompleted_only")){
+			if (inDate == null) {
+				this.addActionError(this.getText("wrongFieldValue"));
+				return;
+			}
+			SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
+			if (inDate.trim().length() != dateFormat.toPattern().length()) {
+				this.addActionError(this.getText("wrongFieldValue"));
+				return;
+			}
+			dateFormat.setLenient(false);
+			try {
+				dateFormat.parse(inDate.trim());
+			} catch (ParseException pe) {
+				this.addActionError(this.getText("wrongFieldValue"));
+				return;
+			}
+		}
+	}
+
+	public String getInDate() {
+		return inDate;
+	}
+
+	public void setInDate(String inDate) {
+		this.inDate = inDate;
+	}
+
+	public String getMode() {
+		return mode;
+	}
+
+	public void setMode(String mode) {
+		this.mode = mode;
+	}
+
+	public String getPeriod() {
+		return period;
+	}
+
+	public void setPeriod(String period) {
+		this.period = period;
+	}
+
+}
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/java/eu/dnetlib/validator/admin/actions/rulesets/CreateRuleSet.java
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/java/eu/dnetlib/validator/admin/actions/rulesets/CreateRuleSet.java	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/java/eu/dnetlib/validator/admin/actions/rulesets/CreateRuleSet.java	(revision 47450)
@@ -0,0 +1,87 @@
+package eu.dnetlib.validator.admin.actions.rulesets;
+
+import java.util.Set;
+
+import org.apache.log4j.Logger;
+
+import com.opensymphony.xwork2.Action;
+
+import eu.dnetlib.domain.functionality.validator.RuleSet;
+import eu.dnetlib.validator.admin.actions.BaseValidatorAction;
+
+public class CreateRuleSet extends BaseValidatorAction {
+
+	private static final long serialVersionUID = 5623461974078831740L;
+	
+	private Set<Integer> chosenContentRules = null;
+	private Set<Integer> chosenUsageRules = null;	
+	private String funct = null;
+	private RuleSet ruleSet;
+	private static final Logger logger = Logger.getLogger(CreateRuleSet.class);
+	
+	public String execute() {
+		this.clearErrorsAndMessages();
+		try {
+			logger.debug("creating a new rule set "+ruleSet.getName());
+			ruleSet.setUsageRulesIds(chosenUsageRules);
+			ruleSet.setContentRulesIds(chosenContentRules);
+			if(funct.equals("create")) {
+				this.getValidatorAdminAPI().storeRuleSet(ruleSet, false);
+				this.addActionMessage(this.getText("createRuleSet.success"));
+			}
+			else if(funct.equals("edit")) {
+				logger.debug("chosen content: " + chosenContentRules);
+				this.getValidatorAdminAPI().storeRuleSet(ruleSet, true);
+				this.addActionMessage(this.getText("createRuleSet.success"));
+			}
+			return Action.SUCCESS;
+		}
+		catch(Exception e) {
+			logger.error("Error creating/editing ruleset", e);
+			this.addActionError(this.getText("generic.error"));
+			reportException(e);
+			return "exception";
+		}
+	}
+	
+	public void validate() {
+		this.clearErrors();
+		if((chosenContentRules == null || chosenContentRules.isEmpty())||(chosenUsageRules == null || chosenUsageRules.isEmpty()))
+			this.addActionError(this.getText("createRuleSets.atLeastOneRule"));
+		if(funct == null)
+			this.addActionError(this.getText("uknownError"));
+	}
+	
+	public String getFunct() {
+		return funct;
+	}
+	public void setFunct(String funct) {
+		this.funct = funct;
+	}	
+
+	public Set<Integer> getChosenContentRules() {
+		return chosenContentRules;
+	}
+
+	public void setChosenContentRules(Set<Integer> chosenContentRules) {
+		this.chosenContentRules = chosenContentRules;
+	}
+
+	public Set<Integer> getChosenUsageRules() {
+		return chosenUsageRules;
+	}
+
+	public void setChosenUsageRules(Set<Integer> chosenUsageRules) {
+		this.chosenUsageRules = chosenUsageRules;
+	}
+
+	public RuleSet getRuleSet() {
+		return ruleSet;
+	}
+
+	public void setRuleSet(RuleSet ruleSet) {
+		this.ruleSet = ruleSet;
+	}
+	
+	
+}	
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/java/eu/dnetlib/validator/admin/actions/rules/DeleteRule.java
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/java/eu/dnetlib/validator/admin/actions/rules/DeleteRule.java	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/java/eu/dnetlib/validator/admin/actions/rules/DeleteRule.java	(revision 47450)
@@ -0,0 +1,48 @@
+package eu.dnetlib.validator.admin.actions.rules;
+
+
+import org.apache.log4j.Logger;
+
+import com.opensymphony.xwork2.Action;
+
+import eu.dnetlib.validator.admin.actions.BaseValidatorAction;
+import eu.dnetlib.validator.admin.api.ValidatorAdminException;
+
+public class DeleteRule extends BaseValidatorAction {
+
+	private static final long serialVersionUID = -2888943921398211370L;
+	private static final Logger logger = Logger.getLogger(DeleteRule.class);
+	private int ruleId;
+	
+	public String execute() {
+		this.clearErrorsAndMessages();
+		logger.debug("deleting rule");
+		String ret = null;
+		try {
+			logger.debug("deleting rule with id "+ruleId);
+			ret = this.getValidatorAdminAPI().deleteRule(ruleId);
+		}
+		catch (ValidatorAdminException e) {
+			logger.error("Error deleting rule with id "+ruleId, e);
+			this.addActionError(this.getText("generic.error"));
+			reportException(e);
+			return "exception";
+		}
+		
+		if (ret != null) {
+			this.addActionError(this.getText(ret));
+			return "input-problem";
+		}
+		this.addActionMessage(this.getText("deleteRule.success"));
+		return Action.SUCCESS;
+	}
+
+	public int getRuleId() {
+		return ruleId;
+	}
+
+	public void setRuleId(int ruleId) {
+		this.ruleId = ruleId;
+	}
+	
+}
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/java/eu/dnetlib/validator/admin/actions/rules/FieldPair.java
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/java/eu/dnetlib/validator/admin/actions/rules/FieldPair.java	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/java/eu/dnetlib/validator/admin/actions/rules/FieldPair.java	(revision 47450)
@@ -0,0 +1,24 @@
+package eu.dnetlib.validator.admin.actions.rules;
+
+public class FieldPair {
+
+	private String fieldName, fieldValue;
+
+	public String getFieldName() {
+		return fieldName;
+	}
+
+	public void setFieldName(String fieldName) {
+		this.fieldName = fieldName;
+	}
+
+	public String getFieldValue() {
+		return fieldValue;
+	}
+
+	public void setFieldValue(String fieldValue) {
+		this.fieldValue = fieldValue;
+	}
+	
+	
+}
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/fonts/maven_pro_regular-webfont.svg
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/fonts/maven_pro_regular-webfont.svg	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/fonts/maven_pro_regular-webfont.svg	(revision 47450)
@@ -0,0 +1,245 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" >
+<svg xmlns="http://www.w3.org/2000/svg">
+<metadata>
+This is a custom SVG webfont generated by Font Squirrel.
+Copyright   : Copyright c 2011 by Vissol Ltd All rights reserved
+Designer    : Joe Prince
+Foundry     : Joe Prince
+</metadata>
+<defs>
+<font id="webfontOM8fITNz" horiz-adv-x="1529" >
+<font-face units-per-em="2048" ascent="1638" descent="-410" />
+<missing-glyph horiz-adv-x="692" />
+<glyph unicode=" "  horiz-adv-x="692" />
+<glyph unicode="&#x09;" horiz-adv-x="692" />
+<glyph unicode="&#xa0;" horiz-adv-x="692" />
+<glyph unicode="!" horiz-adv-x="761" d="M303 0v164h164v-164h-164zM311 1366h148l-15 -1022h-118z" />
+<glyph unicode="&#x22;" horiz-adv-x="780" d="M440 1384h170l-37 -411h-98zM203 973l-37 411h170l-35 -411h-98z" />
+<glyph unicode="#" horiz-adv-x="1210" d="M850 1071h125l-43 -242h147v-122h-168l-57 -326h166v-123h-186l-37 -219h-125l37 219h-271l-39 -219h-125l39 219h-168v123h189l55 326h-186v122h209l41 242h125l-41 -242h270zM729 381l57 326h-272l-55 -326h270z" />
+<glyph unicode="$" horiz-adv-x="1181" d="M1055 348q0 -156 -105.5 -250t-296.5 -110v-209h-110v205q-207 6 -377 96v160q158 -104 377 -109v520q-76 23 -117 37t-101.5 44t-92 63.5t-55 87t-23.5 121.5q0 143 95 249.5t294 126.5v209h110v-205q166 -8 314 -81v-152q-150 84 -314 86v-469q88 -29 147.5 -55.5 t124 -73.5t97.5 -120t33 -171zM301 1004q0 -78 61.5 -121t180.5 -80v428q-242 -34 -242 -227zM653 135q254 33 254 213q0 106 -65.5 165.5t-188.5 102.5v-481z" />
+<glyph unicode="%" horiz-adv-x="1777" d="M442 1360q123 0 209 -83t86 -294q0 -113 -26.5 -190.5t-71.5 -116.5t-93 -55.5t-104 -16.5q-57 0 -104 16.5t-93 55.5t-73 116.5t-27 190.5q0 111 27 189.5t73 116.5t93 54.5t104 16.5zM442 711q84 0 133.5 55t49.5 217t-49.5 216t-133.5 54q-86 0 -135 -54t-49 -216 t50 -217t134 -55zM1384 1366l-858 -1366h-131l858 1366h131zM1339 6q-57 0 -104 16.5t-93 55.5t-73 116.5t-27 190.5t27 190.5t73 116.5t93 55.5t104 16.5q55 0 103.5 -16.5t93.5 -55.5t71.5 -116.5t26.5 -190.5t-26.5 -190.5t-71.5 -116.5t-93.5 -55.5t-103.5 -16.5z M1339 657q-84 0 -134 -55t-50 -217t50 -217t134 -55t133.5 55t49.5 217t-49.5 217t-133.5 55z" />
+<glyph unicode="&#x26;" horiz-adv-x="1310" d="M1014 272l227 -272h-192l-125 152q-162 -168 -385 -168q-111 0 -198 38.5t-134 101t-71.5 127t-24.5 126.5q0 119 56 220t220 191q-135 168 -135 283q0 127 91 218t218 91q131 0 221 -87t90 -214q0 -109 -59 -183.5t-192 -152.5l297 -354q57 100 83 205h134 q-33 -177 -121 -322zM565 1233q-70 0 -120 -48t-50 -116q0 -72 129 -213q131 70 171 116t40 105q0 68 -49 112t-121 44zM545 127q172 0 291 129l-357 428q-78 -41 -128 -85t-68.5 -87t-22.5 -67.5t-4 -63.5q0 -33 12.5 -71t42 -82t90 -72.5t144.5 -28.5z" />
+<glyph unicode="'" horiz-adv-x="509" d="M203 973l-37 411h170l-35 -411h-98z" />
+<glyph unicode="(" horiz-adv-x="706" d="M418 1483h155q-29 -47 -59.5 -112.5t-74.5 -180.5t-72.5 -264.5t-28.5 -300.5q0 -150 28.5 -300.5t72.5 -264t76 -180t58 -111.5h-155q-227 408 -228 856q1 450 228 858z" />
+<glyph unicode=")" horiz-adv-x="706" d="M291 1483q227 -408 227 -856q0 -451 -227 -858h-158q29 47 59.5 111.5t75.5 180t74 265t29 301.5q0 195 -53.5 396.5t-98.5 296.5t-86 163h158z" />
+<glyph unicode="*" horiz-adv-x="841" d="M666 1270l-177 -80l177 -78l-56 -98l-153 112l16 -184h-111l21 184l-156 -112l-55 98l178 78l-178 80l55 94l156 -111l-21 187h111l-16 -187l153 111z" />
+<glyph unicode="+" horiz-adv-x="1128" d="M926 674v-123h-301v-301h-123v301h-303v123h303v303h123v-303h301z" />
+<glyph unicode="," horiz-adv-x="641" d="M303 172h168l-172 -401h-147z" />
+<glyph unicode="-" horiz-adv-x="950" d="M786 682v-143h-624v143h624z" />
+<glyph unicode="." horiz-adv-x="671" d="M260 0v164h164v-164h-164z" />
+<glyph unicode="/" horiz-adv-x="827" d="M723 1548h135l-754 -1749h-133z" />
+<glyph unicode="0" horiz-adv-x="1345" d="M671.5 1378q538.5 0 538.5 -700.5t-538.5 -700.5t-538.5 700.5t538.5 700.5zM671.5 113q61.5 0 110.5 10t104.5 45t92.5 94.5t60.5 164.5t23.5 251q0 178 -34 298t-95.5 174t-121.5 73.5t-140 19.5t-140.5 -19.5t-122 -73.5t-95 -174t-33.5 -298q0 -145 23.5 -250.5 t60 -165t92 -94.5t104.5 -45t110.5 -10z" />
+<glyph unicode="1" horiz-adv-x="923" d="M463 1366h168v-1366h-148v1212l-272 -180v174z" />
+<glyph unicode="2" horiz-adv-x="1189" d="M401 147h619v-147h-862v129q102 76 208.5 169t223.5 215t189.5 252t72.5 234q0 238 -322 238q-190 0 -358 -119v162q172 104 371 104q233 0 344.5 -112.5t111.5 -272.5q0 -111 -56 -232.5t-151.5 -236t-190 -206t-200.5 -177.5z" />
+<glyph unicode="3" horiz-adv-x="1193" d="M788 739q10 -4 26.5 -12t58.5 -39t75 -67.5t59.5 -99t26.5 -132.5q0 -78 -27.5 -147.5t-84 -129t-157.5 -94t-235 -34.5q-197 0 -364 86v151q160 -90 346 -90q182 0 278.5 67.5t96.5 194.5t-98.5 194.5t-284.5 67.5h-150v142h156q150 0 228.5 56t78.5 162.5t-83 164 t-240 57.5q-152 0 -295 -72v150q147 70 311 69q233 0 344 -108.5t111 -259.5q0 -172 -148 -260z" />
+<glyph unicode="4" horiz-adv-x="1210" d="M889 547h194v-137h-194v-410h-148v410h-663v157l645 799h166v-819zM242 547h499v608z" />
+<glyph unicode="5" horiz-adv-x="1202" d="M248 1366h702v-145h-575l-39 -406q121 37 266 37q84 0 153.5 -18.5t136 -63.5t105.5 -135t39 -217t-39 -217t-105.5 -135.5t-136 -63.5t-153.5 -18q-236 0 -391 84v153q150 -94 381 -94q80 0 138 19.5t89 46t47.5 69.5t20.5 77t4 79q0 92 -24.5 152.5t-71.5 88t-93.5 37 t-109.5 9.5q-96 0 -177 -16.5t-112 -33.5l-33 -14l-92 94z" />
+<glyph unicode="6" horiz-adv-x="1193" d="M598 874q215 0 340 -115.5t125 -314.5q0 -84 -25.5 -162.5t-78 -147t-145.5 -109.5t-216 -41q-465 0 -465 641q0 141 25.5 257.5t65.5 193.5t96.5 135.5t111.5 90t118.5 51t111 25.5t94.5 6q109 0 198 -26v-137q-102 25 -182 24q-47 0 -92 -6t-113.5 -32.5t-122 -73 t-97.5 -136.5t-58 -213q133 90 309 90zM598 123q102 0 172 38t98.5 98t37.5 103.5t9 83.5q0 139 -81.5 215t-235.5 76q-201 0 -317 -116q2 -141 27.5 -241.5t57 -149t83 -75t79 -29.5t70.5 -3z" />
+<glyph unicode="7" horiz-adv-x="1175" d="M143 1366h932v-137l-592 -1229h-164l596 1219h-772v147z" />
+<glyph unicode="8" horiz-adv-x="1191" d="M842 739q10 -4 25.5 -11t54.5 -34.5t69.5 -62.5t55 -95.5t24.5 -129.5q0 -78 -25.5 -149t-79 -134.5t-148.5 -101t-220 -37.5q-240 0 -356.5 127t-116.5 295q0 203 184 307l51 24l-20 11q-12 6 -44 30.5t-56.5 55t-44 84t-19.5 112.5q0 145 103.5 249.5t318.5 104.5 t318.5 -103t103.5 -251q0 -184 -148 -274zM324 1030q0 -111 72.5 -173t201.5 -62t201.5 62.5t72.5 172.5q0 209 -274 209t-274 -209zM598 123q86 0 149.5 23.5t96.5 56.5t52 76t23.5 71.5t4.5 55.5q0 123 -84 188t-242 65t-242 -65.5t-84 -187.5q0 -27 4.5 -55.5t23.5 -71.5 t52 -76t96.5 -56.5t149.5 -23.5z" />
+<glyph unicode="9" horiz-adv-x="1202" d="M584 494q-215 0 -340 115.5t-125 314.5q0 84 25.5 162.5t77.5 147.5t145.5 109.5t216.5 40.5q465 0 465 -643q0 -195 -48.5 -340t-116 -223t-160.5 -124t-160.5 -58t-137.5 -12q-104 0 -199 24v139q84 -25 183 -24q47 0 92 6t113.5 32.5t120.5 73t97.5 136.5t57.5 213 q-121 -90 -307 -90zM584 1245q-102 0 -172 -38t-98.5 -98t-38 -103t-9.5 -84q0 -139 82 -215t236 -76q207 0 317 117q-2 141 -27.5 241.5t-57.5 148.5t-83 74.5t-78.5 29.5t-70.5 3z" />
+<glyph unicode=":" horiz-adv-x="800" d="M324 98v164h163v-164h-163zM324 754v164h163v-164h-163z" />
+<glyph unicode=";" horiz-adv-x="854" d="M352 754v164h164v-164h-164zM350 172h168l-172 -401h-147z" />
+<glyph unicode="&#x3c;" horiz-adv-x="1351" d="M246 621l844 383v-164l-672 -289l672 -291v-162l-844 383v140z" />
+<glyph unicode="=" horiz-adv-x="1306" d="M1049 524v-143h-789v143h789zM1049 840v-142h-789v142h789z" />
+<glyph unicode="&#x3e;" horiz-adv-x="1329" d="M1112 621v-140l-842 -383v162l670 291l-670 289v164z" />
+<glyph unicode="?" horiz-adv-x="993" d="M391 0v164h164v-164h-164zM449 1382q61 0 120.5 -14t129 -50t112.5 -117t43 -197q0 -82 -31.5 -142.5t-77.5 -98.5l-90 -76q-45 -38 -76.5 -101.5t-31.5 -151.5v-90h-148v100q0 104 32 181t77 120t90 78t77 79t32 102q0 231 -269 231q-156 0 -274 -90v160q113 77 285 77z " />
+<glyph unicode="@" horiz-adv-x="1869" d="M1040 596q74 0 152 -10q2 14 2 43q0 35 -6 59.5t-23.5 50t-60.5 39t-109 13.5q-143 0 -256 -43l17 118q123 41 239 41q156 0 237 -70.5t81 -207.5q0 -59 -11.5 -142.5t-17.5 -137.5t-4 -107.5t30.5 -79t86.5 -25.5q90 0 169 114t79 312q0 145 -55.5 262t-144.5 186.5 t-191.5 106.5t-206.5 37q-311 0 -554 -230.5t-243 -553.5q0 -154 51 -270.5t123 -177t163 -98.5t153.5 -47t113.5 -9q254 0 430 100l-18 -92q-172 -82 -428 -82q-86 0 -174.5 22.5t-178.5 74.5t-158.5 127t-112.5 192.5t-44 259.5q0 244 133 445.5t334 309t410 107.5 q82 0 171 -21.5t180 -73t162.5 -126t116.5 -189t45 -254.5q0 -221 -91 -362t-242 -141q-137 0 -191 100q-96 -100 -295 -100q-143 0 -225 62t-82 171q0 49 16.5 94t59.5 94.5t138 79t230 29.5zM903 184q49 0 88 8.5t65.5 17.5t47 31.5t31 37t18.5 46t11 46t6.5 51.5t5.5 47 q-55 8 -136 8q-326 0 -325 -178q0 -115 188 -115z" />
+<glyph unicode="A" horiz-adv-x="1325" d="M735 1366l543 -1366h-158l-164 426h-589l-164 -426h-160l545 1366h147zM422 567h479l-239 625z" />
+<glyph unicode="B" horiz-adv-x="1271" d="M940 727q10 -2 24.5 -8t54.5 -33t69.5 -61.5t54 -98t24.5 -139.5q0 -387 -495 -387h-494v1366h453q455 0 454 -367q0 -55 -15 -104t-36.5 -78t-42 -50.5t-37.5 -29.5zM684 137q156 0 246 54.5t90 203.5q0 63 -21.5 108.5t-52.5 71t-80 39t-91 17.5t-97 4h-352v-498h358z M938 989q0 133 -72.5 184.5t-220.5 51.5h-319v-451h338q125 0 199.5 43t74.5 172z" />
+<glyph unicode="C" horiz-adv-x="1286" d="M272 684q0 -291 121 -426t381 -135q209 0 400 80v-142q-199 -78 -416 -77q-633 0 -633 700t633 700q219 0 416 -79v-142q-195 82 -400 82q-260 0 -381 -135t-121 -426z" />
+<glyph unicode="D" horiz-adv-x="1372" d="M178 1366h428q641 0 641 -682q0 -684 -641 -684h-428v1366zM596 139q262 0 383 131t121 414t-121 414t-383 131h-270v-1090h270z" />
+<glyph unicode="E" horiz-adv-x="1159" d="M326 1227v-471h628v-144h-628v-473h714v-139h-862v1366h862v-139h-714z" />
+<glyph unicode="F" horiz-adv-x="1097" d="M178 1366h838v-139h-690v-471h606v-144h-606v-612h-148v1366z" />
+<glyph unicode="G" horiz-adv-x="1386" d="M758 600v143h477v-653q-221 -106 -477 -106q-633 0 -633 700t633 700q227 0 430 -86v-143q-199 88 -414 88q-260 0 -381 -135t-121 -424q0 -291 121 -425t381 -134q164 0 313 49v426h-329z" />
+<glyph unicode="H" horiz-adv-x="1380" d="M1053 1366h147v-1366h-147v612h-727v-612h-148v1366h148v-612h727v612z" />
+<glyph unicode="I" horiz-adv-x="501" d="M178 1366h148v-1366h-148v1366z" />
+<glyph unicode="J" horiz-adv-x="915" d="M573 1366h148v-958q0 -125 -35 -213.5t-95.5 -131.5t-124 -61t-136.5 -18q-147 0 -271 71v154q117 -82 252 -82q139 0 200.5 68.5t61.5 224.5v946z" />
+<glyph unicode="K" horiz-adv-x="1294" d="M571 727l633 -727h-194l-535 623l-149 -164v-459h-148v1366h148v-704l632 704h199z" />
+<glyph unicode="L" horiz-adv-x="1067" d="M326 143h698v-143h-846v1366h148v-1223z" />
+<glyph unicode="M" horiz-adv-x="1619" d="M1278 1366h160v-1366h-148v1124l-483 -696l-481 696v-1124h-148v1366h160l469 -694z" />
+<glyph unicode="N" horiz-adv-x="1490" d="M1161 1366h148v-1366h-166l-817 1151v-1151h-148v1366h168l815 -1151v1151z" />
+<glyph unicode="O" d="M758 1384q635 0 635 -700t-635 -700q-633 0 -633 700t633 700zM758 123q254 0 370.5 135t116.5 426t-116.5 426t-370.5 135q-252 0 -369 -135t-117 -426t117 -426t369 -135z" />
+<glyph unicode="P" horiz-adv-x="1220" d="M662 1366q229 0 351 -108.5t122 -313.5t-122 -313.5t-351 -108.5h-338v-522h-148v1366h486zM643 664q109 0 181.5 23.5t105.5 68.5t45 88t12 100t-12 100t-45 88.5t-105.5 69t-181.5 23.5h-319v-561h319z" />
+<glyph unicode="Q" d="M1393 684q0 -651 -553 -698q41 -170 268 -176v-134q-113 0 -196 30t-127 81t-65.5 98t-29.5 101q-565 37 -565 698q0 700 633 700q635 0 635 -700zM758 123q254 0 370.5 135t116.5 426t-116.5 426t-370.5 135q-252 0 -369 -135t-117 -426t117 -426t369 -135z" />
+<glyph unicode="R" horiz-adv-x="1271" d="M829 573l375 -573h-174l-356 551h-348v-551h-148v1366h502q223 0 343 -101.5t120 -295.5q0 -88 -28 -160t-63.5 -112t-84.5 -69.5t-80 -39t-58 -15.5zM672 690q102 0 170.5 23.5t99.5 65.5t42 83t11 96.5t-11 96.5t-42 83t-99.5 65.5t-170.5 23.5h-346v-537h346z" />
+<glyph unicode="S" horiz-adv-x="1150" d="M272 1004q0 -70 56.5 -117t139.5 -69.5t181.5 -57.5t181 -76t139 -127t56.5 -209q0 -170 -128 -267t-357 -97q-223 0 -404 96v160q162 -109 393 -109q348 0 349 217q0 92 -56.5 154.5t-139.5 91.5l-181 60q-98 32 -181 65t-139.5 105.5t-56.5 179.5q0 158 114.5 269 t356.5 111q174 0 342 -81v-152q-152 86 -328 86q-164 0 -251 -60t-87 -173z" />
+<glyph unicode="T" horiz-adv-x="1163" d="M25 1366h1112v-143h-482v-1223h-147v1223h-483v143z" />
+<glyph unicode="U" horiz-adv-x="1476" d="M1141 1366h147v-805q0 -281 -143.5 -429t-411.5 -148t-411.5 148.5t-143.5 428.5v805h148v-813q0 -434 407.5 -434t407.5 434v813z" />
+<glyph unicode="V" horiz-adv-x="1251" d="M1061 1366h158l-525 -1366h-145l-524 1366h157l441 -1155z" />
+<glyph unicode="W" horiz-adv-x="1947" d="M1765 1366h156l-440 -1366h-150l-358 1114l-359 -1114h-151l-438 1366h155l359 -1143l360 1143h148l358 -1143z" />
+<glyph unicode="X" horiz-adv-x="1206" d="M690 690l484 -690h-177l-397 563l-395 -563h-180l485 692l-473 674h176l387 -549l385 549h180z" />
+<glyph unicode="Y" horiz-adv-x="1224" d="M1012 1366h178l-508 -739v-627h-147v627l-510 739h178l405 -596z" />
+<glyph unicode="Z" horiz-adv-x="1247" d="M1104 1366v-125l-785 -1094h785v-147h-973v129l780 1090h-759v147h952z" />
+<glyph unicode="[" horiz-adv-x="784" d="M391 1286v-1384h223v-140h-370v1663h370v-139h-223z" />
+<glyph unicode="\" horiz-adv-x="753" d="M59 1548l752 -1749h-133l-754 1749h135z" />
+<glyph unicode="]" horiz-adv-x="780" d="M393 1286h-221v139h369v-1663h-369v140h221v1384z" />
+<glyph unicode="^" horiz-adv-x="1146" d="M600 1413l213 -444h-123l-145 325l-148 -325h-123l213 444h113z" />
+<glyph unicode="_" horiz-adv-x="1118" d="M0 -49h1118v-90h-1118v90z" />
+<glyph unicode="`" horiz-adv-x="448" d="M244 1391l116 -236h-96l-170 236h150z" />
+<glyph unicode="a" horiz-adv-x="1093" d="M522 1040q215 0 328 -108.5t113 -317.5v-307q0 -98 -45.5 -167.5t-117 -100.5t-134 -43t-123.5 -12q-47 0 -96.5 6t-112 27.5t-108.5 55t-78.5 96t-32.5 144.5q0 70 25.5 125.5t62.5 90t94 59t101 36t104.5 17.5t86 7t60.5 1l164 -10q0 137 -75.5 195.5t-223.5 58.5 q-166 0 -299 -49v143q151 53 307 53zM815 307v197q-68 12 -182 12q-371 0 -371 -203q0 -193 281 -192q272 0 272 186z" />
+<glyph unicode="b" horiz-adv-x="1167" d="M569 1040q70 0 131.5 -12t125 -47t109.5 -90t74.5 -149.5t28.5 -217.5q0 -135 -31.5 -236.5t-77.5 -157.5t-110.5 -91t-119 -45t-111.5 -10q-111 0 -193 27.5t-123 63.5t-66.5 86t-30.5 82.5t-5 63.5v1106h147v-414q123 41 252 41zM588 119q57 0 103 13t95.5 51t77 125 t27.5 216q0 199 -76 289t-246 90q-127 0 -252 -51v-553q1 -180 271 -180z" />
+<glyph unicode="c" horiz-adv-x="966" d="M266 512q0 -205 83 -296t265 -91q154 0 287 57v-143q-143 -55 -303 -55q-72 0 -134.5 12t-128 48t-111.5 92.5t-75.5 152.5t-29.5 223q0 156 43 265.5t116.5 163.5t150.5 76.5t169 22.5q154 0 303 -57v-141q-139 57 -287 57q-182 0 -265 -92t-83 -295z" />
+<glyph unicode="d" horiz-adv-x="1150" d="M129 524q0 152 41 258.5t113.5 159.5t147.5 74.5t165 21.5q135 0 254 -39v412h147v-1106q0 -41 -12 -84t-50 -102.5t-130 -97t-227 -37.5q-57 0 -111.5 10t-118 45t-109.5 91t-78 157.5t-32 236.5zM276 524q0 -129 28 -216t77 -125t94 -51t103 -13q272 0 272 180v553 q-125 51 -254 51q-168 0 -244 -90t-76 -289z" />
+<glyph unicode="e" horiz-adv-x="1136" d="M578 1040q94 0 170.5 -29.5t121.5 -69.5t79 -104.5t48.5 -109.5t22.5 -108.5t8 -78.5v-44l-4 -72h-745q14 -154 94 -223.5t237 -69.5q223 0 351 76v-152q-150 -72 -365 -71q-90 0 -165 21.5t-147.5 74.5t-113.5 159.5t-41 258.5v7.5v7.5q0 527 449 527zM279 555h598 q0 35 -8.5 78t-34 110.5t-92 112.5t-164.5 45q-152 0 -220.5 -79t-78.5 -267z" />
+<glyph unicode="f" horiz-adv-x="675" d="M612 1317q-49 0 -74.5 -4t-61.5 -24.5t-53 -73t-17 -136.5v-57h280v-135h-280v-887h-148v887h-176v135h176v55q0 106 27.5 182t62.5 112t89.5 56.5t83 22.5t67.5 2q55 0 98 -12v-131q-41 8 -74 8z" />
+<glyph unicode="g" horiz-adv-x="1101" d="M557 1040q131 0 220 -36.5t125 -94t48.5 -99.5t12.5 -83v-770q0 -68 -19.5 -125t-64.5 -111.5t-137.5 -85t-223.5 -30.5q-143 0 -291 37v139q131 -37 275 -37q98 0 164.5 17.5t96.5 50t41 64.5t11 77v102q-115 -37 -240 -37q-68 0 -127 11.5t-120.5 45.5t-105.5 88 t-71.5 144t-27.5 209q0 160 43 271.5t115.5 162.5t138 70.5t137.5 19.5zM815 203v530q0 172 -258 172q-55 0 -98 -13t-90 -50t-73 -120t-26 -206q0 -115 24.5 -189.5t72 -110.5t95.5 -48t113 -12q123 0 240 47z" />
+<glyph unicode="h" horiz-adv-x="1181" d="M649 1040q188 0 290.5 -113.5t102.5 -320.5v-606h-147v606q0 287 -262 287q-143 0 -293 -62v-831h-147v1411h147v-436q155 65 309 65z" />
+<glyph unicode="i" horiz-adv-x="540" d="M348 0v1022h-147v-1022h147zM356 1366v-162h-163v162h163z" />
+<glyph unicode="j" horiz-adv-x="514" d="M207 1366h164v-162h-164v162zM215 1022h147v-1081q0 -336 -356 -336v137q127 2 168 50t41 157v1073z" />
+<glyph unicode="k" horiz-adv-x="1124" d="M559 553l492 -553h-197l-391 449l-127 -138v-311h-148v1411h148v-891l459 502h200z" />
+<glyph unicode="l" horiz-adv-x="552" d="M354 0h-147v1411h147v-1411z" />
+<glyph unicode="m" horiz-adv-x="1824" d="M1251 1040q186 0 288.5 -98t102.5 -276v-666h-147v666q0 43 -8 76.5t-32.5 71.5t-79 58.5t-134.5 20.5q-129 0 -283 -51q33 -74 33 -176v-666h-147v666q0 45 -8.5 78.5t-33 70.5t-80.5 57.5t-138 20.5q-125 0 -244 -37v-856h-147v942q197 98 409 98q168 0 270 -84 q197 84 379 84z" />
+<glyph unicode="n" horiz-adv-x="1189" d="M600 1040q193 0 299.5 -98t106.5 -276v-666h-148v666q0 43 -9 76.5t-35 71.5t-84 58.5t-146 20.5q-129 0 -269 -41v-852h-147v940q201 100 432 100z" />
+<glyph unicode="o" horiz-adv-x="1155" d="M579.5 1040q92.5 0 170 -22.5t151.5 -76.5t117 -163.5t43 -265.5t-43 -265.5t-117 -163.5t-151.5 -76.5t-170 -22.5t-169 22.5t-150.5 76.5t-117 163.5t-43 265.5t43 265.5t117 163.5t150.5 76.5t169 22.5zM580 119q174 0 253.5 93t79.5 300t-79.5 300t-253.5 93 t-253 -94t-79 -299t79 -299t253 -94z" />
+<glyph unicode="p" horiz-adv-x="1159" d="M588 1040q57 0 111.5 -10t118 -45t109.5 -92t77.5 -158.5t31.5 -236.5q0 -152 -41 -258.5t-113.5 -159.5t-147.5 -74.5t-165 -21.5q-125 0 -254 39v-402h-147v1096q0 41 12.5 84t50 103.5t130 98t227.5 37.5zM569 121q168 0 244 89t76 290q0 129 -27.5 215t-77 125 t-94.5 52t-102 13q-272 0 -273 -182v-551q117 -51 254 -51z" />
+<glyph unicode="q" horiz-adv-x="1150" d="M115 498q0 135 31.5 236.5t77.5 158.5t109.5 92t118 45t111.5 10q111 0 193 -27.5t123 -63.5t66.5 -86t30.5 -82.5t5 -63.5v-1096h-147v402q-117 -39 -252 -39q-90 0 -165 21.5t-147.5 74.5t-113.5 159.5t-41 258.5zM262 500q0 -201 76 -290t244 -89q135 0 252 51v551 q0 182 -271 182q-57 0 -102 -13t-94.5 -52t-77 -125t-27.5 -215z" />
+<glyph unicode="r" horiz-adv-x="702" d="M662 897q-168 -4 -349 -53v-844h-147v940q231 98 496 98v-141z" />
+<glyph unicode="s" horiz-adv-x="872" d="M248 743q0 -53 56 -85.5t137 -54t162 -51.5t137.5 -101.5t56.5 -182.5q0 -133 -99.5 -208.5t-275.5 -75.5q-170 0 -309 77v156q147 -90 303 -90q233 0 233 141q0 76 -56 119t-137 64.5t-162 47t-137.5 86t-56.5 158.5q0 123 89.5 210t273.5 87q131 0 262 -63v-148 q-117 70 -246 70q-231 0 -231 -156z" />
+<glyph unicode="t" horiz-adv-x="706" d="M375 887v-623q0 -78 32.5 -109.5t114.5 -31.5q63 0 117 24v-139q-68 -25 -135 -24q-41 0 -80 9t-88 35.5t-79 89t-30 154.5v615h-178v135h178v289h148v-289h264v-135h-264z" />
+<glyph unicode="u" horiz-adv-x="1202" d="M877 1022h147v-592q0 -213 -111.5 -329.5t-316.5 -116.5t-316.5 116.5t-111.5 329.5v592h147v-600q0 -156 68 -228.5t213 -72.5q143 0 212 72.5t69 228.5v600z" />
+<glyph unicode="v" horiz-adv-x="1062" d="M842 1022h157l-393 -1022h-149l-391 1022h157l309 -838z" />
+<glyph unicode="w" horiz-adv-x="1603" d="M1368 1022h156l-340 -1022h-150l-233 764l-234 -764h-149l-340 1022h155l261 -791l235 791h141l238 -791z" />
+<glyph unicode="x" horiz-adv-x="1032" d="M600 514l363 -514h-177l-274 389l-274 -389h-181l365 518l-354 504h174l268 -379l268 379h180l-356 -504z" />
+<glyph unicode="y" horiz-adv-x="1028" d="M807 1022h158l-418 -1122q-109 -295 -322 -295q-49 0 -96 18v135q41 -18 88 -18q39 0 77 28.5t62.5 68.5t45 81t28.5 70l10 28l-377 1006h158l291 -809z" />
+<glyph unicode="z" horiz-adv-x="950" d="M840 1022v-129l-561 -752h561v-141h-748v133l557 748h-543v141h734z" />
+<glyph unicode="{" horiz-adv-x="763" d="M463 72q0 -88 39 -122t121 -38v-137q-150 0 -229 78.5t-79 228.5v319q0 111 -129 150v100q129 33 129 148v319q0 150 79 229.5t229 79.5v-139q-82 -4 -121 -36.5t-39 -123.5v-329q0 -119 -119 -199q119 -80 119 -199v-329z" />
+<glyph unicode="|" horiz-adv-x="907" d="M526 -203h-147v1565h147v-1565z" />
+<glyph unicode="}" horiz-adv-x="753" d="M315 72v329q0 117 121 199q-121 82 -121 199v329q0 90 -37.5 123t-121.5 37v139q150 0 228.5 -79.5t78.5 -229.5v-319q0 -115 129 -148v-100q-129 -39 -129 -150v-319q0 -150 -79 -228.5t-228 -78.5v137q82 4 120.5 38t38.5 122z" />
+<glyph unicode="~" horiz-adv-x="1024" d="M823 639v-123q-57 -72 -122.5 -79t-127.5 26l-122 64q-61 32 -127 25t-123 -79v125q57 72 122.5 79t127.5 -26l122 -65q61 -33 127 -26t123 79z" />
+<glyph unicode="&#xa1;" horiz-adv-x="741" d="M467 1022v-162h-164v162h164zM459 -344h-148l15 1022h118z" />
+<glyph unicode="&#xa2;" horiz-adv-x="976" d="M897 1014q-125 51 -266 55v-772q143 4 266 57v-143q-125 -49 -266 -55v-156h-103v158q-412 41 -411 526q0 268 116.5 388t294.5 136v158h103v-156q131 -2 266 -55v-141zM264 684q0 -178 63.5 -270t200.5 -111v762q-137 -20 -200.5 -111.5t-63.5 -269.5z" />
+<glyph unicode="&#xa3;" horiz-adv-x="1136" d="M727 1243q-299 0 -299 -233v-299h412v-136h-412v-415q51 -6 145.5 -25.5t154.5 -30t143 -7.5t153 30v-150q-100 -39 -229 -29.5t-230.5 38t-229.5 31.5t-231 -48v150q80 39 177 45v411h-177v136h177v293q0 158 105.5 269t328.5 111q162 0 309 -79v-150q-139 88 -297 88z " />
+<glyph unicode="&#xa5;" horiz-adv-x="1232" d="M1204 1366l-444 -645h256v-123h-322v-192h322v-123h-322v-283h-147v283h-322v123h322v192h-322v123h256l-444 645h180l404 -588l403 588h180z" />
+<glyph unicode="&#xa7;" horiz-adv-x="1112" d="M1008 629q0 -76 -51.5 -130.5t-125.5 -78.5q72 -59 72 -158q0 -131 -111.5 -204.5t-310.5 -73.5q-203 0 -350 73v152q135 -84 340 -84q285 0 285 137q0 61 -48.5 102.5t-218.5 79.5q-184 43 -277 101.5t-93 181.5q0 164 186 223q-82 51 -82 144q0 119 100.5 204.5 t309.5 85.5q156 0 297 -61v-145q-131 70 -285 69q-274 0 -274 -153q0 -25 8 -40.5t68.5 -44t179.5 -55.5q84 -18 140 -38.5t116.5 -56.5t92.5 -94t32 -136zM743 514q117 35 117 115q0 61 -49 102t-217 80q-98 23 -176 49q-152 -29 -152 -133q0 -25 8.5 -40t70 -44t179.5 -55 q135 -29 219 -74z" />
+<glyph unicode="&#xa8;" horiz-adv-x="788" d="M162 1155v162h162v-162h-162zM465 1155v162h162v-162h-162z" />
+<glyph unicode="&#xa9;" horiz-adv-x="1593" d="M799 -16q-289 0 -495 204.5t-206 493.5q0 291 206 495.5t495 204.5q291 0 495.5 -204.5t204.5 -495.5q0 -289 -204.5 -493.5t-495.5 -204.5zM799 1311q-258 0 -442.5 -184.5t-184.5 -444.5q0 -258 184.5 -442.5t442.5 -184.5q260 0 443 184.5t183 442.5q0 260 -183 444.5 t-443 184.5zM535 682q0 -170 70.5 -249t221.5 -79q121 0 234 47v-82q-115 -45 -244 -45q-369 0 -368 408q0 410 368 410q129 0 244 -45v-82q-109 45 -234 45q-152 0 -222 -79t-70 -249z" />
+<glyph unicode="&#xaa;" horiz-adv-x="806" d="M381 1382q246 0 246 -235v-172q0 -72 -46 -115t-92.5 -53t-95.5 -10t-96 10t-94 54t-47 118q0 186 297 186l92 -6q0 143 -168 144q-92 0 -164 -29v80q72 28 168 28zM545 977v108q-37 6 -101 7q-207 0 -206 -111q0 -109 155 -109q152 1 152 105z" />
+<glyph unicode="&#xab;" horiz-adv-x="1132" d="M608 911l-364 -389l364 -391h-198l-347 391l347 389h198zM997 911l-364 -389l364 -391h-198l-346 391l346 389h198z" />
+<glyph unicode="&#xac;" horiz-adv-x="1273" d="M199 664h876v-340h-135v204h-741v136z" />
+<glyph unicode="&#xad;" horiz-adv-x="950" d="M786 682v-143h-624v143h624z" />
+<glyph unicode="&#xae;" horiz-adv-x="1593" d="M926 618l219 -335h-103l-206 323h-205v-323h-86v798h293q131 0 201.5 -58t70.5 -173q0 -63 -22.5 -111.5t-57.5 -72t-58 -33t-46 -15.5zM834 688q113 0 150.5 43t37.5 112.5t-38 112.5t-150 43h-203v-311h203zM799 -16q-289 0 -495 204.5t-206 493.5q0 291 206 495.5 t495 204.5q291 0 495.5 -204.5t204.5 -495.5q0 -289 -204.5 -493.5t-495.5 -204.5zM799 1311q-258 0 -442.5 -184.5t-184.5 -444.5q0 -258 184.5 -442.5t442.5 -184.5q260 0 443 184.5t183 442.5q0 260 -183 444.5t-443 184.5z" />
+<glyph unicode="&#xaf;" horiz-adv-x="825" d="M176 1180v108h479v-108h-479z" />
+<glyph unicode="&#xb0;" horiz-adv-x="792" d="M391 1370q109 0 166 -58.5t57 -168.5q0 -227 -223 -227.5t-223 227t223 227.5zM391 989q78 0 114 36t36 118q0 80 -36 116.5t-114 36.5q-80 0 -114.5 -36.5t-34.5 -116.5q0 -82 34.5 -118t114.5 -36z" />
+<glyph unicode="&#xb1;" horiz-adv-x="1198" d="M657 721h301v-123h-301v-303h-122v303h-304v123h304v301h122v-301zM231 68v122h727v-122h-727z" />
+<glyph unicode="&#xb2;" horiz-adv-x="671" d="M240 1028h331v-80h-462v70q133 98 252.5 230t119.5 239q0 125 -172 125q-106 0 -192 -62v86q90 55 198 56q125 0 185.5 -60.5t60.5 -144.5q1 -197 -321 -459z" />
+<glyph unicode="&#xb3;" horiz-adv-x="661" d="M444 1346q6 -2 14.5 -6.5t31 -20.5t40 -36.5t31.5 -54.5t14 -71q0 -90 -66.5 -153.5t-203.5 -63.5q-102 0 -196 45v82q90 -49 186 -49q203 0 203 141t-207 141h-80v76h84q164 0 164 119q0 117 -174 117q-88 0 -158 -37v80q82 37 168 37q125 0 184.5 -58.5t59.5 -138.5 q0 -49 -23.5 -86t-48.5 -49z" />
+<glyph unicode="&#xb4;" horiz-adv-x="483" d="M240 1391h151l-170 -236h-98z" />
+<glyph unicode="&#xb5;" horiz-adv-x="1247" d="M891 1022h147v-938q-193 -100 -430 -100q-152 2 -258 82v-496h-147v1452h147v-664q0 -45 9.5 -78.5t35 -70.5t83 -57.5t145.5 -20.5q135 0 268 39v852z" />
+<glyph unicode="&#xb6;" horiz-adv-x="911" d="M549 1366h203v-1366h-136v524h-67q-229 0 -350 108.5t-121 313.5q0 203 121 311.5t350 108.5z" />
+<glyph unicode="&#xb7;" horiz-adv-x="636" d="M399 639v-164h-161v164h161z" />
+<glyph unicode="&#xb8;" horiz-adv-x="518" d="M399 -10l-129 -236h-155l168 236h116z" />
+<glyph unicode="&#xb9;" horiz-adv-x="491" d="M244 1683h90v-735h-78v651l-147 -96v94z" />
+<glyph unicode="&#xba;" horiz-adv-x="854" d="M422 1384q266 0 266 -294q0 -293 -266 -293q-113 0 -189.5 64.5t-76.5 228.5q0 86 23.5 147t64.5 92t84 43t94 12zM422 872q98 0 141 51.5t43 166t-43 167t-141 52.5q-96 0 -140 -52.5t-44 -167t44 -166t140 -51.5z" />
+<glyph unicode="&#xbb;" horiz-adv-x="1132" d="M526 911h197l348 -389l-348 -391h-197l363 391zM137 911h197l348 -389l-348 -391h-197l363 391z" />
+<glyph unicode="&#xbc;" horiz-adv-x="1433" d="M1225 295h104v-74h-104v-221h-80v221h-357v84l347 428h90v-438zM877 295h268v326zM240 1380h92v-733h-80v651l-146 -98v94zM1042 1403h97l-895 -1448h-97z" />
+<glyph unicode="&#xbd;" horiz-adv-x="1460" d="M240 1380h92v-733h-80v651l-146 -98v94zM999 80h332v-80h-461v70q133 98 252 229t119 238q0 127 -172 127q-104 0 -192 -64v88q98 55 198 55q127 0 186.5 -60t59.5 -146q0 -195 -322 -457zM1042 1403h97l-895 -1448h-97z" />
+<glyph unicode="&#xbe;" horiz-adv-x="1654" d="M471 1042q6 -2 14.5 -6t31 -20.5t39.5 -35.5t31.5 -53t14.5 -71q0 -90 -65.5 -154.5t-204.5 -64.5q-98 0 -197 47v80q94 -47 189 -47q201 0 200 141q0 68 -53 104.5t-154 36.5h-79v74h84q164 0 163.5 119t-174.5 119q-84 0 -157 -39v82q82 37 168 37q125 0 184 -58.5 t59 -140.5q0 -49 -23.5 -86t-45.5 -49zM1446 295h104v-74h-104v-221h-80v221h-356v84l346 428h90v-438zM1098 295h268v326zM1264 1403h96l-895 -1448h-96z" />
+<glyph unicode="&#xbf;" horiz-adv-x="989" d="M610 1022v-162h-164v162h164zM553 -360q-47 0 -93 7t-105.5 31.5t-102.5 64.5t-74 111.5t-31 165.5q0 82 32 141.5t77 97.5l90 76q45 38 77 101.5t32 151.5v92h147v-102q0 -104 -31.5 -181.5t-76.5 -119t-90.5 -77.5t-77 -80t-31.5 -100q0 -233 270 -233q141 0 275 90 v-160q-115 -77 -287 -77z" />
+<glyph unicode="&#xc0;" horiz-adv-x="1325" d="M735 1366l543 -1366h-158l-164 426h-589l-164 -426h-160l545 1366h147zM422 567h479l-239 625zM590 1718l117 -235h-99l-170 235h152z" />
+<glyph unicode="&#xc1;" horiz-adv-x="1325" d="M43 0l545 1366h147l543 -1366h-158l-164 426h-589l-164 -426h-160zM422 567h479l-239 625zM731 1718h152l-170 -235h-99z" />
+<glyph unicode="&#xc2;" horiz-adv-x="1325" d="M735 1366l543 -1366h-158l-164 426h-589l-164 -426h-160l545 1366h147zM422 567h479l-239 625zM705 1731l163 -248h-114l-92 145l-93 -145h-114l163 248h87z" />
+<glyph unicode="&#xc3;" horiz-adv-x="1325" d="M948 1526q-53 -66 -114.5 -73t-117.5 23l-112 59q-55 30 -116.5 22.5t-114.5 -72.5v117q53 66 114.5 71.5t116.5 -23.5l112 -60q56 -30 117.5 -23.5t114.5 71.5v-112zM735 1366l543 -1366h-158l-164 426h-589l-164 -426h-160l545 1366h147zM422 567h479l-239 625z" />
+<glyph unicode="&#xc4;" horiz-adv-x="1325" d="M428 1483v164h164v-164h-164zM731 1483v164h164v-164h-164zM735 1366l543 -1366h-158l-164 426h-589l-164 -426h-160l545 1366h147zM422 567h479l-239 625z" />
+<glyph unicode="&#xc5;" horiz-adv-x="1325" d="M735 1366l543 -1366h-158l-164 426h-589l-164 -426h-160l545 1366h147zM422 567h479l-239 625zM661.5 1759q79.5 0 122.5 -43t43 -125t-43 -125t-122.5 -43t-122.5 43t-43 125t43 125t122.5 43zM662 1493q49 0 70.5 22.5t21.5 76t-21.5 77t-70.5 23.5q-51 0 -72 -23.5 t-21 -77t21 -76t72 -22.5z" />
+<glyph unicode="&#xc6;" horiz-adv-x="1939" d="M1126 1225v-471h607v-144h-607v-469h691v-141h-838v428h-506l-252 -428h-170l811 1366h955v-141h-691zM979 575v644h-45l-375 -644h420z" />
+<glyph unicode="&#xc7;" horiz-adv-x="1286" d="M774 1247q-260 0 -381 -134t-121 -425t121 -426t381 -135q209 0 400 80v-141q-172 -68 -357 -78l-125 -232h-155l163 232q-575 35 -575 698q0 700 633 700q217 0 416 -77v-142q-187 80 -400 80z" />
+<glyph unicode="&#xc8;" horiz-adv-x="1159" d="M596 1718l117 -235h-99l-170 235h152zM326 1227v-471h628v-144h-628v-473h714v-139h-862v1366h862v-139h-714z" />
+<glyph unicode="&#xc9;" horiz-adv-x="1159" d="M680 1718h151l-169 -235h-97zM326 1227v-471h628v-144h-628v-473h714v-139h-862v1366h862v-139h-714z" />
+<glyph unicode="&#xca;" horiz-adv-x="1159" d="M662 1731l165 -248h-114l-92 145l-95 -145h-114l166 248h84zM326 1227v-471h628v-144h-628v-473h714v-139h-862v1366h862v-139h-714z" />
+<glyph unicode="&#xcb;" horiz-adv-x="1159" d="M395 1483v164h162v-164h-162zM698 1483v164h162v-164h-162zM326 1227v-471h628v-144h-628v-473h714v-139h-862v1366h862v-139h-714z" />
+<glyph unicode="&#xcc;" horiz-adv-x="501" d="M178 0v1366h148v-1366h-148zM184 1718l117 -235h-98l-170 235h151z" />
+<glyph unicode="&#xcd;" horiz-adv-x="501" d="M326 0v1366h-148v-1366h148zM319 1718h152l-170 -235h-98z" />
+<glyph unicode="&#xce;" horiz-adv-x="501" d="M326 0v1366h-148v-1366h148zM295 1731l164 -248h-115l-92 145l-92 -145h-115l164 248h86z" />
+<glyph unicode="&#xcf;" horiz-adv-x="501" d="M326 0v1366h-148v-1366h148zM18 1483v164h164v-164h-164zM322 1483v164h163v-164h-163z" />
+<glyph unicode="&#xd0;" horiz-adv-x="1468" d="M696 1366q641 0 641 -682q0 -684 -641 -684h-428v621h-159v122h159v623h428zM686 139q262 0 383 131t121 414t-121 414t-383 131h-270v-486h350v-122h-350v-482h270z" />
+<glyph unicode="&#xd1;" horiz-adv-x="1490" d="M1161 1366h148v-1366h-166l-817 1151v-1151h-148v1366h168l815 -1151v1151zM1032 1526q-53 -66 -114.5 -73t-117.5 23l-113 59q-56 30 -117.5 22.5t-114.5 -72.5v117q53 66 114.5 71.5t117.5 -23.5l113 -60q56 -30 117.5 -23.5t114.5 71.5v-112z" />
+<glyph unicode="&#xd2;" d="M125 684q0 700 633 700t633 -700t-633 -700t-633 700zM272 684q0 -291 117 -426t369 -135t368.5 135t116.5 426t-116.5 426t-368.5 135t-369 -135t-117 -426zM713 1718l116 -235h-96l-170 235h150z" />
+<glyph unicode="&#xd3;" d="M758 1384q633 0 633 -700t-633 -700t-633 700t633 700zM758 123q252 0 368.5 135t116.5 426t-116.5 426t-368.5 135t-369 -135t-117 -426t117 -426t369 -135zM801 1718h151l-170 -235h-96z" />
+<glyph unicode="&#xd4;" d="M758 1384q633 0 633 -700t-633 -700t-633 700t633 700zM758 123q252 0 368.5 135t116.5 426t-116.5 426t-368.5 135t-369 -135t-117 -426t117 -426t369 -135zM801 1731l164 -248h-115l-92 145l-92 -145h-115l164 248h86z" />
+<glyph unicode="&#xd5;" d="M758 1384q635 0 635 -700t-635 -700q-633 0 -633 700t633 700zM758 123q254 0 370.5 135t116.5 426t-116.5 426t-370.5 135q-252 0 -369 -135t-117 -426t117 -426t369 -135zM1047 1526q-53 -66 -115 -73t-118 23l-113 59q-56 30 -116.5 22.5t-113.5 -72.5v117 q53 66 113.5 71.5t116.5 -23.5l113 -60q56 -30 117.5 -23.5t115.5 71.5v-112z" />
+<glyph unicode="&#xd6;" d="M524 1483v164h164v-164h-164zM827 1483v164h164v-164h-164zM758 1384q633 0 633 -700t-633 -700t-633 700t633 700zM758 123q252 0 368.5 135t116.5 426t-116.5 426t-368.5 135t-369 -135t-117 -426t117 -426t369 -135z" />
+<glyph unicode="&#xd7;" horiz-adv-x="985" d="M705 160l-209 276l-207 -276h-131l272 364l-272 365h131l207 -277l209 277h131l-273 -365l273 -364h-131z" />
+<glyph unicode="&#xd8;" d="M1415 1366l-160 -188q137 -174 138 -494q0 -702 -635 -702q-254 0 -410 118l-86 -100h-160l158 188q-135 172 -135 496q0 700 633 700q256 0 411 -118l86 100h160zM272 684q0 -252 84 -383l721 856q-115 88 -319 88q-252 0 -369 -135t-117 -426zM1245 684q0 244 -84 381 l-721 -856q115 -88 318 -88q254 0 370.5 135t116.5 428z" />
+<glyph unicode="&#xd9;" horiz-adv-x="1476" d="M672 1718l116 -235h-96l-172 235h152zM1141 1366h147v-805q0 -281 -143.5 -429t-411.5 -148t-411.5 148.5t-143.5 428.5v805h148v-813q0 -434 407.5 -434t407.5 434v813z" />
+<glyph unicode="&#xda;" horiz-adv-x="1476" d="M795 1718h151l-170 -235h-98zM1141 1366h147v-805q0 -281 -143.5 -429t-411.5 -148t-411.5 148.5t-143.5 428.5v805h148v-813q0 -434 407.5 -434t407.5 434v813z" />
+<glyph unicode="&#xdb;" horiz-adv-x="1476" d="M776 1731l164 -248h-115l-92 145l-92 -145h-115l164 248h86zM1141 1366h147v-805q0 -281 -143.5 -429t-411.5 -148t-411.5 148.5t-143.5 428.5v805h148v-813q0 -434 407.5 -434t407.5 434v813z" />
+<glyph unicode="&#xdc;" horiz-adv-x="1476" d="M500 1483v164h164v-164h-164zM803 1483v164h164v-164h-164zM1141 1366h147v-805q0 -281 -143.5 -429t-411.5 -148t-411.5 148.5t-143.5 428.5v805h148v-813q0 -434 407.5 -434t407.5 434v813z" />
+<glyph unicode="&#xdd;" horiz-adv-x="1224" d="M655 1718h150l-170 -235h-96zM1012 1366h178l-508 -739v-627h-147v627l-510 739h178l405 -596z" />
+<glyph unicode="&#xde;" horiz-adv-x="1167" d="M590 1159q227 0 349 -109.5t122 -314.5t-122 -313.5t-349 -108.5h-266v-313h-148v1366h148v-207h266zM569 455q109 0 181.5 23.5t105.5 68.5t45 88t12 100.5t-12 100.5t-45 88t-105.5 68.5t-181.5 23.5h-245v-561h245z" />
+<glyph unicode="&#xdf;" horiz-adv-x="1255" d="M889 705q10 -4 27.5 -12.5t61.5 -39t76.5 -66.5t60.5 -94.5t28 -123.5q0 -170 -150.5 -269.5t-384.5 -99.5v133q162 0 274.5 61.5t112.5 188.5q0 129 -120.5 188.5t-266.5 59.5v129q145 0 232.5 62.5t87.5 181.5q0 123 -85 183t-222 60q-141 0 -217 -87t-76 -300v-860 h-148v868q0 113 23.5 203t73 162t136.5 111.5t208 39.5q229 0 341.5 -112.5t112.5 -267.5q0 -51 -19.5 -100.5t-46 -84.5t-54 -61.5t-46.5 -40.5z" />
+<glyph unicode="&#xe0;" horiz-adv-x="1093" d="M522 1040q215 0 328 -108.5t113 -315.5v-309q0 -98 -45.5 -167.5t-117 -100.5t-134 -43t-123.5 -12q-47 0 -96.5 6t-112 27.5t-108.5 55t-78.5 96t-32.5 144.5q0 70 25.5 125.5t62.5 90t94 59t101 36t104.5 17.5t86 7t60.5 1l164 -10q0 137 -75.5 195.5t-223.5 58.5 q-166 0 -299 -49v143q151 53 307 53zM815 307v197q-68 12 -182 12q-371 0 -371 -203q0 -193 281 -192q272 0 272 186zM506 1391l117 -236h-97l-170 236h150z" />
+<glyph unicode="&#xe1;" horiz-adv-x="1093" d="M522 1040q215 0 328 -108.5t113 -315.5v-309q0 -98 -45.5 -167.5t-117 -100.5t-134 -43t-123.5 -12q-47 0 -96.5 6t-112 27.5t-108.5 55t-78.5 96t-32.5 144.5q0 70 25.5 125.5t62.5 90t94 59t101 36t104.5 17.5t86 7t60.5 1l164 -10q0 137 -75.5 195.5t-223.5 58.5 q-166 0 -299 -49v143q151 53 307 53zM815 307v197q-68 12 -182 12q-371 0 -371 -203q0 -193 281 -192q272 0 272 186zM584 1391h151l-170 -236h-98z" />
+<glyph unicode="&#xe2;" horiz-adv-x="1093" d="M522 1040q215 0 328 -108.5t113 -315.5v-309q0 -98 -45.5 -167.5t-117 -100.5t-134 -43t-123.5 -12q-47 0 -96.5 6t-112 27.5t-108.5 55t-78.5 96t-32.5 144.5q0 70 25.5 125.5t62.5 90t94 59t101 36t104.5 17.5t86 7t60.5 1l164 -10q0 137 -75.5 195.5t-223.5 58.5 q-166 0 -299 -49v143q151 53 307 53zM815 307v197q-68 12 -182 12q-371 0 -371 -203q0 -193 281 -192q272 0 272 186zM612 1401l164 -246h-114l-93 143l-92 -143h-115l164 246h86z" />
+<glyph unicode="&#xe3;" horiz-adv-x="1093" d="M522 1040q215 0 328 -108.5t113 -315.5v-309q0 -98 -45.5 -167.5t-117 -100.5t-134 -43t-123.5 -12q-47 0 -96.5 6t-112 27.5t-108.5 55t-78.5 96t-32.5 144.5q0 70 25.5 125.5t62.5 90t93 59t101 36t105.5 17.5t85 7t59.5 1l166 -10q0 137 -75.5 195.5t-223.5 58.5 q-150 0 -299 -47v141q141 53 307 53zM815 307v197q-68 12 -182 12q-371 0 -371 -201q0 -195 281 -194q272 0 272 186zM846 1198q-53 -66 -114.5 -73t-118.5 23l-112 59q-56 30 -117.5 23t-115.5 -73v117q53 66 114.5 72t118.5 -24l112 -59q56 -30 118 -24t115 72v-113z" />
+<glyph unicode="&#xe4;" horiz-adv-x="1093" d="M336 1155v162h164v-162h-164zM639 1155v162h164v-162h-164zM522 1040q215 0 328 -108.5t113 -315.5v-309q0 -98 -45.5 -167.5t-117 -100.5t-134 -43t-123.5 -12q-47 0 -96.5 6t-112 27.5t-108.5 55t-78.5 96t-32.5 144.5q0 70 25.5 125.5t62.5 90t94 59t101 36 t104.5 17.5t86 7t60.5 1l164 -10q0 137 -75.5 195.5t-223.5 58.5q-166 0 -299 -49v143q151 53 307 53zM815 307v197q-68 12 -182 12q-371 0 -371 -203q0 -193 281 -192q272 0 272 186z" />
+<glyph unicode="&#xe5;" horiz-adv-x="1093" d="M522 1040q215 0 328 -108.5t113 -315.5v-309q0 -98 -45.5 -167.5t-117 -100.5t-134 -43t-123.5 -12q-47 0 -96.5 6t-112 27.5t-108.5 55t-78.5 96t-32.5 144.5q0 70 25.5 125.5t62.5 90t94 59t101 36t104.5 17.5t86 7t60.5 1l164 -10q0 137 -75.5 195.5t-223.5 58.5 q-166 0 -299 -49v143q151 53 307 53zM815 307v197q-68 12 -182 12q-371 0 -371 -203q0 -193 281 -192q272 0 272 186zM559 1432q80 0 123 -43t43 -125t-43 -125t-123 -43t-123 43t-43 125t43 125t123 43zM559 1163q49 0 70.5 23.5t21.5 77t-21.5 76t-70.5 22.5 q-51 0 -71.5 -22.5t-20.5 -76t20.5 -77t71.5 -23.5z" />
+<glyph unicode="&#xe6;" horiz-adv-x="1824" d="M1255 1040q94 0 171 -29.5t122 -69.5t79 -104.5t48.5 -109.5t22.5 -108.5t8 -78.5v-44l-4 -72h-746q14 -154 94 -223.5t240 -69.5q219 0 350 76v-152q-154 -72 -366 -71q-248 0 -365 151q-104 -152 -370 -151q-47 0 -96.5 6t-112 27.5t-108.5 55t-78.5 96t-32.5 144.5 q0 70 25.5 125.5t62.5 90t93 59t101 36t105.5 17.5t85 7t59.5 1l166 -10q0 137 -76 195.5t-223 58.5q-166 0 -299 -49v143q152 53 305 53q268 0 377 -168q112 168 362 168zM809 307v197q-66 12 -180 12q-371 0 -371 -203q0 -193 281 -192q270 0 270 186zM956 555h598 q0 35 -8 78t-33.5 110.5t-92 112.5t-165.5 45q-150 0 -219.5 -79t-79.5 -267z" />
+<glyph unicode="&#xe7;" horiz-adv-x="966" d="M614 899q-182 0 -265 -92t-83 -295q0 -205 83 -296t265 -91q154 0 287 57v-143q-115 -41 -225 -53l-127 -230h-156l164 228q-86 4 -157.5 30.5t-138 83t-104.5 162t-38 252.5q0 156 43 265.5t116.5 163.5t150.5 76.5t169 22.5q154 0 303 -57v-141q-140 57 -287 57z" />
+<glyph unicode="&#xe8;" horiz-adv-x="1136" d="M578 1040q94 0 170.5 -29.5t121.5 -69.5t79 -104.5t48.5 -109.5t22.5 -108.5t8 -78.5v-44l-4 -72h-745q14 -154 94 -223.5t237 -69.5q223 0 351 76v-152q-150 -72 -365 -71q-90 0 -165 21.5t-147.5 74.5t-113.5 159.5t-41 258.5v10q-2 532 449 532zM279 555h598 q0 35 -8.5 78t-34 110.5t-92 112.5t-164.5 45q-152 0 -220.5 -79t-78.5 -267zM547 1391l117 -236h-99l-170 236h152z" />
+<glyph unicode="&#xe9;" horiz-adv-x="1136" d="M578 1040q94 0 170.5 -29.5t121.5 -69.5t79 -104.5t48.5 -109.5t22.5 -108.5t8 -78.5v-44l-4 -72h-745q14 -154 94 -223.5t237 -69.5q223 0 351 76v-152q-150 -72 -365 -71q-90 0 -165 21.5t-147.5 74.5t-113.5 159.5t-41 258.5v10q-2 532 449 532zM279 555h598 q0 35 -8.5 78t-34 110.5t-92 112.5t-164.5 45q-152 0 -220.5 -79t-78.5 -267zM623 1391h151l-170 -236h-98z" />
+<glyph unicode="&#xea;" horiz-adv-x="1136" d="M578 1040q94 0 170.5 -29.5t121.5 -69.5t79 -104.5t48.5 -109.5t22.5 -108.5t8 -78.5v-44l-4 -72h-745q14 -154 94 -223.5t237 -69.5q223 0 351 76v-152q-150 -72 -365 -71q-90 0 -165 21.5t-147.5 74.5t-113.5 159.5t-41 258.5v10q-2 532 449 532zM279 555h598 q0 35 -8.5 78t-34 110.5t-92 112.5t-164.5 45q-152 0 -220.5 -79t-78.5 -267zM621 1401l163 -246h-114l-92 143l-93 -143h-114l164 246h86z" />
+<glyph unicode="&#xeb;" horiz-adv-x="1136" d="M578 1040q94 0 170.5 -29.5t121.5 -69.5t79 -104.5t48.5 -109.5t22.5 -108.5t8 -78.5v-44l-4 -72h-745q14 -154 94 -223.5t237 -69.5q223 0 351 76v-152q-150 -72 -365 -71q-90 0 -165 21.5t-147.5 74.5t-113.5 159.5t-41 258.5v10q-2 532 449 532zM279 555h598 q0 35 -8.5 78t-34 110.5t-92 112.5t-164.5 45q-152 0 -220.5 -79t-78.5 -267zM344 1155v162h164v-162h-164zM647 1155v162h164v-162h-164z" />
+<glyph unicode="&#xec;" horiz-adv-x="552" d="M203 0v1022h147v-1022h-147zM209 1391l117 -236h-99l-170 236h152z" />
+<glyph unicode="&#xed;" horiz-adv-x="552" d="M350 0v1022h-147v-1022h147zM342 1391h152l-170 -236h-97z" />
+<glyph unicode="&#xee;" horiz-adv-x="552" d="M350 0v1022h-147v-1022h147zM317 1401l166 -246h-114l-93 143l-94 -143h-114l165 246h84z" />
+<glyph unicode="&#xef;" horiz-adv-x="552" d="M350 0v1022h-147v-1022h147zM43 1155v162h162v-162h-162zM346 1155v162h162v-162h-162z" />
+<glyph unicode="&#xf0;" horiz-adv-x="1193" d="M852 1223q197 -193 197 -596q0 -643 -465 -643q-123 0 -216.5 41t-145.5 109.5t-77.5 147t-25.5 162.5q0 199 125 314.5t340 115.5q186 0 307 -90q-25 244 -174 365l-230 -129l-55 98l170 94q-86 33 -192 33q-41 0 -111 -8v137q66 10 127 10q184 0 328 -86l190 107 l53 -98zM584 123q43 0 70.5 3t78.5 29.5t83 75t57.5 148.5t27.5 242q-111 117 -317 116q-154 0 -236 -75.5t-82 -215.5q0 -41 9.5 -84t38 -103t98.5 -98t172 -38z" />
+<glyph unicode="&#xf1;" horiz-adv-x="1189" d="M600 1040q193 0 299.5 -98t106.5 -276v-666h-148v666q0 43 -9 76.5t-35 71.5t-84 58.5t-146 20.5q-129 0 -269 -41v-852h-147v940q201 100 432 100zM874 1198q-53 -66 -114.5 -73t-117.5 23l-113 59q-56 30 -116.5 23t-113.5 -73v117q53 66 113.5 72t116.5 -24l113 -59 q56 -30 117.5 -24t114.5 72v-113z" />
+<glyph unicode="&#xf2;" horiz-adv-x="1155" d="M100 512q0 156 43 265.5t117 163.5t151.5 76.5t170 22.5t169 -22.5t150.5 -76.5t117 -163.5t43 -265.5t-43 -265.5t-117 -163.5t-150.5 -76.5t-169 -22.5t-170 22.5t-151.5 76.5t-117 163.5t-43 265.5zM248 512q0 -207 80 -300t254 -93t252.5 94t78.5 299t-78.5 299 t-252.5 94t-254 -93t-80 -300zM514 1391l117 -236h-99l-170 236h152z" />
+<glyph unicode="&#xf3;" horiz-adv-x="1155" d="M581.5 1040q92.5 0 169 -22.5t150.5 -76.5t117 -163.5t43 -265.5t-43 -265.5t-117 -163.5t-150.5 -76.5t-169 -22.5t-170 22.5t-151.5 76.5t-117 163.5t-43 265.5t43 265.5t117 163.5t151.5 76.5t170 22.5zM582 119q174 0 252.5 94t78.5 299t-78.5 299t-252.5 94 t-254 -93t-80 -300t80 -300t254 -93zM647 1391h152l-170 -236h-99z" />
+<glyph unicode="&#xf4;" horiz-adv-x="1155" d="M100 512q0 156 43 265.5t117 163.5t151.5 76.5t170 22.5t169 -22.5t150.5 -76.5t117 -163.5t43 -265.5t-43 -265.5t-117 -163.5t-150.5 -76.5t-169 -22.5t-170 22.5t-151.5 76.5t-117 163.5t-43 265.5zM248 512q0 -207 80 -300t254 -93t252.5 94t78.5 299t-78.5 299 t-252.5 94t-254 -93t-80 -300zM623 1401l165 -246h-114l-92 143l-95 -143h-114l166 246h84z" />
+<glyph unicode="&#xf5;" horiz-adv-x="1155" d="M100 512q0 156 43 265.5t117 163.5t150.5 76.5t169 22.5t170 -22.5t151.5 -76.5t117 -163.5t43 -265.5t-43 -265.5t-117 -163.5t-151.5 -76.5t-170 -22.5t-169 22.5t-150.5 76.5t-117 163.5t-43 265.5zM248 512q0 -207 79 -300t253 -93t253.5 93t79.5 300t-79.5 300 t-253.5 93t-253 -93t-79 -300zM877 1198q-53 -66 -115 -73t-118 23l-113 59q-56 30 -116.5 24t-113.5 -72v115q53 66 113.5 73t116.5 -23l113 -60q56 -31 117.5 -24t115.5 73v-115z" />
+<glyph unicode="&#xf6;" horiz-adv-x="1155" d="M100 512q0 156 43 265.5t117 163.5t151.5 76.5t170 22.5t169 -22.5t150.5 -76.5t117 -163.5t43 -265.5t-43 -265.5t-117 -163.5t-150.5 -76.5t-169 -22.5t-170 22.5t-151.5 76.5t-117 163.5t-43 265.5zM248 512q0 -207 80 -300t254 -93t252.5 94t78.5 299t-78.5 299 t-252.5 94t-254 -93t-80 -300zM348 1155v162h162v-162h-162zM651 1155v162h162v-162h-162z" />
+<glyph unicode="&#xf7;" horiz-adv-x="1286" d="M561 735v164h164v-164h-164zM561 152v163h164v-163h-164zM1059 465v123h-832v-123h832z" />
+<glyph unicode="&#xf8;" horiz-adv-x="1175" d="M938 1022h160l-125 -150q94 -131 94 -360q0 -156 -43 -265.5t-116.5 -163.5t-150.5 -76.5t-169 -22.5q-182 0 -297 79l-55 -63h-160l127 152q-96 133 -97 360q0 156 43.5 265.5t117 163.5t151.5 76.5t170 22.5q180 0 297 -82zM254 512q0 -158 45 -246l496 586 q-78 53 -207 53q-174 0 -254 -93t-80 -300zM920 512q0 156 -46 246l-493 -588q76 -51 207 -51q174 0 253 93t79 300z" />
+<glyph unicode="&#xf9;" horiz-adv-x="1202" d="M877 1022h147v-592q0 -213 -111.5 -329.5t-316.5 -116.5t-316.5 116.5t-111.5 329.5v592h147v-600q0 -156 68 -228.5t213 -72.5q143 0 212 72.5t69 228.5v600zM535 1391l116 -236h-98l-170 236h152z" />
+<glyph unicode="&#xfa;" horiz-adv-x="1202" d="M877 1022h147v-592q0 -213 -111.5 -329.5t-316.5 -116.5t-316.5 116.5t-111.5 329.5v592h147v-600q0 -156 68 -228.5t213 -72.5q143 0 212 72.5t69 228.5v600zM657 1391h150l-170 -236h-96z" />
+<glyph unicode="&#xfb;" horiz-adv-x="1202" d="M877 1022h147v-592q0 -213 -111.5 -329.5t-316.5 -116.5t-316.5 116.5t-111.5 329.5v592h147v-600q0 -156 68 -228.5t213 -72.5q143 0 212 72.5t69 228.5v600zM637 1401l166 -246h-115l-92 143l-92 -143h-115l164 246h84z" />
+<glyph unicode="&#xfc;" horiz-adv-x="1202" d="M877 1022h147v-592q0 -213 -111.5 -329.5t-316.5 -116.5t-316.5 116.5t-111.5 329.5v592h147v-600q0 -156 68 -228.5t213 -72.5q143 0 212 72.5t69 228.5v600zM362 1155v162h164v-162h-164zM666 1155v162h163v-162h-163z" />
+<glyph unicode="&#xfd;" horiz-adv-x="1028" d="M807 1022h158l-418 -1122q-109 -295 -320 -295q-51 0 -98 18v135q41 -18 88 -18q63 0 118.5 68.5t80.5 138.5l24 69l-377 1006h158l293 -809zM565 1391h152l-170 -236h-98z" />
+<glyph unicode="&#xfe;" horiz-adv-x="1136" d="M569 1026q70 0 131.5 -12.5t125 -47t109.5 -90t74.5 -149.5t28.5 -217q0 -152 -42 -258.5t-114.5 -159.5t-148.5 -74.5t-164 -21.5q-129 0 -252 41v-414h-147v1776h147v-414q123 41 252 41zM569 133q170 0 246 89t76 288t-76 289t-246 90q-135 0 -252 -51v-654 q117 -51 252 -51z" />
+<glyph unicode="&#xff;" horiz-adv-x="1028" d="M807 1022h158l-418 -1122q-109 -295 -320 -295q-51 0 -98 18v135q41 -18 88 -18q63 0 118.5 68.5t80.5 138.5l24 69l-377 1006h158l293 -809zM279 1155v162h161v-162h-161zM582 1155v162h161v-162h-161z" />
+<glyph unicode="&#x152;" horiz-adv-x="2029" d="M1894 1227h-716v-471h628v-144h-628v-473h716v-139h-864v27q-117 -43 -274 -43q-633 0 -633 700t633 700q160 0 274 -45v27h864v-139zM756 123q170 0 274 59v1004q-109 59 -274 59q-252 0 -369 -135t-117 -426t117 -426t369 -135z" />
+<glyph unicode="&#x153;" horiz-adv-x="1921" d="M1356 1040q94 0 170 -29.5t122 -69.5t78.5 -104.5t47 -109.5t22.5 -108.5t8 -78.5v-44l-2 -72h-745q14 -154 94 -223.5t238 -69.5q219 0 350 76v-152q-150 -72 -365 -71q-276 0 -393 190q-119 -190 -399 -190q-92 0 -169 22.5t-151 76.5t-117 163.5t-43 265.5t43 265.5 t117 163.5t150.5 76.5t169.5 22.5q279 0 397 -186q113 186 377 186zM582 119q174 0 253.5 93t79.5 300t-79.5 300t-253.5 93t-253 -93t-79 -300t79 -300t253 -93zM1055 555h600q0 33 -8.5 77t-35 111.5t-93 112.5t-162.5 45q-152 0 -221.5 -79t-79.5 -267z" />
+<glyph unicode="&#x178;" horiz-adv-x="1224" d="M375 1483v164h164v-164h-164zM678 1483v164h164v-164h-164zM1012 1366h178l-508 -739v-627h-147v627l-510 739h178l405 -596z" />
+<glyph unicode="&#x2c6;" horiz-adv-x="823" d="M457 1401l164 -246h-115l-92 143l-92 -143h-115l166 246h84z" />
+<glyph unicode="&#x2dc;" horiz-adv-x="1038" d="M791 1198q-53 -66 -115 -73t-118 23l-113 59q-56 30 -116.5 23t-113.5 -73v117q53 66 113.5 72t116.5 -24l113 -59q56 -30 117.5 -24t115.5 72v-113z" />
+<glyph unicode="&#x2000;" horiz-adv-x="878" />
+<glyph unicode="&#x2001;" horiz-adv-x="1759" />
+<glyph unicode="&#x2002;" horiz-adv-x="878" />
+<glyph unicode="&#x2003;" horiz-adv-x="1759" />
+<glyph unicode="&#x2004;" horiz-adv-x="585" />
+<glyph unicode="&#x2005;" horiz-adv-x="438" />
+<glyph unicode="&#x2006;" horiz-adv-x="292" />
+<glyph unicode="&#x2007;" horiz-adv-x="292" />
+<glyph unicode="&#x2008;" horiz-adv-x="219" />
+<glyph unicode="&#x2009;" horiz-adv-x="350" />
+<glyph unicode="&#x200a;" horiz-adv-x="96" />
+<glyph unicode="&#x2010;" horiz-adv-x="950" d="M786 682v-143h-624v143h624z" />
+<glyph unicode="&#x2011;" horiz-adv-x="950" d="M786 682v-143h-624v143h624z" />
+<glyph unicode="&#x2012;" horiz-adv-x="950" d="M786 682v-143h-624v143h624z" />
+<glyph unicode="&#x2013;" horiz-adv-x="1146" d="M1001 655v-127h-860v127h860z" />
+<glyph unicode="&#x2014;" horiz-adv-x="1824" d="M1663 664v-136h-1501v136h1501z" />
+<glyph unicode="&#x2018;" horiz-adv-x="522" d="M264 1384l152 -401h-148l-172 401h168z" />
+<glyph unicode="&#x2019;" horiz-adv-x="522" d="M248 1384h168l-172 -401h-148z" />
+<glyph unicode="&#x201a;" horiz-adv-x="614" d="M299 172h166l-170 -401h-148z" />
+<glyph unicode="&#x201c;" horiz-adv-x="800" d="M543 1384l151 -401h-147l-172 401h168zM264 1384l152 -401h-148l-172 401h168z" />
+<glyph unicode="&#x201d;" horiz-adv-x="792" d="M248 1384h168l-172 -401h-148zM526 1384h168l-172 -401h-147z" />
+<glyph unicode="&#x201e;" horiz-adv-x="892" d="M299 172h166l-170 -401h-148zM578 172h167l-172 -401h-147z" />
+<glyph unicode="&#x2022;" horiz-adv-x="849" d="M657 684q0 -98 -69.5 -168t-165.5 -70q-98 0 -168 70t-70 168t70 167t168 69q96 0 165.5 -69t69.5 -167z" />
+<glyph unicode="&#x2026;" horiz-adv-x="1576" d="M219 0v164h164v-164h-164zM1200 0v164h162v-164h-162zM711 0v164h161v-164h-161z" />
+<glyph unicode="&#x202f;" horiz-adv-x="350" />
+<glyph unicode="&#x2039;" horiz-adv-x="710" d="M608 911l-364 -389l364 -391h-198l-347 391l347 389h198z" />
+<glyph unicode="&#x203a;" horiz-adv-x="776" d="M137 911h197l348 -389l-348 -391h-197l363 391z" />
+<glyph unicode="&#x205f;" horiz-adv-x="438" />
+<glyph unicode="&#x20ac;" horiz-adv-x="1390" d="M883 1245q-207 0 -325 -84t-157 -260h658v-123h-674q-4 -61 -4 -94q0 -37 4 -94h674v-123h-658q39 -176 157 -260t325 -84q209 0 399 80v-142q-203 -78 -416 -77q-524 0 -614 483h-150v123h136q-4 61 -4.5 94t4.5 94h-136v123h150q90 483 614 483q215 0 416 -79v-142 q-194 82 -399 82z" />
+<glyph unicode="&#x2122;" horiz-adv-x="1550" d="M100 1366h557v-72h-241v-610h-74v610h-242v72zM1313 1366h80v-682h-74v561l-242 -348l-241 348v-561h-74v682h80l235 -346z" />
+<glyph unicode="&#xe000;" horiz-adv-x="1020" d="M0 1020h1020v-1020h-1020v1020z" />
+<glyph unicode="&#xfb01;" horiz-adv-x="1202" d="M1040 0v1022h-147v-1022h147zM1049 1366v-162h-164v162h164zM616 1317q-39 0 -59 -2t-54 -14.5t-52.5 -35t-33 -70.5t-14.5 -116v-55h287v-137h-287v-887h-143v887h-176v137h176v53q0 106 28.5 182t63.5 112t89.5 56.5t82 22.5t66.5 2q53 0 100 -10v-133q-41 8 -74 8z " />
+<glyph unicode="&#xfb02;" horiz-adv-x="1220" d="M1040 0v1411h-147v-1411h147zM616 1317q-39 0 -59 -2t-54 -14.5t-52.5 -35t-33 -70.5t-14.5 -116v-55h287v-137h-287v-887h-143v887h-176v137h176v53q0 106 28.5 182t63.5 112t89.5 56.5t82 22.5t66.5 2q53 0 100 -10v-133q-41 8 -74 8z" />
+<glyph unicode="&#xfb03;" horiz-adv-x="1892" d="M1700 0v1022h-147v-1022h147zM1708 1366v-162h-163v162h163zM1288 1317q-49 0 -74.5 -4t-61.5 -24.5t-53 -73t-17 -136.5v-57h280v-135h-280v-887h-148v887h-176v135h176v55q0 106 27.5 182t62.5 112t89.5 56.5t83 22.5t67.5 2q55 0 98 -12v-131q-41 8 -74 8zM612 1317 q-49 0 -74.5 -4t-61.5 -24.5t-53 -73t-17 -136.5v-57h280v-135h-280v-887h-148v887h-176v135h176v55q0 106 27.5 182t62.5 112t89.5 56.5t83 22.5t67.5 2q55 0 98 -12v-131q-41 8 -74 8z" />
+<glyph unicode="&#xfb04;" horiz-adv-x="1904" d="M1706 0h-147v1411h147v-1411zM1288 1317q-49 0 -74.5 -4t-61.5 -24.5t-53 -73t-17 -136.5v-57h280v-135h-280v-887h-148v887h-176v135h176v55q0 106 27.5 182t62.5 112t89.5 56.5t83 22.5t67.5 2q55 0 98 -12v-131q-41 8 -74 8zM612 1317q-49 0 -74.5 -4t-61.5 -24.5 t-53 -73t-17 -136.5v-57h280v-135h-280v-887h-148v887h-176v135h176v55q0 106 27.5 182t62.5 112t89.5 56.5t83 22.5t67.5 2q55 0 98 -12v-131q-41 8 -74 8z" />
+</font>
+</defs></svg> 
\ No newline at end of file
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/fonts/opensans.css
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/fonts/opensans.css	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/fonts/opensans.css	(revision 47450)
@@ -0,0 +1,13 @@
+/* Copyright (C) YOOtheme GmbH, YOOtheme Proprietary Use License (http://www.yootheme.com/license) */
+
+@font-face {
+	font-family: 'OpenSansLight';
+	src: url('OpenSans-Light-webfont.eot');
+	src: url('OpenSans-Light-webfont.eot?#iefix') format('embedded-opentype'),
+		url('OpenSans-Light-webfont.woff') format('woff'),
+		url('OpenSans-Light-webfont.ttf') format('truetype'),
+		url('OpenSans-Light-webfont.svg#OpenSansLight') format('svg');
+	font-weight: normal;
+	font-style: normal;
+}
+
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/manuals/user-manual.pdf
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/manuals/user-manual.pdf
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/manuals/user-manual.pdf	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/manuals/user-manual.pdf	(revision 47450)

Property changes on: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/manuals/user-manual.pdf
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/ddmenu.css
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/ddmenu.css	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/ddmenu.css	(revision 47450)
@@ -0,0 +1,159 @@
+
+/*  Generated by www.menucool.com/drop-down-menu  */
+
+/* main menu
+----------------------------*/
+#ddmenu
+{
+    display:block;
+    font-family: "YanoneKaffeesatzLight";
+    text-align:center;
+    letter-spacing:normal;
+	float: right;
+        position: absolute;
+        bottom: 0;
+        right: 0;
+}
+
+#ddmenu ul
+{ 
+    width:100%;
+    margin:0; /*If above width is not 100% and you want this menu to align in the center of its container, set it as { margin: 0 auto; }*/
+    padding:0;
+    display:inline-block;
+    list-style:none;
+    position:relative;
+    font-size:0;
+    *z-index:999;
+}
+
+#ddmenu li
+{
+    margin:0;
+    padding:0;
+    display:inline-block;
+    position:relative;
+ float: left;
+        font-size: 22px;
+        text-transform: uppercase;
+        line-height:50px
+}
+
+#ddmenu a
+{
+    padding:0 12px;
+    font-weight:normal;
+    text-decoration:none;
+    display:inline-block;
+    outline:0;
+    position:relative;
+    white-space:nowrap;
+	color:#3440B5;
+}
+
+#ddmenu li.over
+{
+    z-index:9999999998;
+}
+
+/* links without sub-menu */
+#ddmenu li.over a
+{
+        color: #2D72D6;
+        background: #D0D0D0;
+}
+
+/* links with sub-menu */
+#ddmenu a.arrow
+{
+}
+#ddmenu li.over a.arrow
+{
+background: #D0D0D0 url(images/menu_dropdown_level1_parent_blue.png) 50% 100% no-repeat;
+    z-index:9999999999;
+    /*text-decoration:underline;*/
+}
+
+#ddmenu div 
+{
+    padding:0;
+    margin:0;
+}              
+        
+/* sub-menu layout
+----------------------------*/
+     
+
+#ddmenu div.drop
+{
+    position:absolute;
+    text-align:left;
+    background:#3440B5;
+    color: #bcbcbc;
+	font-size:18px;
+    padding:20px;
+    line-height:30px;
+}
+  
+#ddmenu div
+{
+    display:none;
+}
+/* sub-menu offset
+----------------------------*/
+
+#ddmenu div.drop
+{
+    left:0px;/*Use this property to change offset of the sub-menu*/
+}
+#ddmenu div.dropToLeft
+{
+    left:auto; right:0px;
+}
+#ddmenu div.dropToLeft2
+{
+    left:auto; right:-120px;
+}
+  
+/* links in sub menu
+----------------------------*/
+
+#ddmenu div.drop a
+{
+    background:#3440B5;
+    color:#bcbcbc;
+    text-decoration:none;    
+    display:block;
+    text-align:left;    
+    position:static;
+    padding:0 0;
+}
+
+#ddmenu div.drop a:hover
+{
+    color:#00B5F0;
+}
+
+/* blocks within the sub-menu
+----------------------------*/
+
+#ddmenu div.drop div
+{
+    background:none;    
+}  
+
+#ddmenu div.column
+{
+    width:auto;
+    float:left; /*align each column in one row*/
+    padding:0 10px; /*padding of each column*/
+}
+
+#ddmenu div.column div
+{
+   padding:0px 10px; /*sub-div within div.column. 10px for indent.*/
+}
+
+/* useful when http://www.menucool.com/ddmenu/one-menu-for-all-pages
+----------------------------*/
+#ddmenuLink {display:none;}
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/java/eu/dnetlib/validator/admin/api/impls/UserApiLocal.java
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/java/eu/dnetlib/validator/admin/api/impls/UserApiLocal.java	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/java/eu/dnetlib/validator/admin/api/impls/UserApiLocal.java	(revision 47450)
@@ -0,0 +1,135 @@
+package eu.dnetlib.validator.admin.api.impls;
+
+import java.math.BigInteger;
+import java.security.MessageDigest;
+import java.util.UUID;
+
+import org.apache.log4j.Logger;
+import org.springframework.transaction.annotation.Propagation;
+import org.springframework.transaction.annotation.Transactional;
+
+import eu.dnetlib.domain.functionality.UserProfile;
+import eu.dnetlib.validator.admin.api.UserApi;
+import eu.dnetlib.validator.commons.dao.users.UsersDAO;
+
+@Transactional(propagation = Propagation.REQUIRED)
+public class UserApiLocal implements UserApi {
+
+	private static Logger logger = Logger.getLogger(UserApiLocal.class);
+	private UsersDAO usersDao;
+
+	@Override
+	@Transactional()
+	public boolean activateUser(String activationId) throws Exception {
+		usersDao.activateUser(activationId);
+		return true;
+	}
+
+	@Override
+	@Transactional(propagation = Propagation.REQUIRED)
+	public String addUser(String username, String email, String password, String firstName, String lastName,  String institution) throws Exception {
+		String hashword;
+		MessageDigest md5 = MessageDigest.getInstance("MD5");
+		md5.update(password.getBytes());
+		BigInteger hash = new BigInteger(1, md5.digest());
+		hashword = hash.toString(16);
+		String activationId = UUID.randomUUID().toString();
+		UserProfile newUser = new UserProfile();
+		newUser.setEmail(email);
+		newUser.setPassword(hashword);
+		newUser.setFirstname(firstName);
+		newUser.setLastname(lastName);
+		newUser.setUsername(username);
+		newUser.setInstitution(institution);
+		newUser.setActivationId(activationId);
+		usersDao.save(newUser);
+		return activationId;
+	}
+
+	@Override
+	public boolean correctCreds(String email, String password) throws Exception {
+		String hashword;
+		MessageDigest md5 = MessageDigest.getInstance("MD5");
+		md5.update(password.getBytes());
+		BigInteger hash = new BigInteger(1, md5.digest());
+		hashword = hash.toString(16);
+		
+		if (usersDao.checkCorrectCreds(email, hashword)) {
+			logger.debug("Password verified");
+			return true;
+		} else {
+			logger.debug("no user found with email: " + email + " and pass: " + password + " (" + hashword + ")");
+
+			return false;
+		}
+	}
+
+	@Override
+	public boolean isAdmin(String email) throws Exception {
+		return usersDao.isAdmin(email);
+	}
+
+	@Override
+	public boolean isUserActivated(String email) throws Exception {
+		return usersDao.isActivated(email);
+	}
+
+	@Override
+	@Transactional(propagation = Propagation.REQUIRED)
+	public String prepareResetPassword(String email) throws Exception {
+		String uuid = UUID.randomUUID().toString();
+		usersDao.prepareResetPassword(uuid,email);
+		return uuid;
+	}
+
+	@Override
+	@Transactional(propagation = Propagation.REQUIRED)
+	public void resetPassword(String uuid, String password) throws Exception {
+		String hashword;
+		MessageDigest md5 = MessageDigest.getInstance("MD5");
+		md5.update(password.getBytes());
+		BigInteger hash = new BigInteger(1, md5.digest());
+		hashword = hash.toString(16);
+		usersDao.ResetPassword(uuid, hashword);
+	}
+
+	@Override
+	public boolean userExists(String email) throws Exception {
+		return usersDao.userExists(email);
+	}
+
+	@Override
+	public void editUser(UserProfile user) throws Exception {
+		this.usersDao.save(user);
+
+	}
+
+	@Override
+	public boolean usernameExists(String username) throws Exception {
+		return usersDao.usernameExists(username);
+	}
+
+	@Override
+	public String getEmailFromUsername(String username) throws Exception {
+		UserProfile user = usersDao.get(username);
+		if (user == null)
+			return null;
+		else
+			return usersDao.get(username).getEmail();
+	}
+
+	@Override
+	public UserProfile getUser(String userIdentifier) throws Exception {
+		return usersDao.get(userIdentifier);
+	}
+
+	public UsersDAO getUsersDao() {
+		return usersDao;
+	}
+
+	public void setUsersDao(UsersDAO usersDao) {
+		this.usersDao = usersDao;
+	}
+
+	
+}
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/java/eu/dnetlib/validator/admin/api/ValidatorAdminException.java
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/java/eu/dnetlib/validator/admin/api/ValidatorAdminException.java	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/java/eu/dnetlib/validator/admin/api/ValidatorAdminException.java	(revision 47450)
@@ -0,0 +1,29 @@
+package eu.dnetlib.validator.admin.api;
+
+public class ValidatorAdminException extends Exception {
+
+	/**
+	 * 
+	 * @author Nikon Gasparis
+	 *
+	 */
+	
+	private static final long serialVersionUID = -80175916822821147L;
+
+	public ValidatorAdminException() {
+		super();
+	}
+	
+	public  ValidatorAdminException(String message) {
+		super(message);
+	}
+
+	public  ValidatorAdminException(String message, Throwable cause) {
+		super(message, cause);
+	}
+
+	public  ValidatorAdminException(Throwable cause) {
+		super(cause);
+	}
+}
+
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/java/eu/dnetlib/validator/admin/actions/login/Logout.java
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/java/eu/dnetlib/validator/admin/actions/login/Logout.java	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/java/eu/dnetlib/validator/admin/actions/login/Logout.java	(revision 47450)
@@ -0,0 +1,32 @@
+package eu.dnetlib.validator.admin.actions.login;
+
+import java.util.Map;
+
+import org.apache.struts2.interceptor.SessionAware;
+
+import com.opensymphony.xwork2.Action;
+
+import eu.dnetlib.validator.admin.actions.BaseValidatorAction;
+import eu.dnetlib.validator.admin.config.Constants;
+
+public class Logout extends BaseValidatorAction implements SessionAware {
+
+	private static final long serialVersionUID = -5304052800228900726L;
+	private Map<String, Object> session;
+
+	
+	public String execute() {
+		this.clearErrorsAndMessages();
+		session.remove(Constants.loggedInField);
+		session.remove("email");
+		session.remove("isAdmin");
+		this.addActionMessage("Logged-out successfully");
+		
+		return Action.SUCCESS;
+	}
+	
+	@Override
+	public void setSession(Map<String, Object> session) {
+		this.session = session;
+	}
+}
\ No newline at end of file
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/java/eu/dnetlib/validator/admin/actions/login/LoginPage.java
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/java/eu/dnetlib/validator/admin/actions/login/LoginPage.java	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/java/eu/dnetlib/validator/admin/actions/login/LoginPage.java	(revision 47450)
@@ -0,0 +1,29 @@
+package eu.dnetlib.validator.admin.actions.login;
+
+import java.util.Map;
+
+import org.apache.struts2.interceptor.SessionAware;
+
+import eu.dnetlib.validator.admin.actions.BaseValidatorAction;
+
+@SuppressWarnings("serial")
+public class LoginPage extends BaseValidatorAction implements SessionAware{
+
+	@Override
+	public String execute() throws Exception {
+		this.clearErrorsAndMessages();
+		String email = (String) session.get("email");
+		
+		if ( email!=null && !email.trim().isEmpty() )
+			return INPUT;
+		
+		return SUCCESS;
+	}
+	
+	private Map<String, Object> session;
+	@Override
+	public void setSession(Map<String, Object> session) {
+		this.session = session;		
+	}
+
+}
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/favicon.ico
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/favicon.ico
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/favicon.ico	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/favicon.ico	(revision 47450)

Property changes on: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/favicon.ico
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/registration.jsp
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/registration.jsp	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/registration.jsp	(revision 47450)
@@ -0,0 +1,44 @@
+<%@ page contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<%@ taglib prefix="s" uri="/struts-tags"%>
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title><s:text name="registration.title"/></title>
+<link href="jsps/favicon.ico" rel="shortcut icon" type="image/x-icon" />
+<link href="jsps/style.css" rel="stylesheet" type="text/css" media="screen" />
+</head>
+<body>
+<div id="wrapper">
+	<jsp:include page="menu.jsp"/>
+	<div id="page">
+	<div id="page-bgtop">
+		<div class="content">
+			<div class="main">
+				<h2 class="title"><s:text name="registration.title"/></h2>
+				<s:text name="registration.description"/>
+				<%--<p class="meta"><a href='<s:url value="/jsps/help.jsp#registration"/>' target="_blank"><s:text name="help"/></a></p>--%>
+				<div class="entry">
+					<%-- <s:if test="%{@gr.uoa.di.validatorweb.configs.Constants@isModeLdap()}">
+						<s:text name="registration.ldap.message"/>
+					</s:if> --%>
+					<s:form action="Register">
+						<s:if test="%{repoMode.trim().toLowerCase().equals(\"dnet\")}">
+							<s:textfield name="username" key="registration.username"/>
+							<s:textfield name="firstName" key="registration.firstName"/>
+							<s:textfield name="lastName" key="registration.lastName"/>
+						</s:if>
+						<s:textfield name="email" key="registration.email"/>
+						<s:password name="password" key="registration.password"/>
+						<s:password name="repassword" key="registration.repassword"/>
+						<s:submit value="Register" cssClass="button-default"/>
+					</s:form>
+				</div>
+			</div>
+		</div>
+		
+	</div>
+	</div>
+</div>
+</body>
+</html>
\ No newline at end of file
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/java/eu/dnetlib/validator/admin/actions/users/ActivateAccount.java
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/java/eu/dnetlib/validator/admin/actions/users/ActivateAccount.java	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/java/eu/dnetlib/validator/admin/actions/users/ActivateAccount.java	(revision 47450)
@@ -0,0 +1,48 @@
+package eu.dnetlib.validator.admin.actions.users;
+
+import org.apache.log4j.Logger;
+
+import com.opensymphony.xwork2.Action;
+
+import eu.dnetlib.validator.admin.actions.BaseValidatorAction;
+
+public class ActivateAccount extends BaseValidatorAction {
+
+	private static final long serialVersionUID = 4680016183168923054L;
+	private Logger logger = Logger.getLogger(ActivateAccount.class);
+	
+	private String activationId;
+
+	public String execute() {
+		this.clearErrorsAndMessages();
+		try {
+			logger.debug("activating user account with activation id " + activationId);
+			if (this.getUserAPI().activateUser(this.getActivationId()))
+				this.addActionMessage(this.getText("registration.okAccountActivation"));
+			else
+				this.addActionMessage(this.getText("registration.okAccountAlreadyActivation"));
+			return Action.SUCCESS;
+		} catch (Exception e) {
+			logger.error("error activating user account with activation id " + activationId, e);
+			this.addActionError(this.getText("generic.error"));
+			reportException(e);
+			return "exception";
+		}
+	}
+
+	public void validate() {
+		this.clearErrors();
+		if (this.getActivationId() == null || this.getActivationId().length() == 0) {
+			this.addActionError(this.getText("noActivationId"));
+			return;
+		}
+	}
+
+	public String getActivationId() {
+		return activationId;
+	}
+
+	public void setActivationId(String activationId) {
+		this.activationId = activationId;
+	}
+}
\ No newline at end of file
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/java/eu/dnetlib/validator/admin/config/ValidatorAdminContextLoaderListener.java
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/java/eu/dnetlib/validator/admin/config/ValidatorAdminContextLoaderListener.java	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/java/eu/dnetlib/validator/admin/config/ValidatorAdminContextLoaderListener.java	(revision 47450)
@@ -0,0 +1,86 @@
+package eu.dnetlib.validator.admin.config;
+
+import java.util.Properties;
+
+import javax.servlet.ServletContext;
+
+import org.apache.commons.lang.ArrayUtils;
+import org.apache.log4j.Logger;
+import org.springframework.beans.BeansException;
+import org.springframework.context.support.ClassPathXmlApplicationContext;
+import org.springframework.web.context.ContextLoaderListener;
+import org.springframework.web.context.WebApplicationContext;
+import org.springframework.web.context.support.XmlWebApplicationContext;
+
+public class ValidatorAdminContextLoaderListener extends ContextLoaderListener {
+	private static Logger logger = Logger.getLogger(ValidatorAdminContextLoaderListener.class);
+
+
+	public ValidatorAdminContextLoaderListener() {
+		super();
+	}
+
+	public ValidatorAdminContextLoaderListener(WebApplicationContext context) {
+		super(context);
+	}
+
+	@Override
+	protected WebApplicationContext createWebApplicationContext(
+			ServletContext servletContext)
+			throws BeansException {
+		logger.debug("Creating web application context");
+		Properties props = this.loadProperties();
+		String repoMode = props.getProperty("services.validator.mode.repo");
+		String userMode = props.getProperty("services.validator.mode.user");
+		Boolean standaloneMode = Boolean.parseBoolean(props.getProperty("services.validator.mode.standalone"));
+		
+		logger.debug("User mode: " + userMode);
+		logger.debug("Repo mode: " + repoMode);
+		logger.debug("Standalone mode: " + standaloneMode);
+//		logger.debug("Dnet workflow enabled: " + repoMode);
+		XmlWebApplicationContext ctx = new XmlWebApplicationContext();
+
+		ctx.setServletContext(servletContext);
+		
+		
+		String[] springContextCore = new String[] {
+				"classpath*:/eu/dnetlib/validator/admin/actions/springContext-validator-struts.xml",
+				"classpath*:/eu/dnetlib/validator/admin/api/springContext-validator-user-" + userMode + ".xml",
+				"classpath*:/eu/dnetlib/validator/admin/api/springContext-validator.xml",
+				"classpath*:/eu/dnetlib/validator/admin/config/springContext-validator-config.xml",
+				"classpath*:/eu/dnetlib/validator/commons/dao/springContext-*.xml",
+				"classpath*:/eu/dnetlib/validator/commons/email/springContext-*.xml"
+		};
+		
+		String[] springContextForIS = new String[] {
+		};
+		
+		if (standaloneMode) {
+			logger.debug("Loading contexts for standalone mode");
+			ctx.setConfigLocations(springContextCore);
+		} else {
+			logger.debug("Loading contexts for dnet");
+			ctx.setConfigLocations((String[])ArrayUtils.addAll(springContextCore,springContextForIS));
+		}
+		
+		ctx.refresh();
+		
+		logger.debug("done");
+		
+		return ctx;
+	}	
+	
+	private Properties loadProperties() {
+		ClassPathXmlApplicationContext ctx = new ClassPathXmlApplicationContext(new String[] {
+				"classpath*:/eu/dnetlib/validator/admin/config/springContext-validator-config.xml"
+		});
+		
+		CascadingPropertyLoader pLoader = (CascadingPropertyLoader) ctx.getBean("propertyLoader");
+		Properties props = pLoader.getProperties();
+		
+		ctx.destroy();
+		ctx.close();
+		return props;
+	}
+
+}
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/manuals/favicon.ico
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/manuals/favicon.ico
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/manuals/favicon.ico	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/manuals/favicon.ico	(revision 47450)

Property changes on: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/manuals/favicon.ico
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/java/eu/dnetlib/validator/admin/constants/TypesAndTableNames.java
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/java/eu/dnetlib/validator/admin/constants/TypesAndTableNames.java	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/java/eu/dnetlib/validator/admin/constants/TypesAndTableNames.java	(revision 47450)
@@ -0,0 +1,102 @@
+package eu.dnetlib.validator.admin.constants;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.Set;
+
+import org.apache.log4j.Logger;
+
+public class TypesAndTableNames {
+
+	static private Logger logger = Logger.getLogger(TypesAndTableNames.class);
+	
+	static HashMap<String, String> ruleTypeToTableNames;
+	static HashMap<String, String> crisEntities;
+	static public List<String> deployEnvironments;
+	static public HashMap<String, String> jobTypes;
+	
+	static {
+		logger.debug("initializing the TableNames map");
+		ruleTypeToTableNames = new HashMap<String, String>();
+		
+		ruleTypeToTableNames.put("ChainRule", "chain_rule");
+		
+		//rules OAIPMH
+		ruleTypeToTableNames.put("OAIPMH Date Granularity", "oaipmhdategranularity_rule");
+		ruleTypeToTableNames.put("OAIPMH Embargo Date Check", "oaipmhembargodate_rule");
+		ruleTypeToTableNames.put("OAIPMH Incremental Record Delivery", "oaipmhincrementalrecorddelivery_rule");
+		ruleTypeToTableNames.put("OAIPMH Resumption Token Duration Check", "oaipmhresumptiontokenduration_rule");
+
+		//rules TEXT
+//		ruleTypeToTableNames.put("TEXT Regular Expression", "textreguralexpresion_rule");
+//		ruleTypeToTableNames.put("TEXT", "text_rule");
+//		ruleTypeToTableNames.put("TEXT Vocabulary","textvocabulary_rule");		
+
+		//rules XML
+//		names.put(XMLRule.class.getName(),"xml_rule");
+		ruleTypeToTableNames.put("XML Cardinality", "xmlcardinality_rule");
+		ruleTypeToTableNames.put("XML Field Exists", "xmlfieldexist_rule");
+		ruleTypeToTableNames.put("XML Not Confused Fields", "xmlnotconfusedfields_rule");
+		ruleTypeToTableNames.put("XML Regular Expression", "xmlregularexpression_rule");
+		ruleTypeToTableNames.put("XML Valid Url", "xmlvalidurl_rule");
+		ruleTypeToTableNames.put("XML Vocabulary", "xmlvocabulary_rule");
+		ruleTypeToTableNames.put("XML Cris Class Vocabulary", "xmlcrisclassvocabulary_rule");
+		ruleTypeToTableNames.put("XML CRIS Referential Integrity Rule", "xmlcrisreferentialintegrity_rule");
+		
+		crisEntities = new HashMap<String, String>();
+		crisEntities.put("Publication", "openaire_cris_publications");
+		crisEntities.put("Person", "openaire_cris_persons");
+		crisEntities.put("Organisation", "openaire_cris_orgunits");
+		crisEntities.put("Project", "openaire_cris_projects" );
+		crisEntities.put("Funding", "openaire_cris_funding" );
+		crisEntities.put("Service", "openaire_cris_services");
+		crisEntities.put("Product", "openaire_cris_datasets");		
+		
+		jobTypes = new HashMap<String, String>();
+		jobTypes.put("usage", "OAI Usage");
+		jobTypes.put("content", "OAI Content");
+		
+		deployEnvironments = new ArrayList<String>();
+		deployEnvironments.add("openaire-production");
+		deployEnvironments.add("openaire-beta");
+		deployEnvironments.add("development");
+		deployEnvironments.add("lareferencia");
+		deployEnvironments.add("mincyt");
+		
+//		names.put(JobInfo.class.getName(), "jobs");
+//		names.put(OAIContentJob.class.getName(), "oai_content_job");
+//		names.put(OAIUsageJob.class.getName(), "oai_usage_job");
+
+	}
+	
+	static public String getSetOfEntity(String entity) {
+		return crisEntities.get(entity);
+	}
+	
+	public static HashMap<String, String> getCrisEntities() {
+		return crisEntities;
+	}
+	
+	
+
+	public static Set<String> getJobTypes() {
+		logger.debug("getting all types of jobs");
+		return new HashSet<String>(jobTypes.values());
+	}
+
+	public static void setJobTypes(HashMap<String, String> jobTypes) {
+		TypesAndTableNames.jobTypes = jobTypes;
+	}
+
+	static public Set<String> getRuleTypes() {
+		logger.debug("getting all types of rules");
+		return ruleTypeToTableNames.keySet();
+	}
+	
+	static public String getTableNameOfType(String type) {
+		logger.debug("getting tableName of rule type "+type);
+		return ruleTypeToTableNames.get(type);
+	}
+}
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/resources/eu/dnetlib/validator/admin/api/springContext-validator-user-ldap.xml
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/resources/eu/dnetlib/validator/admin/api/springContext-validator-user-ldap.xml	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/resources/eu/dnetlib/validator/admin/api/springContext-validator-user-ldap.xml	(revision 47450)
@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<beans xmlns="http://www.springframework.org/schema/beans"
+	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+	xmlns:context="http://www.springframework.org/schema/context"
+	xmlns:cxf="http://cxf.apache.org/core"
+	xmlns:jaxws="http://cxf.apache.org/jaxws"
+	xmlns:p="http://http://www.springframework.org/schema/p"
+	xmlns:template="http://dnetlib.eu/springbeans/template"
+	xmlns:t="http://dnetlib.eu/springbeans/t"
+	xmlns:tx="http://www.springframework.org/schema/tx"
+	
+	xsi:schemaLocation="
+		http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.0.xsd
+        http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.0.xsd
+        http://cxf.apache.org/core http://cxf.apache.org/schemas/core.xsd
+        http://cxf.apache.org/jaxws http://cxf.apache.org/schemas/jaxws.xsd
+        http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-4.0.xsd
+        http://dnetlib.eu/springbeans/template http://dnetlib.eu/springbeans/template.xsd"
+	default-autowire="no">
+
+	<bean id="userAPI" class="eu.dnetlib.validator.admin.api.impls.UserApiLDAP" lazy-init="true">
+		<property name="ldapAddress" value="${services.validator.ldap.address}" />
+		<property name="ldapPort" value="${services.validator.ldap.port}" />
+		<property name="ldapUsername" value="${services.validator.ldap.username}" />
+		<property name="ldapPassword" value="${services.validator.ldap.password}" />
+		<property name="ldapUsersDN" value="${services.validator.ldap.usersDN}" />
+	</bean>
+
+</beans>
\ No newline at end of file
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/manuals/administrator-manual.pdf
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/manuals/administrator-manual.pdf
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/manuals/administrator-manual.pdf	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/manuals/administrator-manual.pdf	(revision 47450)

Property changes on: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/manuals/administrator-manual.pdf
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/java/eu/dnetlib/validator/admin/api/impls/EmailBuilder.java
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/java/eu/dnetlib/validator/admin/api/impls/EmailBuilder.java	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/java/eu/dnetlib/validator/admin/api/impls/EmailBuilder.java	(revision 47450)
@@ -0,0 +1,82 @@
+package eu.dnetlib.validator.admin.api.impls;
+
+import java.io.StringWriter;
+import java.util.List;
+import java.util.Map;
+
+import javax.xml.transform.TransformerConfigurationException;
+import javax.xml.transform.TransformerException;
+import javax.xml.transform.TransformerFactoryConfigurationError;
+
+import org.apache.log4j.Logger;
+import org.apache.velocity.Template;
+import org.apache.velocity.VelocityContext;
+import org.apache.velocity.app.VelocityEngine;
+import org.apache.velocity.exception.ParseErrorException;
+import org.apache.velocity.exception.ResourceNotFoundException;
+import org.apache.velocity.runtime.RuntimeConstants;
+import org.apache.velocity.runtime.resource.loader.ClasspathResourceLoader;
+
+public class EmailBuilder {
+
+	private static Logger logger = Logger.getLogger(EmailBuilder.class);
+	
+	private VelocityEngine ve = null;
+	
+	public void init() throws Exception {
+		this.ve = new VelocityEngine();
+		this.ve.setProperty(RuntimeConstants.RESOURCE_LOADER, "classpath");
+		this.ve.setProperty("classpath.resource.loader.class", ClasspathResourceLoader.class.getName());
+		this.ve.setProperty("runtime.log.logsystem.class", "org.apache.velocity.runtime.log.NullLogSystem");
+		this.ve.init();	
+	}
+	
+	public String buildXml(List<Map<String, String>> passedJobsList, List<Map<String, String>> failedJobsList, String month, boolean oldFormat) {
+		logger.debug("Building the registrations report Email");
+		String finalEmail = null;
+		
+		try {
+        
+			VelocityContext context = new VelocityContext();
+
+			context.put("passedJobs", passedJobsList);
+			context.put("failedJobs", failedJobsList);
+			context.put("month", month);
+			if (passedJobsList.isEmpty())
+				context.put("nonePassed", "There are no successful registration attempts.");
+			else
+				context.put("nonePassed", " ");
+			if (failedJobsList.isEmpty())
+				context.put("noneFailed", "There are no failed registration attempts.");
+			else
+				context.put("noneFailed", " ");
+			
+			Template t;
+			
+			if (oldFormat)
+				t = this.ve.getTemplate("/eu/dnetlib/validator/admin/api/emailTeplateOld.vm");
+			else
+				t = this.ve.getTemplate("/eu/dnetlib/validator/admin/api/emailTeplate.vm");
+			
+			StringWriter writer = new StringWriter();
+			
+			t.merge(context, writer);
+			finalEmail = writer.toString();
+			
+		} catch (TransformerConfigurationException e) {
+			logger.error("Error while building XML file", e);
+		} catch (TransformerFactoryConfigurationError e) {
+			logger.error("Error while building XML file", e);
+		} catch (TransformerException e) {
+			logger.error("Error while building XML file", e);
+		} catch (ResourceNotFoundException e) {
+			logger.error("Error while building XML file", e);
+		} catch (ParseErrorException e) {
+			logger.error("Error while building XML file", e);
+		} catch (Exception e) {
+			logger.error("Error while building XML file", e);
+		}
+		
+        return finalEmail;
+	}
+}
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/java/eu/dnetlib/validator/admin/api/UserApi.java
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/java/eu/dnetlib/validator/admin/api/UserApi.java	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/java/eu/dnetlib/validator/admin/api/UserApi.java	(revision 47450)
@@ -0,0 +1,32 @@
+package eu.dnetlib.validator.admin.api;
+
+import eu.dnetlib.domain.functionality.UserProfile;
+
+public interface UserApi {
+
+	public boolean activateUser(String activationId) throws Exception;
+
+	public boolean isUserActivated(String email) throws Exception;
+
+	public boolean userExists(String email) throws Exception;
+
+	public boolean usernameExists(String username) throws Exception;
+
+	public boolean correctCreds(String email, String password) throws Exception;
+
+	public String prepareResetPassword(String email) throws Exception;
+
+	public void resetPassword(String uuid, String password) throws Exception;
+
+	public boolean isAdmin(String email) throws Exception;
+
+	public void editUser(UserProfile user)
+			throws Exception;
+
+	public String addUser(String username, String email, String password,
+			String firstName, String lastName, String institution) throws Exception;
+
+	public String getEmailFromUsername(String username) throws Exception;
+
+	public UserProfile getUser(String userIdentifier) throws Exception;
+}
\ No newline at end of file
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/js/mootools-1.2.5.1-more.js
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/js/mootools-1.2.5.1-more.js	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/js/mootools-1.2.5.1-more.js	(revision 47450)
@@ -0,0 +1,2192 @@
+//MooTools More, <http://mootools.net/more>. Copyright (c) 2006-2009 Aaron Newton <http://clientcide.com/>, Valerio Proietti <http://mad4milk.net> & the MooTools team <http://mootools.net/developers>, MIT Style License.
+
+/*
+---
+
+script: More.js
+
+name: More
+
+description: MooTools More
+
+license: MIT-style license
+
+requires:
+  - Core/MooTools
+
+provides: [MooTools.More]
+
+...
+*/
+
+MooTools.More = {
+	'version': '1.2.5.1',
+	'build': '254884f2b83651bf95260eed5c6cceb838e22d8e'
+};
+
+
+/*
+---
+
+script: MooTools.Lang.js
+
+name: MooTools.Lang
+
+description: Provides methods for localization.
+
+license: MIT-style license
+
+authors:
+  - Aaron Newton
+
+requires:
+  - Core/Events
+  - /MooTools.More
+
+provides: [Lang]
+
+...
+*/
+
+(function(){
+
+	var data = {
+		language: 'en-US',
+		languages: {
+			'en-US': {}
+		},
+		cascades: ['en-US']
+	};
+	
+	var cascaded;
+
+	MooTools.lang = new Events();
+
+	$extend(MooTools.lang, {
+
+		setLanguage: function(lang){
+			if (!data.languages[lang]) return this;
+			data.language = lang;
+			this.load();
+			this.fireEvent('langChange', lang);
+			return this;
+		},
+
+		load: function() {
+			var langs = this.cascade(this.getCurrentLanguage());
+			cascaded = {};
+			$each(langs, function(set, setName){
+				cascaded[setName] = this.lambda(set);
+			}, this);
+		},
+
+		getCurrentLanguage: function(){
+			return data.language;
+		},
+
+		addLanguage: function(lang){
+			data.languages[lang] = data.languages[lang] || {};
+			return this;
+		},
+
+		cascade: function(lang){
+			var cascades = (data.languages[lang] || {}).cascades || [];
+			cascades.combine(data.cascades);
+			cascades.erase(lang).push(lang);
+			var langs = cascades.map(function(lng){
+				return data.languages[lng];
+			}, this);
+			return $merge.apply(this, langs);
+		},
+
+		lambda: function(set) {
+			(set || {}).get = function(key, args){
+				return $lambda(set[key]).apply(this, $splat(args));
+			};
+			return set;
+		},
+
+		get: function(set, key, args){
+			if (cascaded && cascaded[set]) return (key ? cascaded[set].get(key, args) : cascaded[set]);
+		},
+
+		set: function(lang, set, members){
+			this.addLanguage(lang);
+			langData = data.languages[lang];
+			if (!langData[set]) langData[set] = {};
+			$extend(langData[set], members);
+			if (lang == this.getCurrentLanguage()){
+				this.load();
+				this.fireEvent('langChange', lang);
+			}
+			return this;
+		},
+
+		list: function(){
+			return Hash.getKeys(data.languages);
+		}
+
+	});
+
+})();
+
+
+/*
+---
+
+script: Log.js
+
+name: Log
+
+description: Provides basic logging functionality for plugins to implement.
+
+license: MIT-style license
+
+authors:
+  - Guillermo Rauch
+  - Thomas Aylott
+  - Scott Kyle
+
+requires:
+  - Core/Class
+  - /MooTools.More
+
+provides: [Log]
+
+...
+*/
+
+(function(){
+
+var global = this;
+
+var log = function(){
+	if (global.console && console.log){
+		try {
+			console.log.apply(console, arguments);
+		} catch(e) {
+			console.log(Array.slice(arguments));
+		}
+	} else {
+		Log.logged.push(arguments);
+	}
+	return this;
+};
+
+var disabled = function(){
+	this.logged.push(arguments);
+	return this;
+};
+
+this.Log = new Class({
+	
+	logged: [],
+	
+	log: disabled,
+	
+	resetLog: function(){
+		this.logged.empty();
+		return this;
+	},
+
+	enableLog: function(){
+		this.log = log;
+		this.logged.each(function(args){
+			this.log.apply(this, args);
+		}, this);
+		return this.resetLog();
+	},
+
+	disableLog: function(){
+		this.log = disabled;
+		return this;
+	}
+	
+});
+
+Log.extend(new Log).enableLog();
+
+// legacy
+Log.logger = function(){
+	return this.log.apply(this, arguments);
+};
+
+})();
+
+
+/*
+---
+
+script: Class.Refactor.js
+
+name: Class.Refactor
+
+description: Extends a class onto itself with new property, preserving any items attached to the class's namespace.
+
+license: MIT-style license
+
+authors:
+  - Aaron Newton
+
+requires:
+  - Core/Class
+  - /MooTools.More
+
+# Some modules declare themselves dependent on Class.Refactor
+provides: [Class.refactor, Class.Refactor]
+
+...
+*/
+
+Class.refactor = function(original, refactors){
+
+	$each(refactors, function(item, name){
+		var origin = original.prototype[name];
+		if (origin && (origin = origin._origin ? origin._origin: origin) && typeof item == 'function') original.implement(name, function(){
+			var old = this.previous;
+			this.previous = origin;
+			var value = item.apply(this, arguments);
+			this.previous = old;
+			return value;
+		}); else original.implement(name, item);
+	});
+
+	return original;
+
+};
+
+
+/*
+---
+
+script: Class.Binds.js
+
+name: Class.Binds
+
+description: Automagically binds specified methods in a class to the instance of the class.
+
+license: MIT-style license
+
+authors:
+  - Aaron Newton
+
+requires:
+  - Core/Class
+  - /MooTools.More
+
+provides: [Class.Binds]
+
+...
+*/
+
+Class.Mutators.Binds = function(binds){
+    return binds;
+};
+
+Class.Mutators.initialize = function(initialize){
+	return function(){
+		$splat(this.Binds).each(function(name){
+			var original = this[name];
+			if (original) this[name] = original.bind(this);
+		}, this);
+		return initialize.apply(this, arguments);
+	};
+};
+
+
+/*
+---
+
+script: Class.Occlude.js
+
+name: Class.Occlude
+
+description: Prevents a class from being applied to a DOM element twice.
+
+license: MIT-style license.
+
+authors:
+  - Aaron Newton
+
+requires: 
+  - Core/Class
+  - Core/Element
+  - /MooTools.More
+
+provides: [Class.Occlude]
+
+...
+*/
+
+Class.Occlude = new Class({
+
+	occlude: function(property, element){
+		element = document.id(element || this.element);
+		var instance = element.retrieve(property || this.property);
+		if (instance && !$defined(this.occluded))
+			return this.occluded = instance;
+
+		this.occluded = false;
+		element.store(property || this.property, this);
+		return this.occluded;
+	}
+
+});
+
+
+/*
+---
+
+script: Chain.Wait.js
+
+name: Chain.Wait
+
+description: value, Adds a method to inject pauses between chained events.
+
+license: MIT-style license.
+
+authors:
+  - Aaron Newton
+
+requires: 
+  - Core/Chain
+  - Core/Element
+  - Core/Fx
+  - /MooTools.More
+
+provides: [Chain.Wait]
+
+...
+*/
+
+(function(){
+
+	var wait = {
+		wait: function(duration){
+			return this.chain(function(){
+				this.callChain.delay($pick(duration, 500), this);
+			}.bind(this));
+		}
+	};
+
+	Chain.implement(wait);
+
+	if (window.Fx){
+		Fx.implement(wait);
+		['Css', 'Tween', 'Elements'].each(function(cls){
+			if (Fx[cls]) Fx[cls].implement(wait);
+		});
+	}
+
+	Element.implement({
+		chains: function(effects){
+			$splat($pick(effects, ['tween', 'morph', 'reveal'])).each(function(effect){
+				effect = this.get(effect);
+				if (!effect) return;
+				effect.setOptions({
+					link:'chain'
+				});
+			}, this);
+			return this;
+		},
+		pauseFx: function(duration, effect){
+			this.chains(effect).get($pick(effect, 'tween')).wait(duration);
+			return this;
+		}
+	});
+
+})();
+
+
+/*
+---
+
+script: Element.Measure.js
+
+name: Element.Measure
+
+description: Extends the Element native object to include methods useful in measuring dimensions.
+
+credits: "Element.measure / .expose methods by Daniel Steigerwald License: MIT-style license. Copyright: Copyright (c) 2008 Daniel Steigerwald, daniel.steigerwald.cz"
+
+license: MIT-style license
+
+authors:
+  - Aaron Newton
+
+requires:
+  - Core/Element.Style
+  - Core/Element.Dimensions
+  - /MooTools.More
+
+provides: [Element.Measure]
+
+...
+*/
+
+Element.implement({
+
+	measure: function(fn){
+		var vis = function(el) {
+			return !!(!el || el.offsetHeight || el.offsetWidth);
+		};
+		if (vis(this)) return fn.apply(this);
+		var parent = this.getParent(),
+			restorers = [],
+			toMeasure = []; 
+		while (!vis(parent) && parent != document.body) {
+			toMeasure.push(parent.expose());
+			parent = parent.getParent();
+		}
+		var restore = this.expose();
+		var result = fn.apply(this);
+		restore();
+		toMeasure.each(function(restore){
+			restore();
+		});
+		return result;
+	},
+
+	expose: function(){
+		if (this.getStyle('display') != 'none') return $empty;
+		var before = this.style.cssText;
+		this.setStyles({
+			display: 'block',
+			position: 'absolute',
+			visibility: 'hidden'
+		});
+		return function(){
+			this.style.cssText = before;
+		}.bind(this);
+	},
+
+	getDimensions: function(options){
+		options = $merge({computeSize: false},options);
+		var dim = {};
+		var getSize = function(el, options){
+			return (options.computeSize)?el.getComputedSize(options):el.getSize();
+		};
+		var parent = this.getParent('body');
+		if (parent && this.getStyle('display') == 'none'){
+			dim = this.measure(function(){
+				return getSize(this, options);
+			});
+		} else if (parent){
+			try { //safari sometimes crashes here, so catch it
+				dim = getSize(this, options);
+			}catch(e){}
+		} else {
+			dim = {x: 0, y: 0};
+		}
+		return $chk(dim.x) ? $extend(dim, {width: dim.x, height: dim.y}) : $extend(dim, {x: dim.width, y: dim.height});
+	},
+
+	getComputedSize: function(options){
+		//legacy support for my stupid spelling error
+		if (options && options.plains) options.planes = options.plains;
+		
+		options = $merge({
+			styles: ['padding','border'],
+			planes: {
+				height: ['top','bottom'],
+				width: ['left','right']
+			},
+			mode: 'both'
+		}, options);
+		
+		var size = {width: 0,height: 0};
+		switch (options.mode){
+			case 'vertical':
+				delete size.width;
+				delete options.planes.width;
+				break;
+			case 'horizontal':
+				delete size.height;
+				delete options.planes.height;
+				break;
+		}
+		var getStyles = [];
+		//this function might be useful in other places; perhaps it should be outside this function?
+		$each(options.planes, function(plane, key){
+			plane.each(function(edge){
+				options.styles.each(function(style){
+					getStyles.push((style == 'border') ? style + '-' + edge + '-' + 'width' : style + '-' + edge);
+				});
+			});
+		});
+		var styles = {};
+		getStyles.each(function(style){ styles[style] = this.getComputedStyle(style); }, this);
+		var subtracted = [];
+		$each(options.planes, function(plane, key){ //keys: width, height, planes: ['left', 'right'], ['top','bottom']
+			var capitalized = key.capitalize();
+			size['total' + capitalized] = size['computed' + capitalized] = 0;
+			plane.each(function(edge){ //top, left, right, bottom
+				size['computed' + edge.capitalize()] = 0;
+				getStyles.each(function(style, i){ //padding, border, etc.
+					//'padding-left'.test('left') size['totalWidth'] = size['width'] + [padding-left]
+					if (style.test(edge)){
+						styles[style] = styles[style].toInt() || 0; //styles['padding-left'] = 5;
+						size['total' + capitalized] = size['total' + capitalized] + styles[style];
+						size['computed' + edge.capitalize()] = size['computed' + edge.capitalize()] + styles[style];
+					}
+					//if width != width (so, padding-left, for instance), then subtract that from the total
+					if (style.test(edge) && key != style &&
+						(style.test('border') || style.test('padding')) && !subtracted.contains(style)){
+						subtracted.push(style);
+						size['computed' + capitalized] = size['computed' + capitalized]-styles[style];
+					}
+				});
+			});
+		});
+
+		['Width', 'Height'].each(function(value){
+			var lower = value.toLowerCase();
+			if(!$chk(size[lower])) return;
+
+			size[lower] = size[lower] + this['offset' + value] + size['computed' + value];
+			size['total' + value] = size[lower] + size['total' + value];
+			delete size['computed' + value];
+		}, this);
+
+		return $extend(styles, size);
+	}
+
+});
+
+/*
+---
+
+script: Element.Position.js
+
+name: Element.Position
+
+description: Extends the Element native object to include methods useful positioning elements relative to others.
+
+license: MIT-style license
+
+authors:
+  - Aaron Newton
+
+requires:
+  - Core/Element.Dimensions
+  - /Element.Measure
+
+provides: [Element.Position]
+
+...
+*/
+
+(function(){
+
+var original = Element.prototype.position;
+
+Element.implement({
+
+	position: function(options){
+		//call original position if the options are x/y values
+		if (options && ($defined(options.x) || $defined(options.y))) return original ? original.apply(this, arguments) : this;
+		$each(options||{}, function(v, k){ if (!$defined(v)) delete options[k]; });
+		options = $merge({
+			// minimum: { x: 0, y: 0 },
+			// maximum: { x: 0, y: 0},
+			relativeTo: document.body,
+			position: {
+				x: 'center', //left, center, right
+				y: 'center' //top, center, bottom
+			},
+			edge: false,
+			offset: {x: 0, y: 0},
+			returnPos: false,
+			relFixedPosition: false,
+			ignoreMargins: false,
+			ignoreScroll: false,
+			allowNegative: false
+		}, options);
+		//compute the offset of the parent positioned element if this element is in one
+		var parentOffset = {x: 0, y: 0}, 
+				parentPositioned = false;
+		/* dollar around getOffsetParent should not be necessary, but as it does not return
+		 * a mootools extended element in IE, an error occurs on the call to expose. See:
+		 * http://mootools.lighthouseapp.com/projects/2706/tickets/333-element-getoffsetparent-inconsistency-between-ie-and-other-browsers */
+		var offsetParent = this.measure(function(){
+			return document.id(this.getOffsetParent());
+		});
+		if (offsetParent && offsetParent != this.getDocument().body){
+			parentOffset = offsetParent.measure(function(){
+				return this.getPosition();
+			});
+			parentPositioned = offsetParent != document.id(options.relativeTo);
+			options.offset.x = options.offset.x - parentOffset.x;
+			options.offset.y = options.offset.y - parentOffset.y;
+		}
+		//upperRight, bottomRight, centerRight, upperLeft, bottomLeft, centerLeft
+		//topRight, topLeft, centerTop, centerBottom, center
+		var fixValue = function(option){
+			if ($type(option) != 'string') return option;
+			option = option.toLowerCase();
+			var val = {};
+			
+			if (option.test('left')) val.x = 'left';
+			else if (option.test('right')) val.x = 'right';
+			else val.x = 'center';
+			
+			if (option.test('upper') || option.test('top')) val.y = 'top';
+			else if (option.test('bottom')) val.y = 'bottom';
+			else val.y = 'center';
+			
+			return val;
+		};
+		options.edge = fixValue(options.edge);
+		options.position = fixValue(options.position);
+		if (!options.edge){
+			if (options.position.x == 'center' && options.position.y == 'center') options.edge = {x:'center', y:'center'};
+			else options.edge = {x:'left', y:'top'};
+		}
+
+		this.setStyle('position', 'absolute');
+		var rel = document.id(options.relativeTo) || document.body,
+				calc = rel == document.body ? window.getScroll() : rel.getPosition(),
+				top = calc.y, left = calc.x;
+
+		var dim = this.getDimensions({computeSize: true, styles:['padding', 'border','margin']});
+		var pos = {},
+				prefY = options.offset.y,
+				prefX = options.offset.x,
+				winSize = window.getSize();
+		switch(options.position.x){
+			case 'left':
+				pos.x = left + prefX;
+				break;
+			case 'right':
+				pos.x = left + prefX + rel.offsetWidth;
+				break;
+			default: //center
+				pos.x = left + ((rel == document.body ? winSize.x : rel.offsetWidth)/2) + prefX;
+				break;
+		}
+		switch(options.position.y){
+			case 'top':
+				pos.y = top + prefY;
+				break;
+			case 'bottom':
+				pos.y = top + prefY + rel.offsetHeight;
+				break;
+			default: //center
+				pos.y = top + ((rel == document.body ? winSize.y : rel.offsetHeight)/2) + prefY;
+				break;
+		}
+		if (options.edge){
+			var edgeOffset = {};
+
+			switch(options.edge.x){
+				case 'left':
+					edgeOffset.x = 0;
+					break;
+				case 'right':
+					edgeOffset.x = -dim.x-dim.computedRight-dim.computedLeft;
+					break;
+				default: //center
+					edgeOffset.x = -(dim.totalWidth/2);
+					break;
+			}
+			switch(options.edge.y){
+				case 'top':
+					edgeOffset.y = 0;
+					break;
+				case 'bottom':
+					edgeOffset.y = -dim.y-dim.computedTop-dim.computedBottom;
+					break;
+				default: //center
+					edgeOffset.y = -(dim.totalHeight/2);
+					break;
+			}
+			pos.x += edgeOffset.x;
+			pos.y += edgeOffset.y;
+		}
+		pos = {
+			left: ((pos.x >= 0 || parentPositioned || options.allowNegative) ? pos.x : 0).toInt(),
+			top: ((pos.y >= 0 || parentPositioned || options.allowNegative) ? pos.y : 0).toInt()
+		};
+		var xy = {left: 'x', top: 'y'};
+		['minimum', 'maximum'].each(function(minmax) {
+			['left', 'top'].each(function(lr) {
+				var val = options[minmax] ? options[minmax][xy[lr]] : null;
+				if (val != null && ((minmax == 'minimum') ? pos[lr] < val: pos[lr] > val)) pos[lr] = val;
+			});
+		});
+		if (rel.getStyle('position') == 'fixed' || options.relFixedPosition){
+			var winScroll = window.getScroll();
+			pos.top+= winScroll.y;
+			pos.left+= winScroll.x;
+		}
+		var relScroll = rel.getScroll();
+		if (options.ignoreScroll) {
+			pos.top -= relScroll.y;
+			pos.left -= relScroll.x;
+		} else {
+			pos.top += relScroll.y;
+			pos.left += relScroll.x;
+		}
+		if (options.ignoreMargins) {
+			pos.left += (
+				options.edge.x == 'right' ? dim['margin-right'] : 
+				options.edge.x == 'center' ? -dim['margin-left'] + ((dim['margin-right'] + dim['margin-left'])/2) : 
+					- dim['margin-left']
+			);
+			pos.top += (
+				options.edge.y == 'bottom' ? dim['margin-bottom'] : 
+				options.edge.y == 'center' ? -dim['margin-top'] + ((dim['margin-bottom'] + dim['margin-top'])/2) : 
+					- dim['margin-top']
+			);
+		}
+		pos.left = Math.ceil(pos.left);
+		pos.top = Math.ceil(pos.top);
+		if (options.returnPos) return pos;
+		else this.setStyles(pos);
+		return this;
+	}
+
+});
+
+})();
+
+
+/*
+---
+
+script: Element.Shortcuts.js
+
+name: Element.Shortcuts
+
+description: Extends the Element native object to include some shortcut methods.
+
+license: MIT-style license
+
+authors:
+  - Aaron Newton
+
+requires:
+  - Core/Element.Style
+  - /MooTools.More
+
+provides: [Element.Shortcuts]
+
+...
+*/
+
+Element.implement({
+
+	isDisplayed: function(){
+		return this.getStyle('display') != 'none';
+	},
+
+	isVisible: function(){
+		var w = this.offsetWidth,
+			h = this.offsetHeight;
+		return (w == 0 && h == 0) ? false : (w > 0 && h > 0) ? true : this.style.display != 'none';
+	},
+
+	toggle: function(){
+		return this[this.isDisplayed() ? 'hide' : 'show']();
+	},
+
+	hide: function(){
+		var d;
+		try {
+			//IE fails here if the element is not in the dom
+			d = this.getStyle('display');
+		} catch(e){}
+		if (d == "none") return this;
+		return this.store('element:_originalDisplay', d || '').setStyle('display', 'none');
+	},
+
+	show: function(display){
+		if (!display && this.isDisplayed()) return this;
+		display = display || this.retrieve('element:_originalDisplay') || 'block';
+		return this.setStyle('display', (display == 'none') ? 'block' : display);
+	},
+
+	swapClass: function(remove, add){
+		return this.removeClass(remove).addClass(add);
+	}
+});
+
+Document.implement({
+	clearSelection: function(){
+		if (document.selection && document.selection.empty) {
+			document.selection.empty();
+		} else if (window.getSelection) {
+			var selection = window.getSelection();
+			if (selection && selection.removeAllRanges) selection.removeAllRanges();
+		}
+	}
+});
+
+/*
+---
+
+script: Fx.Elements.js
+
+name: Fx.Elements
+
+description: Effect to change any number of CSS properties of any number of Elements.
+
+license: MIT-style license
+
+authors:
+  - Valerio Proietti
+
+requires:
+  - Core/Fx.CSS
+  - /MooTools.More
+
+provides: [Fx.Elements]
+
+...
+*/
+
+Fx.Elements = new Class({
+
+	Extends: Fx.CSS,
+
+	initialize: function(elements, options){
+		this.elements = this.subject = $$(elements);
+		this.parent(options);
+	},
+
+	compute: function(from, to, delta){
+		var now = {};
+
+		for (var i in from){
+			var iFrom = from[i], iTo = to[i], iNow = now[i] = {};
+			for (var p in iFrom) iNow[p] = this.parent(iFrom[p], iTo[p], delta);
+		}
+
+		return now;
+	},
+
+	set: function(now){
+		for (var i in now){
+			if (!this.elements[i]) continue;
+
+			var iNow = now[i];
+			for (var p in iNow) this.render(this.elements[i], p, iNow[p], this.options.unit);
+		}
+
+		return this;
+	},
+
+	start: function(obj){
+		if (!this.check(obj)) return this;
+		var from = {}, to = {};
+
+		for (var i in obj){
+			if (!this.elements[i]) continue;
+
+			var iProps = obj[i], iFrom = from[i] = {}, iTo = to[i] = {};
+
+			for (var p in iProps){
+				var parsed = this.prepare(this.elements[i], p, iProps[p]);
+				iFrom[p] = parsed.from;
+				iTo[p] = parsed.to;
+			}
+		}
+
+		return this.parent(from, to);
+	}
+
+});
+
+
+/*
+---
+
+script: Fx.Accordion.js
+
+name: Fx.Accordion
+
+description: An Fx.Elements extension which allows you to easily create accordion type controls.
+
+license: MIT-style license
+
+authors:
+  - Valerio Proietti
+
+requires:
+  - Core/Element.Event
+  - /Fx.Elements
+
+provides: [Fx.Accordion]
+
+...
+*/
+
+Fx.Accordion = new Class({
+
+	Extends: Fx.Elements,
+
+	options: {/*
+		onActive: $empty(toggler, section),
+		onBackground: $empty(toggler, section),
+		*/
+		fixedHeight: false,
+		fixedWidth: false,
+		display: 0,
+		show: false,
+		height: true,
+		width: false,
+		opacity: true,
+		alwaysHide: false,
+		trigger: 'click',
+		initialDisplayFx: true,
+		returnHeightToAuto: true
+	},
+
+	initialize: function(){
+		var params = Array.link(arguments, {
+			'container': Element.type, //deprecated
+			'options': Object.type,
+			'togglers': $defined,
+			'elements': $defined
+		});
+		this.parent(params.elements, params.options);
+		this.togglers = $$(params.togglers);
+		this.previous = -1;
+		this.internalChain = new Chain();
+		if (this.options.alwaysHide) this.options.wait = true;
+		if ($chk(this.options.show)){
+			this.options.display = false;
+			this.previous = this.options.show;
+		}
+		if (this.options.start){
+			this.options.display = false;
+			this.options.show = false;
+		}
+		this.effects = {};
+		if (this.options.opacity) this.effects.opacity = 'fullOpacity';
+		if (this.options.width) this.effects.width = this.options.fixedWidth ? 'fullWidth' : 'offsetWidth';
+		if (this.options.height) this.effects.height = this.options.fixedHeight ? 'fullHeight' : 'scrollHeight';
+		for (var i = 0, l = this.togglers.length; i < l; i++) this.addSection(this.togglers[i], this.elements[i]);
+		this.elements.each(function(el, i){
+			if (this.options.show === i){
+				this.fireEvent('active', [this.togglers[i], el]);
+			} else {
+				for (var fx in this.effects) el.setStyle(fx, 0);
+			}
+		}, this);
+		if ($chk(this.options.display) || this.options.initialDisplayFx === false) this.display(this.options.display, this.options.initialDisplayFx);
+		if (this.options.fixedHeight !== false) this.options.returnHeightToAuto = false;
+		this.addEvent('complete', this.internalChain.callChain.bind(this.internalChain));
+	},
+
+	addSection: function(toggler, element){
+		toggler = document.id(toggler);
+		element = document.id(element);
+		var test = this.togglers.contains(toggler);
+		this.togglers.include(toggler);
+		this.elements.include(element);
+		var idx = this.togglers.indexOf(toggler);
+		var displayer = this.display.bind(this, idx);
+		toggler.store('accordion:display', displayer);
+		toggler.addEvent(this.options.trigger, displayer);
+		if (this.options.height) element.setStyles({'padding-top': 0, 'border-top': 'none', 'padding-bottom': 0, 'border-bottom': 'none'});
+		if (this.options.width) element.setStyles({'padding-left': 0, 'border-left': 'none', 'padding-right': 0, 'border-right': 'none'});
+		element.fullOpacity = 1;
+		if (this.options.fixedWidth) element.fullWidth = this.options.fixedWidth;
+		if (this.options.fixedHeight) element.fullHeight = this.options.fixedHeight;
+		element.setStyle('overflow', 'hidden');
+		if (!test){
+			for (var fx in this.effects) element.setStyle(fx, 0);
+		}
+		return this;
+	},
+
+	removeSection: function(toggler, displayIndex) {
+		var idx = this.togglers.indexOf(toggler);
+		var element = this.elements[idx];
+		var remover = function(){
+			this.togglers.erase(toggler);
+			this.elements.erase(element);
+			this.detach(toggler);
+		}.bind(this);
+		if (this.now == idx || displayIndex != undefined) this.display($pick(displayIndex, idx - 1 >= 0 ? idx - 1 : 0)).chain(remover);
+		else remover();
+		return this;
+	},
+
+	detach: function(toggler){
+		var remove = function(toggler) {
+			toggler.removeEvent(this.options.trigger, toggler.retrieve('accordion:display'));
+		}.bind(this);
+		if (!toggler) this.togglers.each(remove);
+		else remove(toggler);
+		return this;
+	},
+
+	display: function(index, useFx){
+		if (!this.check(index, useFx)) return this;
+		useFx = $pick(useFx, true);
+		index = ($type(index) == 'element') ? this.elements.indexOf(index) : index;
+		if (index == this.previous && !this.options.alwaysHide) return this;
+		if (this.options.returnHeightToAuto){
+			var prev = this.elements[this.previous];
+			if (prev && !this.selfHidden){
+				for (var fx in this.effects){
+					prev.setStyle(fx, prev[this.effects[fx]]);
+				}
+			}
+		}
+		if ((this.timer && this.options.wait) || (index === this.previous && !this.options.alwaysHide)) return this;
+		this.previous = index;
+		var obj = {};
+		this.elements.each(function(el, i){
+			obj[i] = {};
+			var hide;
+			if (i != index){
+				hide = true;
+			} else if (this.options.alwaysHide && ((el.offsetHeight > 0 && this.options.height) || el.offsetWidth > 0 && this.options.width)){
+				hide = true;
+				this.selfHidden = true;
+			}
+			this.fireEvent(hide ? 'background' : 'active', [this.togglers[i], el]);
+			for (var fx in this.effects) obj[i][fx] = hide ? 0 : el[this.effects[fx]];
+		}, this);
+		this.internalChain.clearChain();
+		this.internalChain.chain(function(){
+			if (this.options.returnHeightToAuto && !this.selfHidden){
+				var el = this.elements[index];
+				if (el) el.setStyle('height', 'auto');
+			};
+		}.bind(this));
+		return useFx ? this.start(obj) : this.set(obj);
+	}
+
+});
+
+/*
+	Compatibility with 1.2.0
+*/
+var Accordion = new Class({
+
+	Extends: Fx.Accordion,
+
+	initialize: function(){
+		this.parent.apply(this, arguments);
+		var params = Array.link(arguments, {'container': Element.type});
+		this.container = params.container;
+	},
+
+	addSection: function(toggler, element, pos){
+		toggler = document.id(toggler);
+		element = document.id(element);
+		var test = this.togglers.contains(toggler);
+		var len = this.togglers.length;
+		if (len && (!test || pos)){
+			pos = $pick(pos, len - 1);
+			toggler.inject(this.togglers[pos], 'before');
+			element.inject(toggler, 'after');
+		} else if (this.container && !test){
+			toggler.inject(this.container);
+			element.inject(this.container);
+		}
+		return this.parent.apply(this, arguments);
+	}
+
+});
+
+/*
+---
+
+script: Fx.Move.js
+
+name: Fx.Move
+
+description: Defines Fx.Move, a class that works with Element.Position.js to transition an element from one location to another.
+
+license: MIT-style license
+
+authors:
+  - Aaron Newton
+
+requires:
+  - Core/Fx.Morph
+  - /Element.Position
+
+provides: [Fx.Move]
+
+...
+*/
+
+Fx.Move = new Class({
+
+	Extends: Fx.Morph,
+
+	options: {
+		relativeTo: document.body,
+		position: 'center',
+		edge: false,
+		offset: {x: 0, y: 0}
+	},
+
+	start: function(destination){
+		var element = this.element,
+			topLeft = element.getStyles('top', 'left');
+		if (topLeft.top == 'auto' || topLeft.left == 'auto'){
+			element.setPosition(element.getPosition(element.getOffsetParent()));
+		}
+		return this.parent(element.position($merge(this.options, destination, {returnPos: true})));
+	}
+
+});
+
+Element.Properties.move = {
+
+	set: function(options){
+		var morph = this.retrieve('move');
+		if (morph) morph.cancel();
+		return this.eliminate('move').store('move:options', $extend({link: 'cancel'}, options));
+	},
+
+	get: function(options){
+		if (options || !this.retrieve('move')){
+			if (options || !this.retrieve('move:options')) this.set('move', options);
+			this.store('move', new Fx.Move(this, this.retrieve('move:options')));
+		}
+		return this.retrieve('move');
+	}
+
+};
+
+Element.implement({
+
+	move: function(options){
+		this.get('move').start(options);
+		return this;
+	}
+
+});
+
+
+/*
+---
+
+script: Fx.Reveal.js
+
+name: Fx.Reveal
+
+description: Defines Fx.Reveal, a class that shows and hides elements with a transition.
+
+license: MIT-style license
+
+authors:
+  - Aaron Newton
+
+requires:
+  - Core/Fx.Morph
+  - /Element.Shortcuts
+  - /Element.Measure
+
+provides: [Fx.Reveal]
+
+...
+*/
+
+Fx.Reveal = new Class({
+
+	Extends: Fx.Morph,
+
+	options: {/*	  
+		onShow: $empty(thisElement),
+		onHide: $empty(thisElement),
+		onComplete: $empty(thisElement),
+		heightOverride: null,
+		widthOverride: null, */
+		link: 'cancel',
+		styles: ['padding', 'border', 'margin'],
+		transitionOpacity: !Browser.Engine.trident4,
+		mode: 'vertical',
+		display: function(){
+			return this.element.get('tag') != 'tr' ? 'block' : 'table-row';
+		},
+		hideInputs: Browser.Engine.trident ? 'select, input, textarea, object, embed' : false,
+		opacity: 1
+	},
+
+	dissolve: function(){
+		try {
+			if (!this.hiding && !this.showing){
+				if (this.element.getStyle('display') != 'none'){
+					this.hiding = true;
+					this.showing = false;
+					this.hidden = true;
+					this.cssText = this.element.style.cssText;
+					var startStyles = this.element.getComputedSize({
+						styles: this.options.styles,
+						mode: this.options.mode
+					});
+					this.element.setStyle('display', $lambda(this.options.display).apply(this));
+					if (this.options.transitionOpacity) startStyles.opacity = this.options.opacity;
+					var zero = {};
+					$each(startStyles, function(style, name){
+						zero[name] = [style, 0];
+					}, this);
+					this.element.setStyle('overflow', 'hidden');
+					var hideThese = this.options.hideInputs ? this.element.getElements(this.options.hideInputs) : null;
+					this.$chain.unshift(function(){
+						if (this.hidden){
+							this.hiding = false;
+							$each(startStyles, function(style, name){
+								startStyles[name] = style;
+							}, this);
+							this.element.style.cssText = this.cssText;
+							this.element.setStyle('display', 'none');
+							if (hideThese) hideThese.setStyle('visibility', 'visible');
+						}
+						this.fireEvent('hide', this.element);
+						this.callChain();
+					}.bind(this));
+					if (hideThese) hideThese.setStyle('visibility', 'hidden');
+					this.start(zero);
+				} else {
+					this.callChain.delay(10, this);
+					this.fireEvent('complete', this.element);
+					this.fireEvent('hide', this.element);
+				}
+			} else if (this.options.link == 'chain'){
+				this.chain(this.dissolve.bind(this));
+			} else if (this.options.link == 'cancel' && !this.hiding){
+				this.cancel();
+				this.dissolve();
+			}
+		} catch(e){
+			this.hiding = false;
+			this.element.setStyle('display', 'none');
+			this.callChain.delay(10, this);
+			this.fireEvent('complete', this.element);
+			this.fireEvent('hide', this.element);
+		}
+		return this;
+	},
+
+	reveal: function(){
+		try {
+			if (!this.showing && !this.hiding){
+				if (this.element.getStyle('display') == 'none'){
+					this.showing = true;
+					this.hiding = this.hidden =  false;
+					var startStyles;
+					this.cssText = this.element.style.cssText;
+					//toggle display, but hide it
+					this.element.measure(function(){
+						//create the styles for the opened/visible state
+						startStyles = this.element.getComputedSize({
+							styles: this.options.styles,
+							mode: this.options.mode
+						});
+					}.bind(this));
+					$each(startStyles, function(style, name){
+						startStyles[name] = style;
+					});
+					//if we're overridding height/width
+					if ($chk(this.options.heightOverride)) startStyles.height = this.options.heightOverride.toInt();
+					if ($chk(this.options.widthOverride)) startStyles.width = this.options.widthOverride.toInt();
+					if (this.options.transitionOpacity) {
+						this.element.setStyle('opacity', 0);
+						startStyles.opacity = this.options.opacity;
+					}
+					//create the zero state for the beginning of the transition
+					var zero = {
+						height: 0,
+						display: $lambda(this.options.display).apply(this)
+					};
+					$each(startStyles, function(style, name){ zero[name] = 0; });
+					//set to zero
+					this.element.setStyles($merge(zero, {overflow: 'hidden'}));
+					//hide inputs
+					var hideThese = this.options.hideInputs ? this.element.getElements(this.options.hideInputs) : null;
+					if (hideThese) hideThese.setStyle('visibility', 'hidden');
+					//start the effect
+					this.start(startStyles);
+					this.$chain.unshift(function(){
+						this.element.style.cssText = this.cssText;
+						this.element.setStyle('display', $lambda(this.options.display).apply(this));
+						if (!this.hidden) this.showing = false;
+						if (hideThese) hideThese.setStyle('visibility', 'visible');
+						this.callChain();
+						this.fireEvent('show', this.element);
+					}.bind(this));
+				} else {
+					this.callChain();
+					this.fireEvent('complete', this.element);
+					this.fireEvent('show', this.element);
+				}
+			} else if (this.options.link == 'chain'){
+				this.chain(this.reveal.bind(this));
+			} else if (this.options.link == 'cancel' && !this.showing){
+				this.cancel();
+				this.reveal();
+			}
+		} catch(e){
+			this.element.setStyles({
+				display: $lambda(this.options.display).apply(this),
+				visiblity: 'visible',
+				opacity: this.options.opacity
+			});
+			this.showing = false;
+			this.callChain.delay(10, this);
+			this.fireEvent('complete', this.element);
+			this.fireEvent('show', this.element);
+		}
+		return this;
+	},
+
+	toggle: function(){
+		if (this.element.getStyle('display') == 'none'){
+			this.reveal();
+		} else {
+			this.dissolve();
+		}
+		return this;
+	},
+
+	cancel: function(){
+		this.parent.apply(this, arguments);
+		this.element.style.cssText = this.cssText;
+		this.hiding = false;
+		this.showing = false;
+		return this;
+	}
+
+});
+
+Element.Properties.reveal = {
+
+	set: function(options){
+		var reveal = this.retrieve('reveal');
+		if (reveal) reveal.cancel();
+		return this.eliminate('reveal').store('reveal:options', options);
+	},
+
+	get: function(options){
+		if (options || !this.retrieve('reveal')){
+			if (options || !this.retrieve('reveal:options')) this.set('reveal', options);
+			this.store('reveal', new Fx.Reveal(this, this.retrieve('reveal:options')));
+		}
+		return this.retrieve('reveal');
+	}
+
+};
+
+Element.Properties.dissolve = Element.Properties.reveal;
+
+Element.implement({
+
+	reveal: function(options){
+		this.get('reveal', options).reveal();
+		return this;
+	},
+
+	dissolve: function(options){
+		this.get('reveal', options).dissolve();
+		return this;
+	},
+
+	nix: function(){
+		var params = Array.link(arguments, {destroy: Boolean.type, options: Object.type});
+		this.get('reveal', params.options).dissolve().chain(function(){
+			this[params.destroy ? 'destroy' : 'dispose']();
+		}.bind(this));
+		return this;
+	},
+
+	wink: function(){
+		var params = Array.link(arguments, {duration: Number.type, options: Object.type});
+		var reveal = this.get('reveal', params.options);
+		reveal.reveal().chain(function(){
+			(function(){
+				reveal.dissolve();
+			}).delay(params.duration || 2000);
+		});
+	}
+
+
+});
+
+/*
+---
+
+script: Fx.Scroll.js
+
+name: Fx.Scroll
+
+description: Effect to smoothly scroll any element, including the window.
+
+license: MIT-style license
+
+authors:
+  - Valerio Proietti
+
+requires:
+  - Core/Fx
+  - Core/Element.Event
+  - Core/Element.Dimensions
+  - /MooTools.More
+
+provides: [Fx.Scroll]
+
+...
+*/
+
+Fx.Scroll = new Class({
+
+	Extends: Fx,
+
+	options: {
+		offset: {x: 0, y: 0},
+		wheelStops: true
+	},
+
+	initialize: function(element, options){
+		this.element = this.subject = document.id(element);
+		this.parent(options);
+		var cancel = this.cancel.bind(this, false);
+
+		if ($type(this.element) != 'element') this.element = document.id(this.element.getDocument().body);
+
+		var stopper = this.element;
+
+		if (this.options.wheelStops){
+			this.addEvent('start', function(){
+				stopper.addEvent('mousewheel', cancel);
+			}, true);
+			this.addEvent('complete', function(){
+				stopper.removeEvent('mousewheel', cancel);
+			}, true);
+		}
+	},
+
+	set: function(){
+		var now = Array.flatten(arguments);
+		if (Browser.Engine.gecko) now = [Math.round(now[0]), Math.round(now[1])];
+		this.element.scrollTo(now[0] + this.options.offset.x, now[1] + this.options.offset.y);
+	},
+
+	compute: function(from, to, delta){
+		return [0, 1].map(function(i){
+			return Fx.compute(from[i], to[i], delta);
+		});
+	},
+
+	start: function(x, y){
+		if (!this.check(x, y)) return this;
+		var scrollSize = this.element.getScrollSize(),
+			scroll = this.element.getScroll(), 
+			values = {x: x, y: y};
+		for (var z in values){
+			var max = scrollSize[z];
+			if ($chk(values[z])) values[z] = ($type(values[z]) == 'number') ? values[z] : max;
+			else values[z] = scroll[z];
+			values[z] += this.options.offset[z];
+		}
+		return this.parent([scroll.x, scroll.y], [values.x, values.y]);
+	},
+
+	toTop: function(){
+		return this.start(false, 0);
+	},
+
+	toLeft: function(){
+		return this.start(0, false);
+	},
+
+	toRight: function(){
+		return this.start('right', false);
+	},
+
+	toBottom: function(){
+		return this.start(false, 'bottom');
+	},
+
+	toElement: function(el){
+		var position = document.id(el).getPosition(this.element);
+		return this.start(position.x, position.y);
+	},
+
+	scrollIntoView: function(el, axes, offset){
+		axes = axes ? $splat(axes) : ['x','y'];
+		var to = {};
+		el = document.id(el);
+		var pos = el.getPosition(this.element);
+		var size = el.getSize();
+		var scroll = this.element.getScroll();
+		var containerSize = this.element.getSize();
+		var edge = {
+			x: pos.x + size.x,
+			y: pos.y + size.y
+		};
+		['x','y'].each(function(axis) {
+			if (axes.contains(axis)) {
+				if (edge[axis] > scroll[axis] + containerSize[axis]) to[axis] = edge[axis] - containerSize[axis];
+				if (pos[axis] < scroll[axis]) to[axis] = pos[axis];
+			}
+			if (to[axis] == null) to[axis] = scroll[axis];
+			if (offset && offset[axis]) to[axis] = to[axis] + offset[axis];
+		}, this);
+		if (to.x != scroll.x || to.y != scroll.y) this.start(to.x, to.y);
+		return this;
+	},
+
+	scrollToCenter: function(el, axes, offset){
+		axes = axes ? $splat(axes) : ['x', 'y'];
+		el = $(el);
+		var to = {},
+			pos = el.getPosition(this.element),
+			size = el.getSize(),
+			scroll = this.element.getScroll(),
+			containerSize = this.element.getSize(),
+			edge = {
+				x: pos.x + size.x,
+				y: pos.y + size.y
+			};
+
+		['x','y'].each(function(axis){
+			if(axes.contains(axis)){
+				to[axis] = pos[axis] - (containerSize[axis] - size[axis])/2;
+			}
+			if(to[axis] == null) to[axis] = scroll[axis];
+			if(offset && offset[axis]) to[axis] = to[axis] + offset[axis];
+		}, this);
+		if (to.x != scroll.x || to.y != scroll.y) this.start(to.x, to.y);
+		return this;
+	}
+
+});
+
+
+/*
+---
+
+script: Fx.Slide.js
+
+name: Fx.Slide
+
+description: Effect to slide an element in and out of view.
+
+license: MIT-style license
+
+authors:
+  - Valerio Proietti
+
+requires:
+  - Core/Fx
+  - Core/Element.Style
+  - /MooTools.More
+
+provides: [Fx.Slide]
+
+...
+*/
+
+Fx.Slide = new Class({
+
+	Extends: Fx,
+
+	options: {
+		mode: 'vertical',
+		wrapper: false,
+		hideOverflow: true,
+		resetHeight: false
+	},
+
+	initialize: function(element, options){
+		this.addEvent('complete', function(){
+			this.open = (this.wrapper['offset' + this.layout.capitalize()] != 0);
+			if (this.open && this.options.resetHeight) this.wrapper.setStyle('height', '');
+			if (this.open && Browser.Engine.webkit419) this.element.dispose().inject(this.wrapper);
+		}, true);
+		this.element = this.subject = document.id(element);
+		this.parent(options);
+		var wrapper = this.element.retrieve('wrapper');
+		var styles = this.element.getStyles('margin', 'position', 'overflow');
+		if (this.options.hideOverflow) styles = $extend(styles, {overflow: 'hidden'});
+		if (this.options.wrapper) wrapper = document.id(this.options.wrapper).setStyles(styles);
+		this.wrapper = wrapper || new Element('div', {
+			styles: styles
+		}).wraps(this.element);
+		this.element.store('wrapper', this.wrapper).setStyle('margin', 0);
+		this.now = [];
+		this.open = true;
+	},
+
+	vertical: function(){
+		this.margin = 'margin-top';
+		this.layout = 'height';
+		this.offset = this.element.offsetHeight;
+	},
+
+	horizontal: function(){
+		this.margin = 'margin-left';
+		this.layout = 'width';
+		this.offset = this.element.offsetWidth;
+	},
+
+	set: function(now){
+		this.element.setStyle(this.margin, now[0]);
+		this.wrapper.setStyle(this.layout, now[1]);
+		return this;
+	},
+
+	compute: function(from, to, delta){
+		return [0, 1].map(function(i){
+			return Fx.compute(from[i], to[i], delta);
+		});
+	},
+
+	start: function(how, mode){
+		if (!this.check(how, mode)) return this;
+		this[mode || this.options.mode]();
+		var margin = this.element.getStyle(this.margin).toInt();
+		var layout = this.wrapper.getStyle(this.layout).toInt();
+		var caseIn = [[margin, layout], [0, this.offset]];
+		var caseOut = [[margin, layout], [-this.offset, 0]];
+		var start;
+		switch (how){
+			case 'in': start = caseIn; break;
+			case 'out': start = caseOut; break;
+			case 'toggle': start = (layout == 0) ? caseIn : caseOut;
+		}
+		return this.parent(start[0], start[1]);
+	},
+
+	slideIn: function(mode){
+		return this.start('in', mode);
+	},
+
+	slideOut: function(mode){
+		return this.start('out', mode);
+	},
+
+	hide: function(mode){
+		this[mode || this.options.mode]();
+		this.open = false;
+		return this.set([-this.offset, 0]);
+	},
+
+	show: function(mode){
+		this[mode || this.options.mode]();
+		this.open = true;
+		return this.set([0, this.offset]);
+	},
+
+	toggle: function(mode){
+		return this.start('toggle', mode);
+	}
+
+});
+
+Element.Properties.slide = {
+
+	set: function(options){
+		var slide = this.retrieve('slide');
+		if (slide) slide.cancel();
+		return this.eliminate('slide').store('slide:options', $extend({link: 'cancel'}, options));
+	},
+
+	get: function(options){
+		if (options || !this.retrieve('slide')){
+			if (options || !this.retrieve('slide:options')) this.set('slide', options);
+			this.store('slide', new Fx.Slide(this, this.retrieve('slide:options')));
+		}
+		return this.retrieve('slide');
+	}
+
+};
+
+Element.implement({
+
+	slide: function(how, mode){
+		how = how || 'toggle';
+		var slide = this.get('slide'), toggle;
+		switch (how){
+			case 'hide': slide.hide(mode); break;
+			case 'show': slide.show(mode); break;
+			case 'toggle':
+				var flag = this.retrieve('slide:flag', slide.open);
+				slide[flag ? 'slideOut' : 'slideIn'](mode);
+				this.store('slide:flag', !flag);
+				toggle = true;
+			break;
+			default: slide.start(how, mode);
+		}
+		if (!toggle) this.eliminate('slide:flag');
+		return this;
+	}
+
+});
+
+
+/*
+---
+
+script: Fx.SmoothScroll.js
+
+name: Fx.SmoothScroll
+
+description: Class for creating a smooth scrolling effect to all internal links on the page.
+
+license: MIT-style license
+
+authors:
+  - Valerio Proietti
+
+requires:
+  - Core/Selectors
+  - /Fx.Scroll
+
+provides: [Fx.SmoothScroll]
+
+...
+*/
+
+var SmoothScroll = Fx.SmoothScroll = new Class({
+
+	Extends: Fx.Scroll,
+
+	initialize: function(options, context){
+		context = context || document;
+		this.doc = context.getDocument();
+		var win = context.getWindow();
+		this.parent(this.doc, options);
+		this.links = $$(this.options.links || this.doc.links);
+		var location = win.location.href.match(/^[^#]*/)[0] + '#';
+		this.links.each(function(link){
+			if (link.href.indexOf(location) != 0) {return;}
+			var anchor = link.href.substr(location.length);
+			if (anchor) this.useLink(link, anchor);
+		}, this);
+		if (!Browser.Engine.webkit419) {
+			this.addEvent('complete', function(){
+				win.location.hash = this.anchor;
+			}, true);
+		}
+	},
+
+	useLink: function(link, anchor){
+		var el;
+		link.addEvent('click', function(event){
+			if (el !== false && !el) el = document.id(anchor) || this.doc.getElement('a[name=' + anchor + ']');
+			if (el) {
+				event.preventDefault();
+				this.anchor = anchor;
+				this.toElement(el).chain(function(){
+					this.fireEvent('scrolledTo', [link, el]);
+				}.bind(this));
+				link.blur();
+			}
+		}.bind(this));
+	}
+});
+
+/*
+---
+
+script: Fx.Sort.js
+
+name: Fx.Sort
+
+description: Defines Fx.Sort, a class that reorders lists with a transition.
+
+license: MIT-style license
+
+authors:
+  - Aaron Newton
+
+requires:
+  - Core/Element.Dimensions
+  - /Fx.Elements
+  - /Element.Measure
+
+provides: [Fx.Sort]
+
+...
+*/
+
+Fx.Sort = new Class({
+
+	Extends: Fx.Elements,
+
+	options: {
+		mode: 'vertical'
+	},
+
+	initialize: function(elements, options){
+		this.parent(elements, options);
+		this.elements.each(function(el){
+			if (el.getStyle('position') == 'static') el.setStyle('position', 'relative');
+		});
+		this.setDefaultOrder();
+	},
+
+	setDefaultOrder: function(){
+		this.currentOrder = this.elements.map(function(el, index){
+			return index;
+		});
+	},
+
+	sort: function(newOrder){
+		if ($type(newOrder) != 'array') return false;
+		var top = 0,
+			left = 0,
+			next = {},
+			zero = {},
+			vert = this.options.mode == 'vertical';
+		var current = this.elements.map(function(el, index){
+			var size = el.getComputedSize({styles: ['border', 'padding', 'margin']});
+			var val;
+			if (vert){
+				val = {
+					top: top,
+					margin: size['margin-top'],
+					height: size.totalHeight
+				};
+				top += val.height - size['margin-top'];
+			} else {
+				val = {
+					left: left,
+					margin: size['margin-left'],
+					width: size.totalWidth
+				};
+				left += val.width;
+			}
+			var plane = vert ? 'top' : 'left';
+			zero[index] = {};
+			var start = el.getStyle(plane).toInt();
+			zero[index][plane] = start || 0;
+			return val;
+		}, this);
+		this.set(zero);
+		newOrder = newOrder.map(function(i){ return i.toInt(); });
+		if (newOrder.length != this.elements.length){
+			this.currentOrder.each(function(index){
+				if (!newOrder.contains(index)) newOrder.push(index);
+			});
+			if (newOrder.length > this.elements.length)
+				newOrder.splice(this.elements.length-1, newOrder.length - this.elements.length);
+		}
+		var margin = top = left = 0;
+		newOrder.each(function(item, index){
+			var newPos = {};
+			if (vert){
+				newPos.top = top - current[item].top - margin;
+				top += current[item].height;
+			} else {
+				newPos.left = left - current[item].left;
+				left += current[item].width;
+			}
+			margin = margin + current[item].margin;
+			next[item]=newPos;
+		}, this);
+		var mapped = {};
+		$A(newOrder).sort().each(function(index){
+			mapped[index] = next[index];
+		});
+		this.start(mapped);
+		this.currentOrder = newOrder;
+		return this;
+	},
+
+	rearrangeDOM: function(newOrder){
+		newOrder = newOrder || this.currentOrder;
+		var parent = this.elements[0].getParent();
+		var rearranged = [];
+		this.elements.setStyle('opacity', 0);
+		//move each element and store the new default order
+		newOrder.each(function(index){
+			rearranged.push(this.elements[index].inject(parent).setStyles({
+				top: 0,
+				left: 0
+			}));
+		}, this);
+		this.elements.setStyle('opacity', 1);
+		this.elements = $$(rearranged);
+		this.setDefaultOrder();
+		return this;
+	},
+
+	getDefaultOrder: function(){
+		return this.elements.map(function(el, index){
+			return index;
+		});
+	},
+
+	forward: function(){
+		return this.sort(this.getDefaultOrder());
+	},
+
+	backward: function(){
+		return this.sort(this.getDefaultOrder().reverse());
+	},
+
+	reverse: function(){
+		return this.sort(this.currentOrder.reverse());
+	},
+
+	sortByElements: function(elements){
+		return this.sort(elements.map(function(el){
+			return this.elements.indexOf(el);
+		}, this));
+	},
+
+	swap: function(one, two){
+		if ($type(one) == 'element') one = this.elements.indexOf(one);
+		if ($type(two) == 'element') two = this.elements.indexOf(two);
+		
+		var newOrder = $A(this.currentOrder);
+		newOrder[this.currentOrder.indexOf(one)] = two;
+		newOrder[this.currentOrder.indexOf(two)] = one;
+		return this.sort(newOrder);
+	}
+
+});
+
+/*
+---
+
+script: Request.JSONP.js
+
+name: Request.JSONP
+
+description: Defines Request.JSONP, a class for cross domain javascript via script injection.
+
+license: MIT-style license
+
+authors:
+  - Aaron Newton
+  - Guillermo Rauch
+
+requires:
+  - Core/Element
+  - Core/Request
+  - /Log
+
+provides: [Request.JSONP]
+
+...
+*/
+
+Request.JSONP = new Class({
+
+	Implements: [Chain, Events, Options, Log],
+
+	options: {/*
+		onRetry: $empty(intRetries),
+		onRequest: $empty(scriptElement),
+		onComplete: $empty(data),
+		onSuccess: $empty(data),
+		onCancel: $empty(),
+		log: false,
+		*/
+		url: '',
+		data: {},
+		retries: 0,
+		timeout: 0,
+		link: 'ignore',
+		callbackKey: 'callback',
+		injectScript: document.head
+	},
+
+	initialize: function(options){
+		this.setOptions(options);
+		if (this.options.log) this.enableLog();
+		this.running = false;
+		this.requests = 0;
+		this.triesRemaining = [];
+	},
+
+	check: function(){
+		if (!this.running) return true;
+		switch (this.options.link){
+			case 'cancel': this.cancel(); return true;
+			case 'chain': this.chain(this.caller.bind(this, arguments)); return false;
+		}
+		return false;
+	},
+
+	send: function(options){
+		if (!$chk(arguments[1]) && !this.check(options)) return this;
+
+		var type = $type(options), 
+				old = this.options, 
+				index = $chk(arguments[1]) ? arguments[1] : this.requests++;
+		if (type == 'string' || type == 'element') options = {data: options};
+
+		options = $extend({data: old.data, url: old.url}, options);
+
+		if (!$chk(this.triesRemaining[index])) this.triesRemaining[index] = this.options.retries;
+		var remaining = this.triesRemaining[index];
+
+		(function(){
+			var script = this.getScript(options);
+			this.log('JSONP retrieving script with url: ' + script.get('src'));
+			this.fireEvent('request', script);
+			this.running = true;
+
+			(function(){
+				if (remaining){
+					this.triesRemaining[index] = remaining - 1;
+					if (script){
+						script.destroy();
+						this.send(options, index).fireEvent('retry', this.triesRemaining[index]);
+					}
+				} else if(this.running && script && this.options.timeout){
+					script.destroy();
+					this.cancel().fireEvent('failure');
+				}
+			}).delay(this.options.timeout, this);
+		}).delay(Browser.Engine.trident ? 50 : 0, this);
+		return this;
+	},
+
+	cancel: function(){
+		if (!this.running) return this;
+		this.running = false;
+		this.fireEvent('cancel');
+		return this;
+	},
+
+	getScript: function(options){
+		var index = Request.JSONP.counter,
+				data;
+		Request.JSONP.counter++;
+
+		switch ($type(options.data)){
+			case 'element': data = document.id(options.data).toQueryString(); break;
+			case 'object': case 'hash': data = Hash.toQueryString(options.data);
+		}
+
+		var src = options.url + 
+			 (options.url.test('\\?') ? '&' :'?') + 
+			 (options.callbackKey || this.options.callbackKey) + 
+			 '=Request.JSONP.request_map.request_'+ index + 
+			 (data ? '&' + data : '');
+		if (src.length > 2083) this.log('JSONP '+ src +' will fail in Internet Explorer, which enforces a 2083 bytes length limit on URIs');
+
+		var script = new Element('script', {type: 'text/javascript', src: src});
+		Request.JSONP.request_map['request_' + index] = function(){ this.success(arguments, script); }.bind(this);
+		return script.inject(this.options.injectScript);
+	},
+
+	success: function(args, script){
+		if (!this.running) return false;
+		if (script) script.destroy();
+		this.running = false;
+		this.log('JSONP successfully retrieved: ', args);
+		this.fireEvent('complete', args).fireEvent('success', args).callChain();
+	}
+
+});
+
+Request.JSONP.counter = 0;
+Request.JSONP.request_map = {};
+
+
+/*
+---
+
+script: Form.Validator.Swedish.js
+
+name: Form.Validator.Swedish
+
+description: Form Validator messages for Swedish.
+
+license: MIT-style license
+
+authors:
+  - Martin Lundgren
+
+requires:
+  - /Lang
+
+provides: [Form.Validator.Swedish]
+
+...
+*/
+
+MooTools.lang.set('sv-SE', 'Form.Validator', {
+
+	required: 'Fältet är obligatoriskt.',
+	minLength: 'Ange minst {minLength} tecken (du angav {length} tecken).',
+	maxLength: 'Ange högst {maxLength} tecken (du angav {length} tecken). ',
+	integer: 'Ange ett heltal i fältet. Tal med decimaler (t.ex. 1,25) är inte tillåtna.',
+	numeric: 'Ange endast numeriska värden i detta fält (t.ex. "1" eller "1.1" eller "-1" eller "-1,1").',
+	digits: 'Använd endast siffror och skiljetecken i detta fält (till exempel ett telefonnummer med bindestreck tillåtet).',
+	alpha: 'Använd endast bokstäver (a-ö) i detta fält. Inga mellanslag eller andra tecken är tillåtna.',
+	alphanum: 'Använd endast bokstäver (a-ö) och siffror (0-9) i detta fält. Inga mellanslag eller andra tecken är tillåtna.',
+	dateSuchAs: 'Ange ett giltigt datum som t.ex. {date}',
+	dateInFormatMDY: 'Ange ett giltigt datum som t.ex. YYYY-MM-DD (i.e. "1999-12-31")',
+	email: 'Ange en giltig e-postadress. Till exempel "erik@domain.com".',
+	url: 'Ange en giltig webbadress som http://www.google.com.',
+	currencyDollar: 'Ange en giltig belopp. Exempelvis 100,00.',
+	oneRequired: 'Vänligen ange minst ett av dessa alternativ.',
+	errorPrefix: 'Fel: ',
+	warningPrefix: 'Varning: ',
+
+	// Form.Validator.Extras
+	noSpace: 'Det får inte finnas några mellanslag i detta fält.',
+	reqChkByNode: 'Inga objekt är valda.',
+	requiredChk: 'Detta är ett obligatoriskt fält.',
+	reqChkByName: 'Välj en {label}.',
+	match: 'Detta fält måste matcha {matchName}',
+	startDate: 'startdatumet',
+	endDate: 'slutdatum',
+	currendDate: 'dagens datum',
+	afterDate: 'Datumet bör vara samma eller senare än {label}.',
+	beforeDate: 'Datumet bör vara samma eller tidigare än {label}.',
+	startMonth: 'Välj en start månad',
+	sameMonth: 'Dessa två datum måste vara i samma månad - du måste ändra det ena eller det andra.'
+
+});
+
+
+/*
+---
+
+script: Form.Validator.Ukrainian.js
+
+name: Form.Validator.Ukrainian
+
+description: Form Validator messages in Ukrainian (utf-8).
+
+license: MIT-style license
+
+authors:
+  - Slik
+
+requires:
+  - /Lang
+
+provides: [Form.Validator.Ukrainian]
+
+...
+*/
+
+MooTools.lang.set('uk-UA', 'Form.Validator', {
+
+	required: 'Це поле повинне бути заповненим.',
+	minLength: 'Введіть хоча б {minLength} символів (Ви ввели {length}).',
+	maxLength: 'Кількість символів не може бути більше {maxLength} (Ви ввели {length}).',
+	integer: 'Введіть в це поле число. Дробові числа (наприклад 1.25) не дозволені.',
+	numeric: 'Введіть в це поле число (наприклад "1" або "1.1", або "-1", або "-1.1").',
+	digits: 'В цьому полі ви можете використовувати лише цифри і знаки пунктіації (наприклад, телефонний номер з знаками дефізу або з крапками).',
+	alpha: 'В цьому полі можна використовувати лише латинські літери (a-z). Пробіли і інші символи заборонені.',
+	alphanum: 'В цьому полі можна використовувати лише латинські літери (a-z) і цифри (0-9). Пробіли і інші символи заборонені.',
+	dateSuchAs: 'Введіть коректну дату {date}.',
+	dateInFormatMDY: 'Введіть дату в форматі ММ/ДД/РРРР (наприклад "12/31/2009").',
+	email: 'Введіть коректну адресу електронної пошти (наприклад "name@domain.com").',
+	url: 'Введіть коректне інтернет-посилання (наприклад http://www.google.com).',
+	currencyDollar: 'Введіть суму в доларах (наприклад "$100.00").',
+	oneRequired: 'Заповніть одне з полів.',
+	errorPrefix: 'Помилка: ',
+	warningPrefix: 'Увага: '
+
+});
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/corneeded.jsp
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/corneeded.jsp	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/corneeded.jsp	(revision 47450)
@@ -0,0 +1,25 @@
+<%@ page contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<%@ taglib prefix="s" uri="/struts-tags"%>
+<html>
+<head>
+<link href="jsps/style.css" rel="stylesheet" type="text/css" media="screen" />
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title><s:text name="corneeded.title"/></title>
+</head>
+<body>
+<div id="wrapper">
+	<jsp:include page="menu.jsp"/>
+	<div id="page">
+	<div id="page-bgtop">
+		<div id="content">
+			<s:actionerror/>
+			<br>
+			<s:text name="corneeded.back"/>
+		</div>
+		<div style="clear: both;">&nbsp;</div>
+	</div>
+	</div>
+</div>
+</body>
+</html>
\ No newline at end of file
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/table-images/right.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/table-images/right.png
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/table-images/right.png	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/table-images/right.png	(revision 47450)

Property changes on: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/table-images/right.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/java/eu/dnetlib/validator/admin/actions/login/Login.java
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/java/eu/dnetlib/validator/admin/actions/login/Login.java	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/java/eu/dnetlib/validator/admin/actions/login/Login.java	(revision 47450)
@@ -0,0 +1,156 @@
+package eu.dnetlib.validator.admin.actions.login;
+
+import java.util.Map;
+import java.util.regex.Pattern;
+
+import javax.servlet.http.HttpServletResponse;
+
+import org.apache.log4j.Logger;
+import org.apache.struts2.interceptor.ServletResponseAware;
+import org.apache.struts2.interceptor.SessionAware;
+
+import com.opensymphony.xwork2.Action;
+
+import eu.dnetlib.validator.admin.actions.BaseValidatorAction;
+import eu.dnetlib.validator.admin.config.Constants;
+
+public class Login extends BaseValidatorAction implements SessionAware, ServletResponseAware {
+
+	private static final long serialVersionUID = -6021271413570776229L;
+	private String email_username, password_login;
+	private boolean rememberme;
+	private Map<String, Object> session;
+	private HttpServletResponse response;
+
+	private String url;
+	private String params;
+
+	private transient Logger logger = Logger.getLogger(Login.class);
+
+	public String execute() {
+		this.clearErrorsAndMessages();
+		try {
+			if(this.email_username == null || this.email_username.trim().equals(""))
+				return "login";	
+			logger.debug("logging-in user " + this.getEmail());
+			session.put(Constants.loggedInField, this.getEmail());
+			session.put("email", this.getEmail());
+			if (this.getUserAPI().isAdmin(email_username) || this.getValidatorAdminAPI().userIsMasterAdmin(email_username))
+				session.put("isAdmin", "true");
+			if (this.getValidatorAdminAPI().userIsMasterAdmin(email_username))
+				session.put("isAdmin", "true");
+			if (this.getValidatorAdminAPI().userIsSecondaryAdmin(email_username))
+				session.put("isAdmin", "true");
+			this.addActionMessage("Logged-in successfully");
+
+			if (url != null && (url.equals("/go2login") || url.equals("/Login") || url.equals("/portalLogin"))) {
+				url = "";
+				return "welcome";
+			}
+
+			return Action.SUCCESS;
+		} catch (Exception e) {
+			logger.error("error logging-in user " + this.getEmail(), e);
+			this.addActionError(this.getText("generic.error"));
+			reportException(e);
+			return "exception";
+		}
+	}
+
+	public void validate() {
+		this.clearErrors();
+		try {
+			if(this.email_username == null || this.email_username.trim().equals(""))
+				return;
+			
+			
+			String username = this.email_username;
+
+			Pattern rfc2822 = Pattern.compile("^[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?$");
+			if (!rfc2822.matcher(this.getEmail().trim().toLowerCase()).matches()) {
+				logger.debug("user logged in using username");
+				this.email_username = this.getUserAPI().getEmailFromUsername(this.getEmail());
+			}
+
+			if (this.email_username == null) {
+				this.email_username = username;
+				this.addActionError(this.getText("login.userNotExists"));
+				return;
+			}
+
+			if (!this.getUserAPI().userExists(this.getEmail())) {
+				this.email_username = username;
+				this.addActionError(this.getText("login.userNotExists"));
+				return;
+			}
+			if (!this.getUserAPI().isUserActivated(this.getEmail())) {
+				this.email_username = username;
+				this.addActionError(this.getText("login.notActivated"));
+				return;
+			}
+			if (!this.getUserAPI().correctCreds(this.getEmail(), this.getPassword_login())) {
+				this.email_username = username;
+				this.addActionError(this.getText("login.incorrectCreds"));
+				return;
+			}
+		} catch (Exception e) {
+			logger.error("", e);
+			this.addActionError(e.toString());
+			reportException(e);
+		}
+	}
+
+
+	public String getEmail() {
+		return email_username;
+	}
+
+	public void setEmail_username(String email_username) {
+		this.email_username = email_username;
+	}
+
+	public String getPassword_login() {
+		return password_login;
+	}
+
+	public void setPassword_login(String password_login) {
+		this.password_login = password_login;
+	}
+
+	@Override
+	public void setSession(Map<String, Object> session) {
+		this.session = session;
+	}
+
+	public void setRememberme(boolean rememberme) {
+		this.rememberme = rememberme;
+	}
+
+	public boolean isRememberme() {
+		return rememberme;
+	}
+
+	public void setServletResponse(HttpServletResponse response) {
+		this.response = response;
+	}
+
+	public HttpServletResponse getServletResponse() {
+		return response;
+	}
+
+	public String getUrl() {
+		return url;
+	}
+
+	public void setUrl(String url) {
+		this.url = url;
+	}
+
+	public String getParams() {
+		return params;
+	}
+
+	public void setParams(String params) {
+		this.params = params;
+	}
+}
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/java/eu/dnetlib/validator/admin/actions/login/ForgotPasswordPage.java
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/java/eu/dnetlib/validator/admin/actions/login/ForgotPasswordPage.java	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/java/eu/dnetlib/validator/admin/actions/login/ForgotPasswordPage.java	(revision 47450)
@@ -0,0 +1,8 @@
+package eu.dnetlib.validator.admin.actions.login;
+
+import eu.dnetlib.validator.admin.actions.BaseValidatorAction;
+
+@SuppressWarnings("serial")
+public class ForgotPasswordPage extends BaseValidatorAction{
+
+}
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/java/eu/dnetlib/validator/admin/actions/users/Register.java
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/java/eu/dnetlib/validator/admin/actions/users/Register.java	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/java/eu/dnetlib/validator/admin/actions/users/Register.java	(revision 47450)
@@ -0,0 +1,135 @@
+package eu.dnetlib.validator.admin.actions.users;
+
+import java.util.ArrayList;
+import java.util.regex.Pattern;
+
+import org.apache.log4j.Logger;
+
+import com.opensymphony.xwork2.Action;
+
+import eu.dnetlib.validator.admin.actions.BaseValidatorAction;
+
+public class Register extends BaseValidatorAction {
+
+	private static final long serialVersionUID = 4906485913149844710L;
+	private Logger logger = Logger.getLogger(Register.class);
+	
+	private String email, password, repassword;
+	private String username, firstName, lastName, institution;
+
+	public String execute() {
+		this.clearErrorsAndMessages();
+		try {
+			logger.debug("registering user " + email);
+			String activationId = null;
+
+			activationId = this.getUserAPI().addUser(username, email, password, firstName, lastName, institution);
+
+			this.addActionMessage((this.getText("registration.successful")));
+			this.addActionMessage((this.getText("general.unblock") + " " + this.getEmailer().getFrom()));
+
+			ArrayList<String> to = new ArrayList<String>();
+			to.add(this.getEmail());
+
+			this.getEmailer().sendMail(to, this.getText("registration.mail.subject"), this.getText("registration.mail.message") + ": " + this.getValBaseUrl() + "/activateAccount.action?activationId=" + activationId, false, null);
+
+			return Action.SUCCESS;
+		} catch (Exception e) {
+			logger.error("error registering user " + email, e);
+			this.addActionError(this.getText("generic.error"));
+			reportException(e);
+			return "exception";
+		}
+	}
+
+	public void validate() {
+		this.clearErrors();
+		if (this.getEmail() == null || this.getEmail().length() == 0)
+			this.addFieldError("email", this.getText("compulsoryField"));
+		if (this.getPassword() == null || this.getPassword().length() == 0)
+			this.addFieldError("password", this.getText("compulsoryField"));
+		if (this.getRepassword() == null || this.getRepassword().length() == 0)
+			this.addFieldError("repassword", this.getText("compulsoryField"));
+		if (this.getUsername() == null || this.getUsername().length() == 0)
+			this.addFieldError("username", this.getText("compulsoryField"));
+		if (this.getFirstName() == null || this.getFirstName().length() == 0)
+			this.addFieldError("firstName", this.getText("compulsoryField"));
+		if (this.getLastName() == null || this.getLastName().length() == 0)
+			this.addFieldError("lastName", this.getText("compulsoryField"));
+
+		if (!this.getPassword().equals(this.getRepassword()))
+			this.addFieldError("password", this.getText("identicalPasswords"));
+
+		Pattern rfc2822 = Pattern.compile("^[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?$");
+		if (!rfc2822.matcher(this.getEmail().trim().toLowerCase()).matches()) {
+			this.addFieldError("email", this.getText("notValidEmail"));
+		}
+
+		try {
+			if (this.getUserAPI().userExists(this.getEmail()))
+				this.addFieldError("email", this.getText("userAlreadyExists"));
+			if (this.getUserAPI().usernameExists(this.getUsername()))
+				this.addFieldError("username", this.getText("userAlreadyExists"));
+
+		} catch (Exception e) {
+			this.addFieldError("email", this.getText("userAlreadyExists"));
+		}
+	}
+
+	public String getEmail() {
+		return email;
+	}
+
+	public void setEmail(String email) {
+		this.email = email;
+	}
+
+	public String getPassword() {
+		return password;
+	}
+
+	public void setPassword(String password) {
+		this.password = password;
+	}
+
+	public String getRepassword() {
+		return repassword;
+	}
+
+	public void setRepassword(String repassword) {
+		this.repassword = repassword;
+	}
+
+	public String getUsername() {
+		return username;
+	}
+
+	public void setUsername(String username) {
+		this.username = username;
+	}
+
+	public String getFirstName() {
+		return firstName;
+	}
+
+	public void setFirstName(String firstName) {
+		this.firstName = firstName;
+	}
+
+	public String getLastName() {
+		return lastName;
+	}
+
+	public void setLastName(String lastName) {
+		this.lastName = lastName;
+	}
+
+	public String getInstitution() {
+		return institution;
+	}
+
+	public void setInstitution(String institution) {
+		this.institution = institution;
+	}
+	
+}
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/resources/eu/dnetlib/validator/admin/api/springContext-validator.properties
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/resources/eu/dnetlib/validator/admin/api/springContext-validator.properties	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/resources/eu/dnetlib/validator/admin/api/springContext-validator.properties	(revision 47450)
@@ -0,0 +1,49 @@
+# the address where validator is running and is accessible from the rest of the web
+services.validator.baseUrl = http://${container.hostname}:${container.port}/${container.context}
+
+# the email of the administrator
+# he will receive all the automatic bug reports and feedback created
+services.validator.adminEmail = nikonas@di.uoa.gr
+
+# the private key used for signing the direct login links from the OpenAIRE portal
+services.validator.portallogin.key = 568345
+
+
+# If set to true then, when the server is stopped and restarted, all jobs that haven't finished for any reason will restart
+# If set to false then only jobs that stopped gracefully due to a previous server restart will be restarted
+# Unless the server has stopped unexpectedly and you are now restarting it, this setting must be left to false
+services.validator.jobs.totalRestart = false
+
+# the mailhost for the mail service
+services.validator.mail.host = smtp.gmail.com
+# the port where the mail service is running
+services.validator.mail.port = 465
+# the address that appears in the from field in the mails send by the validator
+services.validator.mail.fromAddress = no-reply@openaire.eu
+# the reply-to field value in the mails send by the validator
+services.validator.mail.replyToAddress = no-reply@openaire.eu
+# the username of the account used to login in the mail server
+services.validator.mail.username = test.openaire@gmail.com
+# the password of the account used to login in the mail server
+services.validator.mail.password = ^($*@$)*!$
+# if authentication should take place
+# if set to false username and password is not needed
+services.validator.mail.authenticate = true
+# is set to yes then all mails will not be sent to their targets but to the address specified in services.validator.mail.overrideEmail
+services.validator.mail.override = false
+# if set to true then no mails are send, they are only logged as a debug message
+services.validator.mail.logonly = false
+# the mode used for the mails send by the validator
+services.validator.mail.mode = ssl
+# used by eu.dnetlib.utils.MailLibrary to control debuggin messages
+services.validator.mail.debug = false
+# if services.validator.mail.override is true then all mails will be send only to this address
+services.validator.mail.overrideEmail = nikonas@di.uoa.gr
+# a comma-seperated list of address that will receive all mails about validations and repo registrations
+services.validator.mail.specialRecipients = nikonas@di.uoa.gr
+
+# a comma-seperated list of addresses that have the ability to register repos without the need for validation and registration
+services.validator.repoRegistration.override = nikonas@di.uoa.gr
+
+# do not change
+services.validator.registration.validationSet = OpenAIRE For Literature Repositories
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/table-images/pattern.gif
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/table-images/pattern.gif
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/table-images/pattern.gif	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/table-images/pattern.gif	(revision 47450)

Property changes on: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/table-images/pattern.gif
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/table-images/back.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/table-images/back.png
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/table-images/back.png	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/table-images/back.png	(revision 47450)

Property changes on: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/table-images/back.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/table-images/left.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/table-images/left.png
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/table-images/left.png	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/table-images/left.png	(revision 47450)

Property changes on: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/table-images/left.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/java/eu/dnetlib/validator/admin/actions/BaseValidatorAction.java
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/java/eu/dnetlib/validator/admin/actions/BaseValidatorAction.java	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/java/eu/dnetlib/validator/admin/actions/BaseValidatorAction.java	(revision 47450)
@@ -0,0 +1,126 @@
+package eu.dnetlib.validator.admin.actions;
+
+import java.io.PrintWriter;
+import java.io.StringWriter;
+import java.io.Writer;
+import java.util.ArrayList;
+import java.util.List;
+
+import org.apache.log4j.Logger;
+
+import com.opensymphony.xwork2.ActionSupport;
+
+import eu.dnetlib.validator.admin.api.UserApi;
+import eu.dnetlib.validator.admin.api.ValidatorAdminAPI;
+import eu.dnetlib.validator.admin.config.Constants;
+import eu.dnetlib.validator.commons.email.Emailer;
+
+public class BaseValidatorAction extends ActionSupport {
+
+	/**
+	 * 
+	 */
+	private static final long serialVersionUID = -622158192564945303L;
+	private UserApi userAPI = null;
+	private ValidatorAdminAPI validatorAdminAPI = null;
+	private Emailer emailer = null;
+
+	public static String loggedInField = "LOGGED_IN_FIELD";
+	
+	private String valBaseUrl = null;
+	private String valAdminEmail = null;
+	private String userMode = null;
+	private String repoMode = null;
+	private String deployEnvironment = null;
+
+	public void reportException(Exception exception) {
+		Writer writer = new StringWriter();
+		PrintWriter printWriter = new PrintWriter(writer);
+		exception.printStackTrace(printWriter);
+		
+		List<String> recipients = new ArrayList<String>();
+		
+		try {
+			recipients.add(this.getValAdminEmail());
+			String message = "An exception has occurred:\n"+writer.toString();
+			String subject = "Automatic Bug Report";
+			this.getEmailer().sendMail(recipients, subject, message, false, null);
+		} catch (Exception e) {
+			Logger logger = Logger.getLogger(BaseValidatorAction.class);
+			logger.error("error sending error report", e);
+		}
+	}
+	
+	public boolean isModeLdap() {
+		return userMode.trim().toLowerCase().equals(Constants.MODE_LDAP);
+	}
+
+	public boolean isModeOpenAIRE() {
+		return repoMode.trim().toLowerCase().equals(Constants.MODE_DNET);
+	}
+
+	public UserApi getUserAPI() {
+		return userAPI;
+	}
+
+	public void setUserAPI(UserApi userAPI) {
+		this.userAPI = userAPI;
+	}
+
+	public ValidatorAdminAPI getValidatorAdminAPI() {
+		return validatorAdminAPI;
+	}
+
+	public void setValidatorAdminAPI(ValidatorAdminAPI validatorAdminAPI) {
+		this.validatorAdminAPI = validatorAdminAPI;
+	}
+
+	public Emailer getEmailer() {
+		return emailer;
+	}
+
+	public void setEmailer(Emailer emailer) {
+		this.emailer = emailer;
+	}
+
+	public String getUserMode() {
+		return userMode;
+	}
+
+	public void setUserMode(String userMode) {
+		this.userMode = userMode;
+	}
+
+	public String getRepoMode() {
+		return repoMode;
+	}
+
+	public void setRepoMode(String repoMode) {
+		this.repoMode = repoMode;
+	}
+
+	public void setValBaseUrl(String valBaseUrl) {
+		this.valBaseUrl = valBaseUrl;
+	}
+
+	public String getValBaseUrl() {
+		return valBaseUrl;
+	}
+
+	public void setValAdminEmail(String valAdminEmail) {
+		this.valAdminEmail = valAdminEmail;
+	}
+
+	public String getValAdminEmail() {
+		return valAdminEmail;
+	}
+
+	public String getDeployEnvironment() {
+		return deployEnvironment;
+	}
+
+	public void setDeployEnvironment(String deployEnvironment) {
+		this.deployEnvironment = deployEnvironment;
+	}
+
+}
\ No newline at end of file
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/java/eu/dnetlib/validator/admin/actions/rulesets/GetRules.java
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/java/eu/dnetlib/validator/admin/actions/rulesets/GetRules.java	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/java/eu/dnetlib/validator/admin/actions/rulesets/GetRules.java	(revision 47450)
@@ -0,0 +1,146 @@
+package eu.dnetlib.validator.admin.actions.rulesets;
+
+import java.util.ArrayList;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Set;
+
+import org.apache.log4j.Logger;
+
+import com.opensymphony.xwork2.Action;
+
+import eu.dnetlib.domain.functionality.validator.Rule;
+import eu.dnetlib.domain.functionality.validator.RuleSet;
+import eu.dnetlib.validator.admin.actions.BaseValidatorAction;
+import eu.dnetlib.validator.admin.constants.TypesAndTableNames;
+
+public class GetRules extends BaseValidatorAction {
+
+	private static final long serialVersionUID = 3336444896590055688L;
+	private int setId = -1;
+	private List<Rule> rulesContent;
+	private List<Rule> rulesUsage;
+	private Set<Integer> ruleIdsContent;
+	private Set<Integer> ruleIdsUsage;
+	private List<String> deployEnvironments;
+	private String funct = null;
+	private RuleSet ruleSet;
+	
+	private static final Logger logger = Logger.getLogger(GetRules.class);
+
+	public String execute() {
+		this.clearErrorsAndMessages();
+		try {
+			logger.debug("getting rules in rule set "+setId);
+			ruleIdsContent = new HashSet<Integer>();
+			ruleIdsUsage = new HashSet<Integer>();
+			rulesContent = new ArrayList<Rule>();
+			rulesUsage = new ArrayList<Rule>();
+			this.splitRules(this.getValidatorAdminAPI().getAllRules(),rulesContent, rulesUsage);
+			this.deployEnvironments = TypesAndTableNames.deployEnvironments;
+			if (setId == -1) {
+				ruleSet = new RuleSet();
+				ruleSet.setId(-1);
+				funct = "create";
+			} else {
+				funct = "edit";
+				ruleSet = this.getValidatorAdminAPI().getRuleSet(setId);
+				ruleIdsContent=ruleSet.getContentRulesIds();
+				ruleIdsUsage=ruleSet.getUsageRulesIds();
+//				visibility = Utilities.convertListToString(set.getVisibility());
+			}
+			return Action.SUCCESS;
+		}
+		catch(Exception e) {
+			logger.error("Error getting rules", e);
+			this.addActionError(this.getText("generic.error"));
+			reportException(e);
+			return "exception";
+		}
+	}
+
+	private void splitRules(List<Rule> totalRules, List<Rule> contentRules, List<Rule> usageRules) {
+		logger.debug("splitting rules..");
+		for (Rule rule : totalRules) {
+			if (rule.getJob_type().equals("content")) {
+				contentRules.add(rule);
+			} else if (rule.getJob_type().equals("usage")) {
+				usageRules.add(rule);
+			}
+		}
+	}
+
+	public String getFunct() {
+		return funct;
+	}
+
+	public void setFunct(String funct) {
+		this.funct = funct;
+	}
+		
+
+	public RuleSet getRuleSet() {
+		return ruleSet;
+	}
+
+	public void setRuleSet(RuleSet ruleSet) {
+		this.ruleSet = ruleSet;
+	}
+
+	public int getSetId() {
+		return setId;
+	}
+
+	public void setSetId(int setId) {
+		this.setId = setId;
+	}
+
+
+	public List<Rule> getRulesContent() {
+		return rulesContent;
+	}
+
+
+	public void setRulesContent(List<Rule> rulesContent) {
+		this.rulesContent = rulesContent;
+	}
+
+
+	public List<Rule> getRulesUsage() {
+		return rulesUsage;
+	}
+
+
+	public void setRulesUsage(List<Rule> rulesUsage) {
+		this.rulesUsage = rulesUsage;
+	}
+
+	public Set<Integer> getRuleIdsContent() {
+		return ruleIdsContent;
+	}
+
+	public void setRuleIdsContent(Set<Integer> ruleIdsContent) {
+		this.ruleIdsContent = ruleIdsContent;
+	}
+
+	public Set<Integer> getRuleIdsUsage() {
+		return ruleIdsUsage;
+	}
+
+	public void setRuleIdsUsage(Set<Integer> ruleIdsUsage) {
+		this.ruleIdsUsage = ruleIdsUsage;
+	}
+
+	public List<String> getDeployEnvironments() {
+		return deployEnvironments;
+	}
+
+	public void setDeployEnvironments(List<String> deployEnvironments) {
+		this.deployEnvironments = deployEnvironments;
+	}
+
+
+}
+
+	
+
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/resources/eu/dnetlib/validator/admin/constants/fieldDetails.txt
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/resources/eu/dnetlib/validator/admin/constants/fieldDetails.txt	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/resources/eu/dnetlib/validator/admin/constants/fieldDetails.txt	(revision 47450)
@@ -0,0 +1,102 @@
+rules
+id false
+name true
+description true
+type true
+mandatory true
+weight true
+visible false
+job_type true
+
+usage_rules
+provider_information true
+
+cris_rules
+cris_entity true
+
+cardinality_rule
+less_than true
+greater_than true
+	
+chain_rule
+type true 
+rule_1 true
+rule_2 true
+
+regularexpression_rule
+regexp true
+
+validurl_rule
+
+vocabulary_rule
+terms true
+terms_type true
+
+oaipmhdategranularity_rule
+base_url true
+
+oaipmhembargodate_rule
+
+oaipmhincrementalrecorddelivery_rule
+from true
+until true
+
+oaipmhresumptiontokenduration_rule
+duration true
+
+text_rule
+
+textvocabulary_rule
+terms true
+
+textreguralexpresion_rule
+regexp true
+
+xml_rule
+xpath true
+success true
+
+xmlcardinality_rule
+xpath true
+success true
+lt true
+gt true
+
+xmlfieldexist_rule
+xpath true
+success true
+
+xmlnotconfusedfields_rule
+xpath true
+success true
+fields true
+
+xmlregularexpression_rule
+xpath true
+success true
+regexp true
+
+xmlvalidurl_rule
+xpath true
+success true
+
+xmlvocabulary_rule
+xpath true
+success true
+terms true
+terms_type true
+
+xmlcrisclassvocabulary_rule
+xpath true
+scheme_id true
+success true
+terms true
+
+xmlcrisreferentialintegrity_rule
+xpath true
+entity_acronym true
+scheme_id true
+related_entity_xpath true
+related_entity_acronym true
+success true
+terms true
\ No newline at end of file
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/resources/struts.properties
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/resources/struts.properties	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/resources/struts.properties	(revision 47450)
@@ -0,0 +1,6 @@
+struts.custom.i18n.resources=web-texts,web-error-texts,backend-errors,field-infos
+struts.ognl.allowStaticMethodAccess = true
+
+struts.xwork.chaining.copyErrors = true
+struts.xwork.chaining.copyFieldErrors = true
+struts.xwork.chaining.copyMessages = true
\ No newline at end of file
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/java/eu/dnetlib/validator/admin/actions/rulesets/DeleteRuleSet.java
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/java/eu/dnetlib/validator/admin/actions/rulesets/DeleteRuleSet.java	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/java/eu/dnetlib/validator/admin/actions/rulesets/DeleteRuleSet.java	(revision 47450)
@@ -0,0 +1,39 @@
+package eu.dnetlib.validator.admin.actions.rulesets;
+
+
+import org.apache.log4j.Logger;
+
+import com.opensymphony.xwork2.Action;
+
+import eu.dnetlib.validator.admin.actions.BaseValidatorAction;
+
+public class DeleteRuleSet extends BaseValidatorAction {
+
+	private static final long serialVersionUID = 4858147485197818532L;
+	private int setId;
+	private static final Logger logger = Logger.getLogger(DeleteRuleSet.class);
+		
+	public int getSetId() {
+		return setId;
+	}
+
+	public void setSetId(int setId) {
+		this.setId = setId;
+	}
+
+	public String execute() {
+		this.clearErrorsAndMessages();
+		try {
+			logger.debug("deleting rule set "+setId);
+			this.getValidatorAdminAPI().deleteRuleSet(setId);
+			this.addActionMessage(this.getText("deleteRuleSet.success"));
+			return Action.SUCCESS;
+		}
+		catch(Exception e) {
+			logger.error("Error deleting ruleset", e);
+			this.addActionError(this.getText("generic.error"));
+			reportException(e);
+			return "exception";
+		}
+	}
+}
\ No newline at end of file
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/deploy.info
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/deploy.info	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/deploy.info	(revision 47450)
@@ -0,0 +1,10 @@
+{
+  "type_source": "SVN", 
+  "goal": "package -U -T 4C source:jar", 
+  "url": "http://svn-public.driver.research-infrastructures.eu/driver/dnet40/modules/uoa-validator-admin/trunk", 
+  "deploy_repository": "dnet4-snapshots", 
+  "version": "4", 
+  "mail": "nikonas@di.uoa.gr, antleb@di.uoa.gr, kiatrop@di.uoa.gr", 
+  "deploy_repository_url": "http://maven.research-infrastructures.eu/nexus/content/repositories/dnet4-snapshots", 
+  "name": "uoa-validator-admin"
+}
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/java/eu/dnetlib/validator/admin/actions/rules/PrepareAddRule.java
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/java/eu/dnetlib/validator/admin/actions/rules/PrepareAddRule.java	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/java/eu/dnetlib/validator/admin/actions/rules/PrepareAddRule.java	(revision 47450)
@@ -0,0 +1,101 @@
+package eu.dnetlib.validator.admin.actions.rules;
+
+import java.util.List;
+import java.util.Set;
+
+import org.apache.log4j.Logger;
+
+import com.opensymphony.xwork2.Action;
+
+import eu.dnetlib.domain.functionality.validator.Rule;
+import eu.dnetlib.validator.admin.actions.BaseValidatorAction;
+import eu.dnetlib.validator.admin.api.ValidatorAdminException;
+import eu.dnetlib.validator.admin.constants.TypesAndTableNames;
+
+public class PrepareAddRule extends BaseValidatorAction {
+
+	private static final long serialVersionUID = -8414397033694574297L;
+	private Logger logger = Logger.getLogger(PrepareAddRule.class);
+
+	private String type;
+	private Boolean forCris, forUsage = false;
+	private List<String> labels;
+	private String jobType;
+	private Set<String> entityTypes;
+	private List<Rule> rules;
+
+
+	public String execute() {
+		this.clearErrorsAndMessages();
+		logger.debug("preparing to add rule of type " + type );
+		logger.debug("cris:  " + forCris);
+		entityTypes = TypesAndTableNames.getCrisEntities().keySet();
+		
+		if (jobType.equals("usage"))
+			forUsage = true; 
+		try {
+			labels = getValidatorAdminAPI().getRuleLabels(type, forUsage, forCris);
+		} catch (ValidatorAdminException e) {
+			return Action.ERROR;
+		}
+		if (type.equals("ChainRule")) {
+			try {
+				rules = this.getValidatorAdminAPI().getAllRules();
+			} catch (ValidatorAdminException e) {
+				return Action.ERROR;
+			}
+		}
+
+		return Action.SUCCESS;
+	}
+	
+
+	public List<String> getLabels() {
+		return labels;
+	}
+
+	public void setLabels(List<String> labels) {
+		this.labels = labels;
+	}
+
+	public String getType() {
+		return type;
+	}
+
+	public String getJobType() {
+		return jobType;
+	}
+
+	public void setJobType(String jobType) {
+		this.jobType = jobType;
+	}
+
+
+	public void setType(String type) {
+		this.type = type;
+	}
+
+	public List<Rule> getRules() {
+		return rules;
+	}
+
+	public void setRules(List<Rule> rules) {
+		this.rules = rules;
+	}
+
+	public Set<String> getEntityTypes() {
+		return entityTypes;
+	}
+
+	public void setEntityTypes(Set<String> entityTypes) {
+		this.entityTypes = entityTypes;
+	}
+
+	public Boolean getForCris() {
+		return forCris;
+	}
+
+	public void setForCris(Boolean forCris) {
+		this.forCris = forCris;
+	}
+}
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/java/eu/dnetlib/validator/admin/actions/rules/EditRule.java
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/java/eu/dnetlib/validator/admin/actions/rules/EditRule.java	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/java/eu/dnetlib/validator/admin/actions/rules/EditRule.java	(revision 47450)
@@ -0,0 +1,75 @@
+package eu.dnetlib.validator.admin.actions.rules;
+
+import org.apache.log4j.Logger;
+
+import com.opensymphony.xwork2.Action;
+
+import eu.dnetlib.domain.functionality.validator.Rule;
+import eu.dnetlib.validator.admin.actions.BaseValidatorAction;
+import eu.dnetlib.validator.admin.api.ValidatorAdminException;
+
+public class EditRule extends BaseValidatorAction {
+
+	private static final long serialVersionUID = -8296545383286127915L;
+	private Rule rule;
+	private String[] inputs;
+	private String funct = null;
+	private static final Logger logger = Logger.getLogger(EditRule.class);
+
+	public String execute() {
+		this.clearErrorsAndMessages();
+		String ret = null;
+		logger.debug("editing rule " + rule.getId());
+		try {
+			logger.debug("ruleType: " + rule.getType());
+			if (funct.equals("clone")) {
+				if (rule.getJob_type().toLowerCase().contains("usage"))
+					rule.setJob_type("usage");
+				else if (rule.getJob_type().toLowerCase().contains("content"))
+					rule.setJob_type("content");
+				ret = this.getValidatorAdminAPI().storeRule(rule, inputs, false);
+			} else {
+				ret = this.getValidatorAdminAPI().storeRule(rule, inputs, true);
+			}
+			
+		} catch (ValidatorAdminException e) {
+			logger.error("Error editing rule", e);
+			this.addActionError(this.getText("generic.error"));
+			reportException(e);
+			return "exception";
+		}
+
+		if (ret != null) {
+			this.addActionError(this.getText(ret));
+			return "input-problem";
+		}
+
+		this.addActionMessage(this.getText("editRule.success"));
+		return Action.SUCCESS;
+	}
+
+	public Rule getRule() {
+		return rule;
+	}
+
+	public void setRule(Rule rule) {
+		this.rule = rule;
+	}
+
+	public String[] getInputs() {
+		return inputs;
+	}
+
+	public void setInputs(String[] inputs) {
+		this.inputs = inputs;
+	}
+
+	public String getFunct() {
+		return funct;
+	}
+
+	public void setFunct(String funct) {
+		this.funct = funct;
+	}
+	
+}
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/java/eu/dnetlib/validator/admin/actions/help/HelpPage.java
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/java/eu/dnetlib/validator/admin/actions/help/HelpPage.java	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/java/eu/dnetlib/validator/admin/actions/help/HelpPage.java	(revision 47450)
@@ -0,0 +1,8 @@
+package eu.dnetlib.validator.admin.actions.help;
+
+import eu.dnetlib.validator.admin.actions.BaseValidatorAction;
+
+@SuppressWarnings("serial")
+public class HelpPage extends BaseValidatorAction{
+
+}
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/java/eu/dnetlib/validator/admin/config/Constants.java
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/java/eu/dnetlib/validator/admin/config/Constants.java	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/java/eu/dnetlib/validator/admin/config/Constants.java	(revision 47450)
@@ -0,0 +1,12 @@
+package eu.dnetlib.validator.admin.config;
+
+
+public class Constants {
+	
+	public static String loggedInField = "LOGGED_IN_FIELD";
+
+	public static final String MODE_LOCAL = "local";
+	public static final String MODE_DNET = "dnet";
+	public static final String MODE_LDAP = "ldap";
+
+}
Index: modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/java/eu/dnetlib/validator/admin/actions/login/Login.java
===================================================================
--- modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/java/eu/dnetlib/validator/admin/actions/login/Login.java	(nonexistent)
+++ modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/java/eu/dnetlib/validator/admin/actions/login/Login.java	(revision 47450)
@@ -0,0 +1,156 @@
+package eu.dnetlib.validator.admin.actions.login;
+
+import java.util.Map;
+import java.util.regex.Pattern;
+
+import javax.servlet.http.HttpServletResponse;
+
+import org.apache.log4j.Logger;
+import org.apache.struts2.interceptor.ServletResponseAware;
+import org.apache.struts2.interceptor.SessionAware;
+
+import com.opensymphony.xwork2.Action;
+
+import eu.dnetlib.validator.admin.actions.BaseValidatorAction;
+import eu.dnetlib.validator.admin.config.Constants;
+
+public class Login extends BaseValidatorAction implements SessionAware, ServletResponseAware {
+
+	private static final long serialVersionUID = -6021271413570776229L;
+	private String email_username, password_login;
+	private boolean rememberme;
+	private Map<String, Object> session;
+	private HttpServletResponse response;
+
+	private String url;
+	private String params;
+
+	private transient Logger logger = Logger.getLogger(Login.class);
+
+	public String execute() {
+		this.clearErrorsAndMessages();
+		try {
+			if(this.email_username == null || this.email_username.trim().equals(""))
+				return "login";	
+			logger.debug("logging-in user " + this.getEmail());
+			session.put(Constants.loggedInField, this.getEmail());
+			session.put("email", this.getEmail());
+			if (this.getUserAPI().isAdmin(email_username) || this.getValidatorAdminAPI().userIsMasterAdmin(email_username))
+				session.put("isAdmin", "true");
+			if (this.getValidatorAdminAPI().userIsMasterAdmin(email_username))
+				session.put("isAdmin", "true");
+			if (this.getValidatorAdminAPI().userIsSecondaryAdmin(email_username))
+				session.put("isAdmin", "true");
+			this.addActionMessage("Logged-in successfully");
+
+			if (url != null && (url.equals("/go2login") || url.equals("/Login") || url.equals("/portalLogin"))) {
+				url = "";
+				return "welcome";
+			}
+
+			return Action.SUCCESS;
+		} catch (Exception e) {
+			logger.error("error logging-in user " + this.getEmail(), e);
+			this.addActionError(this.getText("generic.error"));
+			reportException(e);
+			return "exception";
+		}
+	}
+
+	public void validate() {
+		this.clearErrors();
+		try {
+			if(this.email_username == null || this.email_username.trim().equals(""))
+				return;
+			
+			
+			String username = this.email_username;
+
+			Pattern rfc2822 = Pattern.compile("^[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?$");
+			if (!rfc2822.matcher(this.getEmail().trim().toLowerCase()).matches()) {
+				logger.debug("user logged in using username");
+				this.email_username = this.getUserAPI().getEmailFromUsername(this.getEmail());
+			}
+
+			if (this.email_username == null) {
+				this.email_username = username;
+				this.addActionError(this.getText("login.userNotExists"));
+				return;
+			}
+
+			if (!this.getUserAPI().userExists(this.getEmail())) {
+				this.email_username = username;
+				this.addActionError(this.getText("login.userNotExists"));
+				return;
+			}
+			if (!this.getUserAPI().isUserActivated(this.getEmail())) {
+				this.email_username = username;
+				this.addActionError(this.getText("login.notActivated"));
+				return;
+			}
+			if (!this.getUserAPI().correctCreds(this.getEmail(), this.getPassword_login())) {
+				this.email_username = username;
+				this.addActionError(this.getText("login.incorrectCreds"));
+				return;
+			}
+		} catch (Exception e) {
+			logger.error("", e);
+			this.addActionError(e.toString());
+			reportException(e);
+		}
+	}
+
+
+	public String getEmail() {
+		return email_username;
+	}
+
+	public void setEmail_username(String email_username) {
+		this.email_username = email_username;
+	}
+
+	public String getPassword_login() {
+		return password_login;
+	}
+
+	public void setPassword_login(String password_login) {
+		this.password_login = password_login;
+	}
+
+	@Override
+	public void setSession(Map<String, Object> session) {
+		this.session = session;
+	}
+
+	public void setRememberme(boolean rememberme) {
+		this.rememberme = rememberme;
+	}
+
+	public boolean isRememberme() {
+		return rememberme;
+	}
+
+	public void setServletResponse(HttpServletResponse response) {
+		this.response = response;
+	}
+
+	public HttpServletResponse getServletResponse() {
+		return response;
+	}
+
+	public String getUrl() {
+		return url;
+	}
+
+	public void setUrl(String url) {
+		this.url = url;
+	}
+
+	public String getParams() {
+		return params;
+	}
+
+	public void setParams(String params) {
+		this.params = params;
+	}
+}
Index: modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/java/eu/dnetlib/validator/admin/actions/login/ForgotPasswordPage.java
===================================================================
--- modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/java/eu/dnetlib/validator/admin/actions/login/ForgotPasswordPage.java	(nonexistent)
+++ modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/java/eu/dnetlib/validator/admin/actions/login/ForgotPasswordPage.java	(revision 47450)
@@ -0,0 +1,8 @@
+package eu.dnetlib.validator.admin.actions.login;
+
+import eu.dnetlib.validator.admin.actions.BaseValidatorAction;
+
+@SuppressWarnings("serial")
+public class ForgotPasswordPage extends BaseValidatorAction{
+
+}
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/java/eu/dnetlib/validator/admin/constants/FieldsAndDetails.java
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/java/eu/dnetlib/validator/admin/constants/FieldsAndDetails.java	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/java/eu/dnetlib/validator/admin/constants/FieldsAndDetails.java	(revision 47450)
@@ -0,0 +1,61 @@
+package eu.dnetlib.validator.admin.constants;
+
+import java.io.BufferedReader;
+import java.io.InputStreamReader;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+import org.apache.log4j.Logger;
+
+import eu.dnetlib.validator.admin.constants.fielddetails.FieldDetails;
+
+public class FieldsAndDetails {
+
+	static private Map<String, List<FieldDetails>> map;
+	private static Logger logger = Logger.getLogger(FieldsAndDetails.class);
+
+	static {
+		logger.debug("initializing map of FieldsAndDetails");
+		map = new HashMap<String, List<FieldDetails>>();
+		BufferedReader br = new BufferedReader(
+				new InputStreamReader(
+						FieldsAndDetails.class
+								.getResourceAsStream("/eu/dnetlib/validator/admin/constants/fieldDetails.txt")));
+		String line;
+		try {
+			while ((line = br.readLine()) != null) {
+				List<FieldDetails> lfd = new ArrayList<FieldDetails>();
+				String tableName = line.trim();
+				while ((line = br.readLine()) != null) {
+					if (line.trim().equals(""))
+						break;
+					String[] args = line.split(" ");
+					FieldDetails details = new FieldDetails();
+					details.setTableName(tableName);
+					details.setFieldName(args[0].trim());
+					details.setForDet(Boolean.parseBoolean(args[1].trim()
+							.toLowerCase()));
+					lfd.add(details);
+				}
+				map.put(tableName.toLowerCase(), lfd);
+			}
+		} catch (Exception e) {
+			logger.error("Error initialiazing map of FieldsAndDetails", e);
+		}
+	}
+	
+	static public List<FieldDetails> getFieldsAndDetails(String tablename) {
+		logger.debug("getting fielddetails of table "+tablename);
+		if(tablename != null) {
+			tablename = tablename.toLowerCase();
+			List<FieldDetails> ret = map.get(tablename);
+			if(ret == null) {
+				ret = map.get(TypesAndTableNames.getTableNameOfType(tablename));
+			}
+			return ret;
+		}
+		return null;
+	}
+}
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/resources/eu/dnetlib/validator/admin/api/springContext-validator.xml
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/resources/eu/dnetlib/validator/admin/api/springContext-validator.xml	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/resources/eu/dnetlib/validator/admin/api/springContext-validator.xml	(revision 47450)
@@ -0,0 +1,35 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<beans xmlns="http://www.springframework.org/schema/beans"
+	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+	xmlns:context="http://www.springframework.org/schema/context"
+	xmlns:cxf="http://cxf.apache.org/core"
+	xmlns:jaxws="http://cxf.apache.org/jaxws"
+	xmlns:p="http://http://www.springframework.org/schema/p"
+	xmlns:template="http://dnetlib.eu/springbeans/template"
+	xmlns:t="http://dnetlib.eu/springbeans/t"
+	xmlns:tx="http://www.springframework.org/schema/tx"
+	
+	xsi:schemaLocation="
+		http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.0.xsd
+        http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.0.xsd
+        http://cxf.apache.org/core http://cxf.apache.org/schemas/core.xsd
+        http://cxf.apache.org/jaxws http://cxf.apache.org/schemas/jaxws.xsd
+        http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-4.0.xsd
+        http://dnetlib.eu/springbeans/template http://dnetlib.eu/springbeans/template.xsd"
+	default-autowire="no">
+	
+	<bean id="validatorAdminAPI" class="eu.dnetlib.validator.admin.api.impls.ValidatorAdminApiImpl" scope="singleton" init-method="start">
+		<property name="jobsDao" ref="jobsDao" />
+		<property name="rulesetsDao" ref="rulesetsDao" />
+		<property name="rulesDao" ref="rulesDao" />
+		<property name="usersDao" ref="usersDao" />	
+		<property name="masterAdmins" value="${services.validator.admins.master}" />
+		<property name="secondaryAdmins" value="${services.validator.admins.secondary}" />
+		<property name="emailer" ref="emailer" />
+		<property name="emailBuilder" ref="emailBuilder" />
+		<property name="registrationsReportEmail" value="${services.validator.registrationsReport.email}" />
+	</bean>
+	
+	<bean id ="emailBuilder" class="eu.dnetlib.validator.admin.api.impls.EmailBuilder" init-method="init" scope="prototype" />
+	
+</beans>
\ No newline at end of file
Index: modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/java/eu/dnetlib/validator/admin/actions/users/Register.java
===================================================================
--- modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/java/eu/dnetlib/validator/admin/actions/users/Register.java	(nonexistent)
+++ modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/java/eu/dnetlib/validator/admin/actions/users/Register.java	(revision 47450)
@@ -0,0 +1,135 @@
+package eu.dnetlib.validator.admin.actions.users;
+
+import java.util.ArrayList;
+import java.util.regex.Pattern;
+
+import org.apache.log4j.Logger;
+
+import com.opensymphony.xwork2.Action;
+
+import eu.dnetlib.validator.admin.actions.BaseValidatorAction;
+
+public class Register extends BaseValidatorAction {
+
+	private static final long serialVersionUID = 4906485913149844710L;
+	private Logger logger = Logger.getLogger(Register.class);
+	
+	private String email, password, repassword;
+	private String username, firstName, lastName, institution;
+
+	public String execute() {
+		this.clearErrorsAndMessages();
+		try {
+			logger.debug("registering user " + email);
+			String activationId = null;
+
+			activationId = this.getUserAPI().addUser(username, email, password, firstName, lastName, institution);
+
+			this.addActionMessage((this.getText("registration.successful")));
+			this.addActionMessage((this.getText("general.unblock") + " " + this.getEmailer().getFrom()));
+
+			ArrayList<String> to = new ArrayList<String>();
+			to.add(this.getEmail());
+
+			this.getEmailer().sendMail(to, this.getText("registration.mail.subject"), this.getText("registration.mail.message") + ": " + this.getValBaseUrl() + "/activateAccount.action?activationId=" + activationId, false, null);
+
+			return Action.SUCCESS;
+		} catch (Exception e) {
+			logger.error("error registering user " + email, e);
+			this.addActionError(this.getText("generic.error"));
+			reportException(e);
+			return "exception";
+		}
+	}
+
+	public void validate() {
+		this.clearErrors();
+		if (this.getEmail() == null || this.getEmail().length() == 0)
+			this.addFieldError("email", this.getText("compulsoryField"));
+		if (this.getPassword() == null || this.getPassword().length() == 0)
+			this.addFieldError("password", this.getText("compulsoryField"));
+		if (this.getRepassword() == null || this.getRepassword().length() == 0)
+			this.addFieldError("repassword", this.getText("compulsoryField"));
+		if (this.getUsername() == null || this.getUsername().length() == 0)
+			this.addFieldError("username", this.getText("compulsoryField"));
+		if (this.getFirstName() == null || this.getFirstName().length() == 0)
+			this.addFieldError("firstName", this.getText("compulsoryField"));
+		if (this.getLastName() == null || this.getLastName().length() == 0)
+			this.addFieldError("lastName", this.getText("compulsoryField"));
+
+		if (!this.getPassword().equals(this.getRepassword()))
+			this.addFieldError("password", this.getText("identicalPasswords"));
+
+		Pattern rfc2822 = Pattern.compile("^[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?$");
+		if (!rfc2822.matcher(this.getEmail().trim().toLowerCase()).matches()) {
+			this.addFieldError("email", this.getText("notValidEmail"));
+		}
+
+		try {
+			if (this.getUserAPI().userExists(this.getEmail()))
+				this.addFieldError("email", this.getText("userAlreadyExists"));
+			if (this.getUserAPI().usernameExists(this.getUsername()))
+				this.addFieldError("username", this.getText("userAlreadyExists"));
+
+		} catch (Exception e) {
+			this.addFieldError("email", this.getText("userAlreadyExists"));
+		}
+	}
+
+	public String getEmail() {
+		return email;
+	}
+
+	public void setEmail(String email) {
+		this.email = email;
+	}
+
+	public String getPassword() {
+		return password;
+	}
+
+	public void setPassword(String password) {
+		this.password = password;
+	}
+
+	public String getRepassword() {
+		return repassword;
+	}
+
+	public void setRepassword(String repassword) {
+		this.repassword = repassword;
+	}
+
+	public String getUsername() {
+		return username;
+	}
+
+	public void setUsername(String username) {
+		this.username = username;
+	}
+
+	public String getFirstName() {
+		return firstName;
+	}
+
+	public void setFirstName(String firstName) {
+		this.firstName = firstName;
+	}
+
+	public String getLastName() {
+		return lastName;
+	}
+
+	public void setLastName(String lastName) {
+		this.lastName = lastName;
+	}
+
+	public String getInstitution() {
+		return institution;
+	}
+
+	public void setInstitution(String institution) {
+		this.institution = institution;
+	}
+	
+}
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/resources/eu/dnetlib/validator/admin/actions/springContext-validator-struts.xml
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/resources/eu/dnetlib/validator/admin/actions/springContext-validator-struts.xml	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/resources/eu/dnetlib/validator/admin/actions/springContext-validator-struts.xml	(revision 47450)
@@ -0,0 +1,74 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<beans xmlns="http://www.springframework.org/schema/beans"
+	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+	xmlns:context="http://www.springframework.org/schema/context"
+	xmlns:cxf="http://cxf.apache.org/core"
+	xmlns:jaxws="http://cxf.apache.org/jaxws"
+	xmlns:p="http://http://www.springframework.org/schema/p"
+	xmlns:template="http://dnetlib.eu/springbeans/template"
+	xmlns:t="http://dnetlib.eu/springbeans/t"
+	xsi:schemaLocation="
+		http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.0.xsd
+        http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.0.xsd
+        http://cxf.apache.org/core http://cxf.apache.org/schemas/core.xsd
+        http://cxf.apache.org/jaxws http://cxf.apache.org/schemas/jaxws.xsd
+        http://dnetlib.eu/springbeans/template http://dnetlib.eu/springbeans/template.xsd"
+	default-autowire="no">
+		
+	<!-- BASE -->	
+	<bean id="baseAction" class="eu.dnetlib.validator.admin.actions.BaseValidatorAction" abstract="true" scope="prototype">
+		<property name="emailer" ref="emailer" />
+		<property name="userAPI" ref="userAPI" />
+		<property name="validatorAdminAPI" ref="validatorAdminAPI" />
+		<property name="userMode" value="${services.validator.mode.user}" />
+		<property name="valBaseUrl" value="${services.validator.baseUrl}" />
+		<property name="deployEnvironment" value="${services.validator.deploy.environment}" />
+		<property name="valAdminEmail" value="${services.validator.adminEmail}" />
+	</bean>		
+	<bean id="springManagedDummy" class="eu.dnetlib.validator.admin.actions.DummyAction" parent="baseAction" scope="prototype"/>
+	<bean id="go2registration" class="eu.dnetlib.validator.admin.actions.DummyAction" parent="baseAction" scope="prototype"/>
+	
+	<!-- LOGIN -->
+	<bean id="springManagedLoginPage" class="eu.dnetlib.validator.admin.actions.login.LoginPage" parent="baseAction" scope="prototype"/>
+	<bean id="springManagedLogin" class="eu.dnetlib.validator.admin.actions.login.Login" parent="baseAction"  scope="prototype"/>
+	<bean id="springManagedSendPassword" class="eu.dnetlib.validator.admin.actions.login.SendPassword" parent="baseAction"  scope="prototype"/>
+	<bean id="springManagedResetPassword" class="eu.dnetlib.validator.admin.actions.login.ResetPassword" parent="baseAction"  scope="prototype"/>
+	<bean id="springManagedLogout" class="eu.dnetlib.validator.admin.actions.login.Logout" parent="baseAction"  scope="prototype"/>
+	<bean id="springManagedPortalLogin" class="eu.dnetlib.validator.admin.actions.login.PortalLogin" parent="baseAction" scope="prototype">
+		<property name="key" value="${services.validator.portallogin.key}" />
+	</bean>
+	<bean id="springManagedForgotPassword" class="eu.dnetlib.validator.admin.actions.login.ForgotPasswordPage" parent="baseAction" scope="prototype"/>
+	<bean id="springManagedAdminInterceptor" class="eu.dnetlib.validator.admin.actions.login.AdminInterceptor">
+		<property name="userAPI" ref="userAPI"/>
+	</bean>
+
+	<!-- BROWSE JOBS -->
+	
+	<bean id="springManagedDatabaseCurator" class="eu.dnetlib.validator.admin.actions.jobs.DatabaseCurator" parent="baseAction" scope="prototype"/>
+	<bean id="springManagedRegistrationsReport" class="eu.dnetlib.validator.admin.actions.jobs.RegistrationsReport" parent="baseAction" scope="prototype"/>
+
+	<!-- USERS -->
+	<bean id="springManagedRegister" class="eu.dnetlib.validator.admin.actions.users.Register" parent="baseAction" scope="prototype"/>
+	<bean id="springManagedActivateAccount" class="eu.dnetlib.validator.admin.actions.users.ActivateAccount" parent="baseAction" scope="prototype"/>
+	<bean id="springManagedEditUser" class="eu.dnetlib.validator.admin.actions.users.EditUser" parent="baseAction" scope="prototype"/>
+	
+	<!-- ADMIN RULES -->
+	<bean id="springManagedPopulateRuleCategories" class="eu.dnetlib.validator.admin.actions.rules.PopulateRuleCategories" parent="baseAction" scope="prototype"/>
+	<bean id="springManagedDeleteRule" class="eu.dnetlib.validator.admin.actions.rules.DeleteRule" parent="baseAction" scope="prototype"/>
+	<bean id="springManagedPrepareAddRule" class="eu.dnetlib.validator.admin.actions.rules.PrepareAddRule" parent="baseAction" scope="prototype"/>
+	<bean id="springManagedEditRule" class="eu.dnetlib.validator.admin.actions.rules.EditRule" parent="baseAction" scope="prototype"/>
+	<bean id="springManagedAddRule" class="eu.dnetlib.validator.admin.actions.rules.AddRule" parent="baseAction" scope="prototype"/>
+	<bean id="springManagedPopulateRuleList" class="eu.dnetlib.validator.admin.actions.rules.PopulateRuleList" parent="baseAction" scope="prototype"/>
+	<bean id="springManagedPrepareEditRule" class="eu.dnetlib.validator.admin.actions.rules.PrepareEditRule" parent="baseAction" scope="prototype"/>
+	
+	<!-- ADMIN RULESETS -->
+	<bean id="springManagedDeleteRuleSet" class="eu.dnetlib.validator.admin.actions.rulesets.DeleteRuleSet" parent="baseAction" scope="prototype"/>
+	<bean id="springManagedCreateRuleSet" class="eu.dnetlib.validator.admin.actions.rulesets.CreateRuleSet" parent="baseAction" scope="prototype"/>
+	<bean id="springManagedGetRuleSetsForDeletion" class="eu.dnetlib.validator.admin.actions.rulesets.GetRuleSets" parent="baseAction" scope="prototype"/>
+	<bean id="springManagedGetRulesForSet" class="eu.dnetlib.validator.admin.actions.rulesets.GetRules" parent="baseAction" scope="prototype"/>
+	<bean id="springManagedGetRuleSets" class="eu.dnetlib.validator.admin.actions.rulesets.GetRuleSets" parent="baseAction" scope="prototype"/>
+
+	<!-- FEEDBACK/HELP -->
+	<bean id="springManagedHelp" class="eu.dnetlib.validator.admin.actions.help.HelpPage" parent="baseAction" scope="prototype" />
+	
+</beans>
Index: modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/java/eu/dnetlib/validator/admin/actions/BaseValidatorAction.java
===================================================================
--- modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/java/eu/dnetlib/validator/admin/actions/BaseValidatorAction.java	(nonexistent)
+++ modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/java/eu/dnetlib/validator/admin/actions/BaseValidatorAction.java	(revision 47450)
@@ -0,0 +1,126 @@
+package eu.dnetlib.validator.admin.actions;
+
+import java.io.PrintWriter;
+import java.io.StringWriter;
+import java.io.Writer;
+import java.util.ArrayList;
+import java.util.List;
+
+import org.apache.log4j.Logger;
+
+import com.opensymphony.xwork2.ActionSupport;
+
+import eu.dnetlib.validator.admin.api.UserApi;
+import eu.dnetlib.validator.admin.api.ValidatorAdminAPI;
+import eu.dnetlib.validator.admin.config.Constants;
+import eu.dnetlib.validator.commons.email.Emailer;
+
+public class BaseValidatorAction extends ActionSupport {
+
+	/**
+	 * 
+	 */
+	private static final long serialVersionUID = -622158192564945303L;
+	private UserApi userAPI = null;
+	private ValidatorAdminAPI validatorAdminAPI = null;
+	private Emailer emailer = null;
+
+	public static String loggedInField = "LOGGED_IN_FIELD";
+	
+	private String valBaseUrl = null;
+	private String valAdminEmail = null;
+	private String userMode = null;
+	private String repoMode = null;
+	private String deployEnvironment = null;
+
+	public void reportException(Exception exception) {
+		Writer writer = new StringWriter();
+		PrintWriter printWriter = new PrintWriter(writer);
+		exception.printStackTrace(printWriter);
+		
+		List<String> recipients = new ArrayList<String>();
+		
+		try {
+			recipients.add(this.getValAdminEmail());
+			String message = "An exception has occurred:\n"+writer.toString();
+			String subject = "Automatic Bug Report";
+			this.getEmailer().sendMail(recipients, subject, message, false, null);
+		} catch (Exception e) {
+			Logger logger = Logger.getLogger(BaseValidatorAction.class);
+			logger.error("error sending error report", e);
+		}
+	}
+	
+	public boolean isModeLdap() {
+		return userMode.trim().toLowerCase().equals(Constants.MODE_LDAP);
+	}
+
+	public boolean isModeOpenAIRE() {
+		return repoMode.trim().toLowerCase().equals(Constants.MODE_DNET);
+	}
+
+	public UserApi getUserAPI() {
+		return userAPI;
+	}
+
+	public void setUserAPI(UserApi userAPI) {
+		this.userAPI = userAPI;
+	}
+
+	public ValidatorAdminAPI getValidatorAdminAPI() {
+		return validatorAdminAPI;
+	}
+
+	public void setValidatorAdminAPI(ValidatorAdminAPI validatorAdminAPI) {
+		this.validatorAdminAPI = validatorAdminAPI;
+	}
+
+	public Emailer getEmailer() {
+		return emailer;
+	}
+
+	public void setEmailer(Emailer emailer) {
+		this.emailer = emailer;
+	}
+
+	public String getUserMode() {
+		return userMode;
+	}
+
+	public void setUserMode(String userMode) {
+		this.userMode = userMode;
+	}
+
+	public String getRepoMode() {
+		return repoMode;
+	}
+
+	public void setRepoMode(String repoMode) {
+		this.repoMode = repoMode;
+	}
+
+	public void setValBaseUrl(String valBaseUrl) {
+		this.valBaseUrl = valBaseUrl;
+	}
+
+	public String getValBaseUrl() {
+		return valBaseUrl;
+	}
+
+	public void setValAdminEmail(String valAdminEmail) {
+		this.valAdminEmail = valAdminEmail;
+	}
+
+	public String getValAdminEmail() {
+		return valAdminEmail;
+	}
+
+	public String getDeployEnvironment() {
+		return deployEnvironment;
+	}
+
+	public void setDeployEnvironment(String deployEnvironment) {
+		this.deployEnvironment = deployEnvironment;
+	}
+
+}
\ No newline at end of file
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/resources/struts.xml
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/resources/struts.xml	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/resources/struts.xml	(revision 47450)
@@ -0,0 +1,219 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE struts PUBLIC
+	"-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
+	"http://struts.apache.org/dtds/struts-2.3.dtd">
+
+<struts>
+	<constant name="struts.action.excludePattern" value=".*services.*"/>
+	<package name="noAuthorization" namespace="/" extends="struts-default">
+		<default-action-ref name="welcome" />
+		
+		<global-results>
+			<result name="input">/jsps/info.jsp</result>
+			<result name="exception">/jsps/info.jsp</result>
+		</global-results>
+		
+		<action name="bugreporter" class="springManagedBugReporter">
+			<result>/jsps/info.jsp</result>
+		</action>
+		
+		<action name="welcome" class="springManagedDummy">
+			<result>/jsps/homepage.jsp</result>
+		</action>
+		
+		<action name="go2login" class="springManagedLoginPage">
+			<result>/jsps/login.jsp</result>
+			<result name="input" type="redirect">welcome</result>
+		</action>
+		
+		<action name="go2registration" class="springManagedDummy">
+			<result>/jsps/login.jsp</result>
+		</action>
+
+		<action name="Register" class="springManagedRegister">
+			<result>/jsps/info.jsp</result>
+			<result name="input">/jsps/login.jsp</result>
+		</action>
+
+		<action name="activateAccount" class="springManagedActivateAccount">
+			<result>/jsps/info.jsp</result>
+			<result name="input">/jsps/info.jsp</result>
+		</action>
+
+		<action name="Login" class="springManagedLogin">
+			<result type="redirect">${url}?${params}</result>
+			<result name="input">/jsps/login.jsp</result>
+			<result name="login" type="redirect">go2login</result>
+			<result name="welcome" type="redirect">welcome</result>
+		</action>
+		
+		<action name="portalLogin" class="springManagedPortalLogin">
+			<result>/jsps/homepage.jsp</result>
+			<result name="input">/jsps/login.jsp</result>
+		</action>
+
+		<action name="sendPassword" class="springManagedSendPassword">
+			<result>/jsps/info.jsp</result>
+			<result name="input">/jsps/forgotPassword.jsp</result>
+		</action>
+
+		<action name="resetPassword" class="springManagedResetPassword">
+			<result>/jsps/info.jsp</result>
+			<result name="input">/jsps/resetPassword.jsp</result>
+		</action>
+
+		<action name="logout" class="springManagedLogout">
+			<result>/jsps/homepage.jsp</result>
+		</action>
+		
+		<action name="score" class="springManagedScore">
+			<result>/jsps/score.jsp</result>
+		</action>
+		
+		<action name="help" class="springManagedHelp">
+			<result>/jsps/help.jsp</result>
+		</action>
+				
+		<action name="forgotPassword" class="springManagedForgotPassword">
+			<result>/jsps/forgotPassword.jsp</result>
+		</action>
+
+	</package>
+
+	<package name="needsAuthorization" namespace="/" extends="struts-default">
+
+		<interceptors>
+			<interceptor name="authenticationInterceptor" class="eu.dnetlib.validator.admin.actions.login.AuthenticationInterceptor" />
+			<interceptor-stack name="secureStack">
+				<interceptor-ref name="authenticationInterceptor" />
+				<interceptor-ref name="defaultStack" />
+			</interceptor-stack>
+		</interceptors>
+
+		<default-interceptor-ref name="secureStack" />
+
+		<global-results>
+			<result name="login">/jsps/login.jsp</result>
+			<result name="input-problem">/jsps/corneeded.jsp</result>
+			<result name="input">/jsps/info.jsp</result>
+			<result name="exception">/jsps/info.jsp</result>
+		</global-results>
+
+		<action name="curateDB" class="springManagedDatabaseCurator">
+			<result>/jsps/info.jsp</result>
+		</action>
+		
+		<action name="deleteJobs" class="springManagedDummy">
+			<result>/jsps/deleteJobs.jsp</result>
+		</action>
+		
+		<action name="sendRegistrationsReport" class="springManagedRegistrationsReport">
+			<result>/jsps/info.jsp</result>
+		</action>
+		
+		<action name="registrationsReport" class="springManagedDummy">
+			<result>/jsps/registrationsReport.jsp</result>
+		</action>
+		
+		<action name="getRulesForSet" class="springManagedGetRulesForSet">
+			<result>/jsps/createRuleSet.jsp</result>
+			<result name="deleted">/jsps/info.jsp</result>
+		</action>
+
+		<action name="getRuleSets" class="springManagedGetRuleSets">
+			<result>/jsps/chooseRuleSet.jsp</result>
+		</action>
+
+		<action name="populateRuleListForEdit" class="springManagedPopulateRuleList">
+			<result>/jsps/chooseRuleForEdit.jsp</result>
+		</action>
+
+		<action name="populateRuleListForClone" class="springManagedPopulateRuleList">
+			<result>/jsps/chooseRuleForClone.jsp</result>
+		</action>
+		
+		<action name="prepareEditRule" class="springManagedPrepareEditRule">
+			<result>/jsps/editRule.jsp</result>
+		</action>
+
+		<action name="editUser" class="springManagedEditUser" method="edit">
+			<result>/jsps/info.jsp</result>
+		</action>
+		
+		<action name="userDetails" class="springManagedEditUser">
+			<result>/jsps/editUser.jsp</result>
+		</action>
+		
+		<action name="populateList" class="springManagedPopulateList" method="populate">
+			<result>/jsps/rules.jsp</result>
+		</action>
+		
+		<action name="sendFeedback" class="springManagedSendFeedback">
+			<result>/jsps/info.jsp</result>
+		</action>
+		
+		<action name="feedback" class="springManagedFeedback">
+			<result>/jsps/feedback.jsp</result>
+		</action>
+		
+	</package>
+
+	<package name="needsAdminAuthorization" namespace="/"
+		extends="struts-default">
+
+		<interceptors>
+			<interceptor name="adminInterceptor" class="springManagedAdminInterceptor" />
+			<interceptor-stack name="secureStackA">
+				<interceptor-ref name="adminInterceptor" />
+				<interceptor-ref name="defaultStack" />
+			</interceptor-stack>
+		</interceptors>
+
+		<default-interceptor-ref name="secureStackA" />
+
+		<global-results>
+			<result name="login">/jsps/login.jsp</result>
+			<result name="input-problem">/jsps/corneeded.jsp</result>
+			<result name="input">/jsps/info.jsp</result>
+			<result name="exception">/jsps/info.jsp</result>
+		</global-results>
+
+		<action name="populateRuleCategories" class="springManagedPopulateRuleCategories">
+			<result>/jsps/chooseRuleCategory.jsp</result>
+		</action>
+
+		<action name="prepareAddRule" class="springManagedPrepareAddRule">
+			<result>/jsps/addRule.jsp</result>
+		</action>
+
+		<action name="addRule" class="springManagedAddRule">
+			<result>/jsps/info.jsp</result>
+		</action>
+
+		<action name="populateRuleList" class="springManagedPopulateRuleList">
+			<result>/jsps/deleteRule.jsp</result>
+		</action>
+
+		<action name="deleteRule" class="springManagedDeleteRule">
+			<result>/jsps/info.jsp</result>
+		</action>
+
+		<action name="editRule" class="springManagedEditRule">
+			<result>/jsps/info.jsp</result>
+		</action>
+
+		<action name="createRuleSet" class="springManagedCreateRuleSet">
+			<result>/jsps/info.jsp</result>
+			<result name="input">/jsps/corneeded.jsp</result>
+		</action>
+
+		<action name="getRuleSetsForDeletion" class="springManagedGetRuleSetsForDeletion">
+			<result>/jsps/chooseRuleSetForDeletion.jsp</result>
+		</action>
+
+		<action name="deleteRuleSet" class="springManagedDeleteRuleSet">
+			<result>/jsps/info.jsp</result>
+		</action>
+	
+	</package>
+</struts>
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/resources/validation.properties
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/resources/validation.properties	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/resources/validation.properties	(revision 47450)
@@ -0,0 +1,29 @@
+# The ESAPI validator does many security checks on input, such as canonicalization
+# and whitelist validation. Note that all of these validation rules are applied *after*
+# canonicalization. Double-encoded characters (even with different encodings involved,
+# are never allowed.
+#
+# To use:
+#
+# First set up a pattern below. You can choose any name you want, prefixed by the word
+# "Validation." For example:
+#   Validation.Email=^[A-Za-z0-9._%-]+@[A-Za-z0-9.-]+\\.[a-zA-Z]{2,4}$
+# 
+# Then you can validate in your code against the pattern like this:
+#     ESAPI.validator().isValidInput("User Email", input, "Email", maxLength, allowNull);
+# Where maxLength and allowNull are set for you needs, respectively.
+#
+# But note, when you use boolean variants of validation functions, you lose critical 
+# canonicalization. It is preferable to use the "get" methods (which throw exceptions) and 
+# and use the returned user input which is in canonical form. Consider the following:
+#  
+# try {
+#    someObject.setEmail(ESAPI.validator().getValidInput("User Email", input, "Email", maxLength, allowNull));
+#
+Validator.SafeString=^[.\\p{Alnum}\\p{Space}]{0,1024}$
+Validator.Email=^[A-Za-z0-9._%-]+@[A-Za-z0-9.-]+\\.[a-zA-Z]{2,4}$
+Validator.IPAddress=^(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$
+Validator.URL=^(ht|f)tp(s?)\\:\\/\\/[0-9a-zA-Z]([-.\\w]*[0-9a-zA-Z])*(:(0-9)*)*(\\/?)([a-zA-Z0-9\\-\\.\\?\\,\\:\\'\\/\\\\\\+=&amp;%\\$#_]*)?$
+Validator.CreditCard=^(\\d{4}[- ]?){3}\\d{4}$
+Validator.SSN=^(?!000)([0-6]\\d{2}|7([0-6]\\d|7[012]))([ -]?)(?!00)\\d\\d\\3(?!0000)\\d{4}$
+
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/java/eu/dnetlib/validator/admin/actions/rules/PrepareEditRule.java
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/java/eu/dnetlib/validator/admin/actions/rules/PrepareEditRule.java	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/java/eu/dnetlib/validator/admin/actions/rules/PrepareEditRule.java	(revision 47450)
@@ -0,0 +1,109 @@
+package eu.dnetlib.validator.admin.actions.rules;
+
+import java.util.List;
+import java.util.Set;
+
+import org.apache.log4j.Logger;
+
+import com.opensymphony.xwork2.Action;
+
+import eu.dnetlib.domain.functionality.validator.Rule;
+import eu.dnetlib.validator.admin.actions.BaseValidatorAction;
+import eu.dnetlib.validator.admin.api.ValidatorAdminException;
+import eu.dnetlib.validator.admin.constants.TypesAndTableNames;
+
+public class PrepareEditRule extends BaseValidatorAction {
+
+	private static final long serialVersionUID = 8825889540939707747L;
+	private int ruleId;
+
+	private Rule rule;
+	private List<Rule> rules;
+	private List<FieldPair> ruleValues;
+	private Set<String> entityTypes;
+	
+	private String funct = null;
+	private static final Logger logger = Logger.getLogger(PrepareEditRule.class);
+
+
+	public String execute() {
+		this.clearErrorsAndMessages();
+		try {
+//			logger.debug("preparing edit of rule");
+			entityTypes = TypesAndTableNames.getCrisEntities().keySet();
+			logger.debug("preparing edit of rule " + ruleId);
+			rule = this.getValidatorAdminAPI().getRule(ruleId);
+			this.ruleValues = this.getValidatorAdminAPI().getRuleValuePairs(rule);
+			if (rule.getType().equals("ChainRule")) {
+				try {
+					rules = this.getValidatorAdminAPI().getAllRules();
+				} catch (ValidatorAdminException e) {
+					return Action.ERROR;
+				}
+			}			
+			logger.debug("ruleType: " + rule.getType());
+			rule.setJob_type(TypesAndTableNames.jobTypes.get(rule.getJob_type()));
+			return Action.SUCCESS;
+		} catch (Exception e) {
+			logger.error("preparing edit of rule " + ruleId, e);
+			this.addActionError(this.getText("generic.error"));
+			reportException(e);
+			return "exception";
+		}
+	}
+
+	
+	public Rule getRule() {
+		return rule;
+	}
+
+	public void setRule(Rule rule) {
+		this.rule = rule;
+	}
+
+	public List<Rule> getRules() {
+		return rules;
+	}
+
+	public void setRules(List<Rule> rules) {
+		this.rules = rules;
+	}
+
+	public List<FieldPair> getRuleValues() {
+		return ruleValues;
+	}
+
+	public void setRuleValues(List<FieldPair> ruleValues) {
+		this.ruleValues = ruleValues;
+	}
+
+	public int getRuleId() {
+		return ruleId;
+	}
+
+	public void setRuleId(int ruleId) {
+		this.ruleId = ruleId;
+	}
+
+
+	public String getFunct() {
+		return funct;
+	}
+
+
+	public void setFunct(String funct) {
+		this.funct = funct;
+	}
+
+
+	public Set<String> getEntityTypes() {
+		return entityTypes;
+	}
+
+
+	public void setEntityTypes(Set<String> entityTypes) {
+		this.entityTypes = entityTypes;
+	}
+	
+	
+}
\ No newline at end of file
Index: modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/java/eu/dnetlib/validator/admin/actions/login/AdminInterceptor.java
===================================================================
--- modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/java/eu/dnetlib/validator/admin/actions/login/AdminInterceptor.java	(nonexistent)
+++ modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/java/eu/dnetlib/validator/admin/actions/login/AdminInterceptor.java	(revision 47450)
@@ -0,0 +1,58 @@
+package eu.dnetlib.validator.admin.actions.login;
+
+import java.util.Map;
+
+import com.opensymphony.xwork2.Action;
+import com.opensymphony.xwork2.ActionInvocation;
+import com.opensymphony.xwork2.interceptor.Interceptor;
+
+import eu.dnetlib.validator.admin.api.UserApi;
+import eu.dnetlib.validator.admin.api.ValidatorAdminAPI;
+import eu.dnetlib.validator.admin.config.Constants;
+
+public class AdminInterceptor implements Interceptor {
+
+	private static final long serialVersionUID = -172948943490485824L;
+	private UserApi userAPI = null;
+	private ValidatorAdminAPI validatorAdminAPI = null;
+
+//	private Logger logger = Logger.getLogger(AdminInterceptor.class);
+	
+	@Override
+	public void destroy() {
+
+	}
+
+	@Override
+	public void init() {
+
+	}
+
+	@Override
+	public String intercept(ActionInvocation actionInvocation) throws Exception {
+		Map<String, Object> session = actionInvocation.getInvocationContext().getSession();
+		String auth = (String) session.get(Constants.loggedInField);
+
+		if (this.getUserAPI().isAdmin(auth) || this.getValidatorAdminAPI().userIsMasterAdmin(auth) || this.getValidatorAdminAPI().userIsSecondaryAdmin(auth))
+			return actionInvocation.invoke();
+		else
+			return Action.LOGIN;
+	}
+
+	public UserApi getUserAPI() {
+		return userAPI;
+	}
+
+	public void setUserAPI(UserApi userAPI) {
+		this.userAPI = userAPI;
+	}
+
+	public ValidatorAdminAPI getValidatorAdminAPI() {
+		return validatorAdminAPI;
+	}
+
+	public void setValidatorAdminAPI(ValidatorAdminAPI validatorAdminAPI) {
+		this.validatorAdminAPI = validatorAdminAPI;
+	}
+	
+}
Index: modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/java/eu/dnetlib/validator/admin/actions/rulesets/GetRules.java
===================================================================
--- modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/java/eu/dnetlib/validator/admin/actions/rulesets/GetRules.java	(nonexistent)
+++ modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/java/eu/dnetlib/validator/admin/actions/rulesets/GetRules.java	(revision 47450)
@@ -0,0 +1,146 @@
+package eu.dnetlib.validator.admin.actions.rulesets;
+
+import java.util.ArrayList;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Set;
+
+import org.apache.log4j.Logger;
+
+import com.opensymphony.xwork2.Action;
+
+import eu.dnetlib.domain.functionality.validator.Rule;
+import eu.dnetlib.domain.functionality.validator.RuleSet;
+import eu.dnetlib.validator.admin.actions.BaseValidatorAction;
+import eu.dnetlib.validator.admin.constants.TypesAndTableNames;
+
+public class GetRules extends BaseValidatorAction {
+
+	private static final long serialVersionUID = 3336444896590055688L;
+	private int setId = -1;
+	private List<Rule> rulesContent;
+	private List<Rule> rulesUsage;
+	private Set<Integer> ruleIdsContent;
+	private Set<Integer> ruleIdsUsage;
+	private List<String> deployEnvironments;
+	private String funct = null;
+	private RuleSet ruleSet;
+	
+	private static final Logger logger = Logger.getLogger(GetRules.class);
+
+	public String execute() {
+		this.clearErrorsAndMessages();
+		try {
+			logger.debug("getting rules in rule set "+setId);
+			ruleIdsContent = new HashSet<Integer>();
+			ruleIdsUsage = new HashSet<Integer>();
+			rulesContent = new ArrayList<Rule>();
+			rulesUsage = new ArrayList<Rule>();
+			this.splitRules(this.getValidatorAdminAPI().getAllRules(),rulesContent, rulesUsage);
+			this.deployEnvironments = TypesAndTableNames.deployEnvironments;
+			if (setId == -1) {
+				ruleSet = new RuleSet();
+				ruleSet.setId(-1);
+				funct = "create";
+			} else {
+				funct = "edit";
+				ruleSet = this.getValidatorAdminAPI().getRuleSet(setId);
+				ruleIdsContent=ruleSet.getContentRulesIds();
+				ruleIdsUsage=ruleSet.getUsageRulesIds();
+//				visibility = Utilities.convertListToString(set.getVisibility());
+			}
+			return Action.SUCCESS;
+		}
+		catch(Exception e) {
+			logger.error("Error getting rules", e);
+			this.addActionError(this.getText("generic.error"));
+			reportException(e);
+			return "exception";
+		}
+	}
+
+	private void splitRules(List<Rule> totalRules, List<Rule> contentRules, List<Rule> usageRules) {
+		logger.debug("splitting rules..");
+		for (Rule rule : totalRules) {
+			if (rule.getJob_type().equals("content")) {
+				contentRules.add(rule);
+			} else if (rule.getJob_type().equals("usage")) {
+				usageRules.add(rule);
+			}
+		}
+	}
+
+	public String getFunct() {
+		return funct;
+	}
+
+	public void setFunct(String funct) {
+		this.funct = funct;
+	}
+		
+
+	public RuleSet getRuleSet() {
+		return ruleSet;
+	}
+
+	public void setRuleSet(RuleSet ruleSet) {
+		this.ruleSet = ruleSet;
+	}
+
+	public int getSetId() {
+		return setId;
+	}
+
+	public void setSetId(int setId) {
+		this.setId = setId;
+	}
+
+
+	public List<Rule> getRulesContent() {
+		return rulesContent;
+	}
+
+
+	public void setRulesContent(List<Rule> rulesContent) {
+		this.rulesContent = rulesContent;
+	}
+
+
+	public List<Rule> getRulesUsage() {
+		return rulesUsage;
+	}
+
+
+	public void setRulesUsage(List<Rule> rulesUsage) {
+		this.rulesUsage = rulesUsage;
+	}
+
+	public Set<Integer> getRuleIdsContent() {
+		return ruleIdsContent;
+	}
+
+	public void setRuleIdsContent(Set<Integer> ruleIdsContent) {
+		this.ruleIdsContent = ruleIdsContent;
+	}
+
+	public Set<Integer> getRuleIdsUsage() {
+		return ruleIdsUsage;
+	}
+
+	public void setRuleIdsUsage(Set<Integer> ruleIdsUsage) {
+		this.ruleIdsUsage = ruleIdsUsage;
+	}
+
+	public List<String> getDeployEnvironments() {
+		return deployEnvironments;
+	}
+
+	public void setDeployEnvironments(List<String> deployEnvironments) {
+		this.deployEnvironments = deployEnvironments;
+	}
+
+
+}
+
+	
+
Index: modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/java/eu/dnetlib/validator/admin/actions/rules/PrepareEditRule.java
===================================================================
--- modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/java/eu/dnetlib/validator/admin/actions/rules/PrepareEditRule.java	(nonexistent)
+++ modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/java/eu/dnetlib/validator/admin/actions/rules/PrepareEditRule.java	(revision 47450)
@@ -0,0 +1,109 @@
+package eu.dnetlib.validator.admin.actions.rules;
+
+import java.util.List;
+import java.util.Set;
+
+import org.apache.log4j.Logger;
+
+import com.opensymphony.xwork2.Action;
+
+import eu.dnetlib.domain.functionality.validator.Rule;
+import eu.dnetlib.validator.admin.actions.BaseValidatorAction;
+import eu.dnetlib.validator.admin.api.ValidatorAdminException;
+import eu.dnetlib.validator.admin.constants.TypesAndTableNames;
+
+public class PrepareEditRule extends BaseValidatorAction {
+
+	private static final long serialVersionUID = 8825889540939707747L;
+	private int ruleId;
+
+	private Rule rule;
+	private List<Rule> rules;
+	private List<FieldPair> ruleValues;
+	private Set<String> entityTypes;
+	
+	private String funct = null;
+	private static final Logger logger = Logger.getLogger(PrepareEditRule.class);
+
+
+	public String execute() {
+		this.clearErrorsAndMessages();
+		try {
+//			logger.debug("preparing edit of rule");
+			entityTypes = TypesAndTableNames.getCrisEntities().keySet();
+			logger.debug("preparing edit of rule " + ruleId);
+			rule = this.getValidatorAdminAPI().getRule(ruleId);
+			this.ruleValues = this.getValidatorAdminAPI().getRuleValuePairs(rule);
+			if (rule.getType().equals("ChainRule")) {
+				try {
+					rules = this.getValidatorAdminAPI().getAllRules();
+				} catch (ValidatorAdminException e) {
+					return Action.ERROR;
+				}
+			}			
+			logger.debug("ruleType: " + rule.getType());
+			rule.setJob_type(TypesAndTableNames.jobTypes.get(rule.getJob_type()));
+			return Action.SUCCESS;
+		} catch (Exception e) {
+			logger.error("preparing edit of rule " + ruleId, e);
+			this.addActionError(this.getText("generic.error"));
+			reportException(e);
+			return "exception";
+		}
+	}
+
+	
+	public Rule getRule() {
+		return rule;
+	}
+
+	public void setRule(Rule rule) {
+		this.rule = rule;
+	}
+
+	public List<Rule> getRules() {
+		return rules;
+	}
+
+	public void setRules(List<Rule> rules) {
+		this.rules = rules;
+	}
+
+	public List<FieldPair> getRuleValues() {
+		return ruleValues;
+	}
+
+	public void setRuleValues(List<FieldPair> ruleValues) {
+		this.ruleValues = ruleValues;
+	}
+
+	public int getRuleId() {
+		return ruleId;
+	}
+
+	public void setRuleId(int ruleId) {
+		this.ruleId = ruleId;
+	}
+
+
+	public String getFunct() {
+		return funct;
+	}
+
+
+	public void setFunct(String funct) {
+		this.funct = funct;
+	}
+
+
+	public Set<String> getEntityTypes() {
+		return entityTypes;
+	}
+
+
+	public void setEntityTypes(Set<String> entityTypes) {
+		this.entityTypes = entityTypes;
+	}
+	
+	
+}
\ No newline at end of file
Index: modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/java/eu/dnetlib/validator/admin/actions/login/PortalLogin.java
===================================================================
--- modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/java/eu/dnetlib/validator/admin/actions/login/PortalLogin.java	(nonexistent)
+++ modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/java/eu/dnetlib/validator/admin/actions/login/PortalLogin.java	(revision 47450)
@@ -0,0 +1,207 @@
+package eu.dnetlib.validator.admin.actions.login;
+
+import java.util.Calendar;
+import java.util.Map;
+
+import javax.crypto.Mac;
+import javax.crypto.spec.SecretKeySpec;
+import javax.servlet.http.HttpServletRequest;
+
+import org.apache.commons.codec.binary.Base64;
+import org.apache.commons.codec.binary.Hex;
+import org.apache.log4j.Logger;
+import org.apache.struts2.interceptor.ServletRequestAware;
+import org.apache.struts2.interceptor.SessionAware;
+
+import com.opensymphony.xwork2.Action;
+
+import eu.dnetlib.validator.admin.actions.BaseValidatorAction;
+import eu.dnetlib.validator.admin.config.Constants;
+
+public class PortalLogin extends BaseValidatorAction implements ServletRequestAware, SessionAware {
+
+	private static final long serialVersionUID = -6312800103845446815L;
+	private transient Logger logger = Logger.getLogger(PortalLogin.class);
+
+	private HttpServletRequest request;
+	private Map<String, Object> session;
+
+	private String user, ip, valid, signature;
+	private String key;
+	private String email;
+
+	public void validate() {
+		this.clearErrors();
+		logger.debug("validating log-in from portal link " + user + ", " + ip + ", " + valid + ", " + signature);
+		if (user == null || ip == null || valid == null) {
+			this.addActionError(this.getText("login.manual"));
+			return;
+		}
+		if (user.trim().equals("") || ip.trim().equals("") || valid.trim().equals("")) {
+			this.addActionError(this.getText("login.manual"));
+			return;
+		}
+		long millisUntil = 0;
+		try {
+			millisUntil = Long.parseLong(valid);
+		} catch (Exception e) {
+			logger.error("", e);
+			this.addActionError(this.getText("login.manual"));
+			return;
+		}
+
+		try {
+			if (!signatureIsValid((user + ip + valid).trim(), signature.trim())) {
+				logger.debug("signature was not valid");
+				this.addActionError(this.getText("login.manual"));
+				return;
+			}
+		} catch (Exception e) {
+			logger.error("", e);
+			this.addActionError(this.getText("login.manual"));
+			return;
+		}
+
+		Calendar cal = Calendar.getInstance();
+		if (cal.getTime().getTime() > millisUntil) {
+			logger.debug("link has expired current-time: "+cal.getTime().getTime()+" link-time: "+millisUntil);
+			this.addActionError(this.getText("login.manual"));
+			return;
+		}
+
+		if (!ip.trim().equals(request.getRemoteAddr().trim())) {
+			logger.debug("ips are different "+ip+" "+request.getRemoteAddr());
+			this.addActionError(this.getText("login.manual"));
+			return;
+		}
+
+		try {
+//			if (isModeLdap())
+				this.email = this.getUserAPI().getEmailFromUsername(user);
+
+			if (this.email == null) {
+				this.email = "";
+				this.addActionError(this.getText("login.userNotExists"));
+				return;
+			}
+
+			if (!this.getUserAPI().userExists(this.getEmail())) {
+				this.email = "";
+				this.addActionError(this.getText("login.userNotExists"));
+				return;
+			}
+
+			if (!this.getUserAPI().isUserActivated(this.getEmail())) {
+				this.email = "";
+				this.addActionError(this.getText("login.notActivated"));
+				return;
+			}
+		} catch (Exception e) {
+			logger.error("", e);
+			this.addActionError(e.toString());
+		}
+	}
+
+	public String execute() {
+		this.clearErrorsAndMessages();
+		try {
+			logger.debug("logging-in from portal link " + user + ", " + ip + ", " + valid + ", " + signature);
+			session.put(Constants.loggedInField, this.getEmail());
+			session.put("email", this.getEmail());
+			if (this.getUserAPI().isAdmin(email))
+				session.put("isAdmin", "true");
+
+			this.addActionMessage("Logged-in successfully");
+
+			return Action.SUCCESS;
+		} catch (Exception e) {
+			logger.error("error logging-in from portal link " + user + ", " + ip + ", " + valid + ", " + signature, e);
+			this.addActionError(this.getText("generic.error"));
+			reportException(e);
+			return "exception";
+		}
+	}
+
+	public boolean signatureIsValid(String message, String signature) throws Exception {
+		byte[] encode = Hex.decodeHex(new String(Base64.decodeBase64(signature.getBytes())).toCharArray());
+
+		SecretKeySpec key = new SecretKeySpec(this.key.getBytes(), "HmacSHA1");
+		Mac mac = Mac.getInstance(key.getAlgorithm());
+
+		mac.init(key);
+
+		byte[] myEncode = mac.doFinal(message.getBytes());
+		
+		logger.debug("given encode: "+new String(encode)+" my-encode: "+new String(myEncode));
+
+		if (encode.length != myEncode.length)
+			return false;
+
+		for (int i = 0; i < encode.length; i++)
+			if (encode[i] != myEncode[i])
+				return false;
+		return true;
+	}
+
+	public void setServletRequest(HttpServletRequest request) {
+		this.request = request;
+	}
+
+	public HttpServletRequest getServletRequest() {
+		return request;
+	}
+
+	@Override
+	public void setSession(Map<String, Object> session) {
+		this.session = session;
+	}
+
+	public String getUser() {
+		return user;
+	}
+
+	public void setUser(String user) {
+		this.user = user;
+	}
+
+	public String getIp() {
+		return ip;
+	}
+
+	public void setIp(String ip) {
+		this.ip = ip;
+	}
+
+	public String getValid() {
+		return valid;
+	}
+
+	public void setValid(String valid) {
+		this.valid = valid;
+	}
+
+	public String getSignature() {
+		return signature;
+	}
+
+	public void setSignature(String signature) {
+		this.signature = signature;
+	}
+
+	public String getKey() {
+		return key;
+	}
+
+	public void setKey(String key) {
+		this.key = key;
+	}
+
+	public String getEmail() {
+		return email;
+	}
+
+	public void setEmail(String email) {
+		this.email = email;
+	}
+
+}
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/manuals/OpenAIRE_registration.pdf
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/manuals/OpenAIRE_registration.pdf
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/manuals/OpenAIRE_registration.pdf	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/manuals/OpenAIRE_registration.pdf	(revision 47450)

Property changes on: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/jsps/manuals/OpenAIRE_registration.pdf
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/META-INF/MANIFEST.MF
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/META-INF/MANIFEST.MF	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/webapp/META-INF/MANIFEST.MF	(revision 47450)
@@ -0,0 +1,3 @@
+Manifest-Version: 1.0
+Class-Path: 
+
Index: modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/java/eu/dnetlib/validator/admin/actions/login/ResetPassword.java
===================================================================
--- modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/java/eu/dnetlib/validator/admin/actions/login/ResetPassword.java	(nonexistent)
+++ modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/java/eu/dnetlib/validator/admin/actions/login/ResetPassword.java	(revision 47450)
@@ -0,0 +1,70 @@
+package eu.dnetlib.validator.admin.actions.login;
+
+import org.apache.log4j.Logger;
+
+import com.opensymphony.xwork2.Action;
+
+import eu.dnetlib.validator.admin.actions.BaseValidatorAction;
+
+public class ResetPassword extends BaseValidatorAction {
+
+	private static final long serialVersionUID = -4565098546731325693L;
+	private Logger logger = Logger.getLogger(ResetPassword.class);
+	
+	private String password, repassword, securityCode;
+
+	public String execute() {
+		this.clearErrorsAndMessages();
+		try {
+			logger.debug("reseting password with security code " + securityCode);
+			this.getUserAPI().resetPassword(this.getSecurityCode(), this.getPassword());
+			this.addActionMessage(this.getText("resetPassword.success"));
+			return Action.SUCCESS;
+		} catch (Exception e) {
+			logger.error("error reseting password with security code " + securityCode, e);
+			this.addActionError(this.getText("generic.error"));
+			return "exception";
+		}
+	}
+
+	public void validate() {
+		this.clearErrors();
+		try {
+			if (this.getSecurityCode() == null || this.getSecurityCode().length() == 0) {
+				this.addFieldError("securityCode", this.getText("resetPassword.wrongSecurityCode"));
+				return;
+			}
+			if (!this.getPassword().equals(this.getRepassword())) {
+				this.addFieldError("password", this.getText("identicalPasswords"));
+				return;
+			}
+		} catch (Exception e) {
+			this.addActionError("");
+		}
+	}
+
+	public String getPassword() {
+		return password;
+	}
+
+	public void setPassword(String password) {
+		this.password = password;
+	}
+
+	public String getRepassword() {
+		return repassword;
+	}
+
+	public void setRepassword(String repassword) {
+		this.repassword = repassword;
+	}
+
+	public String getSecurityCode() {
+		return securityCode;
+	}
+
+	public void setSecurityCode(String securityCode) {
+		this.securityCode = securityCode;
+	}
+
+}
Index: modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/java/eu/dnetlib/validator/admin/actions/jobs/RegistrationsReport.java
===================================================================
--- modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/java/eu/dnetlib/validator/admin/actions/jobs/RegistrationsReport.java	(nonexistent)
+++ modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/java/eu/dnetlib/validator/admin/actions/jobs/RegistrationsReport.java	(revision 47450)
@@ -0,0 +1,87 @@
+package eu.dnetlib.validator.admin.actions.jobs;
+
+import org.apache.log4j.Logger;
+
+import com.opensymphony.xwork2.Action;
+
+import eu.dnetlib.validator.admin.actions.BaseValidatorAction;
+import eu.dnetlib.validator.admin.api.ValidatorAdminException;
+
+public class RegistrationsReport extends BaseValidatorAction {
+
+	private static final long serialVersionUID = -1868055729316139461L;
+	private static final Logger logger = Logger.getLogger(RegistrationsReport.class);
+	private String dateFrom = null;
+	private String dateTo = null;
+	private String mode, month;
+	private int year;
+
+	public String execute() {
+		this.clearErrorsAndMessages();
+		try {
+			
+			int monthInt = Integer.parseInt(month.split("-")[1]);
+			String monthStr = month.split("-")[0];
+			dateFrom = new String("YYYY-MM-01").replaceFirst("MM", Integer.toString(monthInt)).replaceFirst("YYYY", Integer.toString(year));
+			if (monthInt != 12)
+				dateTo = new String("YYYY-MM-01").replaceFirst("MM", Integer.toString(monthInt+1)).replaceFirst("YYYY", Integer.toString(year));
+			else
+				dateTo = new String("YYYY-MM-01").replaceFirst("MM", "1").replaceFirst("YYYY", Integer.toString(year+1));
+			this.getValidatorAdminAPI().sendRegistrationsReport(dateFrom, dateTo, monthStr, Integer.toString(year));
+		} catch (ValidatorAdminException e) {
+			logger.error("Error deleting old jobs", e);
+			this.addActionError(this.getText("generic.error"));
+			reportException(e);
+			return "input-problem";
+		}
+		this.addActionMessage(this.getText("manageJobs.sendReports.success"));
+		
+		return Action.SUCCESS;
+	}
+	
+
+	public void validate() {
+		this.clearErrors();
+	}
+
+	public String getDateFrom() {
+		return dateFrom;
+	}
+
+	public void setDateFrom(String dateFrom) {
+		this.dateFrom = dateFrom;
+	}
+
+	public String getDateTo() {
+		return dateTo;
+	}
+
+	public void setDateTo(String dateTo) {
+		this.dateTo = dateTo;
+	}
+
+	public String getMode() {
+		return mode;
+	}
+
+	public void setMode(String mode) {
+		this.mode = mode;
+	}
+
+	public String getMonth() {
+		return month;
+	}
+
+	public void setMonth(String month) {
+		this.month = month;
+	}
+
+	public int getYear() {
+		return year;
+	}
+
+	public void setYear(int year) {
+		this.year = year;
+	}
+	
+}
Index: modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/java/eu/dnetlib/validator/admin/actions/rulesets/GetRuleSets.java
===================================================================
--- modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/java/eu/dnetlib/validator/admin/actions/rulesets/GetRuleSets.java	(nonexistent)
+++ modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/java/eu/dnetlib/validator/admin/actions/rulesets/GetRuleSets.java	(revision 47450)
@@ -0,0 +1,39 @@
+package eu.dnetlib.validator.admin.actions.rulesets;
+
+import java.util.List;
+
+import org.apache.log4j.Logger;
+
+import com.opensymphony.xwork2.Action;
+
+import eu.dnetlib.domain.functionality.validator.RuleSet;
+import eu.dnetlib.validator.admin.actions.BaseValidatorAction;
+
+public class GetRuleSets extends BaseValidatorAction {
+
+	private static final long serialVersionUID = -5220242100308666597L;
+	private List<RuleSet> sets;
+	private static final Logger logger = Logger.getLogger(GetRuleSets.class);
+
+	public List<RuleSet> getSets() {
+		return sets;
+	}
+
+	public void setSets(List<RuleSet> sets) {
+		this.sets = sets;
+	}
+
+	public String execute() throws Exception {
+		this.clearErrorsAndMessages();
+		try {
+			logger.debug("getting all rule sets");
+			sets = this.getValidatorAdminAPI().getRuleSets();
+			return Action.SUCCESS;
+		} catch (Exception e) {
+			logger.error("Error getting rule sets", e);
+			this.addActionError(this.getText("generic.error"));
+			reportException(e);
+			return "exception";
+		}
+	}
+}
\ No newline at end of file
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/java/eu/dnetlib/validator/admin/api/impls/UserApiLDAP.java
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/java/eu/dnetlib/validator/admin/api/impls/UserApiLDAP.java	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/java/eu/dnetlib/validator/admin/api/impls/UserApiLDAP.java	(revision 47450)
@@ -0,0 +1,438 @@
+package eu.dnetlib.validator.admin.api.impls;
+
+import java.security.GeneralSecurityException;
+import java.security.MessageDigest;
+import java.util.Random;
+import java.util.UUID;
+
+import org.apache.log4j.Logger;
+
+import com.unboundid.ldap.sdk.Attribute;
+import com.unboundid.ldap.sdk.DN;
+import com.unboundid.ldap.sdk.Entry;
+import com.unboundid.ldap.sdk.Filter;
+import com.unboundid.ldap.sdk.LDAPConnection;
+import com.unboundid.ldap.sdk.Modification;
+import com.unboundid.ldap.sdk.ModificationType;
+import com.unboundid.ldap.sdk.SearchRequest;
+import com.unboundid.ldap.sdk.SearchResult;
+import com.unboundid.ldap.sdk.SearchResultEntry;
+import com.unboundid.ldap.sdk.SearchScope;
+import com.unboundid.util.Base64;
+
+import eu.dnetlib.domain.functionality.UserProfile;
+import eu.dnetlib.validator.admin.api.UserApi;
+
+public class UserApiLDAP implements UserApi {
+
+	transient Logger logger = Logger.getLogger(UserApiLDAP.class);
+
+	private int ldapPort = 0;
+	private String ldapAddress;
+	private String ldapUsername;
+	private String ldapPassword;
+	private String ldapUsersDN;
+
+	@Override
+	public boolean activateUser(String activationId) throws Exception {
+		LDAPConnection connection = null;
+		try {
+			logger.debug("activating user with activationId " + activationId);
+			connection = new LDAPConnection(ldapAddress, ldapPort, ldapUsername, ldapPassword);
+			Filter filter = Filter.createEqualityFilter("employeeNumber", activationId);
+			SearchRequest searchRequest = new SearchRequest(ldapUsersDN, SearchScope.SUB, filter, "uid");
+			SearchResult searchResult = connection.search(searchRequest);
+			String dn = null;
+
+			if ( searchResult.getSearchEntries().size() > 0	) {
+			
+				for (SearchResultEntry entry : searchResult.getSearchEntries()) {
+					dn = "uid=" + entry.getAttributeValue("uid") + "," + ldapUsersDN;
+				}
+
+				Modification mod1 = new Modification(ModificationType.REPLACE, "JoomlaBlockUser", "0");
+				Modification mod2 = new Modification(ModificationType.REPLACE, "employeeNumber");
+				connection.modify(dn, mod1, mod2);
+				return true;
+			} else {
+				return false;
+			}
+		} catch (Exception e) {
+			logger.error("", e);
+			throw e;
+		} finally {
+			if (connection != null)
+				connection.close();
+		}
+	}
+
+	@Override
+	public String addUser(String username, String email, String password, String firstName, String lastName, String institution) throws Exception {
+		logger.debug("adding user " + username + " " + email + " to ldap");
+		Attribute cn = new Attribute("cn", username);
+		Attribute displayName = new Attribute("displayName", firstName + " " + lastName);
+		Attribute mail = new Attribute("mail", email);
+		Attribute givenName = new Attribute("givenName", firstName);
+		Attribute joomlaBlockUser = new Attribute("JoomlaBlockUser", "1");
+		Attribute joomlaGroup = new Attribute("JoomlaGroup", "Registered");
+		Attribute objectClass = new Attribute("objectClass", "top", "inetOrgPerson", "JoomlaUser");
+		Attribute userPassword = new Attribute("userPassword", Joomla15PasswordHash.create(password));
+		Attribute sn = new Attribute("sn", lastName);
+		Attribute uid = new Attribute("uid", username);
+		
+			
+		// Attribute joomlaUserParams = new Attribute("JoomlaUserParams", "");
+		String activationId = UUID.randomUUID().toString();
+		Attribute x500UniqueIdentifier = new Attribute("employeeNumber", activationId);
+		LDAPConnection connection = null;
+		try {
+			DN dn = new DN("uid=" + username + "," + ldapUsersDN);
+			Entry entry;
+			if (institution != null) {
+				Attribute o = new Attribute("o", institution);
+				entry = new Entry(dn.toNormalizedString(), cn, displayName, mail, givenName, joomlaBlockUser, joomlaGroup, objectClass, userPassword, sn, uid, x500UniqueIdentifier, o);
+						
+			} else {
+				entry = new Entry(dn.toNormalizedString(), cn, displayName, mail, givenName, joomlaBlockUser, joomlaGroup, objectClass, userPassword, sn, uid/*
+																																								 * ,
+																																								 * joomlaUserParams
+																																								 */, x500UniqueIdentifier);
+			}
+			connection = new LDAPConnection(ldapAddress, ldapPort, ldapUsername, ldapPassword);
+			connection.add(entry);
+
+			return activationId;
+		} catch (Exception e) {
+			logger.error("", e);
+			throw e;
+		} finally {
+			if (connection != null)
+				connection.close();
+		}
+	}
+
+	@Override
+	public boolean correctCreds(String email, String password) throws Exception {
+		LDAPConnection connection = null;
+		try {
+			logger.debug("checking if user " + email + " entered a correct password when logging in");
+			connection = new LDAPConnection(ldapAddress, ldapPort, ldapUsername, ldapPassword);
+			Filter filter = Filter.createEqualityFilter("mail", email);
+			SearchRequest searchRequest = new SearchRequest(ldapUsersDN, SearchScope.SUB, filter, "userPassword");
+			SearchResult searchResult = connection.search(searchRequest);
+			for (SearchResultEntry entry : searchResult.getSearchEntries()) {
+				if (Joomla15PasswordHash.check(password, entry.getAttributeValue("userPassword")))
+					return true;
+			}
+			return false;
+		} catch (Exception e) {
+			logger.error("", e);
+			throw e;
+		} finally {
+			if (connection != null)
+				connection.close();
+		}
+	}
+
+	@Override
+	public void editUser(UserProfile user) throws Exception {
+		LDAPConnection connection = null;
+		try {
+			logger.debug("editing user " + user.getEmail());
+			connection = new LDAPConnection(ldapAddress, ldapPort, ldapUsername, ldapPassword);
+			Filter filter = Filter.createEqualityFilter("mail", user.getEmail());
+			SearchRequest searchRequest = new SearchRequest(ldapUsersDN, SearchScope.SUB, filter, "uid");
+			SearchResult searchResult = connection.search(searchRequest);
+			String dn = null;
+			for (SearchResultEntry entry : searchResult.getSearchEntries()) {
+				dn = "uid=" + entry.getAttributeValue("uid") + "," + ldapUsersDN;
+			}
+			Modification mod1 = new Modification(ModificationType.REPLACE, "displayName", user.getFirstname() + " " + user.getLastname());
+			Modification mod2 = new Modification(ModificationType.REPLACE, "givenName", user.getFirstname());
+			Modification mod3 = new Modification(ModificationType.REPLACE, "sn", user.getLastname());
+			Modification mod4 = new Modification(ModificationType.REPLACE, "o", user.getInstitution());
+			connection.modify(dn, mod1, mod2, mod3, mod4);
+		} catch (Exception e) {
+			logger.error("", e);
+			throw e;
+		} finally {
+			if (connection != null)
+				connection.close();
+		}
+	}
+
+	@Override
+	public UserProfile getUser(String userIdentifier) throws Exception {
+		LDAPConnection connection = null;
+		try {
+			logger.debug("getting user " + userIdentifier + " from ldap");
+			connection = new LDAPConnection(ldapAddress, ldapPort, ldapUsername, ldapPassword);
+			Filter filter = Filter.createEqualityFilter("mail", userIdentifier);
+			SearchRequest searchRequest = new SearchRequest(ldapUsersDN, SearchScope.SUB, filter, "mail", "givenName", "sn", "o", "uid");
+			SearchResult searchResult = connection.search(searchRequest);
+			UserProfile profile = new UserProfile();
+			for (SearchResultEntry entry : searchResult.getSearchEntries()) {
+				profile.setEmail(entry.getAttributeValue("mail"));
+				profile.setFirstname(entry.getAttributeValue("givenName"));
+				profile.setLastname(entry.getAttributeValue("sn"));
+				profile.setInstitution(entry.getAttributeValue("o"));
+				profile.setUsername(entry.getAttributeValue("uid"));
+			}
+			return profile;
+		} catch (Exception e) {
+			logger.error("", e);
+			throw e;
+		} finally {
+			if (connection != null)
+				connection.close();
+		}
+	}
+
+	@Override
+	public boolean isAdmin(String email) throws Exception {
+		LDAPConnection connection = null;
+		try {
+			logger.debug("checking if user " + email + " is an administrator");
+			connection = new LDAPConnection(ldapAddress, ldapPort, ldapUsername, ldapPassword);
+			Filter filter = Filter.createEqualityFilter("mail", email);
+			SearchRequest searchRequest = new SearchRequest(ldapUsersDN, SearchScope.SUB, filter, "JoomlaGroup");
+			SearchResult searchResult = connection.search(searchRequest);
+
+			for (SearchResultEntry entry : searchResult.getSearchEntries()) {
+				for (String role : entry.getAttributeValues("JoomlaGroup"))
+					if (role.equals("validatorAdmin"))
+						return true;
+			}
+			logger.debug(email + " is not administrator");
+			return false;
+		} catch (Exception e) {
+			logger.error("", e);
+			throw e;
+		} finally {
+			if (connection != null)
+				connection.close();
+		}
+	}
+
+	@Override
+	public boolean isUserActivated(String email) throws Exception {
+		LDAPConnection connection = null;
+		try {
+			logger.debug("checking if user " + email + " is activated");
+			connection = new LDAPConnection(ldapAddress, ldapPort, ldapUsername, ldapPassword);
+			Filter filter = Filter.createEqualityFilter("mail", email);
+			SearchRequest searchRequest = new SearchRequest(ldapUsersDN, SearchScope.SUB, filter, "JoomlaBlockUser");
+			SearchResult searchResult = connection.search(searchRequest);
+			for (SearchResultEntry entry : searchResult.getSearchEntries()) {
+				int val = entry.getAttributeValueAsInteger("JoomlaBlockUser");
+				if (val == 0)
+					return true;
+				else
+					return false;
+			}
+		} catch (Exception e) {
+			logger.error("", e);
+			throw e;
+		} finally {
+			if (connection != null)
+				connection.close();
+		}
+		return false;
+	}
+
+	@Override
+	public String prepareResetPassword(String email) throws Exception {
+		LDAPConnection connection = null;
+		try {
+			logger.debug("preparing reset password for user " + email);
+			connection = new LDAPConnection(ldapAddress, ldapPort, ldapUsername, ldapPassword);
+			Filter filter = Filter.createEqualityFilter("mail", email);
+			SearchRequest searchRequest = new SearchRequest(ldapUsersDN, SearchScope.SUB, filter, "uid");
+			SearchResult searchResult = connection.search(searchRequest);
+			String dn = null;
+			for (SearchResultEntry entry : searchResult.getSearchEntries()) {
+				dn = "uid=" + entry.getAttributeValue("uid") + "," + ldapUsersDN;
+			}
+			String uuid = UUID.randomUUID().toString();
+			Modification mod = new Modification(ModificationType.REPLACE, "employeeNumber", uuid);
+			connection.modify(dn, mod);
+			return uuid;
+		} catch (Exception e) {
+			logger.error("", e);
+			throw e;
+		} finally {
+			if (connection != null)
+				connection.close();
+		}
+	}
+
+	@Override
+	public void resetPassword(String uuid, String password) throws Exception {
+		LDAPConnection connection = null;
+		try {
+			connection = new LDAPConnection(ldapAddress, ldapPort, ldapUsername, ldapPassword);
+			Filter filter = Filter.createEqualityFilter("employeeNumber", uuid);
+			SearchRequest searchRequest = new SearchRequest(ldapUsersDN, SearchScope.SUB, filter, "uid");
+			SearchResult searchResult = connection.search(searchRequest);
+			String dn = null;
+			for (SearchResultEntry entry : searchResult.getSearchEntries()) {
+				dn = "uid=" + entry.getAttributeValue("uid") + "," + ldapUsersDN;
+			}
+			Modification mod1 = new Modification(ModificationType.REPLACE, "userPassword", Joomla15PasswordHash.create(password));
+			Modification mod2 = new Modification(ModificationType.REPLACE, "employeeNumber");
+			connection.modify(dn, mod1, mod2);
+		} catch (Exception e) {
+			logger.error("", e);
+			throw e;
+		} finally {
+			if (connection != null)
+				connection.close();
+		}
+	}
+
+	@Override
+	public boolean userExists(String email) throws Exception {
+		LDAPConnection connection = null;
+		try {
+			logger.debug("checking if user " + email + " exists in ldap");
+			connection = new LDAPConnection(ldapAddress, ldapPort, ldapUsername, ldapPassword);
+			Filter filter = Filter.createEqualityFilter("mail", email);
+			SearchRequest searchRequest = new SearchRequest(ldapUsersDN, SearchScope.SUB, filter, "mail");
+
+			SearchResult searchResult = connection.search(searchRequest);
+			if (!searchResult.getSearchEntries().isEmpty())
+				return true;
+
+			return false;
+		} catch (Exception e) {
+			logger.error("", e);
+			throw e;
+		} finally {
+			if (connection != null)
+				connection.close();
+		}
+	}
+
+	@Override
+	public boolean usernameExists(String username) throws Exception {
+		LDAPConnection connection = null;
+		try {
+			logger.debug("checking if user " + username + " exists in ldap");
+			connection = new LDAPConnection(ldapAddress, ldapPort, ldapUsername, ldapPassword);
+			Filter filter = Filter.createEqualityFilter("uid", username);
+			SearchRequest searchRequest = new SearchRequest(ldapUsersDN, SearchScope.SUB, filter, "uid");
+			SearchResult searchResult = connection.search(searchRequest);
+
+			if (!searchResult.getSearchEntries().isEmpty()) {
+				return true;
+			}
+
+			return false;
+		} catch (Exception e) {
+			logger.error("", e);
+			throw e;
+		} finally {
+			if (connection != null)
+				connection.close();
+		}
+	}
+
+	@Override
+	public String getEmailFromUsername(String username) throws Exception {
+		LDAPConnection connection = null;
+		try {
+			logger.debug("getting email for user " + username);
+			connection = new LDAPConnection(ldapAddress, ldapPort, ldapUsername, ldapPassword);
+			Filter filter = Filter.createEqualityFilter("uid", username);
+			SearchRequest searchRequest = new SearchRequest(ldapUsersDN, SearchScope.SUB, filter, "mail");
+			SearchResult searchResult = connection.search(searchRequest);
+			for (SearchResultEntry entry : searchResult.getSearchEntries()) {
+				return entry.getAttributeValue("mail");
+			}
+			return null;
+		} catch (Exception e) {
+			logger.error("", e);
+			throw e;
+		} finally {
+			if (connection != null)
+				connection.close();
+		}
+	}
+
+	public void setLdapPort(int ldapPort) {
+		this.ldapPort = ldapPort;
+	}
+
+	public void setLdapAddress(String ldapAddress) {
+		this.ldapAddress = ldapAddress;
+	}
+
+	public void setLdapUsername(String ldapUsername) {
+		this.ldapUsername = ldapUsername;
+	}
+
+	public void setLdapPassword(String ldapPassword) {
+		this.ldapPassword = ldapPassword;
+	}
+
+	public void setLdapUsersDN(String ldapUsersDN) {
+		this.ldapUsersDN = ldapUsersDN;
+	}
+}
+
+class Joomla15PasswordHash 
+{
+   public static boolean check(String passwd,String dbEntry) {
+      String hashed = "{MD5}"+Base64.encode(pack(Joomla15PasswordHash.md5(passwd)));
+      if(dbEntry.equals(hashed))
+    	  return true;
+      else
+    	  return false;
+   }
+
+   static Random _rnd;
+
+   public static String create(String passwd) {
+	   return "{MD5}"+Base64.encode(pack(Joomla15PasswordHash.md5(passwd)));
+   }
+
+   /** Takes the MD5 hash of a sequence of ASCII or LATIN1 characters,
+    *  and returns it as a 32-character lowercase hex string.
+    *
+    *  Equivalent to MySQL's MD5() function 
+    *  and to perl's Digest::MD5::md5_hex(),
+    *  and to PHP's md5().
+    *
+    *  Does no error-checking of the input,  but only uses the low 8 bits
+    *  from each input character.
+    */
+   public static String md5(String data) {
+      byte[] bdata = new byte[data.length()]; int i; byte[] hash;
+
+      for (i=0;i<data.length();i++) bdata[i]=(byte)(data.charAt(i)&0xff );
+
+      try {
+         MessageDigest md5er = MessageDigest.getInstance("MD5");
+         hash = md5er.digest(bdata);
+      } catch (GeneralSecurityException e) { throw new RuntimeException(e); }
+
+      StringBuffer r = new StringBuffer(32);
+      for (i=0;i<hash.length;i++) {
+         String x = Integer.toHexString(hash[i]&0xff);
+         if (x.length()<2) r.append("0");
+         r.append(x);
+      }
+      return r.toString();      
+   }
+   
+   public static byte[] pack(String md5) {
+	    byte[] bytes = new byte[16];
+	    int j = 0;
+	    for(int i=0; i < 31; i+=2) {
+	    	bytes[j] = (byte) Integer.parseInt(md5.charAt(i)+""+md5.charAt(i+1),16);
+	    	j++;
+	    }
+	    return bytes;
+	}
+}
+
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/java/eu/dnetlib/validator/admin/actions/login/SendPassword.java
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/java/eu/dnetlib/validator/admin/actions/login/SendPassword.java	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/java/eu/dnetlib/validator/admin/actions/login/SendPassword.java	(revision 47450)
@@ -0,0 +1,59 @@
+package eu.dnetlib.validator.admin.actions.login;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.apache.log4j.Logger;
+
+import com.opensymphony.xwork2.Action;
+
+import eu.dnetlib.validator.admin.actions.BaseValidatorAction;
+
+public class SendPassword extends BaseValidatorAction {
+
+	private static final long serialVersionUID = 7540821478579531671L;
+	private Logger logger = Logger.getLogger(SendPassword.class);
+	
+	private String email;
+
+	public String execute() {
+		this.clearErrorsAndMessages();
+		try {
+			logger.debug("sending password to user " + email);
+			List<String> to = new ArrayList<String>();
+			to.add(this.getEmail());
+			String securityCode = this.getUserAPI().prepareResetPassword(this.getEmail());
+			this.getEmailer().sendMail(to, this.getText("forgotPassword.mail.Subject"), this.getText("forgotPassword.mail.Body1") + ": " + this.getValBaseUrl() + "/resetPassword.action?securityCode=" + securityCode + "\n\n" + this.getText("forgotPassword.mail.Body2") + ": " + securityCode, false, null);
+			this.addActionMessage(this.getText("forgotPassword.message"));
+			return Action.SUCCESS;
+		} catch (Exception e) {
+			logger.error("error sending password to user " + email, e);
+			this.addActionError(this.getText("generic.error"));
+			return "exception";
+		}
+	}
+
+	public void validate() {
+		this.clearErrors();
+		try {
+			if (!this.getUserAPI().userExists(this.getEmail())) {
+				this.addActionError(this.getText("login.userNotExists"));
+				return;
+			}
+//			if (!this.getUserAPI().isUserActivated(this.getEmail())) {
+//				this.addActionError(this.getText("login.notActivated"));
+//				return;
+//			}
+		} catch (Exception e) {
+			this.addActionError(e.toString());
+		}
+	}
+
+	public String getEmail() {
+		return email;
+	}
+
+	public void setEmail(String email) {
+		this.email = email;
+	}
+}
Index: modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/java/eu/dnetlib/validator/admin/actions/rules/AddRule.java
===================================================================
--- modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/java/eu/dnetlib/validator/admin/actions/rules/AddRule.java	(nonexistent)
+++ modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/java/eu/dnetlib/validator/admin/actions/rules/AddRule.java	(revision 47450)
@@ -0,0 +1,87 @@
+package eu.dnetlib.validator.admin.actions.rules;
+
+
+import org.apache.log4j.Logger;
+
+import com.opensymphony.xwork2.Action;
+
+import eu.dnetlib.domain.functionality.validator.Rule;
+import eu.dnetlib.validator.admin.actions.BaseValidatorAction;
+
+public class AddRule extends BaseValidatorAction {
+
+	private static final long serialVersionUID = -4636737264204104816L;
+	private String[] inputs;
+	private String type, jobType;
+	private boolean forCris;
+	private static final Logger logger = Logger.getLogger(AddRule.class);
+
+	public String execute() {
+		this.clearErrorsAndMessages();
+		try {
+			logger.debug("adding rule of type "+type+" using user inputs");
+			logger.debug("for cris: "+forCris);
+			logger.debug("jobType: "+ jobType);
+			Rule rule = new Rule();
+			rule.setType(type);
+			rule.setJob_type(jobType);
+			rule.setFor_cris(forCris);
+//			rule.setEntity_type(entityType);
+			String ret = this.getValidatorAdminAPI().storeRule(rule, inputs, true);
+			if (ret != null) {
+				this.addActionError(this.getText(ret));
+				return "input-problem";
+			}
+			
+			this.addActionMessage(this.getText("addRule.success"));
+			
+			return Action.SUCCESS;
+		} catch(Exception e) {
+			logger.error("Error adding rule", e);
+			this.addActionError(this.getText("generic.error"));
+			reportException(e);
+			return "exception";
+		}
+	}
+	
+	public String getJobType() {
+		return jobType;
+	}
+
+	public void setJobType(String jobType) {
+		this.jobType = jobType;
+	}
+
+	public boolean isForCris() {
+		return forCris;
+	}
+
+	public void setForCris(boolean forCris) {
+		this.forCris = forCris;
+	}
+
+//	public String getEntityType() {
+//		return entityType;
+//	}
+//
+//	public void setEntityType(String entityType) {
+//		this.entityType = entityType;
+//	}
+
+	public String getType() {
+		return type;
+	}
+
+	public void setType(String type) {
+		this.type = type;
+	}
+
+	public String[] getInputs() {
+		return inputs;
+	}
+
+	public void setInputs(String[] inputs) {
+		this.inputs = inputs;
+	}
+
+}
\ No newline at end of file
Index: modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/java/eu/dnetlib/validator/admin/actions/rules/PopulateRuleList.java
===================================================================
--- modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/java/eu/dnetlib/validator/admin/actions/rules/PopulateRuleList.java	(nonexistent)
+++ modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/java/eu/dnetlib/validator/admin/actions/rules/PopulateRuleList.java	(revision 47450)
@@ -0,0 +1,42 @@
+package eu.dnetlib.validator.admin.actions.rules;
+
+import java.util.List;
+
+import org.apache.log4j.Logger;
+
+import com.opensymphony.xwork2.Action;
+
+import eu.dnetlib.domain.functionality.validator.Rule;
+import eu.dnetlib.validator.admin.actions.BaseValidatorAction;
+
+public class PopulateRuleList extends BaseValidatorAction {
+
+	private static final long serialVersionUID = -4035025449768015129L;
+	private List<Rule> rules;
+	private static final Logger logger = Logger.getLogger(PopulateRuleList.class);
+
+	public String execute() {
+		this.clearErrorsAndMessages();
+		try {
+			logger.debug("populating rule list");
+			rules = this.getValidatorAdminAPI().getAllRules();
+			return Action.SUCCESS;
+		}
+		catch(Exception e) {
+			logger.error("Error redirecting to job", e);
+			this.addActionError(this.getText("generic.error"));
+			reportException(e);
+			return "exception";
+		}
+	}
+
+	public List<Rule> getRules() {
+		return rules;
+	}
+
+	public void setRules(List<Rule> rules) {
+		this.rules = rules;
+	}
+	
+	
+}
Index: modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/java/eu/dnetlib/validator/admin/actions/rules/PopulateRuleCategories.java
===================================================================
--- modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/java/eu/dnetlib/validator/admin/actions/rules/PopulateRuleCategories.java	(nonexistent)
+++ modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/java/eu/dnetlib/validator/admin/actions/rules/PopulateRuleCategories.java	(revision 47450)
@@ -0,0 +1,55 @@
+package eu.dnetlib.validator.admin.actions.rules;
+
+import java.util.Set;
+
+import org.apache.log4j.Logger;
+
+import com.opensymphony.xwork2.Action;
+
+import eu.dnetlib.validator.admin.actions.BaseValidatorAction;
+import eu.dnetlib.validator.admin.constants.TypesAndTableNames;
+
+public class PopulateRuleCategories extends BaseValidatorAction {
+
+	private static final long serialVersionUID = 3845749201114926778L;
+	private Logger logger = Logger.getLogger(PopulateRuleCategories.class);
+	
+	private Set<String> ruleTypes;
+//	private Set<String> jobTypes;
+	private String defaultJobType;
+	
+	public String execute() {
+		this.clearErrorsAndMessages();
+		logger.debug("populating rule categories");
+			defaultJobType="content";
+//			jobTypes = TypesAndTableNames.getJobTypes();
+			ruleTypes = TypesAndTableNames.getRuleTypes();
+
+		return Action.SUCCESS;
+	}
+
+	public Set<String> getRuleTypes() {
+		return ruleTypes;
+	}
+
+	public void setRuleTypes(Set<String> ruleTypes) {
+		this.ruleTypes = ruleTypes;
+	}
+
+//	public Set<String> getJobTypes() {
+//		return jobTypes;
+//	}
+//
+//	public void setJobTypes(Set<String> jobTypes) {
+//		this.jobTypes = jobTypes;
+//	}
+
+	public String getDefaultJobType() {
+		return defaultJobType;
+	}
+
+	public void setDefaultJobType(String defaultJobType) {
+		this.defaultJobType = defaultJobType;
+	}
+	
+}
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/java/eu/dnetlib/validator/admin/actions/rules/PopulateRuleCategories.java
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/java/eu/dnetlib/validator/admin/actions/rules/PopulateRuleCategories.java	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/java/eu/dnetlib/validator/admin/actions/rules/PopulateRuleCategories.java	(revision 47450)
@@ -0,0 +1,55 @@
+package eu.dnetlib.validator.admin.actions.rules;
+
+import java.util.Set;
+
+import org.apache.log4j.Logger;
+
+import com.opensymphony.xwork2.Action;
+
+import eu.dnetlib.validator.admin.actions.BaseValidatorAction;
+import eu.dnetlib.validator.admin.constants.TypesAndTableNames;
+
+public class PopulateRuleCategories extends BaseValidatorAction {
+
+	private static final long serialVersionUID = 3845749201114926778L;
+	private Logger logger = Logger.getLogger(PopulateRuleCategories.class);
+	
+	private Set<String> ruleTypes;
+//	private Set<String> jobTypes;
+	private String defaultJobType;
+	
+	public String execute() {
+		this.clearErrorsAndMessages();
+		logger.debug("populating rule categories");
+			defaultJobType="content";
+//			jobTypes = TypesAndTableNames.getJobTypes();
+			ruleTypes = TypesAndTableNames.getRuleTypes();
+
+		return Action.SUCCESS;
+	}
+
+	public Set<String> getRuleTypes() {
+		return ruleTypes;
+	}
+
+	public void setRuleTypes(Set<String> ruleTypes) {
+		this.ruleTypes = ruleTypes;
+	}
+
+//	public Set<String> getJobTypes() {
+//		return jobTypes;
+//	}
+//
+//	public void setJobTypes(Set<String> jobTypes) {
+//		this.jobTypes = jobTypes;
+//	}
+
+	public String getDefaultJobType() {
+		return defaultJobType;
+	}
+
+	public void setDefaultJobType(String defaultJobType) {
+		this.defaultJobType = defaultJobType;
+	}
+	
+}
Index: modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/java/eu/dnetlib/validator/admin/actions/DummyAction.java
===================================================================
--- modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/java/eu/dnetlib/validator/admin/actions/DummyAction.java	(nonexistent)
+++ modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/java/eu/dnetlib/validator/admin/actions/DummyAction.java	(revision 47450)
@@ -0,0 +1,13 @@
+package eu.dnetlib.validator.admin.actions;
+
+import com.opensymphony.xwork2.Action;
+
+public class DummyAction extends BaseValidatorAction {
+
+	private static final long serialVersionUID = 4105253794510714980L;
+
+	public String execute() {
+		return Action.SUCCESS;
+		
+	}
+}
Index: modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/java/eu/dnetlib/validator/admin/api/impls/EmailBuilder.java
===================================================================
--- modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/java/eu/dnetlib/validator/admin/api/impls/EmailBuilder.java	(nonexistent)
+++ modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/java/eu/dnetlib/validator/admin/api/impls/EmailBuilder.java	(revision 47450)
@@ -0,0 +1,82 @@
+package eu.dnetlib.validator.admin.api.impls;
+
+import java.io.StringWriter;
+import java.util.List;
+import java.util.Map;
+
+import javax.xml.transform.TransformerConfigurationException;
+import javax.xml.transform.TransformerException;
+import javax.xml.transform.TransformerFactoryConfigurationError;
+
+import org.apache.log4j.Logger;
+import org.apache.velocity.Template;
+import org.apache.velocity.VelocityContext;
+import org.apache.velocity.app.VelocityEngine;
+import org.apache.velocity.exception.ParseErrorException;
+import org.apache.velocity.exception.ResourceNotFoundException;
+import org.apache.velocity.runtime.RuntimeConstants;
+import org.apache.velocity.runtime.resource.loader.ClasspathResourceLoader;
+
+public class EmailBuilder {
+
+	private static Logger logger = Logger.getLogger(EmailBuilder.class);
+	
+	private VelocityEngine ve = null;
+	
+	public void init() throws Exception {
+		this.ve = new VelocityEngine();
+		this.ve.setProperty(RuntimeConstants.RESOURCE_LOADER, "classpath");
+		this.ve.setProperty("classpath.resource.loader.class", ClasspathResourceLoader.class.getName());
+		this.ve.setProperty("runtime.log.logsystem.class", "org.apache.velocity.runtime.log.NullLogSystem");
+		this.ve.init();	
+	}
+	
+	public String buildXml(List<Map<String, String>> passedJobsList, List<Map<String, String>> failedJobsList, String month, boolean oldFormat) {
+		logger.debug("Building the registrations report Email");
+		String finalEmail = null;
+		
+		try {
+        
+			VelocityContext context = new VelocityContext();
+
+			context.put("passedJobs", passedJobsList);
+			context.put("failedJobs", failedJobsList);
+			context.put("month", month);
+			if (passedJobsList.isEmpty())
+				context.put("nonePassed", "There are no successful registration attempts.");
+			else
+				context.put("nonePassed", " ");
+			if (failedJobsList.isEmpty())
+				context.put("noneFailed", "There are no failed registration attempts.");
+			else
+				context.put("noneFailed", " ");
+			
+			Template t;
+			
+			if (oldFormat)
+				t = this.ve.getTemplate("/eu/dnetlib/validator/admin/api/emailTeplateOld.vm");
+			else
+				t = this.ve.getTemplate("/eu/dnetlib/validator/admin/api/emailTeplate.vm");
+			
+			StringWriter writer = new StringWriter();
+			
+			t.merge(context, writer);
+			finalEmail = writer.toString();
+			
+		} catch (TransformerConfigurationException e) {
+			logger.error("Error while building XML file", e);
+		} catch (TransformerFactoryConfigurationError e) {
+			logger.error("Error while building XML file", e);
+		} catch (TransformerException e) {
+			logger.error("Error while building XML file", e);
+		} catch (ResourceNotFoundException e) {
+			logger.error("Error while building XML file", e);
+		} catch (ParseErrorException e) {
+			logger.error("Error while building XML file", e);
+		} catch (Exception e) {
+			logger.error("Error while building XML file", e);
+		}
+		
+        return finalEmail;
+	}
+}
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/java/eu/dnetlib/validator/admin/actions/login/PortalLogin.java
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/java/eu/dnetlib/validator/admin/actions/login/PortalLogin.java	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/java/eu/dnetlib/validator/admin/actions/login/PortalLogin.java	(revision 47450)
@@ -0,0 +1,207 @@
+package eu.dnetlib.validator.admin.actions.login;
+
+import java.util.Calendar;
+import java.util.Map;
+
+import javax.crypto.Mac;
+import javax.crypto.spec.SecretKeySpec;
+import javax.servlet.http.HttpServletRequest;
+
+import org.apache.commons.codec.binary.Base64;
+import org.apache.commons.codec.binary.Hex;
+import org.apache.log4j.Logger;
+import org.apache.struts2.interceptor.ServletRequestAware;
+import org.apache.struts2.interceptor.SessionAware;
+
+import com.opensymphony.xwork2.Action;
+
+import eu.dnetlib.validator.admin.actions.BaseValidatorAction;
+import eu.dnetlib.validator.admin.config.Constants;
+
+public class PortalLogin extends BaseValidatorAction implements ServletRequestAware, SessionAware {
+
+	private static final long serialVersionUID = -6312800103845446815L;
+	private transient Logger logger = Logger.getLogger(PortalLogin.class);
+
+	private HttpServletRequest request;
+	private Map<String, Object> session;
+
+	private String user, ip, valid, signature;
+	private String key;
+	private String email;
+
+	public void validate() {
+		this.clearErrors();
+		logger.debug("validating log-in from portal link " + user + ", " + ip + ", " + valid + ", " + signature);
+		if (user == null || ip == null || valid == null) {
+			this.addActionError(this.getText("login.manual"));
+			return;
+		}
+		if (user.trim().equals("") || ip.trim().equals("") || valid.trim().equals("")) {
+			this.addActionError(this.getText("login.manual"));
+			return;
+		}
+		long millisUntil = 0;
+		try {
+			millisUntil = Long.parseLong(valid);
+		} catch (Exception e) {
+			logger.error("", e);
+			this.addActionError(this.getText("login.manual"));
+			return;
+		}
+
+		try {
+			if (!signatureIsValid((user + ip + valid).trim(), signature.trim())) {
+				logger.debug("signature was not valid");
+				this.addActionError(this.getText("login.manual"));
+				return;
+			}
+		} catch (Exception e) {
+			logger.error("", e);
+			this.addActionError(this.getText("login.manual"));
+			return;
+		}
+
+		Calendar cal = Calendar.getInstance();
+		if (cal.getTime().getTime() > millisUntil) {
+			logger.debug("link has expired current-time: "+cal.getTime().getTime()+" link-time: "+millisUntil);
+			this.addActionError(this.getText("login.manual"));
+			return;
+		}
+
+		if (!ip.trim().equals(request.getRemoteAddr().trim())) {
+			logger.debug("ips are different "+ip+" "+request.getRemoteAddr());
+			this.addActionError(this.getText("login.manual"));
+			return;
+		}
+
+		try {
+//			if (isModeLdap())
+				this.email = this.getUserAPI().getEmailFromUsername(user);
+
+			if (this.email == null) {
+				this.email = "";
+				this.addActionError(this.getText("login.userNotExists"));
+				return;
+			}
+
+			if (!this.getUserAPI().userExists(this.getEmail())) {
+				this.email = "";
+				this.addActionError(this.getText("login.userNotExists"));
+				return;
+			}
+
+			if (!this.getUserAPI().isUserActivated(this.getEmail())) {
+				this.email = "";
+				this.addActionError(this.getText("login.notActivated"));
+				return;
+			}
+		} catch (Exception e) {
+			logger.error("", e);
+			this.addActionError(e.toString());
+		}
+	}
+
+	public String execute() {
+		this.clearErrorsAndMessages();
+		try {
+			logger.debug("logging-in from portal link " + user + ", " + ip + ", " + valid + ", " + signature);
+			session.put(Constants.loggedInField, this.getEmail());
+			session.put("email", this.getEmail());
+			if (this.getUserAPI().isAdmin(email))
+				session.put("isAdmin", "true");
+
+			this.addActionMessage("Logged-in successfully");
+
+			return Action.SUCCESS;
+		} catch (Exception e) {
+			logger.error("error logging-in from portal link " + user + ", " + ip + ", " + valid + ", " + signature, e);
+			this.addActionError(this.getText("generic.error"));
+			reportException(e);
+			return "exception";
+		}
+	}
+
+	public boolean signatureIsValid(String message, String signature) throws Exception {
+		byte[] encode = Hex.decodeHex(new String(Base64.decodeBase64(signature.getBytes())).toCharArray());
+
+		SecretKeySpec key = new SecretKeySpec(this.key.getBytes(), "HmacSHA1");
+		Mac mac = Mac.getInstance(key.getAlgorithm());
+
+		mac.init(key);
+
+		byte[] myEncode = mac.doFinal(message.getBytes());
+		
+		logger.debug("given encode: "+new String(encode)+" my-encode: "+new String(myEncode));
+
+		if (encode.length != myEncode.length)
+			return false;
+
+		for (int i = 0; i < encode.length; i++)
+			if (encode[i] != myEncode[i])
+				return false;
+		return true;
+	}
+
+	public void setServletRequest(HttpServletRequest request) {
+		this.request = request;
+	}
+
+	public HttpServletRequest getServletRequest() {
+		return request;
+	}
+
+	@Override
+	public void setSession(Map<String, Object> session) {
+		this.session = session;
+	}
+
+	public String getUser() {
+		return user;
+	}
+
+	public void setUser(String user) {
+		this.user = user;
+	}
+
+	public String getIp() {
+		return ip;
+	}
+
+	public void setIp(String ip) {
+		this.ip = ip;
+	}
+
+	public String getValid() {
+		return valid;
+	}
+
+	public void setValid(String valid) {
+		this.valid = valid;
+	}
+
+	public String getSignature() {
+		return signature;
+	}
+
+	public void setSignature(String signature) {
+		this.signature = signature;
+	}
+
+	public String getKey() {
+		return key;
+	}
+
+	public void setKey(String key) {
+		this.key = key;
+	}
+
+	public String getEmail() {
+		return email;
+	}
+
+	public void setEmail(String email) {
+		this.email = email;
+	}
+
+}
Index: modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/java/eu/dnetlib/validator/admin/api/UserApi.java
===================================================================
--- modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/java/eu/dnetlib/validator/admin/api/UserApi.java	(nonexistent)
+++ modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/java/eu/dnetlib/validator/admin/api/UserApi.java	(revision 47450)
@@ -0,0 +1,32 @@
+package eu.dnetlib.validator.admin.api;
+
+import eu.dnetlib.domain.functionality.UserProfile;
+
+public interface UserApi {
+
+	public boolean activateUser(String activationId) throws Exception;
+
+	public boolean isUserActivated(String email) throws Exception;
+
+	public boolean userExists(String email) throws Exception;
+
+	public boolean usernameExists(String username) throws Exception;
+
+	public boolean correctCreds(String email, String password) throws Exception;
+
+	public String prepareResetPassword(String email) throws Exception;
+
+	public void resetPassword(String uuid, String password) throws Exception;
+
+	public boolean isAdmin(String email) throws Exception;
+
+	public void editUser(UserProfile user)
+			throws Exception;
+
+	public String addUser(String username, String email, String password,
+			String firstName, String lastName, String institution) throws Exception;
+
+	public String getEmailFromUsername(String username) throws Exception;
+
+	public UserProfile getUser(String userIdentifier) throws Exception;
+}
\ No newline at end of file
Index: modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/java/eu/dnetlib/validator/admin/api/impls/UserApiLDAP.java
===================================================================
--- modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/java/eu/dnetlib/validator/admin/api/impls/UserApiLDAP.java	(nonexistent)
+++ modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/java/eu/dnetlib/validator/admin/api/impls/UserApiLDAP.java	(revision 47450)
@@ -0,0 +1,438 @@
+package eu.dnetlib.validator.admin.api.impls;
+
+import java.security.GeneralSecurityException;
+import java.security.MessageDigest;
+import java.util.Random;
+import java.util.UUID;
+
+import org.apache.log4j.Logger;
+
+import com.unboundid.ldap.sdk.Attribute;
+import com.unboundid.ldap.sdk.DN;
+import com.unboundid.ldap.sdk.Entry;
+import com.unboundid.ldap.sdk.Filter;
+import com.unboundid.ldap.sdk.LDAPConnection;
+import com.unboundid.ldap.sdk.Modification;
+import com.unboundid.ldap.sdk.ModificationType;
+import com.unboundid.ldap.sdk.SearchRequest;
+import com.unboundid.ldap.sdk.SearchResult;
+import com.unboundid.ldap.sdk.SearchResultEntry;
+import com.unboundid.ldap.sdk.SearchScope;
+import com.unboundid.util.Base64;
+
+import eu.dnetlib.domain.functionality.UserProfile;
+import eu.dnetlib.validator.admin.api.UserApi;
+
+public class UserApiLDAP implements UserApi {
+
+	transient Logger logger = Logger.getLogger(UserApiLDAP.class);
+
+	private int ldapPort = 0;
+	private String ldapAddress;
+	private String ldapUsername;
+	private String ldapPassword;
+	private String ldapUsersDN;
+
+	@Override
+	public boolean activateUser(String activationId) throws Exception {
+		LDAPConnection connection = null;
+		try {
+			logger.debug("activating user with activationId " + activationId);
+			connection = new LDAPConnection(ldapAddress, ldapPort, ldapUsername, ldapPassword);
+			Filter filter = Filter.createEqualityFilter("employeeNumber", activationId);
+			SearchRequest searchRequest = new SearchRequest(ldapUsersDN, SearchScope.SUB, filter, "uid");
+			SearchResult searchResult = connection.search(searchRequest);
+			String dn = null;
+
+			if ( searchResult.getSearchEntries().size() > 0	) {
+			
+				for (SearchResultEntry entry : searchResult.getSearchEntries()) {
+					dn = "uid=" + entry.getAttributeValue("uid") + "," + ldapUsersDN;
+				}
+
+				Modification mod1 = new Modification(ModificationType.REPLACE, "JoomlaBlockUser", "0");
+				Modification mod2 = new Modification(ModificationType.REPLACE, "employeeNumber");
+				connection.modify(dn, mod1, mod2);
+				return true;
+			} else {
+				return false;
+			}
+		} catch (Exception e) {
+			logger.error("", e);
+			throw e;
+		} finally {
+			if (connection != null)
+				connection.close();
+		}
+	}
+
+	@Override
+	public String addUser(String username, String email, String password, String firstName, String lastName, String institution) throws Exception {
+		logger.debug("adding user " + username + " " + email + " to ldap");
+		Attribute cn = new Attribute("cn", username);
+		Attribute displayName = new Attribute("displayName", firstName + " " + lastName);
+		Attribute mail = new Attribute("mail", email);
+		Attribute givenName = new Attribute("givenName", firstName);
+		Attribute joomlaBlockUser = new Attribute("JoomlaBlockUser", "1");
+		Attribute joomlaGroup = new Attribute("JoomlaGroup", "Registered");
+		Attribute objectClass = new Attribute("objectClass", "top", "inetOrgPerson", "JoomlaUser");
+		Attribute userPassword = new Attribute("userPassword", Joomla15PasswordHash.create(password));
+		Attribute sn = new Attribute("sn", lastName);
+		Attribute uid = new Attribute("uid", username);
+		
+			
+		// Attribute joomlaUserParams = new Attribute("JoomlaUserParams", "");
+		String activationId = UUID.randomUUID().toString();
+		Attribute x500UniqueIdentifier = new Attribute("employeeNumber", activationId);
+		LDAPConnection connection = null;
+		try {
+			DN dn = new DN("uid=" + username + "," + ldapUsersDN);
+			Entry entry;
+			if (institution != null) {
+				Attribute o = new Attribute("o", institution);
+				entry = new Entry(dn.toNormalizedString(), cn, displayName, mail, givenName, joomlaBlockUser, joomlaGroup, objectClass, userPassword, sn, uid, x500UniqueIdentifier, o);
+						
+			} else {
+				entry = new Entry(dn.toNormalizedString(), cn, displayName, mail, givenName, joomlaBlockUser, joomlaGroup, objectClass, userPassword, sn, uid/*
+																																								 * ,
+																																								 * joomlaUserParams
+																																								 */, x500UniqueIdentifier);
+			}
+			connection = new LDAPConnection(ldapAddress, ldapPort, ldapUsername, ldapPassword);
+			connection.add(entry);
+
+			return activationId;
+		} catch (Exception e) {
+			logger.error("", e);
+			throw e;
+		} finally {
+			if (connection != null)
+				connection.close();
+		}
+	}
+
+	@Override
+	public boolean correctCreds(String email, String password) throws Exception {
+		LDAPConnection connection = null;
+		try {
+			logger.debug("checking if user " + email + " entered a correct password when logging in");
+			connection = new LDAPConnection(ldapAddress, ldapPort, ldapUsername, ldapPassword);
+			Filter filter = Filter.createEqualityFilter("mail", email);
+			SearchRequest searchRequest = new SearchRequest(ldapUsersDN, SearchScope.SUB, filter, "userPassword");
+			SearchResult searchResult = connection.search(searchRequest);
+			for (SearchResultEntry entry : searchResult.getSearchEntries()) {
+				if (Joomla15PasswordHash.check(password, entry.getAttributeValue("userPassword")))
+					return true;
+			}
+			return false;
+		} catch (Exception e) {
+			logger.error("", e);
+			throw e;
+		} finally {
+			if (connection != null)
+				connection.close();
+		}
+	}
+
+	@Override
+	public void editUser(UserProfile user) throws Exception {
+		LDAPConnection connection = null;
+		try {
+			logger.debug("editing user " + user.getEmail());
+			connection = new LDAPConnection(ldapAddress, ldapPort, ldapUsername, ldapPassword);
+			Filter filter = Filter.createEqualityFilter("mail", user.getEmail());
+			SearchRequest searchRequest = new SearchRequest(ldapUsersDN, SearchScope.SUB, filter, "uid");
+			SearchResult searchResult = connection.search(searchRequest);
+			String dn = null;
+			for (SearchResultEntry entry : searchResult.getSearchEntries()) {
+				dn = "uid=" + entry.getAttributeValue("uid") + "," + ldapUsersDN;
+			}
+			Modification mod1 = new Modification(ModificationType.REPLACE, "displayName", user.getFirstname() + " " + user.getLastname());
+			Modification mod2 = new Modification(ModificationType.REPLACE, "givenName", user.getFirstname());
+			Modification mod3 = new Modification(ModificationType.REPLACE, "sn", user.getLastname());
+			Modification mod4 = new Modification(ModificationType.REPLACE, "o", user.getInstitution());
+			connection.modify(dn, mod1, mod2, mod3, mod4);
+		} catch (Exception e) {
+			logger.error("", e);
+			throw e;
+		} finally {
+			if (connection != null)
+				connection.close();
+		}
+	}
+
+	@Override
+	public UserProfile getUser(String userIdentifier) throws Exception {
+		LDAPConnection connection = null;
+		try {
+			logger.debug("getting user " + userIdentifier + " from ldap");
+			connection = new LDAPConnection(ldapAddress, ldapPort, ldapUsername, ldapPassword);
+			Filter filter = Filter.createEqualityFilter("mail", userIdentifier);
+			SearchRequest searchRequest = new SearchRequest(ldapUsersDN, SearchScope.SUB, filter, "mail", "givenName", "sn", "o", "uid");
+			SearchResult searchResult = connection.search(searchRequest);
+			UserProfile profile = new UserProfile();
+			for (SearchResultEntry entry : searchResult.getSearchEntries()) {
+				profile.setEmail(entry.getAttributeValue("mail"));
+				profile.setFirstname(entry.getAttributeValue("givenName"));
+				profile.setLastname(entry.getAttributeValue("sn"));
+				profile.setInstitution(entry.getAttributeValue("o"));
+				profile.setUsername(entry.getAttributeValue("uid"));
+			}
+			return profile;
+		} catch (Exception e) {
+			logger.error("", e);
+			throw e;
+		} finally {
+			if (connection != null)
+				connection.close();
+		}
+	}
+
+	@Override
+	public boolean isAdmin(String email) throws Exception {
+		LDAPConnection connection = null;
+		try {
+			logger.debug("checking if user " + email + " is an administrator");
+			connection = new LDAPConnection(ldapAddress, ldapPort, ldapUsername, ldapPassword);
+			Filter filter = Filter.createEqualityFilter("mail", email);
+			SearchRequest searchRequest = new SearchRequest(ldapUsersDN, SearchScope.SUB, filter, "JoomlaGroup");
+			SearchResult searchResult = connection.search(searchRequest);
+
+			for (SearchResultEntry entry : searchResult.getSearchEntries()) {
+				for (String role : entry.getAttributeValues("JoomlaGroup"))
+					if (role.equals("validatorAdmin"))
+						return true;
+			}
+			logger.debug(email + " is not administrator");
+			return false;
+		} catch (Exception e) {
+			logger.error("", e);
+			throw e;
+		} finally {
+			if (connection != null)
+				connection.close();
+		}
+	}
+
+	@Override
+	public boolean isUserActivated(String email) throws Exception {
+		LDAPConnection connection = null;
+		try {
+			logger.debug("checking if user " + email + " is activated");
+			connection = new LDAPConnection(ldapAddress, ldapPort, ldapUsername, ldapPassword);
+			Filter filter = Filter.createEqualityFilter("mail", email);
+			SearchRequest searchRequest = new SearchRequest(ldapUsersDN, SearchScope.SUB, filter, "JoomlaBlockUser");
+			SearchResult searchResult = connection.search(searchRequest);
+			for (SearchResultEntry entry : searchResult.getSearchEntries()) {
+				int val = entry.getAttributeValueAsInteger("JoomlaBlockUser");
+				if (val == 0)
+					return true;
+				else
+					return false;
+			}
+		} catch (Exception e) {
+			logger.error("", e);
+			throw e;
+		} finally {
+			if (connection != null)
+				connection.close();
+		}
+		return false;
+	}
+
+	@Override
+	public String prepareResetPassword(String email) throws Exception {
+		LDAPConnection connection = null;
+		try {
+			logger.debug("preparing reset password for user " + email);
+			connection = new LDAPConnection(ldapAddress, ldapPort, ldapUsername, ldapPassword);
+			Filter filter = Filter.createEqualityFilter("mail", email);
+			SearchRequest searchRequest = new SearchRequest(ldapUsersDN, SearchScope.SUB, filter, "uid");
+			SearchResult searchResult = connection.search(searchRequest);
+			String dn = null;
+			for (SearchResultEntry entry : searchResult.getSearchEntries()) {
+				dn = "uid=" + entry.getAttributeValue("uid") + "," + ldapUsersDN;
+			}
+			String uuid = UUID.randomUUID().toString();
+			Modification mod = new Modification(ModificationType.REPLACE, "employeeNumber", uuid);
+			connection.modify(dn, mod);
+			return uuid;
+		} catch (Exception e) {
+			logger.error("", e);
+			throw e;
+		} finally {
+			if (connection != null)
+				connection.close();
+		}
+	}
+
+	@Override
+	public void resetPassword(String uuid, String password) throws Exception {
+		LDAPConnection connection = null;
+		try {
+			connection = new LDAPConnection(ldapAddress, ldapPort, ldapUsername, ldapPassword);
+			Filter filter = Filter.createEqualityFilter("employeeNumber", uuid);
+			SearchRequest searchRequest = new SearchRequest(ldapUsersDN, SearchScope.SUB, filter, "uid");
+			SearchResult searchResult = connection.search(searchRequest);
+			String dn = null;
+			for (SearchResultEntry entry : searchResult.getSearchEntries()) {
+				dn = "uid=" + entry.getAttributeValue("uid") + "," + ldapUsersDN;
+			}
+			Modification mod1 = new Modification(ModificationType.REPLACE, "userPassword", Joomla15PasswordHash.create(password));
+			Modification mod2 = new Modification(ModificationType.REPLACE, "employeeNumber");
+			connection.modify(dn, mod1, mod2);
+		} catch (Exception e) {
+			logger.error("", e);
+			throw e;
+		} finally {
+			if (connection != null)
+				connection.close();
+		}
+	}
+
+	@Override
+	public boolean userExists(String email) throws Exception {
+		LDAPConnection connection = null;
+		try {
+			logger.debug("checking if user " + email + " exists in ldap");
+			connection = new LDAPConnection(ldapAddress, ldapPort, ldapUsername, ldapPassword);
+			Filter filter = Filter.createEqualityFilter("mail", email);
+			SearchRequest searchRequest = new SearchRequest(ldapUsersDN, SearchScope.SUB, filter, "mail");
+
+			SearchResult searchResult = connection.search(searchRequest);
+			if (!searchResult.getSearchEntries().isEmpty())
+				return true;
+
+			return false;
+		} catch (Exception e) {
+			logger.error("", e);
+			throw e;
+		} finally {
+			if (connection != null)
+				connection.close();
+		}
+	}
+
+	@Override
+	public boolean usernameExists(String username) throws Exception {
+		LDAPConnection connection = null;
+		try {
+			logger.debug("checking if user " + username + " exists in ldap");
+			connection = new LDAPConnection(ldapAddress, ldapPort, ldapUsername, ldapPassword);
+			Filter filter = Filter.createEqualityFilter("uid", username);
+			SearchRequest searchRequest = new SearchRequest(ldapUsersDN, SearchScope.SUB, filter, "uid");
+			SearchResult searchResult = connection.search(searchRequest);
+
+			if (!searchResult.getSearchEntries().isEmpty()) {
+				return true;
+			}
+
+			return false;
+		} catch (Exception e) {
+			logger.error("", e);
+			throw e;
+		} finally {
+			if (connection != null)
+				connection.close();
+		}
+	}
+
+	@Override
+	public String getEmailFromUsername(String username) throws Exception {
+		LDAPConnection connection = null;
+		try {
+			logger.debug("getting email for user " + username);
+			connection = new LDAPConnection(ldapAddress, ldapPort, ldapUsername, ldapPassword);
+			Filter filter = Filter.createEqualityFilter("uid", username);
+			SearchRequest searchRequest = new SearchRequest(ldapUsersDN, SearchScope.SUB, filter, "mail");
+			SearchResult searchResult = connection.search(searchRequest);
+			for (SearchResultEntry entry : searchResult.getSearchEntries()) {
+				return entry.getAttributeValue("mail");
+			}
+			return null;
+		} catch (Exception e) {
+			logger.error("", e);
+			throw e;
+		} finally {
+			if (connection != null)
+				connection.close();
+		}
+	}
+
+	public void setLdapPort(int ldapPort) {
+		this.ldapPort = ldapPort;
+	}
+
+	public void setLdapAddress(String ldapAddress) {
+		this.ldapAddress = ldapAddress;
+	}
+
+	public void setLdapUsername(String ldapUsername) {
+		this.ldapUsername = ldapUsername;
+	}
+
+	public void setLdapPassword(String ldapPassword) {
+		this.ldapPassword = ldapPassword;
+	}
+
+	public void setLdapUsersDN(String ldapUsersDN) {
+		this.ldapUsersDN = ldapUsersDN;
+	}
+}
+
+class Joomla15PasswordHash 
+{
+   public static boolean check(String passwd,String dbEntry) {
+      String hashed = "{MD5}"+Base64.encode(pack(Joomla15PasswordHash.md5(passwd)));
+      if(dbEntry.equals(hashed))
+    	  return true;
+      else
+    	  return false;
+   }
+
+   static Random _rnd;
+
+   public static String create(String passwd) {
+	   return "{MD5}"+Base64.encode(pack(Joomla15PasswordHash.md5(passwd)));
+   }
+
+   /** Takes the MD5 hash of a sequence of ASCII or LATIN1 characters,
+    *  and returns it as a 32-character lowercase hex string.
+    *
+    *  Equivalent to MySQL's MD5() function 
+    *  and to perl's Digest::MD5::md5_hex(),
+    *  and to PHP's md5().
+    *
+    *  Does no error-checking of the input,  but only uses the low 8 bits
+    *  from each input character.
+    */
+   public static String md5(String data) {
+      byte[] bdata = new byte[data.length()]; int i; byte[] hash;
+
+      for (i=0;i<data.length();i++) bdata[i]=(byte)(data.charAt(i)&0xff );
+
+      try {
+         MessageDigest md5er = MessageDigest.getInstance("MD5");
+         hash = md5er.digest(bdata);
+      } catch (GeneralSecurityException e) { throw new RuntimeException(e); }
+
+      StringBuffer r = new StringBuffer(32);
+      for (i=0;i<hash.length;i++) {
+         String x = Integer.toHexString(hash[i]&0xff);
+         if (x.length()<2) r.append("0");
+         r.append(x);
+      }
+      return r.toString();      
+   }
+   
+   public static byte[] pack(String md5) {
+	    byte[] bytes = new byte[16];
+	    int j = 0;
+	    for(int i=0; i < 31; i+=2) {
+	    	bytes[j] = (byte) Integer.parseInt(md5.charAt(i)+""+md5.charAt(i+1),16);
+	    	j++;
+	    }
+	    return bytes;
+	}
+}
+
Index: modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/java/eu/dnetlib/validator/admin/config/ValidatorAdminContextLoaderListener.java
===================================================================
--- modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/java/eu/dnetlib/validator/admin/config/ValidatorAdminContextLoaderListener.java	(nonexistent)
+++ modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/java/eu/dnetlib/validator/admin/config/ValidatorAdminContextLoaderListener.java	(revision 47450)
@@ -0,0 +1,86 @@
+package eu.dnetlib.validator.admin.config;
+
+import java.util.Properties;
+
+import javax.servlet.ServletContext;
+
+import org.apache.commons.lang.ArrayUtils;
+import org.apache.log4j.Logger;
+import org.springframework.beans.BeansException;
+import org.springframework.context.support.ClassPathXmlApplicationContext;
+import org.springframework.web.context.ContextLoaderListener;
+import org.springframework.web.context.WebApplicationContext;
+import org.springframework.web.context.support.XmlWebApplicationContext;
+
+public class ValidatorAdminContextLoaderListener extends ContextLoaderListener {
+	private static Logger logger = Logger.getLogger(ValidatorAdminContextLoaderListener.class);
+
+
+	public ValidatorAdminContextLoaderListener() {
+		super();
+	}
+
+	public ValidatorAdminContextLoaderListener(WebApplicationContext context) {
+		super(context);
+	}
+
+	@Override
+	protected WebApplicationContext createWebApplicationContext(
+			ServletContext servletContext)
+			throws BeansException {
+		logger.debug("Creating web application context");
+		Properties props = this.loadProperties();
+		String repoMode = props.getProperty("services.validator.mode.repo");
+		String userMode = props.getProperty("services.validator.mode.user");
+		Boolean standaloneMode = Boolean.parseBoolean(props.getProperty("services.validator.mode.standalone"));
+		
+		logger.debug("User mode: " + userMode);
+		logger.debug("Repo mode: " + repoMode);
+		logger.debug("Standalone mode: " + standaloneMode);
+//		logger.debug("Dnet workflow enabled: " + repoMode);
+		XmlWebApplicationContext ctx = new XmlWebApplicationContext();
+
+		ctx.setServletContext(servletContext);
+		
+		
+		String[] springContextCore = new String[] {
+				"classpath*:/eu/dnetlib/validator/admin/actions/springContext-validator-struts.xml",
+				"classpath*:/eu/dnetlib/validator/admin/api/springContext-validator-user-" + userMode + ".xml",
+				"classpath*:/eu/dnetlib/validator/admin/api/springContext-validator.xml",
+				"classpath*:/eu/dnetlib/validator/admin/config/springContext-validator-config.xml",
+				"classpath*:/eu/dnetlib/validator/commons/dao/springContext-*.xml",
+				"classpath*:/eu/dnetlib/validator/commons/email/springContext-*.xml"
+		};
+		
+		String[] springContextForIS = new String[] {
+		};
+		
+		if (standaloneMode) {
+			logger.debug("Loading contexts for standalone mode");
+			ctx.setConfigLocations(springContextCore);
+		} else {
+			logger.debug("Loading contexts for dnet");
+			ctx.setConfigLocations((String[])ArrayUtils.addAll(springContextCore,springContextForIS));
+		}
+		
+		ctx.refresh();
+		
+		logger.debug("done");
+		
+		return ctx;
+	}	
+	
+	private Properties loadProperties() {
+		ClassPathXmlApplicationContext ctx = new ClassPathXmlApplicationContext(new String[] {
+				"classpath*:/eu/dnetlib/validator/admin/config/springContext-validator-config.xml"
+		});
+		
+		CascadingPropertyLoader pLoader = (CascadingPropertyLoader) ctx.getBean("propertyLoader");
+		Properties props = pLoader.getProperties();
+		
+		ctx.destroy();
+		ctx.close();
+		return props;
+	}
+
+}
Index: modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/java/eu/dnetlib/validator/admin/config/Constants.java
===================================================================
--- modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/java/eu/dnetlib/validator/admin/config/Constants.java	(nonexistent)
+++ modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/java/eu/dnetlib/validator/admin/config/Constants.java	(revision 47450)
@@ -0,0 +1,12 @@
+package eu.dnetlib.validator.admin.config;
+
+
+public class Constants {
+	
+	public static String loggedInField = "LOGGED_IN_FIELD";
+
+	public static final String MODE_LOCAL = "local";
+	public static final String MODE_DNET = "dnet";
+	public static final String MODE_LDAP = "ldap";
+
+}
Index: modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/java/eu/dnetlib/validator/admin/constants/TypesAndTableNames.java
===================================================================
--- modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/java/eu/dnetlib/validator/admin/constants/TypesAndTableNames.java	(nonexistent)
+++ modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/java/eu/dnetlib/validator/admin/constants/TypesAndTableNames.java	(revision 47450)
@@ -0,0 +1,102 @@
+package eu.dnetlib.validator.admin.constants;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.Set;
+
+import org.apache.log4j.Logger;
+
+public class TypesAndTableNames {
+
+	static private Logger logger = Logger.getLogger(TypesAndTableNames.class);
+	
+	static HashMap<String, String> ruleTypeToTableNames;
+	static HashMap<String, String> crisEntities;
+	static public List<String> deployEnvironments;
+	static public HashMap<String, String> jobTypes;
+	
+	static {
+		logger.debug("initializing the TableNames map");
+		ruleTypeToTableNames = new HashMap<String, String>();
+		
+		ruleTypeToTableNames.put("ChainRule", "chain_rule");
+		
+		//rules OAIPMH
+		ruleTypeToTableNames.put("OAIPMH Date Granularity", "oaipmhdategranularity_rule");
+		ruleTypeToTableNames.put("OAIPMH Embargo Date Check", "oaipmhembargodate_rule");
+		ruleTypeToTableNames.put("OAIPMH Incremental Record Delivery", "oaipmhincrementalrecorddelivery_rule");
+		ruleTypeToTableNames.put("OAIPMH Resumption Token Duration Check", "oaipmhresumptiontokenduration_rule");
+
+		//rules TEXT
+//		ruleTypeToTableNames.put("TEXT Regular Expression", "textreguralexpresion_rule");
+//		ruleTypeToTableNames.put("TEXT", "text_rule");
+//		ruleTypeToTableNames.put("TEXT Vocabulary","textvocabulary_rule");		
+
+		//rules XML
+//		names.put(XMLRule.class.getName(),"xml_rule");
+		ruleTypeToTableNames.put("XML Cardinality", "xmlcardinality_rule");
+		ruleTypeToTableNames.put("XML Field Exists", "xmlfieldexist_rule");
+		ruleTypeToTableNames.put("XML Not Confused Fields", "xmlnotconfusedfields_rule");
+		ruleTypeToTableNames.put("XML Regular Expression", "xmlregularexpression_rule");
+		ruleTypeToTableNames.put("XML Valid Url", "xmlvalidurl_rule");
+		ruleTypeToTableNames.put("XML Vocabulary", "xmlvocabulary_rule");
+		ruleTypeToTableNames.put("XML Cris Class Vocabulary", "xmlcrisclassvocabulary_rule");
+		ruleTypeToTableNames.put("XML CRIS Referential Integrity Rule", "xmlcrisreferentialintegrity_rule");
+		
+		crisEntities = new HashMap<String, String>();
+		crisEntities.put("Publication", "openaire_cris_publications");
+		crisEntities.put("Person", "openaire_cris_persons");
+		crisEntities.put("Organisation", "openaire_cris_orgunits");
+		crisEntities.put("Project", "openaire_cris_projects" );
+		crisEntities.put("Funding", "openaire_cris_funding" );
+		crisEntities.put("Service", "openaire_cris_services");
+		crisEntities.put("Product", "openaire_cris_datasets");		
+		
+		jobTypes = new HashMap<String, String>();
+		jobTypes.put("usage", "OAI Usage");
+		jobTypes.put("content", "OAI Content");
+		
+		deployEnvironments = new ArrayList<String>();
+		deployEnvironments.add("openaire-production");
+		deployEnvironments.add("openaire-beta");
+		deployEnvironments.add("development");
+		deployEnvironments.add("lareferencia");
+		deployEnvironments.add("mincyt");
+		
+//		names.put(JobInfo.class.getName(), "jobs");
+//		names.put(OAIContentJob.class.getName(), "oai_content_job");
+//		names.put(OAIUsageJob.class.getName(), "oai_usage_job");
+
+	}
+	
+	static public String getSetOfEntity(String entity) {
+		return crisEntities.get(entity);
+	}
+	
+	public static HashMap<String, String> getCrisEntities() {
+		return crisEntities;
+	}
+	
+	
+
+	public static Set<String> getJobTypes() {
+		logger.debug("getting all types of jobs");
+		return new HashSet<String>(jobTypes.values());
+	}
+
+	public static void setJobTypes(HashMap<String, String> jobTypes) {
+		TypesAndTableNames.jobTypes = jobTypes;
+	}
+
+	static public Set<String> getRuleTypes() {
+		logger.debug("getting all types of rules");
+		return ruleTypeToTableNames.keySet();
+	}
+	
+	static public String getTableNameOfType(String type) {
+		logger.debug("getting tableName of rule type "+type);
+		return ruleTypeToTableNames.get(type);
+	}
+}
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/java/eu/dnetlib/validator/admin/config/CascadingPropertyLoader.java
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/java/eu/dnetlib/validator/admin/config/CascadingPropertyLoader.java	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/java/eu/dnetlib/validator/admin/config/CascadingPropertyLoader.java	(revision 47450)
@@ -0,0 +1,55 @@
+package eu.dnetlib.validator.admin.config;
+
+import java.util.Properties;
+
+import org.springframework.beans.BeansException;
+import org.springframework.beans.factory.InitializingBean;
+import org.springframework.beans.factory.config.ConfigurableListableBeanFactory;
+import org.springframework.beans.factory.config.PropertyPlaceholderConfigurer;
+
+/**
+ * CascadingPropertyLoader loads a number of property files and mergers them together, so that the last properties
+ * override the previous. It also supports property expansion like:
+ * 
+ * <code>
+ *   something = 1
+ *   somethingelse = 2
+ *   test = ${something}/${somethingelse}
+ *  </code>
+ * 
+ * <p>
+ * And if you override something to XX, then test will become XX/2
+ * </p>
+ * 
+ * 
+ * @author marko
+ * 
+ */
+public class CascadingPropertyLoader extends PropertyPlaceholderConfigurer implements InitializingBean {
+
+	private Properties properties;
+
+	public void afterPropertiesSet() throws Exception {
+		this.properties = mergeProperties();
+
+		// Convert the merged properties, if necessary.
+		convertProperties(this.properties);
+		
+		logger.debug("Properties: " + properties);
+	}
+
+	@Override
+	protected void processProperties(final ConfigurableListableBeanFactory beanFactoryToProcess, final Properties props) throws BeansException {
+		super.processProperties(beanFactoryToProcess, props);
+	}
+
+	public Properties getProperties() {
+		return properties;
+	}
+
+	public void setProperties(final Properties properties) {
+		super.setProperties(properties);
+		
+		this.properties = properties;
+	}
+}
\ No newline at end of file
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/java/eu/dnetlib/validator/admin/actions/login/ResetPassword.java
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/java/eu/dnetlib/validator/admin/actions/login/ResetPassword.java	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/java/eu/dnetlib/validator/admin/actions/login/ResetPassword.java	(revision 47450)
@@ -0,0 +1,70 @@
+package eu.dnetlib.validator.admin.actions.login;
+
+import org.apache.log4j.Logger;
+
+import com.opensymphony.xwork2.Action;
+
+import eu.dnetlib.validator.admin.actions.BaseValidatorAction;
+
+public class ResetPassword extends BaseValidatorAction {
+
+	private static final long serialVersionUID = -4565098546731325693L;
+	private Logger logger = Logger.getLogger(ResetPassword.class);
+	
+	private String password, repassword, securityCode;
+
+	public String execute() {
+		this.clearErrorsAndMessages();
+		try {
+			logger.debug("reseting password with security code " + securityCode);
+			this.getUserAPI().resetPassword(this.getSecurityCode(), this.getPassword());
+			this.addActionMessage(this.getText("resetPassword.success"));
+			return Action.SUCCESS;
+		} catch (Exception e) {
+			logger.error("error reseting password with security code " + securityCode, e);
+			this.addActionError(this.getText("generic.error"));
+			return "exception";
+		}
+	}
+
+	public void validate() {
+		this.clearErrors();
+		try {
+			if (this.getSecurityCode() == null || this.getSecurityCode().length() == 0) {
+				this.addFieldError("securityCode", this.getText("resetPassword.wrongSecurityCode"));
+				return;
+			}
+			if (!this.getPassword().equals(this.getRepassword())) {
+				this.addFieldError("password", this.getText("identicalPasswords"));
+				return;
+			}
+		} catch (Exception e) {
+			this.addActionError("");
+		}
+	}
+
+	public String getPassword() {
+		return password;
+	}
+
+	public void setPassword(String password) {
+		this.password = password;
+	}
+
+	public String getRepassword() {
+		return repassword;
+	}
+
+	public void setRepassword(String repassword) {
+		this.repassword = repassword;
+	}
+
+	public String getSecurityCode() {
+		return securityCode;
+	}
+
+	public void setSecurityCode(String securityCode) {
+		this.securityCode = securityCode;
+	}
+
+}
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/java/eu/dnetlib/validator/admin/actions/jobs/RegistrationsReport.java
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/java/eu/dnetlib/validator/admin/actions/jobs/RegistrationsReport.java	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/java/eu/dnetlib/validator/admin/actions/jobs/RegistrationsReport.java	(revision 47450)
@@ -0,0 +1,87 @@
+package eu.dnetlib.validator.admin.actions.jobs;
+
+import org.apache.log4j.Logger;
+
+import com.opensymphony.xwork2.Action;
+
+import eu.dnetlib.validator.admin.actions.BaseValidatorAction;
+import eu.dnetlib.validator.admin.api.ValidatorAdminException;
+
+public class RegistrationsReport extends BaseValidatorAction {
+
+	private static final long serialVersionUID = -1868055729316139461L;
+	private static final Logger logger = Logger.getLogger(RegistrationsReport.class);
+	private String dateFrom = null;
+	private String dateTo = null;
+	private String mode, month;
+	private int year;
+
+	public String execute() {
+		this.clearErrorsAndMessages();
+		try {
+			
+			int monthInt = Integer.parseInt(month.split("-")[1]);
+			String monthStr = month.split("-")[0];
+			dateFrom = new String("YYYY-MM-01").replaceFirst("MM", Integer.toString(monthInt)).replaceFirst("YYYY", Integer.toString(year));
+			if (monthInt != 12)
+				dateTo = new String("YYYY-MM-01").replaceFirst("MM", Integer.toString(monthInt+1)).replaceFirst("YYYY", Integer.toString(year));
+			else
+				dateTo = new String("YYYY-MM-01").replaceFirst("MM", "1").replaceFirst("YYYY", Integer.toString(year+1));
+			this.getValidatorAdminAPI().sendRegistrationsReport(dateFrom, dateTo, monthStr, Integer.toString(year));
+		} catch (ValidatorAdminException e) {
+			logger.error("Error deleting old jobs", e);
+			this.addActionError(this.getText("generic.error"));
+			reportException(e);
+			return "input-problem";
+		}
+		this.addActionMessage(this.getText("manageJobs.sendReports.success"));
+		
+		return Action.SUCCESS;
+	}
+	
+
+	public void validate() {
+		this.clearErrors();
+	}
+
+	public String getDateFrom() {
+		return dateFrom;
+	}
+
+	public void setDateFrom(String dateFrom) {
+		this.dateFrom = dateFrom;
+	}
+
+	public String getDateTo() {
+		return dateTo;
+	}
+
+	public void setDateTo(String dateTo) {
+		this.dateTo = dateTo;
+	}
+
+	public String getMode() {
+		return mode;
+	}
+
+	public void setMode(String mode) {
+		this.mode = mode;
+	}
+
+	public String getMonth() {
+		return month;
+	}
+
+	public void setMonth(String month) {
+		this.month = month;
+	}
+
+	public int getYear() {
+		return year;
+	}
+
+	public void setYear(int year) {
+		this.year = year;
+	}
+	
+}
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/java/eu/dnetlib/validator/admin/constants/fielddetails/FieldDetails.java
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/java/eu/dnetlib/validator/admin/constants/fielddetails/FieldDetails.java	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/java/eu/dnetlib/validator/admin/constants/fielddetails/FieldDetails.java	(revision 47450)
@@ -0,0 +1,32 @@
+package eu.dnetlib.validator.admin.constants.fielddetails;
+
+public class FieldDetails {
+
+	private String tableName;
+	private String fieldName;
+	// true if the user must provide a value for this field when adding a new record in the table
+	private boolean forDet;
+	
+	public String getTableName() {
+		return tableName;
+	}
+	public void setTableName(String tableName) {
+		this.tableName = tableName;
+	}
+	public String getFieldName() {
+		return fieldName;
+	}
+	public void setFieldName(String fieldName) {
+		this.fieldName = fieldName;
+	}
+	public boolean isForDet() {
+		return forDet;
+	}
+	public void setForDet(boolean forDet) {
+		this.forDet = forDet;
+	}
+	
+	public String getBundleName() {
+		return this.tableName+"."+this.fieldName;
+	}
+}
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/resources/eu/dnetlib/validator/admin/api/emailTeplate.vm
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/resources/eu/dnetlib/validator/admin/api/emailTeplate.vm	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/resources/eu/dnetlib/validator/admin/api/emailTeplate.vm	(revision 47450)
@@ -0,0 +1,20 @@
+Greetings,
+
+The unsuccessful registration attempts during $month
+were the following (datasource Name, base URL, contact mail, compliance level):
+
+#foreach( $datasource in $failedJobs )
+$datasource.name, $datasource.baseUrl, $datasource.email, $datasource.compliance
+#end
+$noneFailed
+
+The successful ones were the following:
+
+#foreach( $datasource in $passedJobs )
+$datasource.name, $datasource.baseUrl, $datasource.email, $datasource.compliance
+#end
+$nonePassed
+
+Regards,
+Validator's administrator
+
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/resources/eu/dnetlib/validator/admin/api/error_messages.txt
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/resources/eu/dnetlib/validator/admin/api/error_messages.txt	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/resources/eu/dnetlib/validator/admin/api/error_messages.txt	(revision 47450)
@@ -0,0 +1,28 @@
+error.parametersMissing.ruleId=Rule id must be specified in the parameters given
+error.parametersMissing.jobId=Job id must be specified in the parameters given
+error.badParameter.idNotNumerical=The id was not numerical
+error.badParameter.unknownType=The type specified is incorrect
+rules.name.error.message1=A value must be defined for the field name
+rules.description.error.message1=A value must be defined for the field description
+rules.type.error.message1=A value must be defined for the field type
+rules.mandatory.error.message1=A value must be defined for the field mandatory
+rules.success.error.message1=A value must be defined for the field success
+rules.success.error.message2=First character for success must be one of =, > or <
+rules.success.error.message3=Field success must contain only numerical characters after the first character
+rules.weight.error.message1=Value of field weight must be numerical
+rules.provider_information.error.message1=A value must be specified for the provider information field
+rules.job_type.error.message1=Job type must be one of the available types
+rules.job_type.error.message2=A job type must be specified for this rule
+cardinality_rule.greater_than.error.message1=Value of field 'greater than' must be numerical
+cardinality_rule.less_than.error.message2=Less and Greater cannot be both without value
+cardinality_rule.less_than.error.message1=Value of field 'less than' must be numerical
+NotConfusedFields_Rule.field1.error.message1=Fields 'field1' and 'field2' must both have a value
+NotConfusedFields_Rule.field1.error.message2=Fields 'field1' and 'field2' must have a different value
+RegularExpression_Rule.regular_expression.error.message1=Field 'regular expression' must have a value
+RetrievableResource_Rule.max_depth.error.message1=Field 'max_depth' must have a numerical value
+Vocabulary_Rule.words.error.message1=A value must be defined for the 'words' field
+OAI_Content_Job.records.error.message1=Field 'records' cannot be empty
+OAI_Content_Job.records.error.message2=At least one record must be used for the validation
+OAI_Content_Job.records.error.message3=Value of field 'records' must be numerical
+OAI_Content_Job.random.error.message1=Value of field 'random' must be boolean (true or false)
+OAI_Content_Job.base_url.error.message1=Value of field 'base url' doesn't seem to be a valid url adress
\ No newline at end of file
Index: modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/java/eu/dnetlib/validator/admin/constants/FieldsAndDetails.java
===================================================================
--- modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/java/eu/dnetlib/validator/admin/constants/FieldsAndDetails.java	(nonexistent)
+++ modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/java/eu/dnetlib/validator/admin/constants/FieldsAndDetails.java	(revision 47450)
@@ -0,0 +1,61 @@
+package eu.dnetlib.validator.admin.constants;
+
+import java.io.BufferedReader;
+import java.io.InputStreamReader;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+import org.apache.log4j.Logger;
+
+import eu.dnetlib.validator.admin.constants.fielddetails.FieldDetails;
+
+public class FieldsAndDetails {
+
+	static private Map<String, List<FieldDetails>> map;
+	private static Logger logger = Logger.getLogger(FieldsAndDetails.class);
+
+	static {
+		logger.debug("initializing map of FieldsAndDetails");
+		map = new HashMap<String, List<FieldDetails>>();
+		BufferedReader br = new BufferedReader(
+				new InputStreamReader(
+						FieldsAndDetails.class
+								.getResourceAsStream("/eu/dnetlib/validator/admin/constants/fieldDetails.txt")));
+		String line;
+		try {
+			while ((line = br.readLine()) != null) {
+				List<FieldDetails> lfd = new ArrayList<FieldDetails>();
+				String tableName = line.trim();
+				while ((line = br.readLine()) != null) {
+					if (line.trim().equals(""))
+						break;
+					String[] args = line.split(" ");
+					FieldDetails details = new FieldDetails();
+					details.setTableName(tableName);
+					details.setFieldName(args[0].trim());
+					details.setForDet(Boolean.parseBoolean(args[1].trim()
+							.toLowerCase()));
+					lfd.add(details);
+				}
+				map.put(tableName.toLowerCase(), lfd);
+			}
+		} catch (Exception e) {
+			logger.error("Error initialiazing map of FieldsAndDetails", e);
+		}
+	}
+	
+	static public List<FieldDetails> getFieldsAndDetails(String tablename) {
+		logger.debug("getting fielddetails of table "+tablename);
+		if(tablename != null) {
+			tablename = tablename.toLowerCase();
+			List<FieldDetails> ret = map.get(tablename);
+			if(ret == null) {
+				ret = map.get(TypesAndTableNames.getTableNameOfType(tablename));
+			}
+			return ret;
+		}
+		return null;
+	}
+}
Index: modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/resources/eu/dnetlib/validator/admin/api/emailTeplate.vm
===================================================================
--- modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/resources/eu/dnetlib/validator/admin/api/emailTeplate.vm	(nonexistent)
+++ modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/resources/eu/dnetlib/validator/admin/api/emailTeplate.vm	(revision 47450)
@@ -0,0 +1,20 @@
+Greetings,
+
+The unsuccessful registration attempts during $month
+were the following (datasource Name, base URL, contact mail, compliance level):
+
+#foreach( $datasource in $failedJobs )
+$datasource.name, $datasource.baseUrl, $datasource.email, $datasource.compliance
+#end
+$noneFailed
+
+The successful ones were the following:
+
+#foreach( $datasource in $passedJobs )
+$datasource.name, $datasource.baseUrl, $datasource.email, $datasource.compliance
+#end
+$nonePassed
+
+Regards,
+Validator's administrator
+
Index: modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/resources/eu/dnetlib/validator/admin/api/emailTeplateOld.vm
===================================================================
--- modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/resources/eu/dnetlib/validator/admin/api/emailTeplateOld.vm	(nonexistent)
+++ modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/resources/eu/dnetlib/validator/admin/api/emailTeplateOld.vm	(revision 47450)
@@ -0,0 +1,20 @@
+Greetings,
+
+The unsuccessful registration attempts during $month
+were the following (base URL, contact mail, compliance level):
+
+#foreach( $datasource in $failedJobs )
+$datasource.baseUrl, $datasource.email, $datasource.compliance
+#end
+$noneFailed
+
+The successful ones were the following:
+
+#foreach( $datasource in $passedJobs )
+$datasource.baseUrl, $datasource.email, $datasource.compliance
+#end
+$nonePassed
+
+Regards,
+Validator's administrator
+
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/java/eu/dnetlib/validator/admin/actions/rulesets/GetRuleSets.java
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/java/eu/dnetlib/validator/admin/actions/rulesets/GetRuleSets.java	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/java/eu/dnetlib/validator/admin/actions/rulesets/GetRuleSets.java	(revision 47450)
@@ -0,0 +1,39 @@
+package eu.dnetlib.validator.admin.actions.rulesets;
+
+import java.util.List;
+
+import org.apache.log4j.Logger;
+
+import com.opensymphony.xwork2.Action;
+
+import eu.dnetlib.domain.functionality.validator.RuleSet;
+import eu.dnetlib.validator.admin.actions.BaseValidatorAction;
+
+public class GetRuleSets extends BaseValidatorAction {
+
+	private static final long serialVersionUID = -5220242100308666597L;
+	private List<RuleSet> sets;
+	private static final Logger logger = Logger.getLogger(GetRuleSets.class);
+
+	public List<RuleSet> getSets() {
+		return sets;
+	}
+
+	public void setSets(List<RuleSet> sets) {
+		this.sets = sets;
+	}
+
+	public String execute() throws Exception {
+		this.clearErrorsAndMessages();
+		try {
+			logger.debug("getting all rule sets");
+			sets = this.getValidatorAdminAPI().getRuleSets();
+			return Action.SUCCESS;
+		} catch (Exception e) {
+			logger.error("Error getting rule sets", e);
+			this.addActionError(this.getText("generic.error"));
+			reportException(e);
+			return "exception";
+		}
+	}
+}
\ No newline at end of file
Index: modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/resources/eu/dnetlib/validator/admin/api/springContext-validator-user-local.xml
===================================================================
--- modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/resources/eu/dnetlib/validator/admin/api/springContext-validator-user-local.xml	(nonexistent)
+++ modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/resources/eu/dnetlib/validator/admin/api/springContext-validator-user-local.xml	(revision 47450)
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<beans xmlns="http://www.springframework.org/schema/beans"
+	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+	xmlns:context="http://www.springframework.org/schema/context"
+	xmlns:cxf="http://cxf.apache.org/core"
+	xmlns:jaxws="http://cxf.apache.org/jaxws"
+	xmlns:p="http://http://www.springframework.org/schema/p"
+	xmlns:template="http://dnetlib.eu/springbeans/template"
+	xmlns:t="http://dnetlib.eu/springbeans/t"
+	xmlns:tx="http://www.springframework.org/schema/tx"
+	
+	xsi:schemaLocation="
+		http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.0.xsd
+        http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.0.xsd
+        http://cxf.apache.org/core http://cxf.apache.org/schemas/core.xsd
+        http://cxf.apache.org/jaxws http://cxf.apache.org/schemas/jaxws.xsd
+        http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-4.0.xsd
+        http://dnetlib.eu/springbeans/template http://dnetlib.eu/springbeans/template.xsd"
+	default-autowire="no">
+
+	<bean id="userAPI" class="eu.dnetlib.validator.admin.api.impls.UserApiLocal" lazy-init="true">
+		<property name="usersDao" ref="usersDao" />
+	</bean>
+	
+	<tx:annotation-driven transaction-manager="txManager" />
+	
+</beans>
\ No newline at end of file
Index: modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/resources/eu/dnetlib/validator/admin/api/error_messages.txt
===================================================================
--- modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/resources/eu/dnetlib/validator/admin/api/error_messages.txt	(nonexistent)
+++ modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/resources/eu/dnetlib/validator/admin/api/error_messages.txt	(revision 47450)
@@ -0,0 +1,28 @@
+error.parametersMissing.ruleId=Rule id must be specified in the parameters given
+error.parametersMissing.jobId=Job id must be specified in the parameters given
+error.badParameter.idNotNumerical=The id was not numerical
+error.badParameter.unknownType=The type specified is incorrect
+rules.name.error.message1=A value must be defined for the field name
+rules.description.error.message1=A value must be defined for the field description
+rules.type.error.message1=A value must be defined for the field type
+rules.mandatory.error.message1=A value must be defined for the field mandatory
+rules.success.error.message1=A value must be defined for the field success
+rules.success.error.message2=First character for success must be one of =, > or <
+rules.success.error.message3=Field success must contain only numerical characters after the first character
+rules.weight.error.message1=Value of field weight must be numerical
+rules.provider_information.error.message1=A value must be specified for the provider information field
+rules.job_type.error.message1=Job type must be one of the available types
+rules.job_type.error.message2=A job type must be specified for this rule
+cardinality_rule.greater_than.error.message1=Value of field 'greater than' must be numerical
+cardinality_rule.less_than.error.message2=Less and Greater cannot be both without value
+cardinality_rule.less_than.error.message1=Value of field 'less than' must be numerical
+NotConfusedFields_Rule.field1.error.message1=Fields 'field1' and 'field2' must both have a value
+NotConfusedFields_Rule.field1.error.message2=Fields 'field1' and 'field2' must have a different value
+RegularExpression_Rule.regular_expression.error.message1=Field 'regular expression' must have a value
+RetrievableResource_Rule.max_depth.error.message1=Field 'max_depth' must have a numerical value
+Vocabulary_Rule.words.error.message1=A value must be defined for the 'words' field
+OAI_Content_Job.records.error.message1=Field 'records' cannot be empty
+OAI_Content_Job.records.error.message2=At least one record must be used for the validation
+OAI_Content_Job.records.error.message3=Value of field 'records' must be numerical
+OAI_Content_Job.random.error.message1=Value of field 'random' must be boolean (true or false)
+OAI_Content_Job.base_url.error.message1=Value of field 'base url' doesn't seem to be a valid url adress
\ No newline at end of file
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/java/eu/dnetlib/validator/admin/actions/rules/AddRule.java
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/java/eu/dnetlib/validator/admin/actions/rules/AddRule.java	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/java/eu/dnetlib/validator/admin/actions/rules/AddRule.java	(revision 47450)
@@ -0,0 +1,87 @@
+package eu.dnetlib.validator.admin.actions.rules;
+
+
+import org.apache.log4j.Logger;
+
+import com.opensymphony.xwork2.Action;
+
+import eu.dnetlib.domain.functionality.validator.Rule;
+import eu.dnetlib.validator.admin.actions.BaseValidatorAction;
+
+public class AddRule extends BaseValidatorAction {
+
+	private static final long serialVersionUID = -4636737264204104816L;
+	private String[] inputs;
+	private String type, jobType;
+	private boolean forCris;
+	private static final Logger logger = Logger.getLogger(AddRule.class);
+
+	public String execute() {
+		this.clearErrorsAndMessages();
+		try {
+			logger.debug("adding rule of type "+type+" using user inputs");
+			logger.debug("for cris: "+forCris);
+			logger.debug("jobType: "+ jobType);
+			Rule rule = new Rule();
+			rule.setType(type);
+			rule.setJob_type(jobType);
+			rule.setFor_cris(forCris);
+//			rule.setEntity_type(entityType);
+			String ret = this.getValidatorAdminAPI().storeRule(rule, inputs, true);
+			if (ret != null) {
+				this.addActionError(this.getText(ret));
+				return "input-problem";
+			}
+			
+			this.addActionMessage(this.getText("addRule.success"));
+			
+			return Action.SUCCESS;
+		} catch(Exception e) {
+			logger.error("Error adding rule", e);
+			this.addActionError(this.getText("generic.error"));
+			reportException(e);
+			return "exception";
+		}
+	}
+	
+	public String getJobType() {
+		return jobType;
+	}
+
+	public void setJobType(String jobType) {
+		this.jobType = jobType;
+	}
+
+	public boolean isForCris() {
+		return forCris;
+	}
+
+	public void setForCris(boolean forCris) {
+		this.forCris = forCris;
+	}
+
+//	public String getEntityType() {
+//		return entityType;
+//	}
+//
+//	public void setEntityType(String entityType) {
+//		this.entityType = entityType;
+//	}
+
+	public String getType() {
+		return type;
+	}
+
+	public void setType(String type) {
+		this.type = type;
+	}
+
+	public String[] getInputs() {
+		return inputs;
+	}
+
+	public void setInputs(String[] inputs) {
+		this.inputs = inputs;
+	}
+
+}
\ No newline at end of file
Index: modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/resources/eu/dnetlib/validator/admin/constants/fieldDetails.txt
===================================================================
--- modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/resources/eu/dnetlib/validator/admin/constants/fieldDetails.txt	(nonexistent)
+++ modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/resources/eu/dnetlib/validator/admin/constants/fieldDetails.txt	(revision 47450)
@@ -0,0 +1,102 @@
+rules
+id false
+name true
+description true
+type true
+mandatory true
+weight true
+visible false
+job_type true
+
+usage_rules
+provider_information true
+
+cris_rules
+cris_entity true
+
+cardinality_rule
+less_than true
+greater_than true
+	
+chain_rule
+type true 
+rule_1 true
+rule_2 true
+
+regularexpression_rule
+regexp true
+
+validurl_rule
+
+vocabulary_rule
+terms true
+terms_type true
+
+oaipmhdategranularity_rule
+base_url true
+
+oaipmhembargodate_rule
+
+oaipmhincrementalrecorddelivery_rule
+from true
+until true
+
+oaipmhresumptiontokenduration_rule
+duration true
+
+text_rule
+
+textvocabulary_rule
+terms true
+
+textreguralexpresion_rule
+regexp true
+
+xml_rule
+xpath true
+success true
+
+xmlcardinality_rule
+xpath true
+success true
+lt true
+gt true
+
+xmlfieldexist_rule
+xpath true
+success true
+
+xmlnotconfusedfields_rule
+xpath true
+success true
+fields true
+
+xmlregularexpression_rule
+xpath true
+success true
+regexp true
+
+xmlvalidurl_rule
+xpath true
+success true
+
+xmlvocabulary_rule
+xpath true
+success true
+terms true
+terms_type true
+
+xmlcrisclassvocabulary_rule
+xpath true
+scheme_id true
+success true
+terms true
+
+xmlcrisreferentialintegrity_rule
+xpath true
+entity_acronym true
+scheme_id true
+related_entity_xpath true
+related_entity_acronym true
+success true
+terms true
\ No newline at end of file
Index: modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/resources/struts.properties
===================================================================
--- modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/resources/struts.properties	(nonexistent)
+++ modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/resources/struts.properties	(revision 47450)
@@ -0,0 +1,6 @@
+struts.custom.i18n.resources=web-texts,web-error-texts,backend-errors,field-infos
+struts.ognl.allowStaticMethodAccess = true
+
+struts.xwork.chaining.copyErrors = true
+struts.xwork.chaining.copyFieldErrors = true
+struts.xwork.chaining.copyMessages = true
\ No newline at end of file
Index: modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/resources/struts.xml
===================================================================
--- modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/resources/struts.xml	(nonexistent)
+++ modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/resources/struts.xml	(revision 47450)
@@ -0,0 +1,219 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE struts PUBLIC
+	"-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
+	"http://struts.apache.org/dtds/struts-2.3.dtd">
+
+<struts>
+	<constant name="struts.action.excludePattern" value=".*services.*"/>
+	<package name="noAuthorization" namespace="/" extends="struts-default">
+		<default-action-ref name="welcome" />
+		
+		<global-results>
+			<result name="input">/jsps/info.jsp</result>
+			<result name="exception">/jsps/info.jsp</result>
+		</global-results>
+		
+		<action name="bugreporter" class="springManagedBugReporter">
+			<result>/jsps/info.jsp</result>
+		</action>
+		
+		<action name="welcome" class="springManagedDummy">
+			<result>/jsps/homepage.jsp</result>
+		</action>
+		
+		<action name="go2login" class="springManagedLoginPage">
+			<result>/jsps/login.jsp</result>
+			<result name="input" type="redirect">welcome</result>
+		</action>
+		
+		<action name="go2registration" class="springManagedDummy">
+			<result>/jsps/login.jsp</result>
+		</action>
+
+		<action name="Register" class="springManagedRegister">
+			<result>/jsps/info.jsp</result>
+			<result name="input">/jsps/login.jsp</result>
+		</action>
+
+		<action name="activateAccount" class="springManagedActivateAccount">
+			<result>/jsps/info.jsp</result>
+			<result name="input">/jsps/info.jsp</result>
+		</action>
+
+		<action name="Login" class="springManagedLogin">
+			<result type="redirect">${url}?${params}</result>
+			<result name="input">/jsps/login.jsp</result>
+			<result name="login" type="redirect">go2login</result>
+			<result name="welcome" type="redirect">welcome</result>
+		</action>
+		
+		<action name="portalLogin" class="springManagedPortalLogin">
+			<result>/jsps/homepage.jsp</result>
+			<result name="input">/jsps/login.jsp</result>
+		</action>
+
+		<action name="sendPassword" class="springManagedSendPassword">
+			<result>/jsps/info.jsp</result>
+			<result name="input">/jsps/forgotPassword.jsp</result>
+		</action>
+
+		<action name="resetPassword" class="springManagedResetPassword">
+			<result>/jsps/info.jsp</result>
+			<result name="input">/jsps/resetPassword.jsp</result>
+		</action>
+
+		<action name="logout" class="springManagedLogout">
+			<result>/jsps/homepage.jsp</result>
+		</action>
+		
+		<action name="score" class="springManagedScore">
+			<result>/jsps/score.jsp</result>
+		</action>
+		
+		<action name="help" class="springManagedHelp">
+			<result>/jsps/help.jsp</result>
+		</action>
+				
+		<action name="forgotPassword" class="springManagedForgotPassword">
+			<result>/jsps/forgotPassword.jsp</result>
+		</action>
+
+	</package>
+
+	<package name="needsAuthorization" namespace="/" extends="struts-default">
+
+		<interceptors>
+			<interceptor name="authenticationInterceptor" class="eu.dnetlib.validator.admin.actions.login.AuthenticationInterceptor" />
+			<interceptor-stack name="secureStack">
+				<interceptor-ref name="authenticationInterceptor" />
+				<interceptor-ref name="defaultStack" />
+			</interceptor-stack>
+		</interceptors>
+
+		<default-interceptor-ref name="secureStack" />
+
+		<global-results>
+			<result name="login">/jsps/login.jsp</result>
+			<result name="input-problem">/jsps/corneeded.jsp</result>
+			<result name="input">/jsps/info.jsp</result>
+			<result name="exception">/jsps/info.jsp</result>
+		</global-results>
+
+		<action name="curateDB" class="springManagedDatabaseCurator">
+			<result>/jsps/info.jsp</result>
+		</action>
+		
+		<action name="deleteJobs" class="springManagedDummy">
+			<result>/jsps/deleteJobs.jsp</result>
+		</action>
+		
+		<action name="sendRegistrationsReport" class="springManagedRegistrationsReport">
+			<result>/jsps/info.jsp</result>
+		</action>
+		
+		<action name="registrationsReport" class="springManagedDummy">
+			<result>/jsps/registrationsReport.jsp</result>
+		</action>
+		
+		<action name="getRulesForSet" class="springManagedGetRulesForSet">
+			<result>/jsps/createRuleSet.jsp</result>
+			<result name="deleted">/jsps/info.jsp</result>
+		</action>
+
+		<action name="getRuleSets" class="springManagedGetRuleSets">
+			<result>/jsps/chooseRuleSet.jsp</result>
+		</action>
+
+		<action name="populateRuleListForEdit" class="springManagedPopulateRuleList">
+			<result>/jsps/chooseRuleForEdit.jsp</result>
+		</action>
+
+		<action name="populateRuleListForClone" class="springManagedPopulateRuleList">
+			<result>/jsps/chooseRuleForClone.jsp</result>
+		</action>
+		
+		<action name="prepareEditRule" class="springManagedPrepareEditRule">
+			<result>/jsps/editRule.jsp</result>
+		</action>
+
+		<action name="editUser" class="springManagedEditUser" method="edit">
+			<result>/jsps/info.jsp</result>
+		</action>
+		
+		<action name="userDetails" class="springManagedEditUser">
+			<result>/jsps/editUser.jsp</result>
+		</action>
+		
+		<action name="populateList" class="springManagedPopulateList" method="populate">
+			<result>/jsps/rules.jsp</result>
+		</action>
+		
+		<action name="sendFeedback" class="springManagedSendFeedback">
+			<result>/jsps/info.jsp</result>
+		</action>
+		
+		<action name="feedback" class="springManagedFeedback">
+			<result>/jsps/feedback.jsp</result>
+		</action>
+		
+	</package>
+
+	<package name="needsAdminAuthorization" namespace="/"
+		extends="struts-default">
+
+		<interceptors>
+			<interceptor name="adminInterceptor" class="springManagedAdminInterceptor" />
+			<interceptor-stack name="secureStackA">
+				<interceptor-ref name="adminInterceptor" />
+				<interceptor-ref name="defaultStack" />
+			</interceptor-stack>
+		</interceptors>
+
+		<default-interceptor-ref name="secureStackA" />
+
+		<global-results>
+			<result name="login">/jsps/login.jsp</result>
+			<result name="input-problem">/jsps/corneeded.jsp</result>
+			<result name="input">/jsps/info.jsp</result>
+			<result name="exception">/jsps/info.jsp</result>
+		</global-results>
+
+		<action name="populateRuleCategories" class="springManagedPopulateRuleCategories">
+			<result>/jsps/chooseRuleCategory.jsp</result>
+		</action>
+
+		<action name="prepareAddRule" class="springManagedPrepareAddRule">
+			<result>/jsps/addRule.jsp</result>
+		</action>
+
+		<action name="addRule" class="springManagedAddRule">
+			<result>/jsps/info.jsp</result>
+		</action>
+
+		<action name="populateRuleList" class="springManagedPopulateRuleList">
+			<result>/jsps/deleteRule.jsp</result>
+		</action>
+
+		<action name="deleteRule" class="springManagedDeleteRule">
+			<result>/jsps/info.jsp</result>
+		</action>
+
+		<action name="editRule" class="springManagedEditRule">
+			<result>/jsps/info.jsp</result>
+		</action>
+
+		<action name="createRuleSet" class="springManagedCreateRuleSet">
+			<result>/jsps/info.jsp</result>
+			<result name="input">/jsps/corneeded.jsp</result>
+		</action>
+
+		<action name="getRuleSetsForDeletion" class="springManagedGetRuleSetsForDeletion">
+			<result>/jsps/chooseRuleSetForDeletion.jsp</result>
+		</action>
+
+		<action name="deleteRuleSet" class="springManagedDeleteRuleSet">
+			<result>/jsps/info.jsp</result>
+		</action>
+	
+	</package>
+</struts>
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/java/eu/dnetlib/validator/admin/actions/rules/PopulateRuleList.java
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/java/eu/dnetlib/validator/admin/actions/rules/PopulateRuleList.java	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/java/eu/dnetlib/validator/admin/actions/rules/PopulateRuleList.java	(revision 47450)
@@ -0,0 +1,42 @@
+package eu.dnetlib.validator.admin.actions.rules;
+
+import java.util.List;
+
+import org.apache.log4j.Logger;
+
+import com.opensymphony.xwork2.Action;
+
+import eu.dnetlib.domain.functionality.validator.Rule;
+import eu.dnetlib.validator.admin.actions.BaseValidatorAction;
+
+public class PopulateRuleList extends BaseValidatorAction {
+
+	private static final long serialVersionUID = -4035025449768015129L;
+	private List<Rule> rules;
+	private static final Logger logger = Logger.getLogger(PopulateRuleList.class);
+
+	public String execute() {
+		this.clearErrorsAndMessages();
+		try {
+			logger.debug("populating rule list");
+			rules = this.getValidatorAdminAPI().getAllRules();
+			return Action.SUCCESS;
+		}
+		catch(Exception e) {
+			logger.error("Error redirecting to job", e);
+			this.addActionError(this.getText("generic.error"));
+			reportException(e);
+			return "exception";
+		}
+	}
+
+	public List<Rule> getRules() {
+		return rules;
+	}
+
+	public void setRules(List<Rule> rules) {
+		this.rules = rules;
+	}
+	
+	
+}
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/java/eu/dnetlib/validator/admin/actions/DummyAction.java
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/java/eu/dnetlib/validator/admin/actions/DummyAction.java	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/java/eu/dnetlib/validator/admin/actions/DummyAction.java	(revision 47450)
@@ -0,0 +1,13 @@
+package eu.dnetlib.validator.admin.actions;
+
+import com.opensymphony.xwork2.Action;
+
+public class DummyAction extends BaseValidatorAction {
+
+	private static final long serialVersionUID = 4105253794510714980L;
+
+	public String execute() {
+		return Action.SUCCESS;
+		
+	}
+}
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/resources/web-texts.properties
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/resources/web-texts.properties	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/resources/web-texts.properties	(revision 47450)
@@ -0,0 +1,227 @@
+site.title = Validator Admin Panel
+site.slogan = Tools for validator administration
+
+general.unblock = Please make sure that you can accept mails from
+
+menu.home = Home
+menu.register = Join OpenAIRE
+menu.validate = Test Compatibility
+menu.account = My Account
+menu.about = Help
+menu.account.login = Sign In
+menu.account.registration.title = New User?
+menu.account.registration = Register Now!
+menu.account.logout = Logout
+menu.account.edit = My Account | 
+menu.about.feedback = Send Feedback
+menu.about.faq = FAQ
+menu.about.help = Help Guides
+menu.admin = Admin Panel
+
+homepage.welcome = Welcome to Validator Administration Panel!
+instructions.welcome = How to Join OpenAIRE
+instructions.message = <div class="entry"> <ol> <li> <b>Do you wish your repository or journal to be a part of OpenAIRE?</b> <ul> <li>If you are a new user, start by <a href="go2login.action">creating an account</a>.<br> If you have previously registered in the <a href="http://www.openaire.eu" target="_blank">main OpenAIRE portal</a>, you can use the same account. </li> </ul> <br> </li> <li> <b>Register your repository in <a class="external" href="http://www.opendoar.org/" target="_blank">OpenDOAR</a></b> <i>(this step does not apply for journals)</i> <ul> <li>OpenDOAR is an authoritative worldwide directory of academic open access repositories.</li> </ul> </li> <br> <li> <b>Make your repository/journal OpenAIRE compliant by implementing the <a href="http://guidelines.openaire.eu" class="external" target="_blank" >OpenAIRE Guidelines</a> </b> <ul> <li>If your repository/journal currently has no OpenAIRE records, you will need to create a test record as proof of correct implementation of the guidelines.</li> <li>Create an openaire set and insert your OpenAIRE records in it.</li> <li>If you used a test record, you will need to keep it until your repository/journal is successfully added as OpenAIRE compliant (step 5). Then you can safely delete it.</li> <li>You can find an example of an OpenAIRE compliant record <a href="jsps/manuals/example_record.txt" target="_blank">here</a>.</li> </ul> </li> <br> <li> <b>Test Compatibility</b> <ul> <li>After you have made some progress in implementing the guidelines you should <a href="populateRules.action">run a Compatibility test</a>.</li> <li>Enter the OAI-PMH base URL of your repository/journal and choose to test your repository against the OpenAIRE rule set. Aim for a score of 100, which will be sufficient to allow your repository to join OpenAIRE.</li> <li>After running the test you can <a href="prepareJobBrowsing.action">browse the results</a>. Please note that the results are updated periodically, and the whole test might take some time to finish.</li> </ul> </li> <br> <li> <b>Join OpenAIRE</b> <ul> <li>Now your repository/journal is ready to Join OpenAIRE!</li> <li><i>If you want to add a <b>literature repository</b></i>, click <a href="populateDoarList.action?mode=opendoar" target="_blank">here</a> and locate your repository. Add and correct any details in the form and click submit.<br> <i>If you want to add a <b>data repository</b></i>, click <a href="populateDoarList.action?mode=re3data" target="_blank">here</a> and locate your repository. Add and correct any details in the form and click submit.<br><i>If you want to add a <b>journal</b></i>, click <a href="prepareRepoRegistration.action?mode=journal" target="_blank">here</a>, fill in the form, and click submit.<br> <i>If you want to add an <b>aggregator</b></i>, click <a href="prepareRepoRegistration.action?mode=aggregator" target="_blank">here</a>, fill in the form, and click submit.</li> <li>After a short compatibility test against the OpenAIRE rule set, your repository will be ready to join OpenAIRE.</li> <li>An email will be sent to the repository administrator to confirm this request. Please make sure you have contacted them before registering.</li> <li>If the compatibility test does not succeed, you will be unable to join OpenAIRE until you correct all the errors that are found. Then you must re-submit your request (step 5).</li> </ul> </li> </ol> <p> For more information check the <a href="https://www.openaire.eu/support/faq#moofaqCat-19" target="_blank">FAQ</a> and our detailed <a href="jsps/manuals/user-manual.pdf" target="_blank">help guide</a>.<br> If you need further assistance please contact us through the <a href="https://www.openaire.eu/support/helpdesk" target="blank" class="help"> OpenAIRE Helpdesk</a>. </p><p><i>The validator is a customizable tool that may be installed and operated in various aggregating environments. <br/><a href="mailto:natalia@di.uoa.gr" class="icon-mail">Click here</a> to contact us and receive more information.</i></p> </div>
+homepage.admin.message = You have logged-in using an administrator email. For information on how to create new rules, new rule-sets, and for the various other functionalities, please refer to the <a href="jsps/manuals/administrator-manual.pdf">Administrator Manual</a>.
+homepage.message = You can view rules, rule-sets, job statistics and request changes to rules/rulesets.
+
+
+registration.title = User Registration
+registration.email = E-mail
+registration.password = Password
+registration.repassword = Re-enter password
+registration.successful = <span>An activation e-mail has been sent to the e-mail address you specified. Please follow the link included in that e-mail to activate your account.</span>
+registration.mail.subject = OpenAIRE Account Activation
+registration.mail.message = Please follow this link to activate your account
+registration.okAccountActivation = Account activation was successful! You can now log-in using your account details.
+registration.okAccountAlreadyActivation = Your account is already activated! You can log-in using your account details.
+registration.description = Register to use the OpenAIRE repository manager services
+registration.rememberme = Remember me
+registration.ldap.message = Your email address will be used for signing in the validator service.<br/>For the rest of the OpenAIRE services available through the openAIRE portal you will have to sign in using your username.
+registration.username = Username
+registration.username_email = Username/Email
+registration.firstName = First Name
+registration.lastName = Last Name
+registration.institution = Institution
+
+
+info.title = Information
+
+login.title = User Login
+login.forgotpassword = Forgot your password?
+login.notActivated = Your account has not been activated. Please check your mailbox again and follow the instructions found in the activation email.
+login.incorrectCreds = The credentials you entered are incorrect
+login.userNotExists = The username you specified doesn't have an associated account. You should consider registering it first.
+login.description = If you have an account
+login.overview = This service uses the same sign-in mechanism as the OpenAIRE portal so you can use the same credentials.
+
+forgotPassword.title = Reset Password
+forgotPassword.message = An e-mail will be sent to this address. Please follow the instructions found inside to reset your password.
+forgotPassword.mail.Subject = OpenAIRE Reset Password Request
+forgotPassword.mail.Body1 = To complete your password reset please follow this link
+forgotPassword.mail.Body2 = Security Code
+
+resetPassword.securityCode = Security Code
+resetPassword.securityCode.message = Enter the security code sent to you through mail.
+resetPassword.wrongSecurityCode = Security Code is incorrect
+resetPassword.success = You have successfully changed your password
+
+corneeded.title = Errors Found
+corneeded.back = Please use the "back" button of your browser to correct these errors
+
+manageJobs.deleteJobs.title = Delete Jobs
+manageJobs.deleteJobs.success = jobs deleted successfully
+manageJobs.deleteJobs.deleteOld = Delete jobs 
+manageJobs.deleteJobs.whatToDelete = What to delete
+
+manageJobs.sendReports.title = Send Registrations Report
+manageJobs.sendReports.selectDateFrom = Date from
+manageJobs.sendReports.selectDateTo = Date to
+manageJobs.sendReports.selectMonth = Select Month
+manageJobs.sendReports.selectYear = Select Year
+manageJobs.sendReports.success = Registrations Report sent successfully
+
+chooseRuleCategory.title = Choose Rule Category
+
+chooseRuleForEdit.title = Choose Rule
+chooseRuleForEdit.label = Choose Rule to Edit
+chooseRuleForEdit.label2 = Choose Rule to View
+chooseRuleForClone.label = Choose Rule to Clone
+
+addRule.title = Add Rule
+addRule.success = New rule has been added successfully
+addRule.uploadFile = Upload a File
+
+deleteRule.title = Delete Rule
+deleteRule.label = Choose Rule to Delete
+deleteRule.success = Rule has been deleted
+
+home.title = Homepage
+home.login = Sign In
+home.register = Register
+home.browseJobs = Browse Compatibility Test Results
+
+home.manageRules = Rules
+home.manageRules.addRule = Add New Rule
+home.manageRules.editRule = Edit Rule
+home.manageRules.cloneRule = Clone Rule
+home.manageRules.deleteRule = Delete Rule
+home.manageRules.viewRule = View Rule
+
+home.manageRulesets = RuleSets
+home.manageRulesets.createRuleSet = Create RuleSet
+home.manageRulesets.editRuleSet = Edit RuleSet
+home.manageRulesets.deleteRuleSet = Delete RuleSet
+home.manageRulesets.viewRuleSet = View RuleSet
+
+home.manageJobs = Jobs
+home.manageJobs.deleteJobs = Delete Jobs
+home.manageJobs.sendReport = Send Report
+home.manageJobs.viewStats = View Statistics
+
+home.manageUsers = Users
+home.manageUsers.addUser = Add User
+home.manageUsers.editUser = Edit User
+home.manageUsers.makeAdmin = Make Admin
+
+home.logout = Logout
+
+
+editRule.title = Edit Rule
+editRule.title2 = View Rule
+editRule.label = Choose Rule to Edit
+editRule.success = The rule was edited successfully
+
+editUser.title = Edit your account details
+editUser.fname = First Name
+editUser.lname = Last Name
+editUser.inst = Institution
+editUser.success = Your profile has been successfully updated
+
+createRuleSet.title = Create/Edit Rule Set
+createRuleSet.title2 = View Rule Set
+createRuleSet.name = Name
+createRuleSet.shortName = Short Name
+createRuleSet.visibility = Visibility
+createRuleSet.guidelinesAcronym = Guidelines Acronym
+createRuleSet.description = Description
+createRuleSet.rulesContent = Choose Content Rules
+createRuleSet.rulesUsage = Choose Usage Rules
+
+createRuleSet.success = The Set has been created successfully!
+createRuleSets.atLeastOneRule = You must select at least one rule to be added in this set
+
+chooseRuleSet.title = Choose Rule Set
+chooseRuleSet.label = Choose Rule Set
+
+deleteRuleSet.title = Delete Rule Set
+deleteRuleSet.success = Rule Set has been deleted successfully
+
+jobSummary.title = Test Summary
+jobSummary.successes = # Records
+jobSummary.errors = Success
+
+sidebar.toolbar = Toolbar
+sidebar.homepage = Homepage
+
+ruleSetInfo.name = Name
+ruleSetInfo.description = Description
+ruleSetInfo.jobType = Available in tests of type: 
+ruleSetInfo.message = Here you can find information on the rules contained in the chosen rule set. <div class="note"><h3 style="margin-left: -11px;">Definitions</h3><ul style="margin-left: -50px;"><li> Mandatory (M) = the field must always be present in the metadata record. An empty element is not allowed.</li> <li>Mandatory when applicable (MA) = when the value of the field can be obtained it must be present in the metadata record.</li> <li> Recommended (R) = the use of the field is recommended.</li> <li>Optional (O) = it is not important whether the element is used or not.</li></ul></div>
+ruleSetInfo.title = Rule Set Information
+ruleSetInfo.DRIVER = The DRIVER rule set checks the compatibility of your repository with the <a href="http://www.driver-support.eu/documents/DRIVER_Guidelines_v2_Final_2008-11-13.pdf">DRIVER guidelines</a>
+ruleSetInfo.openAIRE = The openAIRE rule set checks the compatibility of your repository with the <a href="http://www.openaire.eu/en/about-openaire/news-a-events/184-openaire-releases-version-10-of-the-openaire-guidelines.html">openAIRE guidelines</a>
+
+feedback.title = Send us your feedback
+feedback.message = Message
+feedback.reason = Reason
+feedback.loggedin = Please note that you must be logged-in to send a message using this form.
+feedback.success = Thank you for your message!
+
+help = Help
+help.addOaiContent.title = Adding an OAI-Content Validation
+help.addOaiContent.message = To add a new validation: <br>1. Select the base URL of the repository you want to validate. Please note that you need to have registered the repository first, and the administrator must have activated its registration.<br>2. Insert the number of records you want to validate.<br>3. Choose if you want the records to be selected randomly from those found in the repository, or in the order that the repository lists them.<br>4. If you want to validate only the records belonging to a particular set, insert the name of the set.<br>5. Either choose a predefined rule-set or manually choose the rules you want to apply.<br><br>You can view a rule set or an individual rule by using the toolbar on the left. For more information please refer to the <a href="jsps/manuals/user-manual.pdf">User Manual</a>, in the section <i>OAI Content Validation</i>.
+help.addOaiUsage.title = Adding an OAI-Usage Validation
+help.addOaiUsage.message = To add a new validation: <br>1. Select the base URL of the repository you want to validate. Please note that you need to have registered the repository first, and the administrator must have activated its registration.<br>2. Either choose a predefined rule-set or manually choose the rules you want to apply.<br><br>You can view a rule set or an individual rule by using the toolbar on the left. For more information please refer to the <a href="jsps/manuals/user-manual.pdf">User Manual</a>, in the section <i>OAI Usage Validation</i>.
+help.addRule.title = Adding a New Rule
+help.addRule.message =
+help.browseJobs.title = Browsing Validations
+help.browseJobs.message = Here you can browse all the past and current validations you have submitted. Please note that the results of an ongoing validation are not update in real-time, but only after the validation has finished its execution completely. To see a summary of the validation click on <i>Show Summary</i>. If you want more details about each task that was executed, you may click on <i>Show Details</i> though this is generally not neccessary. For more information please refer to the <a href="jsps/manuals/user-manual.pdf">User Manual</a>, in the section <i>Browsing Validations</i>.
+help.chooseJobCategory.title = Choosing a Validation Category
+help.chooseJobCategory.message = 
+help.chooseRuleCategory.title = Choosing a Rule Category
+help.chooseRuleCategory.message =
+help.chooseRuleCategory.type.title = Rule Type
+help.chooseRuleCategory.type.message =
+help.chooseRuleForEdit.title = Choosing a Rule
+help.chooseRuleForEdit.message =
+help.chooseRuleSet.title = Choosing a Rule Set
+help.chooseRuleSet.message =
+help.chooseRuleSetForDeletion.title = Choosing a Rule Set
+help.chooseRuleSetForDeletion.message =
+help.createRuleSet.title = Viewing a Rule Set
+help.createRuleSet.message = You can view the <i>name</i> of the Rule Set, as well as the rules that it contains (the ones with a blue background).
+help.deleteRule.title = Deleting a Rule
+help.deleteRule.message =
+help.editRule.title = Viewing a Rule
+help.editRule.message = When you view a rule you will be presented with many fields describing its functionality. For general purposes, the fields you must focus on are <i>name</i> and <i>description</i>. If you would like to find out what the rest of the fields mean, you must refer to the <a href="jsps/manuals/administrator-manual.pdf">administrator manual</a>.
+help.jobDetails.title = Viewing the Details of a Validation
+help.jobDetails.message = Here you can review details about each task of a validation. Each row refers to a certain task and you can see on which rule was used, which record it was applied on and if it was successful or not. Please note that retrieving the details of a validation can be a time-consuming process for large validations, and viewing a validation summary is generally sufficient. For more information please refer to the <a href="jsps/manuals/user-manual.pdf">User Manual</a>, in the section <i>Viewing Validation Details</i>.
+help.jobSummary.title = Viewing the Summary of a Validation
+help.jobSummary.message = Here you can review a summary of the validation results. Each row refers to a certain validation rule and you can see how many of the records were successfully validated. For the records that did not validate successfully, links are provided to their oai-dc metadata representation. For more information please refer to the <a href="jsps/manuals/user-manual.pdf">User Manual</a>, in the section <i>Viewing a Validation Summary</i>. 
+help.login.title = Logging in
+help.login.message =
+help.registration.title = Registering
+help.registration.message =
+help.repoRegistration.title = Registering a Repository
+help.repoRegistration.message = Before you can start a validation, you have to register the repository you want to validate (unless it is already registered by someone else). To do this, you must fill in it\''s base URL. Automatically an e-mail will be send to the repository\''s administrator containing an activation link. As soon as the administrator activates the registration, you will be able to start validations for this repository.
+help.resetPassword.title = Reseting your Password
+help.resetPassword.message =
+help.generic = <p>For help adding your repository/journal in OpenAIRE, please follow <a href="help.action">these instructions</a></p><p>For more advanced uses, you can find detailed information and step-by-step guides in the <a class="download" href="jsps/manuals/user-manual.pdf">User Manual</a></p><p>&nbsp;</p><p><i>The validator is a customizable tool that may be installed and operated in various aggregating environments. <br/><a href="mailto:natalia@di.uoa.gr" class="icon-mail">Click here</a> to contact us and receive more information.</i></p>
+help.newvalidation =<p><h3>Select repository/journal</h3> Select from the list, or enter the base OAI URL of the repository/journal. The repository''s/journal''s published sets are exposed in a later stage and you may select one for the compatibility tests.  </p> <p><h3>Select guidelines</h3> You may apply two types of compatibility tests on your repository: <ul style="text-aling:left"> <li>Content: specific to the content/format of the dc fields</li> <li>Usage: specific to the implementation of OAI-PMH</li> </ul> You may select from a predifined set of rules (OpenAIRE for Literature Repositories, OpenAIRE for Data Archives) or customize them according to your needs.  </p> <p><h3>Select parameters</h3> You may define an upper limit on the # of records tested. This is highly recommended for first time users, or when re-checking after the implementation of automated changes.  </p> <p> Select one of the repository''s/journal''s exposed sets.  </p><p> You may also group your results by a specific field. This is quite useful when validating an aggregator and you know in advance which is the field that distinguished among data sources. </p><p>For further assistance please contact the <a href="https://www.openaire.eu/support/helpdesk" target="_blank" class="external">OpenAIRE helpdesk</a>.</p>
+help.browsevalidations = <div class="download"><a href="jsps/manuals/user-manual.pdf" target="blank">Instructions manual</a></div> <p> <strong>TYPE:</strong> Content or Usage<br/> <strong>STATUS: </strong>Working / Stopped / Finished<br/> <strong>SCORE: </strong> <a href="score.action">click here</a> to find more<br/> <strong>SUBMITTED: </strong>time of submission<br/> <strong>DURATION: </strong>time test took to finish<br/> <strong>REPOSITORY: </strong>tested repository/journal<br/> <strong>GUIDELINES: </strong>guidelines used for testing<br/> <strong>REPORTS: </strong>comprehensive summary of the compatibility test results<br/> </p> <p>For further assistance please contact the <a href="https://www.openaire.eu/support/helpdesk" target="_blank" class="external">OpenAIRE helpdesk</a>.</p>
+help.jobsummary= <div class="download"><a href="jsps/manuals/user-manual.pdf" target="_blank">Instructions manual</a></div> <p>For further assistance please contact the <a href="https://www.openaire.eu/support/helpdesk" target="_blank" class="external">OpenAIRE helpdesk</a>.</p>
+help.registerRepo =  <p>Use the form on the right to add your repository or journal in OpenAIRE. If you want to find more information about this process <a href="jsps/manuals/user-manual.pdf" target="_blank">click here</a>.</p> <div class="alert">The official repository/journal administrator (his/her email address being retrieved from the OAI-PMH verb <b>Identify</b>) will be contacted and informed about registration request. So please make sure that you are either this person or have access to the email address, or that you have notified them.</div> For any problems or questions please contact the <a href="https://www.openaire.eu/support/helpdesk" target="_blank" class="external">OpenAIRE helpdesk</a>.
+help.chooseRepoForEdit = <p>You have access to edit one of the following repositories/journals listed on the right.</p> <p>For any problems or questions please contact the <a href="https://www.openaire.eu/support/helpdesk" target="_blank" class="external">OpenAIRE helpdesk</a>.</p>
+help.editRepoDnet = <p>Use the form on the right to update the repository/journal information.</p> <p>For any problems or questions please contact the <a href="https://www.openaire.eu/support/helpdesk" target="_blank" class="external">OpenAIRE helpdesk</a>.</p>
+help.admin=<div class="download"> For more information read our detailed <a href="jsps/manuals/administrator-manual.pdf" target="_blank">help guide</a>.</div>
+footer.text = &copy; 2010&nbsp;-&nbsp;2015 OpenAIRE
\ No newline at end of file
Index: modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/deleteJobs.jsp
===================================================================
--- modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/deleteJobs.jsp	(nonexistent)
+++ modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/deleteJobs.jsp	(revision 47450)
@@ -0,0 +1,66 @@
+<%@ page contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<%@ taglib prefix="s" uri="/struts-tags"%>
+<%@ taglib prefix="sj" uri="/struts-jquery-tags"%>
+<html>
+<head>
+<link href="jsps/style.css" rel="stylesheet" type="text/css" media="screen" />
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<!--<meta http-equiv="refresh" content="13" >-->
+<title><s:text name="manageJobs.deleteJobs.title"/></title>
+<link href="jsps/favicon.ico" rel="shortcut icon" type="image/x-icon" />
+<sj:head />
+</head>
+<body class="left">
+
+<div id="wrapper">
+	<jsp:include page="menu.jsp"/>
+	<div id="page">
+		<div id="page-bgtop">
+			<div id="middle">
+                <div class="middle-b">
+                    <div class="background">
+                    	<div id="left">
+                        	<div id="left_container">
+	                             <h2 class="helpHdr">Info</h2>
+                                 <s:text name="help.browsevalidations"/>
+                            </div>
+                        </div>
+                        <div id="main">
+                            <div id="main_container" class="clearfix">
+                                <div id="mainmiddle" class="floatbox">
+                                    <h1 class="title"><s:text name="manageJobs.deleteJobs.title"/></h1>
+<%--                                     <s:if test="%{enableCuration}"> --%>
+	                                    <s:form action="curateDB">
+	                                   		 <s:select name="period" 
+	                                    		key="manageJobs.deleteJobs.deleteOld"
+ 	                          					list="#{'older':'older than', 'newer':'newer than', 'exact':'of'}"
+                                            	required="true"
+	  					                    />
+     										<sj:datepicker name="inDate" changeMonth="true" changeYear="true" displayFormat="yy-mm-dd"/>
+<%-- 	                                    	<s:textfield name="inDate" value="YYYY-MM-DD"/> --%>
+	                                    	<s:select name="mode" 
+	                                    		key="manageJobs.deleteJobs.whatToDelete"
+ 	                          					list="#{'all':'All jobs', 'compTest_only':'Compatibility Tests only', 'uncompleted_only':'Uncompleted jobs'}"
+                                            	required="true"
+	  					                    />
+<%--  	                          					list="#{'all':'All jobs', 'compTest_only':'Compatibility Tests only', 'uncompleted_only':'Uncompleted jobs','import':'Import jobs'}" --%>
+	                                    	<s:submit cssClass="button-default"/>
+	                                    </s:form>
+<%-- 	                               </s:if> --%>
+                                    
+								</div>
+                            </div>
+                        </div>
+                    </div>
+                </div>
+            </div>
+		</div>
+		<!-- NMI This needs to be the same in all pages and the text is some properties file -->
+        <div id="footer"> 
+           <jsp:include page="footer.jsp"/>
+        </div>
+	</div>
+</div>
+</body>
+</html>
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/resources/web-error-texts.properties
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/resources/web-error-texts.properties	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/resources/web-error-texts.properties	(revision 47450)
@@ -0,0 +1,21 @@
+compulsoryField = This field must have a value
+identicalPasswords = Passwords must be identical
+notValidEmail = Invalid email adress
+userAlreadyExists = This user already exists
+noActivationId = The activation id was not specified
+numericalValue = This field must have a numerical value
+recordsLessThan1 = At least 1 record must be used
+invalidBaseUrl = Invalid base Url
+alreadyRepo = Repository already exists. You may need to activate it.
+noAdminEmail = This repository does not provide an administrator email. Registration cannot continue.
+notBelongsToYou = This job doesn't belong to you or doesn't exist
+uknownError = Unknown Error
+requiredFieldNoValue = A required field(*) has no value
+wrongFieldValue = This field has an invalid value
+jobError = Your repository failed to validate. An automatic error report has been sent to the system administrator. You will soon be contacted with the reason for the error and any further actions that might be needed.
+generic.error = An unexpected error has occurred and the administrator was automatically notified. Please try again later.
+login.manual = Please login manually using your account from the OpenAIRE portal
+registration.notOpenDoar = The registration of repositories not in OpenDoar is disabled
+job.noTasks = It appears that this test is empty. Likely causes are the following: <br><br>1. The test is still running <br>2. The chosen set didn't contain any records (e.g., the ec_fundedresources set is empty) <br>3. The test contained no rules <br>4. An unexpected error occurred and might be resolved if you try again later <br><br>If you think that none of the above reasons applies, please report this issue using <a href="http://www.openaire.eu/en/support/helpdesk?view=detail&cid[0]=-1">this form</a>.
+registration.modeNotSelected = It appears that you haven\'t chosen the correct type of repository. Please choose 'JOIN OPENAIRE' from main menu and choose the right one.
+registration.noAggregated = It appears that you repository is part of an aggregator. Your repository will be automatically registered when the aggregator registers in OpenAIRE. Aggregator Name
\ No newline at end of file
Index: modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/resources/validation.properties
===================================================================
--- modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/resources/validation.properties	(nonexistent)
+++ modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/resources/validation.properties	(revision 47450)
@@ -0,0 +1,29 @@
+# The ESAPI validator does many security checks on input, such as canonicalization
+# and whitelist validation. Note that all of these validation rules are applied *after*
+# canonicalization. Double-encoded characters (even with different encodings involved,
+# are never allowed.
+#
+# To use:
+#
+# First set up a pattern below. You can choose any name you want, prefixed by the word
+# "Validation." For example:
+#   Validation.Email=^[A-Za-z0-9._%-]+@[A-Za-z0-9.-]+\\.[a-zA-Z]{2,4}$
+# 
+# Then you can validate in your code against the pattern like this:
+#     ESAPI.validator().isValidInput("User Email", input, "Email", maxLength, allowNull);
+# Where maxLength and allowNull are set for you needs, respectively.
+#
+# But note, when you use boolean variants of validation functions, you lose critical 
+# canonicalization. It is preferable to use the "get" methods (which throw exceptions) and 
+# and use the returned user input which is in canonical form. Consider the following:
+#  
+# try {
+#    someObject.setEmail(ESAPI.validator().getValidInput("User Email", input, "Email", maxLength, allowNull));
+#
+Validator.SafeString=^[.\\p{Alnum}\\p{Space}]{0,1024}$
+Validator.Email=^[A-Za-z0-9._%-]+@[A-Za-z0-9.-]+\\.[a-zA-Z]{2,4}$
+Validator.IPAddress=^(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$
+Validator.URL=^(ht|f)tp(s?)\\:\\/\\/[0-9a-zA-Z]([-.\\w]*[0-9a-zA-Z])*(:(0-9)*)*(\\/?)([a-zA-Z0-9\\-\\.\\?\\,\\:\\'\\/\\\\\\+=&amp;%\\$#_]*)?$
+Validator.CreditCard=^(\\d{4}[- ]?){3}\\d{4}$
+Validator.SSN=^(?!000)([0-6]\\d{2}|7([0-6]\\d|7[012]))([ -]?)(?!00)\\d\\d\\3(?!0000)\\d{4}$
+
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/java/eu/dnetlib/validator/admin/constants/FieldNames.java
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/java/eu/dnetlib/validator/admin/constants/FieldNames.java	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/java/eu/dnetlib/validator/admin/constants/FieldNames.java	(revision 47450)
@@ -0,0 +1,37 @@
+package eu.dnetlib.validator.admin.constants;
+
+public class FieldNames {
+	
+	static public String RULE_ID="id";
+	static public String RULE_NAME="name";
+	static public String RULE_DESCRIPTION="description";
+	static public String RULE_TYPE="type";
+	static public String RULE_MANDATORY="mandatory";
+	static public String RULE_SUCCESS="success";
+	static public String RULE_WEIGHT="weight";
+	static public String RULE_PROVIDER_INFORMATION="provider_information";
+	static public String RULE_VISIBLE="visible";
+	static public String RULE_JOBTYPE="job_type";
+	
+	static public String RULE_RULESFK="Rules_id";
+	
+	static public String RULE_VOCABULARY_WORDS="terms";
+	static public String RULE_VOCABULARY_WORDS_TYPE="terms_type";
+	
+	static public String RULE_CRIS_ENTITY="cris_entity";
+	
+	static public String RULE_CRIS_CLASS_VOCABULARY_SCHEME_ID="scheme_id";
+	
+	static public String RULE_CRIS_REFERENTIAL_INTEGRITY_ENTITY_ACRONYM = "entity_acronym";
+	static public String RULE_CRIS_REFERENTIAL_INTEGRITY_RELATED_ENTITY_ACRONYM = "related_entity_acronym";
+	static public String RULE_CRIS_REFERENTIAL_INTEGRITY_RELATED_ENTITY_XPATH = "related_entity_xpath";
+	
+	static public String RULE_CARDINALITY_LESSTHAN="less_than";
+	static public String RULE_CARDINALITY_GREATERTHAN="greater_than";
+	
+	static public String RULE_REGULAREXPRESSION_REGEXPR ="regular_expression";
+	
+	static public String RULE_NOTCONNFUSEDFIELDS ="fields";
+	
+//	static public String JOB_CONTENT="OAI Content Validation";
+}
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/resources/eu/dnetlib/validator/admin/api/emailTeplateOld.vm
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/resources/eu/dnetlib/validator/admin/api/emailTeplateOld.vm	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/resources/eu/dnetlib/validator/admin/api/emailTeplateOld.vm	(revision 47450)
@@ -0,0 +1,20 @@
+Greetings,
+
+The unsuccessful registration attempts during $month
+were the following (base URL, contact mail, compliance level):
+
+#foreach( $datasource in $failedJobs )
+$datasource.baseUrl, $datasource.email, $datasource.compliance
+#end
+$noneFailed
+
+The successful ones were the following:
+
+#foreach( $datasource in $passedJobs )
+$datasource.baseUrl, $datasource.email, $datasource.compliance
+#end
+$nonePassed
+
+Regards,
+Validator's administrator
+
Index: modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/pom.xml
===================================================================
--- modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/pom.xml	(nonexistent)
+++ modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/pom.xml	(revision 47450)
@@ -0,0 +1,77 @@
+<?xml version="1.0" ?>
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+	<parent>
+		<groupId>eu.dnetlib</groupId>
+		<artifactId>dnet-container-parent</artifactId>
+		<version>1.0.0</version>
+	</parent>
+	<modelVersion>4.0.0</modelVersion>
+	<groupId>eu.dnetlib</groupId>
+	<artifactId>uoa-validator-admin</artifactId>
+	<packaging>war</packaging>
+	<version>2.0.3-SNAPSHOT</version>
+	<scm>
+		<developerConnection>scm:svn:https://svn.driver.research-infrastructures.eu/driver/dnet40/modules/uoa-validator-admin/branches/uoa-validator-admin-2.0</developerConnection>
+	</scm>
+	<properties>
+		<struts2.version>2.3.20</struts2.version>
+	</properties>
+
+	<dependencies>
+		<dependency>
+			<groupId>org.apache.struts</groupId>
+			<artifactId>struts2-core</artifactId>
+			<version>${struts2.version}</version>
+<!-- 			<exclusions> -->
+<!-- 				<exclusion>  declare the exclusion here -->
+<!-- 					<groupId>javax.servlet.jsp</groupId> -->
+<!-- 					<artifactId>jsp-api</artifactId> -->
+<!-- 				</exclusion> -->
+<!-- 			</exclusions> -->
+		</dependency>
+		<dependency>
+			<groupId>org.apache.struts</groupId>
+			<artifactId>struts2-spring-plugin</artifactId>
+			<version>${struts2.version}</version>
+			<exclusions>
+				<exclusion>
+					<groupId>org.springframework</groupId>
+					<artifactId>spring-beans</artifactId>
+				</exclusion>
+				<exclusion>
+					<groupId>org.springframework</groupId>
+					<artifactId>spring-core</artifactId>
+				</exclusion>
+				<exclusion>
+					<groupId>org.springframework</groupId>
+					<artifactId>spring-context</artifactId>
+				</exclusion>
+				<exclusion>
+					<groupId>org.springframework</groupId>
+					<artifactId>spring-web</artifactId>
+				</exclusion>
+			</exclusions>
+		</dependency>
+		<dependency>
+			<groupId>org.apache.struts</groupId>
+			<artifactId>struts2-dojo-plugin</artifactId>
+			<version>${struts2.version}</version>
+		</dependency>
+		<dependency>
+			<groupId>com.jgeppert.struts2.jquery</groupId>
+			<artifactId>struts2-jquery-plugin</artifactId>
+			<version>3.7.1</version>
+		</dependency>
+		
+		<dependency>
+			<groupId>com.unboundid</groupId>
+			<artifactId>unboundid-ldapsdk</artifactId>
+			<version>1.1.3</version>
+		</dependency>
+        <dependency>
+            <groupId>eu.dnetlib</groupId>
+            <artifactId>uoa-validator-commons</artifactId>
+            <version>[2.0.0, 2.1.0-SNAPSHOT)</version>
+        </dependency>
+	</dependencies>
+</project>
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/resources/eu/dnetlib/validator/admin/api/springContext-validator-user-local.xml
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/resources/eu/dnetlib/validator/admin/api/springContext-validator-user-local.xml	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/resources/eu/dnetlib/validator/admin/api/springContext-validator-user-local.xml	(revision 47450)
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<beans xmlns="http://www.springframework.org/schema/beans"
+	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+	xmlns:context="http://www.springframework.org/schema/context"
+	xmlns:cxf="http://cxf.apache.org/core"
+	xmlns:jaxws="http://cxf.apache.org/jaxws"
+	xmlns:p="http://http://www.springframework.org/schema/p"
+	xmlns:template="http://dnetlib.eu/springbeans/template"
+	xmlns:t="http://dnetlib.eu/springbeans/t"
+	xmlns:tx="http://www.springframework.org/schema/tx"
+	
+	xsi:schemaLocation="
+		http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.0.xsd
+        http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.0.xsd
+        http://cxf.apache.org/core http://cxf.apache.org/schemas/core.xsd
+        http://cxf.apache.org/jaxws http://cxf.apache.org/schemas/jaxws.xsd
+        http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-4.0.xsd
+        http://dnetlib.eu/springbeans/template http://dnetlib.eu/springbeans/template.xsd"
+	default-autowire="no">
+
+	<bean id="userAPI" class="eu.dnetlib.validator.admin.api.impls.UserApiLocal" lazy-init="true">
+		<property name="usersDao" ref="usersDao" />
+	</bean>
+	
+	<tx:annotation-driven transaction-manager="txManager" />
+	
+</beans>
\ No newline at end of file
Index: modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/java/eu/dnetlib/validator/admin/actions/login/Logout.java
===================================================================
--- modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/java/eu/dnetlib/validator/admin/actions/login/Logout.java	(nonexistent)
+++ modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/java/eu/dnetlib/validator/admin/actions/login/Logout.java	(revision 47450)
@@ -0,0 +1,32 @@
+package eu.dnetlib.validator.admin.actions.login;
+
+import java.util.Map;
+
+import org.apache.struts2.interceptor.SessionAware;
+
+import com.opensymphony.xwork2.Action;
+
+import eu.dnetlib.validator.admin.actions.BaseValidatorAction;
+import eu.dnetlib.validator.admin.config.Constants;
+
+public class Logout extends BaseValidatorAction implements SessionAware {
+
+	private static final long serialVersionUID = -5304052800228900726L;
+	private Map<String, Object> session;
+
+	
+	public String execute() {
+		this.clearErrorsAndMessages();
+		session.remove(Constants.loggedInField);
+		session.remove("email");
+		session.remove("isAdmin");
+		this.addActionMessage("Logged-out successfully");
+		
+		return Action.SUCCESS;
+	}
+	
+	@Override
+	public void setSession(Map<String, Object> session) {
+		this.session = session;
+	}
+}
\ No newline at end of file
Index: modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/chooseRuleCategory.jsp
===================================================================
--- modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/chooseRuleCategory.jsp	(nonexistent)
+++ modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/chooseRuleCategory.jsp	(revision 47450)
@@ -0,0 +1,51 @@
+<%@ page contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<%@ taglib prefix="s" uri="/struts-tags"%>
+<html>
+<head>
+<link href="jsps/favicon.ico" rel="shortcut icon" type="image/x-icon" />
+<link href="jsps/style.css" rel="stylesheet" type="text/css" media="screen" />
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title><s:text name="chooseRuleCategory.title"/></title>
+</head>
+<body class="left">
+<div id="wrapper">
+	<jsp:include page="menu.jsp"/>
+	<div id="page">
+	<div id="page-bgtop">
+	<div id="middle">
+            <div class="middle-b">
+                <div class="background">
+			 <div id="left">
+                              <div id="left_container" >
+                                   <h2 class="helpHdr">Info</h2>
+                                   <s:text name="help.admin"/>
+                              </div>
+                         </div>
+                        <div id="main">
+                        <div id="main_container" class="clearfix">
+			<div id="content">
+				<h2 class="title"><s:text name="chooseRuleCategory.title"/></h2>
+                                <div class="entry">
+                                        <s:form action="prepareAddRule">
+                                                <s:select key="help.chooseRuleCategory.type.title" name="type" list="ruleTypes"/>
+                                                <s:radio name="jobType" list="#{'content':'OAI Content', 'usage':'OAI Usage'}" value="defaultJobType" label="%{getText(\"jobs.job_type.name\")}" title="%{getText(\"jobs.job_type.description\")}" />
+                                                <s:checkbox name="forCris" label="Is the rule for Cris Guidelines?"/>
+                                                <s:submit cssClass="button-default"/>
+                                        </s:form>
+                                </div>
+			</div>
+			</div>
+			</div>
+		</div>
+	</div>
+	</div>
+	</div>
+
+    <div id="footer">
+                <jsp:include page="footer.jsp"/>
+        </div>
+</div>
+</div>
+</body>
+</html>
Index: modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/chooseRuleForEdit.jsp
===================================================================
--- modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/chooseRuleForEdit.jsp	(nonexistent)
+++ modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/chooseRuleForEdit.jsp	(revision 47450)
@@ -0,0 +1,55 @@
+<%@ page contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<%@ taglib prefix="s" uri="/struts-tags"%>
+<html>
+<head>
+<link href="jsps/favicon.ico" rel="shortcut icon" type="image/x-icon" />
+<link href="jsps/style.css" rel="stylesheet" type="text/css" media="screen" />
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title><s:text name="chooseRuleForEdit.title"/></title>
+</head>
+<body class="left">
+<div id="wrapper">
+	<jsp:include page="menu.jsp"/>
+	<div id="page">
+	<div id="page-bgtop">
+	<div id="middle">
+            <div class="middle-b">
+                <div class="background">
+			 <div id="left">
+                              <div id="left_container" >
+                                   <h2 class="helpHdr">Info</h2>
+                                   <s:text name="help.admin"/>
+                              </div>
+                         </div>
+                        <div id="main">
+                        <div id="main_container" class="clearfix">
+			<div id="content">
+				<h2 class="title"><s:text name="chooseRuleForEdit.title"/></h2>
+                               <div class="entry">
+					<s:form action="prepareEditRule">
+                                                <s:if test="%{#session.isAdmin != null && #session.isAdmin.equals(\"true\")}">
+                                                        <s:select name="ruleId" list="rules" listValue="name" listKey="id"  key="chooseRuleForEdit.label"/>
+                                                		<s:hidden name="funct" value="edit"/>
+                                                </s:if>
+                                                <s:else>
+                                                        <s:select name="ruleId" list="rules" listValue="name" listKey="id"  key="chooseRuleForEdit.label2"/>
+                                                </s:else>
+                                                <s:submit cssClass="button-default"/>
+                                        </s:form>
+                                </div>
+			</div>
+			</div>
+			</div>
+		</div>
+	</div>
+	</div>
+	</div>
+
+    <div id="footer">
+                <jsp:include page="footer.jsp"/>
+        </div>
+</div>
+</div>
+</body>
+</html>
Index: modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/deleteRule.jsp
===================================================================
--- modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/deleteRule.jsp	(nonexistent)
+++ modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/deleteRule.jsp	(revision 47450)
@@ -0,0 +1,49 @@
+<%@ page contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<%@ taglib prefix="s" uri="/struts-tags"%>
+<html>
+<head>
+<link href="jsps/favicon.ico" rel="shortcut icon" type="image/x-icon" />
+<link href="jsps/style.css" rel="stylesheet" type="text/css" media="screen" />
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title><s:text name="deleteRule.title"/></title>
+</head>
+<body class="left">
+<div id="wrapper">
+	<jsp:include page="menu.jsp"/>
+	<div id="page">
+	<div id="page-bgtop">
+	<div id="middle">
+            <div class="middle-b">
+                <div class="background">
+			 <div id="left">
+                              <div id="left_container" >
+                                                <h2 class="helpHdr">Info</h2>
+                                                <s:text name="help.admin"/>
+                              </div>
+                         </div>
+                          <div id="main">
+                        <div id="main_container" class="clearfix">
+			<div id="content">
+			<h2 class="title"><s:text name="deleteRule.title"/></h2>
+                                <div class="entry">
+                                        <s:form action="deleteRule">
+                                                <s:select name="ruleId" list="rules" listValue="name" listKey="id"  key="deleteRule.label"/>
+						<s:submit cssClass="button-default"/>
+                                        </s:form>
+                                </div>
+			</div>
+		</div>
+	</div>
+	</div>
+	</div>
+	</div>
+	</div>
+
+    <div id="footer">
+                <jsp:include page="footer.jsp"/>
+        </div>
+</div>
+</div>
+</body>
+</html>
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/resources/eu/dnetlib/validator/admin/config/springContext-validator-config.xml
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/resources/eu/dnetlib/validator/admin/config/springContext-validator-config.xml	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/resources/eu/dnetlib/validator/admin/config/springContext-validator-config.xml	(revision 47450)
@@ -0,0 +1,48 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<beans xmlns="http://www.springframework.org/schema/beans"
+	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+	xmlns:context="http://www.springframework.org/schema/context"
+	xmlns:cxf="http://cxf.apache.org/core"
+	xmlns:jaxws="http://cxf.apache.org/jaxws"
+	xmlns:p="http://http://www.springframework.org/schema/p"
+	xmlns:template="http://dnetlib.eu/springbeans/template"
+	xmlns:t="http://dnetlib.eu/springbeans/t"
+	xmlns:tx="http://www.springframework.org/schema/tx"
+	
+	xsi:schemaLocation="
+		http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.0.xsd
+        http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.0.xsd
+        http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-4.0.xsd
+		http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-4.0.xsd
+        http://cxf.apache.org/core http://cxf.apache.org/schemas/core.xsd
+        http://cxf.apache.org/jaxws http://cxf.apache.org/schemas/jaxws.xsd
+        http://dnetlib.eu/springbeans/template http://dnetlib.eu/springbeans/template.xsd"
+	default-autowire="no">
+
+	<bean class="eu.dnetlib.validator.admin.config.CascadingPropertyLoader" id="propertyLoader">
+		<property name="order" value="2" />
+		<property name="properties">
+			<bean class="eu.dnetlib.conf.WebappContextProperyFactory">
+				<property name="propertyFetcher">
+					<bean class="eu.dnetlib.conf.PropertyFetcher" />
+				</property>
+			</bean>
+		</property>
+		<property name="ignoreUnresolvablePlaceholders" value="true" />
+		<property name="locations">
+			<list>
+				<value>classpath*:/gr/**/springContext-*.properties</value>
+				<value>classpath*:/eu/**/springContext-*.properties</value>
+				
+				<value>classpath*:dnet-site-wizard.properties</value>
+				<value>classpath*:dnet-site-override.properties</value>
+				<value>classpath*:dnet-wizard.properties</value>
+				<value>classpath*:dnet-override.properties</value>
+				<value>classpath*:dnet-validator-wizard.properties</value>
+				<value>classpath*:dnet-validator-override.properties</value>
+				<value>classpath*:dnet-site-force-override.properties</value>
+				<value>classpath*:dnet-force-override.properties</value>
+			</list>
+		</property>
+	</bean>
+</beans>
\ No newline at end of file
Index: modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/addRule.jsp
===================================================================
--- modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/addRule.jsp	(nonexistent)
+++ modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/addRule.jsp	(revision 47450)
@@ -0,0 +1,96 @@
+<%@ page contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<%@ taglib prefix="s" uri="/struts-tags"%>
+<html>
+<head>
+<link href="jsps/favicon.ico" rel="shortcut icon" type="image/x-icon" />
+<link href="jsps/style.css" rel="stylesheet" type="text/css" media="screen" />
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title><s:text name="addRule.title"/></title>
+</head>
+<body class="left">
+<div id="wrapper">
+	<jsp:include page="menu.jsp"/>
+	<div id="page">
+	<div id="page-bgtop">
+	<div id="middle">
+            <div class="middle-b">
+                <div class="background">
+
+			 <div id="left">
+                              <div id="left_container" >
+                                                <h2 class="helpHdr">Info</h2>
+                                                <s:text name="help.admin"/>
+                              </div>
+                         </div>
+                                <div id="main">
+                        <div id="main_container" class="clearfix">
+		<div id="content">
+				<h2 class="title"><s:text name="addRule.title"/></h2>
+				<p class="meta"><a href='<s:url value="/jsps/help.jsp#addRule"/>' target="_blank"><s:text name="help"/></a></p>
+				<div class="entry">
+					<s:form action="addRule">
+<%-- 						<s:hidden name="type"/> --%>
+						<s:hidden name="jobType"/>
+						<s:hidden name="forCris"/>
+						<s:iterator value="labels" var="label">
+							<s:set name="dscr" value="%{#label+\".description\"}"/>
+							<s:set name="tltp" value="%{#label+\".name\"}"/>
+							<s:if test="%{#label.equals(\"xmlvocabulary_rule.terms\") || #label.equals(\"rules.description\")}">
+								<s:textarea name="inputs" title="%{getText(#dscr)}" label="%{getText(#tltp)}" cols="50" rows="5"/>
+							</s:if>
+							<s:elseif test="%{#label.equals(\"xmlcrisclassvocabulary_rule.terms\") || #label.equals(\"xmlcrisreferentialintegrity_rule.terms\")}">
+								<s:textarea name="inputs" title="%{getText(#dscr)}" label="%{getText(#tltp)}" cols="50" rows="5"/>
+							</s:elseif>
+                            <s:elseif test="%{#label.equals(\"xmlvocabulary_rule.terms_type\")}">
+                                <s:select label="%{getText(#tltp)}" name="inputs" list="#{'whitelist':'whitelist', 'blacklist':'blacklist'}" title="%{getText(#dscr)}"/>
+							</s:elseif>
+							<s:elseif test="%{#label.equals(\"rules.mandatory\")}">
+								<s:select label="%{getText(#tltp)}" name="inputs" list="#{'true':'true', 'false':'false'}" title="%{getText(#dscr)}"/>
+							</s:elseif>
+							<s:elseif test="%{#label.equals(\"rules.cris_entity\")}">
+                                <s:select label="%{getText(#tltp)}" name="inputs" list="entityTypes" value="%{rule.entity_type}" title="%{getText(#dscr)}"/>
+                            </s:elseif>
+<%-- 							<s:elseif test="%{#label.equals(\"rules.provider_information\")}"> --%>
+<%-- 								<s:if test="%{jobType.equals(\"usage\")}"> --%>
+<%-- 									<s:textfield name="inputs" title="%{getText(#dscr)}" label="%{getText(#tltp)}"/> --%>
+<%-- 								</s:if> --%>
+<%-- 							</s:elseif> --%>
+							<s:elseif test="%{#label.matches('.*success')}">
+								<s:select label="%{getText(#tltp)}" name="inputs" list="#{'>0':'>0', 'all':'all', '0':'0', '1':'1'}"  title="%{getText(#dscr)}"/>
+							</s:elseif>
+							<s:elseif test="%{#label.equals(\"chain_rule.type\")}">
+								<s:select label="%{getText(#tltp)}" name="inputs" list="#{'or':'or', 'and':'and', 'horn':'horn'}" title="%{getText(#dscr)}"/>
+							</s:elseif>							
+							<s:elseif test="%{#label.equals(\"chain_rule.rule_1\")}">
+								<s:select name="inputs" list="rules" listValue="ruleName" listKey="ruleId" label="%{getText(#tltp)}" title="%{getText(#dscr)}"/>
+							</s:elseif>							
+							<s:elseif test="%{#label.equals(\"chain_rule.rule_2\")}">
+								<s:select name="inputs" list="rules" listValue="ruleName" listKey="ruleId" label="%{getText(#tltp)}" title="%{getText(#dscr)}"/>
+							</s:elseif>		
+							<s:else>
+								<s:textfield name="inputs" title="%{getText(#dscr)}" label="%{getText(#tltp)}"/>
+							</s:else>
+						</s:iterator>
+<%-- 						<s:if test="%{forCris == true}"> --%>
+<%-- 							<s:select name="entityType" list="entityTypes" label="%{getText(\"jobs.entity_type.name\")}" title="%{getText(\"jobs.entity_type.description\")}" /> --%>
+<%-- 						</s:if> --%>
+<%-- 						<s:textfield name="jobType" value="%{#jobType}" label="%{getText(\"jobs.job_type.name\")}" title="%{getText(\"jobs.job_type.description\")}" readonly='true'/> --%>
+						<s:textfield name="type" label="%{getText(\"rules.type.name\")}" title="%{getText(\"rules.type.description\")}" readonly='true'/>
+						<s:submit value="Insert" cssClass="button-default"/>
+					</s:form>
+				</div>
+			</div>
+		</div>
+	</div>
+	</div>
+	</div>
+	</div>
+	</div>
+    <div id="footer">
+                <jsp:include page="footer.jsp"/>
+        </div>
+        </div>
+        </div>
+</body>
+</html>
Index: modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/createRuleSet.jsp
===================================================================
--- modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/createRuleSet.jsp	(nonexistent)
+++ modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/createRuleSet.jsp	(revision 47450)
@@ -0,0 +1,106 @@
+<%@ page contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<%@ taglib prefix="s" uri="/struts-tags"%>
+<html>
+<head>
+<link href="jsps/favicon.ico" rel="shortcut icon" type="image/x-icon" />
+<link href="jsps/style.css" rel="stylesheet" type="text/css" media="screen" />
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<s:if test="%{#session.isAdmin != null && #session.isAdmin.equals(\"true\")}">
+        <s:set name="isAdmin" value="true"/>
+</s:if>
+<s:else>
+        <s:set name="isAdmin" value="false"/>
+</s:else>
+<title>
+        <s:if test="%{#isAdmin}">
+                <s:text name="createRuleSet.title"/>
+        </s:if>
+        <s:else>
+                <s:text name="createRuleSet.title2"/>
+        </s:else>
+</title>
+</head>
+<body class="left">
+<div id="wrapper">
+	<jsp:include page="menu.jsp"/>
+	<div id="page">
+	<div id="page-bgtop">
+	<div id="middle">
+            <div class="middle-b">
+                <div class="background">
+			 <div id="left">
+                              <div id="left_container" >
+                                   <h2 class="helpHdr">Info</h2>
+                                   <s:text name="help.admin"/>
+                              </div>
+                         </div>
+                        <div id="main">
+                        <div id="main_container" class="clearfix">
+			<div id="content">
+				<s:if test="%{#isAdmin}">
+                                        <h2 class="title"><s:text name="createRuleSet.title"/></h2>
+                                </s:if>
+                                <s:else>
+                                        <h2 class="title"><s:text name="createRuleSet.title2"/></h2>
+                                </s:else>
+                                <div class="entry">
+                                        <s:form action="createRuleSet">
+                                                <s:hidden name="funct"/>
+                                                <s:hidden name="ruleSet.id"/>
+                                                <s:textfield name="ruleSet.name" key="createRuleSet.name"/>
+                                                <s:textfield name="ruleSet.shortName" key="createRuleSet.shortName"/>
+                                                <s:textfield name="ruleSet.description" key="createRuleSet.description"/>
+                                                <s:textfield name="ruleSet.guidelinesAcronym" key="createRuleSet.guidelinesAcronym"/>
+<%--                                                 <s:textfield name="ruleSet.visibility" key="createRuleSet.visibility"/> --%>
+                                                 
+                                                <s:select key="createRuleSet.visibility"
+                                                       name="ruleSet.visibility"
+                                                       list="deployEnvironments"
+                                                       multiple="true"
+                                                       size="%{#ruleSet.visibility.size()}"
+                                                       value="%{ruleSet.visibility}"
+                                                       disabled='%{!#isAdmin}'
+                                                /> 
+                                                 
+                                                <s:select key="createRuleSet.rulesContent"
+                                                       name="chosenContentRules"
+                                                       list="rulesContent"
+                                                       listKey="id"
+                                                       listValue="name"
+                                                       multiple="true"
+                                                       size="%{#rulesContent.size()}"
+                                                       value="%{ruleIdsContent}"
+                                                       disabled='%{!#isAdmin}'
+                                                />
+                                                <s:select key="createRuleSet.rulesUsage"
+                                                       name="chosenUsageRules"
+                                                       list="rulesUsage"
+                                                       listKey="id"
+                                                       listValue="name"
+                                                       multiple="true"
+                                                       size="%{#rulesUsage.size()}"
+                                                       value="%{ruleIdsUsage}"
+                                                       disabled='%{!#isAdmin}'
+                                                />
+
+                                                <s:if test="%{#isAdmin}">
+                                                	<s:submit cssClass="button-default"/>
+                                                </s:if>
+                                        </s:form>
+                                </div>
+
+			</div>
+			</div>
+			</div>
+		</div>
+	</div>
+	</div>
+	</div>
+    <div id="footer">
+                <jsp:include page="footer.jsp"/>
+        </div>
+	</div>
+</div>
+</body>
+</html>
Index: modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/java/eu/dnetlib/validator/admin/actions/login/LoginPage.java
===================================================================
--- modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/java/eu/dnetlib/validator/admin/actions/login/LoginPage.java	(nonexistent)
+++ modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/java/eu/dnetlib/validator/admin/actions/login/LoginPage.java	(revision 47450)
@@ -0,0 +1,29 @@
+package eu.dnetlib.validator.admin.actions.login;
+
+import java.util.Map;
+
+import org.apache.struts2.interceptor.SessionAware;
+
+import eu.dnetlib.validator.admin.actions.BaseValidatorAction;
+
+@SuppressWarnings("serial")
+public class LoginPage extends BaseValidatorAction implements SessionAware{
+
+	@Override
+	public String execute() throws Exception {
+		this.clearErrorsAndMessages();
+		String email = (String) session.get("email");
+		
+		if ( email!=null && !email.trim().isEmpty() )
+			return INPUT;
+		
+		return SUCCESS;
+	}
+	
+	private Map<String, Object> session;
+	@Override
+	public void setSession(Map<String, Object> session) {
+		this.session = session;		
+	}
+
+}
Index: modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/images/logo-referencia-openaire.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/images/logo-referencia-openaire.png
===================================================================
--- modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/images/logo-referencia-openaire.png	(nonexistent)
+++ modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/images/logo-referencia-openaire.png	(revision 47450)

Property changes on: modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/images/logo-referencia-openaire.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/images/openairepluslogo.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/images/openairepluslogo.png
===================================================================
--- modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/images/openairepluslogo.png	(nonexistent)
+++ modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/images/openairepluslogo.png	(revision 47450)

Property changes on: modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/images/openairepluslogo.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/resources/field-infos.properties
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/resources/field-infos.properties	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/resources/field-infos.properties	(revision 47450)
@@ -0,0 +1,98 @@
+rules.name.description = The name of the rule. Must be short and descriptive.
+rules.name.name = Name
+rules.description.description = A longer text describing the rule in more detail.
+rules.description.name = Description
+rules.mandatory.description = Must be true or false. If true, then if this rule doesn't validate the score will suffer. If false, then if the rule validates successfully then the score will be increased (even above 100%)
+rules.mandatory.name = Mandatory
+rules.success.description = The correct syntax as regular expression is ([=<>][0-9]+)|a). For a thorough explanation of this field please refer to the Administrator Manual. 
+rules.success.name = Success
+rules.weight.description = An integer indicating how important this rule is. The base weight is 1. Weights greater than 1 mean that this rule impacts more on the score.
+rules.weight.name = Weight
+rules.provider_information.description = This information is used by the Provider Module to harvest the correct items for validation. For example, for OAI Content Validation jobs a possible value could be dc:identifier. For a thorough explanation of this field please refer to the Administrator Manual. 
+rules.provider_information.name = Provider Information
+rules.visible.description = Not shown to the end-user
+rules.visible.name = Visible
+rules.type.name = Rule Type
+rules.type.description = The type of the rule
+rules.cris_entity.name = Cris Entity
+rules.cris_entity.description = The type of cris entity that this rule will be applicable on
+jobs.job_type.name = Job Type
+jobs.job_type.description = The type of job that this rule will be applicable on
+jobs.entity_type.name = Entity Type
+jobs.entity_type.description = The type of entity that this rule will be applicable on
+xmlvocabulary_rule.terms.name = Words
+xmlvocabulary_rule.terms.description = The list of words that will be used for matching. Each line must include only one word.
+xmlvocabulary_rule.terms_type.name = Words List Type
+xmlvocabulary_rule.terms_type.description = The kind of the list of words that will be used for matching. Blacklist or whitelist.
+xmlvocabulary_rule.success.name = Success
+xmlvocabulary_rule.success.description = The correct syntax is :all, >0, 0 . For a thorough explanation of this field please refer to the Administrator Manual. 
+xmlvocabulary_rule.xpath.name = XPath
+xmlvocabulary_rule.xpath.description = XPath for specific rule.
+xmlcrisclassvocabulary_rule.terms.name = Words
+xmlcrisclassvocabulary_rule.terms.description = The list of words that will be used for matching. Each line must include only one word.
+xmlcrisclassvocabulary_rule.success.name = Success
+xmlcrisclassvocabulary_rule.success.description = The correct syntax is :all, >0, 0, 1 . For a thorough explanation of this field please refer to the Administrator Manual. 
+xmlcrisclassvocabulary_rule.xpath.name = XPath
+xmlcrisclassvocabulary_rule.xpath.description = XPath for specific rule.
+xmlcrisclassvocabulary_rule.scheme_id.name = Scheme ID
+xmlcrisclassvocabulary_rule.scheme_id.description = XPath for specific rule.
+xmlcrisreferentialintegrity_rule.terms.name = Words
+xmlcrisreferentialintegrity_rule.terms.description = The list of words that will be used for matching. Each line must include only one word.
+xmlcrisreferentialintegrity_rule.success.name = Success
+xmlcrisreferentialintegrity_rule.success.description = The correct syntax is :all, >0, 0, 1 . For a thorough explanation of this field please refer to the Administrator Manual. 
+xmlcrisreferentialintegrity_rule.xpath.name = XPath
+xmlcrisreferentialintegrity_rule.xpath.description = XPath for specific rule.
+xmlcrisreferentialintegrity_rule.scheme_id.name = Scheme ID
+xmlcrisreferentialintegrity_rule.scheme_id.description = XPath for specific rule.
+xmlcrisreferentialintegrity_rule.entity_acronym.name = Entity Acronym
+xmlcrisreferentialintegrity_rule.entity_acronym.description = Entity Acronym (eg.cfPers).
+xmlcrisreferentialintegrity_rule.related_entity_acronym.name = Related Entity Acronym
+xmlcrisreferentialintegrity_rule.related_entity_acronym.description = Related Entity Acronym (eg.cfPers).
+xmlcrisreferentialintegrity_rule.related_entity_xpath.name = Related Entity XPATH
+xmlcrisreferentialintegrity_rule.related_entity_xpath.description = Related Entity XPATH.
+xmlfieldexist_rule.success.name = Success
+xmlfieldexist_rule.success.description = The correct syntax is :all, >0, 0 . For a thorough explanation of this field please refer to the Administrator Manual. 
+xmlfieldexist_rule.xpath.name = XPath
+xmlfieldexist_rule.xpath.description = XPath for specific rule.
+xmlregularexpression_rule.success.name = Success
+xmlregularexpression_rule.success.description = The correct syntax is :all, >0, 0 . For a thorough explanation of this field please refer to the Administrator Manual. 
+xmlregularexpression_rule.xpath.name = XPath
+xmlregularexpression_rule.xpath.description = XPath for specific rule.
+xmlregularexpression_rule.regexp.name = Regular Expression
+xmlregularexpression_rule.regexp.description = The regular expression used for validation.
+xmlcardinality_rule.lt.name = Less Than
+xmlcardinality_rule.lt.description = Less than this number
+xmlcardinality_rule.gt.name = Greater Than
+xmlcardinality_rule.gt.description = Greater than this number
+xmlcardinality_rule.success.name = Success
+xmlcardinality_rule.success.description = The correct syntax is :all, >0, 0 . For a thorough explanation of this field please refer to the Administrator Manual. 
+xmlcardinality_rule.xpath.name = XPath
+xmlcardinality_rule.xpath.description = XPath for specific rule.
+xmlcardinality_rule.regexp.name = Regular Expression
+xmlcardinality_rule.regexp.description = The regular expression used for validation.
+xmlnotconfusedfields_rule.fields.name = Fields
+xmlnotconfusedfields_rule.fields.description = Fields that must not be confused each other
+xmlnotconfusedfields_rule.success.name = Success
+xmlnotconfusedfields_rule.success.description = The correct syntax is :all, >0, 0 . For a thorough explanation of this field please refer to the Administrator Manual. 
+xmlnotconfusedfields_rule.xpath.name = XPath
+xmlnotconfusedfields_rule.xpath.description = XPath for specific rule.
+xmlnotconfusedfields_rule.regexp.name = Regular Expression
+xmlnotconfusedfields_rule.regexp.description = The regular expression used for validation.
+xmlvalidurl_rule.success.name = Success
+xmlvalidurl_rule.success.description = The correct syntax is :all, >0, 0 . For a thorough explanation of this field please refer to the Administrator Manual. 
+xmlvalidurl_rule.xpath.name = XPath
+xmlvalidurl_rule.xpath.description = XPath for specific rule.
+xmlvalidurl_rule.regexp.name = Regular Expression
+xmlvalidurl_rule.regexp.description = The regular expression used for validation.
+chain_rule.type.description = Permitted values: 'or' -> true if any of the rules is successful, 'and' -> true if all the rules are successful, 'horn' -> rule[0] => rule[1] /\ rule[2] /\ ... /\ rule[n-1]
+chain_rule.type.name = Chain Type
+chain_rule.rule_1.description = The first rule that chain rule consists of.
+chain_rule.rule_1.name = 1st Rule of Chain
+chain_rule.rule_2.description = The second rule that chain rule consists of.
+chain_rule.rule_2.name = 2nd Rule of Chain
+oaipmhresumptiontokenduration_rule.duration.description = Duration of resumption token.
+oaipmhresumptiontokenduration_rule.duration..name = Duration
+oaipmhincrementalrecorddelivery_rule.from.name = From
+oaipmhincrementalrecorddelivery_rule.from.description = From field.
+oaipmhincrementalrecorddelivery_rule.until.name = Until
+oaipmhincrementalrecorddelivery_rule.until.description = Until field.
\ No newline at end of file
Index: modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/images/ajax_loader_blue_32.gif
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/images/ajax_loader_blue_32.gif
===================================================================
--- modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/images/ajax_loader_blue_32.gif	(nonexistent)
+++ modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/images/ajax_loader_blue_32.gif	(revision 47450)

Property changes on: modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/images/ajax_loader_blue_32.gif
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/resources/backend-errors.properties
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/resources/backend-errors.properties	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0/src/main/resources/backend-errors.properties	(revision 47450)
@@ -0,0 +1,29 @@
+error.parametersMissing.ruleId=Rule id must be specified in the parameters given
+error.parametersMissing.jobId=Job id must be specified in the parameters given
+error.badParameter.idNotNumerical=The id was not numerical
+error.badParameter.unknownType=The type specified is incorrect
+rules.name.error.message1=A value must be defined for the field name
+rules.description.error.message1=A value must be defined for the field description
+rules.type.error.message1=A value must be defined for the field type
+rules.mandatory.error.message1=A value must be defined for the field mandatory
+rules.success.error.message1=A value must be defined for the field success
+rules.success.error.message2=First character for success must be one of =, > or <
+rules.success.error.message3=Field success must contain only numerical characters after the first character
+rules.weight.error.message1=Value of field weight must be numerical
+rules.provider_information.error.message1=A value must be specified for the provider information field
+rules.job_type.error.message1=Job type must be one of the available types
+rules.job_type.error.message2=A job type must be specified for this rule
+cardinality_rule.greater_than.error.message1=Value of field 'greater than' must be numerical
+cardinality_rule.less_than.error.message2=Less and Greater cannot be both without value
+cardinality_rule.less_than.error.message1=Value of field 'less than' must be numerical
+NotConfusedFields_Rule.field1.error.message1=Fields 'field1' and 'field2' must both have a value
+NotConfusedFields_Rule.field1.error.message2=Fields 'field1' and 'field2' must have a different value
+RegularExpression_Rule.regular_expression.error.message1=Field 'regular expression' must have a value
+RetrievableResource_Rule.max_depth.error.message1=Field 'max_depth' must have a numerical value
+Vocabulary_Rule.words.error.message1=A value must be defined for the 'words' field
+OAI_Content_Job.records.error.message1=Field 'records' cannot be empty
+OAI_Content_Job.records.error.message2=At least one record must be used for the validation
+OAI_Content_Job.records.error.message3=Value of field 'records' must be numerical
+OAI_Content_Job.random.error.message1=Value of field 'random' must be boolean (true or false)
+OAI_Content_Job.base_url.error.message1=Value of field 'base url' doesn't seem to be a valid url adress
+RetrievableResource_Rule.mime_types.error.message1=Invalid mime type(s)
\ No newline at end of file
Index: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0
===================================================================
--- modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0	(nonexistent)
+++ modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0	(revision 47450)

Property changes on: modules/uoa-validator-admin/tags/uoa-validator-admin-2.0.0
___________________________________________________________________
Added: svn:ignore
## -0,0 +1,5 ##
+target
+.classpath
+.settings
+.project
+*.sh
Index: modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/java/eu/dnetlib/validator/admin/actions/login/SendPassword.java
===================================================================
--- modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/java/eu/dnetlib/validator/admin/actions/login/SendPassword.java	(nonexistent)
+++ modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/java/eu/dnetlib/validator/admin/actions/login/SendPassword.java	(revision 47450)
@@ -0,0 +1,59 @@
+package eu.dnetlib.validator.admin.actions.login;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.apache.log4j.Logger;
+
+import com.opensymphony.xwork2.Action;
+
+import eu.dnetlib.validator.admin.actions.BaseValidatorAction;
+
+public class SendPassword extends BaseValidatorAction {
+
+	private static final long serialVersionUID = 7540821478579531671L;
+	private Logger logger = Logger.getLogger(SendPassword.class);
+	
+	private String email;
+
+	public String execute() {
+		this.clearErrorsAndMessages();
+		try {
+			logger.debug("sending password to user " + email);
+			List<String> to = new ArrayList<String>();
+			to.add(this.getEmail());
+			String securityCode = this.getUserAPI().prepareResetPassword(this.getEmail());
+			this.getEmailer().sendMail(to, this.getText("forgotPassword.mail.Subject"), this.getText("forgotPassword.mail.Body1") + ": " + this.getValBaseUrl() + "/resetPassword.action?securityCode=" + securityCode + "\n\n" + this.getText("forgotPassword.mail.Body2") + ": " + securityCode, false, null);
+			this.addActionMessage(this.getText("forgotPassword.message"));
+			return Action.SUCCESS;
+		} catch (Exception e) {
+			logger.error("error sending password to user " + email, e);
+			this.addActionError(this.getText("generic.error"));
+			return "exception";
+		}
+	}
+
+	public void validate() {
+		this.clearErrors();
+		try {
+			if (!this.getUserAPI().userExists(this.getEmail())) {
+				this.addActionError(this.getText("login.userNotExists"));
+				return;
+			}
+//			if (!this.getUserAPI().isUserActivated(this.getEmail())) {
+//				this.addActionError(this.getText("login.notActivated"));
+//				return;
+//			}
+		} catch (Exception e) {
+			this.addActionError(e.toString());
+		}
+	}
+
+	public String getEmail() {
+		return email;
+	}
+
+	public void setEmail(String email) {
+		this.email = email;
+	}
+}
Index: modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/images/re3data.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/images/re3data.png
===================================================================
--- modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/images/re3data.png	(nonexistent)
+++ modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/images/re3data.png	(revision 47450)

Property changes on: modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/images/re3data.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/java/eu/dnetlib/validator/admin/actions/login/AuthenticationInterceptor.java
===================================================================
--- modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/java/eu/dnetlib/validator/admin/actions/login/AuthenticationInterceptor.java	(nonexistent)
+++ modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/java/eu/dnetlib/validator/admin/actions/login/AuthenticationInterceptor.java	(revision 47450)
@@ -0,0 +1,35 @@
+package eu.dnetlib.validator.admin.actions.login;
+
+import java.util.Map;
+
+import com.opensymphony.xwork2.Action;
+import com.opensymphony.xwork2.ActionInvocation;
+import com.opensymphony.xwork2.interceptor.Interceptor;
+
+import eu.dnetlib.validator.admin.config.Constants;
+
+public class AuthenticationInterceptor implements Interceptor {
+
+	private static final long serialVersionUID = 977098762082596481L;
+
+	@Override
+	public void destroy() {
+
+	}
+
+	@Override
+	public void init() {
+
+	}
+
+	@Override
+	public String intercept(ActionInvocation actionInvocation) throws Exception {
+		Map<String, Object> session = actionInvocation.getInvocationContext().getSession();
+		String auth = (String) session.get(Constants.loggedInField);
+
+		if (auth == null) {
+			return Action.LOGIN;
+		}
+		return actionInvocation.invoke();
+	}
+}
\ No newline at end of file
Index: modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/images/error_icon_24.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/images/error_icon_24.png
===================================================================
--- modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/images/error_icon_24.png	(nonexistent)
+++ modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/images/error_icon_24.png	(revision 47450)

Property changes on: modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/images/error_icon_24.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/java/eu/dnetlib/validator/admin/actions/users/ActivateAccount.java
===================================================================
--- modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/java/eu/dnetlib/validator/admin/actions/users/ActivateAccount.java	(nonexistent)
+++ modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/java/eu/dnetlib/validator/admin/actions/users/ActivateAccount.java	(revision 47450)
@@ -0,0 +1,48 @@
+package eu.dnetlib.validator.admin.actions.users;
+
+import org.apache.log4j.Logger;
+
+import com.opensymphony.xwork2.Action;
+
+import eu.dnetlib.validator.admin.actions.BaseValidatorAction;
+
+public class ActivateAccount extends BaseValidatorAction {
+
+	private static final long serialVersionUID = 4680016183168923054L;
+	private Logger logger = Logger.getLogger(ActivateAccount.class);
+	
+	private String activationId;
+
+	public String execute() {
+		this.clearErrorsAndMessages();
+		try {
+			logger.debug("activating user account with activation id " + activationId);
+			if (this.getUserAPI().activateUser(this.getActivationId()))
+				this.addActionMessage(this.getText("registration.okAccountActivation"));
+			else
+				this.addActionMessage(this.getText("registration.okAccountAlreadyActivation"));
+			return Action.SUCCESS;
+		} catch (Exception e) {
+			logger.error("error activating user account with activation id " + activationId, e);
+			this.addActionError(this.getText("generic.error"));
+			reportException(e);
+			return "exception";
+		}
+	}
+
+	public void validate() {
+		this.clearErrors();
+		if (this.getActivationId() == null || this.getActivationId().length() == 0) {
+			this.addActionError(this.getText("noActivationId"));
+			return;
+		}
+	}
+
+	public String getActivationId() {
+		return activationId;
+	}
+
+	public void setActivationId(String activationId) {
+		this.activationId = activationId;
+	}
+}
\ No newline at end of file
Index: modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/images/OpenAIREplus_logo.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/images/OpenAIREplus_logo.png
===================================================================
--- modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/images/OpenAIREplus_logo.png	(nonexistent)
+++ modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/images/OpenAIREplus_logo.png	(revision 47450)

Property changes on: modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/images/OpenAIREplus_logo.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/java/eu/dnetlib/validator/admin/actions/rulesets/DeleteRuleSet.java
===================================================================
--- modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/java/eu/dnetlib/validator/admin/actions/rulesets/DeleteRuleSet.java	(nonexistent)
+++ modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/java/eu/dnetlib/validator/admin/actions/rulesets/DeleteRuleSet.java	(revision 47450)
@@ -0,0 +1,39 @@
+package eu.dnetlib.validator.admin.actions.rulesets;
+
+
+import org.apache.log4j.Logger;
+
+import com.opensymphony.xwork2.Action;
+
+import eu.dnetlib.validator.admin.actions.BaseValidatorAction;
+
+public class DeleteRuleSet extends BaseValidatorAction {
+
+	private static final long serialVersionUID = 4858147485197818532L;
+	private int setId;
+	private static final Logger logger = Logger.getLogger(DeleteRuleSet.class);
+		
+	public int getSetId() {
+		return setId;
+	}
+
+	public void setSetId(int setId) {
+		this.setId = setId;
+	}
+
+	public String execute() {
+		this.clearErrorsAndMessages();
+		try {
+			logger.debug("deleting rule set "+setId);
+			this.getValidatorAdminAPI().deleteRuleSet(setId);
+			this.addActionMessage(this.getText("deleteRuleSet.success"));
+			return Action.SUCCESS;
+		}
+		catch(Exception e) {
+			logger.error("Error deleting ruleset", e);
+			this.addActionError(this.getText("generic.error"));
+			reportException(e);
+			return "exception";
+		}
+	}
+}
\ No newline at end of file
Index: modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/images/menu_dropdown_level1_parent_blue.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/images/menu_dropdown_level1_parent_blue.png
===================================================================
--- modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/images/menu_dropdown_level1_parent_blue.png	(nonexistent)
+++ modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/images/menu_dropdown_level1_parent_blue.png	(revision 47450)

Property changes on: modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/images/menu_dropdown_level1_parent_blue.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/java/eu/dnetlib/validator/admin/actions/users/EditUser.java
===================================================================
--- modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/java/eu/dnetlib/validator/admin/actions/users/EditUser.java	(nonexistent)
+++ modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/java/eu/dnetlib/validator/admin/actions/users/EditUser.java	(revision 47450)
@@ -0,0 +1,66 @@
+package eu.dnetlib.validator.admin.actions.users;
+
+import java.util.Map;
+
+import org.apache.log4j.Logger;
+import org.apache.struts2.interceptor.SessionAware;
+
+import com.opensymphony.xwork2.Action;
+
+import eu.dnetlib.domain.functionality.UserProfile;
+import eu.dnetlib.validator.admin.actions.BaseValidatorAction;
+import eu.dnetlib.validator.admin.config.Constants;
+
+public class EditUser extends BaseValidatorAction implements SessionAware {
+
+	private static final long serialVersionUID = -362061491263257713L;
+	private Logger logger = Logger.getLogger(EditUser.class);
+
+	private UserProfile user;
+
+	private Map<String, Object> session;
+
+	public String execute() {
+		this.clearErrorsAndMessages();
+		try {
+			logger.debug("getting for edit user " + (String) session.get(Constants.loggedInField));
+				user = this.getUserAPI().getUser((String) session.get(Constants.loggedInField));
+			return Action.SUCCESS;
+		} catch (Exception e) {
+			logger.error("error getting for edit user " + (String) session.get(Constants.loggedInField), e);
+			this.addActionError(this.getText("generic.error"));
+			reportException(e);
+			return "exception";
+		}
+	}
+
+	public String edit() {
+		this.clearErrorsAndMessages();
+		try {
+			logger.debug("editing user " + (String) session.get(Constants.loggedInField));
+			this.getUserAPI().editUser(user);
+			this.addActionMessage(this.getText("editUser.success"));
+			return Action.SUCCESS;
+		} catch (Exception e) {
+			logger.error("error editing user " + (String) session.get(Constants.loggedInField), e);
+			this.addActionError(this.getText("generic.error"));
+			reportException(e);
+			return "exception";
+		}
+
+	}
+
+
+	public UserProfile getUser() {
+		return user;
+	}
+
+	public void setUser(UserProfile user) {
+		this.user = user;
+	}
+
+	@Override
+	public void setSession(Map<String, Object> session) {
+		this.session = session;
+	}
+}
Index: modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/java/eu/dnetlib/validator/admin/actions/rules/PrepareAddRule.java
===================================================================
--- modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/java/eu/dnetlib/validator/admin/actions/rules/PrepareAddRule.java	(nonexistent)
+++ modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/java/eu/dnetlib/validator/admin/actions/rules/PrepareAddRule.java	(revision 47450)
@@ -0,0 +1,101 @@
+package eu.dnetlib.validator.admin.actions.rules;
+
+import java.util.List;
+import java.util.Set;
+
+import org.apache.log4j.Logger;
+
+import com.opensymphony.xwork2.Action;
+
+import eu.dnetlib.domain.functionality.validator.Rule;
+import eu.dnetlib.validator.admin.actions.BaseValidatorAction;
+import eu.dnetlib.validator.admin.api.ValidatorAdminException;
+import eu.dnetlib.validator.admin.constants.TypesAndTableNames;
+
+public class PrepareAddRule extends BaseValidatorAction {
+
+	private static final long serialVersionUID = -8414397033694574297L;
+	private Logger logger = Logger.getLogger(PrepareAddRule.class);
+
+	private String type;
+	private Boolean forCris, forUsage = false;
+	private List<String> labels;
+	private String jobType;
+	private Set<String> entityTypes;
+	private List<Rule> rules;
+
+
+	public String execute() {
+		this.clearErrorsAndMessages();
+		logger.debug("preparing to add rule of type " + type );
+		logger.debug("cris:  " + forCris);
+		entityTypes = TypesAndTableNames.getCrisEntities().keySet();
+		
+		if (jobType.equals("usage"))
+			forUsage = true; 
+		try {
+			labels = getValidatorAdminAPI().getRuleLabels(type, forUsage, forCris);
+		} catch (ValidatorAdminException e) {
+			return Action.ERROR;
+		}
+		if (type.equals("ChainRule")) {
+			try {
+				rules = this.getValidatorAdminAPI().getAllRules();
+			} catch (ValidatorAdminException e) {
+				return Action.ERROR;
+			}
+		}
+
+		return Action.SUCCESS;
+	}
+	
+
+	public List<String> getLabels() {
+		return labels;
+	}
+
+	public void setLabels(List<String> labels) {
+		this.labels = labels;
+	}
+
+	public String getType() {
+		return type;
+	}
+
+	public String getJobType() {
+		return jobType;
+	}
+
+	public void setJobType(String jobType) {
+		this.jobType = jobType;
+	}
+
+
+	public void setType(String type) {
+		this.type = type;
+	}
+
+	public List<Rule> getRules() {
+		return rules;
+	}
+
+	public void setRules(List<Rule> rules) {
+		this.rules = rules;
+	}
+
+	public Set<String> getEntityTypes() {
+		return entityTypes;
+	}
+
+	public void setEntityTypes(Set<String> entityTypes) {
+		this.entityTypes = entityTypes;
+	}
+
+	public Boolean getForCris() {
+		return forCris;
+	}
+
+	public void setForCris(Boolean forCris) {
+		this.forCris = forCris;
+	}
+}
Index: modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/images/error_24.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/images/error_24.png
===================================================================
--- modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/images/error_24.png	(nonexistent)
+++ modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/images/error_24.png	(revision 47450)

Property changes on: modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/images/error_24.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/images/tick.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/images/tick.png
===================================================================
--- modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/images/tick.png	(nonexistent)
+++ modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/images/tick.png	(revision 47450)

Property changes on: modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/images/tick.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/java/eu/dnetlib/validator/admin/actions/jobs/DatabaseCurator.java
===================================================================
--- modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/java/eu/dnetlib/validator/admin/actions/jobs/DatabaseCurator.java	(nonexistent)
+++ modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/java/eu/dnetlib/validator/admin/actions/jobs/DatabaseCurator.java	(revision 47450)
@@ -0,0 +1,83 @@
+package eu.dnetlib.validator.admin.actions.jobs;
+
+import java.text.ParseException;
+import java.text.SimpleDateFormat;
+
+import org.apache.log4j.Logger;
+
+import com.opensymphony.xwork2.Action;
+
+import eu.dnetlib.validator.admin.actions.BaseValidatorAction;
+import eu.dnetlib.validator.admin.api.ValidatorAdminException;
+
+public class DatabaseCurator extends BaseValidatorAction {
+
+	private static final long serialVersionUID = -1868055729316139461L;
+	private static final Logger logger = Logger.getLogger(DatabaseCurator.class);
+	private String inDate = null;
+	private String mode, period;
+
+	public String execute() {
+		this.clearErrorsAndMessages();
+		int jobsDeleted = 0;
+		try {
+			jobsDeleted = this.getValidatorAdminAPI().deleteOldJobs(inDate, period, mode);
+		} catch (ValidatorAdminException e) {
+			logger.error("Error deleting old jobs", e);
+			this.addActionError(this.getText("generic.error"));
+			reportException(e);
+			return "input-problem";
+		}
+		
+		this.addActionMessage(jobsDeleted + " " + this.getText("manageJobs.deleteJobs.success"));
+		return Action.SUCCESS;
+	}
+	
+
+	public void validate() {
+		this.clearErrors();
+		if (!mode.equalsIgnoreCase("uncompleted_only")){
+			if (inDate == null) {
+				this.addActionError(this.getText("wrongFieldValue"));
+				return;
+			}
+			SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
+			if (inDate.trim().length() != dateFormat.toPattern().length()) {
+				this.addActionError(this.getText("wrongFieldValue"));
+				return;
+			}
+			dateFormat.setLenient(false);
+			try {
+				dateFormat.parse(inDate.trim());
+			} catch (ParseException pe) {
+				this.addActionError(this.getText("wrongFieldValue"));
+				return;
+			}
+		}
+	}
+
+	public String getInDate() {
+		return inDate;
+	}
+
+	public void setInDate(String inDate) {
+		this.inDate = inDate;
+	}
+
+	public String getMode() {
+		return mode;
+	}
+
+	public void setMode(String mode) {
+		this.mode = mode;
+	}
+
+	public String getPeriod() {
+		return period;
+	}
+
+	public void setPeriod(String period) {
+		this.period = period;
+	}
+
+}
Index: modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/java/eu/dnetlib/validator/admin/actions/rulesets/CreateRuleSet.java
===================================================================
--- modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/java/eu/dnetlib/validator/admin/actions/rulesets/CreateRuleSet.java	(nonexistent)
+++ modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/java/eu/dnetlib/validator/admin/actions/rulesets/CreateRuleSet.java	(revision 47450)
@@ -0,0 +1,87 @@
+package eu.dnetlib.validator.admin.actions.rulesets;
+
+import java.util.Set;
+
+import org.apache.log4j.Logger;
+
+import com.opensymphony.xwork2.Action;
+
+import eu.dnetlib.domain.functionality.validator.RuleSet;
+import eu.dnetlib.validator.admin.actions.BaseValidatorAction;
+
+public class CreateRuleSet extends BaseValidatorAction {
+
+	private static final long serialVersionUID = 5623461974078831740L;
+	
+	private Set<Integer> chosenContentRules = null;
+	private Set<Integer> chosenUsageRules = null;	
+	private String funct = null;
+	private RuleSet ruleSet;
+	private static final Logger logger = Logger.getLogger(CreateRuleSet.class);
+	
+	public String execute() {
+		this.clearErrorsAndMessages();
+		try {
+			logger.debug("creating a new rule set "+ruleSet.getName());
+			ruleSet.setUsageRulesIds(chosenUsageRules);
+			ruleSet.setContentRulesIds(chosenContentRules);
+			if(funct.equals("create")) {
+				this.getValidatorAdminAPI().storeRuleSet(ruleSet, false);
+				this.addActionMessage(this.getText("createRuleSet.success"));
+			}
+			else if(funct.equals("edit")) {
+				logger.debug("chosen content: " + chosenContentRules);
+				this.getValidatorAdminAPI().storeRuleSet(ruleSet, true);
+				this.addActionMessage(this.getText("createRuleSet.success"));
+			}
+			return Action.SUCCESS;
+		}
+		catch(Exception e) {
+			logger.error("Error creating/editing ruleset", e);
+			this.addActionError(this.getText("generic.error"));
+			reportException(e);
+			return "exception";
+		}
+	}
+	
+	public void validate() {
+		this.clearErrors();
+		if((chosenContentRules == null || chosenContentRules.isEmpty())||(chosenUsageRules == null || chosenUsageRules.isEmpty()))
+			this.addActionError(this.getText("createRuleSets.atLeastOneRule"));
+		if(funct == null)
+			this.addActionError(this.getText("uknownError"));
+	}
+	
+	public String getFunct() {
+		return funct;
+	}
+	public void setFunct(String funct) {
+		this.funct = funct;
+	}	
+
+	public Set<Integer> getChosenContentRules() {
+		return chosenContentRules;
+	}
+
+	public void setChosenContentRules(Set<Integer> chosenContentRules) {
+		this.chosenContentRules = chosenContentRules;
+	}
+
+	public Set<Integer> getChosenUsageRules() {
+		return chosenUsageRules;
+	}
+
+	public void setChosenUsageRules(Set<Integer> chosenUsageRules) {
+		this.chosenUsageRules = chosenUsageRules;
+	}
+
+	public RuleSet getRuleSet() {
+		return ruleSet;
+	}
+
+	public void setRuleSet(RuleSet ruleSet) {
+		this.ruleSet = ruleSet;
+	}
+	
+	
+}	
Index: modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/images/checkmark_28.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/images/checkmark_28.png
===================================================================
--- modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/images/checkmark_28.png	(nonexistent)
+++ modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/images/checkmark_28.png	(revision 47450)

Property changes on: modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/images/checkmark_28.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/java/eu/dnetlib/validator/admin/actions/rules/DeleteRule.java
===================================================================
--- modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/java/eu/dnetlib/validator/admin/actions/rules/DeleteRule.java	(nonexistent)
+++ modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/java/eu/dnetlib/validator/admin/actions/rules/DeleteRule.java	(revision 47450)
@@ -0,0 +1,48 @@
+package eu.dnetlib.validator.admin.actions.rules;
+
+
+import org.apache.log4j.Logger;
+
+import com.opensymphony.xwork2.Action;
+
+import eu.dnetlib.validator.admin.actions.BaseValidatorAction;
+import eu.dnetlib.validator.admin.api.ValidatorAdminException;
+
+public class DeleteRule extends BaseValidatorAction {
+
+	private static final long serialVersionUID = -2888943921398211370L;
+	private static final Logger logger = Logger.getLogger(DeleteRule.class);
+	private int ruleId;
+	
+	public String execute() {
+		this.clearErrorsAndMessages();
+		logger.debug("deleting rule");
+		String ret = null;
+		try {
+			logger.debug("deleting rule with id "+ruleId);
+			ret = this.getValidatorAdminAPI().deleteRule(ruleId);
+		}
+		catch (ValidatorAdminException e) {
+			logger.error("Error deleting rule with id "+ruleId, e);
+			this.addActionError(this.getText("generic.error"));
+			reportException(e);
+			return "exception";
+		}
+		
+		if (ret != null) {
+			this.addActionError(this.getText(ret));
+			return "input-problem";
+		}
+		this.addActionMessage(this.getText("deleteRule.success"));
+		return Action.SUCCESS;
+	}
+
+	public int getRuleId() {
+		return ruleId;
+	}
+
+	public void setRuleId(int ruleId) {
+		this.ruleId = ruleId;
+	}
+	
+}
Index: modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/images/tick1.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/images/tick1.png
===================================================================
--- modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/images/tick1.png	(nonexistent)
+++ modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/images/tick1.png	(revision 47450)

Property changes on: modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/images/tick1.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/java/eu/dnetlib/validator/admin/actions/rules/EditRule.java
===================================================================
--- modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/java/eu/dnetlib/validator/admin/actions/rules/EditRule.java	(nonexistent)
+++ modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/java/eu/dnetlib/validator/admin/actions/rules/EditRule.java	(revision 47450)
@@ -0,0 +1,75 @@
+package eu.dnetlib.validator.admin.actions.rules;
+
+import org.apache.log4j.Logger;
+
+import com.opensymphony.xwork2.Action;
+
+import eu.dnetlib.domain.functionality.validator.Rule;
+import eu.dnetlib.validator.admin.actions.BaseValidatorAction;
+import eu.dnetlib.validator.admin.api.ValidatorAdminException;
+
+public class EditRule extends BaseValidatorAction {
+
+	private static final long serialVersionUID = -8296545383286127915L;
+	private Rule rule;
+	private String[] inputs;
+	private String funct = null;
+	private static final Logger logger = Logger.getLogger(EditRule.class);
+
+	public String execute() {
+		this.clearErrorsAndMessages();
+		String ret = null;
+		logger.debug("editing rule " + rule.getId());
+		try {
+			logger.debug("ruleType: " + rule.getType());
+			if (funct.equals("clone")) {
+				if (rule.getJob_type().toLowerCase().contains("usage"))
+					rule.setJob_type("usage");
+				else if (rule.getJob_type().toLowerCase().contains("content"))
+					rule.setJob_type("content");
+				ret = this.getValidatorAdminAPI().storeRule(rule, inputs, false);
+			} else {
+				ret = this.getValidatorAdminAPI().storeRule(rule, inputs, true);
+			}
+			
+		} catch (ValidatorAdminException e) {
+			logger.error("Error editing rule", e);
+			this.addActionError(this.getText("generic.error"));
+			reportException(e);
+			return "exception";
+		}
+
+		if (ret != null) {
+			this.addActionError(this.getText(ret));
+			return "input-problem";
+		}
+
+		this.addActionMessage(this.getText("editRule.success"));
+		return Action.SUCCESS;
+	}
+
+	public Rule getRule() {
+		return rule;
+	}
+
+	public void setRule(Rule rule) {
+		this.rule = rule;
+	}
+
+	public String[] getInputs() {
+		return inputs;
+	}
+
+	public void setInputs(String[] inputs) {
+		this.inputs = inputs;
+	}
+
+	public String getFunct() {
+		return funct;
+	}
+
+	public void setFunct(String funct) {
+		this.funct = funct;
+	}
+	
+}
Index: modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/images/box_info.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/images/box_info.png
===================================================================
--- modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/images/box_info.png	(nonexistent)
+++ modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/images/box_info.png	(revision 47450)

Property changes on: modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/images/box_info.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/java/eu/dnetlib/validator/admin/actions/help/HelpPage.java
===================================================================
--- modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/java/eu/dnetlib/validator/admin/actions/help/HelpPage.java	(nonexistent)
+++ modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/java/eu/dnetlib/validator/admin/actions/help/HelpPage.java	(revision 47450)
@@ -0,0 +1,8 @@
+package eu.dnetlib.validator.admin.actions.help;
+
+import eu.dnetlib.validator.admin.actions.BaseValidatorAction;
+
+@SuppressWarnings("serial")
+public class HelpPage extends BaseValidatorAction{
+
+}
Index: modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/images/zebra_list.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/images/zebra_list.png
===================================================================
--- modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/images/zebra_list.png	(nonexistent)
+++ modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/images/zebra_list.png	(revision 47450)

Property changes on: modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/images/zebra_list.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/java/eu/dnetlib/validator/admin/actions/rules/FieldPair.java
===================================================================
--- modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/java/eu/dnetlib/validator/admin/actions/rules/FieldPair.java	(nonexistent)
+++ modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/java/eu/dnetlib/validator/admin/actions/rules/FieldPair.java	(revision 47450)
@@ -0,0 +1,24 @@
+package eu.dnetlib.validator.admin.actions.rules;
+
+public class FieldPair {
+
+	private String fieldName, fieldValue;
+
+	public String getFieldName() {
+		return fieldName;
+	}
+
+	public void setFieldName(String fieldName) {
+		this.fieldName = fieldName;
+	}
+
+	public String getFieldValue() {
+		return fieldValue;
+	}
+
+	public void setFieldValue(String fieldValue) {
+		this.fieldValue = fieldValue;
+	}
+	
+	
+}
Index: modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/images/box_download.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/images/box_download.png
===================================================================
--- modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/images/box_download.png	(nonexistent)
+++ modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/images/box_download.png	(revision 47450)

Property changes on: modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/images/box_download.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/images/exclamation-icon.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/images/exclamation-icon.png
===================================================================
--- modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/images/exclamation-icon.png	(nonexistent)
+++ modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/images/exclamation-icon.png	(revision 47450)

Property changes on: modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/images/exclamation-icon.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/images/readmore.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/images/readmore.png
===================================================================
--- modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/images/readmore.png	(nonexistent)
+++ modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/images/readmore.png	(revision 47450)

Property changes on: modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/images/readmore.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/java/eu/dnetlib/validator/admin/api/impls/UserApiLocal.java
===================================================================
--- modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/java/eu/dnetlib/validator/admin/api/impls/UserApiLocal.java	(nonexistent)
+++ modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/java/eu/dnetlib/validator/admin/api/impls/UserApiLocal.java	(revision 47450)
@@ -0,0 +1,135 @@
+package eu.dnetlib.validator.admin.api.impls;
+
+import java.math.BigInteger;
+import java.security.MessageDigest;
+import java.util.UUID;
+
+import org.apache.log4j.Logger;
+import org.springframework.transaction.annotation.Propagation;
+import org.springframework.transaction.annotation.Transactional;
+
+import eu.dnetlib.domain.functionality.UserProfile;
+import eu.dnetlib.validator.admin.api.UserApi;
+import eu.dnetlib.validator.commons.dao.users.UsersDAO;
+
+@Transactional(propagation = Propagation.REQUIRED)
+public class UserApiLocal implements UserApi {
+
+	private static Logger logger = Logger.getLogger(UserApiLocal.class);
+	private UsersDAO usersDao;
+
+	@Override
+	@Transactional()
+	public boolean activateUser(String activationId) throws Exception {
+		usersDao.activateUser(activationId);
+		return true;
+	}
+
+	@Override
+	@Transactional(propagation = Propagation.REQUIRED)
+	public String addUser(String username, String email, String password, String firstName, String lastName,  String institution) throws Exception {
+		String hashword;
+		MessageDigest md5 = MessageDigest.getInstance("MD5");
+		md5.update(password.getBytes());
+		BigInteger hash = new BigInteger(1, md5.digest());
+		hashword = hash.toString(16);
+		String activationId = UUID.randomUUID().toString();
+		UserProfile newUser = new UserProfile();
+		newUser.setEmail(email);
+		newUser.setPassword(hashword);
+		newUser.setFirstname(firstName);
+		newUser.setLastname(lastName);
+		newUser.setUsername(username);
+		newUser.setInstitution(institution);
+		newUser.setActivationId(activationId);
+		usersDao.save(newUser);
+		return activationId;
+	}
+
+	@Override
+	public boolean correctCreds(String email, String password) throws Exception {
+		String hashword;
+		MessageDigest md5 = MessageDigest.getInstance("MD5");
+		md5.update(password.getBytes());
+		BigInteger hash = new BigInteger(1, md5.digest());
+		hashword = hash.toString(16);
+		
+		if (usersDao.checkCorrectCreds(email, hashword)) {
+			logger.debug("Password verified");
+			return true;
+		} else {
+			logger.debug("no user found with email: " + email + " and pass: " + password + " (" + hashword + ")");
+
+			return false;
+		}
+	}
+
+	@Override
+	public boolean isAdmin(String email) throws Exception {
+		return usersDao.isAdmin(email);
+	}
+
+	@Override
+	public boolean isUserActivated(String email) throws Exception {
+		return usersDao.isActivated(email);
+	}
+
+	@Override
+	@Transactional(propagation = Propagation.REQUIRED)
+	public String prepareResetPassword(String email) throws Exception {
+		String uuid = UUID.randomUUID().toString();
+		usersDao.prepareResetPassword(uuid,email);
+		return uuid;
+	}
+
+	@Override
+	@Transactional(propagation = Propagation.REQUIRED)
+	public void resetPassword(String uuid, String password) throws Exception {
+		String hashword;
+		MessageDigest md5 = MessageDigest.getInstance("MD5");
+		md5.update(password.getBytes());
+		BigInteger hash = new BigInteger(1, md5.digest());
+		hashword = hash.toString(16);
+		usersDao.ResetPassword(uuid, hashword);
+	}
+
+	@Override
+	public boolean userExists(String email) throws Exception {
+		return usersDao.userExists(email);
+	}
+
+	@Override
+	public void editUser(UserProfile user) throws Exception {
+		this.usersDao.save(user);
+
+	}
+
+	@Override
+	public boolean usernameExists(String username) throws Exception {
+		return usersDao.usernameExists(username);
+	}
+
+	@Override
+	public String getEmailFromUsername(String username) throws Exception {
+		UserProfile user = usersDao.get(username);
+		if (user == null)
+			return null;
+		else
+			return usersDao.get(username).getEmail();
+	}
+
+	@Override
+	public UserProfile getUser(String userIdentifier) throws Exception {
+		return usersDao.get(userIdentifier);
+	}
+
+	public UsersDAO getUsersDao() {
+		return usersDao;
+	}
+
+	public void setUsersDao(UsersDAO usersDao) {
+		this.usersDao = usersDao;
+	}
+
+	
+}
Index: modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/java/eu/dnetlib/validator/admin/api/ValidatorAdminException.java
===================================================================
--- modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/java/eu/dnetlib/validator/admin/api/ValidatorAdminException.java	(nonexistent)
+++ modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/java/eu/dnetlib/validator/admin/api/ValidatorAdminException.java	(revision 47450)
@@ -0,0 +1,29 @@
+package eu.dnetlib.validator.admin.api;
+
+public class ValidatorAdminException extends Exception {
+
+	/**
+	 * 
+	 * @author Nikon Gasparis
+	 *
+	 */
+	
+	private static final long serialVersionUID = -80175916822821147L;
+
+	public ValidatorAdminException() {
+		super();
+	}
+	
+	public  ValidatorAdminException(String message) {
+		super(message);
+	}
+
+	public  ValidatorAdminException(String message, Throwable cause) {
+		super(message, cause);
+	}
+
+	public  ValidatorAdminException(Throwable cause) {
+		super(cause);
+	}
+}
+
Index: modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/images/info-left.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/images/info-left.png
===================================================================
--- modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/images/info-left.png	(nonexistent)
+++ modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/images/info-left.png	(revision 47450)

Property changes on: modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/images/info-left.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/java/eu/dnetlib/validator/admin/constants/FieldNames.java
===================================================================
--- modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/java/eu/dnetlib/validator/admin/constants/FieldNames.java	(nonexistent)
+++ modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/java/eu/dnetlib/validator/admin/constants/FieldNames.java	(revision 47450)
@@ -0,0 +1,37 @@
+package eu.dnetlib.validator.admin.constants;
+
+public class FieldNames {
+	
+	static public String RULE_ID="id";
+	static public String RULE_NAME="name";
+	static public String RULE_DESCRIPTION="description";
+	static public String RULE_TYPE="type";
+	static public String RULE_MANDATORY="mandatory";
+	static public String RULE_SUCCESS="success";
+	static public String RULE_WEIGHT="weight";
+	static public String RULE_PROVIDER_INFORMATION="provider_information";
+	static public String RULE_VISIBLE="visible";
+	static public String RULE_JOBTYPE="job_type";
+	
+	static public String RULE_RULESFK="Rules_id";
+	
+	static public String RULE_VOCABULARY_WORDS="terms";
+	static public String RULE_VOCABULARY_WORDS_TYPE="terms_type";
+	
+	static public String RULE_CRIS_ENTITY="cris_entity";
+	
+	static public String RULE_CRIS_CLASS_VOCABULARY_SCHEME_ID="scheme_id";
+	
+	static public String RULE_CRIS_REFERENTIAL_INTEGRITY_ENTITY_ACRONYM = "entity_acronym";
+	static public String RULE_CRIS_REFERENTIAL_INTEGRITY_RELATED_ENTITY_ACRONYM = "related_entity_acronym";
+	static public String RULE_CRIS_REFERENTIAL_INTEGRITY_RELATED_ENTITY_XPATH = "related_entity_xpath";
+	
+	static public String RULE_CARDINALITY_LESSTHAN="less_than";
+	static public String RULE_CARDINALITY_GREATERTHAN="greater_than";
+	
+	static public String RULE_REGULAREXPRESSION_REGEXPR ="regular_expression";
+	
+	static public String RULE_NOTCONNFUSEDFIELDS ="fields";
+	
+//	static public String JOB_CONTENT="OAI Content Validation";
+}
Index: modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/images/line_dotted.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/images/line_dotted.png
===================================================================
--- modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/images/line_dotted.png	(nonexistent)
+++ modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/images/line_dotted.png	(revision 47450)

Property changes on: modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/images/line_dotted.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/images/inprogress.jpg
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/images/inprogress.jpg
===================================================================
--- modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/images/inprogress.jpg	(nonexistent)
+++ modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/images/inprogress.jpg	(revision 47450)

Property changes on: modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/images/inprogress.jpg
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/java/eu/dnetlib/validator/admin/api/impls/ValidatorAdminApiImpl.java
===================================================================
--- modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/java/eu/dnetlib/validator/admin/api/impls/ValidatorAdminApiImpl.java	(nonexistent)
+++ modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/java/eu/dnetlib/validator/admin/api/impls/ValidatorAdminApiImpl.java	(revision 47450)
@@ -0,0 +1,499 @@
+package eu.dnetlib.validator.admin.api.impls;
+
+import java.io.BufferedReader;
+import java.io.StringReader;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.Properties;
+
+import org.apache.log4j.Logger;
+import org.springframework.transaction.annotation.Propagation;
+import org.springframework.transaction.annotation.Transactional;
+
+import eu.dnetlib.domain.functionality.validator.Rule;
+import eu.dnetlib.domain.functionality.validator.RuleSet;
+import eu.dnetlib.domain.functionality.validator.StoredJob;
+import eu.dnetlib.validator.admin.actions.rules.FieldPair;
+import eu.dnetlib.validator.admin.api.ValidatorAdminAPI;
+import eu.dnetlib.validator.admin.api.ValidatorAdminException;
+import eu.dnetlib.validator.admin.constants.FieldNames;
+import eu.dnetlib.validator.admin.constants.FieldsAndDetails;
+import eu.dnetlib.validator.admin.constants.TypesAndTableNames;
+import eu.dnetlib.validator.admin.constants.fielddetails.FieldDetails;
+import eu.dnetlib.validator.commons.dao.jobs.JobsDAO;
+import eu.dnetlib.validator.commons.dao.rules.RulesDAO;
+import eu.dnetlib.validator.commons.dao.rules.RulesetsDAO;
+import eu.dnetlib.validator.commons.dao.users.UsersDAO;
+import eu.dnetlib.validator.commons.email.Emailer;
+
+
+/**
+ * 
+ * @author Nikon Gasparis
+ *
+ */
+
+@Transactional(propagation = Propagation.REQUIRED)
+public class ValidatorAdminApiImpl implements ValidatorAdminAPI {
+	
+	private JobsDAO jobsDao;
+	private RulesetsDAO rulesetsDao;
+	private RulesDAO rulesDao;
+	private UsersDAO usersDao;
+
+	private EmailBuilder emailBuilder;
+	
+	private Emailer emailer = null;
+	private List<String> masterAdmins = new ArrayList<String>();
+	private List<String> secondaryAdmins = new ArrayList<String>();
+	private String registrationsReportEmail;
+	private static Logger logger = Logger.getLogger(ValidatorAdminApiImpl.class);
+
+	public void start(){
+	}
+
+	@Override
+	public Rule getRule(int ruleId) throws ValidatorAdminException {
+		try {
+			logger.debug("getting rule with id: "+ruleId);
+			return rulesDao.get(ruleId);
+		} catch (Exception e) {
+			logger.error("Error getting rule ", e);
+			throw new ValidatorAdminException(e);
+		}
+		
+	}
+		
+	@Override
+	public List<FieldPair> getRuleValuePairs(Rule rule) throws ValidatorAdminException {
+		try {
+			logger.debug("getting rule value pairs");
+			boolean forUsage = false;
+			if( rule.getJob_type().equals("usage"))
+				forUsage = true;
+			List<String> labels = this.getRuleLabels(rule.getType(), forUsage, rule.isFor_cris());
+
+			List<FieldPair> ruleValues = new ArrayList<FieldPair>();
+			for (String fieldName : labels) {
+				FieldPair pair = new FieldPair();
+//				String fieldValue=null;
+				pair.setFieldName(fieldName);
+				if (fieldName.split("\\.")[1].equals(FieldNames.RULE_NAME)) {
+					pair.setFieldValue(rule.getName());
+				}
+				else if (fieldName.split("\\.")[1].equals(FieldNames.RULE_DESCRIPTION)) {
+					pair.setFieldValue(rule.getDescription());
+				}
+				else if (fieldName.split("\\.")[1].equals(FieldNames.RULE_MANDATORY)) {
+					pair.setFieldValue(Boolean.toString(rule.isMandatory()));
+				}				
+				else if (fieldName.split("\\.")[1].equals(FieldNames.RULE_WEIGHT)) {
+					pair.setFieldValue(Integer.toString(rule.getWeight()));
+				}
+				else if (fieldName.split("\\.")[1].equals(FieldNames.RULE_PROVIDER_INFORMATION)) {
+					pair.setFieldValue(rule.getProvider_information());
+				}
+				else{
+					pair.setFieldValue(rule.getConfiguration().getProperty(fieldName.split("\\.")[1]));
+				}				
+				logger.debug("getting rule value pairs-addpair: "+fieldName+"-"+rule.getConfiguration().getProperty(fieldName.split("\\.")[1]));
+				ruleValues.add(pair);
+			}
+			return ruleValues;
+		} catch (Exception e) {
+			logger.error("Error getting ruleValue pairs", e);
+			throw new ValidatorAdminException(e);
+		}
+
+	}	
+
+	
+	@Override
+	public List<Rule> getAllRules() throws ValidatorAdminException {
+		try {
+			logger.debug("getting all rules ");
+			return rulesDao.getAllRules();
+		} catch (Exception e) {
+			logger.error("Error getting all rules  to rule pair", e);
+			throw new ValidatorAdminException(e);
+		}	
+	}	
+	
+	@Override
+	@Transactional(propagation = Propagation.REQUIRED)
+	public String storeRule(Rule rule, String[] inputs, Boolean updateExisting) throws ValidatorAdminException {
+		try {
+			logger.debug("edit rule using the inputs of the user");
+			List<String> fields = new ArrayList<String>();
+			List<FieldDetails> generalFields = FieldsAndDetails.getFieldsAndDetails("Rules");
+			List<FieldDetails> usageFields = FieldsAndDetails.getFieldsAndDetails("usage_rules");
+			List<FieldDetails> crisFields = FieldsAndDetails.getFieldsAndDetails("cris_rules");
+			List<FieldDetails> subFields = FieldsAndDetails.getFieldsAndDetails(TypesAndTableNames.getTableNameOfType(rule.getType()));
+			for (FieldDetails field : generalFields) {
+				if (field.isForDet() && !field.getFieldName().equals(FieldNames.RULE_TYPE) && !field.getFieldName().equals(FieldNames.RULE_JOBTYPE))
+					fields.add(field.getFieldName());
+			}
+			if (subFields != null) {
+				for (FieldDetails field : subFields) {
+					if (field.isForDet())
+						fields.add(field.getFieldName());
+				}
+			}
+			if (rule.getJob_type().toLowerCase().contains("usage")) {
+				for (FieldDetails field : usageFields) {
+					if (field.isForDet())
+						fields.add(field.getFieldName());
+				}
+			}
+			if (rule.isFor_cris()) {
+				for (FieldDetails field : crisFields) {
+					if (field.isForDet())
+						fields.add(field.getFieldName());
+				}
+			}
+			Properties pros = new Properties();
+			logger.debug("Fields: " + fields);
+			for (int i = 0; i < inputs.length; i++) {
+				logger.debug("input-" + i + " : "+ inputs[i]);
+			}
+			for (int i = 0; i < inputs.length; i++) {
+				logger.debug("Field: " + fields.get(i) + " - input: " + inputs[i]);
+				if (fields.get(i).equals(FieldNames.RULE_NAME)) {
+					rule.setName(inputs[i]);
+				}
+				else if (fields.get(i).equals(FieldNames.RULE_DESCRIPTION)) {
+					rule.setDescription(inputs[i]);
+				}
+				else if (fields.get(i).equals(FieldNames.RULE_MANDATORY)) {
+					rule.setMandatory(Boolean.parseBoolean(inputs[i]));
+				}				
+				else if (fields.get(i).equals(FieldNames.RULE_WEIGHT)) {
+					rule.setWeight(Integer.parseInt(inputs[i]));
+				}
+				else if (fields.get(i).equals(FieldNames.RULE_PROVIDER_INFORMATION)) {
+					rule.setProvider_information(inputs[i]);
+				}
+				else if (fields.get(i).equals(FieldNames.RULE_CRIS_ENTITY)) {
+					rule.setEntity_type(inputs[i]);
+				}
+				else{
+					if (fields.get(i).equals(FieldNames.RULE_VOCABULARY_WORDS)) {
+						String words = "";
+						BufferedReader bf = new BufferedReader(new StringReader(inputs[i]));
+						String line;
+						while ((line = bf.readLine()) != null) {
+							words += ",";
+							words += line;
+						}
+						words = words.substring(1);
+						pros.setProperty(fields.get(i), words);
+					} else if (fields.get(i).equals(FieldNames.RULE_NOTCONNFUSEDFIELDS)) {
+						String ncfields = "";
+						BufferedReader bf = new BufferedReader(new StringReader(inputs[i]));
+						String line;
+						while ((line = bf.readLine()) != null)
+							ncfields += line + "\n";
+						ncfields = ncfields.substring(0, ncfields.lastIndexOf('\n'));
+						pros.setProperty(fields.get(i), ncfields);
+					
+					}else  
+						pros.setProperty(fields.get(i), inputs[i]);
+				}
+			}
+			rule.setConfiguration(pros);
+			
+			if (!updateExisting)
+				rule.setId(-1);
+			rulesDao.save(rule);
+			return null;
+
+		} catch (Exception e) {
+			logger.error("Error storing rule", e);
+			throw new ValidatorAdminException(e);
+		}
+	}
+		
+	@Override
+	public List<String> getRuleLabels(String ruleType, Boolean forUsage, Boolean forCris) throws ValidatorAdminException {
+		try {
+			logger.debug("getting rule labels for type " + ruleType);
+			List<String> labels = new ArrayList<String>();
+			List<FieldDetails> generalFields = FieldsAndDetails.getFieldsAndDetails("Rules");
+			List<FieldDetails> usageFields = FieldsAndDetails.getFieldsAndDetails("usage_rules");
+			List<FieldDetails> crisFields = FieldsAndDetails.getFieldsAndDetails("cris_rules");
+			List<FieldDetails> subFields = FieldsAndDetails.getFieldsAndDetails(TypesAndTableNames.getTableNameOfType(ruleType));
+			for (FieldDetails field : generalFields) {
+				if (field.isForDet() && !field.getFieldName().equals(FieldNames.RULE_TYPE) && !field.getFieldName().equals(FieldNames.RULE_JOBTYPE))
+					labels.add(field.getTableName() + "." + field.getFieldName());
+			}
+			if (subFields != null) {
+				for (FieldDetails field : subFields) {
+					if (field.isForDet())
+						labels.add(field.getTableName() + "." + field.getFieldName());
+				}
+			}
+			if (forUsage) {
+				for (FieldDetails field : usageFields) {
+					if (field.isForDet())
+						labels.add(field.getTableName().split("_")[1] + "." + field.getFieldName());
+				}
+			}
+			if (forCris) {
+				for (FieldDetails field :crisFields) {
+					if (field.isForDet())
+						labels.add(field.getTableName().split("_")[1] + "." + field.getFieldName());
+				}
+			}
+			return labels;
+		}catch (Exception e) {
+			logger.error("getting rule labels for type " + ruleType, e);
+			throw new ValidatorAdminException(e);
+		}			
+	}
+	
+	@Override
+	public List<RuleSet> getRuleSets() throws ValidatorAdminException {
+		try {
+			logger.debug("Getting all rule sets");
+			return rulesetsDao.getRuleSets();
+		} catch (Exception e) {
+			logger.error("Error getting all rule sets", e);
+			throw new ValidatorAdminException(e);
+		}
+	}
+	
+	@Override
+	public String deleteRule(int ruleId) throws ValidatorAdminException {
+		try {
+			logger.debug("deleting rule with id "+ruleId);
+			return rulesDao.delete(ruleId);
+		}
+		catch (Exception e) {
+			logger.error("Error deleting rule with id "+ruleId, e);
+			throw new ValidatorAdminException(e);
+		}
+	}
+	
+	@Override
+	public RuleSet getRuleSet(int setId) throws ValidatorAdminException {
+		try {
+			logger.debug("getting ruleSet with id: " + setId);
+			return rulesetsDao.get(setId);
+		} catch (Exception e) {
+			logger.error("Error getting ruleSet with id: " + setId, e);
+			throw new ValidatorAdminException(e);
+		}
+	}
+	
+	@Override
+	public void storeRuleSet(RuleSet ruleSet, boolean updateExisting) throws ValidatorAdminException {
+		try {
+			if (updateExisting)
+				logger.debug("editing rule set " + ruleSet.getId());
+			else
+				logger.debug("creating rule set " + ruleSet.getName());
+			
+			rulesetsDao.save(ruleSet);
+			
+			} catch (Exception e) {
+				logger.error("Error storing ruleSet " + ruleSet.getName(), e);
+			throw new ValidatorAdminException(e);
+		}
+		
+	}
+	
+	@Override
+	public void deleteRuleSet(int setId) throws ValidatorAdminException {
+		try {
+			logger.debug("deleting rule set " + setId);
+			rulesetsDao.delete(setId);
+		} catch (Exception e) {
+			logger.error("Error deleting rule set " + setId, e);
+			throw new ValidatorAdminException(e);
+		}
+	}	
+	
+	@Override
+	@Transactional(propagation = Propagation.REQUIRED)
+	public int deleteOldJobs(String date, String period, String mode) throws ValidatorAdminException {
+		int jobsDeleted = 0;
+		try {
+			logger.debug("Deleting jobs " + period + " than "+date);
+			if (mode.equalsIgnoreCase("uncompleted_only")) {
+				jobsDeleted = jobsDao.deleteUncompletedJobs();
+			}
+			else if (mode.equalsIgnoreCase("compTest_only"))
+				jobsDeleted = jobsDao.deleteOld(date, period, "Compatibility Test");
+			else if (mode.equalsIgnoreCase("all"))
+				jobsDeleted = jobsDao.deleteOld(date, period, null);
+			else if (mode.equalsIgnoreCase("import"))
+				jobsDao.importOldJobs();;
+		} catch (Exception e) {
+			logger.error("Error deleting old jobs", e);
+			throw new ValidatorAdminException(e);
+		}
+		return jobsDeleted;
+	}
+
+	public Emailer getEmailer() {
+		return emailer;
+	}
+	public JobsDAO getJobsDao() {
+		return jobsDao;
+	}
+
+	public void setJobsDao(JobsDAO jobsDao) {
+		this.jobsDao = jobsDao;
+	}
+
+	public RulesetsDAO getRulesetsDao() {
+		return rulesetsDao;
+	}
+
+	public void setRulesetsDao(RulesetsDAO rulesetsDao) {
+		this.rulesetsDao = rulesetsDao;
+	}
+
+	public RulesDAO getRulesDao() {
+		return rulesDao;
+	}
+
+	public void setRulesDao(RulesDAO rulesDao) {
+		this.rulesDao = rulesDao;
+	}
+
+	public UsersDAO getUsersDao() {
+		return usersDao;
+	}
+
+	public void setUsersDao(UsersDAO usersDao) {
+		this.usersDao = usersDao;
+	}
+
+	public void setEmailer(Emailer emailer) {
+		this.emailer = emailer;
+	}
+
+	
+	public String getRegistrationsReportEmail() {
+		return registrationsReportEmail;
+	}
+
+	public void setRegistrationsReportEmail(String registrationsReportEmail) {
+		this.registrationsReportEmail = registrationsReportEmail;
+	}
+
+	public EmailBuilder getEmailBuilder() {
+		return emailBuilder;
+	}
+
+	public void setEmailBuilder(EmailBuilder emailBuilder) {
+		this.emailBuilder = emailBuilder;
+	}
+
+	@Override
+	public boolean userIsMasterAdmin(String user)
+			throws ValidatorAdminException {
+		logger.debug("checking if user " + user + " is master admin");
+		if (this.masterAdmins.contains(user)) {
+			logger.debug("is master admin");
+			return true;
+		} else {
+			logger.debug("isn't master admin");
+			return false;
+		}
+	}
+	
+	@Override
+	public boolean userIsSecondaryAdmin(String user)
+			throws ValidatorAdminException {
+		logger.debug("checking if user " + user + " is secondary admin");
+		if (this.secondaryAdmins.contains(user)) {
+			logger.debug("is secondary admin");
+			return true;
+		} else {
+			logger.debug("isn't secondary admin");
+			return false;
+		}
+	}
+	
+
+	public void setMasterAdmins(String masterAdmins) {
+		String[] recps = masterAdmins.split(",");
+
+		for (String recp : recps) {
+			recp = recp.trim();
+			this.masterAdmins.add(recp);
+		}
+	}
+
+	public void setSecondaryAdmins(String secondaryAdmins) {
+		String[] recps = secondaryAdmins.split(",");
+
+		for (String recp : recps) {
+			recp = recp.trim();
+			this.secondaryAdmins.add(recp);
+		}
+	}
+
+	@Override
+	public String sendRegistrationsReport(String dateFrom, String dateTo, String month, String year) throws ValidatorAdminException {
+		try {
+			List <StoredJob> jobs = null;
+			Map<String, String> jobInfo = null;
+			List<Map<String, String>> passedJobsList = new ArrayList<Map<String, String>>();
+			List<Map<String, String>> failedJobsList = new ArrayList<Map<String, String>>();
+			
+			Map<String, StoredJob> passedJobsMap = new HashMap<String, StoredJob>();
+			Map<String, StoredJob> failedJobsMap = new HashMap<String, StoredJob>();
+			
+			logger.debug("Sending registrations Report for period: " + dateFrom + " to: " + dateTo);
+			jobs = jobsDao.getJobs(null, "Registration Request", null, null, dateFrom, dateTo);
+			for (StoredJob job : jobs) {
+				String key = job.getBaseUrl()+"|"+job.getDesiredCompatibilityLevel();
+				if (job.getContentJobScore() >= 50 && job.getContentJobScore() >= 50) {
+					failedJobsMap.remove(key);
+					passedJobsMap.put (key, job);
+				} else {
+					if (!passedJobsMap.containsKey(key)) {
+						failedJobsMap.put (key, job);
+					}
+				}
+			}
+			boolean oldFormat = false;
+			for (StoredJob job : passedJobsMap.values()) {
+				jobInfo = new HashMap<String, String>();
+				jobInfo.put("name", job.getOfficialName());
+				jobInfo.put("baseUrl", job.getBaseUrl());
+				jobInfo.put("email", job.getUserEmail());
+				jobInfo.put("compliance", job.getDesiredCompatibilityLevel());
+				if (job.getOfficialName() == null)
+					oldFormat = true;
+				passedJobsList.add(jobInfo);
+			}
+			for (StoredJob job : failedJobsMap.values()) {
+				jobInfo = new HashMap<String, String>();
+				jobInfo.put("name", job.getOfficialName());
+				jobInfo.put("baseUrl", job.getBaseUrl());
+				jobInfo.put("email", job.getUserEmail());
+				jobInfo.put("compliance", job.getDesiredCompatibilityLevel());
+				if (job.getOfficialName() == null)
+					oldFormat = true;
+				failedJobsList.add(jobInfo);
+			}
+			String report = emailBuilder.buildXml(passedJobsList, failedJobsList, month, oldFormat);
+			ArrayList<String> recps = new ArrayList<String>();
+			recps.add(registrationsReportEmail);
+			emailer.sendMail(recps,"Datasource Registrations -- " + month + " " + year, report, true, null);
+			logger.debug("email : " + report);
+			return report;
+		} catch (Exception e) {
+			logger.error("Error deleting old jobs", e);
+			throw new ValidatorAdminException(e);
+		}
+	}
+
+}
+
Index: modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/images/list_star.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/images/list_star.png
===================================================================
--- modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/images/list_star.png	(nonexistent)
+++ modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/images/list_star.png	(revision 47450)

Property changes on: modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/images/list_star.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/images/icon_download.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/images/icon_download.png
===================================================================
--- modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/images/icon_download.png	(nonexistent)
+++ modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/images/icon_download.png	(revision 47450)

Property changes on: modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/images/icon_download.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/resources/eu/dnetlib/validator/admin/actions/springContext-validator-struts.xml
===================================================================
--- modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/resources/eu/dnetlib/validator/admin/actions/springContext-validator-struts.xml	(nonexistent)
+++ modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/resources/eu/dnetlib/validator/admin/actions/springContext-validator-struts.xml	(revision 47450)
@@ -0,0 +1,75 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<beans xmlns="http://www.springframework.org/schema/beans"
+	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+	xmlns:context="http://www.springframework.org/schema/context"
+	xmlns:cxf="http://cxf.apache.org/core"
+	xmlns:jaxws="http://cxf.apache.org/jaxws"
+	xmlns:p="http://http://www.springframework.org/schema/p"
+	xmlns:template="http://dnetlib.eu/springbeans/template"
+	xmlns:t="http://dnetlib.eu/springbeans/t"
+	xsi:schemaLocation="
+		http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.0.xsd
+        http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.0.xsd
+        http://cxf.apache.org/core http://cxf.apache.org/schemas/core.xsd
+        http://cxf.apache.org/jaxws http://cxf.apache.org/schemas/jaxws.xsd
+        http://dnetlib.eu/springbeans/template http://dnetlib.eu/springbeans/template.xsd"
+	default-autowire="no">
+		
+	<!-- BASE -->	
+	<bean id="baseAction" class="eu.dnetlib.validator.admin.actions.BaseValidatorAction" abstract="true" scope="prototype">
+		<property name="emailer" ref="emailer" />
+		<property name="userAPI" ref="userAPI" />
+		<property name="validatorAdminAPI" ref="validatorAdminAPI" />
+		<property name="userMode" value="${services.validator.mode.user}" />
+		<property name="valBaseUrl" value="${services.validator.baseUrl}" />
+		<property name="deployEnvironment" value="${services.validator.deploy.environment}" />
+		<property name="valAdminEmail" value="${services.validator.adminEmail}" />
+	</bean>		
+	<bean id="springManagedDummy" class="eu.dnetlib.validator.admin.actions.DummyAction" parent="baseAction" scope="prototype"/>
+	<bean id="go2registration" class="eu.dnetlib.validator.admin.actions.DummyAction" parent="baseAction" scope="prototype"/>
+	
+	<!-- LOGIN -->
+	<bean id="springManagedLoginPage" class="eu.dnetlib.validator.admin.actions.login.LoginPage" parent="baseAction" scope="prototype"/>
+	<bean id="springManagedLogin" class="eu.dnetlib.validator.admin.actions.login.Login" parent="baseAction"  scope="prototype"/>
+	<bean id="springManagedSendPassword" class="eu.dnetlib.validator.admin.actions.login.SendPassword" parent="baseAction"  scope="prototype"/>
+	<bean id="springManagedResetPassword" class="eu.dnetlib.validator.admin.actions.login.ResetPassword" parent="baseAction"  scope="prototype"/>
+	<bean id="springManagedLogout" class="eu.dnetlib.validator.admin.actions.login.Logout" parent="baseAction"  scope="prototype"/>
+	<bean id="springManagedPortalLogin" class="eu.dnetlib.validator.admin.actions.login.PortalLogin" parent="baseAction" scope="prototype">
+		<property name="key" value="${services.validator.portallogin.key}" />
+	</bean>
+	<bean id="springManagedForgotPassword" class="eu.dnetlib.validator.admin.actions.login.ForgotPasswordPage" parent="baseAction" scope="prototype"/>
+	<bean id="springManagedAdminInterceptor" class="eu.dnetlib.validator.admin.actions.login.AdminInterceptor">
+		<property name="userAPI" ref="userAPI"/>
+		<property name="validatorAdminAPI" ref="validatorAdminAPI" />
+	</bean>
+
+	<!-- BROWSE JOBS -->
+	
+	<bean id="springManagedDatabaseCurator" class="eu.dnetlib.validator.admin.actions.jobs.DatabaseCurator" parent="baseAction" scope="prototype"/>
+	<bean id="springManagedRegistrationsReport" class="eu.dnetlib.validator.admin.actions.jobs.RegistrationsReport" parent="baseAction" scope="prototype"/>
+
+	<!-- USERS -->
+	<bean id="springManagedRegister" class="eu.dnetlib.validator.admin.actions.users.Register" parent="baseAction" scope="prototype"/>
+	<bean id="springManagedActivateAccount" class="eu.dnetlib.validator.admin.actions.users.ActivateAccount" parent="baseAction" scope="prototype"/>
+	<bean id="springManagedEditUser" class="eu.dnetlib.validator.admin.actions.users.EditUser" parent="baseAction" scope="prototype"/>
+	
+	<!-- ADMIN RULES -->
+	<bean id="springManagedPopulateRuleCategories" class="eu.dnetlib.validator.admin.actions.rules.PopulateRuleCategories" parent="baseAction" scope="prototype"/>
+	<bean id="springManagedDeleteRule" class="eu.dnetlib.validator.admin.actions.rules.DeleteRule" parent="baseAction" scope="prototype"/>
+	<bean id="springManagedPrepareAddRule" class="eu.dnetlib.validator.admin.actions.rules.PrepareAddRule" parent="baseAction" scope="prototype"/>
+	<bean id="springManagedEditRule" class="eu.dnetlib.validator.admin.actions.rules.EditRule" parent="baseAction" scope="prototype"/>
+	<bean id="springManagedAddRule" class="eu.dnetlib.validator.admin.actions.rules.AddRule" parent="baseAction" scope="prototype"/>
+	<bean id="springManagedPopulateRuleList" class="eu.dnetlib.validator.admin.actions.rules.PopulateRuleList" parent="baseAction" scope="prototype"/>
+	<bean id="springManagedPrepareEditRule" class="eu.dnetlib.validator.admin.actions.rules.PrepareEditRule" parent="baseAction" scope="prototype"/>
+	
+	<!-- ADMIN RULESETS -->
+	<bean id="springManagedDeleteRuleSet" class="eu.dnetlib.validator.admin.actions.rulesets.DeleteRuleSet" parent="baseAction" scope="prototype"/>
+	<bean id="springManagedCreateRuleSet" class="eu.dnetlib.validator.admin.actions.rulesets.CreateRuleSet" parent="baseAction" scope="prototype"/>
+	<bean id="springManagedGetRuleSetsForDeletion" class="eu.dnetlib.validator.admin.actions.rulesets.GetRuleSets" parent="baseAction" scope="prototype"/>
+	<bean id="springManagedGetRulesForSet" class="eu.dnetlib.validator.admin.actions.rulesets.GetRules" parent="baseAction" scope="prototype"/>
+	<bean id="springManagedGetRuleSets" class="eu.dnetlib.validator.admin.actions.rulesets.GetRuleSets" parent="baseAction" scope="prototype"/>
+
+	<!-- FEEDBACK/HELP -->
+	<bean id="springManagedHelp" class="eu.dnetlib.validator.admin.actions.help.HelpPage" parent="baseAction" scope="prototype" />
+	
+</beans>
Index: modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/images/register.jpg
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/images/register.jpg
===================================================================
--- modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/images/register.jpg	(nonexistent)
+++ modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/images/register.jpg	(revision 47450)

Property changes on: modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/images/register.jpg
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/java/eu/dnetlib/validator/admin/api/ValidatorAdminAPI.java
===================================================================
--- modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/java/eu/dnetlib/validator/admin/api/ValidatorAdminAPI.java	(nonexistent)
+++ modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/java/eu/dnetlib/validator/admin/api/ValidatorAdminAPI.java	(revision 47450)
@@ -0,0 +1,136 @@
+package eu.dnetlib.validator.admin.api;
+
+import java.util.List;
+
+import eu.dnetlib.domain.functionality.validator.Rule;
+import eu.dnetlib.domain.functionality.validator.RuleSet;
+import eu.dnetlib.validator.admin.actions.rules.FieldPair;
+
+/**
+ * 
+ * @author Nikon Gasparis
+ * 
+ */
+public interface ValidatorAdminAPI {
+
+	public List<Rule> getAllRules() throws  ValidatorAdminException;
+
+	public List<FieldPair> getRuleValuePairs(Rule rule) throws  ValidatorAdminException;
+	
+	public Rule getRule(int ruleId) throws ValidatorAdminException;
+	
+	public List<String> getRuleLabels(String ruleType, Boolean forUsage, Boolean forCris) throws ValidatorAdminException;
+	
+	public String storeRule(Rule rule, String[] inputs, Boolean updateExisting) throws ValidatorAdminException;
+	
+	public void storeRuleSet(RuleSet ruleSet, boolean updateExisting) throws ValidatorAdminException;	
+	
+	public void deleteRuleSet(int setId) throws  ValidatorAdminException;
+	
+	public String deleteRule(int ruleId) throws  ValidatorAdminException;
+
+	public List<RuleSet> getRuleSets() throws  ValidatorAdminException;
+
+	public RuleSet getRuleSet(int setId) throws  ValidatorAdminException;
+
+	public boolean userIsSecondaryAdmin(String user)
+			throws ValidatorAdminException;
+	
+	public boolean userIsMasterAdmin(String user)
+			throws ValidatorAdminException;
+			
+	public int deleteOldJobs(String date, String period, String target) throws ValidatorAdminException;
+
+	public String sendRegistrationsReport(String dateFrom, String dateTo, String month, String year) throws ValidatorAdminException;
+	
+
+//	public List<String> getConstantRuleTypes() throws  AdminAPIException;
+	
+//	public String[] getJobTypesAsArray() throws  AdminAPIException;
+
+
+	/*
+	public String getRuleSetName(int setId) throws  AdminAPIException;
+	
+
+	
+
+	public List<String> getRuleSetRuleIdsByJobType(int setId, String jobType)
+			throws  AdminAPIException;
+
+	public List<RuleS> getAllRulesForPresentationByJobType(String jobType)
+			throws  AdminAPIException;
+
+	public List<RuleS> getAllRulesForPresentationByJobTypeByRuleSet(
+			List<String> ruleSetRuleIds, String jobType)
+			throws  AdminAPIException;
+
+	public List<RuleD> getRulesForJobValidationByJobType(String jobType)
+			throws  AdminAPIException;
+
+	public List<RuleD> getRulesForJobValidationByJobTypeByRuleSet(int setId,
+			String jobType) throws  AdminAPIException;
+
+	public List<RuleStored> getAllRulesByJobType(String jobType)
+			throws  AdminAPIException;
+
+	public List<RulePair> getAllRulesToRulePair() throws  AdminAPIException;
+
+	public Map<String, List<JobSubmitted>> getJobsOfUser(String userName)
+			throws  AdminAPIException;
+
+
+
+	public Properties getRuleProperties(String ruleId)
+			throws  AdminAPIException;
+
+
+
+	public Serializable getRuleClassInstanceByType(String type, Properties pros,int id) throws  AdminAPIException;
+
+	public List<String> getAllRuleIdsByJobType(String jobType)
+			throws  AdminAPIException;
+
+	public List<RuleD> convertRuleIdsListToRuleDList(List<String> ruleIds);
+
+	public List<String> getValidationErrors(int jobId, int ruleId)
+			throws  AdminAPIException;
+
+	public JobSubmitted getJobSubmitted(String jobId) throws  AdminAPIException;
+
+	public List<TaskStored> getJobTasks(String jobId, JobSubmitted job)
+			throws  AdminAPIException;
+
+	public List<Entry> getJobSummary(String jobId, String groupBy) throws AdminAPIException;
+
+
+	public Map<String, String> getRuleSetsMap() throws AdminAPIException;
+
+
+	public void restore();
+
+	public List<String> getDistinctGroupByValues(String jobId) throws  AdminAPIException;
+
+	public String getFilteredScore(String jobId, String groupBy) throws  AdminAPIException;
+
+	public void preRegistrationValidations(JobForRegistration job) throws AdminAPIException;
+
+	public void storeJobForRegistration(JobForRegistration job) throws AdminAPIException;
+
+	public JobForRegistration getJobForRegistration(String activationId) throws AdminAPIException;
+
+	public void deleteJobForRegistration(String activationId) throws AdminAPIException;
+
+	public void cleanUncompletedJobs() throws AdminAPIException;
+
+	public Map<String, Set<Integer>> prepareCrisJobs(Set<Integer> chosenContentRules, Boolean referential, String selectedEntities) throws AdminAPIException;
+
+	public Map<String, String> getRuleSetsMap(String deployEnvironment)
+			throws AdminAPIException;
+
+	public Boolean isRepoAdmin(String user) throws AdminAPIException;
+	
+	*
+	*/
+
+}
\ No newline at end of file
Index: modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/resources/eu/dnetlib/validator/admin/api/springContext-validator.xml
===================================================================
--- modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/resources/eu/dnetlib/validator/admin/api/springContext-validator.xml	(nonexistent)
+++ modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/resources/eu/dnetlib/validator/admin/api/springContext-validator.xml	(revision 47450)
@@ -0,0 +1,35 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<beans xmlns="http://www.springframework.org/schema/beans"
+	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+	xmlns:context="http://www.springframework.org/schema/context"
+	xmlns:cxf="http://cxf.apache.org/core"
+	xmlns:jaxws="http://cxf.apache.org/jaxws"
+	xmlns:p="http://http://www.springframework.org/schema/p"
+	xmlns:template="http://dnetlib.eu/springbeans/template"
+	xmlns:t="http://dnetlib.eu/springbeans/t"
+	xmlns:tx="http://www.springframework.org/schema/tx"
+	
+	xsi:schemaLocation="
+		http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.0.xsd
+        http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.0.xsd
+        http://cxf.apache.org/core http://cxf.apache.org/schemas/core.xsd
+        http://cxf.apache.org/jaxws http://cxf.apache.org/schemas/jaxws.xsd
+        http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-4.0.xsd
+        http://dnetlib.eu/springbeans/template http://dnetlib.eu/springbeans/template.xsd"
+	default-autowire="no">
+	
+	<bean id="validatorAdminAPI" class="eu.dnetlib.validator.admin.api.impls.ValidatorAdminApiImpl" scope="singleton" init-method="start">
+		<property name="jobsDao" ref="jobsDao" />
+		<property name="rulesetsDao" ref="rulesetsDao" />
+		<property name="rulesDao" ref="rulesDao" />
+		<property name="usersDao" ref="usersDao" />	
+		<property name="masterAdmins" value="${services.validator.admins.master}" />
+		<property name="secondaryAdmins" value="${services.validator.admins.secondary}" />
+		<property name="emailer" ref="emailer" />
+		<property name="emailBuilder" ref="emailBuilder" />
+		<property name="registrationsReportEmail" value="${services.validator.registrationsReport.email}" />
+	</bean>
+	
+	<bean id ="emailBuilder" class="eu.dnetlib.validator.admin.api.impls.EmailBuilder" init-method="init" scope="prototype" />
+	
+</beans>
\ No newline at end of file
Index: modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/java/eu/dnetlib/validator/admin/config/CascadingPropertyLoader.java
===================================================================
--- modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/java/eu/dnetlib/validator/admin/config/CascadingPropertyLoader.java	(nonexistent)
+++ modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/java/eu/dnetlib/validator/admin/config/CascadingPropertyLoader.java	(revision 47450)
@@ -0,0 +1,55 @@
+package eu.dnetlib.validator.admin.config;
+
+import java.util.Properties;
+
+import org.springframework.beans.BeansException;
+import org.springframework.beans.factory.InitializingBean;
+import org.springframework.beans.factory.config.ConfigurableListableBeanFactory;
+import org.springframework.beans.factory.config.PropertyPlaceholderConfigurer;
+
+/**
+ * CascadingPropertyLoader loads a number of property files and mergers them together, so that the last properties
+ * override the previous. It also supports property expansion like:
+ * 
+ * <code>
+ *   something = 1
+ *   somethingelse = 2
+ *   test = ${something}/${somethingelse}
+ *  </code>
+ * 
+ * <p>
+ * And if you override something to XX, then test will become XX/2
+ * </p>
+ * 
+ * 
+ * @author marko
+ * 
+ */
+public class CascadingPropertyLoader extends PropertyPlaceholderConfigurer implements InitializingBean {
+
+	private Properties properties;
+
+	public void afterPropertiesSet() throws Exception {
+		this.properties = mergeProperties();
+
+		// Convert the merged properties, if necessary.
+		convertProperties(this.properties);
+		
+		logger.debug("Properties: " + properties);
+	}
+
+	@Override
+	protected void processProperties(final ConfigurableListableBeanFactory beanFactoryToProcess, final Properties props) throws BeansException {
+		super.processProperties(beanFactoryToProcess, props);
+	}
+
+	public Properties getProperties() {
+		return properties;
+	}
+
+	public void setProperties(final Properties properties) {
+		super.setProperties(properties);
+		
+		this.properties = properties;
+	}
+}
\ No newline at end of file
Index: modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/resources/eu/dnetlib/validator/admin/config/springContext-validator-config.xml
===================================================================
--- modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/resources/eu/dnetlib/validator/admin/config/springContext-validator-config.xml	(nonexistent)
+++ modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/resources/eu/dnetlib/validator/admin/config/springContext-validator-config.xml	(revision 47450)
@@ -0,0 +1,48 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<beans xmlns="http://www.springframework.org/schema/beans"
+	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+	xmlns:context="http://www.springframework.org/schema/context"
+	xmlns:cxf="http://cxf.apache.org/core"
+	xmlns:jaxws="http://cxf.apache.org/jaxws"
+	xmlns:p="http://http://www.springframework.org/schema/p"
+	xmlns:template="http://dnetlib.eu/springbeans/template"
+	xmlns:t="http://dnetlib.eu/springbeans/t"
+	xmlns:tx="http://www.springframework.org/schema/tx"
+	
+	xsi:schemaLocation="
+		http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.0.xsd
+        http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.0.xsd
+        http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-4.0.xsd
+		http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-4.0.xsd
+        http://cxf.apache.org/core http://cxf.apache.org/schemas/core.xsd
+        http://cxf.apache.org/jaxws http://cxf.apache.org/schemas/jaxws.xsd
+        http://dnetlib.eu/springbeans/template http://dnetlib.eu/springbeans/template.xsd"
+	default-autowire="no">
+
+	<bean class="eu.dnetlib.validator.admin.config.CascadingPropertyLoader" id="propertyLoader">
+		<property name="order" value="2" />
+		<property name="properties">
+			<bean class="eu.dnetlib.conf.WebappContextProperyFactory">
+				<property name="propertyFetcher">
+					<bean class="eu.dnetlib.conf.PropertyFetcher" />
+				</property>
+			</bean>
+		</property>
+		<property name="ignoreUnresolvablePlaceholders" value="true" />
+		<property name="locations">
+			<list>
+				<value>classpath*:/gr/**/springContext-*.properties</value>
+				<value>classpath*:/eu/**/springContext-*.properties</value>
+				
+				<value>classpath*:dnet-site-wizard.properties</value>
+				<value>classpath*:dnet-site-override.properties</value>
+				<value>classpath*:dnet-wizard.properties</value>
+				<value>classpath*:dnet-override.properties</value>
+				<value>classpath*:dnet-validator-wizard.properties</value>
+				<value>classpath*:dnet-validator-override.properties</value>
+				<value>classpath*:dnet-site-force-override.properties</value>
+				<value>classpath*:dnet-force-override.properties</value>
+			</list>
+		</property>
+	</bean>
+</beans>
\ No newline at end of file
Index: modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/images/icon_folder.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/images/icon_folder.png
===================================================================
--- modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/images/icon_folder.png	(nonexistent)
+++ modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/images/icon_folder.png	(revision 47450)

Property changes on: modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/images/icon_folder.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/images/icon_external.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/images/icon_external.png
===================================================================
--- modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/images/icon_external.png	(nonexistent)
+++ modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/images/icon_external.png	(revision 47450)

Property changes on: modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/images/icon_external.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/resources/field-infos.properties
===================================================================
--- modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/resources/field-infos.properties	(nonexistent)
+++ modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/resources/field-infos.properties	(revision 47450)
@@ -0,0 +1,98 @@
+rules.name.description = The name of the rule. Must be short and descriptive.
+rules.name.name = Name
+rules.description.description = A longer text describing the rule in more detail.
+rules.description.name = Description
+rules.mandatory.description = Must be true or false. If true, then if this rule doesn't validate the score will suffer. If false, then if the rule validates successfully then the score will be increased (even above 100%)
+rules.mandatory.name = Mandatory
+rules.success.description = The correct syntax as regular expression is ([=<>][0-9]+)|a). For a thorough explanation of this field please refer to the Administrator Manual. 
+rules.success.name = Success
+rules.weight.description = An integer indicating how important this rule is. The base weight is 1. Weights greater than 1 mean that this rule impacts more on the score.
+rules.weight.name = Weight
+rules.provider_information.description = This information is used by the Provider Module to harvest the correct items for validation. For example, for OAI Content Validation jobs a possible value could be dc:identifier. For a thorough explanation of this field please refer to the Administrator Manual. 
+rules.provider_information.name = Provider Information
+rules.visible.description = Not shown to the end-user
+rules.visible.name = Visible
+rules.type.name = Rule Type
+rules.type.description = The type of the rule
+rules.cris_entity.name = Cris Entity
+rules.cris_entity.description = The type of cris entity that this rule will be applicable on
+jobs.job_type.name = Job Type
+jobs.job_type.description = The type of job that this rule will be applicable on
+jobs.entity_type.name = Entity Type
+jobs.entity_type.description = The type of entity that this rule will be applicable on
+xmlvocabulary_rule.terms.name = Words
+xmlvocabulary_rule.terms.description = The list of words that will be used for matching. Each line must include only one word.
+xmlvocabulary_rule.terms_type.name = Words List Type
+xmlvocabulary_rule.terms_type.description = The kind of the list of words that will be used for matching. Blacklist or whitelist.
+xmlvocabulary_rule.success.name = Success
+xmlvocabulary_rule.success.description = The correct syntax is :all, >0, 0 . For a thorough explanation of this field please refer to the Administrator Manual. 
+xmlvocabulary_rule.xpath.name = XPath
+xmlvocabulary_rule.xpath.description = XPath for specific rule.
+xmlcrisclassvocabulary_rule.terms.name = Words
+xmlcrisclassvocabulary_rule.terms.description = The list of words that will be used for matching. Each line must include only one word.
+xmlcrisclassvocabulary_rule.success.name = Success
+xmlcrisclassvocabulary_rule.success.description = The correct syntax is :all, >0, 0, 1 . For a thorough explanation of this field please refer to the Administrator Manual. 
+xmlcrisclassvocabulary_rule.xpath.name = XPath
+xmlcrisclassvocabulary_rule.xpath.description = XPath for specific rule.
+xmlcrisclassvocabulary_rule.scheme_id.name = Scheme ID
+xmlcrisclassvocabulary_rule.scheme_id.description = XPath for specific rule.
+xmlcrisreferentialintegrity_rule.terms.name = Words
+xmlcrisreferentialintegrity_rule.terms.description = The list of words that will be used for matching. Each line must include only one word.
+xmlcrisreferentialintegrity_rule.success.name = Success
+xmlcrisreferentialintegrity_rule.success.description = The correct syntax is :all, >0, 0, 1 . For a thorough explanation of this field please refer to the Administrator Manual. 
+xmlcrisreferentialintegrity_rule.xpath.name = XPath
+xmlcrisreferentialintegrity_rule.xpath.description = XPath for specific rule.
+xmlcrisreferentialintegrity_rule.scheme_id.name = Scheme ID
+xmlcrisreferentialintegrity_rule.scheme_id.description = XPath for specific rule.
+xmlcrisreferentialintegrity_rule.entity_acronym.name = Entity Acronym
+xmlcrisreferentialintegrity_rule.entity_acronym.description = Entity Acronym (eg.cfPers).
+xmlcrisreferentialintegrity_rule.related_entity_acronym.name = Related Entity Acronym
+xmlcrisreferentialintegrity_rule.related_entity_acronym.description = Related Entity Acronym (eg.cfPers).
+xmlcrisreferentialintegrity_rule.related_entity_xpath.name = Related Entity XPATH
+xmlcrisreferentialintegrity_rule.related_entity_xpath.description = Related Entity XPATH.
+xmlfieldexist_rule.success.name = Success
+xmlfieldexist_rule.success.description = The correct syntax is :all, >0, 0 . For a thorough explanation of this field please refer to the Administrator Manual. 
+xmlfieldexist_rule.xpath.name = XPath
+xmlfieldexist_rule.xpath.description = XPath for specific rule.
+xmlregularexpression_rule.success.name = Success
+xmlregularexpression_rule.success.description = The correct syntax is :all, >0, 0 . For a thorough explanation of this field please refer to the Administrator Manual. 
+xmlregularexpression_rule.xpath.name = XPath
+xmlregularexpression_rule.xpath.description = XPath for specific rule.
+xmlregularexpression_rule.regexp.name = Regular Expression
+xmlregularexpression_rule.regexp.description = The regular expression used for validation.
+xmlcardinality_rule.lt.name = Less Than
+xmlcardinality_rule.lt.description = Less than this number
+xmlcardinality_rule.gt.name = Greater Than
+xmlcardinality_rule.gt.description = Greater than this number
+xmlcardinality_rule.success.name = Success
+xmlcardinality_rule.success.description = The correct syntax is :all, >0, 0 . For a thorough explanation of this field please refer to the Administrator Manual. 
+xmlcardinality_rule.xpath.name = XPath
+xmlcardinality_rule.xpath.description = XPath for specific rule.
+xmlcardinality_rule.regexp.name = Regular Expression
+xmlcardinality_rule.regexp.description = The regular expression used for validation.
+xmlnotconfusedfields_rule.fields.name = Fields
+xmlnotconfusedfields_rule.fields.description = Fields that must not be confused each other
+xmlnotconfusedfields_rule.success.name = Success
+xmlnotconfusedfields_rule.success.description = The correct syntax is :all, >0, 0 . For a thorough explanation of this field please refer to the Administrator Manual. 
+xmlnotconfusedfields_rule.xpath.name = XPath
+xmlnotconfusedfields_rule.xpath.description = XPath for specific rule.
+xmlnotconfusedfields_rule.regexp.name = Regular Expression
+xmlnotconfusedfields_rule.regexp.description = The regular expression used for validation.
+xmlvalidurl_rule.success.name = Success
+xmlvalidurl_rule.success.description = The correct syntax is :all, >0, 0 . For a thorough explanation of this field please refer to the Administrator Manual. 
+xmlvalidurl_rule.xpath.name = XPath
+xmlvalidurl_rule.xpath.description = XPath for specific rule.
+xmlvalidurl_rule.regexp.name = Regular Expression
+xmlvalidurl_rule.regexp.description = The regular expression used for validation.
+chain_rule.type.description = Permitted values: 'or' -> true if any of the rules is successful, 'and' -> true if all the rules are successful, 'horn' -> rule[0] => rule[1] /\ rule[2] /\ ... /\ rule[n-1]
+chain_rule.type.name = Chain Type
+chain_rule.rule_1.description = The first rule that chain rule consists of.
+chain_rule.rule_1.name = 1st Rule of Chain
+chain_rule.rule_2.description = The second rule that chain rule consists of.
+chain_rule.rule_2.name = 2nd Rule of Chain
+oaipmhresumptiontokenduration_rule.duration.description = Duration of resumption token.
+oaipmhresumptiontokenduration_rule.duration..name = Duration
+oaipmhincrementalrecorddelivery_rule.from.name = From
+oaipmhincrementalrecorddelivery_rule.from.description = From field.
+oaipmhincrementalrecorddelivery_rule.until.name = Until
+oaipmhincrementalrecorddelivery_rule.until.description = Until field.
\ No newline at end of file
Index: modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/images/arrow_right.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/images/arrow_right.png
===================================================================
--- modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/images/arrow_right.png	(nonexistent)
+++ modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/images/arrow_right.png	(revision 47450)

Property changes on: modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/images/arrow_right.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/resources/backend-errors.properties
===================================================================
--- modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/resources/backend-errors.properties	(nonexistent)
+++ modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/resources/backend-errors.properties	(revision 47450)
@@ -0,0 +1,29 @@
+error.parametersMissing.ruleId=Rule id must be specified in the parameters given
+error.parametersMissing.jobId=Job id must be specified in the parameters given
+error.badParameter.idNotNumerical=The id was not numerical
+error.badParameter.unknownType=The type specified is incorrect
+rules.name.error.message1=A value must be defined for the field name
+rules.description.error.message1=A value must be defined for the field description
+rules.type.error.message1=A value must be defined for the field type
+rules.mandatory.error.message1=A value must be defined for the field mandatory
+rules.success.error.message1=A value must be defined for the field success
+rules.success.error.message2=First character for success must be one of =, > or <
+rules.success.error.message3=Field success must contain only numerical characters after the first character
+rules.weight.error.message1=Value of field weight must be numerical
+rules.provider_information.error.message1=A value must be specified for the provider information field
+rules.job_type.error.message1=Job type must be one of the available types
+rules.job_type.error.message2=A job type must be specified for this rule
+cardinality_rule.greater_than.error.message1=Value of field 'greater than' must be numerical
+cardinality_rule.less_than.error.message2=Less and Greater cannot be both without value
+cardinality_rule.less_than.error.message1=Value of field 'less than' must be numerical
+NotConfusedFields_Rule.field1.error.message1=Fields 'field1' and 'field2' must both have a value
+NotConfusedFields_Rule.field1.error.message2=Fields 'field1' and 'field2' must have a different value
+RegularExpression_Rule.regular_expression.error.message1=Field 'regular expression' must have a value
+RetrievableResource_Rule.max_depth.error.message1=Field 'max_depth' must have a numerical value
+Vocabulary_Rule.words.error.message1=A value must be defined for the 'words' field
+OAI_Content_Job.records.error.message1=Field 'records' cannot be empty
+OAI_Content_Job.records.error.message2=At least one record must be used for the validation
+OAI_Content_Job.records.error.message3=Value of field 'records' must be numerical
+OAI_Content_Job.random.error.message1=Value of field 'random' must be boolean (true or false)
+OAI_Content_Job.base_url.error.message1=Value of field 'base url' doesn't seem to be a valid url adress
+RetrievableResource_Rule.mime_types.error.message1=Invalid mime type(s)
\ No newline at end of file
Index: modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/images/help1.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/images/help1.png
===================================================================
--- modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/images/help1.png	(nonexistent)
+++ modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/images/help1.png	(revision 47450)

Property changes on: modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/images/help1.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/images/e-Infrastructure_capacities_tr.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/images/e-Infrastructure_capacities_tr.png
===================================================================
--- modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/images/e-Infrastructure_capacities_tr.png	(nonexistent)
+++ modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/images/e-Infrastructure_capacities_tr.png	(revision 47450)

Property changes on: modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/images/e-Infrastructure_capacities_tr.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/images/left_bg_l.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/images/left_bg_l.png
===================================================================
--- modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/images/left_bg_l.png	(nonexistent)
+++ modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/images/left_bg_l.png	(revision 47450)

Property changes on: modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/images/left_bg_l.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/java/eu/dnetlib/validator/admin/constants/fielddetails/FieldDetails.java
===================================================================
--- modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/java/eu/dnetlib/validator/admin/constants/fielddetails/FieldDetails.java	(nonexistent)
+++ modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/java/eu/dnetlib/validator/admin/constants/fielddetails/FieldDetails.java	(revision 47450)
@@ -0,0 +1,32 @@
+package eu.dnetlib.validator.admin.constants.fielddetails;
+
+public class FieldDetails {
+
+	private String tableName;
+	private String fieldName;
+	// true if the user must provide a value for this field when adding a new record in the table
+	private boolean forDet;
+	
+	public String getTableName() {
+		return tableName;
+	}
+	public void setTableName(String tableName) {
+		this.tableName = tableName;
+	}
+	public String getFieldName() {
+		return fieldName;
+	}
+	public void setFieldName(String fieldName) {
+		this.fieldName = fieldName;
+	}
+	public boolean isForDet() {
+		return forDet;
+	}
+	public void setForDet(boolean forDet) {
+		this.forDet = forDet;
+	}
+	
+	public String getBundleName() {
+		return this.tableName+"."+this.fieldName;
+	}
+}
Index: modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/resources/eu/dnetlib/validator/admin/api/springContext-validator-user-ldap.xml
===================================================================
--- modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/resources/eu/dnetlib/validator/admin/api/springContext-validator-user-ldap.xml	(nonexistent)
+++ modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/resources/eu/dnetlib/validator/admin/api/springContext-validator-user-ldap.xml	(revision 47450)
@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<beans xmlns="http://www.springframework.org/schema/beans"
+	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+	xmlns:context="http://www.springframework.org/schema/context"
+	xmlns:cxf="http://cxf.apache.org/core"
+	xmlns:jaxws="http://cxf.apache.org/jaxws"
+	xmlns:p="http://http://www.springframework.org/schema/p"
+	xmlns:template="http://dnetlib.eu/springbeans/template"
+	xmlns:t="http://dnetlib.eu/springbeans/t"
+	xmlns:tx="http://www.springframework.org/schema/tx"
+	
+	xsi:schemaLocation="
+		http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.0.xsd
+        http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.0.xsd
+        http://cxf.apache.org/core http://cxf.apache.org/schemas/core.xsd
+        http://cxf.apache.org/jaxws http://cxf.apache.org/schemas/jaxws.xsd
+        http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-4.0.xsd
+        http://dnetlib.eu/springbeans/template http://dnetlib.eu/springbeans/template.xsd"
+	default-autowire="no">
+
+	<bean id="userAPI" class="eu.dnetlib.validator.admin.api.impls.UserApiLDAP" lazy-init="true">
+		<property name="ldapAddress" value="${services.validator.ldap.address}" />
+		<property name="ldapPort" value="${services.validator.ldap.port}" />
+		<property name="ldapUsername" value="${services.validator.ldap.username}" />
+		<property name="ldapPassword" value="${services.validator.ldap.password}" />
+		<property name="ldapUsersDN" value="${services.validator.ldap.usersDN}" />
+	</bean>
+
+</beans>
\ No newline at end of file
Index: modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/style.css
===================================================================
--- modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/style.css	(nonexistent)
+++ modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/style.css	(revision 47450)
@@ -0,0 +1,1233 @@
+
+/*
+Design by Free CSS Templates
+http://www.freecsstemplates.org
+Released for free under a Creative Commons Attribution 2.5 License
+*/
+@import url(fonts/kreon.css);
+@import url(fonts/yanonekaffeesatz.css);
+@import url(fonts/opensans.css);
+
+body, html {
+	height:100%;
+}
+body {
+	margin: 0;
+	padding: 0;
+	font: normal 12px/20px verdana, OpenSansLight, sans-serif;
+	/*font: 12px/20px "OpenSansLight", "Trebuchet MS", Georgia, "Times New Roman", Times, serif;*/
+	color: #717171;
+	background: #f5f5f5;
+ 	background-image: url(images/BG_Header_f5.png), url(images/BG_Footer_f5.png);
+ 	background-position: left top, right bottom;
+ 	background-repeat: no-repeat, no-repeat; 
+ 	background-attachment:fixed;
+}
+
+h1, h2, h3, h4, h5 {
+	margin: 0;
+	padding-bottom:5px;
+	font-family: "OpenSansLight", "Trebuchet MS", Georgia, "Times New Roman", Times, serif;
+	font-weight: normal;
+	color: #0F2B5B;
+}
+
+h1 { 	padding-top: 25px;
+	padding-bottom:15px;
+	font-size: 24px; 
+	color:#829333; 
+}
+
+h2 { 	padding-top: 25px;
+	padding-bottom:10px;
+	font-size: 18px; 
+	color:#829333; 
+}
+
+h3 {  
+	color:#343CB1;
+	font-size: 16px; 
+}
+h4 {  
+	font-size: 16px; 
+}
+h5 {  
+	font-size: 14px; 
+}
+
+p, ul, ol {
+	margin-top: 0;
+	text-align: justify;
+}
+
+ul, ol { }
+
+blockquote { }
+
+a { color: #2D72D6; }
+
+a:hover { text-decoration: none; color:#E76E12; cursor: pointer;}
+
+a img {
+	border: none;
+}
+
+img.left {
+	float: left;
+	margin: 7px 30px 0 0;
+}
+
+img.right {
+	float: right;
+	margin: 7px 0 0 30px;
+}
+
+hr {
+	border-top: 0px;
+	border-bottom: 1px solid #ddd;
+}
+.frontvisible {
+	font-size:16px;
+	font-family: "OpenSansLight", "Trebuchet MS", Georgia, "Times New Roman", Times, serif;
+}
+.optional {
+	font-size:72%!important;
+}
+.frontvisible p {
+	font-size:12px;
+}
+ul.frontvisible,
+.frontvisible ul {
+	list-style:none;
+	margin-left:60px;
+	padding-left:60px;
+	font-size:12px;
+}
+ul.frontvisible>li,
+.frontvisible li {
+	background: url('images/list_check.png') 0 0 no-repeat;
+	padding: 4px 0 0 30px;
+	font-size:14px;
+	line-height:24px;
+}
+
+.list1 {
+}
+
+.list1 li {
+	float: left;
+	line-height: normal;
+}
+
+.list1 li img {
+	margin: 0 30px 30px 0;
+}
+
+.list1 li.alt img {
+	margin-right: 0;
+}
+
+div.wrapper {
+	margin: auto; 
+}
+.errorMessage {
+	color: #E24912;
+	list-style: none;
+	font-style:italic;
+	margin:10px 0px;
+	font-size:110%;
+}
+
+.highlight {
+	background: url(images/menu_level2_parent.png) 0 40%  no-repeat;
+	padding-left:30px;
+	font-weight:bold;
+}
+
+.register {
+	background: url(images/register.png) right 40%  no-repeat;
+	padding-right:18px;
+}
+.notes {
+	color:#818181;
+	font-style:italic;
+    background-color: transparent;
+    background-image: url("images/info.jpg");
+    background-repeat: no-repeat;
+	background-position:0 left;
+    padding-left: 20px;
+	line-height:140%;
+}
+.notes_important {
+	color:#666;
+	font-style:italic;
+    background-color: transparent;
+    background-image: url("images/exclamation-icon.png");
+    background-repeat: no-repeat;
+	background-position:0 left;
+    padding-left: 20px;
+	line-height:140%;
+}
+.comments {
+	color:#666;
+	font-style:italic;
+ }
+ 
+.selectedHdr {
+	margin: 15px 0px 40px 0px;
+	color:#E24912;
+	font-family: "YanoneKaffeesatzLight"; 
+	font-size: 28px;
+}
+.helpHdr {
+    background-attachment: scroll;
+    background-color: transparent;
+    background-image: url("images/info-left.png");
+    background-position: 0 80%;  
+    background-repeat: no-repeat;
+    padding-left: 35px;
+}
+.next {
+	line-height:32px;
+	background-image: url("images/arrow_right.png");
+	background-position: 50% 40%;  
+	background-repeat: no-repeat;
+	padding-right:65px;
+	margin-bottom:20px;
+	text-align:center;
+}
+.next a {
+	text-decoration:none;
+}
+.prev {
+	line-height:32px;
+	background-image: url("images/arrow_left.png");
+	background-position: 45% 40%;  
+	background-repeat: no-repeat;
+	padding-left:25px;
+	text-align:center;
+	margin-bottom:20px;
+}
+.prev a {
+	text-decoration:none;
+}
+
+.smallInp {
+	width:10%!important;
+}
+.smallInp input[type="text"] {
+	width:10%!important;
+}
+
+.bigInp {
+	width:40%!important;
+}
+.bigInp input[type="text"] {
+	width:40%!important;
+}
+
+.validatedOk { 
+	line-height:32px;
+	background-image: url("images/tick.png");
+    background-position: 50% 100%;
+    background-repeat: no-repeat;
+}
+
+.addNewRow { 
+	line-height:32px;
+	background-image: url("images/tick.png");
+    background-position: 50% 50%;
+    background-repeat: no-repeat;
+}
+
+.validatedWrong {
+	line-height:32px;
+	background-image: url("images/error.png");
+    background-position: 50% 40%;  
+    background-repeat: no-repeat;
+}
+
+.validatedWarnings {
+	line-height:32px;
+	background-image: url("images/warning.png");
+    background-position: 50% 40%;  
+    background-repeat: no-repeat;
+}
+/*
+ * horizontal rule
+ */
+ 
+hr.dotted {
+	margin: 15px 0px 15px 0px;
+	display: block;
+	background: url(images/line_dotted.png) 0 0 repeat-x;
+	height: 1px;
+	border: none;
+}
+
+/*
+ * highlighted div and span tags
+ */
+
+span.note,
+span.info,
+span.alert,
+span.download,
+span.tip {
+	display: block;
+}
+
+.box-content {
+	background: #fafafa;
+	border: 1px solid #ddd;
+}
+
+
+div.note, span.note,
+div.info, span.info,
+div.alert, span.alert,
+div.download, span.download,
+div.tip, span.tip {
+	margin: 10px 0px 10px 0px;
+	padding: 8px 10px 8px 35px;
+	background: #fafafa;
+	border-top: 1px solid #ddd;
+	border-bottom: 1px solid #ddd;
+}
+
+div.info, span.info {
+	background: #ebf5fa url(images/box_info.png) 0 0 no-repeat;
+	border-color: #d2dce1;
+}
+
+div.alert, span.alert {
+	background: #fff0eb url(images/box_warning.png) 0 0 no-repeat;
+	border-color: #ffd7cd;
+}
+
+div.download, span.download {
+	background: #faffe6 url(images/box_download.png) 0 0 no-repeat;
+	border-color: #dce6be;
+}
+
+div.tip, span.tip {
+	background: #fffae6 url(images/box_tip.png) 0 0 no-repeat;
+	border-color: #fae6be;
+}
+.errorlink,
+.warninglink,
+.smallfont {
+	font-size:90%!important;
+}
+a.smallfont {
+	font-size:90%!important;
+}
+.firstpar {
+	padding:0px 5px 20px 45px;
+	margin:15px 0px;
+	background: no-repeat url(images/number-1.png) top left;
+}
+.secondpar {
+	padding:0px 5px 20px 45px;
+	margin:15px 0px;
+	background: no-repeat url(images/number-2.png) top left;
+}
+.thirdpar {
+	padding:0px 5px 20px 45px;
+	margin:15px 0px;
+	background: no-repeat url(images/number-3.png) top left;
+}
+.fourthpar {
+ 	padding:0px 5px 20px 45px;
+ 	margin:15px 0px;
+}
+.section {
+	padding-left:5px;
+	font-weight: normal;
+	text-transform: none;
+	line-height: 30px;
+	padding-top:3px;
+	padding-bottom: 10px;
+	font-family: "YanoneKaffeesatzLight"; 
+	font-size: 30px;
+	color:#343CB1;
+}
+.section1 {
+	padding-left:5px;
+	font-weight: normal;
+	text-transform: none;
+	line-height: 30px;
+	padding-top:3px;
+	padding-bottom: 10px;
+	font-family: "YanoneKaffeesatzLight"; 
+	font-size: 30px;
+	color:#343CB1;
+	background:#c2c2c2;
+}
+.box {
+	background: #fafafa;
+	border: 1px solid #ddd;
+}
+.field {
+	margin: 10px 0px;
+	line-height:28px;
+	font-size:100%;
+	clear:both;
+	overflow: hidden;
+}
+#left .field  {
+	padding:0
+	font-size:100%;
+	clear:both;
+	color:#351695;
+}
+.field label, label {
+	padding-left:1px;
+}
+	
+label input[type="text"] {
+	border:#839EB7 1px solid!important;
+	width:70%;
+}
+
+.field input[type="text"] {
+	width:80%;
+}
+.field input[type="password"] {
+	width:80%;
+}
+.fieldName {
+	margin-right: 10px;
+	font-family: "YanoneKaffeesatzLight"; 
+	font-size:18px;
+}
+
+
+/* Header */
+
+#header-wrapper {
+	color: #717171;
+}
+
+#header {
+	width: 970px;
+	height: 160px;
+	margin: 0 auto;
+	position:relative;
+}
+
+/* Menu */
+
+#topmenu {
+	height:30px;
+	padding-right:20px;
+}
+#topmenu ul {
+	list-style: none;
+}
+#topmenu li {
+	padding-left:10px;
+	font-family: "YanoneKaffeesatzLight"; 
+	font-size:16px;
+}
+#topmenu li a {
+	text-decoration:none;
+}
+
+
+
+	
+/* Search */
+/* oldname searchbox*/ 
+.class srchbx {
+	font-size:12px;
+	font-weight:bold;
+}
+#search {
+	float: right;
+	width: 305px;
+	height: 45px;
+}
+
+#search form {
+	float: right;
+	margin: 0;
+	padding: 12px 30px 0 0;
+}
+
+#search fieldset {
+	margin: 0;
+	padding: 0;
+	border: none;
+}
+
+#search input {
+	float: left;
+	font: 12px Georgia, "Times New Roman", Times, serif;
+	border: none;
+}
+
+#search-text {
+	width: 135px;
+	height: 18px;
+	padding: 3px 0 0 5px;
+	border: 1px solid #333333;
+	background: #ECF9E4;
+	color: #000000;
+}
+
+#search-submit {
+	height: 21px;
+	margin-left: 10px;
+	padding: 0px 5px;
+	background: #000000;
+	color: #FFFFFF;
+}
+
+/* Page */
+
+#page {
+	width: 970px;
+	margin: 0 auto;
+	/*background: #fafafa url(images/middle_bg_t.png) 0 0 repeat-x;*/
+	background:#ffffff;
+	box-shadow: 0 1px 0 rgba(0,0,0,0.1);
+}
+
+#page-bgtop {
+	
+}
+
+	/** LOGO */
+
+#logoLareferencia {
+	width: 308px;
+	height: 130px;
+	top:10px;
+	margin: 0 auto;
+	float:left;
+	position:absolute;
+	background: url(images/logo-referencia-openaire.png) no-repeat left bottom;
+	background-size: 300px;
+}	
+
+#logo {
+	width: 300px;
+	height: 130px;
+	top:10px;
+	margin: 0 auto;
+	float:left;
+	position:absolute;
+/* 	background: url(images/OpenAIREplus_logo.png) no-repeat left center; */
+}
+
+#logo h1, #logo p {
+	margin: 0px;
+	line-height: normal;
+	text-transform: none;
+	font-weight: normal;
+	color: #FFFFFF;
+}
+
+#logo p {
+	text-transform: lowercase;
+	font-size: 10px;
+}
+
+#logo h1 {
+	padding-top: 54px;
+	font-size: 34px;
+}
+
+#logo a {
+	text-decoration: none;
+	color: #FFFFFF;
+}
+
+/* Content */
+
+div#content {
+	width: auto;
+	min-height:300px;
+}
+div#content {
+	margin: 0px 0px 0px 0px;
+	float: left;
+	width: 658px;
+	padding-top: 10px;
+	padding-right: 30px;
+}
+
+.showright div#content {
+	margin: 0px 210px 0px 0px;  
+}
+
+
+/* Main */
+
+div#main {
+	/*background: url(images/img07.jpg) repeat-x left bottom;*/
+	width: auto!important;	 
+	min-height:300px;
+}
+ 
+div#main {
+	margin: 0px 0px 0px 0px;
+	padding: 0px 0px 0px 0px;
+}
+#main_container {
+	padding:0px 10px 0px 10px;
+}
+
+.left div#main {
+	margin: 0px 0px 0px 220px;  
+}
+.right div#main {
+	margin: 0px 240px 0px 0px;  
+}
+div#mainmiddle {
+	margin: 0px 0px 15px 0px;
+}
+div#middle {
+	margin: 0px 0px 0px 0px;
+	/*background: #fafafa url(images/middle_bg_t.png) 0 0 repeat-x;*/
+}
+
+div.middle-b {
+	padding: 15px 15px 15px 15px;
+	/*background: url(images/middle_bg_b.png) 0 100% repeat-x;	*/
+
+}
+
+div#middle .background {
+	min-height: 200px; 
+}
+.left div#middle .background {
+	background: url(images/left_bg_l.png) 220px 0 repeat-y;
+}
+/* Left */
+div#left {
+	width: 220px;
+}
+.left div#middle div#left {
+	float: left;
+}
+#left_container {
+	padding:0px 10px 0px 10px;
+}
+#left_container p, #left_container li, #left p, #left li{
+	text-align:left;
+	font-size:12px;
+}
+
+/* Post */
+
+.post {
+	/*background: url(images/img07.jpg) repeat-x left bottom;*/
+	padding-bottom: 25px;
+	padding-top: 5px;
+	margin: 15px 10px 0px 0px;
+	/*height: 180px;*/
+	position: relative;
+}
+
+.postvertical {
+	background: url(images/img07.jpg) repeat-x left bottom;
+	margin-bottom: 25px;
+	margin-top: 20px;
+	margin-right: 120px;
+	margin-left: 30px;
+	float: left;
+	width: 277px;
+}
+
+
+
+.post .title {
+	height: 30px;
+	color: #0F2B5B;
+}
+
+.post .title a {
+	text-decoration: none;
+	color: #585D60;
+}
+
+.post .date {
+}
+
+.post .meta {
+	margin-top: -10px;
+	padding: 2px 30px 2px 16px;
+	background: url(images/help.png) no-repeat left 8px;
+	font-weight: normal;
+	font-size: 10px;
+	color: #66665E;
+}
+
+.post .meta span {
+	display: block;
+	margin-top: -10px;
+}
+
+.post .meta a { 
+	padding-left: 3px;
+	text-decoration: none;
+	color: MediumBlue;
+}
+
+.post .entry {
+	padding: 10px 0;
+}
+
+.post .links {
+	margin: 0 250px 0 0;
+	padding: 0 0 0 0px;
+}
+
+.post .links .comments {
+}
+
+.post .links .permalink {
+	padding-left: 17px;
+}
+
+/* Sid */
+
+#sid {
+	float: left;
+	width: 177px;
+	padding-right: 22px;
+	font-size: 11px;
+	color: #585D60;
+}
+
+#sid ul {
+	margin: 0;
+	padding: 0;
+	list-style: none;
+	line-height: normal;
+}
+
+#sid li {
+	margin-bottom: 30px;
+	padding: 0 0 10px 0px;
+}
+
+#sid li ul {
+}
+
+#sid li li {
+	margin: 0;
+	padding: 7px 10px 10px 7px;
+	background: url(images/img07.jpg) repeat-x left bottom;
+}
+
+#sid p {
+	margin: 0;
+	padding: 0px 10px;
+}
+
+#sid h2 {
+	height: 26px;
+	margin: 0 0 10px 0px;
+	padding: 12px 0 2px 7px;
+	font-size: 18px;
+	font-weight: normal;
+	color: #464F54;
+}
+
+
+#sid p {
+	line-height: 200%;
+}
+#sid a {
+	text-align: left;
+	text-decoration: none;
+	font-weight: normal;
+	color: #585D60;
+}
+
+/* Calendar */
+
+#calendar {
+}
+
+#calendar caption {
+	padding-bottom: 5px;
+	font-weight: bold;
+}
+
+#calendar table {
+	width: 100%;
+	border-collapse: collapse;
+	border-bottom: 1px solid #24130F;
+	border-left: 1px solid #24130F;
+	border-right: 1px solid #24130F;
+}
+
+#calendar thead th {
+	padding: 5px 0;
+	text-align: center;
+	border-top: 1px solid #24130F;
+	border-left: 1px solid #24130F;
+	background: #24130F;
+}
+
+#calendar tbody td {
+	padding: 5px 0;
+	text-align: center;
+	border-top: 1px solid #24130F;
+	border-left: 1px solid #24130F;
+	border-bottom: 1px solid #24130F;
+}
+
+#calendar tfoot td {
+	padding: 5px;
+	border-left: 1px solid #24130F;
+	border-bottom: 1px solid #24130F;
+}
+
+#calendar tfoot #next {
+	border-top: 1px solid #24130F;
+	text-align: right;
+}
+
+#calendar tfoot #prev {
+	border-top: 1px solid #24130F;
+}
+
+#calendar .pad {
+	border-bottom: 1px solid #24130F;
+}
+
+#calendar #today {
+	background: #24130F;
+}
+
+/* Footer */
+
+#footer {
+	padding-top:10px;
+	clear: both;  
+	height: 62px;
+	background:#3440B5;
+	color:#ffffff;
+	border-top:1px solid #DADADA;
+
+	overflow: hidden;
+}
+
+#footer-bgcontent {
+	height: 62px;
+	padding: 10px;
+	background-attachment: scroll;
+    background-image: url("images/EC_logo_blue_multi_horizontal.png");
+    background-position: 95% 10%;
+    background-repeat: no-repeat;
+}
+
+#footer p {
+	font-size: 12px; font-family: "OpenSansLight"; 
+	margin: 0;
+	text-align: center;
+}
+
+#footer a {
+	color: #E5FFC4;
+}
+
+/* Table */
+
+#gradient-style
+{
+	font-size:100%;
+	text-align: left;
+	border-collapse: collapse;
+}
+#gradient-style th
+{
+	font-size: 110%;
+	font-weight: normal;
+	padding: 3px;
+	background: #F0F0F0;
+	border-top: 2px #CCCCCC solid;
+	border-bottom: 2px #CCCCCC solid;
+	color: #0F2B5B;
+}
+#gradient-style td
+{
+	padding:0px 3px;
+	border-bottom: 1px solid #fff;
+	color: #669;
+	border-top: 1px solid #fff;
+	background: #F0F0F0;
+}
+
+#gradient-style tfoot tr td
+{
+	background: #e8edff;
+	font-size: normal;
+	color: #99c;
+}
+#gradient-style tbody tr:hover td
+{
+	background: #0F2B5B;
+	color: #FFFFFF!important;
+}
+
+#gradient-style tbody tr:hover td a
+{
+	color: #fff!important;
+	text-decoration:underline;
+}
+
+.errordiv {
+	background-color:#FFFAE6;
+	padding: 5px 10px 5px 10px;
+	border-top: 1px dotted #AAB4BE;
+	border-bottom: 1px dotted #AAB4BE;
+}
+.errordiv:hover {
+}
+/* expand - colapse fields */
+
+.optiontable_container {
+	position:relative;
+	z-index:100;
+	min-width: 400px;
+}
+
+.optiontable_ttl {
+	line-height: 1em;
+	display:block;
+	margin-top: 0;
+	margin-bottom: 0;
+	padding-top: 0;
+	padding-bottom: 0;
+	padding-left: 10px;
+	padding-right: 10px;
+	border-color: #aeadad;
+	border-style: solid;
+	border-width:0 1px 1px;
+}
+
+.optiontable_content {
+	display:block;
+	padding-top: 5px;
+	padding-bottom: 5px;
+	padding-left: 2px;
+	padding-right: 2px;
+	border-color: #aeadad;
+	border-style: solid;
+	border-width:0 1px;
+}
+.contentR {
+	border-left: #aeadad solid 1px;
+	border-right: #aeadad solid 1px;
+}
+.usage {
+	border-left: #aeadad solid 1px;
+	border-right: #aeadad solid 1px;
+}
+
+.optiontable_content2 {
+	overflow:auto;
+	height: auto;/*30em;*/
+}
+
+.floatleft {
+	float: left;
+	padding-right: 10px;
+}
+
+
+a.help {
+    -moz-background-clip: border;
+    -moz-background-origin: padding;
+    -moz-background-size: auto auto;
+    background-attachment: scroll;
+    background-color: transparent;
+    background-image: url("images/help2.png");
+    background-position: 0 0;
+    background-repeat: no-repeat;
+    padding-left: 20px;
+}
+a.external {
+    -moz-background-clip: border;
+    -moz-background-origin: padding;
+    -moz-background-size: auto auto;
+    background-attachment: scroll;
+    background-color: transparent;
+    background-image: url("images/icon_external.png");
+    background-position: 0 40%;
+    background-repeat: no-repeat;
+    padding-left: 17px;
+}
+
+a.toplink {
+    background-attachment: scroll;
+    background-color: transparent;
+    background-image: url("images/footer_anchor.png");
+    background-position: bottom right;
+    background-repeat: no-repeat;
+    font-size: 12px;
+	width: 30px;
+	height: 5px;
+	display: block;
+	text-decoration: none;
+}
+
+a.download {
+    padding-left: 17px;
+    background: url(images/icon_download.png) 0 40% no-repeat;
+}
+
+.cmenu {
+	font-size: 12px;
+	margin : 10px 0px;
+	padding : 0px 10px 0px 0px;
+}
+
+a.cmenulink {
+	color: #0F2B5B;
+	text-transform: uppercase;
+	text-decoration: none;
+}
+
+a.selectlink {
+	text-decoration: none;
+}
+
+.nest {
+	padding-left:20px;
+	display: block;
+}
+
+/*
+ * Clearing & Floating
+ */
+ 
+.clearfix:after {
+	content: "."; 
+	display: block; 
+	height: 0;  
+	clear: both; 
+	visibility: hidden;
+}	
+ 
+.clearfix { display: block; }
+
+.floatbox { overflow:hidden; }
+
+.float-left { float: left; overflow: hidden; }
+.float-right { float: right; overflow: hidden; }
+
+.width15 { width: 14.999%; }
+.width18 { width: 18.333%; }
+.width20 { width: 19.999%; }
+.width23 { width: 22.999%; }
+.width25 { width: 24.999%; }
+.width33 { width: 33.333%; }
+.width35 { width: 34.999%; }
+.width40 { width: 39.999%; }
+.width45 { width: 44.999%; }
+.width50 { width: 49.999%; }
+.width54 { width: 53.999%; }
+.width65 { width: 64.999%; }
+.width75 { width: 74.999%; }
+.width100 { width: 100%; }
+
+.separator {
+	/*padding-right: 25px;*/
+	background: url(images/module_separator_m.png) 100% 0 repeat-y;
+}
+
+/* ajax request */
+#log_res {
+	overflow: auto;
+}
+ 
+#log_res.ajax-loading {
+	padding: 20px 0;
+	background: url(images/spinner.gif) no-repeat;
+}
+
+.button-default,
+.button-primary,
+form.style button,
+form.style input[type='button'],
+form.style input[type='submit'] { 
+	padding: 8px 14px;
+	margin-top: 5px;
+	margin-bottom: 5px;
+	border-radius: 2px; 
+	border: none;
+	box-shadow: inset 0 -1px 0 rgba(0,0,0,0.15);
+}
+
+/* Default */
+.button-default,
+form.style button,
+form.style input[type='button'],
+form.style input[type='submit'] {
+	background-color: #f5f5f5;
+	background-image: -o-linear-gradient(rgba(240,240,240,0), #dbdbdb);
+	background-image: -webkit-linear-gradient(rgba(240,240,240,0), #dbdbdb);
+	background-image: -moz-linear-gradient(rgba(240,240,240,0), #dbdbdb);
+	background-image: linear-gradient(rgba(240,240,240,0), #dbdbdb);
+	text-shadow: 0 1px 0 #fff;
+	text-decoration: none;
+	display: inherit;
+	text-align: center;
+	text-shadow: 0 1px 0 rgba(255,255,255,0.5);
+	color: #878787;
+}
+
+.button-default:hover,
+form.style button:hover,
+form.style input[type='button']:hover,
+form.style input[type='submit']:hover {
+	background-color: #dbdbdb;
+	box-shadow: inset 0 1px 5px rgba(0,0,0,0.1),
+				inset 0 0 1px rgba(0,0,0,0.1);
+}
+
+.button-default:active,
+form.style button:active,
+form.style input[type='button']:active,
+form.style input[type='submit']:active {
+	color: #737373;
+	box-shadow: inset 0 1px 5px rgba(0,0,0,0.1),
+				inset 0 0 1px rgba(0,0,0,0.1);
+}
+
+/* Primary */
+.button-primary {
+	color: #fff;
+	text-shadow: 0 -1px 0 rgba(0,0,0,0.3);
+}
+
+.button-primary:hover {
+	box-shadow: inset 0 1px 5px rgba(0,0,0,0.3),
+				inset 0 0 1px rgba(0,0,0,0.3);
+	color: #fff;
+}
+
+.button-primary:active {
+	box-shadow: inset 0 1px 8px rgba(0,0,0,0.4),
+				inset 0 0 1px rgba(0,0,0,0.3);
+	text-shadow: 0 0 5px #fff;
+}
+.wrapword{
+white-space: -moz-pre-wrap !important;  /* Mozilla, since 1999 */
+white-space: -pre-wrap;      /* Opera 4-6 */
+white-space: -o-pre-wrap;    /* Opera 7 */
+white-space: pre-wrap;       /* css-3 */
+word-wrap: break-word;       /* Internet Explorer 5.5+ */
+word-break: break-all;
+white-space: normal;
+}
+
+/* Zebra List and Table */
+table.zebra th, table.zebra td { padding: 5px; }
+table.zebra th { color:#3440B5 ;font-size: 14px; font-weight: normal; text-align: left; }
+table { border-collapse: collapse; border-spacing: 0; }
+table.zebra tbody, table.zebra tfoot { font-size: 12px; font-family: "OpenSansLight"; }
+
+table.zebra tbody td { border-bottom: 1px solid #ddd; word-wrap:break-word; }
+table.zebra tbody tr:first-child td { border-top: 1px solid #ddd; }
+
+table.zebra tbody tr.odd { background: url(images/zebra_list.png) 0 0 repeat; }
+table.zebra tbody tr:nth-of-type(odd) { background: url(images/zebra_list.png) 0 0 repeat;}
+
+table.zebra caption { color: #999; }
+table.zebra tbody tr:hover td { background: #E7E7E7; }
+
+/* Zebra List and Table */
+table.zebra1 th, table.zebra td { padding: 5px; }
+table.zebra1 th { font-size: 14px; font-weight: normal; text-align: left; }
+table { border-collapse: collapse; border-spacing: 0; }
+table.zebra1 tbody, table.zebra tfoot { font-size: 12px; font-family: "OpenSansLight"; }
+
+table.zebra1 tbody td { border-bottom: 0px solid #ddd; word-wrap:break-word; }
+table.zebra1 tbody tr:first-child td { border-top: 1px solid #ddd; }
+
+table.zebra1 tbody tr th{ color:black; }
+table.zebra1 tbody tr:first-child td { border-top: 0px solid #ddd; }
+
+table.zebra1 tbody th.numb {  background: #2D72D6; border: none; color: white;}
+table.zebra1 tbody td.numb {  background: #00B5F0; border: none; padding-left: 10px; color: white;}
+table.zebra1 tbody td.cb {  background: #dddddd; border: none; padding-left: 7px; color: white;}
+
+table.zebra1 caption { color: #999; }
+/* table.zebra1 tbody tr:hover  { background: #E7E7E7; } */
+
+
+/*----- Tabs -----*/
+.tabs {
+    width:100%;
+    display:inline-block;
+}
+ 
+    /*----- Tab Links -----*/
+    /* Clearfix */
+    .tab-links:after {
+        display:block;
+        clear:both;
+        content:'';
+    }
+ 
+    .tab-links li {
+        margin:0px 5px;
+        float:left;
+        list-style:none;
+        margin-bottom: -12px;
+    }
+    
+        .tab-links a {
+            padding:9px 15px;
+            display:inline-block;
+            border-radius:3px 3px 0px 0px;
+/*             background:#7FB5DA; */
+            background:#2D72D6;
+            text-decoration:none;
+			font-size: 15px;
+            font-weight:normal;;
+/*             color:#4c4c4c; */
+			color: #3440B5;
+            color:white;
+            transition:all linear 0.15s;
+/*             font-family: "YanoneKaffeesatzLight"; */
+/*             padding: 0 12px; */
+/* outline: 0; */
+/* position: relative; */
+/* white-space: nowrap; */
+
+        }
+ 
+        .tab-links a:hover {
+            background:#a7cce5;
+            text-decoration:none;
+        }
+
+    li.active a, li.active a:hover {
+        background:#F3F3F3;
+        color:#2D72D6;
+    }
+ 
+    /*----- Content of Tabs -----*/
+    .tab-content {
+        padding:10px;
+        border-radius:3px;
+        box-shadow:-1px 1px 1px rgba(0,0,0,0.15);
+        background:#F3F3F3;
+    }
+ 
+        .tab {
+            display:none;
+        }
+ 
+        .tab.active {
+            display:block;
+        }
\ No newline at end of file
Index: modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/resources/eu/dnetlib/validator/admin/api/springContext-validator.properties
===================================================================
--- modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/resources/eu/dnetlib/validator/admin/api/springContext-validator.properties	(nonexistent)
+++ modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/resources/eu/dnetlib/validator/admin/api/springContext-validator.properties	(revision 47450)
@@ -0,0 +1,49 @@
+# the address where validator is running and is accessible from the rest of the web
+services.validator.baseUrl = http://${container.hostname}:${container.port}/${container.context}
+
+# the email of the administrator
+# he will receive all the automatic bug reports and feedback created
+services.validator.adminEmail = nikonas@di.uoa.gr
+
+# the private key used for signing the direct login links from the OpenAIRE portal
+services.validator.portallogin.key = 568345
+
+
+# If set to true then, when the server is stopped and restarted, all jobs that haven't finished for any reason will restart
+# If set to false then only jobs that stopped gracefully due to a previous server restart will be restarted
+# Unless the server has stopped unexpectedly and you are now restarting it, this setting must be left to false
+services.validator.jobs.totalRestart = false
+
+# the mailhost for the mail service
+services.validator.mail.host = smtp.gmail.com
+# the port where the mail service is running
+services.validator.mail.port = 465
+# the address that appears in the from field in the mails send by the validator
+services.validator.mail.fromAddress = no-reply@openaire.eu
+# the reply-to field value in the mails send by the validator
+services.validator.mail.replyToAddress = no-reply@openaire.eu
+# the username of the account used to login in the mail server
+services.validator.mail.username = test.openaire@gmail.com
+# the password of the account used to login in the mail server
+services.validator.mail.password = ^($*@$)*!$
+# if authentication should take place
+# if set to false username and password is not needed
+services.validator.mail.authenticate = true
+# is set to yes then all mails will not be sent to their targets but to the address specified in services.validator.mail.overrideEmail
+services.validator.mail.override = false
+# if set to true then no mails are send, they are only logged as a debug message
+services.validator.mail.logonly = false
+# the mode used for the mails send by the validator
+services.validator.mail.mode = ssl
+# used by eu.dnetlib.utils.MailLibrary to control debuggin messages
+services.validator.mail.debug = false
+# if services.validator.mail.override is true then all mails will be send only to this address
+services.validator.mail.overrideEmail = nikonas@di.uoa.gr
+# a comma-seperated list of address that will receive all mails about validations and repo registrations
+services.validator.mail.specialRecipients = nikonas@di.uoa.gr
+
+# a comma-seperated list of addresses that have the ability to register repos without the need for validation and registration
+services.validator.repoRegistration.override = nikonas@di.uoa.gr
+
+# do not change
+services.validator.registration.validationSet = OpenAIRE For Literature Repositories
Index: modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/images/number-1.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/images/number-1.png
===================================================================
--- modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/images/number-1.png	(nonexistent)
+++ modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/images/number-1.png	(revision 47450)

Property changes on: modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/images/number-1.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/images/module_separator_m.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/images/module_separator_m.png
===================================================================
--- modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/images/module_separator_m.png	(nonexistent)
+++ modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/images/module_separator_m.png	(revision 47450)

Property changes on: modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/images/module_separator_m.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/images/number-2.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/images/number-2.png
===================================================================
--- modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/images/number-2.png	(nonexistent)
+++ modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/images/number-2.png	(revision 47450)

Property changes on: modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/images/number-2.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/editUser.jsp
===================================================================
--- modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/editUser.jsp	(nonexistent)
+++ modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/editUser.jsp	(revision 47450)
@@ -0,0 +1,50 @@
+<%@ page contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<%@ taglib prefix="s" uri="/struts-tags"%>
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title><s:text name="editUser.title"/></title>
+<link href="jsps/favicon.ico" rel="shortcut icon" type="image/x-icon" />
+<link href="jsps/style.css" rel="stylesheet" type="text/css" media="screen" />
+</head>
+<body>
+<div id="wrapper">
+	<jsp:include page="menu.jsp"/>
+	<div id="page">
+        <div id="page-bgtop">
+            <div id="middle">
+                    <div class="middle-b">
+                        <div class="background">
+                            <div id="main">
+                                <div id="main_container" class="clearfix">
+                                    <div id="mainmiddle" class="floatbox">
+                                        <h1><s:text name="editUser.title"/></h1>
+                                        
+                                        <%--<p class="meta"><a href='<s:url value="/jsps/help.jsp#addRule"/>' target="_blank"><s:text name="help"/></a></p>--%>
+                                        <div class="entry">
+                                            <s:form action="editUser">
+                                                <div class="field"><s:textfield name="user.username" key="registration.username" readonly="true" requiredLabel="true"/></div>
+                                                <div class="field"><s:textfield name="user.email" key="registration.email" readonly="true" requiredLabel="true"/></div>
+                                            	<div class="field"><s:textfield name="user.firstname" key="registration.firstName" requiredLabel="true"/></div>
+                                                <div class="field"><s:textfield name="user.lastname" key="registration.lastName" requiredLabel="true"/></div>
+                                                <div class="field"><s:textfield name="user.institution" key="registration.institution"/></div>
+                                                <div class="field"><tr><td colspan="2"><hr class="dotted"/></td></tr></div>
+                                                <div class=" field float-left"><s:submit value="Update"/></div>
+                                            </s:form>
+                                        </div>
+                                    </div>
+                                </div>
+                            </div>
+                        </div>
+                    </div>
+                </div>
+        </div>
+        <!-- NMI This needs to be the same in all pages and the text is some properties file -->
+        <div id="footer"> 
+			<jsp:include page="footer.jsp"/>
+		</div>
+	</div>
+	</div>
+</body>
+</html>
\ No newline at end of file
Index: modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/resources/web-texts.properties
===================================================================
--- modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/resources/web-texts.properties	(nonexistent)
+++ modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/resources/web-texts.properties	(revision 47450)
@@ -0,0 +1,227 @@
+site.title = Validator Admin Panel
+site.slogan = Tools for validator administration
+
+general.unblock = Please make sure that you can accept mails from
+
+menu.home = Home
+menu.register = Join OpenAIRE
+menu.validate = Test Compatibility
+menu.account = My Account
+menu.about = Help
+menu.account.login = Sign In
+menu.account.registration.title = New User?
+menu.account.registration = Register Now!
+menu.account.logout = Logout
+menu.account.edit = My Account | 
+menu.about.feedback = Send Feedback
+menu.about.faq = FAQ
+menu.about.help = Help Guides
+menu.admin = Admin Panel
+
+homepage.welcome = Welcome to Validator Administration Panel!
+instructions.welcome = How to Join OpenAIRE
+instructions.message = <div class="entry"> <ol> <li> <b>Do you wish your repository or journal to be a part of OpenAIRE?</b> <ul> <li>If you are a new user, start by <a href="go2login.action">creating an account</a>.<br> If you have previously registered in the <a href="http://www.openaire.eu" target="_blank">main OpenAIRE portal</a>, you can use the same account. </li> </ul> <br> </li> <li> <b>Register your repository in <a class="external" href="http://www.opendoar.org/" target="_blank">OpenDOAR</a></b> <i>(this step does not apply for journals)</i> <ul> <li>OpenDOAR is an authoritative worldwide directory of academic open access repositories.</li> </ul> </li> <br> <li> <b>Make your repository/journal OpenAIRE compliant by implementing the <a href="http://guidelines.openaire.eu" class="external" target="_blank" >OpenAIRE Guidelines</a> </b> <ul> <li>If your repository/journal currently has no OpenAIRE records, you will need to create a test record as proof of correct implementation of the guidelines.</li> <li>Create an openaire set and insert your OpenAIRE records in it.</li> <li>If you used a test record, you will need to keep it until your repository/journal is successfully added as OpenAIRE compliant (step 5). Then you can safely delete it.</li> <li>You can find an example of an OpenAIRE compliant record <a href="jsps/manuals/example_record.txt" target="_blank">here</a>.</li> </ul> </li> <br> <li> <b>Test Compatibility</b> <ul> <li>After you have made some progress in implementing the guidelines you should <a href="populateRules.action">run a Compatibility test</a>.</li> <li>Enter the OAI-PMH base URL of your repository/journal and choose to test your repository against the OpenAIRE rule set. Aim for a score of 100, which will be sufficient to allow your repository to join OpenAIRE.</li> <li>After running the test you can <a href="prepareJobBrowsing.action">browse the results</a>. Please note that the results are updated periodically, and the whole test might take some time to finish.</li> </ul> </li> <br> <li> <b>Join OpenAIRE</b> <ul> <li>Now your repository/journal is ready to Join OpenAIRE!</li> <li><i>If you want to add a <b>literature repository</b></i>, click <a href="populateDoarList.action?mode=opendoar" target="_blank">here</a> and locate your repository. Add and correct any details in the form and click submit.<br> <i>If you want to add a <b>data repository</b></i>, click <a href="populateDoarList.action?mode=re3data" target="_blank">here</a> and locate your repository. Add and correct any details in the form and click submit.<br><i>If you want to add a <b>journal</b></i>, click <a href="prepareRepoRegistration.action?mode=journal" target="_blank">here</a>, fill in the form, and click submit.<br> <i>If you want to add an <b>aggregator</b></i>, click <a href="prepareRepoRegistration.action?mode=aggregator" target="_blank">here</a>, fill in the form, and click submit.</li> <li>After a short compatibility test against the OpenAIRE rule set, your repository will be ready to join OpenAIRE.</li> <li>An email will be sent to the repository administrator to confirm this request. Please make sure you have contacted them before registering.</li> <li>If the compatibility test does not succeed, you will be unable to join OpenAIRE until you correct all the errors that are found. Then you must re-submit your request (step 5).</li> </ul> </li> </ol> <p> For more information check the <a href="https://www.openaire.eu/support/faq#moofaqCat-19" target="_blank">FAQ</a> and our detailed <a href="jsps/manuals/user-manual.pdf" target="_blank">help guide</a>.<br> If you need further assistance please contact us through the <a href="https://www.openaire.eu/support/helpdesk" target="blank" class="help"> OpenAIRE Helpdesk</a>. </p><p><i>The validator is a customizable tool that may be installed and operated in various aggregating environments. <br/><a href="mailto:natalia@di.uoa.gr" class="icon-mail">Click here</a> to contact us and receive more information.</i></p> </div>
+homepage.admin.message = You have logged-in using an administrator email. For information on how to create new rules, new rule-sets, and for the various other functionalities, please refer to the <a href="jsps/manuals/administrator-manual.pdf">Administrator Manual</a>.
+homepage.message = You can view rules, rule-sets, job statistics and request changes to rules/rulesets.
+
+
+registration.title = User Registration
+registration.email = E-mail
+registration.password = Password
+registration.repassword = Re-enter password
+registration.successful = <span>An activation e-mail has been sent to the e-mail address you specified. Please follow the link included in that e-mail to activate your account.</span>
+registration.mail.subject = OpenAIRE Account Activation
+registration.mail.message = Please follow this link to activate your account
+registration.okAccountActivation = Account activation was successful! You can now log-in using your account details.
+registration.okAccountAlreadyActivation = Your account is already activated! You can log-in using your account details.
+registration.description = Register to use the OpenAIRE repository manager services
+registration.rememberme = Remember me
+registration.ldap.message = Your email address will be used for signing in the validator service.<br/>For the rest of the OpenAIRE services available through the openAIRE portal you will have to sign in using your username.
+registration.username = Username
+registration.username_email = Username/Email
+registration.firstName = First Name
+registration.lastName = Last Name
+registration.institution = Institution
+
+
+info.title = Information
+
+login.title = User Login
+login.forgotpassword = Forgot your password?
+login.notActivated = Your account has not been activated. Please check your mailbox again and follow the instructions found in the activation email.
+login.incorrectCreds = The credentials you entered are incorrect
+login.userNotExists = The username you specified doesn't have an associated account. You should consider registering it first.
+login.description = If you have an account
+login.overview = This service uses the same sign-in mechanism as the OpenAIRE portal so you can use the same credentials.
+
+forgotPassword.title = Reset Password
+forgotPassword.message = An e-mail will be sent to this address. Please follow the instructions found inside to reset your password.
+forgotPassword.mail.Subject = OpenAIRE Reset Password Request
+forgotPassword.mail.Body1 = To complete your password reset please follow this link
+forgotPassword.mail.Body2 = Security Code
+
+resetPassword.securityCode = Security Code
+resetPassword.securityCode.message = Enter the security code sent to you through mail.
+resetPassword.wrongSecurityCode = Security Code is incorrect
+resetPassword.success = You have successfully changed your password
+
+corneeded.title = Errors Found
+corneeded.back = Please use the "back" button of your browser to correct these errors
+
+manageJobs.deleteJobs.title = Delete Jobs
+manageJobs.deleteJobs.success = jobs deleted successfully
+manageJobs.deleteJobs.deleteOld = Delete jobs 
+manageJobs.deleteJobs.whatToDelete = What to delete
+
+manageJobs.sendReports.title = Send Registrations Report
+manageJobs.sendReports.selectDateFrom = Date from
+manageJobs.sendReports.selectDateTo = Date to
+manageJobs.sendReports.selectMonth = Select Month
+manageJobs.sendReports.selectYear = Select Year
+manageJobs.sendReports.success = Registrations Report sent successfully
+
+chooseRuleCategory.title = Choose Rule Category
+
+chooseRuleForEdit.title = Choose Rule
+chooseRuleForEdit.label = Choose Rule to Edit
+chooseRuleForEdit.label2 = Choose Rule to View
+chooseRuleForClone.label = Choose Rule to Clone
+
+addRule.title = Add Rule
+addRule.success = New rule has been added successfully
+addRule.uploadFile = Upload a File
+
+deleteRule.title = Delete Rule
+deleteRule.label = Choose Rule to Delete
+deleteRule.success = Rule has been deleted
+
+home.title = Homepage
+home.login = Sign In
+home.register = Register
+home.browseJobs = Browse Compatibility Test Results
+
+home.manageRules = Rules
+home.manageRules.addRule = Add New Rule
+home.manageRules.editRule = Edit Rule
+home.manageRules.cloneRule = Clone Rule
+home.manageRules.deleteRule = Delete Rule
+home.manageRules.viewRule = View Rule
+
+home.manageRulesets = RuleSets
+home.manageRulesets.createRuleSet = Create RuleSet
+home.manageRulesets.editRuleSet = Edit RuleSet
+home.manageRulesets.deleteRuleSet = Delete RuleSet
+home.manageRulesets.viewRuleSet = View RuleSet
+
+home.manageJobs = Jobs
+home.manageJobs.deleteJobs = Delete Jobs
+home.manageJobs.sendReport = Send Report
+home.manageJobs.viewStats = View Statistics
+
+home.manageUsers = Users
+home.manageUsers.addUser = Add User
+home.manageUsers.editUser = Edit User
+home.manageUsers.makeAdmin = Make Admin
+
+home.logout = Logout
+
+
+editRule.title = Edit Rule
+editRule.title2 = View Rule
+editRule.label = Choose Rule to Edit
+editRule.success = The rule was edited successfully
+
+editUser.title = Edit your account details
+editUser.fname = First Name
+editUser.lname = Last Name
+editUser.inst = Institution
+editUser.success = Your profile has been successfully updated
+
+createRuleSet.title = Create/Edit Rule Set
+createRuleSet.title2 = View Rule Set
+createRuleSet.name = Name
+createRuleSet.shortName = Short Name
+createRuleSet.visibility = Visibility
+createRuleSet.guidelinesAcronym = Guidelines Acronym
+createRuleSet.description = Description
+createRuleSet.rulesContent = Choose Content Rules
+createRuleSet.rulesUsage = Choose Usage Rules
+
+createRuleSet.success = The Set has been created successfully!
+createRuleSets.atLeastOneRule = You must select at least one rule to be added in this set
+
+chooseRuleSet.title = Choose Rule Set
+chooseRuleSet.label = Choose Rule Set
+
+deleteRuleSet.title = Delete Rule Set
+deleteRuleSet.success = Rule Set has been deleted successfully
+
+jobSummary.title = Test Summary
+jobSummary.successes = # Records
+jobSummary.errors = Success
+
+sidebar.toolbar = Toolbar
+sidebar.homepage = Homepage
+
+ruleSetInfo.name = Name
+ruleSetInfo.description = Description
+ruleSetInfo.jobType = Available in tests of type: 
+ruleSetInfo.message = Here you can find information on the rules contained in the chosen rule set. <div class="note"><h3 style="margin-left: -11px;">Definitions</h3><ul style="margin-left: -50px;"><li> Mandatory (M) = the field must always be present in the metadata record. An empty element is not allowed.</li> <li>Mandatory when applicable (MA) = when the value of the field can be obtained it must be present in the metadata record.</li> <li> Recommended (R) = the use of the field is recommended.</li> <li>Optional (O) = it is not important whether the element is used or not.</li></ul></div>
+ruleSetInfo.title = Rule Set Information
+ruleSetInfo.DRIVER = The DRIVER rule set checks the compatibility of your repository with the <a href="http://www.driver-support.eu/documents/DRIVER_Guidelines_v2_Final_2008-11-13.pdf">DRIVER guidelines</a>
+ruleSetInfo.openAIRE = The openAIRE rule set checks the compatibility of your repository with the <a href="http://www.openaire.eu/en/about-openaire/news-a-events/184-openaire-releases-version-10-of-the-openaire-guidelines.html">openAIRE guidelines</a>
+
+feedback.title = Send us your feedback
+feedback.message = Message
+feedback.reason = Reason
+feedback.loggedin = Please note that you must be logged-in to send a message using this form.
+feedback.success = Thank you for your message!
+
+help = Help
+help.addOaiContent.title = Adding an OAI-Content Validation
+help.addOaiContent.message = To add a new validation: <br>1. Select the base URL of the repository you want to validate. Please note that you need to have registered the repository first, and the administrator must have activated its registration.<br>2. Insert the number of records you want to validate.<br>3. Choose if you want the records to be selected randomly from those found in the repository, or in the order that the repository lists them.<br>4. If you want to validate only the records belonging to a particular set, insert the name of the set.<br>5. Either choose a predefined rule-set or manually choose the rules you want to apply.<br><br>You can view a rule set or an individual rule by using the toolbar on the left. For more information please refer to the <a href="jsps/manuals/user-manual.pdf">User Manual</a>, in the section <i>OAI Content Validation</i>.
+help.addOaiUsage.title = Adding an OAI-Usage Validation
+help.addOaiUsage.message = To add a new validation: <br>1. Select the base URL of the repository you want to validate. Please note that you need to have registered the repository first, and the administrator must have activated its registration.<br>2. Either choose a predefined rule-set or manually choose the rules you want to apply.<br><br>You can view a rule set or an individual rule by using the toolbar on the left. For more information please refer to the <a href="jsps/manuals/user-manual.pdf">User Manual</a>, in the section <i>OAI Usage Validation</i>.
+help.addRule.title = Adding a New Rule
+help.addRule.message =
+help.browseJobs.title = Browsing Validations
+help.browseJobs.message = Here you can browse all the past and current validations you have submitted. Please note that the results of an ongoing validation are not update in real-time, but only after the validation has finished its execution completely. To see a summary of the validation click on <i>Show Summary</i>. If you want more details about each task that was executed, you may click on <i>Show Details</i> though this is generally not neccessary. For more information please refer to the <a href="jsps/manuals/user-manual.pdf">User Manual</a>, in the section <i>Browsing Validations</i>.
+help.chooseJobCategory.title = Choosing a Validation Category
+help.chooseJobCategory.message = 
+help.chooseRuleCategory.title = Choosing a Rule Category
+help.chooseRuleCategory.message =
+help.chooseRuleCategory.type.title = Rule Type
+help.chooseRuleCategory.type.message =
+help.chooseRuleForEdit.title = Choosing a Rule
+help.chooseRuleForEdit.message =
+help.chooseRuleSet.title = Choosing a Rule Set
+help.chooseRuleSet.message =
+help.chooseRuleSetForDeletion.title = Choosing a Rule Set
+help.chooseRuleSetForDeletion.message =
+help.createRuleSet.title = Viewing a Rule Set
+help.createRuleSet.message = You can view the <i>name</i> of the Rule Set, as well as the rules that it contains (the ones with a blue background).
+help.deleteRule.title = Deleting a Rule
+help.deleteRule.message =
+help.editRule.title = Viewing a Rule
+help.editRule.message = When you view a rule you will be presented with many fields describing its functionality. For general purposes, the fields you must focus on are <i>name</i> and <i>description</i>. If you would like to find out what the rest of the fields mean, you must refer to the <a href="jsps/manuals/administrator-manual.pdf">administrator manual</a>.
+help.jobDetails.title = Viewing the Details of a Validation
+help.jobDetails.message = Here you can review details about each task of a validation. Each row refers to a certain task and you can see on which rule was used, which record it was applied on and if it was successful or not. Please note that retrieving the details of a validation can be a time-consuming process for large validations, and viewing a validation summary is generally sufficient. For more information please refer to the <a href="jsps/manuals/user-manual.pdf">User Manual</a>, in the section <i>Viewing Validation Details</i>.
+help.jobSummary.title = Viewing the Summary of a Validation
+help.jobSummary.message = Here you can review a summary of the validation results. Each row refers to a certain validation rule and you can see how many of the records were successfully validated. For the records that did not validate successfully, links are provided to their oai-dc metadata representation. For more information please refer to the <a href="jsps/manuals/user-manual.pdf">User Manual</a>, in the section <i>Viewing a Validation Summary</i>. 
+help.login.title = Logging in
+help.login.message =
+help.registration.title = Registering
+help.registration.message =
+help.repoRegistration.title = Registering a Repository
+help.repoRegistration.message = Before you can start a validation, you have to register the repository you want to validate (unless it is already registered by someone else). To do this, you must fill in it\''s base URL. Automatically an e-mail will be send to the repository\''s administrator containing an activation link. As soon as the administrator activates the registration, you will be able to start validations for this repository.
+help.resetPassword.title = Reseting your Password
+help.resetPassword.message =
+help.generic = <p>For help adding your repository/journal in OpenAIRE, please follow <a href="help.action">these instructions</a></p><p>For more advanced uses, you can find detailed information and step-by-step guides in the <a class="download" href="jsps/manuals/user-manual.pdf">User Manual</a></p><p>&nbsp;</p><p><i>The validator is a customizable tool that may be installed and operated in various aggregating environments. <br/><a href="mailto:natalia@di.uoa.gr" class="icon-mail">Click here</a> to contact us and receive more information.</i></p>
+help.newvalidation =<p><h3>Select repository/journal</h3> Select from the list, or enter the base OAI URL of the repository/journal. The repository''s/journal''s published sets are exposed in a later stage and you may select one for the compatibility tests.  </p> <p><h3>Select guidelines</h3> You may apply two types of compatibility tests on your repository: <ul style="text-aling:left"> <li>Content: specific to the content/format of the dc fields</li> <li>Usage: specific to the implementation of OAI-PMH</li> </ul> You may select from a predifined set of rules (OpenAIRE for Literature Repositories, OpenAIRE for Data Archives) or customize them according to your needs.  </p> <p><h3>Select parameters</h3> You may define an upper limit on the # of records tested. This is highly recommended for first time users, or when re-checking after the implementation of automated changes.  </p> <p> Select one of the repository''s/journal''s exposed sets.  </p><p> You may also group your results by a specific field. This is quite useful when validating an aggregator and you know in advance which is the field that distinguished among data sources. </p><p>For further assistance please contact the <a href="https://www.openaire.eu/support/helpdesk" target="_blank" class="external">OpenAIRE helpdesk</a>.</p>
+help.browsevalidations = <div class="download"><a href="jsps/manuals/user-manual.pdf" target="blank">Instructions manual</a></div> <p> <strong>TYPE:</strong> Content or Usage<br/> <strong>STATUS: </strong>Working / Stopped / Finished<br/> <strong>SCORE: </strong> <a href="score.action">click here</a> to find more<br/> <strong>SUBMITTED: </strong>time of submission<br/> <strong>DURATION: </strong>time test took to finish<br/> <strong>REPOSITORY: </strong>tested repository/journal<br/> <strong>GUIDELINES: </strong>guidelines used for testing<br/> <strong>REPORTS: </strong>comprehensive summary of the compatibility test results<br/> </p> <p>For further assistance please contact the <a href="https://www.openaire.eu/support/helpdesk" target="_blank" class="external">OpenAIRE helpdesk</a>.</p>
+help.jobsummary= <div class="download"><a href="jsps/manuals/user-manual.pdf" target="_blank">Instructions manual</a></div> <p>For further assistance please contact the <a href="https://www.openaire.eu/support/helpdesk" target="_blank" class="external">OpenAIRE helpdesk</a>.</p>
+help.registerRepo =  <p>Use the form on the right to add your repository or journal in OpenAIRE. If you want to find more information about this process <a href="jsps/manuals/user-manual.pdf" target="_blank">click here</a>.</p> <div class="alert">The official repository/journal administrator (his/her email address being retrieved from the OAI-PMH verb <b>Identify</b>) will be contacted and informed about registration request. So please make sure that you are either this person or have access to the email address, or that you have notified them.</div> For any problems or questions please contact the <a href="https://www.openaire.eu/support/helpdesk" target="_blank" class="external">OpenAIRE helpdesk</a>.
+help.chooseRepoForEdit = <p>You have access to edit one of the following repositories/journals listed on the right.</p> <p>For any problems or questions please contact the <a href="https://www.openaire.eu/support/helpdesk" target="_blank" class="external">OpenAIRE helpdesk</a>.</p>
+help.editRepoDnet = <p>Use the form on the right to update the repository/journal information.</p> <p>For any problems or questions please contact the <a href="https://www.openaire.eu/support/helpdesk" target="_blank" class="external">OpenAIRE helpdesk</a>.</p>
+help.admin=<div class="download"> For more information read our detailed <a href="jsps/manuals/administrator-manual.pdf" target="_blank">help guide</a>.</div>
+footer.text = &copy; 2010&nbsp;-&nbsp;2015 OpenAIRE
\ No newline at end of file
Index: modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/images/spinner.gif
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/images/spinner.gif
===================================================================
--- modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/images/spinner.gif	(nonexistent)
+++ modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/images/spinner.gif	(revision 47450)

Property changes on: modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/images/spinner.gif
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/images/middle_bg_t.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/images/middle_bg_t.png
===================================================================
--- modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/images/middle_bg_t.png	(nonexistent)
+++ modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/images/middle_bg_t.png	(revision 47450)

Property changes on: modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/images/middle_bg_t.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/images/top_icon.gif
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/images/top_icon.gif
===================================================================
--- modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/images/top_icon.gif	(nonexistent)
+++ modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/images/top_icon.gif	(revision 47450)

Property changes on: modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/images/top_icon.gif
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/chooseRuleSetForDeletion.jsp
===================================================================
--- modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/chooseRuleSetForDeletion.jsp	(nonexistent)
+++ modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/chooseRuleSetForDeletion.jsp	(revision 47450)
@@ -0,0 +1,49 @@
+<%@ page contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<%@ taglib prefix="s" uri="/struts-tags"%>
+<html>
+<head>
+<link href="jsps/favicon.ico" rel="shortcut icon" type="image/x-icon" />
+<link href="jsps/style.css" rel="stylesheet" type="text/css" media="screen" />
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title><s:text name="deleteRuleSet.title"/></title>
+</head>
+<body class="left">
+<div id="wrapper">
+	<jsp:include page="menu.jsp"/>
+	<div id="page">
+	<div id="page-bgtop">
+	<div id="middle">
+            <div class="middle-b">
+                <div class="background">
+			 <div id="left">
+                              <div id="left_container" >
+                                   <h2 class="helpHdr">Info</h2>
+                                   <s:text name="help.admin"/>
+                              </div>
+                         </div>
+                        <div id="main">
+                        <div id="main_container" class="clearfix">
+			<div id="content">
+				<h2 class="title"><s:text name="deleteRuleSet.title"/></h2>
+                                <div class="entry">
+                                        <s:form action="deleteRuleSet">
+                                                <s:select name="setId" list="sets" listValue="name" listKey="id" key="chooseRuleSet.label"/>
+                                                <s:submit cssClass="button-default"/>
+                                        </s:form>
+                                </div>
+			</div>
+			</div>
+			</div>
+		</div>
+	</div>
+	</div>
+	</div>
+
+    <div id="footer">
+                <jsp:include page="footer.jsp"/>
+        </div>
+</div>
+</div>
+</body>
+</html>
Index: modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/images/button_arrow_right.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/images/button_arrow_right.png
===================================================================
--- modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/images/button_arrow_right.png	(nonexistent)
+++ modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/images/button_arrow_right.png	(revision 47450)

Property changes on: modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/images/button_arrow_right.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/resources/web-error-texts.properties
===================================================================
--- modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/resources/web-error-texts.properties	(nonexistent)
+++ modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/resources/web-error-texts.properties	(revision 47450)
@@ -0,0 +1,21 @@
+compulsoryField = This field must have a value
+identicalPasswords = Passwords must be identical
+notValidEmail = Invalid email adress
+userAlreadyExists = This user already exists
+noActivationId = The activation id was not specified
+numericalValue = This field must have a numerical value
+recordsLessThan1 = At least 1 record must be used
+invalidBaseUrl = Invalid base Url
+alreadyRepo = Repository already exists. You may need to activate it.
+noAdminEmail = This repository does not provide an administrator email. Registration cannot continue.
+notBelongsToYou = This job doesn't belong to you or doesn't exist
+uknownError = Unknown Error
+requiredFieldNoValue = A required field(*) has no value
+wrongFieldValue = This field has an invalid value
+jobError = Your repository failed to validate. An automatic error report has been sent to the system administrator. You will soon be contacted with the reason for the error and any further actions that might be needed.
+generic.error = An unexpected error has occurred and the administrator was automatically notified. Please try again later.
+login.manual = Please login manually using your account from the OpenAIRE portal
+registration.notOpenDoar = The registration of repositories not in OpenDoar is disabled
+job.noTasks = It appears that this test is empty. Likely causes are the following: <br><br>1. The test is still running <br>2. The chosen set didn't contain any records (e.g., the ec_fundedresources set is empty) <br>3. The test contained no rules <br>4. An unexpected error occurred and might be resolved if you try again later <br><br>If you think that none of the above reasons applies, please report this issue using <a href="http://www.openaire.eu/en/support/helpdesk?view=detail&cid[0]=-1">this form</a>.
+registration.modeNotSelected = It appears that you haven\'t chosen the correct type of repository. Please choose 'JOIN OPENAIRE' from main menu and choose the right one.
+registration.noAggregated = It appears that you repository is part of an aggregator. Your repository will be automatically registered when the aggregator registers in OpenAIRE. Aggregator Name
\ No newline at end of file
Index: modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/chooseRuleSet.jsp
===================================================================
--- modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/chooseRuleSet.jsp	(nonexistent)
+++ modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/chooseRuleSet.jsp	(revision 47450)
@@ -0,0 +1,49 @@
+<%@ page contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<%@ taglib prefix="s" uri="/struts-tags"%>
+<html>
+<head>
+<link href="jsps/favicon.ico" rel="shortcut icon" type="image/x-icon" />
+<link href="jsps/style.css" rel="stylesheet" type="text/css" media="screen" />
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title><s:text name="chooseRuleSet.title"/></title>
+</head>
+<body class="left">
+<div id="wrapper">
+	<jsp:include page="menu.jsp"/>
+	<div id="page">
+	<div id="page-bgtop">
+	<div id="middle">
+            <div class="middle-b">
+                <div class="background">
+			 <div id="left">
+                              <div id="left_container" >
+                                   <h2 class="helpHdr">Info</h2>
+                                   <s:text name="help.admin"/>
+                              </div>
+                         </div>
+                        <div id="main">
+                        <div id="main_container" class="clearfix">
+			<div id="content">
+				<h2 class="title"><s:text name="chooseRuleSet.title"/></h2>
+                                <div class="entry">
+                                        <s:form action="getRulesForSet">
+                                                <s:select name="setId" list="sets" listValue="name" listKey="id" key="chooseRuleSet.label"/>
+                                                <s:submit cssClass="button-default"/>
+                                        </s:form>
+                                </div>
+			</div>
+			</div>
+			</div>
+		</div>
+	</div>
+	</div>
+	</div>
+
+    <div id="footer">
+                <jsp:include page="footer.jsp"/>
+        </div>
+</div>
+</div>
+</body>
+</html>
Index: modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/images/page_bg.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/images/page_bg.png
===================================================================
--- modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/images/page_bg.png	(nonexistent)
+++ modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/images/page_bg.png	(revision 47450)

Property changes on: modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/images/page_bg.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/images/img03.gif
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/images/img03.gif
===================================================================
--- modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/images/img03.gif	(nonexistent)
+++ modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/images/img03.gif	(revision 47450)

Property changes on: modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/images/img03.gif
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/images/warning.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/images/warning.png
===================================================================
--- modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/images/warning.png	(nonexistent)
+++ modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/images/warning.png	(revision 47450)

Property changes on: modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/images/warning.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/images/box_warning.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/images/box_warning.png
===================================================================
--- modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/images/box_warning.png	(nonexistent)
+++ modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/images/box_warning.png	(revision 47450)

Property changes on: modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/images/box_warning.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/images/img04.jpg
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/images/img04.jpg
===================================================================
--- modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/images/img04.jpg	(nonexistent)
+++ modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/images/img04.jpg	(revision 47450)

Property changes on: modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/images/img04.jpg
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/images/checkmark_24.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/images/checkmark_24.png
===================================================================
--- modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/images/checkmark_24.png	(nonexistent)
+++ modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/images/checkmark_24.png	(revision 47450)

Property changes on: modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/images/checkmark_24.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/images/box_hint.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/images/box_hint.png
===================================================================
--- modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/images/box_hint.png	(nonexistent)
+++ modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/images/box_hint.png	(revision 47450)

Property changes on: modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/images/box_hint.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/registrationsReport.jsp
===================================================================
--- modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/registrationsReport.jsp	(nonexistent)
+++ modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/registrationsReport.jsp	(revision 47450)
@@ -0,0 +1,74 @@
+<%@ page contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<%@ taglib prefix="s" uri="/struts-tags"%>
+<%@ taglib prefix="sj" uri="/struts-jquery-tags"%>
+<html>
+<head>
+<link href="jsps/style.css" rel="stylesheet" type="text/css" media="screen" />
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<!--<meta http-equiv="refresh" content="13" >-->
+<title><s:text name="manageJobs.sendReports.title"/></title>
+<link href="jsps/favicon.ico" rel="shortcut icon" type="image/x-icon" />
+<sj:head />
+</head>
+<body class="left">
+
+<div id="wrapper">
+	<jsp:include page="menu.jsp"/>
+	<div id="page">
+		<div id="page-bgtop">
+			<div id="middle">
+                <div class="middle-b">
+                    <div class="background">
+                    	<div id="left">
+                        	<div id="left_container">
+	                             <h2 class="helpHdr">Info</h2>
+                                 <s:text name="help.browsevalidations"/>
+                            </div>
+                        </div>
+                        <div id="main">
+                            <div id="main_container" class="clearfix">
+                                <div id="mainmiddle" class="floatbox">
+                                    <h1 class="title"><s:text name="manageJobs.sendReports.title"/></h1>
+<%--                                     <s:if test="%{enableCuration}"> --%>
+	                                    <s:form action="sendRegistrationsReport">
+	                                   		 <s:select name="month" 
+ 	                                    		key="manageJobs.sendReports.selectMonth"
+  	                          					list="#{'January-01':'January','February-02':'February','March-03':'March',
+  	                          					'April-04':'April','May-05':'May','June-06':'June',
+  	                          					'July-07':'July','August-08':'August','September-09':'September',
+  	                          					'October-10':'October','November-11':'November','December-12':'December'}"
+                                             	required="true"
+ 	  					                    />
+ 	  					                    <s:select name="year" 
+ 	                                    		key="manageJobs.sendReports.selectYear"
+  	                          					list="#{'2013':'2013','2014':'2014','2015':'2015'}"
+                                             	required="true"
+ 	  					                    />
+<%--      										<sj:datepicker name="manageJobs.sendReports.selectDateFrom" changeMonth="true" changeYear="true" displayFormat="yy-mm-dd"/> --%>
+<%--      										<sj:datepicker name="manageJobs.sendReports.selectMonthDateTo" changeMonth="true" changeYear="true" displayFormat="yy-mm-dd"/> --%>
+     										
+<%-- 	                                    	<s:select name="mode"  --%>
+<%-- 	                                    		key="manageJobs.deleteJobs.whatToDelete" --%>
+<%--  	                          					list="#{'all':'All jobs', 'compTest_only':'Compatibility Tests only', 'uncompleted_only':'Uncompleted jobs'}" --%>
+<%--                                             	required="true" --%>
+<%-- 	  					                    /> --%>
+	                                    	<s:submit cssClass="button-default"/>
+	                                    </s:form>
+<%-- 	                               </s:if> --%>
+                                    
+								</div>
+                            </div>
+                        </div>
+                    </div>
+                </div>
+            </div>
+		</div>
+		<!-- NMI This needs to be the same in all pages and the text is some properties file -->
+        <div id="footer"> 
+           <jsp:include page="footer.jsp"/>
+        </div>
+	</div>
+</div>
+</body>
+</html>
Index: modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/images/Line_Header.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/images/Line_Header.png
===================================================================
--- modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/images/Line_Header.png	(nonexistent)
+++ modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/images/Line_Header.png	(revision 47450)

Property changes on: modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/images/Line_Header.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/signin.jsp
===================================================================
--- modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/signin.jsp	(nonexistent)
+++ modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/signin.jsp	(revision 47450)
@@ -0,0 +1,76 @@
+<%@ page contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<%@ taglib prefix="s" uri="/struts-tags"%>
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title><s:text name="login.title"/></title>
+<link href="jsps/favicon.ico" rel="shortcut icon" type="image/x-icon" />
+<link href="jsps/style.css" rel="stylesheet" type="text/css" media="screen" />
+</head>
+<body>
+<div id="wrapper">
+	<jsp:include page="menu.jsp"/>
+	<div id="page">
+		<div id="page-bgtop">
+			<div id="middle">
+                <div class="middle-b">
+                    <div class="background">
+                        <div class="main">
+                        <div id="main_container" class="clearfix">
+                                <div id="mainmiddle" class="floatbox">
+                                    <s:actionerror/>
+                                    <div class="post">
+                                        <h2 class="title"><s:text name="login.title"/></h2>
+                                        <s:text name="login.description"/>
+                                        <%--<p class="meta"><a href='<s:url value="/jsps/help.jsp#login"/>' target="_blank"><s:text name="help"/></a></p>--%>
+                                        <div class="entry">
+                                            <s:form action="Login">
+                                                <s:if test="%{repoMode.trim().toLowerCase().equals(\"dnet\")}">
+                                                    <s:textfield name="email" key="registration.username"/>
+                                                </s:if>
+                                                <s:else>
+                                                    <s:textfield name="email" key="registration.email"/>
+                                                </s:else>
+                                                <s:password name="password" key="registration.password"/>
+                                                <%-- <s:checkbox name="rememberme" key="registration.rememberme"/> --%>
+                                                <s:submit/>
+                                            </s:form>
+                                            <a href='<s:url value="forgotPassword" />'><s:text name="login.forgotpassword"/></a>
+                                        </div>
+                                    </div>
+                                    <div class="post">
+                                        <h2 class="title"><s:text name="registration.title"/></h2>
+                                        <s:text name="registration.description"/>
+                                        <%--<p class="meta"><a href='<s:url value="/jsps/help.jsp#registration"/>' target="_blank"><s:text name="help"/></a></p>--%>
+                                        <div class="entry">
+                                            <%-- <s:if test="%{@gr.uoa.di.validatorweb.configs.Constants@isModeLdap()}">
+                                                <s:text name="registration.ldap.message"/>
+                                            </s:if> --%>
+                                            <s:form action="Register">
+                                                <s:if test="%{repoMode.trim().toLowerCase().equals(\"dnet\")}">
+                                                    <s:textfield name="username" key="registration.username"/>
+                                                    <s:textfield name="firstName" key="registration.firstName"/>
+                                                    <s:textfield name="lastName" key="registration.lastName"/>
+                                                </s:if>
+                                                <s:textfield name="email" key="registration.email"/>
+                                                <s:password name="password" key="registration.password"/>
+                                                <s:password name="repassword" key="registration.repassword"/>
+                                                <s:submit/>
+                                            </s:form>
+                                        </div>
+                                    </div>
+								</div>
+                            </div>
+                        </div>
+                    </div>
+                </div>
+            </div>
+		</div>
+		  <div id="footer"> 
+           <jsp:include page="footer.jsp"/>
+        </div>
+	</div>
+</div>
+</body>
+</html>
\ No newline at end of file
Index: modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/images/info.jpg
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/images/info.jpg
===================================================================
--- modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/images/info.jpg	(nonexistent)
+++ modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/images/info.jpg	(revision 47450)

Property changes on: modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/images/info.jpg
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/images/img01.jpg
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/images/img01.jpg
===================================================================
--- modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/images/img01.jpg	(nonexistent)
+++ modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/images/img01.jpg	(revision 47450)

Property changes on: modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/images/img01.jpg
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/images/box_tip.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/images/box_tip.png
===================================================================
--- modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/images/box_tip.png	(nonexistent)
+++ modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/images/box_tip.png	(revision 47450)

Property changes on: modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/images/box_tip.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/images/footer_anchor.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/images/footer_anchor.png
===================================================================
--- modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/images/footer_anchor.png	(nonexistent)
+++ modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/images/footer_anchor.png	(revision 47450)

Property changes on: modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/images/footer_anchor.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/images/list_disc.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/images/list_disc.png
===================================================================
--- modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/images/list_disc.png	(nonexistent)
+++ modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/images/list_disc.png	(revision 47450)

Property changes on: modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/images/list_disc.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/login.jsp
===================================================================
--- modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/login.jsp	(nonexistent)
+++ modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/login.jsp	(revision 47450)
@@ -0,0 +1,86 @@
+<%@ page contentType="text/html; charset=UTF-8"
+    pageEncoding="UTF-8"%>
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<%@ taglib prefix="s" uri="/struts-tags"%>
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title><s:text name="login.title"/></title>
+<link href="jsps/favicon.ico" rel="shortcut icon" type="image/x-icon" />
+<link href="jsps/style.css" rel="stylesheet" type="text/css" media="screen" />
+</head>
+<body>
+<div id="wrapper">
+	<jsp:include page="menu.jsp"/>
+	<div id="page">
+        <div id="page-bgtop">
+             <div id="middle">
+                <div class="middle-b">
+                    <div class="background">
+                        <div id="main">
+                            <div id="main_container" class="clearfix">
+                                <div id="mainmiddle" class="floatbox">
+                                <h1>Sign In </h1>
+	                                <div class="notes">
+    		                            <s:text name="login.overview"/>
+   		                            </div>
+                                    <s:actionerror/>
+                                    <div class="post width45 separator float-left">
+                                        <h2><s:text name="login.title"/></h2>
+                                        <s:text name="login.description"/>
+                                        <%--<p class="meta"><a href='<s:url value="/jsps/help.jsp#login"/>' target="_blank"><s:text name="help"/></a></p>--%>
+                                        <div class="entry">
+                                            <s:form action="Login">
+                                            	
+                                            	<s:hidden name="url" value="%{#request['javax.servlet.forward.servlet_path']}"/>
+            									<s:hidden name="params" value="%{#request['javax.servlet.forward.query_string']}"/>  
+    
+                                                <s:textfield name="email_username" key="registration.username_email"/>
+                                                <s:password name="password_login" key="registration.password"/>
+
+                                                <%-- <s:checkbox name="rememberme" key="registration.rememberme"/> --%>
+                                                <s:submit  cssClass="button-default" value="Sign In"/>
+                                            </s:form>
+                                            <a class="smallfont" href='<s:url action="forgotPassword"/>'><s:text name="login.forgotpassword"/></a>
+                                        </div>
+                                    </div>
+                                    
+                                    <div class="post width45 float-left">
+                                        <h2><s:text name="menu.account.registration.title"/></h2>
+                                        <div class="entry">
+                                            <!-- NMI take the following out if everything works fine
+                                            <a href='<s:url action="go2registration" />'><s:text name="menu.account.registration" /></a>
+                                            -->
+                                        <s:text name="registration.description"/>
+                                        <%--<p class="meta"><a href='<s:url value="/jsps/help.jsp#registration"/>' target="_blank"><s:text name="help"/></a></p>--%>
+                                        
+                                            <%-- <s:if test="%{@gr.uoa.di.validatorweb.configs.Constants@isModeLdap()}">
+                                                <s:text name="registration.ldap.message"/>
+                                            </s:if> --%>
+                                            <s:form action="Register">
+                                                <s:textfield name="username" key="registration.username" requiredLabel="true"/>
+                                                <s:textfield name="firstName" key="registration.firstName" requiredLabel="true"/>
+                                                <s:textfield name="lastName" key="registration.lastName" requiredLabel="true"/>
+                                                <s:textfield name="email" key="registration.email" requiredLabel="true"/>
+                                                <s:textfield name="institution" key="registration.institution" />
+                                                <s:password name="password" key="registration.password" requiredLabel="true"/>
+                                                <s:password name="repassword" key="registration.repassword" requiredLabel="true"/>
+                                                <s:submit cssClass="button-default" value="Register"/>
+                                            </s:form>
+                                        </div>
+                                </div>
+                                 </div>
+                             </div>
+                         </div>
+                    </div>
+                </div>
+            </div>        
+        </div>
+        <!-- NMI This needs to be the same in all pages and the text is some properties file -->
+        <div id="footer"> 
+		<jsp:include page="footer.jsp"/>
+	</div>
+	</div>
+</div>
+</body>
+</html>
Index: modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/rules.jsp
===================================================================
--- modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/rules.jsp	(nonexistent)
+++ modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/rules.jsp	(revision 47450)
@@ -0,0 +1,3 @@
+<%@ taglib prefix="s" uri="/struts-tags"%>
+
+<s:property value="#request['jsonization']" escape="false"/>
\ No newline at end of file
Index: modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/editRule.jsp
===================================================================
--- modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/editRule.jsp	(nonexistent)
+++ modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/editRule.jsp	(revision 47450)
@@ -0,0 +1,121 @@
+<%@ page contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<%@ taglib prefix="s" uri="/struts-tags"%>
+<html>
+<head>
+<link href="jsps/favicon.ico" rel="shortcut icon" type="image/x-icon" />
+<link href="jsps/style.css" rel="stylesheet" type="text/css" media="screen" />
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<s:if test="%{#session.isAdmin != null && #session.isAdmin.equals(\"true\")}">
+        <s:set name="isAdmin" value="true"/>
+</s:if>
+<s:else>
+        <s:set name="isAdmin" value="false"/>
+</s:else>
+<title>
+        <s:if test="%{#isAdmin}">
+                <s:text name="editRule.title"/>
+        </s:if>
+        <s:else>
+                <s:text name="editRule.title2"/>
+        </s:else>
+</title>
+
+</head>
+<body class="left">
+<div id="wrapper">
+	<jsp:include page="menu.jsp"/>
+	<div id="page">
+	<div id="page-bgtop">
+	<div id="middle">
+            <div class="middle-b">
+                <div class="background">
+			 <div id="left">
+                              <div id="left_container" >
+                                   <h2 class="helpHdr">Info</h2>
+                                   <s:text name="help.admin"/>
+                              </div>
+                         </div>
+                        <div id="main">
+                        <div id="main_container" class="clearfix">
+			<div id="content">
+				<s:if test="%{#isAdmin}">
+                                        <h2 class="title"><s:text name="editRule.title"/></h2>
+                                </s:if>
+                                <s:else>
+                                        <h2 class="title"><s:text name="editRule.title2"/></h2>
+                                </s:else>
+                                <div class="entry">
+                                        <s:form action="editRule">
+                                        		<s:hidden name="funct"/>
+                                                <s:hidden name="rule.id" value="%{rule.id}"/>
+                                                <s:hidden name="rule.for_cris"/>
+                                                <s:iterator value="ruleValues" var="ruleValue">
+                                                        <s:set name="label" value="%{#ruleValue.fieldName}"/>
+                                                        <s:set name="dscr" value="%{#ruleValue.fieldName+\".description\"}"/>
+                                                        <s:set name="tltp" value="%{#ruleValue.fieldName+\".name\"}"/>
+                                                        <s:if test="%{#label.equals(\"xmlvocabulary_rule.terms\") || #label.equals(\"rules.description\")}">
+                                                                <s:textarea name="inputs" value="%{#ruleValue.fieldValue}" title="%{getText(#dscr)}" label="%{getText(#tltp)}" cols="50" rows="10" disabled='%{!#isAdmin}'/>
+                                                        </s:if>
+                                                        <s:elseif test="%{#label.equals(\"xmlcrisclassvocabulary_rule.terms\") || #label.equals(\"xmlcrisreferentialintegrity_rule.terms\")}">
+                                                                <s:textarea name="inputs" value="%{#ruleValue.fieldValue}" title="%{getText(#dscr)}" label="%{getText(#tltp)}" cols="50" rows="10" disabled='%{!#isAdmin}'/>
+                                                        </s:elseif>
+                                                        <s:elseif test="%{#label.equals(\"xmlvocabulary_rule.terms_type\")}">
+                                                                <s:select label="%{getText(#tltp)}" name="inputs" value="%{#ruleValue.fieldValue}" list="#{'whitelist':'whitelist', 'blacklist':'blacklist'}" title="%{getText(#dscr)}"/>
+                                                        </s:elseif>
+                                                        <s:elseif test="%{#label.equals(\"rules.mandatory\")}">
+                                                                <s:select label="%{getText(#tltp)}" name="inputs" value="%{rule.mandatory}" list="#{'true':'true', 'false':'false'}" title="%{getText(#dscr)}"/>
+                                                        </s:elseif>
+                                                        <s:elseif test="%{#label.equals(\"rules.cris_entity\")}">
+                                                                <s:select label="%{getText(#tltp)}" name="inputs" list="entityTypes" value="%{rule.entity_type}" title="%{getText(#dscr)}"/>
+                                                        </s:elseif>
+														<s:elseif test="%{#label.matches('.*success')}">
+															<s:select label="%{getText(#tltp)}" name="inputs" value="%{#ruleValue.fieldValue}" list="#{'>0':'>0', 'all':'all', '0':'0', '1':'1'}" title="%{getText(#dscr)}"/>
+														</s:elseif>
+                                                        <s:elseif test="%{#label.equals(\"chain_rule.type\")}">
+                                                                <s:select label="%{getText(#tltp)}" name="inputs" value="%{#ruleValue.fieldValue}" list="#{'or':'or', 'and':'and', 'horn':'horn'}" title="%{getText(#dscr)}"/>
+                                                        </s:elseif>
+                                                        <s:elseif test="%{#label.equals(\"chain_rule.rule_1\")}">
+                                                                <s:select name="inputs" list="rules" listValue="name" listKey="id"  value="%{#ruleValue.fieldValue}" label="%{getText(#tltp)}" title="%{getText(#dscr)}"/>
+                                                        </s:elseif>
+                                                        <s:elseif test="%{#label.equals(\"chain_rule.rule_2\")}">
+                                                                <s:select name="inputs" list="rules" listValue="name" listKey="id"  value="%{#ruleValue.fieldValue}" label="%{getText(#tltp)}" title="%{getText(#dscr)}"/>
+                                                        </s:elseif>
+                                                        <s:elseif test="%{#label.equals(\"rules.provider_information\")}">
+<%-- 															<s:if test="%{rule.job_type.equals(\"OAI Usage\")}"> --%>
+															<s:textfield name="inputs" value="%{#ruleValue.fieldValue}" title="%{getText(#dscr)}" label="%{getText(#tltp)}" disabled='%{!#isAdmin}'/>
+<%--                                                         	</s:if> --%>
+														</s:elseif>
+                                                        <s:else>
+                                                                <s:textfield name="inputs" value="%{#ruleValue.fieldValue}" title="%{getText(#dscr)}" label="%{getText(#tltp)}" disabled='%{!#isAdmin}'/>
+                                                        </s:else>
+                                                </s:iterator>
+<%--                                                 <s:textfield name="rule.entity_type" label="%{getText(\"jobs.entity_type.name\")}" title="%{getText(\"jobs.entity_type.description\")}" /> --%>
+                                                <s:textfield name="rule.job_type" label="%{getText(\"jobs.job_type.name\")}" title="%{getText(\"jobs.job_type.description\")}" readonly='true'/>
+                                                <s:textfield name="rule.type" label="%{getText(\"rules.type.name\")}" title="%{getText(\"rules.type.description\")}" readonly='true'/>
+                                                <s:if test="%{#isAdmin}">
+                                                 	<s:if test="%{funct.equals(\"edit\")}">
+                                                        <s:submit value="Update" cssClass="button-default"/>
+                                                    </s:if>
+                                                    <s:elseif test="%{funct.equals(\"clone\")}">
+                                                    	<s:submit value="Clone" cssClass="button-default"/>
+                                                    </s:elseif>
+                                                </s:if>
+                                        </s:form>
+                                </div>
+
+			</div>
+			</div>
+			</div>
+		</div>
+	</div>
+	</div>
+	</div>
+
+    <div id="footer">
+                <jsp:include page="footer.jsp"/>
+        </div>
+</div>
+</div>
+</body>
+</html>
Index: modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/images/list_checkbox.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/images/list_checkbox.png
===================================================================
--- modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/images/list_checkbox.png	(nonexistent)
+++ modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/images/list_checkbox.png	(revision 47450)

Property changes on: modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/images/list_checkbox.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/fonts/yanonekaffeesatz.css
===================================================================
--- modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/fonts/yanonekaffeesatz.css	(nonexistent)
+++ modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/fonts/yanonekaffeesatz.css	(revision 47450)
@@ -0,0 +1,13 @@
+/* Copyright (C) YOOtheme GmbH, YOOtheme Proprietary Use License (http://www.yootheme.com/license) */
+
+@font-face {
+	font-family: 'YanoneKaffeesatzLight';
+	src: url('YanoneKaffeesatz-Light-webfont.eot');
+	src: url('YanoneKaffeesatz-Light-webfont.eot?#iefix') format('embedded-opentype'),
+		url('YanoneKaffeesatz-Light-webfont.woff') format('woff'),
+		url('YanoneKaffeesatz-Light-webfont.ttf') format('truetype'),
+		url('YanoneKaffeesatz-Light-webfont.svg#YanoneKaffeesatzLight') format('svg');
+	font-weight: normal;
+	font-style: normal;
+}
+
Index: modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/fonts/OpenSans-Light-webfont.eot
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/fonts/OpenSans-Light-webfont.eot
===================================================================
--- modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/fonts/OpenSans-Light-webfont.eot	(nonexistent)
+++ modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/fonts/OpenSans-Light-webfont.eot	(revision 47450)

Property changes on: modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/fonts/OpenSans-Light-webfont.eot
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/fonts/DroidSans-webfont.woff
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/fonts/DroidSans-webfont.woff
===================================================================
--- modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/fonts/DroidSans-webfont.woff	(nonexistent)
+++ modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/fonts/DroidSans-webfont.woff	(revision 47450)

Property changes on: modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/fonts/DroidSans-webfont.woff
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/fonts/OpenSans-Light-webfont.woff
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/fonts/OpenSans-Light-webfont.woff
===================================================================
--- modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/fonts/OpenSans-Light-webfont.woff	(nonexistent)
+++ modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/fonts/OpenSans-Light-webfont.woff	(revision 47450)

Property changes on: modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/fonts/OpenSans-Light-webfont.woff
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/fonts/YanoneKaffeesatz-Light-webfont.woff
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/fonts/YanoneKaffeesatz-Light-webfont.woff
===================================================================
--- modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/fonts/YanoneKaffeesatz-Light-webfont.woff	(nonexistent)
+++ modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/fonts/YanoneKaffeesatz-Light-webfont.woff	(revision 47450)

Property changes on: modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/fonts/YanoneKaffeesatz-Light-webfont.woff
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/images/icon_file.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/images/icon_file.png
===================================================================
--- modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/images/icon_file.png	(nonexistent)
+++ modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/images/icon_file.png	(revision 47450)

Property changes on: modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/images/icon_file.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/chooseRuleForClone.jsp
===================================================================
--- modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/chooseRuleForClone.jsp	(nonexistent)
+++ modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/chooseRuleForClone.jsp	(revision 47450)
@@ -0,0 +1,50 @@
+<%@ page contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<%@ taglib prefix="s" uri="/struts-tags"%>
+<html>
+<head>
+<link href="jsps/favicon.ico" rel="shortcut icon" type="image/x-icon" />
+<link href="jsps/style.css" rel="stylesheet" type="text/css" media="screen" />
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title><s:text name="chooseRuleForEdit.title"/></title>
+</head>
+<body class="left">
+<div id="wrapper">
+	<jsp:include page="menu.jsp"/>
+	<div id="page">
+	<div id="page-bgtop">
+	<div id="middle">
+            <div class="middle-b">
+                <div class="background">
+			 <div id="left">
+                              <div id="left_container" >
+                                   <h2 class="helpHdr">Info</h2>
+                                   <s:text name="help.admin"/>
+                              </div>
+                         </div>
+                        <div id="main">
+                        <div id="main_container" class="clearfix">
+			<div id="content">
+				<h2 class="title"><s:text name="chooseRuleForEdit.title"/></h2>
+                               <div class="entry">
+					<s:form action="prepareEditRule">
+                           <s:select name="ruleId" list="rules" listValue="name" listKey="id"  key="chooseRuleForClone.label"/>
+                           <s:hidden name="funct" value="clone"/>
+                           <s:submit cssClass="button-default"/>
+                    </s:form>
+                                </div>
+			</div>
+			</div>
+			</div>
+		</div>
+	</div>
+	</div>
+	</div>
+
+    <div id="footer">
+                <jsp:include page="footer.jsp"/>
+        </div>
+        </div>
+</div>
+</body>
+</html>
Index: modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/fonts/YanoneKaffeesatz-Light-webfont.eot
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/fonts/YanoneKaffeesatz-Light-webfont.eot
===================================================================
--- modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/fonts/YanoneKaffeesatz-Light-webfont.eot	(nonexistent)
+++ modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/fonts/YanoneKaffeesatz-Light-webfont.eot	(revision 47450)

Property changes on: modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/fonts/YanoneKaffeesatz-Light-webfont.eot
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/images/EC_logo_blue_multi_horizontal.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/images/EC_logo_blue_multi_horizontal.png
===================================================================
--- modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/images/EC_logo_blue_multi_horizontal.png	(nonexistent)
+++ modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/images/EC_logo_blue_multi_horizontal.png	(revision 47450)

Property changes on: modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/images/EC_logo_blue_multi_horizontal.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/images/opendoar.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/images/opendoar.png
===================================================================
--- modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/images/opendoar.png	(nonexistent)
+++ modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/images/opendoar.png	(revision 47450)

Property changes on: modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/images/opendoar.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/images/list_check.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/images/list_check.png
===================================================================
--- modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/images/list_check.png	(nonexistent)
+++ modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/images/list_check.png	(revision 47450)

Property changes on: modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/images/list_check.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/images/error.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/images/error.png
===================================================================
--- modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/images/error.png	(nonexistent)
+++ modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/images/error.png	(revision 47450)

Property changes on: modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/images/error.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/images/middle_bg_b.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/images/middle_bg_b.png
===================================================================
--- modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/images/middle_bg_b.png	(nonexistent)
+++ modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/images/middle_bg_b.png	(revision 47450)

Property changes on: modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/images/middle_bg_b.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/images/toolbar_m.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/images/toolbar_m.png
===================================================================
--- modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/images/toolbar_m.png	(nonexistent)
+++ modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/images/toolbar_m.png	(revision 47450)

Property changes on: modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/images/toolbar_m.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/images/menu_level2_parent.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/images/menu_level2_parent.png
===================================================================
--- modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/images/menu_level2_parent.png	(nonexistent)
+++ modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/images/menu_level2_parent.png	(revision 47450)

Property changes on: modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/images/menu_level2_parent.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/images/info.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/images/info.png
===================================================================
--- modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/images/info.png	(nonexistent)
+++ modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/images/info.png	(revision 47450)

Property changes on: modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/images/info.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/images/page_bg_img.jpg
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/images/page_bg_img.jpg
===================================================================
--- modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/images/page_bg_img.jpg	(nonexistent)
+++ modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/images/page_bg_img.jpg	(revision 47450)

Property changes on: modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/images/page_bg_img.jpg
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/images/img07.jpg
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/images/img07.jpg
===================================================================
--- modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/images/img07.jpg	(nonexistent)
+++ modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/images/img07.jpg	(revision 47450)

Property changes on: modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/images/img07.jpg
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/images/img02.jpg
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/images/img02.jpg
===================================================================
--- modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/images/img02.jpg	(nonexistent)
+++ modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/images/img02.jpg	(revision 47450)

Property changes on: modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/images/img02.jpg
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/fonts/maven_pro_regular-webfont.svg
===================================================================
--- modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/fonts/maven_pro_regular-webfont.svg	(nonexistent)
+++ modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/fonts/maven_pro_regular-webfont.svg	(revision 47450)
@@ -0,0 +1,245 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" >
+<svg xmlns="http://www.w3.org/2000/svg">
+<metadata>
+This is a custom SVG webfont generated by Font Squirrel.
+Copyright   : Copyright c 2011 by Vissol Ltd All rights reserved
+Designer    : Joe Prince
+Foundry     : Joe Prince
+</metadata>
+<defs>
+<font id="webfontOM8fITNz" horiz-adv-x="1529" >
+<font-face units-per-em="2048" ascent="1638" descent="-410" />
+<missing-glyph horiz-adv-x="692" />
+<glyph unicode=" "  horiz-adv-x="692" />
+<glyph unicode="&#x09;" horiz-adv-x="692" />
+<glyph unicode="&#xa0;" horiz-adv-x="692" />
+<glyph unicode="!" horiz-adv-x="761" d="M303 0v164h164v-164h-164zM311 1366h148l-15 -1022h-118z" />
+<glyph unicode="&#x22;" horiz-adv-x="780" d="M440 1384h170l-37 -411h-98zM203 973l-37 411h170l-35 -411h-98z" />
+<glyph unicode="#" horiz-adv-x="1210" d="M850 1071h125l-43 -242h147v-122h-168l-57 -326h166v-123h-186l-37 -219h-125l37 219h-271l-39 -219h-125l39 219h-168v123h189l55 326h-186v122h209l41 242h125l-41 -242h270zM729 381l57 326h-272l-55 -326h270z" />
+<glyph unicode="$" horiz-adv-x="1181" d="M1055 348q0 -156 -105.5 -250t-296.5 -110v-209h-110v205q-207 6 -377 96v160q158 -104 377 -109v520q-76 23 -117 37t-101.5 44t-92 63.5t-55 87t-23.5 121.5q0 143 95 249.5t294 126.5v209h110v-205q166 -8 314 -81v-152q-150 84 -314 86v-469q88 -29 147.5 -55.5 t124 -73.5t97.5 -120t33 -171zM301 1004q0 -78 61.5 -121t180.5 -80v428q-242 -34 -242 -227zM653 135q254 33 254 213q0 106 -65.5 165.5t-188.5 102.5v-481z" />
+<glyph unicode="%" horiz-adv-x="1777" d="M442 1360q123 0 209 -83t86 -294q0 -113 -26.5 -190.5t-71.5 -116.5t-93 -55.5t-104 -16.5q-57 0 -104 16.5t-93 55.5t-73 116.5t-27 190.5q0 111 27 189.5t73 116.5t93 54.5t104 16.5zM442 711q84 0 133.5 55t49.5 217t-49.5 216t-133.5 54q-86 0 -135 -54t-49 -216 t50 -217t134 -55zM1384 1366l-858 -1366h-131l858 1366h131zM1339 6q-57 0 -104 16.5t-93 55.5t-73 116.5t-27 190.5t27 190.5t73 116.5t93 55.5t104 16.5q55 0 103.5 -16.5t93.5 -55.5t71.5 -116.5t26.5 -190.5t-26.5 -190.5t-71.5 -116.5t-93.5 -55.5t-103.5 -16.5z M1339 657q-84 0 -134 -55t-50 -217t50 -217t134 -55t133.5 55t49.5 217t-49.5 217t-133.5 55z" />
+<glyph unicode="&#x26;" horiz-adv-x="1310" d="M1014 272l227 -272h-192l-125 152q-162 -168 -385 -168q-111 0 -198 38.5t-134 101t-71.5 127t-24.5 126.5q0 119 56 220t220 191q-135 168 -135 283q0 127 91 218t218 91q131 0 221 -87t90 -214q0 -109 -59 -183.5t-192 -152.5l297 -354q57 100 83 205h134 q-33 -177 -121 -322zM565 1233q-70 0 -120 -48t-50 -116q0 -72 129 -213q131 70 171 116t40 105q0 68 -49 112t-121 44zM545 127q172 0 291 129l-357 428q-78 -41 -128 -85t-68.5 -87t-22.5 -67.5t-4 -63.5q0 -33 12.5 -71t42 -82t90 -72.5t144.5 -28.5z" />
+<glyph unicode="'" horiz-adv-x="509" d="M203 973l-37 411h170l-35 -411h-98z" />
+<glyph unicode="(" horiz-adv-x="706" d="M418 1483h155q-29 -47 -59.5 -112.5t-74.5 -180.5t-72.5 -264.5t-28.5 -300.5q0 -150 28.5 -300.5t72.5 -264t76 -180t58 -111.5h-155q-227 408 -228 856q1 450 228 858z" />
+<glyph unicode=")" horiz-adv-x="706" d="M291 1483q227 -408 227 -856q0 -451 -227 -858h-158q29 47 59.5 111.5t75.5 180t74 265t29 301.5q0 195 -53.5 396.5t-98.5 296.5t-86 163h158z" />
+<glyph unicode="*" horiz-adv-x="841" d="M666 1270l-177 -80l177 -78l-56 -98l-153 112l16 -184h-111l21 184l-156 -112l-55 98l178 78l-178 80l55 94l156 -111l-21 187h111l-16 -187l153 111z" />
+<glyph unicode="+" horiz-adv-x="1128" d="M926 674v-123h-301v-301h-123v301h-303v123h303v303h123v-303h301z" />
+<glyph unicode="," horiz-adv-x="641" d="M303 172h168l-172 -401h-147z" />
+<glyph unicode="-" horiz-adv-x="950" d="M786 682v-143h-624v143h624z" />
+<glyph unicode="." horiz-adv-x="671" d="M260 0v164h164v-164h-164z" />
+<glyph unicode="/" horiz-adv-x="827" d="M723 1548h135l-754 -1749h-133z" />
+<glyph unicode="0" horiz-adv-x="1345" d="M671.5 1378q538.5 0 538.5 -700.5t-538.5 -700.5t-538.5 700.5t538.5 700.5zM671.5 113q61.5 0 110.5 10t104.5 45t92.5 94.5t60.5 164.5t23.5 251q0 178 -34 298t-95.5 174t-121.5 73.5t-140 19.5t-140.5 -19.5t-122 -73.5t-95 -174t-33.5 -298q0 -145 23.5 -250.5 t60 -165t92 -94.5t104.5 -45t110.5 -10z" />
+<glyph unicode="1" horiz-adv-x="923" d="M463 1366h168v-1366h-148v1212l-272 -180v174z" />
+<glyph unicode="2" horiz-adv-x="1189" d="M401 147h619v-147h-862v129q102 76 208.5 169t223.5 215t189.5 252t72.5 234q0 238 -322 238q-190 0 -358 -119v162q172 104 371 104q233 0 344.5 -112.5t111.5 -272.5q0 -111 -56 -232.5t-151.5 -236t-190 -206t-200.5 -177.5z" />
+<glyph unicode="3" horiz-adv-x="1193" d="M788 739q10 -4 26.5 -12t58.5 -39t75 -67.5t59.5 -99t26.5 -132.5q0 -78 -27.5 -147.5t-84 -129t-157.5 -94t-235 -34.5q-197 0 -364 86v151q160 -90 346 -90q182 0 278.5 67.5t96.5 194.5t-98.5 194.5t-284.5 67.5h-150v142h156q150 0 228.5 56t78.5 162.5t-83 164 t-240 57.5q-152 0 -295 -72v150q147 70 311 69q233 0 344 -108.5t111 -259.5q0 -172 -148 -260z" />
+<glyph unicode="4" horiz-adv-x="1210" d="M889 547h194v-137h-194v-410h-148v410h-663v157l645 799h166v-819zM242 547h499v608z" />
+<glyph unicode="5" horiz-adv-x="1202" d="M248 1366h702v-145h-575l-39 -406q121 37 266 37q84 0 153.5 -18.5t136 -63.5t105.5 -135t39 -217t-39 -217t-105.5 -135.5t-136 -63.5t-153.5 -18q-236 0 -391 84v153q150 -94 381 -94q80 0 138 19.5t89 46t47.5 69.5t20.5 77t4 79q0 92 -24.5 152.5t-71.5 88t-93.5 37 t-109.5 9.5q-96 0 -177 -16.5t-112 -33.5l-33 -14l-92 94z" />
+<glyph unicode="6" horiz-adv-x="1193" d="M598 874q215 0 340 -115.5t125 -314.5q0 -84 -25.5 -162.5t-78 -147t-145.5 -109.5t-216 -41q-465 0 -465 641q0 141 25.5 257.5t65.5 193.5t96.5 135.5t111.5 90t118.5 51t111 25.5t94.5 6q109 0 198 -26v-137q-102 25 -182 24q-47 0 -92 -6t-113.5 -32.5t-122 -73 t-97.5 -136.5t-58 -213q133 90 309 90zM598 123q102 0 172 38t98.5 98t37.5 103.5t9 83.5q0 139 -81.5 215t-235.5 76q-201 0 -317 -116q2 -141 27.5 -241.5t57 -149t83 -75t79 -29.5t70.5 -3z" />
+<glyph unicode="7" horiz-adv-x="1175" d="M143 1366h932v-137l-592 -1229h-164l596 1219h-772v147z" />
+<glyph unicode="8" horiz-adv-x="1191" d="M842 739q10 -4 25.5 -11t54.5 -34.5t69.5 -62.5t55 -95.5t24.5 -129.5q0 -78 -25.5 -149t-79 -134.5t-148.5 -101t-220 -37.5q-240 0 -356.5 127t-116.5 295q0 203 184 307l51 24l-20 11q-12 6 -44 30.5t-56.5 55t-44 84t-19.5 112.5q0 145 103.5 249.5t318.5 104.5 t318.5 -103t103.5 -251q0 -184 -148 -274zM324 1030q0 -111 72.5 -173t201.5 -62t201.5 62.5t72.5 172.5q0 209 -274 209t-274 -209zM598 123q86 0 149.5 23.5t96.5 56.5t52 76t23.5 71.5t4.5 55.5q0 123 -84 188t-242 65t-242 -65.5t-84 -187.5q0 -27 4.5 -55.5t23.5 -71.5 t52 -76t96.5 -56.5t149.5 -23.5z" />
+<glyph unicode="9" horiz-adv-x="1202" d="M584 494q-215 0 -340 115.5t-125 314.5q0 84 25.5 162.5t77.5 147.5t145.5 109.5t216.5 40.5q465 0 465 -643q0 -195 -48.5 -340t-116 -223t-160.5 -124t-160.5 -58t-137.5 -12q-104 0 -199 24v139q84 -25 183 -24q47 0 92 6t113.5 32.5t120.5 73t97.5 136.5t57.5 213 q-121 -90 -307 -90zM584 1245q-102 0 -172 -38t-98.5 -98t-38 -103t-9.5 -84q0 -139 82 -215t236 -76q207 0 317 117q-2 141 -27.5 241.5t-57.5 148.5t-83 74.5t-78.5 29.5t-70.5 3z" />
+<glyph unicode=":" horiz-adv-x="800" d="M324 98v164h163v-164h-163zM324 754v164h163v-164h-163z" />
+<glyph unicode=";" horiz-adv-x="854" d="M352 754v164h164v-164h-164zM350 172h168l-172 -401h-147z" />
+<glyph unicode="&#x3c;" horiz-adv-x="1351" d="M246 621l844 383v-164l-672 -289l672 -291v-162l-844 383v140z" />
+<glyph unicode="=" horiz-adv-x="1306" d="M1049 524v-143h-789v143h789zM1049 840v-142h-789v142h789z" />
+<glyph unicode="&#x3e;" horiz-adv-x="1329" d="M1112 621v-140l-842 -383v162l670 291l-670 289v164z" />
+<glyph unicode="?" horiz-adv-x="993" d="M391 0v164h164v-164h-164zM449 1382q61 0 120.5 -14t129 -50t112.5 -117t43 -197q0 -82 -31.5 -142.5t-77.5 -98.5l-90 -76q-45 -38 -76.5 -101.5t-31.5 -151.5v-90h-148v100q0 104 32 181t77 120t90 78t77 79t32 102q0 231 -269 231q-156 0 -274 -90v160q113 77 285 77z " />
+<glyph unicode="@" horiz-adv-x="1869" d="M1040 596q74 0 152 -10q2 14 2 43q0 35 -6 59.5t-23.5 50t-60.5 39t-109 13.5q-143 0 -256 -43l17 118q123 41 239 41q156 0 237 -70.5t81 -207.5q0 -59 -11.5 -142.5t-17.5 -137.5t-4 -107.5t30.5 -79t86.5 -25.5q90 0 169 114t79 312q0 145 -55.5 262t-144.5 186.5 t-191.5 106.5t-206.5 37q-311 0 -554 -230.5t-243 -553.5q0 -154 51 -270.5t123 -177t163 -98.5t153.5 -47t113.5 -9q254 0 430 100l-18 -92q-172 -82 -428 -82q-86 0 -174.5 22.5t-178.5 74.5t-158.5 127t-112.5 192.5t-44 259.5q0 244 133 445.5t334 309t410 107.5 q82 0 171 -21.5t180 -73t162.5 -126t116.5 -189t45 -254.5q0 -221 -91 -362t-242 -141q-137 0 -191 100q-96 -100 -295 -100q-143 0 -225 62t-82 171q0 49 16.5 94t59.5 94.5t138 79t230 29.5zM903 184q49 0 88 8.5t65.5 17.5t47 31.5t31 37t18.5 46t11 46t6.5 51.5t5.5 47 q-55 8 -136 8q-326 0 -325 -178q0 -115 188 -115z" />
+<glyph unicode="A" horiz-adv-x="1325" d="M735 1366l543 -1366h-158l-164 426h-589l-164 -426h-160l545 1366h147zM422 567h479l-239 625z" />
+<glyph unicode="B" horiz-adv-x="1271" d="M940 727q10 -2 24.5 -8t54.5 -33t69.5 -61.5t54 -98t24.5 -139.5q0 -387 -495 -387h-494v1366h453q455 0 454 -367q0 -55 -15 -104t-36.5 -78t-42 -50.5t-37.5 -29.5zM684 137q156 0 246 54.5t90 203.5q0 63 -21.5 108.5t-52.5 71t-80 39t-91 17.5t-97 4h-352v-498h358z M938 989q0 133 -72.5 184.5t-220.5 51.5h-319v-451h338q125 0 199.5 43t74.5 172z" />
+<glyph unicode="C" horiz-adv-x="1286" d="M272 684q0 -291 121 -426t381 -135q209 0 400 80v-142q-199 -78 -416 -77q-633 0 -633 700t633 700q219 0 416 -79v-142q-195 82 -400 82q-260 0 -381 -135t-121 -426z" />
+<glyph unicode="D" horiz-adv-x="1372" d="M178 1366h428q641 0 641 -682q0 -684 -641 -684h-428v1366zM596 139q262 0 383 131t121 414t-121 414t-383 131h-270v-1090h270z" />
+<glyph unicode="E" horiz-adv-x="1159" d="M326 1227v-471h628v-144h-628v-473h714v-139h-862v1366h862v-139h-714z" />
+<glyph unicode="F" horiz-adv-x="1097" d="M178 1366h838v-139h-690v-471h606v-144h-606v-612h-148v1366z" />
+<glyph unicode="G" horiz-adv-x="1386" d="M758 600v143h477v-653q-221 -106 -477 -106q-633 0 -633 700t633 700q227 0 430 -86v-143q-199 88 -414 88q-260 0 -381 -135t-121 -424q0 -291 121 -425t381 -134q164 0 313 49v426h-329z" />
+<glyph unicode="H" horiz-adv-x="1380" d="M1053 1366h147v-1366h-147v612h-727v-612h-148v1366h148v-612h727v612z" />
+<glyph unicode="I" horiz-adv-x="501" d="M178 1366h148v-1366h-148v1366z" />
+<glyph unicode="J" horiz-adv-x="915" d="M573 1366h148v-958q0 -125 -35 -213.5t-95.5 -131.5t-124 -61t-136.5 -18q-147 0 -271 71v154q117 -82 252 -82q139 0 200.5 68.5t61.5 224.5v946z" />
+<glyph unicode="K" horiz-adv-x="1294" d="M571 727l633 -727h-194l-535 623l-149 -164v-459h-148v1366h148v-704l632 704h199z" />
+<glyph unicode="L" horiz-adv-x="1067" d="M326 143h698v-143h-846v1366h148v-1223z" />
+<glyph unicode="M" horiz-adv-x="1619" d="M1278 1366h160v-1366h-148v1124l-483 -696l-481 696v-1124h-148v1366h160l469 -694z" />
+<glyph unicode="N" horiz-adv-x="1490" d="M1161 1366h148v-1366h-166l-817 1151v-1151h-148v1366h168l815 -1151v1151z" />
+<glyph unicode="O" d="M758 1384q635 0 635 -700t-635 -700q-633 0 -633 700t633 700zM758 123q254 0 370.5 135t116.5 426t-116.5 426t-370.5 135q-252 0 -369 -135t-117 -426t117 -426t369 -135z" />
+<glyph unicode="P" horiz-adv-x="1220" d="M662 1366q229 0 351 -108.5t122 -313.5t-122 -313.5t-351 -108.5h-338v-522h-148v1366h486zM643 664q109 0 181.5 23.5t105.5 68.5t45 88t12 100t-12 100t-45 88.5t-105.5 69t-181.5 23.5h-319v-561h319z" />
+<glyph unicode="Q" d="M1393 684q0 -651 -553 -698q41 -170 268 -176v-134q-113 0 -196 30t-127 81t-65.5 98t-29.5 101q-565 37 -565 698q0 700 633 700q635 0 635 -700zM758 123q254 0 370.5 135t116.5 426t-116.5 426t-370.5 135q-252 0 -369 -135t-117 -426t117 -426t369 -135z" />
+<glyph unicode="R" horiz-adv-x="1271" d="M829 573l375 -573h-174l-356 551h-348v-551h-148v1366h502q223 0 343 -101.5t120 -295.5q0 -88 -28 -160t-63.5 -112t-84.5 -69.5t-80 -39t-58 -15.5zM672 690q102 0 170.5 23.5t99.5 65.5t42 83t11 96.5t-11 96.5t-42 83t-99.5 65.5t-170.5 23.5h-346v-537h346z" />
+<glyph unicode="S" horiz-adv-x="1150" d="M272 1004q0 -70 56.5 -117t139.5 -69.5t181.5 -57.5t181 -76t139 -127t56.5 -209q0 -170 -128 -267t-357 -97q-223 0 -404 96v160q162 -109 393 -109q348 0 349 217q0 92 -56.5 154.5t-139.5 91.5l-181 60q-98 32 -181 65t-139.5 105.5t-56.5 179.5q0 158 114.5 269 t356.5 111q174 0 342 -81v-152q-152 86 -328 86q-164 0 -251 -60t-87 -173z" />
+<glyph unicode="T" horiz-adv-x="1163" d="M25 1366h1112v-143h-482v-1223h-147v1223h-483v143z" />
+<glyph unicode="U" horiz-adv-x="1476" d="M1141 1366h147v-805q0 -281 -143.5 -429t-411.5 -148t-411.5 148.5t-143.5 428.5v805h148v-813q0 -434 407.5 -434t407.5 434v813z" />
+<glyph unicode="V" horiz-adv-x="1251" d="M1061 1366h158l-525 -1366h-145l-524 1366h157l441 -1155z" />
+<glyph unicode="W" horiz-adv-x="1947" d="M1765 1366h156l-440 -1366h-150l-358 1114l-359 -1114h-151l-438 1366h155l359 -1143l360 1143h148l358 -1143z" />
+<glyph unicode="X" horiz-adv-x="1206" d="M690 690l484 -690h-177l-397 563l-395 -563h-180l485 692l-473 674h176l387 -549l385 549h180z" />
+<glyph unicode="Y" horiz-adv-x="1224" d="M1012 1366h178l-508 -739v-627h-147v627l-510 739h178l405 -596z" />
+<glyph unicode="Z" horiz-adv-x="1247" d="M1104 1366v-125l-785 -1094h785v-147h-973v129l780 1090h-759v147h952z" />
+<glyph unicode="[" horiz-adv-x="784" d="M391 1286v-1384h223v-140h-370v1663h370v-139h-223z" />
+<glyph unicode="\" horiz-adv-x="753" d="M59 1548l752 -1749h-133l-754 1749h135z" />
+<glyph unicode="]" horiz-adv-x="780" d="M393 1286h-221v139h369v-1663h-369v140h221v1384z" />
+<glyph unicode="^" horiz-adv-x="1146" d="M600 1413l213 -444h-123l-145 325l-148 -325h-123l213 444h113z" />
+<glyph unicode="_" horiz-adv-x="1118" d="M0 -49h1118v-90h-1118v90z" />
+<glyph unicode="`" horiz-adv-x="448" d="M244 1391l116 -236h-96l-170 236h150z" />
+<glyph unicode="a" horiz-adv-x="1093" d="M522 1040q215 0 328 -108.5t113 -317.5v-307q0 -98 -45.5 -167.5t-117 -100.5t-134 -43t-123.5 -12q-47 0 -96.5 6t-112 27.5t-108.5 55t-78.5 96t-32.5 144.5q0 70 25.5 125.5t62.5 90t94 59t101 36t104.5 17.5t86 7t60.5 1l164 -10q0 137 -75.5 195.5t-223.5 58.5 q-166 0 -299 -49v143q151 53 307 53zM815 307v197q-68 12 -182 12q-371 0 -371 -203q0 -193 281 -192q272 0 272 186z" />
+<glyph unicode="b" horiz-adv-x="1167" d="M569 1040q70 0 131.5 -12t125 -47t109.5 -90t74.5 -149.5t28.5 -217.5q0 -135 -31.5 -236.5t-77.5 -157.5t-110.5 -91t-119 -45t-111.5 -10q-111 0 -193 27.5t-123 63.5t-66.5 86t-30.5 82.5t-5 63.5v1106h147v-414q123 41 252 41zM588 119q57 0 103 13t95.5 51t77 125 t27.5 216q0 199 -76 289t-246 90q-127 0 -252 -51v-553q1 -180 271 -180z" />
+<glyph unicode="c" horiz-adv-x="966" d="M266 512q0 -205 83 -296t265 -91q154 0 287 57v-143q-143 -55 -303 -55q-72 0 -134.5 12t-128 48t-111.5 92.5t-75.5 152.5t-29.5 223q0 156 43 265.5t116.5 163.5t150.5 76.5t169 22.5q154 0 303 -57v-141q-139 57 -287 57q-182 0 -265 -92t-83 -295z" />
+<glyph unicode="d" horiz-adv-x="1150" d="M129 524q0 152 41 258.5t113.5 159.5t147.5 74.5t165 21.5q135 0 254 -39v412h147v-1106q0 -41 -12 -84t-50 -102.5t-130 -97t-227 -37.5q-57 0 -111.5 10t-118 45t-109.5 91t-78 157.5t-32 236.5zM276 524q0 -129 28 -216t77 -125t94 -51t103 -13q272 0 272 180v553 q-125 51 -254 51q-168 0 -244 -90t-76 -289z" />
+<glyph unicode="e" horiz-adv-x="1136" d="M578 1040q94 0 170.5 -29.5t121.5 -69.5t79 -104.5t48.5 -109.5t22.5 -108.5t8 -78.5v-44l-4 -72h-745q14 -154 94 -223.5t237 -69.5q223 0 351 76v-152q-150 -72 -365 -71q-90 0 -165 21.5t-147.5 74.5t-113.5 159.5t-41 258.5v7.5v7.5q0 527 449 527zM279 555h598 q0 35 -8.5 78t-34 110.5t-92 112.5t-164.5 45q-152 0 -220.5 -79t-78.5 -267z" />
+<glyph unicode="f" horiz-adv-x="675" d="M612 1317q-49 0 -74.5 -4t-61.5 -24.5t-53 -73t-17 -136.5v-57h280v-135h-280v-887h-148v887h-176v135h176v55q0 106 27.5 182t62.5 112t89.5 56.5t83 22.5t67.5 2q55 0 98 -12v-131q-41 8 -74 8z" />
+<glyph unicode="g" horiz-adv-x="1101" d="M557 1040q131 0 220 -36.5t125 -94t48.5 -99.5t12.5 -83v-770q0 -68 -19.5 -125t-64.5 -111.5t-137.5 -85t-223.5 -30.5q-143 0 -291 37v139q131 -37 275 -37q98 0 164.5 17.5t96.5 50t41 64.5t11 77v102q-115 -37 -240 -37q-68 0 -127 11.5t-120.5 45.5t-105.5 88 t-71.5 144t-27.5 209q0 160 43 271.5t115.5 162.5t138 70.5t137.5 19.5zM815 203v530q0 172 -258 172q-55 0 -98 -13t-90 -50t-73 -120t-26 -206q0 -115 24.5 -189.5t72 -110.5t95.5 -48t113 -12q123 0 240 47z" />
+<glyph unicode="h" horiz-adv-x="1181" d="M649 1040q188 0 290.5 -113.5t102.5 -320.5v-606h-147v606q0 287 -262 287q-143 0 -293 -62v-831h-147v1411h147v-436q155 65 309 65z" />
+<glyph unicode="i" horiz-adv-x="540" d="M348 0v1022h-147v-1022h147zM356 1366v-162h-163v162h163z" />
+<glyph unicode="j" horiz-adv-x="514" d="M207 1366h164v-162h-164v162zM215 1022h147v-1081q0 -336 -356 -336v137q127 2 168 50t41 157v1073z" />
+<glyph unicode="k" horiz-adv-x="1124" d="M559 553l492 -553h-197l-391 449l-127 -138v-311h-148v1411h148v-891l459 502h200z" />
+<glyph unicode="l" horiz-adv-x="552" d="M354 0h-147v1411h147v-1411z" />
+<glyph unicode="m" horiz-adv-x="1824" d="M1251 1040q186 0 288.5 -98t102.5 -276v-666h-147v666q0 43 -8 76.5t-32.5 71.5t-79 58.5t-134.5 20.5q-129 0 -283 -51q33 -74 33 -176v-666h-147v666q0 45 -8.5 78.5t-33 70.5t-80.5 57.5t-138 20.5q-125 0 -244 -37v-856h-147v942q197 98 409 98q168 0 270 -84 q197 84 379 84z" />
+<glyph unicode="n" horiz-adv-x="1189" d="M600 1040q193 0 299.5 -98t106.5 -276v-666h-148v666q0 43 -9 76.5t-35 71.5t-84 58.5t-146 20.5q-129 0 -269 -41v-852h-147v940q201 100 432 100z" />
+<glyph unicode="o" horiz-adv-x="1155" d="M579.5 1040q92.5 0 170 -22.5t151.5 -76.5t117 -163.5t43 -265.5t-43 -265.5t-117 -163.5t-151.5 -76.5t-170 -22.5t-169 22.5t-150.5 76.5t-117 163.5t-43 265.5t43 265.5t117 163.5t150.5 76.5t169 22.5zM580 119q174 0 253.5 93t79.5 300t-79.5 300t-253.5 93 t-253 -94t-79 -299t79 -299t253 -94z" />
+<glyph unicode="p" horiz-adv-x="1159" d="M588 1040q57 0 111.5 -10t118 -45t109.5 -92t77.5 -158.5t31.5 -236.5q0 -152 -41 -258.5t-113.5 -159.5t-147.5 -74.5t-165 -21.5q-125 0 -254 39v-402h-147v1096q0 41 12.5 84t50 103.5t130 98t227.5 37.5zM569 121q168 0 244 89t76 290q0 129 -27.5 215t-77 125 t-94.5 52t-102 13q-272 0 -273 -182v-551q117 -51 254 -51z" />
+<glyph unicode="q" horiz-adv-x="1150" d="M115 498q0 135 31.5 236.5t77.5 158.5t109.5 92t118 45t111.5 10q111 0 193 -27.5t123 -63.5t66.5 -86t30.5 -82.5t5 -63.5v-1096h-147v402q-117 -39 -252 -39q-90 0 -165 21.5t-147.5 74.5t-113.5 159.5t-41 258.5zM262 500q0 -201 76 -290t244 -89q135 0 252 51v551 q0 182 -271 182q-57 0 -102 -13t-94.5 -52t-77 -125t-27.5 -215z" />
+<glyph unicode="r" horiz-adv-x="702" d="M662 897q-168 -4 -349 -53v-844h-147v940q231 98 496 98v-141z" />
+<glyph unicode="s" horiz-adv-x="872" d="M248 743q0 -53 56 -85.5t137 -54t162 -51.5t137.5 -101.5t56.5 -182.5q0 -133 -99.5 -208.5t-275.5 -75.5q-170 0 -309 77v156q147 -90 303 -90q233 0 233 141q0 76 -56 119t-137 64.5t-162 47t-137.5 86t-56.5 158.5q0 123 89.5 210t273.5 87q131 0 262 -63v-148 q-117 70 -246 70q-231 0 -231 -156z" />
+<glyph unicode="t" horiz-adv-x="706" d="M375 887v-623q0 -78 32.5 -109.5t114.5 -31.5q63 0 117 24v-139q-68 -25 -135 -24q-41 0 -80 9t-88 35.5t-79 89t-30 154.5v615h-178v135h178v289h148v-289h264v-135h-264z" />
+<glyph unicode="u" horiz-adv-x="1202" d="M877 1022h147v-592q0 -213 -111.5 -329.5t-316.5 -116.5t-316.5 116.5t-111.5 329.5v592h147v-600q0 -156 68 -228.5t213 -72.5q143 0 212 72.5t69 228.5v600z" />
+<glyph unicode="v" horiz-adv-x="1062" d="M842 1022h157l-393 -1022h-149l-391 1022h157l309 -838z" />
+<glyph unicode="w" horiz-adv-x="1603" d="M1368 1022h156l-340 -1022h-150l-233 764l-234 -764h-149l-340 1022h155l261 -791l235 791h141l238 -791z" />
+<glyph unicode="x" horiz-adv-x="1032" d="M600 514l363 -514h-177l-274 389l-274 -389h-181l365 518l-354 504h174l268 -379l268 379h180l-356 -504z" />
+<glyph unicode="y" horiz-adv-x="1028" d="M807 1022h158l-418 -1122q-109 -295 -322 -295q-49 0 -96 18v135q41 -18 88 -18q39 0 77 28.5t62.5 68.5t45 81t28.5 70l10 28l-377 1006h158l291 -809z" />
+<glyph unicode="z" horiz-adv-x="950" d="M840 1022v-129l-561 -752h561v-141h-748v133l557 748h-543v141h734z" />
+<glyph unicode="{" horiz-adv-x="763" d="M463 72q0 -88 39 -122t121 -38v-137q-150 0 -229 78.5t-79 228.5v319q0 111 -129 150v100q129 33 129 148v319q0 150 79 229.5t229 79.5v-139q-82 -4 -121 -36.5t-39 -123.5v-329q0 -119 -119 -199q119 -80 119 -199v-329z" />
+<glyph unicode="|" horiz-adv-x="907" d="M526 -203h-147v1565h147v-1565z" />
+<glyph unicode="}" horiz-adv-x="753" d="M315 72v329q0 117 121 199q-121 82 -121 199v329q0 90 -37.5 123t-121.5 37v139q150 0 228.5 -79.5t78.5 -229.5v-319q0 -115 129 -148v-100q-129 -39 -129 -150v-319q0 -150 -79 -228.5t-228 -78.5v137q82 4 120.5 38t38.5 122z" />
+<glyph unicode="~" horiz-adv-x="1024" d="M823 639v-123q-57 -72 -122.5 -79t-127.5 26l-122 64q-61 32 -127 25t-123 -79v125q57 72 122.5 79t127.5 -26l122 -65q61 -33 127 -26t123 79z" />
+<glyph unicode="&#xa1;" horiz-adv-x="741" d="M467 1022v-162h-164v162h164zM459 -344h-148l15 1022h118z" />
+<glyph unicode="&#xa2;" horiz-adv-x="976" d="M897 1014q-125 51 -266 55v-772q143 4 266 57v-143q-125 -49 -266 -55v-156h-103v158q-412 41 -411 526q0 268 116.5 388t294.5 136v158h103v-156q131 -2 266 -55v-141zM264 684q0 -178 63.5 -270t200.5 -111v762q-137 -20 -200.5 -111.5t-63.5 -269.5z" />
+<glyph unicode="&#xa3;" horiz-adv-x="1136" d="M727 1243q-299 0 -299 -233v-299h412v-136h-412v-415q51 -6 145.5 -25.5t154.5 -30t143 -7.5t153 30v-150q-100 -39 -229 -29.5t-230.5 38t-229.5 31.5t-231 -48v150q80 39 177 45v411h-177v136h177v293q0 158 105.5 269t328.5 111q162 0 309 -79v-150q-139 88 -297 88z " />
+<glyph unicode="&#xa5;" horiz-adv-x="1232" d="M1204 1366l-444 -645h256v-123h-322v-192h322v-123h-322v-283h-147v283h-322v123h322v192h-322v123h256l-444 645h180l404 -588l403 588h180z" />
+<glyph unicode="&#xa7;" horiz-adv-x="1112" d="M1008 629q0 -76 -51.5 -130.5t-125.5 -78.5q72 -59 72 -158q0 -131 -111.5 -204.5t-310.5 -73.5q-203 0 -350 73v152q135 -84 340 -84q285 0 285 137q0 61 -48.5 102.5t-218.5 79.5q-184 43 -277 101.5t-93 181.5q0 164 186 223q-82 51 -82 144q0 119 100.5 204.5 t309.5 85.5q156 0 297 -61v-145q-131 70 -285 69q-274 0 -274 -153q0 -25 8 -40.5t68.5 -44t179.5 -55.5q84 -18 140 -38.5t116.5 -56.5t92.5 -94t32 -136zM743 514q117 35 117 115q0 61 -49 102t-217 80q-98 23 -176 49q-152 -29 -152 -133q0 -25 8.5 -40t70 -44t179.5 -55 q135 -29 219 -74z" />
+<glyph unicode="&#xa8;" horiz-adv-x="788" d="M162 1155v162h162v-162h-162zM465 1155v162h162v-162h-162z" />
+<glyph unicode="&#xa9;" horiz-adv-x="1593" d="M799 -16q-289 0 -495 204.5t-206 493.5q0 291 206 495.5t495 204.5q291 0 495.5 -204.5t204.5 -495.5q0 -289 -204.5 -493.5t-495.5 -204.5zM799 1311q-258 0 -442.5 -184.5t-184.5 -444.5q0 -258 184.5 -442.5t442.5 -184.5q260 0 443 184.5t183 442.5q0 260 -183 444.5 t-443 184.5zM535 682q0 -170 70.5 -249t221.5 -79q121 0 234 47v-82q-115 -45 -244 -45q-369 0 -368 408q0 410 368 410q129 0 244 -45v-82q-109 45 -234 45q-152 0 -222 -79t-70 -249z" />
+<glyph unicode="&#xaa;" horiz-adv-x="806" d="M381 1382q246 0 246 -235v-172q0 -72 -46 -115t-92.5 -53t-95.5 -10t-96 10t-94 54t-47 118q0 186 297 186l92 -6q0 143 -168 144q-92 0 -164 -29v80q72 28 168 28zM545 977v108q-37 6 -101 7q-207 0 -206 -111q0 -109 155 -109q152 1 152 105z" />
+<glyph unicode="&#xab;" horiz-adv-x="1132" d="M608 911l-364 -389l364 -391h-198l-347 391l347 389h198zM997 911l-364 -389l364 -391h-198l-346 391l346 389h198z" />
+<glyph unicode="&#xac;" horiz-adv-x="1273" d="M199 664h876v-340h-135v204h-741v136z" />
+<glyph unicode="&#xad;" horiz-adv-x="950" d="M786 682v-143h-624v143h624z" />
+<glyph unicode="&#xae;" horiz-adv-x="1593" d="M926 618l219 -335h-103l-206 323h-205v-323h-86v798h293q131 0 201.5 -58t70.5 -173q0 -63 -22.5 -111.5t-57.5 -72t-58 -33t-46 -15.5zM834 688q113 0 150.5 43t37.5 112.5t-38 112.5t-150 43h-203v-311h203zM799 -16q-289 0 -495 204.5t-206 493.5q0 291 206 495.5 t495 204.5q291 0 495.5 -204.5t204.5 -495.5q0 -289 -204.5 -493.5t-495.5 -204.5zM799 1311q-258 0 -442.5 -184.5t-184.5 -444.5q0 -258 184.5 -442.5t442.5 -184.5q260 0 443 184.5t183 442.5q0 260 -183 444.5t-443 184.5z" />
+<glyph unicode="&#xaf;" horiz-adv-x="825" d="M176 1180v108h479v-108h-479z" />
+<glyph unicode="&#xb0;" horiz-adv-x="792" d="M391 1370q109 0 166 -58.5t57 -168.5q0 -227 -223 -227.5t-223 227t223 227.5zM391 989q78 0 114 36t36 118q0 80 -36 116.5t-114 36.5q-80 0 -114.5 -36.5t-34.5 -116.5q0 -82 34.5 -118t114.5 -36z" />
+<glyph unicode="&#xb1;" horiz-adv-x="1198" d="M657 721h301v-123h-301v-303h-122v303h-304v123h304v301h122v-301zM231 68v122h727v-122h-727z" />
+<glyph unicode="&#xb2;" horiz-adv-x="671" d="M240 1028h331v-80h-462v70q133 98 252.5 230t119.5 239q0 125 -172 125q-106 0 -192 -62v86q90 55 198 56q125 0 185.5 -60.5t60.5 -144.5q1 -197 -321 -459z" />
+<glyph unicode="&#xb3;" horiz-adv-x="661" d="M444 1346q6 -2 14.5 -6.5t31 -20.5t40 -36.5t31.5 -54.5t14 -71q0 -90 -66.5 -153.5t-203.5 -63.5q-102 0 -196 45v82q90 -49 186 -49q203 0 203 141t-207 141h-80v76h84q164 0 164 119q0 117 -174 117q-88 0 -158 -37v80q82 37 168 37q125 0 184.5 -58.5t59.5 -138.5 q0 -49 -23.5 -86t-48.5 -49z" />
+<glyph unicode="&#xb4;" horiz-adv-x="483" d="M240 1391h151l-170 -236h-98z" />
+<glyph unicode="&#xb5;" horiz-adv-x="1247" d="M891 1022h147v-938q-193 -100 -430 -100q-152 2 -258 82v-496h-147v1452h147v-664q0 -45 9.5 -78.5t35 -70.5t83 -57.5t145.5 -20.5q135 0 268 39v852z" />
+<glyph unicode="&#xb6;" horiz-adv-x="911" d="M549 1366h203v-1366h-136v524h-67q-229 0 -350 108.5t-121 313.5q0 203 121 311.5t350 108.5z" />
+<glyph unicode="&#xb7;" horiz-adv-x="636" d="M399 639v-164h-161v164h161z" />
+<glyph unicode="&#xb8;" horiz-adv-x="518" d="M399 -10l-129 -236h-155l168 236h116z" />
+<glyph unicode="&#xb9;" horiz-adv-x="491" d="M244 1683h90v-735h-78v651l-147 -96v94z" />
+<glyph unicode="&#xba;" horiz-adv-x="854" d="M422 1384q266 0 266 -294q0 -293 -266 -293q-113 0 -189.5 64.5t-76.5 228.5q0 86 23.5 147t64.5 92t84 43t94 12zM422 872q98 0 141 51.5t43 166t-43 167t-141 52.5q-96 0 -140 -52.5t-44 -167t44 -166t140 -51.5z" />
+<glyph unicode="&#xbb;" horiz-adv-x="1132" d="M526 911h197l348 -389l-348 -391h-197l363 391zM137 911h197l348 -389l-348 -391h-197l363 391z" />
+<glyph unicode="&#xbc;" horiz-adv-x="1433" d="M1225 295h104v-74h-104v-221h-80v221h-357v84l347 428h90v-438zM877 295h268v326zM240 1380h92v-733h-80v651l-146 -98v94zM1042 1403h97l-895 -1448h-97z" />
+<glyph unicode="&#xbd;" horiz-adv-x="1460" d="M240 1380h92v-733h-80v651l-146 -98v94zM999 80h332v-80h-461v70q133 98 252 229t119 238q0 127 -172 127q-104 0 -192 -64v88q98 55 198 55q127 0 186.5 -60t59.5 -146q0 -195 -322 -457zM1042 1403h97l-895 -1448h-97z" />
+<glyph unicode="&#xbe;" horiz-adv-x="1654" d="M471 1042q6 -2 14.5 -6t31 -20.5t39.5 -35.5t31.5 -53t14.5 -71q0 -90 -65.5 -154.5t-204.5 -64.5q-98 0 -197 47v80q94 -47 189 -47q201 0 200 141q0 68 -53 104.5t-154 36.5h-79v74h84q164 0 163.5 119t-174.5 119q-84 0 -157 -39v82q82 37 168 37q125 0 184 -58.5 t59 -140.5q0 -49 -23.5 -86t-45.5 -49zM1446 295h104v-74h-104v-221h-80v221h-356v84l346 428h90v-438zM1098 295h268v326zM1264 1403h96l-895 -1448h-96z" />
+<glyph unicode="&#xbf;" horiz-adv-x="989" d="M610 1022v-162h-164v162h164zM553 -360q-47 0 -93 7t-105.5 31.5t-102.5 64.5t-74 111.5t-31 165.5q0 82 32 141.5t77 97.5l90 76q45 38 77 101.5t32 151.5v92h147v-102q0 -104 -31.5 -181.5t-76.5 -119t-90.5 -77.5t-77 -80t-31.5 -100q0 -233 270 -233q141 0 275 90 v-160q-115 -77 -287 -77z" />
+<glyph unicode="&#xc0;" horiz-adv-x="1325" d="M735 1366l543 -1366h-158l-164 426h-589l-164 -426h-160l545 1366h147zM422 567h479l-239 625zM590 1718l117 -235h-99l-170 235h152z" />
+<glyph unicode="&#xc1;" horiz-adv-x="1325" d="M43 0l545 1366h147l543 -1366h-158l-164 426h-589l-164 -426h-160zM422 567h479l-239 625zM731 1718h152l-170 -235h-99z" />
+<glyph unicode="&#xc2;" horiz-adv-x="1325" d="M735 1366l543 -1366h-158l-164 426h-589l-164 -426h-160l545 1366h147zM422 567h479l-239 625zM705 1731l163 -248h-114l-92 145l-93 -145h-114l163 248h87z" />
+<glyph unicode="&#xc3;" horiz-adv-x="1325" d="M948 1526q-53 -66 -114.5 -73t-117.5 23l-112 59q-55 30 -116.5 22.5t-114.5 -72.5v117q53 66 114.5 71.5t116.5 -23.5l112 -60q56 -30 117.5 -23.5t114.5 71.5v-112zM735 1366l543 -1366h-158l-164 426h-589l-164 -426h-160l545 1366h147zM422 567h479l-239 625z" />
+<glyph unicode="&#xc4;" horiz-adv-x="1325" d="M428 1483v164h164v-164h-164zM731 1483v164h164v-164h-164zM735 1366l543 -1366h-158l-164 426h-589l-164 -426h-160l545 1366h147zM422 567h479l-239 625z" />
+<glyph unicode="&#xc5;" horiz-adv-x="1325" d="M735 1366l543 -1366h-158l-164 426h-589l-164 -426h-160l545 1366h147zM422 567h479l-239 625zM661.5 1759q79.5 0 122.5 -43t43 -125t-43 -125t-122.5 -43t-122.5 43t-43 125t43 125t122.5 43zM662 1493q49 0 70.5 22.5t21.5 76t-21.5 77t-70.5 23.5q-51 0 -72 -23.5 t-21 -77t21 -76t72 -22.5z" />
+<glyph unicode="&#xc6;" horiz-adv-x="1939" d="M1126 1225v-471h607v-144h-607v-469h691v-141h-838v428h-506l-252 -428h-170l811 1366h955v-141h-691zM979 575v644h-45l-375 -644h420z" />
+<glyph unicode="&#xc7;" horiz-adv-x="1286" d="M774 1247q-260 0 -381 -134t-121 -425t121 -426t381 -135q209 0 400 80v-141q-172 -68 -357 -78l-125 -232h-155l163 232q-575 35 -575 698q0 700 633 700q217 0 416 -77v-142q-187 80 -400 80z" />
+<glyph unicode="&#xc8;" horiz-adv-x="1159" d="M596 1718l117 -235h-99l-170 235h152zM326 1227v-471h628v-144h-628v-473h714v-139h-862v1366h862v-139h-714z" />
+<glyph unicode="&#xc9;" horiz-adv-x="1159" d="M680 1718h151l-169 -235h-97zM326 1227v-471h628v-144h-628v-473h714v-139h-862v1366h862v-139h-714z" />
+<glyph unicode="&#xca;" horiz-adv-x="1159" d="M662 1731l165 -248h-114l-92 145l-95 -145h-114l166 248h84zM326 1227v-471h628v-144h-628v-473h714v-139h-862v1366h862v-139h-714z" />
+<glyph unicode="&#xcb;" horiz-adv-x="1159" d="M395 1483v164h162v-164h-162zM698 1483v164h162v-164h-162zM326 1227v-471h628v-144h-628v-473h714v-139h-862v1366h862v-139h-714z" />
+<glyph unicode="&#xcc;" horiz-adv-x="501" d="M178 0v1366h148v-1366h-148zM184 1718l117 -235h-98l-170 235h151z" />
+<glyph unicode="&#xcd;" horiz-adv-x="501" d="M326 0v1366h-148v-1366h148zM319 1718h152l-170 -235h-98z" />
+<glyph unicode="&#xce;" horiz-adv-x="501" d="M326 0v1366h-148v-1366h148zM295 1731l164 -248h-115l-92 145l-92 -145h-115l164 248h86z" />
+<glyph unicode="&#xcf;" horiz-adv-x="501" d="M326 0v1366h-148v-1366h148zM18 1483v164h164v-164h-164zM322 1483v164h163v-164h-163z" />
+<glyph unicode="&#xd0;" horiz-adv-x="1468" d="M696 1366q641 0 641 -682q0 -684 -641 -684h-428v621h-159v122h159v623h428zM686 139q262 0 383 131t121 414t-121 414t-383 131h-270v-486h350v-122h-350v-482h270z" />
+<glyph unicode="&#xd1;" horiz-adv-x="1490" d="M1161 1366h148v-1366h-166l-817 1151v-1151h-148v1366h168l815 -1151v1151zM1032 1526q-53 -66 -114.5 -73t-117.5 23l-113 59q-56 30 -117.5 22.5t-114.5 -72.5v117q53 66 114.5 71.5t117.5 -23.5l113 -60q56 -30 117.5 -23.5t114.5 71.5v-112z" />
+<glyph unicode="&#xd2;" d="M125 684q0 700 633 700t633 -700t-633 -700t-633 700zM272 684q0 -291 117 -426t369 -135t368.5 135t116.5 426t-116.5 426t-368.5 135t-369 -135t-117 -426zM713 1718l116 -235h-96l-170 235h150z" />
+<glyph unicode="&#xd3;" d="M758 1384q633 0 633 -700t-633 -700t-633 700t633 700zM758 123q252 0 368.5 135t116.5 426t-116.5 426t-368.5 135t-369 -135t-117 -426t117 -426t369 -135zM801 1718h151l-170 -235h-96z" />
+<glyph unicode="&#xd4;" d="M758 1384q633 0 633 -700t-633 -700t-633 700t633 700zM758 123q252 0 368.5 135t116.5 426t-116.5 426t-368.5 135t-369 -135t-117 -426t117 -426t369 -135zM801 1731l164 -248h-115l-92 145l-92 -145h-115l164 248h86z" />
+<glyph unicode="&#xd5;" d="M758 1384q635 0 635 -700t-635 -700q-633 0 -633 700t633 700zM758 123q254 0 370.5 135t116.5 426t-116.5 426t-370.5 135q-252 0 -369 -135t-117 -426t117 -426t369 -135zM1047 1526q-53 -66 -115 -73t-118 23l-113 59q-56 30 -116.5 22.5t-113.5 -72.5v117 q53 66 113.5 71.5t116.5 -23.5l113 -60q56 -30 117.5 -23.5t115.5 71.5v-112z" />
+<glyph unicode="&#xd6;" d="M524 1483v164h164v-164h-164zM827 1483v164h164v-164h-164zM758 1384q633 0 633 -700t-633 -700t-633 700t633 700zM758 123q252 0 368.5 135t116.5 426t-116.5 426t-368.5 135t-369 -135t-117 -426t117 -426t369 -135z" />
+<glyph unicode="&#xd7;" horiz-adv-x="985" d="M705 160l-209 276l-207 -276h-131l272 364l-272 365h131l207 -277l209 277h131l-273 -365l273 -364h-131z" />
+<glyph unicode="&#xd8;" d="M1415 1366l-160 -188q137 -174 138 -494q0 -702 -635 -702q-254 0 -410 118l-86 -100h-160l158 188q-135 172 -135 496q0 700 633 700q256 0 411 -118l86 100h160zM272 684q0 -252 84 -383l721 856q-115 88 -319 88q-252 0 -369 -135t-117 -426zM1245 684q0 244 -84 381 l-721 -856q115 -88 318 -88q254 0 370.5 135t116.5 428z" />
+<glyph unicode="&#xd9;" horiz-adv-x="1476" d="M672 1718l116 -235h-96l-172 235h152zM1141 1366h147v-805q0 -281 -143.5 -429t-411.5 -148t-411.5 148.5t-143.5 428.5v805h148v-813q0 -434 407.5 -434t407.5 434v813z" />
+<glyph unicode="&#xda;" horiz-adv-x="1476" d="M795 1718h151l-170 -235h-98zM1141 1366h147v-805q0 -281 -143.5 -429t-411.5 -148t-411.5 148.5t-143.5 428.5v805h148v-813q0 -434 407.5 -434t407.5 434v813z" />
+<glyph unicode="&#xdb;" horiz-adv-x="1476" d="M776 1731l164 -248h-115l-92 145l-92 -145h-115l164 248h86zM1141 1366h147v-805q0 -281 -143.5 -429t-411.5 -148t-411.5 148.5t-143.5 428.5v805h148v-813q0 -434 407.5 -434t407.5 434v813z" />
+<glyph unicode="&#xdc;" horiz-adv-x="1476" d="M500 1483v164h164v-164h-164zM803 1483v164h164v-164h-164zM1141 1366h147v-805q0 -281 -143.5 -429t-411.5 -148t-411.5 148.5t-143.5 428.5v805h148v-813q0 -434 407.5 -434t407.5 434v813z" />
+<glyph unicode="&#xdd;" horiz-adv-x="1224" d="M655 1718h150l-170 -235h-96zM1012 1366h178l-508 -739v-627h-147v627l-510 739h178l405 -596z" />
+<glyph unicode="&#xde;" horiz-adv-x="1167" d="M590 1159q227 0 349 -109.5t122 -314.5t-122 -313.5t-349 -108.5h-266v-313h-148v1366h148v-207h266zM569 455q109 0 181.5 23.5t105.5 68.5t45 88t12 100.5t-12 100.5t-45 88t-105.5 68.5t-181.5 23.5h-245v-561h245z" />
+<glyph unicode="&#xdf;" horiz-adv-x="1255" d="M889 705q10 -4 27.5 -12.5t61.5 -39t76.5 -66.5t60.5 -94.5t28 -123.5q0 -170 -150.5 -269.5t-384.5 -99.5v133q162 0 274.5 61.5t112.5 188.5q0 129 -120.5 188.5t-266.5 59.5v129q145 0 232.5 62.5t87.5 181.5q0 123 -85 183t-222 60q-141 0 -217 -87t-76 -300v-860 h-148v868q0 113 23.5 203t73 162t136.5 111.5t208 39.5q229 0 341.5 -112.5t112.5 -267.5q0 -51 -19.5 -100.5t-46 -84.5t-54 -61.5t-46.5 -40.5z" />
+<glyph unicode="&#xe0;" horiz-adv-x="1093" d="M522 1040q215 0 328 -108.5t113 -315.5v-309q0 -98 -45.5 -167.5t-117 -100.5t-134 -43t-123.5 -12q-47 0 -96.5 6t-112 27.5t-108.5 55t-78.5 96t-32.5 144.5q0 70 25.5 125.5t62.5 90t94 59t101 36t104.5 17.5t86 7t60.5 1l164 -10q0 137 -75.5 195.5t-223.5 58.5 q-166 0 -299 -49v143q151 53 307 53zM815 307v197q-68 12 -182 12q-371 0 -371 -203q0 -193 281 -192q272 0 272 186zM506 1391l117 -236h-97l-170 236h150z" />
+<glyph unicode="&#xe1;" horiz-adv-x="1093" d="M522 1040q215 0 328 -108.5t113 -315.5v-309q0 -98 -45.5 -167.5t-117 -100.5t-134 -43t-123.5 -12q-47 0 -96.5 6t-112 27.5t-108.5 55t-78.5 96t-32.5 144.5q0 70 25.5 125.5t62.5 90t94 59t101 36t104.5 17.5t86 7t60.5 1l164 -10q0 137 -75.5 195.5t-223.5 58.5 q-166 0 -299 -49v143q151 53 307 53zM815 307v197q-68 12 -182 12q-371 0 -371 -203q0 -193 281 -192q272 0 272 186zM584 1391h151l-170 -236h-98z" />
+<glyph unicode="&#xe2;" horiz-adv-x="1093" d="M522 1040q215 0 328 -108.5t113 -315.5v-309q0 -98 -45.5 -167.5t-117 -100.5t-134 -43t-123.5 -12q-47 0 -96.5 6t-112 27.5t-108.5 55t-78.5 96t-32.5 144.5q0 70 25.5 125.5t62.5 90t94 59t101 36t104.5 17.5t86 7t60.5 1l164 -10q0 137 -75.5 195.5t-223.5 58.5 q-166 0 -299 -49v143q151 53 307 53zM815 307v197q-68 12 -182 12q-371 0 -371 -203q0 -193 281 -192q272 0 272 186zM612 1401l164 -246h-114l-93 143l-92 -143h-115l164 246h86z" />
+<glyph unicode="&#xe3;" horiz-adv-x="1093" d="M522 1040q215 0 328 -108.5t113 -315.5v-309q0 -98 -45.5 -167.5t-117 -100.5t-134 -43t-123.5 -12q-47 0 -96.5 6t-112 27.5t-108.5 55t-78.5 96t-32.5 144.5q0 70 25.5 125.5t62.5 90t93 59t101 36t105.5 17.5t85 7t59.5 1l166 -10q0 137 -75.5 195.5t-223.5 58.5 q-150 0 -299 -47v141q141 53 307 53zM815 307v197q-68 12 -182 12q-371 0 -371 -201q0 -195 281 -194q272 0 272 186zM846 1198q-53 -66 -114.5 -73t-118.5 23l-112 59q-56 30 -117.5 23t-115.5 -73v117q53 66 114.5 72t118.5 -24l112 -59q56 -30 118 -24t115 72v-113z" />
+<glyph unicode="&#xe4;" horiz-adv-x="1093" d="M336 1155v162h164v-162h-164zM639 1155v162h164v-162h-164zM522 1040q215 0 328 -108.5t113 -315.5v-309q0 -98 -45.5 -167.5t-117 -100.5t-134 -43t-123.5 -12q-47 0 -96.5 6t-112 27.5t-108.5 55t-78.5 96t-32.5 144.5q0 70 25.5 125.5t62.5 90t94 59t101 36 t104.5 17.5t86 7t60.5 1l164 -10q0 137 -75.5 195.5t-223.5 58.5q-166 0 -299 -49v143q151 53 307 53zM815 307v197q-68 12 -182 12q-371 0 -371 -203q0 -193 281 -192q272 0 272 186z" />
+<glyph unicode="&#xe5;" horiz-adv-x="1093" d="M522 1040q215 0 328 -108.5t113 -315.5v-309q0 -98 -45.5 -167.5t-117 -100.5t-134 -43t-123.5 -12q-47 0 -96.5 6t-112 27.5t-108.5 55t-78.5 96t-32.5 144.5q0 70 25.5 125.5t62.5 90t94 59t101 36t104.5 17.5t86 7t60.5 1l164 -10q0 137 -75.5 195.5t-223.5 58.5 q-166 0 -299 -49v143q151 53 307 53zM815 307v197q-68 12 -182 12q-371 0 -371 -203q0 -193 281 -192q272 0 272 186zM559 1432q80 0 123 -43t43 -125t-43 -125t-123 -43t-123 43t-43 125t43 125t123 43zM559 1163q49 0 70.5 23.5t21.5 77t-21.5 76t-70.5 22.5 q-51 0 -71.5 -22.5t-20.5 -76t20.5 -77t71.5 -23.5z" />
+<glyph unicode="&#xe6;" horiz-adv-x="1824" d="M1255 1040q94 0 171 -29.5t122 -69.5t79 -104.5t48.5 -109.5t22.5 -108.5t8 -78.5v-44l-4 -72h-746q14 -154 94 -223.5t240 -69.5q219 0 350 76v-152q-154 -72 -366 -71q-248 0 -365 151q-104 -152 -370 -151q-47 0 -96.5 6t-112 27.5t-108.5 55t-78.5 96t-32.5 144.5 q0 70 25.5 125.5t62.5 90t93 59t101 36t105.5 17.5t85 7t59.5 1l166 -10q0 137 -76 195.5t-223 58.5q-166 0 -299 -49v143q152 53 305 53q268 0 377 -168q112 168 362 168zM809 307v197q-66 12 -180 12q-371 0 -371 -203q0 -193 281 -192q270 0 270 186zM956 555h598 q0 35 -8 78t-33.5 110.5t-92 112.5t-165.5 45q-150 0 -219.5 -79t-79.5 -267z" />
+<glyph unicode="&#xe7;" horiz-adv-x="966" d="M614 899q-182 0 -265 -92t-83 -295q0 -205 83 -296t265 -91q154 0 287 57v-143q-115 -41 -225 -53l-127 -230h-156l164 228q-86 4 -157.5 30.5t-138 83t-104.5 162t-38 252.5q0 156 43 265.5t116.5 163.5t150.5 76.5t169 22.5q154 0 303 -57v-141q-140 57 -287 57z" />
+<glyph unicode="&#xe8;" horiz-adv-x="1136" d="M578 1040q94 0 170.5 -29.5t121.5 -69.5t79 -104.5t48.5 -109.5t22.5 -108.5t8 -78.5v-44l-4 -72h-745q14 -154 94 -223.5t237 -69.5q223 0 351 76v-152q-150 -72 -365 -71q-90 0 -165 21.5t-147.5 74.5t-113.5 159.5t-41 258.5v10q-2 532 449 532zM279 555h598 q0 35 -8.5 78t-34 110.5t-92 112.5t-164.5 45q-152 0 -220.5 -79t-78.5 -267zM547 1391l117 -236h-99l-170 236h152z" />
+<glyph unicode="&#xe9;" horiz-adv-x="1136" d="M578 1040q94 0 170.5 -29.5t121.5 -69.5t79 -104.5t48.5 -109.5t22.5 -108.5t8 -78.5v-44l-4 -72h-745q14 -154 94 -223.5t237 -69.5q223 0 351 76v-152q-150 -72 -365 -71q-90 0 -165 21.5t-147.5 74.5t-113.5 159.5t-41 258.5v10q-2 532 449 532zM279 555h598 q0 35 -8.5 78t-34 110.5t-92 112.5t-164.5 45q-152 0 -220.5 -79t-78.5 -267zM623 1391h151l-170 -236h-98z" />
+<glyph unicode="&#xea;" horiz-adv-x="1136" d="M578 1040q94 0 170.5 -29.5t121.5 -69.5t79 -104.5t48.5 -109.5t22.5 -108.5t8 -78.5v-44l-4 -72h-745q14 -154 94 -223.5t237 -69.5q223 0 351 76v-152q-150 -72 -365 -71q-90 0 -165 21.5t-147.5 74.5t-113.5 159.5t-41 258.5v10q-2 532 449 532zM279 555h598 q0 35 -8.5 78t-34 110.5t-92 112.5t-164.5 45q-152 0 -220.5 -79t-78.5 -267zM621 1401l163 -246h-114l-92 143l-93 -143h-114l164 246h86z" />
+<glyph unicode="&#xeb;" horiz-adv-x="1136" d="M578 1040q94 0 170.5 -29.5t121.5 -69.5t79 -104.5t48.5 -109.5t22.5 -108.5t8 -78.5v-44l-4 -72h-745q14 -154 94 -223.5t237 -69.5q223 0 351 76v-152q-150 -72 -365 -71q-90 0 -165 21.5t-147.5 74.5t-113.5 159.5t-41 258.5v10q-2 532 449 532zM279 555h598 q0 35 -8.5 78t-34 110.5t-92 112.5t-164.5 45q-152 0 -220.5 -79t-78.5 -267zM344 1155v162h164v-162h-164zM647 1155v162h164v-162h-164z" />
+<glyph unicode="&#xec;" horiz-adv-x="552" d="M203 0v1022h147v-1022h-147zM209 1391l117 -236h-99l-170 236h152z" />
+<glyph unicode="&#xed;" horiz-adv-x="552" d="M350 0v1022h-147v-1022h147zM342 1391h152l-170 -236h-97z" />
+<glyph unicode="&#xee;" horiz-adv-x="552" d="M350 0v1022h-147v-1022h147zM317 1401l166 -246h-114l-93 143l-94 -143h-114l165 246h84z" />
+<glyph unicode="&#xef;" horiz-adv-x="552" d="M350 0v1022h-147v-1022h147zM43 1155v162h162v-162h-162zM346 1155v162h162v-162h-162z" />
+<glyph unicode="&#xf0;" horiz-adv-x="1193" d="M852 1223q197 -193 197 -596q0 -643 -465 -643q-123 0 -216.5 41t-145.5 109.5t-77.5 147t-25.5 162.5q0 199 125 314.5t340 115.5q186 0 307 -90q-25 244 -174 365l-230 -129l-55 98l170 94q-86 33 -192 33q-41 0 -111 -8v137q66 10 127 10q184 0 328 -86l190 107 l53 -98zM584 123q43 0 70.5 3t78.5 29.5t83 75t57.5 148.5t27.5 242q-111 117 -317 116q-154 0 -236 -75.5t-82 -215.5q0 -41 9.5 -84t38 -103t98.5 -98t172 -38z" />
+<glyph unicode="&#xf1;" horiz-adv-x="1189" d="M600 1040q193 0 299.5 -98t106.5 -276v-666h-148v666q0 43 -9 76.5t-35 71.5t-84 58.5t-146 20.5q-129 0 -269 -41v-852h-147v940q201 100 432 100zM874 1198q-53 -66 -114.5 -73t-117.5 23l-113 59q-56 30 -116.5 23t-113.5 -73v117q53 66 113.5 72t116.5 -24l113 -59 q56 -30 117.5 -24t114.5 72v-113z" />
+<glyph unicode="&#xf2;" horiz-adv-x="1155" d="M100 512q0 156 43 265.5t117 163.5t151.5 76.5t170 22.5t169 -22.5t150.5 -76.5t117 -163.5t43 -265.5t-43 -265.5t-117 -163.5t-150.5 -76.5t-169 -22.5t-170 22.5t-151.5 76.5t-117 163.5t-43 265.5zM248 512q0 -207 80 -300t254 -93t252.5 94t78.5 299t-78.5 299 t-252.5 94t-254 -93t-80 -300zM514 1391l117 -236h-99l-170 236h152z" />
+<glyph unicode="&#xf3;" horiz-adv-x="1155" d="M581.5 1040q92.5 0 169 -22.5t150.5 -76.5t117 -163.5t43 -265.5t-43 -265.5t-117 -163.5t-150.5 -76.5t-169 -22.5t-170 22.5t-151.5 76.5t-117 163.5t-43 265.5t43 265.5t117 163.5t151.5 76.5t170 22.5zM582 119q174 0 252.5 94t78.5 299t-78.5 299t-252.5 94 t-254 -93t-80 -300t80 -300t254 -93zM647 1391h152l-170 -236h-99z" />
+<glyph unicode="&#xf4;" horiz-adv-x="1155" d="M100 512q0 156 43 265.5t117 163.5t151.5 76.5t170 22.5t169 -22.5t150.5 -76.5t117 -163.5t43 -265.5t-43 -265.5t-117 -163.5t-150.5 -76.5t-169 -22.5t-170 22.5t-151.5 76.5t-117 163.5t-43 265.5zM248 512q0 -207 80 -300t254 -93t252.5 94t78.5 299t-78.5 299 t-252.5 94t-254 -93t-80 -300zM623 1401l165 -246h-114l-92 143l-95 -143h-114l166 246h84z" />
+<glyph unicode="&#xf5;" horiz-adv-x="1155" d="M100 512q0 156 43 265.5t117 163.5t150.5 76.5t169 22.5t170 -22.5t151.5 -76.5t117 -163.5t43 -265.5t-43 -265.5t-117 -163.5t-151.5 -76.5t-170 -22.5t-169 22.5t-150.5 76.5t-117 163.5t-43 265.5zM248 512q0 -207 79 -300t253 -93t253.5 93t79.5 300t-79.5 300 t-253.5 93t-253 -93t-79 -300zM877 1198q-53 -66 -115 -73t-118 23l-113 59q-56 30 -116.5 24t-113.5 -72v115q53 66 113.5 73t116.5 -23l113 -60q56 -31 117.5 -24t115.5 73v-115z" />
+<glyph unicode="&#xf6;" horiz-adv-x="1155" d="M100 512q0 156 43 265.5t117 163.5t151.5 76.5t170 22.5t169 -22.5t150.5 -76.5t117 -163.5t43 -265.5t-43 -265.5t-117 -163.5t-150.5 -76.5t-169 -22.5t-170 22.5t-151.5 76.5t-117 163.5t-43 265.5zM248 512q0 -207 80 -300t254 -93t252.5 94t78.5 299t-78.5 299 t-252.5 94t-254 -93t-80 -300zM348 1155v162h162v-162h-162zM651 1155v162h162v-162h-162z" />
+<glyph unicode="&#xf7;" horiz-adv-x="1286" d="M561 735v164h164v-164h-164zM561 152v163h164v-163h-164zM1059 465v123h-832v-123h832z" />
+<glyph unicode="&#xf8;" horiz-adv-x="1175" d="M938 1022h160l-125 -150q94 -131 94 -360q0 -156 -43 -265.5t-116.5 -163.5t-150.5 -76.5t-169 -22.5q-182 0 -297 79l-55 -63h-160l127 152q-96 133 -97 360q0 156 43.5 265.5t117 163.5t151.5 76.5t170 22.5q180 0 297 -82zM254 512q0 -158 45 -246l496 586 q-78 53 -207 53q-174 0 -254 -93t-80 -300zM920 512q0 156 -46 246l-493 -588q76 -51 207 -51q174 0 253 93t79 300z" />
+<glyph unicode="&#xf9;" horiz-adv-x="1202" d="M877 1022h147v-592q0 -213 -111.5 -329.5t-316.5 -116.5t-316.5 116.5t-111.5 329.5v592h147v-600q0 -156 68 -228.5t213 -72.5q143 0 212 72.5t69 228.5v600zM535 1391l116 -236h-98l-170 236h152z" />
+<glyph unicode="&#xfa;" horiz-adv-x="1202" d="M877 1022h147v-592q0 -213 -111.5 -329.5t-316.5 -116.5t-316.5 116.5t-111.5 329.5v592h147v-600q0 -156 68 -228.5t213 -72.5q143 0 212 72.5t69 228.5v600zM657 1391h150l-170 -236h-96z" />
+<glyph unicode="&#xfb;" horiz-adv-x="1202" d="M877 1022h147v-592q0 -213 -111.5 -329.5t-316.5 -116.5t-316.5 116.5t-111.5 329.5v592h147v-600q0 -156 68 -228.5t213 -72.5q143 0 212 72.5t69 228.5v600zM637 1401l166 -246h-115l-92 143l-92 -143h-115l164 246h84z" />
+<glyph unicode="&#xfc;" horiz-adv-x="1202" d="M877 1022h147v-592q0 -213 -111.5 -329.5t-316.5 -116.5t-316.5 116.5t-111.5 329.5v592h147v-600q0 -156 68 -228.5t213 -72.5q143 0 212 72.5t69 228.5v600zM362 1155v162h164v-162h-164zM666 1155v162h163v-162h-163z" />
+<glyph unicode="&#xfd;" horiz-adv-x="1028" d="M807 1022h158l-418 -1122q-109 -295 -320 -295q-51 0 -98 18v135q41 -18 88 -18q63 0 118.5 68.5t80.5 138.5l24 69l-377 1006h158l293 -809zM565 1391h152l-170 -236h-98z" />
+<glyph unicode="&#xfe;" horiz-adv-x="1136" d="M569 1026q70 0 131.5 -12.5t125 -47t109.5 -90t74.5 -149.5t28.5 -217q0 -152 -42 -258.5t-114.5 -159.5t-148.5 -74.5t-164 -21.5q-129 0 -252 41v-414h-147v1776h147v-414q123 41 252 41zM569 133q170 0 246 89t76 288t-76 289t-246 90q-135 0 -252 -51v-654 q117 -51 252 -51z" />
+<glyph unicode="&#xff;" horiz-adv-x="1028" d="M807 1022h158l-418 -1122q-109 -295 -320 -295q-51 0 -98 18v135q41 -18 88 -18q63 0 118.5 68.5t80.5 138.5l24 69l-377 1006h158l293 -809zM279 1155v162h161v-162h-161zM582 1155v162h161v-162h-161z" />
+<glyph unicode="&#x152;" horiz-adv-x="2029" d="M1894 1227h-716v-471h628v-144h-628v-473h716v-139h-864v27q-117 -43 -274 -43q-633 0 -633 700t633 700q160 0 274 -45v27h864v-139zM756 123q170 0 274 59v1004q-109 59 -274 59q-252 0 -369 -135t-117 -426t117 -426t369 -135z" />
+<glyph unicode="&#x153;" horiz-adv-x="1921" d="M1356 1040q94 0 170 -29.5t122 -69.5t78.5 -104.5t47 -109.5t22.5 -108.5t8 -78.5v-44l-2 -72h-745q14 -154 94 -223.5t238 -69.5q219 0 350 76v-152q-150 -72 -365 -71q-276 0 -393 190q-119 -190 -399 -190q-92 0 -169 22.5t-151 76.5t-117 163.5t-43 265.5t43 265.5 t117 163.5t150.5 76.5t169.5 22.5q279 0 397 -186q113 186 377 186zM582 119q174 0 253.5 93t79.5 300t-79.5 300t-253.5 93t-253 -93t-79 -300t79 -300t253 -93zM1055 555h600q0 33 -8.5 77t-35 111.5t-93 112.5t-162.5 45q-152 0 -221.5 -79t-79.5 -267z" />
+<glyph unicode="&#x178;" horiz-adv-x="1224" d="M375 1483v164h164v-164h-164zM678 1483v164h164v-164h-164zM1012 1366h178l-508 -739v-627h-147v627l-510 739h178l405 -596z" />
+<glyph unicode="&#x2c6;" horiz-adv-x="823" d="M457 1401l164 -246h-115l-92 143l-92 -143h-115l166 246h84z" />
+<glyph unicode="&#x2dc;" horiz-adv-x="1038" d="M791 1198q-53 -66 -115 -73t-118 23l-113 59q-56 30 -116.5 23t-113.5 -73v117q53 66 113.5 72t116.5 -24l113 -59q56 -30 117.5 -24t115.5 72v-113z" />
+<glyph unicode="&#x2000;" horiz-adv-x="878" />
+<glyph unicode="&#x2001;" horiz-adv-x="1759" />
+<glyph unicode="&#x2002;" horiz-adv-x="878" />
+<glyph unicode="&#x2003;" horiz-adv-x="1759" />
+<glyph unicode="&#x2004;" horiz-adv-x="585" />
+<glyph unicode="&#x2005;" horiz-adv-x="438" />
+<glyph unicode="&#x2006;" horiz-adv-x="292" />
+<glyph unicode="&#x2007;" horiz-adv-x="292" />
+<glyph unicode="&#x2008;" horiz-adv-x="219" />
+<glyph unicode="&#x2009;" horiz-adv-x="350" />
+<glyph unicode="&#x200a;" horiz-adv-x="96" />
+<glyph unicode="&#x2010;" horiz-adv-x="950" d="M786 682v-143h-624v143h624z" />
+<glyph unicode="&#x2011;" horiz-adv-x="950" d="M786 682v-143h-624v143h624z" />
+<glyph unicode="&#x2012;" horiz-adv-x="950" d="M786 682v-143h-624v143h624z" />
+<glyph unicode="&#x2013;" horiz-adv-x="1146" d="M1001 655v-127h-860v127h860z" />
+<glyph unicode="&#x2014;" horiz-adv-x="1824" d="M1663 664v-136h-1501v136h1501z" />
+<glyph unicode="&#x2018;" horiz-adv-x="522" d="M264 1384l152 -401h-148l-172 401h168z" />
+<glyph unicode="&#x2019;" horiz-adv-x="522" d="M248 1384h168l-172 -401h-148z" />
+<glyph unicode="&#x201a;" horiz-adv-x="614" d="M299 172h166l-170 -401h-148z" />
+<glyph unicode="&#x201c;" horiz-adv-x="800" d="M543 1384l151 -401h-147l-172 401h168zM264 1384l152 -401h-148l-172 401h168z" />
+<glyph unicode="&#x201d;" horiz-adv-x="792" d="M248 1384h168l-172 -401h-148zM526 1384h168l-172 -401h-147z" />
+<glyph unicode="&#x201e;" horiz-adv-x="892" d="M299 172h166l-170 -401h-148zM578 172h167l-172 -401h-147z" />
+<glyph unicode="&#x2022;" horiz-adv-x="849" d="M657 684q0 -98 -69.5 -168t-165.5 -70q-98 0 -168 70t-70 168t70 167t168 69q96 0 165.5 -69t69.5 -167z" />
+<glyph unicode="&#x2026;" horiz-adv-x="1576" d="M219 0v164h164v-164h-164zM1200 0v164h162v-164h-162zM711 0v164h161v-164h-161z" />
+<glyph unicode="&#x202f;" horiz-adv-x="350" />
+<glyph unicode="&#x2039;" horiz-adv-x="710" d="M608 911l-364 -389l364 -391h-198l-347 391l347 389h198z" />
+<glyph unicode="&#x203a;" horiz-adv-x="776" d="M137 911h197l348 -389l-348 -391h-197l363 391z" />
+<glyph unicode="&#x205f;" horiz-adv-x="438" />
+<glyph unicode="&#x20ac;" horiz-adv-x="1390" d="M883 1245q-207 0 -325 -84t-157 -260h658v-123h-674q-4 -61 -4 -94q0 -37 4 -94h674v-123h-658q39 -176 157 -260t325 -84q209 0 399 80v-142q-203 -78 -416 -77q-524 0 -614 483h-150v123h136q-4 61 -4.5 94t4.5 94h-136v123h150q90 483 614 483q215 0 416 -79v-142 q-194 82 -399 82z" />
+<glyph unicode="&#x2122;" horiz-adv-x="1550" d="M100 1366h557v-72h-241v-610h-74v610h-242v72zM1313 1366h80v-682h-74v561l-242 -348l-241 348v-561h-74v682h80l235 -346z" />
+<glyph unicode="&#xe000;" horiz-adv-x="1020" d="M0 1020h1020v-1020h-1020v1020z" />
+<glyph unicode="&#xfb01;" horiz-adv-x="1202" d="M1040 0v1022h-147v-1022h147zM1049 1366v-162h-164v162h164zM616 1317q-39 0 -59 -2t-54 -14.5t-52.5 -35t-33 -70.5t-14.5 -116v-55h287v-137h-287v-887h-143v887h-176v137h176v53q0 106 28.5 182t63.5 112t89.5 56.5t82 22.5t66.5 2q53 0 100 -10v-133q-41 8 -74 8z " />
+<glyph unicode="&#xfb02;" horiz-adv-x="1220" d="M1040 0v1411h-147v-1411h147zM616 1317q-39 0 -59 -2t-54 -14.5t-52.5 -35t-33 -70.5t-14.5 -116v-55h287v-137h-287v-887h-143v887h-176v137h176v53q0 106 28.5 182t63.5 112t89.5 56.5t82 22.5t66.5 2q53 0 100 -10v-133q-41 8 -74 8z" />
+<glyph unicode="&#xfb03;" horiz-adv-x="1892" d="M1700 0v1022h-147v-1022h147zM1708 1366v-162h-163v162h163zM1288 1317q-49 0 -74.5 -4t-61.5 -24.5t-53 -73t-17 -136.5v-57h280v-135h-280v-887h-148v887h-176v135h176v55q0 106 27.5 182t62.5 112t89.5 56.5t83 22.5t67.5 2q55 0 98 -12v-131q-41 8 -74 8zM612 1317 q-49 0 -74.5 -4t-61.5 -24.5t-53 -73t-17 -136.5v-57h280v-135h-280v-887h-148v887h-176v135h176v55q0 106 27.5 182t62.5 112t89.5 56.5t83 22.5t67.5 2q55 0 98 -12v-131q-41 8 -74 8z" />
+<glyph unicode="&#xfb04;" horiz-adv-x="1904" d="M1706 0h-147v1411h147v-1411zM1288 1317q-49 0 -74.5 -4t-61.5 -24.5t-53 -73t-17 -136.5v-57h280v-135h-280v-887h-148v887h-176v135h176v55q0 106 27.5 182t62.5 112t89.5 56.5t83 22.5t67.5 2q55 0 98 -12v-131q-41 8 -74 8zM612 1317q-49 0 -74.5 -4t-61.5 -24.5 t-53 -73t-17 -136.5v-57h280v-135h-280v-887h-148v887h-176v135h176v55q0 106 27.5 182t62.5 112t89.5 56.5t83 22.5t67.5 2q55 0 98 -12v-131q-41 8 -74 8z" />
+</font>
+</defs></svg> 
\ No newline at end of file
Index: modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/fonts/opensans.css
===================================================================
--- modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/fonts/opensans.css	(nonexistent)
+++ modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/fonts/opensans.css	(revision 47450)
@@ -0,0 +1,13 @@
+/* Copyright (C) YOOtheme GmbH, YOOtheme Proprietary Use License (http://www.yootheme.com/license) */
+
+@font-face {
+	font-family: 'OpenSansLight';
+	src: url('OpenSans-Light-webfont.eot');
+	src: url('OpenSans-Light-webfont.eot?#iefix') format('embedded-opentype'),
+		url('OpenSans-Light-webfont.woff') format('woff'),
+		url('OpenSans-Light-webfont.ttf') format('truetype'),
+		url('OpenSans-Light-webfont.svg#OpenSansLight') format('svg');
+	font-weight: normal;
+	font-style: normal;
+}
+
Index: modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/feedback.jsp
===================================================================
--- modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/feedback.jsp	(nonexistent)
+++ modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/feedback.jsp	(revision 47450)
@@ -0,0 +1,45 @@
+<%@ page contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<%@ taglib prefix="s" uri="/struts-tags"%>
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<link href="jsps/style.css" rel="stylesheet" type="text/css" media="screen" />
+<title><s:text name="feedback.title"/></title>
+<link href="jsps/favicon.ico" rel="shortcut icon" type="image/x-icon" />
+</head>
+<body>
+<div id="wrapper">
+	<jsp:include page="menu.jsp"/>
+	<div id="page">
+		<div id="page-bgtop">
+			<div id="middle">
+                <div class="middle-b">
+                    <div class="background">
+                        <div class="main">
+                        <div id="main_container" class="clearfix">
+                                <div id="mainmiddle" class="floatbox">
+                                    <h2 class="title"><s:text name="feedback.title"/></h2>
+                                    <s:actionerror/>
+                                    <s:text name="feedback.loggedin"/>
+                                    <div class="entry">
+                                        <s:form action="sendFeedback">
+                                            <s:select name="reason" list="#{'validator form: feedback':'Feedback', 'validator form: bug':'Report a Bug', 'validator form: other':'Other'}" key="feedback.reason"/>
+                                            <s:textarea name="message" cols="50" rows="10" key="feedback.message"/>
+                                            <s:submit/>
+                                        </s:form>
+                                    </div>
+								</div>
+                            </div>
+                        </div>
+                    </div>
+                </div>
+            </div>
+		</div>
+		  <div id="footer"> 
+           <jsp:include page="footer.jsp"/>
+        </div>
+	</div>
+</div>
+</body>
+</html>
\ No newline at end of file
Index: modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/favicon.ico
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/favicon.ico
===================================================================
--- modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/favicon.ico	(nonexistent)
+++ modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/favicon.ico	(revision 47450)

Property changes on: modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/favicon.ico
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/images/BG_Footer_f5.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/images/BG_Footer_f5.png
===================================================================
--- modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/images/BG_Footer_f5.png	(nonexistent)
+++ modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/images/BG_Footer_f5.png	(revision 47450)

Property changes on: modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/images/BG_Footer_f5.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/images/BG_Header_f5.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/images/BG_Header_f5.png
===================================================================
--- modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/images/BG_Header_f5.png	(nonexistent)
+++ modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/images/BG_Header_f5.png	(revision 47450)

Property changes on: modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/images/BG_Header_f5.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/images/pluslogo_sm.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/images/pluslogo_sm.png
===================================================================
--- modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/images/pluslogo_sm.png	(nonexistent)
+++ modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/images/pluslogo_sm.png	(revision 47450)

Property changes on: modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/images/pluslogo_sm.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/images/compliant.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/images/compliant.png
===================================================================
--- modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/images/compliant.png	(nonexistent)
+++ modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/images/compliant.png	(revision 47450)

Property changes on: modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/images/compliant.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/images/list_arrow.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/images/list_arrow.png
===================================================================
--- modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/images/list_arrow.png	(nonexistent)
+++ modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/images/list_arrow.png	(revision 47450)

Property changes on: modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/images/list_arrow.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/fonts/YanoneKaffeesatz-Light-webfont.ttf
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/fonts/YanoneKaffeesatz-Light-webfont.ttf
===================================================================
--- modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/fonts/YanoneKaffeesatz-Light-webfont.ttf	(nonexistent)
+++ modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/fonts/YanoneKaffeesatz-Light-webfont.ttf	(revision 47450)

Property changes on: modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/fonts/YanoneKaffeesatz-Light-webfont.ttf
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/fonts/kreon.css
===================================================================
--- modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/fonts/kreon.css	(nonexistent)
+++ modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/fonts/kreon.css	(revision 47450)
@@ -0,0 +1,12 @@
+/* Copyright (C) YOOtheme GmbH, YOOtheme Proprietary Use License (http://www.yootheme.com/license) */
+
+@font-face {
+	font-family: 'KreonRegular';
+	src: url('kreon-regular-webfont.eot');
+	src: url('kreon-regular-webfont.eot?#iefix') format('embedded-opentype'),
+		 url('kreon-regular-webfont.woff') format('woff'),
+		 url('kreon-regular-webfont.ttf') format('truetype'),
+		 url('kreon-regular-webfont.svg#KreonRegular') format('svg');
+	font-weight: normal;
+	font-style: normal;
+}
\ No newline at end of file
Index: modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/images/arrow_left.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/images/arrow_left.png
===================================================================
--- modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/images/arrow_left.png	(nonexistent)
+++ modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/images/arrow_left.png	(revision 47450)

Property changes on: modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/images/arrow_left.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/images/box_alert.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/images/box_alert.png
===================================================================
--- modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/images/box_alert.png	(nonexistent)
+++ modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/images/box_alert.png	(revision 47450)

Property changes on: modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/images/box_alert.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/images/register.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/images/register.png
===================================================================
--- modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/images/register.png	(nonexistent)
+++ modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/images/register.png	(revision 47450)

Property changes on: modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/images/register.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/images/wrong.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/images/wrong.png
===================================================================
--- modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/images/wrong.png	(nonexistent)
+++ modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/images/wrong.png	(revision 47450)

Property changes on: modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/images/wrong.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/registration.jsp
===================================================================
--- modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/registration.jsp	(nonexistent)
+++ modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/registration.jsp	(revision 47450)
@@ -0,0 +1,44 @@
+<%@ page contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<%@ taglib prefix="s" uri="/struts-tags"%>
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title><s:text name="registration.title"/></title>
+<link href="jsps/favicon.ico" rel="shortcut icon" type="image/x-icon" />
+<link href="jsps/style.css" rel="stylesheet" type="text/css" media="screen" />
+</head>
+<body>
+<div id="wrapper">
+	<jsp:include page="menu.jsp"/>
+	<div id="page">
+	<div id="page-bgtop">
+		<div class="content">
+			<div class="main">
+				<h2 class="title"><s:text name="registration.title"/></h2>
+				<s:text name="registration.description"/>
+				<%--<p class="meta"><a href='<s:url value="/jsps/help.jsp#registration"/>' target="_blank"><s:text name="help"/></a></p>--%>
+				<div class="entry">
+					<%-- <s:if test="%{@gr.uoa.di.validatorweb.configs.Constants@isModeLdap()}">
+						<s:text name="registration.ldap.message"/>
+					</s:if> --%>
+					<s:form action="Register">
+						<s:if test="%{repoMode.trim().toLowerCase().equals(\"dnet\")}">
+							<s:textfield name="username" key="registration.username"/>
+							<s:textfield name="firstName" key="registration.firstName"/>
+							<s:textfield name="lastName" key="registration.lastName"/>
+						</s:if>
+						<s:textfield name="email" key="registration.email"/>
+						<s:password name="password" key="registration.password"/>
+						<s:password name="repassword" key="registration.repassword"/>
+						<s:submit value="Register" cssClass="button-default"/>
+					</s:form>
+				</div>
+			</div>
+		</div>
+		
+	</div>
+	</div>
+</div>
+</body>
+</html>
\ No newline at end of file
Index: modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/images/help2.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/images/help2.png
===================================================================
--- modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/images/help2.png	(nonexistent)
+++ modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/images/help2.png	(revision 47450)

Property changes on: modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/images/help2.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/images/footer_bg_m.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/images/footer_bg_m.png
===================================================================
--- modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/images/footer_bg_m.png	(nonexistent)
+++ modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/images/footer_bg_m.png	(revision 47450)

Property changes on: modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/images/footer_bg_m.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/images/number-3.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/images/number-3.png
===================================================================
--- modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/images/number-3.png	(nonexistent)
+++ modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/images/number-3.png	(revision 47450)

Property changes on: modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/images/number-3.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/fonts/kreon-regular-webfont.woff
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/fonts/kreon-regular-webfont.woff
===================================================================
--- modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/fonts/kreon-regular-webfont.woff	(nonexistent)
+++ modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/fonts/kreon-regular-webfont.woff	(revision 47450)

Property changes on: modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/fonts/kreon-regular-webfont.woff
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/js/mootools-1.2.5.1-more.js
===================================================================
--- modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/js/mootools-1.2.5.1-more.js	(nonexistent)
+++ modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/js/mootools-1.2.5.1-more.js	(revision 47450)
@@ -0,0 +1,2192 @@
+//MooTools More, <http://mootools.net/more>. Copyright (c) 2006-2009 Aaron Newton <http://clientcide.com/>, Valerio Proietti <http://mad4milk.net> & the MooTools team <http://mootools.net/developers>, MIT Style License.
+
+/*
+---
+
+script: More.js
+
+name: More
+
+description: MooTools More
+
+license: MIT-style license
+
+requires:
+  - Core/MooTools
+
+provides: [MooTools.More]
+
+...
+*/
+
+MooTools.More = {
+	'version': '1.2.5.1',
+	'build': '254884f2b83651bf95260eed5c6cceb838e22d8e'
+};
+
+
+/*
+---
+
+script: MooTools.Lang.js
+
+name: MooTools.Lang
+
+description: Provides methods for localization.
+
+license: MIT-style license
+
+authors:
+  - Aaron Newton
+
+requires:
+  - Core/Events
+  - /MooTools.More
+
+provides: [Lang]
+
+...
+*/
+
+(function(){
+
+	var data = {
+		language: 'en-US',
+		languages: {
+			'en-US': {}
+		},
+		cascades: ['en-US']
+	};
+	
+	var cascaded;
+
+	MooTools.lang = new Events();
+
+	$extend(MooTools.lang, {
+
+		setLanguage: function(lang){
+			if (!data.languages[lang]) return this;
+			data.language = lang;
+			this.load();
+			this.fireEvent('langChange', lang);
+			return this;
+		},
+
+		load: function() {
+			var langs = this.cascade(this.getCurrentLanguage());
+			cascaded = {};
+			$each(langs, function(set, setName){
+				cascaded[setName] = this.lambda(set);
+			}, this);
+		},
+
+		getCurrentLanguage: function(){
+			return data.language;
+		},
+
+		addLanguage: function(lang){
+			data.languages[lang] = data.languages[lang] || {};
+			return this;
+		},
+
+		cascade: function(lang){
+			var cascades = (data.languages[lang] || {}).cascades || [];
+			cascades.combine(data.cascades);
+			cascades.erase(lang).push(lang);
+			var langs = cascades.map(function(lng){
+				return data.languages[lng];
+			}, this);
+			return $merge.apply(this, langs);
+		},
+
+		lambda: function(set) {
+			(set || {}).get = function(key, args){
+				return $lambda(set[key]).apply(this, $splat(args));
+			};
+			return set;
+		},
+
+		get: function(set, key, args){
+			if (cascaded && cascaded[set]) return (key ? cascaded[set].get(key, args) : cascaded[set]);
+		},
+
+		set: function(lang, set, members){
+			this.addLanguage(lang);
+			langData = data.languages[lang];
+			if (!langData[set]) langData[set] = {};
+			$extend(langData[set], members);
+			if (lang == this.getCurrentLanguage()){
+				this.load();
+				this.fireEvent('langChange', lang);
+			}
+			return this;
+		},
+
+		list: function(){
+			return Hash.getKeys(data.languages);
+		}
+
+	});
+
+})();
+
+
+/*
+---
+
+script: Log.js
+
+name: Log
+
+description: Provides basic logging functionality for plugins to implement.
+
+license: MIT-style license
+
+authors:
+  - Guillermo Rauch
+  - Thomas Aylott
+  - Scott Kyle
+
+requires:
+  - Core/Class
+  - /MooTools.More
+
+provides: [Log]
+
+...
+*/
+
+(function(){
+
+var global = this;
+
+var log = function(){
+	if (global.console && console.log){
+		try {
+			console.log.apply(console, arguments);
+		} catch(e) {
+			console.log(Array.slice(arguments));
+		}
+	} else {
+		Log.logged.push(arguments);
+	}
+	return this;
+};
+
+var disabled = function(){
+	this.logged.push(arguments);
+	return this;
+};
+
+this.Log = new Class({
+	
+	logged: [],
+	
+	log: disabled,
+	
+	resetLog: function(){
+		this.logged.empty();
+		return this;
+	},
+
+	enableLog: function(){
+		this.log = log;
+		this.logged.each(function(args){
+			this.log.apply(this, args);
+		}, this);
+		return this.resetLog();
+	},
+
+	disableLog: function(){
+		this.log = disabled;
+		return this;
+	}
+	
+});
+
+Log.extend(new Log).enableLog();
+
+// legacy
+Log.logger = function(){
+	return this.log.apply(this, arguments);
+};
+
+})();
+
+
+/*
+---
+
+script: Class.Refactor.js
+
+name: Class.Refactor
+
+description: Extends a class onto itself with new property, preserving any items attached to the class's namespace.
+
+license: MIT-style license
+
+authors:
+  - Aaron Newton
+
+requires:
+  - Core/Class
+  - /MooTools.More
+
+# Some modules declare themselves dependent on Class.Refactor
+provides: [Class.refactor, Class.Refactor]
+
+...
+*/
+
+Class.refactor = function(original, refactors){
+
+	$each(refactors, function(item, name){
+		var origin = original.prototype[name];
+		if (origin && (origin = origin._origin ? origin._origin: origin) && typeof item == 'function') original.implement(name, function(){
+			var old = this.previous;
+			this.previous = origin;
+			var value = item.apply(this, arguments);
+			this.previous = old;
+			return value;
+		}); else original.implement(name, item);
+	});
+
+	return original;
+
+};
+
+
+/*
+---
+
+script: Class.Binds.js
+
+name: Class.Binds
+
+description: Automagically binds specified methods in a class to the instance of the class.
+
+license: MIT-style license
+
+authors:
+  - Aaron Newton
+
+requires:
+  - Core/Class
+  - /MooTools.More
+
+provides: [Class.Binds]
+
+...
+*/
+
+Class.Mutators.Binds = function(binds){
+    return binds;
+};
+
+Class.Mutators.initialize = function(initialize){
+	return function(){
+		$splat(this.Binds).each(function(name){
+			var original = this[name];
+			if (original) this[name] = original.bind(this);
+		}, this);
+		return initialize.apply(this, arguments);
+	};
+};
+
+
+/*
+---
+
+script: Class.Occlude.js
+
+name: Class.Occlude
+
+description: Prevents a class from being applied to a DOM element twice.
+
+license: MIT-style license.
+
+authors:
+  - Aaron Newton
+
+requires: 
+  - Core/Class
+  - Core/Element
+  - /MooTools.More
+
+provides: [Class.Occlude]
+
+...
+*/
+
+Class.Occlude = new Class({
+
+	occlude: function(property, element){
+		element = document.id(element || this.element);
+		var instance = element.retrieve(property || this.property);
+		if (instance && !$defined(this.occluded))
+			return this.occluded = instance;
+
+		this.occluded = false;
+		element.store(property || this.property, this);
+		return this.occluded;
+	}
+
+});
+
+
+/*
+---
+
+script: Chain.Wait.js
+
+name: Chain.Wait
+
+description: value, Adds a method to inject pauses between chained events.
+
+license: MIT-style license.
+
+authors:
+  - Aaron Newton
+
+requires: 
+  - Core/Chain
+  - Core/Element
+  - Core/Fx
+  - /MooTools.More
+
+provides: [Chain.Wait]
+
+...
+*/
+
+(function(){
+
+	var wait = {
+		wait: function(duration){
+			return this.chain(function(){
+				this.callChain.delay($pick(duration, 500), this);
+			}.bind(this));
+		}
+	};
+
+	Chain.implement(wait);
+
+	if (window.Fx){
+		Fx.implement(wait);
+		['Css', 'Tween', 'Elements'].each(function(cls){
+			if (Fx[cls]) Fx[cls].implement(wait);
+		});
+	}
+
+	Element.implement({
+		chains: function(effects){
+			$splat($pick(effects, ['tween', 'morph', 'reveal'])).each(function(effect){
+				effect = this.get(effect);
+				if (!effect) return;
+				effect.setOptions({
+					link:'chain'
+				});
+			}, this);
+			return this;
+		},
+		pauseFx: function(duration, effect){
+			this.chains(effect).get($pick(effect, 'tween')).wait(duration);
+			return this;
+		}
+	});
+
+})();
+
+
+/*
+---
+
+script: Element.Measure.js
+
+name: Element.Measure
+
+description: Extends the Element native object to include methods useful in measuring dimensions.
+
+credits: "Element.measure / .expose methods by Daniel Steigerwald License: MIT-style license. Copyright: Copyright (c) 2008 Daniel Steigerwald, daniel.steigerwald.cz"
+
+license: MIT-style license
+
+authors:
+  - Aaron Newton
+
+requires:
+  - Core/Element.Style
+  - Core/Element.Dimensions
+  - /MooTools.More
+
+provides: [Element.Measure]
+
+...
+*/
+
+Element.implement({
+
+	measure: function(fn){
+		var vis = function(el) {
+			return !!(!el || el.offsetHeight || el.offsetWidth);
+		};
+		if (vis(this)) return fn.apply(this);
+		var parent = this.getParent(),
+			restorers = [],
+			toMeasure = []; 
+		while (!vis(parent) && parent != document.body) {
+			toMeasure.push(parent.expose());
+			parent = parent.getParent();
+		}
+		var restore = this.expose();
+		var result = fn.apply(this);
+		restore();
+		toMeasure.each(function(restore){
+			restore();
+		});
+		return result;
+	},
+
+	expose: function(){
+		if (this.getStyle('display') != 'none') return $empty;
+		var before = this.style.cssText;
+		this.setStyles({
+			display: 'block',
+			position: 'absolute',
+			visibility: 'hidden'
+		});
+		return function(){
+			this.style.cssText = before;
+		}.bind(this);
+	},
+
+	getDimensions: function(options){
+		options = $merge({computeSize: false},options);
+		var dim = {};
+		var getSize = function(el, options){
+			return (options.computeSize)?el.getComputedSize(options):el.getSize();
+		};
+		var parent = this.getParent('body');
+		if (parent && this.getStyle('display') == 'none'){
+			dim = this.measure(function(){
+				return getSize(this, options);
+			});
+		} else if (parent){
+			try { //safari sometimes crashes here, so catch it
+				dim = getSize(this, options);
+			}catch(e){}
+		} else {
+			dim = {x: 0, y: 0};
+		}
+		return $chk(dim.x) ? $extend(dim, {width: dim.x, height: dim.y}) : $extend(dim, {x: dim.width, y: dim.height});
+	},
+
+	getComputedSize: function(options){
+		//legacy support for my stupid spelling error
+		if (options && options.plains) options.planes = options.plains;
+		
+		options = $merge({
+			styles: ['padding','border'],
+			planes: {
+				height: ['top','bottom'],
+				width: ['left','right']
+			},
+			mode: 'both'
+		}, options);
+		
+		var size = {width: 0,height: 0};
+		switch (options.mode){
+			case 'vertical':
+				delete size.width;
+				delete options.planes.width;
+				break;
+			case 'horizontal':
+				delete size.height;
+				delete options.planes.height;
+				break;
+		}
+		var getStyles = [];
+		//this function might be useful in other places; perhaps it should be outside this function?
+		$each(options.planes, function(plane, key){
+			plane.each(function(edge){
+				options.styles.each(function(style){
+					getStyles.push((style == 'border') ? style + '-' + edge + '-' + 'width' : style + '-' + edge);
+				});
+			});
+		});
+		var styles = {};
+		getStyles.each(function(style){ styles[style] = this.getComputedStyle(style); }, this);
+		var subtracted = [];
+		$each(options.planes, function(plane, key){ //keys: width, height, planes: ['left', 'right'], ['top','bottom']
+			var capitalized = key.capitalize();
+			size['total' + capitalized] = size['computed' + capitalized] = 0;
+			plane.each(function(edge){ //top, left, right, bottom
+				size['computed' + edge.capitalize()] = 0;
+				getStyles.each(function(style, i){ //padding, border, etc.
+					//'padding-left'.test('left') size['totalWidth'] = size['width'] + [padding-left]
+					if (style.test(edge)){
+						styles[style] = styles[style].toInt() || 0; //styles['padding-left'] = 5;
+						size['total' + capitalized] = size['total' + capitalized] + styles[style];
+						size['computed' + edge.capitalize()] = size['computed' + edge.capitalize()] + styles[style];
+					}
+					//if width != width (so, padding-left, for instance), then subtract that from the total
+					if (style.test(edge) && key != style &&
+						(style.test('border') || style.test('padding')) && !subtracted.contains(style)){
+						subtracted.push(style);
+						size['computed' + capitalized] = size['computed' + capitalized]-styles[style];
+					}
+				});
+			});
+		});
+
+		['Width', 'Height'].each(function(value){
+			var lower = value.toLowerCase();
+			if(!$chk(size[lower])) return;
+
+			size[lower] = size[lower] + this['offset' + value] + size['computed' + value];
+			size['total' + value] = size[lower] + size['total' + value];
+			delete size['computed' + value];
+		}, this);
+
+		return $extend(styles, size);
+	}
+
+});
+
+/*
+---
+
+script: Element.Position.js
+
+name: Element.Position
+
+description: Extends the Element native object to include methods useful positioning elements relative to others.
+
+license: MIT-style license
+
+authors:
+  - Aaron Newton
+
+requires:
+  - Core/Element.Dimensions
+  - /Element.Measure
+
+provides: [Element.Position]
+
+...
+*/
+
+(function(){
+
+var original = Element.prototype.position;
+
+Element.implement({
+
+	position: function(options){
+		//call original position if the options are x/y values
+		if (options && ($defined(options.x) || $defined(options.y))) return original ? original.apply(this, arguments) : this;
+		$each(options||{}, function(v, k){ if (!$defined(v)) delete options[k]; });
+		options = $merge({
+			// minimum: { x: 0, y: 0 },
+			// maximum: { x: 0, y: 0},
+			relativeTo: document.body,
+			position: {
+				x: 'center', //left, center, right
+				y: 'center' //top, center, bottom
+			},
+			edge: false,
+			offset: {x: 0, y: 0},
+			returnPos: false,
+			relFixedPosition: false,
+			ignoreMargins: false,
+			ignoreScroll: false,
+			allowNegative: false
+		}, options);
+		//compute the offset of the parent positioned element if this element is in one
+		var parentOffset = {x: 0, y: 0}, 
+				parentPositioned = false;
+		/* dollar around getOffsetParent should not be necessary, but as it does not return
+		 * a mootools extended element in IE, an error occurs on the call to expose. See:
+		 * http://mootools.lighthouseapp.com/projects/2706/tickets/333-element-getoffsetparent-inconsistency-between-ie-and-other-browsers */
+		var offsetParent = this.measure(function(){
+			return document.id(this.getOffsetParent());
+		});
+		if (offsetParent && offsetParent != this.getDocument().body){
+			parentOffset = offsetParent.measure(function(){
+				return this.getPosition();
+			});
+			parentPositioned = offsetParent != document.id(options.relativeTo);
+			options.offset.x = options.offset.x - parentOffset.x;
+			options.offset.y = options.offset.y - parentOffset.y;
+		}
+		//upperRight, bottomRight, centerRight, upperLeft, bottomLeft, centerLeft
+		//topRight, topLeft, centerTop, centerBottom, center
+		var fixValue = function(option){
+			if ($type(option) != 'string') return option;
+			option = option.toLowerCase();
+			var val = {};
+			
+			if (option.test('left')) val.x = 'left';
+			else if (option.test('right')) val.x = 'right';
+			else val.x = 'center';
+			
+			if (option.test('upper') || option.test('top')) val.y = 'top';
+			else if (option.test('bottom')) val.y = 'bottom';
+			else val.y = 'center';
+			
+			return val;
+		};
+		options.edge = fixValue(options.edge);
+		options.position = fixValue(options.position);
+		if (!options.edge){
+			if (options.position.x == 'center' && options.position.y == 'center') options.edge = {x:'center', y:'center'};
+			else options.edge = {x:'left', y:'top'};
+		}
+
+		this.setStyle('position', 'absolute');
+		var rel = document.id(options.relativeTo) || document.body,
+				calc = rel == document.body ? window.getScroll() : rel.getPosition(),
+				top = calc.y, left = calc.x;
+
+		var dim = this.getDimensions({computeSize: true, styles:['padding', 'border','margin']});
+		var pos = {},
+				prefY = options.offset.y,
+				prefX = options.offset.x,
+				winSize = window.getSize();
+		switch(options.position.x){
+			case 'left':
+				pos.x = left + prefX;
+				break;
+			case 'right':
+				pos.x = left + prefX + rel.offsetWidth;
+				break;
+			default: //center
+				pos.x = left + ((rel == document.body ? winSize.x : rel.offsetWidth)/2) + prefX;
+				break;
+		}
+		switch(options.position.y){
+			case 'top':
+				pos.y = top + prefY;
+				break;
+			case 'bottom':
+				pos.y = top + prefY + rel.offsetHeight;
+				break;
+			default: //center
+				pos.y = top + ((rel == document.body ? winSize.y : rel.offsetHeight)/2) + prefY;
+				break;
+		}
+		if (options.edge){
+			var edgeOffset = {};
+
+			switch(options.edge.x){
+				case 'left':
+					edgeOffset.x = 0;
+					break;
+				case 'right':
+					edgeOffset.x = -dim.x-dim.computedRight-dim.computedLeft;
+					break;
+				default: //center
+					edgeOffset.x = -(dim.totalWidth/2);
+					break;
+			}
+			switch(options.edge.y){
+				case 'top':
+					edgeOffset.y = 0;
+					break;
+				case 'bottom':
+					edgeOffset.y = -dim.y-dim.computedTop-dim.computedBottom;
+					break;
+				default: //center
+					edgeOffset.y = -(dim.totalHeight/2);
+					break;
+			}
+			pos.x += edgeOffset.x;
+			pos.y += edgeOffset.y;
+		}
+		pos = {
+			left: ((pos.x >= 0 || parentPositioned || options.allowNegative) ? pos.x : 0).toInt(),
+			top: ((pos.y >= 0 || parentPositioned || options.allowNegative) ? pos.y : 0).toInt()
+		};
+		var xy = {left: 'x', top: 'y'};
+		['minimum', 'maximum'].each(function(minmax) {
+			['left', 'top'].each(function(lr) {
+				var val = options[minmax] ? options[minmax][xy[lr]] : null;
+				if (val != null && ((minmax == 'minimum') ? pos[lr] < val: pos[lr] > val)) pos[lr] = val;
+			});
+		});
+		if (rel.getStyle('position') == 'fixed' || options.relFixedPosition){
+			var winScroll = window.getScroll();
+			pos.top+= winScroll.y;
+			pos.left+= winScroll.x;
+		}
+		var relScroll = rel.getScroll();
+		if (options.ignoreScroll) {
+			pos.top -= relScroll.y;
+			pos.left -= relScroll.x;
+		} else {
+			pos.top += relScroll.y;
+			pos.left += relScroll.x;
+		}
+		if (options.ignoreMargins) {
+			pos.left += (
+				options.edge.x == 'right' ? dim['margin-right'] : 
+				options.edge.x == 'center' ? -dim['margin-left'] + ((dim['margin-right'] + dim['margin-left'])/2) : 
+					- dim['margin-left']
+			);
+			pos.top += (
+				options.edge.y == 'bottom' ? dim['margin-bottom'] : 
+				options.edge.y == 'center' ? -dim['margin-top'] + ((dim['margin-bottom'] + dim['margin-top'])/2) : 
+					- dim['margin-top']
+			);
+		}
+		pos.left = Math.ceil(pos.left);
+		pos.top = Math.ceil(pos.top);
+		if (options.returnPos) return pos;
+		else this.setStyles(pos);
+		return this;
+	}
+
+});
+
+})();
+
+
+/*
+---
+
+script: Element.Shortcuts.js
+
+name: Element.Shortcuts
+
+description: Extends the Element native object to include some shortcut methods.
+
+license: MIT-style license
+
+authors:
+  - Aaron Newton
+
+requires:
+  - Core/Element.Style
+  - /MooTools.More
+
+provides: [Element.Shortcuts]
+
+...
+*/
+
+Element.implement({
+
+	isDisplayed: function(){
+		return this.getStyle('display') != 'none';
+	},
+
+	isVisible: function(){
+		var w = this.offsetWidth,
+			h = this.offsetHeight;
+		return (w == 0 && h == 0) ? false : (w > 0 && h > 0) ? true : this.style.display != 'none';
+	},
+
+	toggle: function(){
+		return this[this.isDisplayed() ? 'hide' : 'show']();
+	},
+
+	hide: function(){
+		var d;
+		try {
+			//IE fails here if the element is not in the dom
+			d = this.getStyle('display');
+		} catch(e){}
+		if (d == "none") return this;
+		return this.store('element:_originalDisplay', d || '').setStyle('display', 'none');
+	},
+
+	show: function(display){
+		if (!display && this.isDisplayed()) return this;
+		display = display || this.retrieve('element:_originalDisplay') || 'block';
+		return this.setStyle('display', (display == 'none') ? 'block' : display);
+	},
+
+	swapClass: function(remove, add){
+		return this.removeClass(remove).addClass(add);
+	}
+});
+
+Document.implement({
+	clearSelection: function(){
+		if (document.selection && document.selection.empty) {
+			document.selection.empty();
+		} else if (window.getSelection) {
+			var selection = window.getSelection();
+			if (selection && selection.removeAllRanges) selection.removeAllRanges();
+		}
+	}
+});
+
+/*
+---
+
+script: Fx.Elements.js
+
+name: Fx.Elements
+
+description: Effect to change any number of CSS properties of any number of Elements.
+
+license: MIT-style license
+
+authors:
+  - Valerio Proietti
+
+requires:
+  - Core/Fx.CSS
+  - /MooTools.More
+
+provides: [Fx.Elements]
+
+...
+*/
+
+Fx.Elements = new Class({
+
+	Extends: Fx.CSS,
+
+	initialize: function(elements, options){
+		this.elements = this.subject = $$(elements);
+		this.parent(options);
+	},
+
+	compute: function(from, to, delta){
+		var now = {};
+
+		for (var i in from){
+			var iFrom = from[i], iTo = to[i], iNow = now[i] = {};
+			for (var p in iFrom) iNow[p] = this.parent(iFrom[p], iTo[p], delta);
+		}
+
+		return now;
+	},
+
+	set: function(now){
+		for (var i in now){
+			if (!this.elements[i]) continue;
+
+			var iNow = now[i];
+			for (var p in iNow) this.render(this.elements[i], p, iNow[p], this.options.unit);
+		}
+
+		return this;
+	},
+
+	start: function(obj){
+		if (!this.check(obj)) return this;
+		var from = {}, to = {};
+
+		for (var i in obj){
+			if (!this.elements[i]) continue;
+
+			var iProps = obj[i], iFrom = from[i] = {}, iTo = to[i] = {};
+
+			for (var p in iProps){
+				var parsed = this.prepare(this.elements[i], p, iProps[p]);
+				iFrom[p] = parsed.from;
+				iTo[p] = parsed.to;
+			}
+		}
+
+		return this.parent(from, to);
+	}
+
+});
+
+
+/*
+---
+
+script: Fx.Accordion.js
+
+name: Fx.Accordion
+
+description: An Fx.Elements extension which allows you to easily create accordion type controls.
+
+license: MIT-style license
+
+authors:
+  - Valerio Proietti
+
+requires:
+  - Core/Element.Event
+  - /Fx.Elements
+
+provides: [Fx.Accordion]
+
+...
+*/
+
+Fx.Accordion = new Class({
+
+	Extends: Fx.Elements,
+
+	options: {/*
+		onActive: $empty(toggler, section),
+		onBackground: $empty(toggler, section),
+		*/
+		fixedHeight: false,
+		fixedWidth: false,
+		display: 0,
+		show: false,
+		height: true,
+		width: false,
+		opacity: true,
+		alwaysHide: false,
+		trigger: 'click',
+		initialDisplayFx: true,
+		returnHeightToAuto: true
+	},
+
+	initialize: function(){
+		var params = Array.link(arguments, {
+			'container': Element.type, //deprecated
+			'options': Object.type,
+			'togglers': $defined,
+			'elements': $defined
+		});
+		this.parent(params.elements, params.options);
+		this.togglers = $$(params.togglers);
+		this.previous = -1;
+		this.internalChain = new Chain();
+		if (this.options.alwaysHide) this.options.wait = true;
+		if ($chk(this.options.show)){
+			this.options.display = false;
+			this.previous = this.options.show;
+		}
+		if (this.options.start){
+			this.options.display = false;
+			this.options.show = false;
+		}
+		this.effects = {};
+		if (this.options.opacity) this.effects.opacity = 'fullOpacity';
+		if (this.options.width) this.effects.width = this.options.fixedWidth ? 'fullWidth' : 'offsetWidth';
+		if (this.options.height) this.effects.height = this.options.fixedHeight ? 'fullHeight' : 'scrollHeight';
+		for (var i = 0, l = this.togglers.length; i < l; i++) this.addSection(this.togglers[i], this.elements[i]);
+		this.elements.each(function(el, i){
+			if (this.options.show === i){
+				this.fireEvent('active', [this.togglers[i], el]);
+			} else {
+				for (var fx in this.effects) el.setStyle(fx, 0);
+			}
+		}, this);
+		if ($chk(this.options.display) || this.options.initialDisplayFx === false) this.display(this.options.display, this.options.initialDisplayFx);
+		if (this.options.fixedHeight !== false) this.options.returnHeightToAuto = false;
+		this.addEvent('complete', this.internalChain.callChain.bind(this.internalChain));
+	},
+
+	addSection: function(toggler, element){
+		toggler = document.id(toggler);
+		element = document.id(element);
+		var test = this.togglers.contains(toggler);
+		this.togglers.include(toggler);
+		this.elements.include(element);
+		var idx = this.togglers.indexOf(toggler);
+		var displayer = this.display.bind(this, idx);
+		toggler.store('accordion:display', displayer);
+		toggler.addEvent(this.options.trigger, displayer);
+		if (this.options.height) element.setStyles({'padding-top': 0, 'border-top': 'none', 'padding-bottom': 0, 'border-bottom': 'none'});
+		if (this.options.width) element.setStyles({'padding-left': 0, 'border-left': 'none', 'padding-right': 0, 'border-right': 'none'});
+		element.fullOpacity = 1;
+		if (this.options.fixedWidth) element.fullWidth = this.options.fixedWidth;
+		if (this.options.fixedHeight) element.fullHeight = this.options.fixedHeight;
+		element.setStyle('overflow', 'hidden');
+		if (!test){
+			for (var fx in this.effects) element.setStyle(fx, 0);
+		}
+		return this;
+	},
+
+	removeSection: function(toggler, displayIndex) {
+		var idx = this.togglers.indexOf(toggler);
+		var element = this.elements[idx];
+		var remover = function(){
+			this.togglers.erase(toggler);
+			this.elements.erase(element);
+			this.detach(toggler);
+		}.bind(this);
+		if (this.now == idx || displayIndex != undefined) this.display($pick(displayIndex, idx - 1 >= 0 ? idx - 1 : 0)).chain(remover);
+		else remover();
+		return this;
+	},
+
+	detach: function(toggler){
+		var remove = function(toggler) {
+			toggler.removeEvent(this.options.trigger, toggler.retrieve('accordion:display'));
+		}.bind(this);
+		if (!toggler) this.togglers.each(remove);
+		else remove(toggler);
+		return this;
+	},
+
+	display: function(index, useFx){
+		if (!this.check(index, useFx)) return this;
+		useFx = $pick(useFx, true);
+		index = ($type(index) == 'element') ? this.elements.indexOf(index) : index;
+		if (index == this.previous && !this.options.alwaysHide) return this;
+		if (this.options.returnHeightToAuto){
+			var prev = this.elements[this.previous];
+			if (prev && !this.selfHidden){
+				for (var fx in this.effects){
+					prev.setStyle(fx, prev[this.effects[fx]]);
+				}
+			}
+		}
+		if ((this.timer && this.options.wait) || (index === this.previous && !this.options.alwaysHide)) return this;
+		this.previous = index;
+		var obj = {};
+		this.elements.each(function(el, i){
+			obj[i] = {};
+			var hide;
+			if (i != index){
+				hide = true;
+			} else if (this.options.alwaysHide && ((el.offsetHeight > 0 && this.options.height) || el.offsetWidth > 0 && this.options.width)){
+				hide = true;
+				this.selfHidden = true;
+			}
+			this.fireEvent(hide ? 'background' : 'active', [this.togglers[i], el]);
+			for (var fx in this.effects) obj[i][fx] = hide ? 0 : el[this.effects[fx]];
+		}, this);
+		this.internalChain.clearChain();
+		this.internalChain.chain(function(){
+			if (this.options.returnHeightToAuto && !this.selfHidden){
+				var el = this.elements[index];
+				if (el) el.setStyle('height', 'auto');
+			};
+		}.bind(this));
+		return useFx ? this.start(obj) : this.set(obj);
+	}
+
+});
+
+/*
+	Compatibility with 1.2.0
+*/
+var Accordion = new Class({
+
+	Extends: Fx.Accordion,
+
+	initialize: function(){
+		this.parent.apply(this, arguments);
+		var params = Array.link(arguments, {'container': Element.type});
+		this.container = params.container;
+	},
+
+	addSection: function(toggler, element, pos){
+		toggler = document.id(toggler);
+		element = document.id(element);
+		var test = this.togglers.contains(toggler);
+		var len = this.togglers.length;
+		if (len && (!test || pos)){
+			pos = $pick(pos, len - 1);
+			toggler.inject(this.togglers[pos], 'before');
+			element.inject(toggler, 'after');
+		} else if (this.container && !test){
+			toggler.inject(this.container);
+			element.inject(this.container);
+		}
+		return this.parent.apply(this, arguments);
+	}
+
+});
+
+/*
+---
+
+script: Fx.Move.js
+
+name: Fx.Move
+
+description: Defines Fx.Move, a class that works with Element.Position.js to transition an element from one location to another.
+
+license: MIT-style license
+
+authors:
+  - Aaron Newton
+
+requires:
+  - Core/Fx.Morph
+  - /Element.Position
+
+provides: [Fx.Move]
+
+...
+*/
+
+Fx.Move = new Class({
+
+	Extends: Fx.Morph,
+
+	options: {
+		relativeTo: document.body,
+		position: 'center',
+		edge: false,
+		offset: {x: 0, y: 0}
+	},
+
+	start: function(destination){
+		var element = this.element,
+			topLeft = element.getStyles('top', 'left');
+		if (topLeft.top == 'auto' || topLeft.left == 'auto'){
+			element.setPosition(element.getPosition(element.getOffsetParent()));
+		}
+		return this.parent(element.position($merge(this.options, destination, {returnPos: true})));
+	}
+
+});
+
+Element.Properties.move = {
+
+	set: function(options){
+		var morph = this.retrieve('move');
+		if (morph) morph.cancel();
+		return this.eliminate('move').store('move:options', $extend({link: 'cancel'}, options));
+	},
+
+	get: function(options){
+		if (options || !this.retrieve('move')){
+			if (options || !this.retrieve('move:options')) this.set('move', options);
+			this.store('move', new Fx.Move(this, this.retrieve('move:options')));
+		}
+		return this.retrieve('move');
+	}
+
+};
+
+Element.implement({
+
+	move: function(options){
+		this.get('move').start(options);
+		return this;
+	}
+
+});
+
+
+/*
+---
+
+script: Fx.Reveal.js
+
+name: Fx.Reveal
+
+description: Defines Fx.Reveal, a class that shows and hides elements with a transition.
+
+license: MIT-style license
+
+authors:
+  - Aaron Newton
+
+requires:
+  - Core/Fx.Morph
+  - /Element.Shortcuts
+  - /Element.Measure
+
+provides: [Fx.Reveal]
+
+...
+*/
+
+Fx.Reveal = new Class({
+
+	Extends: Fx.Morph,
+
+	options: {/*	  
+		onShow: $empty(thisElement),
+		onHide: $empty(thisElement),
+		onComplete: $empty(thisElement),
+		heightOverride: null,
+		widthOverride: null, */
+		link: 'cancel',
+		styles: ['padding', 'border', 'margin'],
+		transitionOpacity: !Browser.Engine.trident4,
+		mode: 'vertical',
+		display: function(){
+			return this.element.get('tag') != 'tr' ? 'block' : 'table-row';
+		},
+		hideInputs: Browser.Engine.trident ? 'select, input, textarea, object, embed' : false,
+		opacity: 1
+	},
+
+	dissolve: function(){
+		try {
+			if (!this.hiding && !this.showing){
+				if (this.element.getStyle('display') != 'none'){
+					this.hiding = true;
+					this.showing = false;
+					this.hidden = true;
+					this.cssText = this.element.style.cssText;
+					var startStyles = this.element.getComputedSize({
+						styles: this.options.styles,
+						mode: this.options.mode
+					});
+					this.element.setStyle('display', $lambda(this.options.display).apply(this));
+					if (this.options.transitionOpacity) startStyles.opacity = this.options.opacity;
+					var zero = {};
+					$each(startStyles, function(style, name){
+						zero[name] = [style, 0];
+					}, this);
+					this.element.setStyle('overflow', 'hidden');
+					var hideThese = this.options.hideInputs ? this.element.getElements(this.options.hideInputs) : null;
+					this.$chain.unshift(function(){
+						if (this.hidden){
+							this.hiding = false;
+							$each(startStyles, function(style, name){
+								startStyles[name] = style;
+							}, this);
+							this.element.style.cssText = this.cssText;
+							this.element.setStyle('display', 'none');
+							if (hideThese) hideThese.setStyle('visibility', 'visible');
+						}
+						this.fireEvent('hide', this.element);
+						this.callChain();
+					}.bind(this));
+					if (hideThese) hideThese.setStyle('visibility', 'hidden');
+					this.start(zero);
+				} else {
+					this.callChain.delay(10, this);
+					this.fireEvent('complete', this.element);
+					this.fireEvent('hide', this.element);
+				}
+			} else if (this.options.link == 'chain'){
+				this.chain(this.dissolve.bind(this));
+			} else if (this.options.link == 'cancel' && !this.hiding){
+				this.cancel();
+				this.dissolve();
+			}
+		} catch(e){
+			this.hiding = false;
+			this.element.setStyle('display', 'none');
+			this.callChain.delay(10, this);
+			this.fireEvent('complete', this.element);
+			this.fireEvent('hide', this.element);
+		}
+		return this;
+	},
+
+	reveal: function(){
+		try {
+			if (!this.showing && !this.hiding){
+				if (this.element.getStyle('display') == 'none'){
+					this.showing = true;
+					this.hiding = this.hidden =  false;
+					var startStyles;
+					this.cssText = this.element.style.cssText;
+					//toggle display, but hide it
+					this.element.measure(function(){
+						//create the styles for the opened/visible state
+						startStyles = this.element.getComputedSize({
+							styles: this.options.styles,
+							mode: this.options.mode
+						});
+					}.bind(this));
+					$each(startStyles, function(style, name){
+						startStyles[name] = style;
+					});
+					//if we're overridding height/width
+					if ($chk(this.options.heightOverride)) startStyles.height = this.options.heightOverride.toInt();
+					if ($chk(this.options.widthOverride)) startStyles.width = this.options.widthOverride.toInt();
+					if (this.options.transitionOpacity) {
+						this.element.setStyle('opacity', 0);
+						startStyles.opacity = this.options.opacity;
+					}
+					//create the zero state for the beginning of the transition
+					var zero = {
+						height: 0,
+						display: $lambda(this.options.display).apply(this)
+					};
+					$each(startStyles, function(style, name){ zero[name] = 0; });
+					//set to zero
+					this.element.setStyles($merge(zero, {overflow: 'hidden'}));
+					//hide inputs
+					var hideThese = this.options.hideInputs ? this.element.getElements(this.options.hideInputs) : null;
+					if (hideThese) hideThese.setStyle('visibility', 'hidden');
+					//start the effect
+					this.start(startStyles);
+					this.$chain.unshift(function(){
+						this.element.style.cssText = this.cssText;
+						this.element.setStyle('display', $lambda(this.options.display).apply(this));
+						if (!this.hidden) this.showing = false;
+						if (hideThese) hideThese.setStyle('visibility', 'visible');
+						this.callChain();
+						this.fireEvent('show', this.element);
+					}.bind(this));
+				} else {
+					this.callChain();
+					this.fireEvent('complete', this.element);
+					this.fireEvent('show', this.element);
+				}
+			} else if (this.options.link == 'chain'){
+				this.chain(this.reveal.bind(this));
+			} else if (this.options.link == 'cancel' && !this.showing){
+				this.cancel();
+				this.reveal();
+			}
+		} catch(e){
+			this.element.setStyles({
+				display: $lambda(this.options.display).apply(this),
+				visiblity: 'visible',
+				opacity: this.options.opacity
+			});
+			this.showing = false;
+			this.callChain.delay(10, this);
+			this.fireEvent('complete', this.element);
+			this.fireEvent('show', this.element);
+		}
+		return this;
+	},
+
+	toggle: function(){
+		if (this.element.getStyle('display') == 'none'){
+			this.reveal();
+		} else {
+			this.dissolve();
+		}
+		return this;
+	},
+
+	cancel: function(){
+		this.parent.apply(this, arguments);
+		this.element.style.cssText = this.cssText;
+		this.hiding = false;
+		this.showing = false;
+		return this;
+	}
+
+});
+
+Element.Properties.reveal = {
+
+	set: function(options){
+		var reveal = this.retrieve('reveal');
+		if (reveal) reveal.cancel();
+		return this.eliminate('reveal').store('reveal:options', options);
+	},
+
+	get: function(options){
+		if (options || !this.retrieve('reveal')){
+			if (options || !this.retrieve('reveal:options')) this.set('reveal', options);
+			this.store('reveal', new Fx.Reveal(this, this.retrieve('reveal:options')));
+		}
+		return this.retrieve('reveal');
+	}
+
+};
+
+Element.Properties.dissolve = Element.Properties.reveal;
+
+Element.implement({
+
+	reveal: function(options){
+		this.get('reveal', options).reveal();
+		return this;
+	},
+
+	dissolve: function(options){
+		this.get('reveal', options).dissolve();
+		return this;
+	},
+
+	nix: function(){
+		var params = Array.link(arguments, {destroy: Boolean.type, options: Object.type});
+		this.get('reveal', params.options).dissolve().chain(function(){
+			this[params.destroy ? 'destroy' : 'dispose']();
+		}.bind(this));
+		return this;
+	},
+
+	wink: function(){
+		var params = Array.link(arguments, {duration: Number.type, options: Object.type});
+		var reveal = this.get('reveal', params.options);
+		reveal.reveal().chain(function(){
+			(function(){
+				reveal.dissolve();
+			}).delay(params.duration || 2000);
+		});
+	}
+
+
+});
+
+/*
+---
+
+script: Fx.Scroll.js
+
+name: Fx.Scroll
+
+description: Effect to smoothly scroll any element, including the window.
+
+license: MIT-style license
+
+authors:
+  - Valerio Proietti
+
+requires:
+  - Core/Fx
+  - Core/Element.Event
+  - Core/Element.Dimensions
+  - /MooTools.More
+
+provides: [Fx.Scroll]
+
+...
+*/
+
+Fx.Scroll = new Class({
+
+	Extends: Fx,
+
+	options: {
+		offset: {x: 0, y: 0},
+		wheelStops: true
+	},
+
+	initialize: function(element, options){
+		this.element = this.subject = document.id(element);
+		this.parent(options);
+		var cancel = this.cancel.bind(this, false);
+
+		if ($type(this.element) != 'element') this.element = document.id(this.element.getDocument().body);
+
+		var stopper = this.element;
+
+		if (this.options.wheelStops){
+			this.addEvent('start', function(){
+				stopper.addEvent('mousewheel', cancel);
+			}, true);
+			this.addEvent('complete', function(){
+				stopper.removeEvent('mousewheel', cancel);
+			}, true);
+		}
+	},
+
+	set: function(){
+		var now = Array.flatten(arguments);
+		if (Browser.Engine.gecko) now = [Math.round(now[0]), Math.round(now[1])];
+		this.element.scrollTo(now[0] + this.options.offset.x, now[1] + this.options.offset.y);
+	},
+
+	compute: function(from, to, delta){
+		return [0, 1].map(function(i){
+			return Fx.compute(from[i], to[i], delta);
+		});
+	},
+
+	start: function(x, y){
+		if (!this.check(x, y)) return this;
+		var scrollSize = this.element.getScrollSize(),
+			scroll = this.element.getScroll(), 
+			values = {x: x, y: y};
+		for (var z in values){
+			var max = scrollSize[z];
+			if ($chk(values[z])) values[z] = ($type(values[z]) == 'number') ? values[z] : max;
+			else values[z] = scroll[z];
+			values[z] += this.options.offset[z];
+		}
+		return this.parent([scroll.x, scroll.y], [values.x, values.y]);
+	},
+
+	toTop: function(){
+		return this.start(false, 0);
+	},
+
+	toLeft: function(){
+		return this.start(0, false);
+	},
+
+	toRight: function(){
+		return this.start('right', false);
+	},
+
+	toBottom: function(){
+		return this.start(false, 'bottom');
+	},
+
+	toElement: function(el){
+		var position = document.id(el).getPosition(this.element);
+		return this.start(position.x, position.y);
+	},
+
+	scrollIntoView: function(el, axes, offset){
+		axes = axes ? $splat(axes) : ['x','y'];
+		var to = {};
+		el = document.id(el);
+		var pos = el.getPosition(this.element);
+		var size = el.getSize();
+		var scroll = this.element.getScroll();
+		var containerSize = this.element.getSize();
+		var edge = {
+			x: pos.x + size.x,
+			y: pos.y + size.y
+		};
+		['x','y'].each(function(axis) {
+			if (axes.contains(axis)) {
+				if (edge[axis] > scroll[axis] + containerSize[axis]) to[axis] = edge[axis] - containerSize[axis];
+				if (pos[axis] < scroll[axis]) to[axis] = pos[axis];
+			}
+			if (to[axis] == null) to[axis] = scroll[axis];
+			if (offset && offset[axis]) to[axis] = to[axis] + offset[axis];
+		}, this);
+		if (to.x != scroll.x || to.y != scroll.y) this.start(to.x, to.y);
+		return this;
+	},
+
+	scrollToCenter: function(el, axes, offset){
+		axes = axes ? $splat(axes) : ['x', 'y'];
+		el = $(el);
+		var to = {},
+			pos = el.getPosition(this.element),
+			size = el.getSize(),
+			scroll = this.element.getScroll(),
+			containerSize = this.element.getSize(),
+			edge = {
+				x: pos.x + size.x,
+				y: pos.y + size.y
+			};
+
+		['x','y'].each(function(axis){
+			if(axes.contains(axis)){
+				to[axis] = pos[axis] - (containerSize[axis] - size[axis])/2;
+			}
+			if(to[axis] == null) to[axis] = scroll[axis];
+			if(offset && offset[axis]) to[axis] = to[axis] + offset[axis];
+		}, this);
+		if (to.x != scroll.x || to.y != scroll.y) this.start(to.x, to.y);
+		return this;
+	}
+
+});
+
+
+/*
+---
+
+script: Fx.Slide.js
+
+name: Fx.Slide
+
+description: Effect to slide an element in and out of view.
+
+license: MIT-style license
+
+authors:
+  - Valerio Proietti
+
+requires:
+  - Core/Fx
+  - Core/Element.Style
+  - /MooTools.More
+
+provides: [Fx.Slide]
+
+...
+*/
+
+Fx.Slide = new Class({
+
+	Extends: Fx,
+
+	options: {
+		mode: 'vertical',
+		wrapper: false,
+		hideOverflow: true,
+		resetHeight: false
+	},
+
+	initialize: function(element, options){
+		this.addEvent('complete', function(){
+			this.open = (this.wrapper['offset' + this.layout.capitalize()] != 0);
+			if (this.open && this.options.resetHeight) this.wrapper.setStyle('height', '');
+			if (this.open && Browser.Engine.webkit419) this.element.dispose().inject(this.wrapper);
+		}, true);
+		this.element = this.subject = document.id(element);
+		this.parent(options);
+		var wrapper = this.element.retrieve('wrapper');
+		var styles = this.element.getStyles('margin', 'position', 'overflow');
+		if (this.options.hideOverflow) styles = $extend(styles, {overflow: 'hidden'});
+		if (this.options.wrapper) wrapper = document.id(this.options.wrapper).setStyles(styles);
+		this.wrapper = wrapper || new Element('div', {
+			styles: styles
+		}).wraps(this.element);
+		this.element.store('wrapper', this.wrapper).setStyle('margin', 0);
+		this.now = [];
+		this.open = true;
+	},
+
+	vertical: function(){
+		this.margin = 'margin-top';
+		this.layout = 'height';
+		this.offset = this.element.offsetHeight;
+	},
+
+	horizontal: function(){
+		this.margin = 'margin-left';
+		this.layout = 'width';
+		this.offset = this.element.offsetWidth;
+	},
+
+	set: function(now){
+		this.element.setStyle(this.margin, now[0]);
+		this.wrapper.setStyle(this.layout, now[1]);
+		return this;
+	},
+
+	compute: function(from, to, delta){
+		return [0, 1].map(function(i){
+			return Fx.compute(from[i], to[i], delta);
+		});
+	},
+
+	start: function(how, mode){
+		if (!this.check(how, mode)) return this;
+		this[mode || this.options.mode]();
+		var margin = this.element.getStyle(this.margin).toInt();
+		var layout = this.wrapper.getStyle(this.layout).toInt();
+		var caseIn = [[margin, layout], [0, this.offset]];
+		var caseOut = [[margin, layout], [-this.offset, 0]];
+		var start;
+		switch (how){
+			case 'in': start = caseIn; break;
+			case 'out': start = caseOut; break;
+			case 'toggle': start = (layout == 0) ? caseIn : caseOut;
+		}
+		return this.parent(start[0], start[1]);
+	},
+
+	slideIn: function(mode){
+		return this.start('in', mode);
+	},
+
+	slideOut: function(mode){
+		return this.start('out', mode);
+	},
+
+	hide: function(mode){
+		this[mode || this.options.mode]();
+		this.open = false;
+		return this.set([-this.offset, 0]);
+	},
+
+	show: function(mode){
+		this[mode || this.options.mode]();
+		this.open = true;
+		return this.set([0, this.offset]);
+	},
+
+	toggle: function(mode){
+		return this.start('toggle', mode);
+	}
+
+});
+
+Element.Properties.slide = {
+
+	set: function(options){
+		var slide = this.retrieve('slide');
+		if (slide) slide.cancel();
+		return this.eliminate('slide').store('slide:options', $extend({link: 'cancel'}, options));
+	},
+
+	get: function(options){
+		if (options || !this.retrieve('slide')){
+			if (options || !this.retrieve('slide:options')) this.set('slide', options);
+			this.store('slide', new Fx.Slide(this, this.retrieve('slide:options')));
+		}
+		return this.retrieve('slide');
+	}
+
+};
+
+Element.implement({
+
+	slide: function(how, mode){
+		how = how || 'toggle';
+		var slide = this.get('slide'), toggle;
+		switch (how){
+			case 'hide': slide.hide(mode); break;
+			case 'show': slide.show(mode); break;
+			case 'toggle':
+				var flag = this.retrieve('slide:flag', slide.open);
+				slide[flag ? 'slideOut' : 'slideIn'](mode);
+				this.store('slide:flag', !flag);
+				toggle = true;
+			break;
+			default: slide.start(how, mode);
+		}
+		if (!toggle) this.eliminate('slide:flag');
+		return this;
+	}
+
+});
+
+
+/*
+---
+
+script: Fx.SmoothScroll.js
+
+name: Fx.SmoothScroll
+
+description: Class for creating a smooth scrolling effect to all internal links on the page.
+
+license: MIT-style license
+
+authors:
+  - Valerio Proietti
+
+requires:
+  - Core/Selectors
+  - /Fx.Scroll
+
+provides: [Fx.SmoothScroll]
+
+...
+*/
+
+var SmoothScroll = Fx.SmoothScroll = new Class({
+
+	Extends: Fx.Scroll,
+
+	initialize: function(options, context){
+		context = context || document;
+		this.doc = context.getDocument();
+		var win = context.getWindow();
+		this.parent(this.doc, options);
+		this.links = $$(this.options.links || this.doc.links);
+		var location = win.location.href.match(/^[^#]*/)[0] + '#';
+		this.links.each(function(link){
+			if (link.href.indexOf(location) != 0) {return;}
+			var anchor = link.href.substr(location.length);
+			if (anchor) this.useLink(link, anchor);
+		}, this);
+		if (!Browser.Engine.webkit419) {
+			this.addEvent('complete', function(){
+				win.location.hash = this.anchor;
+			}, true);
+		}
+	},
+
+	useLink: function(link, anchor){
+		var el;
+		link.addEvent('click', function(event){
+			if (el !== false && !el) el = document.id(anchor) || this.doc.getElement('a[name=' + anchor + ']');
+			if (el) {
+				event.preventDefault();
+				this.anchor = anchor;
+				this.toElement(el).chain(function(){
+					this.fireEvent('scrolledTo', [link, el]);
+				}.bind(this));
+				link.blur();
+			}
+		}.bind(this));
+	}
+});
+
+/*
+---
+
+script: Fx.Sort.js
+
+name: Fx.Sort
+
+description: Defines Fx.Sort, a class that reorders lists with a transition.
+
+license: MIT-style license
+
+authors:
+  - Aaron Newton
+
+requires:
+  - Core/Element.Dimensions
+  - /Fx.Elements
+  - /Element.Measure
+
+provides: [Fx.Sort]
+
+...
+*/
+
+Fx.Sort = new Class({
+
+	Extends: Fx.Elements,
+
+	options: {
+		mode: 'vertical'
+	},
+
+	initialize: function(elements, options){
+		this.parent(elements, options);
+		this.elements.each(function(el){
+			if (el.getStyle('position') == 'static') el.setStyle('position', 'relative');
+		});
+		this.setDefaultOrder();
+	},
+
+	setDefaultOrder: function(){
+		this.currentOrder = this.elements.map(function(el, index){
+			return index;
+		});
+	},
+
+	sort: function(newOrder){
+		if ($type(newOrder) != 'array') return false;
+		var top = 0,
+			left = 0,
+			next = {},
+			zero = {},
+			vert = this.options.mode == 'vertical';
+		var current = this.elements.map(function(el, index){
+			var size = el.getComputedSize({styles: ['border', 'padding', 'margin']});
+			var val;
+			if (vert){
+				val = {
+					top: top,
+					margin: size['margin-top'],
+					height: size.totalHeight
+				};
+				top += val.height - size['margin-top'];
+			} else {
+				val = {
+					left: left,
+					margin: size['margin-left'],
+					width: size.totalWidth
+				};
+				left += val.width;
+			}
+			var plane = vert ? 'top' : 'left';
+			zero[index] = {};
+			var start = el.getStyle(plane).toInt();
+			zero[index][plane] = start || 0;
+			return val;
+		}, this);
+		this.set(zero);
+		newOrder = newOrder.map(function(i){ return i.toInt(); });
+		if (newOrder.length != this.elements.length){
+			this.currentOrder.each(function(index){
+				if (!newOrder.contains(index)) newOrder.push(index);
+			});
+			if (newOrder.length > this.elements.length)
+				newOrder.splice(this.elements.length-1, newOrder.length - this.elements.length);
+		}
+		var margin = top = left = 0;
+		newOrder.each(function(item, index){
+			var newPos = {};
+			if (vert){
+				newPos.top = top - current[item].top - margin;
+				top += current[item].height;
+			} else {
+				newPos.left = left - current[item].left;
+				left += current[item].width;
+			}
+			margin = margin + current[item].margin;
+			next[item]=newPos;
+		}, this);
+		var mapped = {};
+		$A(newOrder).sort().each(function(index){
+			mapped[index] = next[index];
+		});
+		this.start(mapped);
+		this.currentOrder = newOrder;
+		return this;
+	},
+
+	rearrangeDOM: function(newOrder){
+		newOrder = newOrder || this.currentOrder;
+		var parent = this.elements[0].getParent();
+		var rearranged = [];
+		this.elements.setStyle('opacity', 0);
+		//move each element and store the new default order
+		newOrder.each(function(index){
+			rearranged.push(this.elements[index].inject(parent).setStyles({
+				top: 0,
+				left: 0
+			}));
+		}, this);
+		this.elements.setStyle('opacity', 1);
+		this.elements = $$(rearranged);
+		this.setDefaultOrder();
+		return this;
+	},
+
+	getDefaultOrder: function(){
+		return this.elements.map(function(el, index){
+			return index;
+		});
+	},
+
+	forward: function(){
+		return this.sort(this.getDefaultOrder());
+	},
+
+	backward: function(){
+		return this.sort(this.getDefaultOrder().reverse());
+	},
+
+	reverse: function(){
+		return this.sort(this.currentOrder.reverse());
+	},
+
+	sortByElements: function(elements){
+		return this.sort(elements.map(function(el){
+			return this.elements.indexOf(el);
+		}, this));
+	},
+
+	swap: function(one, two){
+		if ($type(one) == 'element') one = this.elements.indexOf(one);
+		if ($type(two) == 'element') two = this.elements.indexOf(two);
+		
+		var newOrder = $A(this.currentOrder);
+		newOrder[this.currentOrder.indexOf(one)] = two;
+		newOrder[this.currentOrder.indexOf(two)] = one;
+		return this.sort(newOrder);
+	}
+
+});
+
+/*
+---
+
+script: Request.JSONP.js
+
+name: Request.JSONP
+
+description: Defines Request.JSONP, a class for cross domain javascript via script injection.
+
+license: MIT-style license
+
+authors:
+  - Aaron Newton
+  - Guillermo Rauch
+
+requires:
+  - Core/Element
+  - Core/Request
+  - /Log
+
+provides: [Request.JSONP]
+
+...
+*/
+
+Request.JSONP = new Class({
+
+	Implements: [Chain, Events, Options, Log],
+
+	options: {/*
+		onRetry: $empty(intRetries),
+		onRequest: $empty(scriptElement),
+		onComplete: $empty(data),
+		onSuccess: $empty(data),
+		onCancel: $empty(),
+		log: false,
+		*/
+		url: '',
+		data: {},
+		retries: 0,
+		timeout: 0,
+		link: 'ignore',
+		callbackKey: 'callback',
+		injectScript: document.head
+	},
+
+	initialize: function(options){
+		this.setOptions(options);
+		if (this.options.log) this.enableLog();
+		this.running = false;
+		this.requests = 0;
+		this.triesRemaining = [];
+	},
+
+	check: function(){
+		if (!this.running) return true;
+		switch (this.options.link){
+			case 'cancel': this.cancel(); return true;
+			case 'chain': this.chain(this.caller.bind(this, arguments)); return false;
+		}
+		return false;
+	},
+
+	send: function(options){
+		if (!$chk(arguments[1]) && !this.check(options)) return this;
+
+		var type = $type(options), 
+				old = this.options, 
+				index = $chk(arguments[1]) ? arguments[1] : this.requests++;
+		if (type == 'string' || type == 'element') options = {data: options};
+
+		options = $extend({data: old.data, url: old.url}, options);
+
+		if (!$chk(this.triesRemaining[index])) this.triesRemaining[index] = this.options.retries;
+		var remaining = this.triesRemaining[index];
+
+		(function(){
+			var script = this.getScript(options);
+			this.log('JSONP retrieving script with url: ' + script.get('src'));
+			this.fireEvent('request', script);
+			this.running = true;
+
+			(function(){
+				if (remaining){
+					this.triesRemaining[index] = remaining - 1;
+					if (script){
+						script.destroy();
+						this.send(options, index).fireEvent('retry', this.triesRemaining[index]);
+					}
+				} else if(this.running && script && this.options.timeout){
+					script.destroy();
+					this.cancel().fireEvent('failure');
+				}
+			}).delay(this.options.timeout, this);
+		}).delay(Browser.Engine.trident ? 50 : 0, this);
+		return this;
+	},
+
+	cancel: function(){
+		if (!this.running) return this;
+		this.running = false;
+		this.fireEvent('cancel');
+		return this;
+	},
+
+	getScript: function(options){
+		var index = Request.JSONP.counter,
+				data;
+		Request.JSONP.counter++;
+
+		switch ($type(options.data)){
+			case 'element': data = document.id(options.data).toQueryString(); break;
+			case 'object': case 'hash': data = Hash.toQueryString(options.data);
+		}
+
+		var src = options.url + 
+			 (options.url.test('\\?') ? '&' :'?') + 
+			 (options.callbackKey || this.options.callbackKey) + 
+			 '=Request.JSONP.request_map.request_'+ index + 
+			 (data ? '&' + data : '');
+		if (src.length > 2083) this.log('JSONP '+ src +' will fail in Internet Explorer, which enforces a 2083 bytes length limit on URIs');
+
+		var script = new Element('script', {type: 'text/javascript', src: src});
+		Request.JSONP.request_map['request_' + index] = function(){ this.success(arguments, script); }.bind(this);
+		return script.inject(this.options.injectScript);
+	},
+
+	success: function(args, script){
+		if (!this.running) return false;
+		if (script) script.destroy();
+		this.running = false;
+		this.log('JSONP successfully retrieved: ', args);
+		this.fireEvent('complete', args).fireEvent('success', args).callChain();
+	}
+
+});
+
+Request.JSONP.counter = 0;
+Request.JSONP.request_map = {};
+
+
+/*
+---
+
+script: Form.Validator.Swedish.js
+
+name: Form.Validator.Swedish
+
+description: Form Validator messages for Swedish.
+
+license: MIT-style license
+
+authors:
+  - Martin Lundgren
+
+requires:
+  - /Lang
+
+provides: [Form.Validator.Swedish]
+
+...
+*/
+
+MooTools.lang.set('sv-SE', 'Form.Validator', {
+
+	required: 'Fältet är obligatoriskt.',
+	minLength: 'Ange minst {minLength} tecken (du angav {length} tecken).',
+	maxLength: 'Ange högst {maxLength} tecken (du angav {length} tecken). ',
+	integer: 'Ange ett heltal i fältet. Tal med decimaler (t.ex. 1,25) är inte tillåtna.',
+	numeric: 'Ange endast numeriska värden i detta fält (t.ex. "1" eller "1.1" eller "-1" eller "-1,1").',
+	digits: 'Använd endast siffror och skiljetecken i detta fält (till exempel ett telefonnummer med bindestreck tillåtet).',
+	alpha: 'Använd endast bokstäver (a-ö) i detta fält. Inga mellanslag eller andra tecken är tillåtna.',
+	alphanum: 'Använd endast bokstäver (a-ö) och siffror (0-9) i detta fält. Inga mellanslag eller andra tecken är tillåtna.',
+	dateSuchAs: 'Ange ett giltigt datum som t.ex. {date}',
+	dateInFormatMDY: 'Ange ett giltigt datum som t.ex. YYYY-MM-DD (i.e. "1999-12-31")',
+	email: 'Ange en giltig e-postadress. Till exempel "erik@domain.com".',
+	url: 'Ange en giltig webbadress som http://www.google.com.',
+	currencyDollar: 'Ange en giltig belopp. Exempelvis 100,00.',
+	oneRequired: 'Vänligen ange minst ett av dessa alternativ.',
+	errorPrefix: 'Fel: ',
+	warningPrefix: 'Varning: ',
+
+	// Form.Validator.Extras
+	noSpace: 'Det får inte finnas några mellanslag i detta fält.',
+	reqChkByNode: 'Inga objekt är valda.',
+	requiredChk: 'Detta är ett obligatoriskt fält.',
+	reqChkByName: 'Välj en {label}.',
+	match: 'Detta fält måste matcha {matchName}',
+	startDate: 'startdatumet',
+	endDate: 'slutdatum',
+	currendDate: 'dagens datum',
+	afterDate: 'Datumet bör vara samma eller senare än {label}.',
+	beforeDate: 'Datumet bör vara samma eller tidigare än {label}.',
+	startMonth: 'Välj en start månad',
+	sameMonth: 'Dessa två datum måste vara i samma månad - du måste ändra det ena eller det andra.'
+
+});
+
+
+/*
+---
+
+script: Form.Validator.Ukrainian.js
+
+name: Form.Validator.Ukrainian
+
+description: Form Validator messages in Ukrainian (utf-8).
+
+license: MIT-style license
+
+authors:
+  - Slik
+
+requires:
+  - /Lang
+
+provides: [Form.Validator.Ukrainian]
+
+...
+*/
+
+MooTools.lang.set('uk-UA', 'Form.Validator', {
+
+	required: 'Це поле повинне бути заповненим.',
+	minLength: 'Введіть хоча б {minLength} символів (Ви ввели {length}).',
+	maxLength: 'Кількість символів не може бути більше {maxLength} (Ви ввели {length}).',
+	integer: 'Введіть в це поле число. Дробові числа (наприклад 1.25) не дозволені.',
+	numeric: 'Введіть в це поле число (наприклад "1" або "1.1", або "-1", або "-1.1").',
+	digits: 'В цьому полі ви можете використовувати лише цифри і знаки пунктіації (наприклад, телефонний номер з знаками дефізу або з крапками).',
+	alpha: 'В цьому полі можна використовувати лише латинські літери (a-z). Пробіли і інші символи заборонені.',
+	alphanum: 'В цьому полі можна використовувати лише латинські літери (a-z) і цифри (0-9). Пробіли і інші символи заборонені.',
+	dateSuchAs: 'Введіть коректну дату {date}.',
+	dateInFormatMDY: 'Введіть дату в форматі ММ/ДД/РРРР (наприклад "12/31/2009").',
+	email: 'Введіть коректну адресу електронної пошти (наприклад "name@domain.com").',
+	url: 'Введіть коректне інтернет-посилання (наприклад http://www.google.com).',
+	currencyDollar: 'Введіть суму в доларах (наприклад "$100.00").',
+	oneRequired: 'Заповніть одне з полів.',
+	errorPrefix: 'Помилка: ',
+	warningPrefix: 'Увага: '
+
+});
Index: modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/corneeded.jsp
===================================================================
--- modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/corneeded.jsp	(nonexistent)
+++ modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/corneeded.jsp	(revision 47450)
@@ -0,0 +1,25 @@
+<%@ page contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<%@ taglib prefix="s" uri="/struts-tags"%>
+<html>
+<head>
+<link href="jsps/style.css" rel="stylesheet" type="text/css" media="screen" />
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title><s:text name="corneeded.title"/></title>
+</head>
+<body>
+<div id="wrapper">
+	<jsp:include page="menu.jsp"/>
+	<div id="page">
+	<div id="page-bgtop">
+		<div id="content">
+			<s:actionerror/>
+			<br>
+			<s:text name="corneeded.back"/>
+		</div>
+		<div style="clear: both;">&nbsp;</div>
+	</div>
+	</div>
+</div>
+</body>
+</html>
\ No newline at end of file
Index: modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/table-images/right.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/table-images/right.png
===================================================================
--- modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/table-images/right.png	(nonexistent)
+++ modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/table-images/right.png	(revision 47450)

Property changes on: modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/table-images/right.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/table-images/pattern.gif
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/table-images/pattern.gif
===================================================================
--- modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/table-images/pattern.gif	(nonexistent)
+++ modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/table-images/pattern.gif	(revision 47450)

Property changes on: modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/table-images/pattern.gif
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/table-images/back.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/table-images/back.png
===================================================================
--- modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/table-images/back.png	(nonexistent)
+++ modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/table-images/back.png	(revision 47450)

Property changes on: modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/table-images/back.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/images/external_link.gif
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/images/external_link.gif
===================================================================
--- modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/images/external_link.gif	(nonexistent)
+++ modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/images/external_link.gif	(revision 47450)

Property changes on: modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/images/external_link.gif
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/images/logo_openaire.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/images/logo_openaire.png
===================================================================
--- modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/images/logo_openaire.png	(nonexistent)
+++ modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/images/logo_openaire.png	(revision 47450)

Property changes on: modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/images/logo_openaire.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/images/help.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/images/help.png
===================================================================
--- modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/images/help.png	(nonexistent)
+++ modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/images/help.png	(revision 47450)

Property changes on: modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/images/help.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/table-images/left.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/table-images/left.png
===================================================================
--- modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/table-images/left.png	(nonexistent)
+++ modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/table-images/left.png	(revision 47450)

Property changes on: modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/table-images/left.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/menu.jsp
===================================================================
--- modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/menu.jsp	(nonexistent)
+++ modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/menu.jsp	(revision 47450)
@@ -0,0 +1,160 @@
+<%@ page contentType="text/html;charset=UTF-8" pageEncoding="UTF-8"%>
+<%@ taglib prefix="s" uri="/struts-tags"%>
+
+<link href="jsps/ddmenu.css" rel="stylesheet" type="text/css" media="screen" />
+<script src="jsps/js/ddmenu.js" type="text/javascript"></script>
+
+
+	<div id="header">
+	<div id="topmenu">
+		<ul>
+				<s:if test="%{#session.email == null}">
+					<li   style="float: right;">
+						<a href='<s:url action="go2login" />'><s:text name="menu.account.login" /></a>
+					</li>
+				</s:if>
+				
+				<s:else>
+					<li  style="float: right;">
+						<a href='<s:url action="logout" />'><s:text name="menu.account.logout" />(<s:property value="#session.email" />)</a>
+					</li>
+					<li  style="float: right;">
+						<a href='<s:url action="userDetails" />'><s:text name="menu.account.edit" /></a>
+					</li>
+				</s:else>
+		</ul>
+	</div>
+			<s:if test="%{deployEnvironment.trim().toLowerCase().equals(\"lareferencia\")}">
+				<div id="logoLareferencia"></div>
+			</s:if>
+			<s:else>
+				<div id="logo">
+					<a id="logo" href="https://www.openaire.eu">
+					<img src="jsps/images/openairepluslogo.png" alt="openairepluslogo" width="171" height="120">
+					</a>
+				</div>
+			</s:else>
+		<nav id="ddmenu">
+			<ul>
+				<li><a href='<s:url action="welcome" />'><s:text name="menu.home" /></a></li>
+				
+<%-- 						<s:if test="%{repoMode.trim().toLowerCase().equals(\"dnet\")}"> --%>
+				<li>
+					<s:text name="home.manageRules" />
+					<div>
+					<div class="column">
+						<s:if test="%{#session.isAdmin != null && #session.isAdmin.equals(\"true\")}">
+						
+							<a href='<s:url action="populateRuleCategories" />'>
+								<s:text name="home.manageRules.addRule" />
+							</a>
+							<a href='<s:url action="populateRuleListForEdit" />'>
+								<s:text name="home.manageRules.editRule" />
+							</a>
+							<a href='<s:url action="populateRuleListForClone" />'>
+								<s:text name="home.manageRules.cloneRule" />
+							</a>
+							<a href='<s:url action="populateRuleList" />'>
+								<s:text name="home.manageRules.deleteRule" />
+							</a>
+						</s:if>
+						<s:else>
+							<a href='<s:url action="populateRuleListForEdit" />'>
+								<s:text name="home.manageRules.viewRule" />
+							</a>
+						</s:else>
+					</div>
+					</div>					
+				</li>
+				
+				<li>
+					<s:text name="home.manageRulesets" />
+					<div>
+					<div class="column">
+						<s:if test="%{#session.isAdmin != null && #session.isAdmin.equals(\"true\")}">
+							<a href='<s:url action="getRulesForSet" />'>
+								<s:text name="home.manageRulesets.createRuleSet" />
+							</a>
+							<a href='<s:url action="getRuleSets" />'>
+								<s:text name="home.manageRulesets.editRuleSet" />
+							</a>
+							<a href='<s:url action="getRuleSetsForDeletion" />'>
+								<s:text name="home.manageRulesets.deleteRuleSet" />
+							</a>
+						</s:if>
+						<s:else>
+							<a href='<s:url action="getRuleSets" />'>
+								<s:text name="home.manageRulesets.viewRuleSet" />
+							</a>
+						</s:else>
+					</div>
+					</div>					
+				</li>
+				
+				
+				<li>
+					<s:text name="home.manageJobs" />
+					<div>
+					<div class="column">
+					  <s:if test="%{#session.isAdmin != null && #session.isAdmin.equals(\"true\")}">
+						<a href='<s:url action="deleteJobs" />'>
+							<s:text name="home.manageJobs.deleteJobs" />
+						</a>
+						
+							<s:if test="%{!deployEnvironment.trim().toLowerCase().equals(\"lareferencia\")}">
+							<a href='<s:url action="registrationsReport" />'>
+								<s:text name="home.manageJobs.sendReport" />
+							</a>
+							</s:if>
+					  </s:if>
+<%-- 					  		<s:if test="%{!deployEnvironment.trim().toLowerCase().equals(\"lareferencia\")}"> --%>
+<%-- 								<a href='<s:url action="getRuleSetsForDeletion" />'> --%>
+<%-- 									<s:text name="home.manageJobs.viewStats" /> --%>
+<!-- 								</a> -->
+<%-- 							</s:if> --%>
+					</div>
+					</div>					
+				</li>
+				
+				<s:if test="%{!deployEnvironment.trim().toLowerCase().equals(\"lareferencia\")}">
+					<s:if test="%{#session.isAdmin != null && #session.isAdmin.equals(\"true\")}">
+<!-- 						<li> -->
+<%-- 							<s:text name="home.manageUsers" /> --%>
+<!-- 							<div> -->
+<!-- 							<div class="column"> -->
+<%-- 								<a href='<s:url action="getRulesForSet" />'> --%>
+<%-- 									<s:text name="home.manageUsers.addUser" /> --%>
+<!-- 								</a> -->
+<%-- 								<a href='<s:url action="getRuleSets" />'> --%>
+<%-- 									<s:text name="home.manageUsers.editUser" /> --%>
+<!-- 								</a> -->
+<%-- 								<a href='<s:url action="getRuleSetsForDeletion" />'> --%>
+<%-- 									<s:text name="home.manageUsers.makeAdmin" /> --%>
+<!-- 								</a> -->
+<!-- 							</div> -->
+<!-- 							</div>					 -->
+<!-- 						</li> -->
+					</s:if>
+				</s:if>
+				<li>
+					<s:text name="menu.about" />
+					<div>
+					<div class="column">
+						<a href="http://www.openaire.eu//support/faq/repman" target="_blank">
+							<s:text name="menu.about.faq" />
+						</a>
+						<a href='<s:url action="help" />'>
+							<s:text name="menu.about.help" />
+						</a>
+						<a href='<s:url action="feedback" />'>
+							<s:text name="menu.about.feedback" />
+						</a>
+					</div>
+					</div>
+				</li>
+
+			</ul>
+			</nav>
+			
+			<div style="clear:both"></div>
+		</div>
Index: modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/help.jsp
===================================================================
--- modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/help.jsp	(nonexistent)
+++ modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/help.jsp	(revision 47450)
@@ -0,0 +1,43 @@
+<%@ page contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<%@ taglib prefix="s" uri="/struts-tags"%>
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title><s:text name="home.title"/></title>
+<link href="jsps/style.css" rel="stylesheet" type="text/css" media="screen" />
+
+ <link href="jsps/favicon.ico" rel="shortcut icon" type="image/x-icon" />
+</head>
+<body>
+<div id="wrapper">
+        <jsp:include page="menu.jsp"/>
+        <div id="page">
+        <div id="page-bgtop">
+                <div id="middle">
+            <div class="middle-b">
+                <div class="background">
+                                <div id="main">
+                        <div id="main_container" class="clearfix">
+                            <div id="mainmiddle" class="floatbox">
+                                    <h1><s:text name="instructions.welcome"/></h1>
+                                    <div class="entry">
+                                    	<s:text name="instructions.message"/>
+                                    </div>
+                             </div>
+                        </div>
+                    </div>
+                 </div>
+                        </div>
+                </div>
+                <div style="clear: both;">&nbsp;</div>
+        </div>
+    <!-- NMI This needs to be the same in all pages and the text is some properties file -->
+    <div id="footer">
+                <jsp:include page="footer.jsp"/>
+        </div>
+</div>
+</div>
+</body>
+</html>
+
Index: modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/fonts/DroidSans-webfont.svg
===================================================================
--- modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/fonts/DroidSans-webfont.svg	(nonexistent)
+++ modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/fonts/DroidSans-webfont.svg	(revision 47450)
@@ -0,0 +1,251 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" >
+<svg xmlns="http://www.w3.org/2000/svg">
+<metadata>
+This is a custom SVG webfont generated by Font Squirrel.
+Copyright   : Digitized data copyright  2007 Google Corporation
+Foundry     : Ascender Corporation
+Foundry URL : httpwwwascendercorpcom
+</metadata>
+<defs>
+<font id="DroidSansRegular" horiz-adv-x="1128" >
+<font-face units-per-em="2048" ascent="1638" descent="-410" />
+<missing-glyph horiz-adv-x="532" />
+<glyph unicode=" "  horiz-adv-x="532" />
+<glyph unicode="&#x09;" horiz-adv-x="532" />
+<glyph unicode="&#xa0;" horiz-adv-x="532" />
+<glyph unicode="!" horiz-adv-x="551" d="M147 111q0 38 10 64.5t27 43t40 24t50 7.5q26 0 49.5 -7.5t40.5 -24t27 -43t10 -64.5q0 -37 -10 -63.5t-27 -43.5t-40.5 -25t-49.5 -8q-27 0 -50 8t-40 25t-27 43.5t-10 63.5zM164 1462h223l-51 -1048h-121z" />
+<glyph unicode="&#x22;" horiz-adv-x="823" d="M133 1462h197l-41 -528h-115zM494 1462h196l-41 -528h-114z" />
+<glyph unicode="#" horiz-adv-x="1323" d="M51 428v137h285l65 328h-274v137h299l82 432h147l-82 -432h293l84 432h144l-84 -432h262v-137h-289l-63 -328h280v-137h-307l-82 -428h-147l84 428h-291l-82 -428h-144l78 428h-258zM483 565h291l64 328h-291z" />
+<glyph unicode="$" d="M123 172v172q33 -16 76.5 -32.5t91.5 -29.5t98.5 -21.5t97.5 -8.5v434q-89 30 -154.5 63t-108.5 75.5t-64 97.5t-21 129q0 67 24.5 122.5t70 97t110 68t143.5 35.5v180h138v-176q100 -5 184.5 -26t151.5 -52l-66 -145q-56 25 -126 45.5t-144 26.5v-422q88 -31 155.5 -64 t113 -74.5t68.5 -95t23 -125.5q0 -70 -25 -127t-71.5 -99t-113 -69.5t-150.5 -39.5v-230h-138v221q-50 0 -101 4.5t-99 13.5t-90 22t-74 30zM315 1049q0 -36 8.5 -64.5t28.5 -52t53 -42.5t82 -36v369q-89 -16 -130.5 -60.5t-41.5 -113.5zM625 262q93 14 138.5 63t45.5 121 q0 33 -10 60.5t-31.5 50t-56.5 41.5t-86 37v-373z" />
+<glyph unicode="%" horiz-adv-x="1690" d="M102 1026q0 108 17.5 193t54 143.5t93 89.5t134.5 31q75 0 131.5 -31t95 -89.5t58 -143.5t19.5 -193t-18 -194t-55 -145t-94.5 -90.5t-136.5 -31.5q-73 0 -129 31.5t-94 90.5t-57 145t-19 194zM250 1026q0 -165 35.5 -247.5t115.5 -82.5q156 0 156 330q0 328 -156 328 q-80 0 -115.5 -81.5t-35.5 -246.5zM362 0l812 1462h157l-811 -1462h-158zM985 440q0 108 17.5 193t54 143.5t93 89.5t134.5 31q75 0 131.5 -31t94.5 -89.5t57.5 -143.5t19.5 -193t-17.5 -193.5t-54.5 -144.5t-94.5 -90.5t-136.5 -31.5q-74 0 -130 31.5t-93.5 90.5 t-56.5 144.5t-19 193.5zM1133 440q0 -165 35.5 -247t115.5 -82q156 0 156 329q0 328 -156 328q-80 0 -115.5 -81.5t-35.5 -246.5z" />
+<glyph unicode="&#x26;" horiz-adv-x="1438" d="M109 381q0 78 20 139t58.5 111t94 93t126.5 85q-31 36 -61 74.5t-52.5 82t-36.5 93t-14 106.5q0 75 25 134.5t72 101t116 63t157 21.5q83 0 148.5 -21.5t111 -63t69.5 -101t24 -134.5q0 -64 -25 -118.5t-67 -101t-96.5 -86t-114.5 -75.5l352 -372q27 29 48.5 59t38.5 64 t30.5 73t23.5 86h184q-15 -66 -35.5 -121.5t-47 -104.5t-59 -91.5t-71.5 -83.5l277 -293h-225l-168 172q-49 -45 -97 -80.5t-102 -60t-116 -38t-140 -13.5q-105 0 -188.5 26.5t-141 78t-88 126t-30.5 170.5zM299 387q0 -54 17.5 -99.5t50.5 -78t81 -50.5t109 -18 q58 0 107 11.5t91 31.5t78 47t68 58l-387 407q-52 -33 -92 -64.5t-67.5 -67.5t-41.5 -78.5t-14 -98.5zM422 1165q0 -34 8 -66.5t24.5 -65t42.5 -66t62 -70.5q59 35 102 66t71 63t42 67t14 76q0 36 -12.5 66.5t-36 52.5t-56.5 34.5t-75 12.5q-86 0 -136 -44.5t-50 -125.5z " />
+<glyph unicode="'" horiz-adv-x="463" d="M133 1462h197l-41 -528h-115z" />
+<glyph unicode="(" horiz-adv-x="616" d="M82 561q0 125 18 246.5t55 236t93.5 220t134.5 198.5h172q-140 -193 -212.5 -424t-72.5 -475q0 -119 18.5 -237t54 -231t88.5 -219t122 -200h-170q-78 90 -134.5 193t-93.5 215.5t-55 232.5t-18 244z" />
+<glyph unicode=")" horiz-adv-x="616" d="M61 1462h172q78 -93 134.5 -198.5t94 -220t55.5 -236t18 -246.5q0 -124 -18 -244t-55.5 -232.5t-94 -215.5t-134.5 -193h-170q69 94 122 200t89 219t54 231t18 237q0 244 -72 475t-213 424z" />
+<glyph unicode="*" d="M82 1081l29 193l391 -111l-43 393h205l-43 -393l397 111l26 -193l-378 -28l245 -326l-178 -96l-176 358l-158 -358l-184 96l242 326z" />
+<glyph unicode="+" d="M102 647v150h387v389h150v-389h387v-150h-387v-385h-150v385h-387z" />
+<glyph unicode="," horiz-adv-x="512" d="M63 -264q15 61 29.5 127t28 131.5t24.5 128t19 115.5h198l15 -23q-14 -54 -33.5 -115t-43 -123t-49 -123.5t-50.5 -117.5h-138z" />
+<glyph unicode="-" horiz-adv-x="659" d="M82 465v168h496v-168h-496z" />
+<glyph unicode="." horiz-adv-x="549" d="M147 111q0 38 10 64.5t27 43t40 24t50 7.5q26 0 49.5 -7.5t40.5 -24t27 -43t10 -64.5q0 -37 -10 -63.5t-27 -43.5t-40.5 -25t-49.5 -8q-27 0 -50 8t-40 25t-27 43.5t-10 63.5z" />
+<glyph unicode="/" horiz-adv-x="764" d="M20 0l545 1462h178l-544 -1462h-179z" />
+<glyph unicode="0" d="M98 733q0 177 25.5 317t81 236.5t144 147.5t214.5 51q119 0 207 -50.5t146 -147t87 -236.5t29 -318q0 -177 -25.5 -317t-82 -237t-145.5 -148t-216 -51q-118 0 -205.5 51t-145 148t-86 237t-28.5 317zM283 733q0 -150 15 -262t48 -186.5t86.5 -112t130.5 -37.5t131 37 t88.5 111t50 186.5t15.5 263.5q0 150 -15.5 262t-50 186t-88.5 111t-131 37t-130.5 -37t-86.5 -111t-48 -186t-15 -262z" />
+<glyph unicode="1" d="M178 1163l383 299h150v-1462h-176v913q0 43 0.5 92t2 97.5t3 93t2.5 78.5q-17 -18 -30 -31t-26.5 -25t-28.5 -25.5t-36 -31.5l-148 -121z" />
+<glyph unicode="2" d="M96 0v156l350 381q75 81 134 148t100.5 131t63.5 128.5t22 140.5q0 59 -17 104t-48.5 76.5t-74.5 47.5t-96 16q-95 0 -171.5 -38.5t-145.5 -98.5l-102 119q40 36 86 67.5t99 54.5t112 36.5t124 13.5q96 0 173.5 -27t131.5 -77.5t83.5 -123t29.5 -163.5q0 -85 -26.5 -162 t-73 -151.5t-111 -149.5t-139.5 -156l-281 -299v-8h689v-166h-912z" />
+<glyph unicode="3" d="M82 59v170q87 -46 188.5 -71t194.5 -25q92 0 159 20t110.5 57t64 91t20.5 121q0 68 -26.5 116.5t-75.5 80t-119.5 46.5t-159.5 15h-133v151h133q81 0 144 20t105.5 57t64.5 88t22 112q0 52 -18 93t-51 69.5t-79 43.5t-102 15q-107 0 -188.5 -33.5t-155.5 -87.5l-92 125 q38 31 84.5 58t101.5 47.5t117.5 32.5t132.5 12q108 0 189.5 -27t136.5 -75.5t83 -115t28 -145.5q0 -73 -23 -133t-64.5 -104t-99.5 -72.5t-129 -40.5v-6q177 -22 269 -112.5t92 -235.5q0 -96 -32.5 -176t-98.5 -138t-167 -90t-239 -32q-109 0 -205.5 17t-181.5 62z" />
+<glyph unicode="4" d="M23 328v159l663 983h188v-976h213v-166h-213v-328h-176v328h-675zM201 494h497v356q0 56 1.5 117.5t3.5 120t4.5 109.5t3.5 85h-9q-7 -20 -17.5 -44.5t-23 -49t-25.5 -47.5t-24 -39z" />
+<glyph unicode="5" d="M131 59v172q33 -23 77.5 -41t93.5 -30t98.5 -18.5t91.5 -6.5q79 0 141 18.5t105 57.5t66 98t23 140q0 143 -88 218.5t-256 75.5q-27 0 -58.5 -2.5t-63 -6.5t-60 -8.5t-49.5 -8.5l-90 57l55 688h690v-166h-532l-39 -419q32 6 84.5 13t124.5 7q99 0 184.5 -27.5t149 -81.5 t99.5 -134t36 -185q0 -114 -34 -205t-101 -154t-165.5 -96.5t-226.5 -33.5q-51 0 -100.5 5t-95 14.5t-86.5 24.5t-74 35z" />
+<glyph unicode="6" d="M113 625q0 105 10.5 209t37 199.5t72.5 177.5t117 142.5t170 95t232 34.5q19 0 42 -1t46.5 -3.5t45 -6t38.5 -8.5v-155q-35 12 -79 18t-87 6q-90 0 -158.5 -21.5t-118.5 -60.5t-83.5 -93t-54.5 -119.5t-31 -139.5t-13 -154h12q20 36 48.5 67.5t66.5 54t85.5 35.5 t106.5 13q95 0 172 -29.5t131 -86.5t83.5 -139.5t29.5 -188.5q0 -114 -31 -205t-89 -154.5t-140 -97.5t-184 -34q-100 0 -187.5 39t-151.5 119t-101 201t-37 286zM295 506q0 -67 18.5 -133.5t55 -119.5t91.5 -86.5t128 -33.5q60 0 109.5 20.5t85.5 62t55.5 105t19.5 150.5 q0 70 -16.5 125.5t-49.5 94.5t-82.5 60t-115.5 21q-67 0 -122.5 -23.5t-94.5 -61t-60.5 -85.5t-21.5 -96z" />
+<glyph unicode="7" d="M90 1296v166h940v-145l-555 -1317h-194l563 1296h-754z" />
+<glyph unicode="8" d="M106 373q0 75 22.5 135t60.5 108t90 85t110 65q-49 31 -92 67.5t-74.5 81.5t-50 99.5t-18.5 120.5q0 87 33.5 152.5t90.5 109.5t131.5 66t155.5 22q84 0 158.5 -22t131 -66t89.5 -110t33 -154q0 -67 -20 -121t-55 -97.5t-83 -78t-104 -62.5q58 -31 113.5 -69t99 -85.5 t70 -106.5t26.5 -132q0 -92 -33.5 -166.5t-94 -126.5t-145 -80t-186.5 -28q-110 0 -195.5 27t-144 77.5t-89 123.5t-30.5 165zM285 371q0 -53 16 -97.5t50 -76t86 -49t124 -17.5q70 0 123.5 17.5t89.5 50t54 78.5t18 102q0 52 -19.5 94t-56 78t-87.5 68t-114 63l-30 14 q-126 -60 -190 -137.5t-64 -187.5zM332 1126q0 -57 17.5 -98t48.5 -73t74.5 -57.5t94.5 -49.5q48 22 90.5 48t74 59t49.5 75t18 96q0 101 -63 154t-173 53q-106 0 -168.5 -53t-62.5 -154z" />
+<glyph unicode="9" d="M106 991q0 114 31.5 205.5t89 155t140 97.5t184.5 34q101 0 188 -39t151 -119t101 -201.5t37 -285.5q0 -105 -10.5 -209.5t-37 -199.5t-72.5 -177.5t-117 -142.5t-170 -94.5t-232 -34.5q-19 0 -42 1t-46 3.5t-45 5.5t-39 8v156q35 -13 79 -19t87 -6q135 0 222 47 t138 127.5t72.5 187.5t26.5 226h-13q-20 -36 -48 -67t-66 -54t-86 -36t-107 -13q-95 0 -172 29.5t-131 86.5t-83.5 139.5t-29.5 188.5zM283 991q0 -70 16.5 -125.5t49.5 -94.5t82.5 -60t115.5 -21q68 0 123 23.5t94 61t60.5 85.5t21.5 96q0 67 -18.5 133.5t-55 120 t-91.5 86.5t-128 33q-60 0 -109.5 -20t-85.5 -62t-55.5 -105.5t-19.5 -150.5z" />
+<glyph unicode=":" horiz-adv-x="549" d="M147 111q0 38 10 64.5t27 43t40 24t50 7.5q26 0 49.5 -7.5t40.5 -24t27 -43t10 -64.5q0 -37 -10 -63.5t-27 -43.5t-40.5 -25t-49.5 -8q-27 0 -50 8t-40 25t-27 43.5t-10 63.5zM147 987q0 39 10 65.5t27 43t40 23.5t50 7q26 0 49.5 -7t40.5 -23.5t27 -43t10 -65.5 q0 -37 -10 -63t-27 -43t-40.5 -25t-49.5 -8q-27 0 -50 8t-40 25t-27 43t-10 63z" />
+<glyph unicode=";" horiz-adv-x="549" d="M63 -264q15 61 29.5 127t28 131.5t24.5 128t19 115.5h198l15 -23q-14 -54 -33.5 -115t-43 -123t-49 -123.5t-50.5 -117.5h-138zM147 987q0 39 10 65.5t27 43t40 23.5t50 7q26 0 49.5 -7t40.5 -23.5t27 -43t10 -65.5q0 -37 -10 -63t-27 -43t-40.5 -25t-49.5 -8 q-27 0 -50 8t-40 25t-27 43t-10 63z" />
+<glyph unicode="&#x3c;" d="M102 662v102l924 481v-160l-735 -364l735 -322v-161z" />
+<glyph unicode="=" d="M102 442v150h924v-150h-924zM102 852v149h924v-149h-924z" />
+<glyph unicode="&#x3e;" d="M102 238v161l736 322l-736 364v160l924 -481v-102z" />
+<glyph unicode="?" horiz-adv-x="872" d="M37 1382q81 42 175 71.5t191 29.5q93 0 167.5 -25.5t126.5 -73.5t80 -117.5t28 -156.5q0 -67 -13.5 -119.5t-40.5 -97.5t-67 -87t-94 -89q-52 -45 -85 -78.5t-52 -65t-26 -64.5t-7 -77v-18h-139v37q0 57 7.5 103t27 86t52.5 78.5t83 80.5q48 41 82 74.5t55.5 68t32 74 t10.5 92.5q0 48 -15 87.5t-43.5 68t-71 44t-98.5 15.5q-83 0 -158 -26t-145 -60zM233 111q0 38 10 64.5t27 43t40 24t50 7.5q26 0 49.5 -7.5t40.5 -24t27 -43t10 -64.5q0 -37 -10 -63.5t-27 -43.5t-40.5 -25t-49.5 -8q-27 0 -50 8t-40 25t-27 43.5t-10 63.5z" />
+<glyph unicode="@" horiz-adv-x="1774" d="M109 575q0 188 59 350.5t168.5 281.5t265 187t348.5 68q156 0 287 -50.5t226.5 -145t148.5 -230t53 -305.5q0 -62 -9.5 -124.5t-28 -119t-47 -105t-66.5 -84.5t-86.5 -56.5t-106.5 -20.5q-45 0 -81.5 15t-62.5 40t-42.5 57.5t-22.5 67.5h-4q-18 -37 -45 -70t-62.5 -57.5 t-80 -38.5t-97.5 -14q-77 0 -136.5 28t-100.5 78.5t-62.5 121.5t-21.5 157q0 101 29.5 185t85 145t134.5 95t177 34q45 0 90 -4t86 -11t75.5 -15.5t57.5 -16.5l-23 -416q-1 -22 -1.5 -35.5t-0.5 -21.5v-12v-7q0 -53 10.5 -87t27.5 -54t38.5 -27.5t44.5 -7.5q46 0 81 30.5 t58.5 82.5t35.5 122t12 148q0 142 -43 252.5t-119 186.5t-180.5 115.5t-227.5 39.5q-169 0 -298 -55.5t-216.5 -155t-132.5 -236t-45 -298.5q0 -151 39.5 -268t116 -197t190 -121t260.5 -41q61 0 120.5 7t115 19t105.5 27.5t93 32.5v-141q-86 -38 -194 -60t-238 -22 q-179 0 -319.5 51t-238 148.5t-148.5 238t-51 319.5zM662 602q0 -133 50.5 -192.5t135.5 -59.5q55 0 94 22.5t64 64t38 99t17 126.5l14 253q-28 8 -66.5 14.5t-80.5 6.5q-74 0 -124.5 -29t-82 -76t-45.5 -107t-14 -122z" />
+<glyph unicode="A" horiz-adv-x="1245" d="M0 0l537 1468h170l538 -1468h-190l-160 453h-545l-162 -453h-188zM410 618h426l-148 424q-6 18 -14.5 44t-17.5 56t-18 62.5t-17 63.5q-7 -31 -16 -64t-18 -63.5t-17.5 -56t-14.5 -42.5z" />
+<glyph unicode="B" horiz-adv-x="1272" d="M199 0v1462h399q128 0 225.5 -19.5t163 -63t98.5 -114t33 -173.5q0 -62 -19.5 -116t-56.5 -95t-91.5 -68.5t-123.5 -36.5v-10q69 -12 129.5 -34.5t105.5 -62t71 -99.5t26 -146q0 -100 -32.5 -178.5t-94 -133t-149.5 -83.5t-199 -29h-485zM385 158h266q88 0 147.5 20 t96 56t52.5 86.5t16 111.5q0 56 -16.5 103t-54 80.5t-99.5 52t-154 18.5h-254v-528zM385 842h244q84 0 141 15t92 44.5t50.5 74t15.5 103.5q0 120 -77 172t-243 52h-223v-461z" />
+<glyph unicode="C" horiz-adv-x="1235" d="M125 733q0 166 43.5 304t128 237t209.5 154t287 55q108 0 206 -22t177 -64l-78 -156q-63 32 -137 55t-168 23q-107 0 -194 -40.5t-148.5 -116.5t-95 -185t-33.5 -246q0 -141 29.5 -250.5t88.5 -184.5t147 -114t206 -39q89 0 169 17.5t158 40.5v-162q-39 -15 -78 -26.5 t-81.5 -18.5t-91 -10.5t-107.5 -3.5q-164 0 -284 54t-198.5 153t-116.5 238t-38 308z" />
+<glyph unicode="D" horiz-adv-x="1401" d="M199 0v1462h407q153 0 277 -46t211 -136.5t134.5 -224.5t47.5 -310q0 -185 -48 -324.5t-139 -233t-223.5 -140.5t-300.5 -47h-366zM385 160h162q264 0 398 146t134 433q0 146 -33 252.5t-96 175.5t-155 102.5t-209 33.5h-201v-1143z" />
+<glyph unicode="E" horiz-adv-x="1081" d="M199 0v1462h759v-164h-573v-452h535v-162h-535v-520h573v-164h-759z" />
+<glyph unicode="F" horiz-adv-x="1006" d="M199 0v1462h759v-164h-573v-516h535v-164h-535v-618h-186z" />
+<glyph unicode="G" horiz-adv-x="1413" d="M125 733q0 172 47.5 311t138.5 236.5t224.5 150t304.5 52.5q111 0 213 -22t190 -64l-72 -162q-36 17 -77.5 32t-85.5 26.5t-90.5 18.5t-92.5 7q-122 0 -216 -40.5t-157.5 -116.5t-96.5 -185t-33 -246q0 -130 27.5 -238t87.5 -186t155 -121t229 -43q44 0 80.5 2.5 t67.5 6.5t58.5 9.5t53.5 10.5v436h-299v164h484v-717q-55 -18 -111 -32t-115 -23.5t-124 -14.5t-140 -5q-157 0 -278 52.5t-204 150t-126 237t-43 313.5z" />
+<glyph unicode="H" horiz-adv-x="1436" d="M199 0v1462h186v-616h666v616h186v-1462h-186v682h-666v-682h-186z" />
+<glyph unicode="I" horiz-adv-x="694" d="M82 0v102l172 41v1176l-172 41v102h530v-102l-172 -41v-1176l172 -41v-102h-530z" />
+<glyph unicode="J" horiz-adv-x="555" d="M-184 -205q34 -9 73 -14.5t84 -5.5q37 0 74.5 9.5t68 34.5t49.5 69t19 112v1462h187v-1442q0 -105 -29.5 -182t-82 -127.5t-126 -75t-162.5 -24.5q-51 0 -89 6.5t-66 17.5v160z" />
+<glyph unicode="K" horiz-adv-x="1186" d="M199 0v1462h186v-731l121 168l452 563h209l-520 -637l539 -825h-211l-451 698l-139 -114v-584h-186z" />
+<glyph unicode="L" horiz-adv-x="1006" d="M199 0v1462h186v-1296h573v-166h-759z" />
+<glyph unicode="M" horiz-adv-x="1782" d="M199 0v1462h276l412 -1192h6l414 1192h276v-1462h-186v887q0 52 2 119t5 128q4 71 7 144h-8l-447 -1278h-153l-443 1280h-8q6 -74 10 -147q4 -63 6.5 -132.5t2.5 -126.5v-874h-172z" />
+<glyph unicode="N" horiz-adv-x="1493" d="M199 0v1462h213l716 -1204h7q-3 76 -7 150q0 32 -2 66l-4 66q-2 34 -2 65v57v800h174v-1462h-215l-719 1210h-8q6 -77 10 -153q4 -65 6.5 -136t2.5 -128v-793h-172z" />
+<glyph unicode="O" horiz-adv-x="1520" d="M125 735q0 170 38 308.5t117 236.5t199 151.5t283 53.5q155 0 272.5 -53.5t197.5 -152t120.5 -237t40.5 -309.5q0 -169 -40.5 -308t-120.5 -238t-198.5 -153t-273.5 -54q-163 0 -282.5 54t-198 153t-116.5 238.5t-38 309.5zM322 733q0 -137 26 -246.5t79.5 -186t136 -117 t196.5 -40.5t196.5 40.5t136 117t78.5 186t25 246.5q0 138 -25 247t-78 184.5t-135 116t-196 40.5t-197 -40.5t-137 -116t-80 -184.5t-26 -247z" />
+<glyph unicode="P" horiz-adv-x="1180" d="M199 0v1462h362q134 0 231 -28.5t160 -83t93 -134.5t30 -182q0 -91 -27.5 -175t-90.5 -148.5t-166.5 -103t-255.5 -38.5h-150v-569h-186zM385 727h129q93 0 162.5 16t115 51.5t68.5 92t23 137.5q0 142 -82 210.5t-256 68.5h-160v-576z" />
+<glyph unicode="Q" horiz-adv-x="1518" d="M125 735q0 170 38 308.5t117 236.5t199 151.5t283 53.5q155 0 272.5 -53.5t197.5 -152t120.5 -237t40.5 -309.5q0 -131 -24.5 -244t-72 -203.5t-118.5 -156.5t-164 -104q43 -94 111.5 -165.5t158.5 -131.5l-121 -142q-103 73 -189.5 172t-137.5 226q-17 -2 -37.5 -3 t-38.5 -1q-163 0 -282.5 54t-198 153t-116.5 238.5t-38 309.5zM322 733q0 -137 26 -246.5t79.5 -186t136 -117t196.5 -40.5t196.5 40.5t136 117t78.5 186t25 246.5q0 138 -25 247t-78 184.5t-135 116t-196 40.5t-197 -40.5t-137 -116t-80 -184.5t-26 -247z" />
+<glyph unicode="R" horiz-adv-x="1208" d="M199 0v1462h356q266 0 393 -103t127 -312q0 -87 -24.5 -152t-65 -111.5t-92.5 -77.5t-107 -51l398 -655h-219l-351 604h-229v-604h-186zM385 762h164q90 0 153 17.5t103.5 52t59 86t18.5 120.5q0 72 -20.5 122t-62 82t-105 46.5t-150.5 14.5h-160v-541z" />
+<glyph unicode="S" horiz-adv-x="1063" d="M104 49v178q34 -16 77.5 -31.5t91.5 -27.5t99 -19.5t101 -7.5q160 0 236.5 60t76.5 172q0 54 -14.5 94t-51 73.5t-97.5 65t-154 68.5q-89 35 -154.5 76.5t-108 93.5t-63 118t-20.5 150q0 88 32 157t90 116.5t138.5 72.5t177.5 25q119 0 214 -22.5t169 -57.5l-67 -156 q-65 29 -147.5 50.5t-170.5 21.5q-122 0 -189 -56.5t-67 -152.5q0 -57 15 -98.5t50 -75t92.5 -63t141.5 -62.5q91 -36 159.5 -74t114.5 -86t69.5 -111t23.5 -149q0 -97 -34.5 -173.5t-98.5 -129.5t-156 -80.5t-207 -27.5q-111 0 -207.5 17.5t-161.5 51.5z" />
+<glyph unicode="T" horiz-adv-x="1063" d="M20 1298v164h1022v-164h-417v-1298h-187v1298h-418z" />
+<glyph unicode="U" horiz-adv-x="1430" d="M184 520v942h187v-952q0 -175 86.5 -271t261.5 -96q89 0 153 27t105 76t61 117t21 149v952h186v-948q0 -114 -33 -212t-99.5 -170t-167 -113t-236.5 -41q-128 0 -226 38.5t-164.5 109.5t-100.5 170.5t-34 221.5z" />
+<glyph unicode="V" horiz-adv-x="1163" d="M0 1462h197l295 -927q29 -91 50 -175.5t38 -158.5q15 74 38 158.5t54 181.5l293 921h198l-489 -1462h-187z" />
+<glyph unicode="W" horiz-adv-x="1810" d="M20 1462h197l223 -889q12 -46 22 -95.5t18.5 -98.5t15.5 -94.5t12 -83.5q5 37 12.5 86t17.5 103t21.5 109.5t24.5 104.5l225 858h197l229 -856q15 -56 29.5 -112t27 -108.5t22 -99.5t15.5 -85q4 38 10 83t14 94.5t17.5 101t20.5 100.5l200 882h199l-367 -1462h-188 l-254 938q-14 51 -27 105t-24 101q-12 55 -23 107q-11 -51 -22 -106q-10 -47 -22.5 -103t-26.5 -110l-242 -932h-188z" />
+<glyph unicode="X" horiz-adv-x="1120" d="M0 0l453 764l-422 698h198l332 -559l334 559h190l-421 -692l456 -770h-211l-354 635l-367 -635h-188z" />
+<glyph unicode="Y" horiz-adv-x="1079" d="M0 1462h203l336 -739l340 739h200l-446 -893v-569h-187v559z" />
+<glyph unicode="Z" horiz-adv-x="1104" d="M82 0v145l711 1151h-691v166h899v-145l-710 -1151h731v-166h-940z" />
+<glyph unicode="[" horiz-adv-x="621" d="M164 -324v1786h405v-149h-223v-1487h223v-150h-405z" />
+<glyph unicode="\" horiz-adv-x="764" d="M23 1462h178l544 -1462h-178z" />
+<glyph unicode="]" horiz-adv-x="621" d="M51 -174h223v1487h-223v149h406v-1786h-406v150z" />
+<glyph unicode="^" horiz-adv-x="1090" d="M41 549l459 924h102l447 -924h-161l-337 735l-349 -735h-161z" />
+<glyph unicode="_" horiz-adv-x="842" d="M-4 -184h850v-140h-850v140z" />
+<glyph unicode="`" horiz-adv-x="1182" d="M393 1548v21h219q16 -34 37.5 -74.5t44.5 -81t47 -78.5t45 -67v-27h-120q-35 28 -76 69.5t-79.5 85.5t-70 84.5t-47.5 67.5z" />
+<glyph unicode="a" horiz-adv-x="1087" d="M94 307q0 164 115.5 252t351.5 96l184 7v69q0 67 -14.5 112t-42 72.5t-68 39.5t-92.5 12q-83 0 -154.5 -24t-137.5 -58l-64 137q74 40 165 68t191 28q102 0 176.5 -20.5t123 -65t72.5 -113.5t24 -167v-752h-131l-37 152h-8q-33 -45 -66 -77.5t-72 -53.5t-87 -31t-111 -10 q-69 0 -127 19.5t-100.5 60t-66.5 102t-24 145.5zM283 305q0 -92 48.5 -135t127.5 -43q61 0 113 19t90 57.5t59.5 97t21.5 137.5v99l-143 -7q-90 -4 -151 -20t-97.5 -44.5t-52.5 -69t-16 -91.5z" />
+<glyph unicode="b" horiz-adv-x="1200" d="M174 0v1556h182v-376q0 -35 -1 -74.5t-3 -73.5q-2 -40 -4 -78h8q23 35 52 65t67.5 52t86.5 34.5t108 12.5q94 0 171 -36t131.5 -107.5t84.5 -177.5t30 -246q0 -141 -30 -247.5t-84.5 -178.5t-131.5 -108.5t-171 -36.5q-59 0 -107 13t-86.5 34.5t-68 50.5t-52.5 61h-12 l-37 -139h-133zM356 551q0 -101 13.5 -179.5t46 -132t86.5 -81t135 -27.5q135 0 198.5 109t63.5 313q0 208 -63.5 311t-200.5 103q-80 0 -133.5 -25.5t-86 -77.5t-46 -130t-13.5 -183z" />
+<glyph unicode="c" horiz-adv-x="948" d="M113 543q0 157 38 266.5t104.5 178t155.5 99.5t191 31q78 0 152.5 -17t124.5 -42l-54 -154q-23 10 -51 19.5t-58 17t-59 12t-55 4.5q-157 0 -229 -100.5t-72 -312.5q0 -211 72.5 -308.5t220.5 -97.5q81 0 146.5 18.5t119.5 43.5v-162q-54 -29 -115.5 -44t-150.5 -15 q-101 0 -189 31.5t-153 100t-102 175t-37 256.5z" />
+<glyph unicode="d" horiz-adv-x="1200" d="M113 547q0 141 30 247.5t85 178.5t132 108.5t170 36.5q59 0 107 -13t86.5 -35t68.5 -51t52 -61h12q-3 34 -6 65q-2 26 -4 53.5t-2 43.5v436h182v-1556h-147l-27 147h-8q-22 -34 -51.5 -64.5t-68 -53.5t-86.5 -36t-108 -13q-93 0 -170 36t-132 107.5t-85 177.5t-30 246z M301 545q0 -209 63.5 -311.5t200.5 -102.5q76 0 128.5 23t85 70t48 117.5t17.5 164.5v41q0 101 -13.5 179.5t-46 132t-86.5 81t-135 27.5q-135 0 -198.5 -109t-63.5 -313z" />
+<glyph unicode="e" horiz-adv-x="1096" d="M113 541q0 136 33 243t93 181.5t143.5 113.5t184.5 39q99 0 178 -35.5t134 -100t84.5 -155t29.5 -200.5v-113h-692q5 -193 81.5 -284t227.5 -91q51 0 94.5 5t84 14.5t78.5 24t77 32.5v-162q-40 -19 -78.5 -33t-79 -23t-84 -13t-94.5 -4q-110 0 -201 37t-156.5 108 t-101.5 176t-36 240zM305 662h492q0 68 -13.5 124.5t-42 96.5t-72.5 62t-106 22q-114 0 -180.5 -78t-77.5 -227z" />
+<glyph unicode="f" horiz-adv-x="674" d="M29 961v75l194 68v96q0 107 22.5 177.5t65 112.5t104.5 59.5t140 17.5q59 0 108.5 -11.5t88.5 -25.5l-47 -141q-31 11 -67.5 19.5t-76.5 8.5t-69 -9.5t-48 -33.5t-28.5 -65.5t-9.5 -106.5v-104h245v-137h-245v-961h-183v961h-194z" />
+<glyph unicode="g" horiz-adv-x="1061" d="M37 -186q0 60 19.5 105.5t52.5 78.5t76.5 54t90.5 32q-42 19 -69 60t-27 94q0 61 32 105.5t101 86.5q-43 18 -78.5 49.5t-60 72t-38 88.5t-13.5 99q0 89 25 159t74 119t122 75t170 26q37 0 76.5 -5.5t66.5 -14.5h363v-113l-197 -27q28 -35 47 -89.5t19 -123.5 q0 -76 -23.5 -140.5t-71 -111.5t-117.5 -73.5t-163 -26.5q-22 0 -44 0.5t-36 3.5q-17 -10 -33.5 -22.5t-30 -28.5t-22 -36t-8.5 -44q0 -27 12 -43.5t32.5 -25.5t48.5 -12t59 -3h176q93 0 157 -23.5t104.5 -63.5t58.5 -94.5t18 -115.5q0 -88 -32.5 -158t-99.5 -118.5 t-169.5 -74.5t-241.5 -26q-107 0 -187 21t-133 61t-79.5 96.5t-26.5 127.5zM209 -180q0 -37 13 -69t42.5 -55t78 -36.5t120.5 -13.5q186 0 278.5 57.5t92.5 165.5q0 46 -12 75t-39.5 45.5t-72.5 22.5t-110 6h-176q-35 0 -73 -8t-69.5 -30t-52 -60.5t-20.5 -99.5zM301 745 q0 -115 54 -171t153 -56q100 0 151.5 55.5t51.5 174.5q0 123 -52.5 181t-152.5 58q-99 0 -152 -60t-53 -182z" />
+<glyph unicode="h" horiz-adv-x="1206" d="M174 0v1556h182v-462l-8 -144h10q25 43 59.5 74.5t75.5 52.5t87 31t94 10q183 0 275.5 -95.5t92.5 -305.5v-717h-182v707q0 130 -52.5 195t-164.5 65q-81 0 -136 -26t-88.5 -77t-48 -125t-14.5 -170v-569h-182z" />
+<glyph unicode="i" horiz-adv-x="530" d="M160 1395q0 60 30.5 87t75.5 27q22 0 41.5 -6.5t34 -20.5t23 -35.5t8.5 -51.5q0 -58 -31.5 -86.5t-75.5 -28.5q-45 0 -75.5 28t-30.5 87zM174 0v1098h182v-1098h-182z" />
+<glyph unicode="j" horiz-adv-x="530" d="M-68 -319q26 -10 53 -15.5t62 -5.5q27 0 50 7.5t40.5 27t27 52t9.5 83.5v1268h182v-1256q0 -77 -17 -138.5t-53 -105t-90.5 -67t-129.5 -23.5q-48 0 -79.5 7t-54.5 18v148zM160 1395q0 60 30.5 87t75.5 27q22 0 41.5 -6.5t34 -20.5t23 -35.5t8.5 -51.5q0 -58 -31.5 -86.5 t-75.5 -28.5q-45 0 -75.5 28t-30.5 87z" />
+<glyph unicode="k" horiz-adv-x="1016" d="M174 0v1556h180v-714l-16 -275h4l135 170l293 361h211l-401 -475l428 -623h-209l-336 504l-109 -82v-422h-180z" />
+<glyph unicode="l" horiz-adv-x="530" d="M174 0v1556h182v-1556h-182z" />
+<glyph unicode="m" horiz-adv-x="1835" d="M174 0v1098h148l26 -148h10q24 43 57 74.5t72.5 52.5t84 31t90.5 10q120 0 199.5 -44t117.5 -138h8q26 47 62.5 81t80 56.5t91.5 33.5t98 11q175 0 263.5 -95.5t88.5 -305.5v-717h-182v707q0 130 -50 195t-155 65q-73 0 -124 -23.5t-83.5 -69t-47.5 -113t-15 -155.5v-606 h-183v707q0 130 -49.5 195t-154.5 65q-77 0 -129 -26t-83.5 -77t-45 -125t-13.5 -170v-569h-182z" />
+<glyph unicode="n" horiz-adv-x="1206" d="M174 0v1098h148l26 -148h10q25 43 59.5 74.5t75.5 52.5t87 31t94 10q183 0 275.5 -95.5t92.5 -305.5v-717h-182v707q0 130 -52.5 195t-164.5 65q-81 0 -136 -26t-88.5 -77t-48 -125t-14.5 -170v-569h-182z" />
+<glyph unicode="o" horiz-adv-x="1182" d="M113 551q0 136 33.5 241.5t95.5 178t151.5 110t200.5 37.5q103 0 190 -37.5t150.5 -110t99 -178t35.5 -241.5q0 -137 -33.5 -243.5t-96 -179t-151.5 -110.5t-200 -38q-103 0 -190 38t-150.5 110.5t-99 179t-35.5 243.5zM301 551q0 -209 68.5 -314.5t222.5 -105.5 t221.5 105.5t67.5 314.5t-68.5 312.5t-222.5 103.5t-221.5 -103.5t-67.5 -312.5z" />
+<glyph unicode="p" horiz-adv-x="1200" d="M174 -492v1590h148l26 -148h8q23 35 52 65.5t67.5 53t86.5 36t108 13.5q94 0 171 -36t131.5 -107.5t84.5 -177.5t30 -246q0 -141 -30 -247.5t-84.5 -178.5t-131.5 -108.5t-171 -36.5q-59 0 -107 13t-86.5 34.5t-68 50.5t-52.5 61h-12q3 -34 6 -65q2 -26 4 -53.5t2 -43.5 v-469h-182zM356 551q0 -101 13.5 -179.5t46 -132t86.5 -81t135 -27.5q135 0 198.5 109t63.5 313q0 208 -63.5 311t-200.5 103q-76 0 -128.5 -23t-85 -70t-48 -117t-17.5 -165v-41z" />
+<glyph unicode="q" horiz-adv-x="1200" d="M113 547q0 141 30 247.5t85 178.5t132 108.5t170 36.5q59 0 107 -13.5t86 -36t68 -53t53 -65.5h8l27 148h147v-1590h-182v469q0 19 2 48t4 56q3 32 6 66h-12q-22 -34 -51.5 -64.5t-68 -53.5t-86.5 -36t-108 -13q-93 0 -170 36t-132 107.5t-85 177.5t-30 246zM301 545 q0 -209 63.5 -311.5t200.5 -102.5q76 0 128.5 23t85 70t48 117.5t17.5 164.5v41q0 101 -13.5 179.5t-46 132t-86.5 81t-135 27.5q-135 0 -198.5 -109t-63.5 -313z" />
+<glyph unicode="r" horiz-adv-x="817" d="M174 0v1098h148l22 -201h8q25 43 53.5 83t64 70.5t79.5 49t100 18.5q29 0 65 -2.5t62 -7.5l-24 -168q-28 5 -57.5 8.5t-55.5 3.5q-63 0 -115 -25.5t-89.5 -73t-58 -114t-20.5 -147.5v-592h-182z" />
+<glyph unicode="s" horiz-adv-x="924" d="M90 49v166q31 -16 69 -31.5t80 -27.5t86.5 -19.5t88.5 -7.5q65 0 110.5 11t74 31.5t41.5 50t13 65.5q0 31 -10 56t-36.5 49.5t-72.5 49.5t-118 56t-129.5 61t-97.5 67t-61.5 85.5t-21.5 115.5q0 70 27.5 124.5t77.5 91.5t120 56t156 19q97 0 177.5 -21t152.5 -55 l-63 -147q-65 29 -133.5 50.5t-139.5 21.5q-102 0 -151 -33.5t-49 -95.5q0 -35 11.5 -61t39.5 -49t75 -46.5t117 -52.5q72 -30 128.5 -60t96.5 -67.5t61 -85.5t21 -115q0 -80 -29 -140t-83.5 -100.5t-131.5 -60.5t-173 -20q-109 0 -187 17.5t-137 51.5z" />
+<glyph unicode="t" horiz-adv-x="694" d="M33 961v81l155 78l78 230h105v-252h276v-137h-276v-637q0 -97 31.5 -146t103.5 -49q18 0 40.5 2t43.5 5t38.5 7t26.5 7v-138q-13 -6 -33 -12t-44 -10.5t-50 -7t-51 -2.5q-62 0 -115 16t-91.5 55t-60.5 105.5t-22 167.5v637h-155z" />
+<glyph unicode="u" horiz-adv-x="1206" d="M164 381v717h182v-707q0 -130 53 -195t164 -65q81 0 136 26t88.5 76.5t48 124.5t14.5 170v570h182v-1098h-147l-27 147h-10q-25 -43 -59.5 -74.5t-75.5 -52t-87 -30.5t-94 -10q-91 0 -160 23t-115 72t-69.5 125t-23.5 181z" />
+<glyph unicode="v" horiz-adv-x="981" d="M0 1098h188l199 -611q11 -33 26 -85t30 -106t27.5 -102t16.5 -73h7q5 25 17 73t27 102t30 106t26 85l199 611h188l-375 -1098h-231z" />
+<glyph unicode="w" horiz-adv-x="1528" d="M20 1098h191l131 -584q10 -45 20 -97.5t19 -104t16 -97t11 -74.5h6q5 26 13.5 69.5t19 92t21.5 96t21 80.5l179 619h196l172 -619q9 -34 20.5 -80t22.5 -93.5t20 -91.5t13 -73h6q3 26 9.5 69.5t15.5 95.5t19.5 106.5t21.5 101.5l137 584h186l-284 -1098h-215l-168 616 q-4 18 -10 40.5t-12 47.5t-12.5 51t-12.5 51q-14 58 -29 120h-6q-14 -63 -27 -121q-11 -50 -23.5 -103t-23.5 -90l-172 -612h-211z" />
+<glyph unicode="x" horiz-adv-x="1024" d="M35 0l373 563l-353 535h207l250 -410l250 410h207l-355 -535l373 -563h-207l-268 436l-270 -436h-207z" />
+<glyph unicode="y" horiz-adv-x="1001" d="M10 1098h189l215 -613q14 -40 28.5 -84t27 -88t21.5 -85t13 -76h6q5 25 16 68t24.5 91.5t28 95.5t25.5 80l199 611h188l-434 -1241q-28 -81 -60.5 -145.5t-75.5 -109.5t-101 -69.5t-138 -24.5q-52 0 -90 5.5t-65 11.5v145q21 -5 53 -8.5t67 -3.5q48 0 83 11.5t61 33.5 t44.5 54t33.5 73l57 160z" />
+<glyph unicode="z" horiz-adv-x="903" d="M82 0v125l536 836h-503v137h688v-146l-524 -815h542v-137h-739z" />
+<glyph unicode="{" horiz-adv-x="725" d="M61 492v155q125 0 190.5 43t65.5 146v333q0 78 27 133t74.5 90.5t113 52t142.5 17.5v-149q-40 -1 -72.5 -7.5t-55 -24t-34.5 -48t-12 -78.5v-332q0 -105 -59.5 -166.5t-174.5 -81.5v-12q115 -20 174.5 -81t59.5 -167v-331q0 -48 12 -78.5t34.5 -48t55 -24t72.5 -7.5v-150 q-77 1 -142.5 17.5t-113 52t-74.5 90.5t-27 133v334q0 103 -65.5 146t-190.5 43z" />
+<glyph unicode="|" d="M489 -492v2048h150v-2048h-150z" />
+<glyph unicode="}" horiz-adv-x="725" d="M51 -174q40 1 72.5 7.5t55 24t34.5 48t12 78.5v331q0 106 59.5 167t174.5 81v12q-115 20 -174.5 81.5t-59.5 166.5v332q0 48 -12 78.5t-34.5 48t-55 24t-72.5 7.5v149q77 -1 142.5 -17.5t113 -52t74.5 -90.5t27 -133v-333q0 -52 16.5 -88t49 -58.5t80.5 -32.5t110 -10 v-155q-125 0 -190.5 -43t-65.5 -146v-334q0 -78 -27 -133t-74.5 -90.5t-113 -52t-142.5 -17.5v150z" />
+<glyph unicode="~" d="M102 586v162q100 108 248 108q29 0 54 -2.5t52.5 -9t61 -19t80.5 -32.5q37 -16 64.5 -27t51 -17.5t43.5 -9t42 -2.5q28 0 58 9.5t59.5 26t57.5 38.5t52 47v-162q-99 -108 -248 -108q-29 0 -54 2.5t-52.5 9t-61 19t-80.5 32.5q-37 16 -64.5 27t-50 17.5t-43 9t-42.5 2.5 q-28 0 -58 -9.5t-59.5 -26t-57.5 -38.5t-53 -47z" />
+<glyph unicode="&#xa1;" horiz-adv-x="551" d="M147 979q0 37 10 63t27.5 43t40.5 25t49 8q27 0 50 -8t40.5 -25t27 -43t9.5 -63q0 -38 -9.5 -64.5t-27 -43t-40.5 -24t-50 -7.5q-26 0 -49 7.5t-40.5 24t-27.5 43t-10 64.5zM162 -373l51 1049h121l51 -1049h-223z" />
+<glyph unicode="&#xa2;" d="M188 743q0 141 26.5 242.5t75 169.5t118 105.5t155.5 50.5v172h137v-164q72 -3 140 -19.5t114 -39.5l-53 -154q-23 10 -51 19.5t-58 17t-59.5 12t-54.5 4.5q-157 0 -229 -101t-72 -313q0 -210 72.5 -307.5t220.5 -97.5q81 0 146.5 18.5t119.5 42.5v-161q-50 -28 -105 -43 t-131 -17v-200h-137v206q-87 13 -156 50.5t-118 104t-75 166t-26 236.5z" />
+<glyph unicode="&#xa3;" d="M68 0v154q44 11 80.5 31.5t63 54.5t41.5 82.5t15 115.5v213h-198v137h198v324q0 87 29.5 155.5t82 116t125.5 72.5t161 25q106 0 193 -22.5t153 -57.5l-66 -144q-56 29 -126.5 50.5t-145.5 21.5q-48 0 -89 -13.5t-71 -43t-46.5 -76.5t-16.5 -113v-295h376v-137h-376v-211 q0 -62 -11.5 -106.5t-31 -76.5t-45 -53.5t-52.5 -37.5h748v-166h-991z" />
+<glyph unicode="&#xa4;" d="M123 1065l98 98l127 -129q47 32 101 50t114 18t113.5 -18t99.5 -50l129 129l99 -96l-130 -129q31 -46 49.5 -100.5t18.5 -114.5t-17.5 -115t-50.5 -100l127 -127l-96 -96l-129 127q-46 -31 -99.5 -48.5t-113.5 -17.5t-115 18t-100 50l-127 -127l-96 96l127 127 q-31 45 -48.5 99t-17.5 114q0 59 17.5 112.5t48.5 100.5zM324 723q0 -50 18.5 -93.5t51 -76t76 -51.5t93.5 -19q51 0 95.5 19t77.5 51.5t52 76t19 93.5q0 51 -19 95.5t-52 77.5t-77.5 52t-95.5 19q-50 0 -93.5 -19t-76 -52t-51 -77.5t-18.5 -95.5z" />
+<glyph unicode="&#xa5;" d="M29 1462h192l342 -739l346 739h191l-385 -768h239v-137h-301v-158h301v-137h-301v-262h-178v262h-301v137h301v158h-301v137h234z" />
+<glyph unicode="&#xa6;" d="M489 289h150v-781h-150v781zM489 776v780h150v-780h-150z" />
+<glyph unicode="&#xa7;" horiz-adv-x="995" d="M121 55v158q31 -15 69 -30t80 -26.5t86.5 -18.5t87.5 -7q69 0 115.5 12t74 31.5t39 45t11.5 52.5q0 29 -8.5 51.5t-34 45t-72.5 47t-123 55.5q-73 31 -130.5 62t-97.5 70t-60.5 89t-20.5 117q0 51 13 92.5t35.5 73.5t51.5 54.5t60 37.5q-75 38 -117.5 95t-42.5 141 q0 61 27.5 110t77.5 83t120 52.5t156 18.5q97 0 175.5 -20t150.5 -52l-56 -139q-65 28 -135 47.5t-141 19.5q-99 0 -150 -29.5t-51 -86.5q0 -27 12 -50t40.5 -45t76 -45.5t117.5 -52.5q72 -28 128.5 -60.5t95.5 -71.5t60 -87.5t21 -110.5q0 -52 -12 -94.5t-32.5 -76.5 t-46.5 -58.5t-54 -40.5q69 -38 107 -92.5t38 -132.5q0 -71 -29.5 -126.5t-83.5 -94t-131.5 -58.5t-173.5 -20q-108 0 -186 16.5t-137 48.5zM291 831q0 -37 14 -68.5t45.5 -60.5t82 -56.5t122.5 -57.5l35 -15q20 13 40.5 31t37 41t27 51t10.5 62q0 38 -13 70t-45.5 61.5 t-86.5 58t-136 58.5q-25 -8 -48.5 -23.5t-42.5 -38t-30.5 -51.5t-11.5 -62z" />
+<glyph unicode="&#xa8;" horiz-adv-x="1182" d="M307 1395q0 54 28 78t68 24q39 0 68 -24.5t29 -77.5t-29 -78t-68 -25q-40 0 -68 25t-28 78zM682 1395q0 54 28 78t68 24q19 0 36.5 -6t30.5 -18.5t21 -31.5t8 -46q0 -53 -29 -78t-67 -25q-40 0 -68 25t-28 78z" />
+<glyph unicode="&#xa9;" horiz-adv-x="1704" d="M100 731q0 104 27 200t75.5 179.5t117.5 152.5t152.5 117.5t179.5 75.5t200 27t200 -27t179.5 -75.5t152.5 -117.5t117.5 -152.5t75.5 -179.5t27 -200t-27 -200t-75.5 -179.5t-117.5 -152t-152.5 -117.5t-179.5 -75.5t-200 -26.5t-200 26.5t-179.5 75.5t-152.5 117.5 t-117.5 152t-75.5 179.5t-27 200zM209 731q0 -133 50.5 -250t138 -204.5t204.5 -138t250 -50.5t250 50.5t204.5 138t138 204.5t50.5 250t-50.5 250t-138 204.5t-204.5 138t-250 50.5t-250 -50.5t-204.5 -138t-138 -204.5t-50.5 -250zM479 733q0 101 27 184.5t79.5 143.5 t129 93.5t176.5 33.5q63 0 129 -16.5t125 -45.5l-62 -127q-52 26 -100.5 40t-91.5 14q-61 0 -108 -22t-79 -63.5t-48.5 -101.5t-16.5 -135q0 -78 14.5 -138t45 -101t78 -62.5t114.5 -21.5q23 0 50 3.5t55.5 9.5t56.5 14.5t53 17.5v-131q-24 -11 -48.5 -20t-51 -16 t-56.5 -10.5t-65 -3.5q-102 0 -178 33t-126.5 94t-76 146t-25.5 188z" />
+<glyph unicode="&#xaa;" horiz-adv-x="678" d="M68 989q0 102 70.5 156t213.5 59l99 4v31q0 72 -30.5 100.5t-86.5 28.5q-48 0 -93 -14.5t-87 -36.5l-48 100q51 26 109.5 44t118.5 18q125 0 184.5 -53t59.5 -175v-454h-91l-28 82q-18 -22 -37.5 -39.5t-43 -30t-51.5 -19t-63 -6.5q-43 0 -79 13t-62 38.5t-40.5 64 t-14.5 89.5zM199 987q0 -51 25 -73.5t67 -22.5q34 0 63 10.5t50.5 32.5t34 54.5t12.5 76.5v49l-74 -4q-51 -3 -85 -12t-54.5 -24t-29.5 -36.5t-9 -50.5z" />
+<glyph unicode="&#xab;" horiz-adv-x="997" d="M82 526v27l309 414l117 -78l-238 -348l238 -348l-117 -78zM489 526v27l310 414l116 -78l-237 -348l237 -348l-116 -78z" />
+<glyph unicode="&#xac;" d="M102 647v150h924v-535h-149v385h-775z" />
+<glyph unicode="&#xad;" horiz-adv-x="659" d="M82 465v168h496v-168h-496z" />
+<glyph unicode="&#xae;" horiz-adv-x="1704" d="M100 731q0 104 27 200t75.5 179.5t117.5 152.5t152.5 117.5t179.5 75.5t200 27t200 -27t179.5 -75.5t152.5 -117.5t117.5 -152.5t75.5 -179.5t27 -200t-27 -200t-75.5 -179.5t-117.5 -152t-152.5 -117.5t-179.5 -75.5t-200 -26.5t-200 26.5t-179.5 75.5t-152.5 117.5 t-117.5 152t-75.5 179.5t-27 200zM209 731q0 -133 50.5 -250t138 -204.5t204.5 -138t250 -50.5t250 50.5t204.5 138t138 204.5t50.5 250t-50.5 250t-138 204.5t-204.5 138t-250 50.5t-250 -50.5t-204.5 -138t-138 -204.5t-50.5 -250zM586 285v893h233q168 0 247 -65t79 -200 q0 -48 -13.5 -85.5t-36 -66t-51 -48.5t-59.5 -33q67 -110 120 -197q23 -37 44 -72.5t37.5 -63.5t26.5 -45l10 -17h-179l-206 352h-95v-352h-157zM743 768h72q91 0 130.5 36t39.5 105q0 74 -41.5 103.5t-130.5 29.5h-70v-274z" />
+<glyph unicode="&#xaf;" horiz-adv-x="1024" d="M-6 1556v140h1036v-140h-1036z" />
+<glyph unicode="&#xb0;" horiz-adv-x="877" d="M123 1167q0 65 25 122.5t67.5 100.5t100 68t122.5 25t122.5 -25t100.5 -68t68 -100.5t25 -122.5t-25 -122t-68 -99.5t-100.5 -67t-122.5 -24.5t-122.5 24.5t-100 67t-67.5 99.5t-25 122zM246 1167q0 -39 15 -73.5t41 -60.5t61 -41t75 -15t75 15t61.5 41t41.5 60.5 t15 73.5q0 40 -15 75.5t-41.5 62t-61.5 42t-75 15.5t-75 -15.5t-61 -42t-41 -62t-15 -75.5z" />
+<glyph unicode="&#xb1;" d="M102 0v150h924v-150h-924zM102 647v150h387v389h150v-389h387v-150h-387v-385h-150v385h-387z" />
+<glyph unicode="&#xb2;" horiz-adv-x="678" d="M49 586v112l209 228q57 62 93 104.5t56 76t27.5 63t7.5 63.5q0 65 -33 97t-87 32q-51 0 -97.5 -25t-91.5 -63l-78 94q54 48 120.5 80.5t148.5 32.5q60 0 108.5 -16.5t82.5 -48t52.5 -77t18.5 -102.5q0 -50 -14.5 -93t-41.5 -85.5t-66.5 -88t-90.5 -100.5l-148 -157h396 v-127h-572z" />
+<glyph unicode="&#xb3;" horiz-adv-x="678" d="M31 625v133q63 -34 129 -53t119 -19q98 0 142 41.5t44 114.5q0 74 -53.5 107.5t-149.5 33.5h-98v113h98q92 0 134 39.5t42 103.5q0 32 -10 55.5t-27.5 38.5t-41 22t-50.5 7q-59 0 -107.5 -20.5t-99.5 -57.5l-69 96q29 23 59.5 41.5t64.5 31.5t72 20.5t82 7.5 q69 0 121.5 -17t87.5 -47t52.5 -71.5t17.5 -90.5q0 -78 -40.5 -131t-109.5 -77q88 -23 132 -76t44 -131q0 -60 -20 -110t-61.5 -85.5t-104.5 -55.5t-149 -20q-70 0 -131.5 12.5t-118.5 43.5z" />
+<glyph unicode="&#xb4;" horiz-adv-x="1182" d="M393 1241v27q22 29 45.5 67t47 78.5t44.5 81t37 74.5h219v-21q-16 -27 -47.5 -67.5t-70 -84.5t-79 -85.5t-75.5 -69.5h-121z" />
+<glyph unicode="&#xb5;" horiz-adv-x="1217" d="M174 -492v1590h182v-707q0 -130 53 -195t164 -65q82 0 137 26t88.5 76.5t47.5 124.5t14 170v570h182v-1098h-147l-27 147h-10q-48 -83 -120 -125t-175 -42q-72 0 -125 23t-88 65q1 -38 3 -78q2 -35 2.5 -77.5t0.5 -84.5v-320h-182z" />
+<glyph unicode="&#xb6;" horiz-adv-x="1341" d="M113 1042q0 147 32.5 245.5t92 158.5t142.5 85t183 25h563v-1816h-120v1657h-207v-1657h-121v819q-61 -18 -146 -18q-95 0 -172.5 25.5t-132 84.5t-84.5 155t-30 236z" />
+<glyph unicode="&#xb7;" horiz-adv-x="549" d="M147 723q0 38 10 64.5t27 43t40 24t50 7.5q26 0 49.5 -7.5t40.5 -24t27 -43t10 -64.5q0 -37 -10 -63t-27 -43t-40.5 -25t-49.5 -8q-27 0 -50 8t-40 25t-27 43t-10 63z" />
+<glyph unicode="&#xb8;" horiz-adv-x="420" d="M35 -375q15 -3 39.5 -4.5t40.5 -1.5q71 0 111 21.5t40 70.5q0 24 -13 41.5t-36 30.5t-54.5 22.5t-68.5 18.5l90 176h121l-57 -115q34 -8 63 -21t50.5 -33.5t34 -49.5t12.5 -68q0 -97 -70.5 -151t-220.5 -54q-22 0 -44.5 3t-37.5 6v108z" />
+<glyph unicode="&#xb9;" horiz-adv-x="678" d="M63 1274l244 188h135v-876h-145v516q0 25 0.5 55t2 60t3 58t2.5 50q-14 -17 -33 -37t-41 -37l-94 -73z" />
+<glyph unicode="&#xba;" horiz-adv-x="717" d="M66 1133q0 83 20.5 147.5t58.5 108.5t92.5 67t122.5 23q62 0 115.5 -23t92.5 -67t61 -108.5t22 -147.5t-20.5 -148t-59 -109.5t-93 -68t-122.5 -23.5q-63 0 -116 23.5t-92 68t-60.5 109.5t-21.5 148zM197 1133q0 -119 37.5 -179.5t123.5 -60.5q85 0 122.5 60.5 t37.5 179.5q0 120 -37.5 177.5t-122.5 57.5q-86 0 -123.5 -57.5t-37.5 -177.5z" />
+<glyph unicode="&#xbb;" horiz-adv-x="997" d="M84 193l238 348l-238 348l117 78l309 -414v-27l-309 -411zM492 193l237 348l-237 348l116 78l310 -414v-27l-310 -411z" />
+<glyph unicode="&#xbc;" horiz-adv-x="1509" d="M63 1274l244 188h135v-876h-145v516q0 25 0.5 55t2 60t3 58t2.5 50q-14 -17 -33 -37t-41 -37l-94 -73zM234 0l811 1462h157l-811 -1462h-157zM776 193v111l377 579h141v-563h125v-127h-125v-192h-143v192h-375zM922 320h229v195q0 42 1.5 91.5t4.5 98.5q-5 -11 -15 -29.5 t-21 -39.5t-23 -41l-21 -35z" />
+<glyph unicode="&#xbd;" horiz-adv-x="1509" d="M44 1274l244 188h135v-876h-145v516q0 25 0.5 55t2 60t3 58t2.5 50q-14 -17 -33 -37t-41 -37l-94 -73zM213 0l811 1462h157l-811 -1462h-157zM868 1v112l209 228q57 62 93 104.5t56 76t27.5 63t7.5 63.5q0 65 -33 97t-87 32q-51 0 -97.5 -25t-91.5 -63l-78 94 q54 48 120.5 80.5t148.5 32.5q60 0 108.5 -16.5t82.5 -48t52.5 -77t18.5 -102.5q0 -50 -14.5 -93t-41.5 -85.5t-66.5 -88t-90.5 -100.5l-148 -157h396v-127h-572z" />
+<glyph unicode="&#xbe;" horiz-adv-x="1509" d="M31 625v133q63 -34 129 -53t119 -19q98 0 142 41.5t44 114.5q0 74 -53.5 107.5t-149.5 33.5h-98v113h98q92 0 134 39.5t42 103.5q0 32 -10 55.5t-27.5 38.5t-41 22t-50.5 7q-59 0 -107.5 -20.5t-99.5 -57.5l-69 96q29 23 59.5 41.5t64.5 31.5t72 20.5t82 7.5 q69 0 121.5 -17t87.5 -47t52.5 -71.5t17.5 -90.5q0 -78 -40.5 -131t-109.5 -77q88 -23 132 -76t44 -131q0 -60 -20 -110t-61.5 -85.5t-104.5 -55.5t-149 -20q-70 0 -131.5 12.5t-118.5 43.5zM328 0l811 1462h157l-811 -1462h-157zM843 193v111l377 579h141v-563h125v-127 h-125v-192h-143v192h-375zM989 320h229v195q0 42 1.5 91.5t4.5 98.5q-5 -11 -15 -29.5t-21 -39.5t-23 -41l-21 -35z" />
+<glyph unicode="&#xbf;" horiz-adv-x="872" d="M68 -20q0 68 13.5 120t40 97t67 87t94.5 89q52 45 85 78.5t52 64.5t26 64.5t7 76.5v19h139v-37q0 -58 -8 -103.5t-27.5 -86t-52 -78.5t-82.5 -80q-48 -41 -82 -74.5t-55.5 -68t-32 -74t-10.5 -92.5q0 -48 15 -87.5t43.5 -68t71 -44t97.5 -15.5q84 0 159 25.5t144 60.5 l64 -146q-82 -42 -176 -71t-191 -29q-93 0 -167.5 25.5t-126 73.5t-79.5 117t-28 157zM385 979q0 37 10 63t27.5 43t40.5 25t49 8q27 0 50 -8t40.5 -25t27 -43t9.5 -63q0 -38 -9.5 -64.5t-27 -43t-40.5 -24t-50 -7.5q-26 0 -49 7.5t-40.5 24t-27.5 43t-10 64.5z" />
+<glyph unicode="&#xc0;" horiz-adv-x="1245" d="M0 0l537 1468h170l538 -1468h-190l-160 453h-545l-162 -453h-188zM410 618h426l-148 424q-6 18 -14.5 44t-17.5 56t-18 62.5t-17 63.5q-7 -31 -16 -64t-18 -63.5t-17.5 -56t-14.5 -42.5zM326 1886v21h219q16 -34 37.5 -74.5t44.5 -81t47 -78.5t45 -67v-27h-120 q-35 28 -76 69.5t-79.5 85.5t-70 84.5t-47.5 67.5z" />
+<glyph unicode="&#xc1;" horiz-adv-x="1245" d="M0 0l537 1468h170l538 -1468h-190l-160 453h-545l-162 -453h-188zM410 618h426l-148 424q-6 18 -14.5 44t-17.5 56t-18 62.5t-17 63.5q-7 -31 -16 -64t-18 -63.5t-17.5 -56t-14.5 -42.5zM534 1579v27q22 29 45.5 67t47 78.5t44.5 81t37 74.5h219v-21q-16 -27 -47.5 -67.5 t-70 -84.5t-79 -85.5t-75.5 -69.5h-121z" />
+<glyph unicode="&#xc2;" horiz-adv-x="1245" d="M0 0l537 1468h170l538 -1468h-190l-160 453h-545l-162 -453h-188zM410 618h426l-148 424q-6 18 -14.5 44t-17.5 56t-18 62.5t-17 63.5q-7 -31 -16 -64t-18 -63.5t-17.5 -56t-14.5 -42.5zM289 1579v27q26 29 60 67t67.5 78.5t63 81t45.5 74.5h192q16 -34 45.5 -74.5 t63 -81t68 -78.5t59.5 -67v-27h-121q-51 34 -105 82.5t-106 103.5q-54 -55 -107 -103.5t-104 -82.5h-121z" />
+<glyph unicode="&#xc3;" horiz-adv-x="1245" d="M0 0l537 1468h170l538 -1468h-190l-160 453h-545l-162 -453h-188zM410 618h426l-148 424q-6 18 -14.5 44t-17.5 56t-18 62.5t-17 63.5q-7 -31 -16 -64t-18 -63.5t-17.5 -56t-14.5 -42.5zM264 1579q5 60 21.5 109t43 83.5t63.5 53t83 18.5q42 0 82.5 -17.5t78.5 -38.5 t72.5 -38.5t63.5 -17.5q45 0 68 26t38 88h105q-5 -60 -21.5 -108.5t-43 -83t-63.5 -53.5t-83 -19q-40 0 -79.5 17.5t-77.5 39t-73 39t-67 17.5q-45 0 -69 -26.5t-38 -88.5h-104z" />
+<glyph unicode="&#xc4;" horiz-adv-x="1245" d="M0 0l537 1468h170l538 -1468h-190l-160 453h-545l-162 -453h-188zM410 618h426l-148 424q-6 18 -14.5 44t-17.5 56t-18 62.5t-17 63.5q-7 -31 -16 -64t-18 -63.5t-17.5 -56t-14.5 -42.5zM340 1733q0 54 28 78t68 24q39 0 68 -24.5t29 -77.5t-29 -78t-68 -25q-40 0 -68 25 t-28 78zM715 1733q0 54 28 78t68 24q19 0 36.5 -6t30.5 -18.5t21 -31.5t8 -46q0 -53 -29 -78t-67 -25q-40 0 -68 25t-28 78z" />
+<glyph unicode="&#xc5;" horiz-adv-x="1245" d="M0 0l537 1468h170l538 -1468h-190l-160 453h-545l-162 -453h-188zM410 618h426l-148 424q-6 18 -14.5 44t-17.5 56t-18 62.5t-17 63.5q-7 -31 -16 -64t-18 -63.5t-17.5 -56t-14.5 -42.5zM396 1581q0 51 16 90.5t45.5 67.5t70.5 42.5t91 14.5q48 0 90 -14.5t73 -42 t48.5 -67t17.5 -89.5q0 -51 -17.5 -91.5t-48 -68.5t-72.5 -42.5t-91 -14.5q-50 0 -91 14.5t-70.5 42.5t-45.5 67.5t-16 90.5zM506 1581q0 -53 28.5 -83t84.5 -30q49 0 80.5 30t31.5 83t-31.5 83t-80.5 30q-50 0 -81.5 -30t-31.5 -83z" />
+<glyph unicode="&#xc6;" horiz-adv-x="1745" d="M-2 0l655 1462h969v-164h-573v-452h534v-162h-534v-520h573v-164h-760v453h-475l-203 -453h-186zM459 618h403v680h-108z" />
+<glyph unicode="&#xc7;" horiz-adv-x="1235" d="M125 733q0 166 43.5 304t128 237t209.5 154t287 55q108 0 206 -22t177 -64l-78 -156q-63 32 -137 55t-168 23q-107 0 -194 -40.5t-148.5 -116.5t-95 -185t-33.5 -246q0 -141 29.5 -250.5t88.5 -184.5t147 -114t206 -39q89 0 169 17.5t158 40.5v-162q-39 -15 -78 -26.5 t-81.5 -18.5t-91 -10.5t-107.5 -3.5q-164 0 -284 54t-198.5 153t-116.5 238t-38 308zM543 -375q15 -3 39.5 -4.5t40.5 -1.5q71 0 111 21.5t40 70.5q0 24 -13 41.5t-36 30.5t-54.5 22.5t-68.5 18.5l90 176h121l-57 -115q34 -8 63 -21t50.5 -33.5t34 -49.5t12.5 -68 q0 -97 -70.5 -151t-220.5 -54q-22 0 -44.5 3t-37.5 6v108z" />
+<glyph unicode="&#xc8;" horiz-adv-x="1081" d="M199 0v1462h759v-164h-573v-452h535v-162h-535v-520h573v-164h-759zM320 1886v21h219q16 -34 37.5 -74.5t44.5 -81t47 -78.5t45 -67v-27h-120q-35 28 -76 69.5t-79.5 85.5t-70 84.5t-47.5 67.5z" />
+<glyph unicode="&#xc9;" horiz-adv-x="1081" d="M199 0v1462h759v-164h-573v-452h535v-162h-535v-520h573v-164h-759zM456 1579v27q22 29 45.5 67t47 78.5t44.5 81t37 74.5h219v-21q-16 -27 -47.5 -67.5t-70 -84.5t-79 -85.5t-75.5 -69.5h-121z" />
+<glyph unicode="&#xca;" horiz-adv-x="1081" d="M199 0v1462h759v-164h-573v-452h535v-162h-535v-520h573v-164h-759zM243 1579v27q26 29 60 67t67.5 78.5t63 81t45.5 74.5h192q16 -34 45.5 -74.5t63 -81t68 -78.5t59.5 -67v-27h-121q-51 34 -105 82.5t-106 103.5q-54 -55 -107 -103.5t-104 -82.5h-121z" />
+<glyph unicode="&#xcb;" horiz-adv-x="1081" d="M199 0v1462h759v-164h-573v-452h535v-162h-535v-520h573v-164h-759zM296 1733q0 54 28 78t68 24q39 0 68 -24.5t29 -77.5t-29 -78t-68 -25q-40 0 -68 25t-28 78zM671 1733q0 54 28 78t68 24q19 0 36.5 -6t30.5 -18.5t21 -31.5t8 -46q0 -53 -29 -78t-67 -25q-40 0 -68 25 t-28 78z" />
+<glyph unicode="&#xcc;" horiz-adv-x="694" d="M82 0v102l172 41v1176l-172 41v102h530v-102l-172 -41v-1176l172 -41v-102h-530zM62 1886v21h219q16 -34 37.5 -74.5t44.5 -81t47 -78.5t45 -67v-27h-120q-35 28 -76 69.5t-79.5 85.5t-70 84.5t-47.5 67.5z" />
+<glyph unicode="&#xcd;" horiz-adv-x="694" d="M82 0v102l172 41v1176l-172 41v102h530v-102l-172 -41v-1176l172 -41v-102h-530zM257 1579v27q22 29 45.5 67t47 78.5t44.5 81t37 74.5h219v-21q-16 -27 -47.5 -67.5t-70 -84.5t-79 -85.5t-75.5 -69.5h-121z" />
+<glyph unicode="&#xce;" horiz-adv-x="694" d="M82 0v102l172 41v1176l-172 41v102h530v-102l-172 -41v-1176l172 -41v-102h-530zM17 1579v27q26 29 60 67t67.5 78.5t63 81t45.5 74.5h192q16 -34 45.5 -74.5t63 -81t68 -78.5t59.5 -67v-27h-121q-51 34 -105 82.5t-106 103.5q-54 -55 -107 -103.5t-104 -82.5h-121z" />
+<glyph unicode="&#xcf;" horiz-adv-x="694" d="M82 0v102l172 41v1176l-172 41v102h530v-102l-172 -41v-1176l172 -41v-102h-530zM64 1733q0 54 28 78t68 24q39 0 68 -24.5t29 -77.5t-29 -78t-68 -25q-40 0 -68 25t-28 78zM439 1733q0 54 28 78t68 24q19 0 36.5 -6t30.5 -18.5t21 -31.5t8 -46q0 -53 -29 -78t-67 -25 q-40 0 -68 25t-28 78z" />
+<glyph unicode="&#xd0;" horiz-adv-x="1401" d="M47 643v162h152v657h407q153 0 277 -46t211 -136.5t134.5 -224.5t47.5 -310q0 -185 -48 -324.5t-139 -233t-223.5 -140.5t-300.5 -47h-366v643h-152zM385 160h162q264 0 398 146t134 433q0 146 -33 252.5t-96 175.5t-155 102.5t-209 33.5h-201v-498h336v-162h-336v-483z " />
+<glyph unicode="&#xd1;" horiz-adv-x="1493" d="M199 0v1462h213l716 -1204h7q-3 76 -7 150q0 32 -2 66l-4 66q-2 34 -2 65v57v800h174v-1462h-215l-719 1210h-8q6 -77 10 -153q4 -65 6.5 -136t2.5 -128v-793h-172zM397 1579q5 60 21.5 109t43 83.5t63.5 53t83 18.5q42 0 82.5 -17.5t78.5 -38.5t72.5 -38.5t63.5 -17.5 q45 0 68 26t38 88h105q-5 -60 -21.5 -108.5t-43 -83t-63.5 -53.5t-83 -19q-40 0 -79.5 17.5t-77.5 39t-73 39t-67 17.5q-45 0 -69 -26.5t-38 -88.5h-104z" />
+<glyph unicode="&#xd2;" horiz-adv-x="1520" d="M125 735q0 170 38 308.5t117 236.5t199 151.5t283 53.5q155 0 272.5 -53.5t197.5 -152t120.5 -237t40.5 -309.5q0 -169 -40.5 -308t-120.5 -238t-198.5 -153t-273.5 -54q-163 0 -282.5 54t-198 153t-116.5 238.5t-38 309.5zM322 733q0 -137 26 -246.5t79.5 -186t136 -117 t196.5 -40.5t196.5 40.5t136 117t78.5 186t25 246.5q0 138 -25 247t-78 184.5t-135 116t-196 40.5t-197 -40.5t-137 -116t-80 -184.5t-26 -247zM477 1886v21h219q16 -34 37.5 -74.5t44.5 -81t47 -78.5t45 -67v-27h-120q-35 28 -76 69.5t-79.5 85.5t-70 84.5t-47.5 67.5z" />
+<glyph unicode="&#xd3;" horiz-adv-x="1520" d="M125 735q0 170 38 308.5t117 236.5t199 151.5t283 53.5q155 0 272.5 -53.5t197.5 -152t120.5 -237t40.5 -309.5q0 -169 -40.5 -308t-120.5 -238t-198.5 -153t-273.5 -54q-163 0 -282.5 54t-198 153t-116.5 238.5t-38 309.5zM322 733q0 -137 26 -246.5t79.5 -186t136 -117 t196.5 -40.5t196.5 40.5t136 117t78.5 186t25 246.5q0 138 -25 247t-78 184.5t-135 116t-196 40.5t-197 -40.5t-137 -116t-80 -184.5t-26 -247zM651 1579v27q22 29 45.5 67t47 78.5t44.5 81t37 74.5h219v-21q-16 -27 -47.5 -67.5t-70 -84.5t-79 -85.5t-75.5 -69.5h-121z" />
+<glyph unicode="&#xd4;" horiz-adv-x="1520" d="M125 735q0 170 38 308.5t117 236.5t199 151.5t283 53.5q155 0 272.5 -53.5t197.5 -152t120.5 -237t40.5 -309.5q0 -169 -40.5 -308t-120.5 -238t-198.5 -153t-273.5 -54q-163 0 -282.5 54t-198 153t-116.5 238.5t-38 309.5zM322 733q0 -137 26 -246.5t79.5 -186t136 -117 t196.5 -40.5t196.5 40.5t136 117t78.5 186t25 246.5q0 138 -25 247t-78 184.5t-135 116t-196 40.5t-197 -40.5t-137 -116t-80 -184.5t-26 -247zM432 1579v27q26 29 60 67t67.5 78.5t63 81t45.5 74.5h192q16 -34 45.5 -74.5t63 -81t68 -78.5t59.5 -67v-27h-121 q-51 34 -105 82.5t-106 103.5q-54 -55 -107 -103.5t-104 -82.5h-121z" />
+<glyph unicode="&#xd5;" horiz-adv-x="1520" d="M125 735q0 170 38 308.5t117 236.5t199 151.5t283 53.5q155 0 272.5 -53.5t197.5 -152t120.5 -237t40.5 -309.5q0 -169 -40.5 -308t-120.5 -238t-198.5 -153t-273.5 -54q-163 0 -282.5 54t-198 153t-116.5 238.5t-38 309.5zM322 733q0 -137 26 -246.5t79.5 -186t136 -117 t196.5 -40.5t196.5 40.5t136 117t78.5 186t25 246.5q0 138 -25 247t-78 184.5t-135 116t-196 40.5t-197 -40.5t-137 -116t-80 -184.5t-26 -247zM383 1579q5 60 21.5 109t43 83.5t63.5 53t83 18.5q42 0 82.5 -17.5t78.5 -38.5t72.5 -38.5t63.5 -17.5q45 0 68 26t38 88h105 q-5 -60 -21.5 -108.5t-43 -83t-63.5 -53.5t-83 -19q-40 0 -79.5 17.5t-77.5 39t-73 39t-67 17.5q-45 0 -69 -26.5t-38 -88.5h-104z" />
+<glyph unicode="&#xd6;" horiz-adv-x="1520" d="M125 735q0 170 38 308.5t117 236.5t199 151.5t283 53.5q155 0 272.5 -53.5t197.5 -152t120.5 -237t40.5 -309.5q0 -169 -40.5 -308t-120.5 -238t-198.5 -153t-273.5 -54q-163 0 -282.5 54t-198 153t-116.5 238.5t-38 309.5zM322 733q0 -137 26 -246.5t79.5 -186t136 -117 t196.5 -40.5t196.5 40.5t136 117t78.5 186t25 246.5q0 138 -25 247t-78 184.5t-135 116t-196 40.5t-197 -40.5t-137 -116t-80 -184.5t-26 -247zM477 1733q0 54 28 78t68 24q39 0 68 -24.5t29 -77.5t-29 -78t-68 -25q-40 0 -68 25t-28 78zM852 1733q0 54 28 78t68 24 q19 0 36.5 -6t30.5 -18.5t21 -31.5t8 -46q0 -53 -29 -78t-67 -25q-40 0 -68 25t-28 78z" />
+<glyph unicode="&#xd7;" d="M141 1042l105 105l317 -318l322 318l104 -103l-321 -321l319 -320l-102 -102l-322 317l-317 -315l-103 103l316 317z" />
+<glyph unicode="&#xd8;" horiz-adv-x="1520" d="M125 735q0 170 38 308.5t117 236.5t199 151.5t283 53.5q94 0 174.5 -21t146.5 -59l80 127l137 -78l-92 -149q91 -99 138 -244t47 -328q0 -169 -40.5 -308t-120.5 -238t-198.5 -153t-273.5 -54q-189 0 -322 71l-78 -127l-137 78l90 145q-97 100 -142.5 249t-45.5 339z M322 733q0 -131 23 -235.5t71 -182.5l579 945q-48 29 -105 45t-128 16q-114 0 -197 -40.5t-137 -116t-80 -184.5t-26 -247zM530 201q47 -28 104 -43t126 -15q114 0 196.5 40.5t136 117t78.5 186t25 246.5q0 257 -88 408z" />
+<glyph unicode="&#xd9;" horiz-adv-x="1430" d="M184 520v942h187v-952q0 -175 86.5 -271t261.5 -96q89 0 153 27t105 76t61 117t21 149v952h186v-948q0 -114 -33 -212t-99.5 -170t-167 -113t-236.5 -41q-128 0 -226 38.5t-164.5 109.5t-100.5 170.5t-34 221.5zM454 1886v21h219q16 -34 37.5 -74.5t44.5 -81t47 -78.5 t45 -67v-27h-120q-35 28 -76 69.5t-79.5 85.5t-70 84.5t-47.5 67.5z" />
+<glyph unicode="&#xda;" horiz-adv-x="1430" d="M184 520v942h187v-952q0 -175 86.5 -271t261.5 -96q89 0 153 27t105 76t61 117t21 149v952h186v-948q0 -114 -33 -212t-99.5 -170t-167 -113t-236.5 -41q-128 0 -226 38.5t-164.5 109.5t-100.5 170.5t-34 221.5zM590 1579v27q22 29 45.5 67t47 78.5t44.5 81t37 74.5h219 v-21q-16 -27 -47.5 -67.5t-70 -84.5t-79 -85.5t-75.5 -69.5h-121z" />
+<glyph unicode="&#xdb;" horiz-adv-x="1430" d="M184 520v942h187v-952q0 -175 86.5 -271t261.5 -96q89 0 153 27t105 76t61 117t21 149v952h186v-948q0 -114 -33 -212t-99.5 -170t-167 -113t-236.5 -41q-128 0 -226 38.5t-164.5 109.5t-100.5 170.5t-34 221.5zM379 1579v27q26 29 60 67t67.5 78.5t63 81t45.5 74.5h192 q16 -34 45.5 -74.5t63 -81t68 -78.5t59.5 -67v-27h-121q-51 34 -105 82.5t-106 103.5q-54 -55 -107 -103.5t-104 -82.5h-121z" />
+<glyph unicode="&#xdc;" horiz-adv-x="1430" d="M184 520v942h187v-952q0 -175 86.5 -271t261.5 -96q89 0 153 27t105 76t61 117t21 149v952h186v-948q0 -114 -33 -212t-99.5 -170t-167 -113t-236.5 -41q-128 0 -226 38.5t-164.5 109.5t-100.5 170.5t-34 221.5zM432 1733q0 54 28 78t68 24q39 0 68 -24.5t29 -77.5 t-29 -78t-68 -25q-40 0 -68 25t-28 78zM807 1733q0 54 28 78t68 24q19 0 36.5 -6t30.5 -18.5t21 -31.5t8 -46q0 -53 -29 -78t-67 -25q-40 0 -68 25t-28 78z" />
+<glyph unicode="&#xdd;" horiz-adv-x="1079" d="M0 1462h203l336 -739l340 739h200l-446 -893v-569h-187v559zM442 1579v27q22 29 45.5 67t47 78.5t44.5 81t37 74.5h219v-21q-16 -27 -47.5 -67.5t-70 -84.5t-79 -85.5t-75.5 -69.5h-121z" />
+<glyph unicode="&#xde;" horiz-adv-x="1180" d="M199 0v1462h186v-252h176q134 0 231 -28.5t160 -83t93 -134.5t30 -182q0 -91 -27.5 -175t-90.5 -148.5t-166.5 -103t-255.5 -38.5h-150v-317h-186zM385 475h129q93 0 162.5 16t115 51.5t68.5 92t23 137.5q0 143 -82 211t-256 68h-160v-576z" />
+<glyph unicode="&#xdf;" horiz-adv-x="1233" d="M174 0v1200q0 104 31.5 174.5t88 113t134.5 61t170 18.5t168 -19t130 -57t84 -96t30 -135q0 -57 -21.5 -101.5t-53 -81t-69 -66.5t-69 -57.5t-53 -54.5t-21.5 -57q0 -21 7 -37.5t26.5 -36t54.5 -44t92 -62.5q56 -37 100 -73t74.5 -77t47 -89t16.5 -110q0 -87 -28 -150 t-78.5 -103.5t-121 -60t-155.5 -19.5q-97 0 -166.5 17.5t-122.5 51.5v166q26 -16 58.5 -31.5t68.5 -27.5t74 -19.5t75 -7.5q56 0 96.5 12.5t66.5 35t38 54.5t12 72q0 36 -8.5 65.5t-30 57.5t-57.5 57t-92 64q-63 40 -105.5 74t-69 67.5t-37.5 68.5t-11 77q0 54 20.5 93.5 t51.5 71t67 58.5t67 56t51.5 62.5t20.5 77.5q0 42 -16.5 73t-46.5 51.5t-71.5 30t-92.5 9.5q-49 0 -93 -9.5t-77 -33.5t-52.5 -65.5t-19.5 -106.5v-1202h-182z" />
+<glyph unicode="&#xe0;" horiz-adv-x="1087" d="M94 307q0 164 115.5 252t351.5 96l184 7v69q0 67 -14.5 112t-42 72.5t-68 39.5t-92.5 12q-83 0 -154.5 -24t-137.5 -58l-64 137q74 40 165 68t191 28q102 0 176.5 -20.5t123 -65t72.5 -113.5t24 -167v-752h-131l-37 152h-8q-33 -45 -66 -77.5t-72 -53.5t-87 -31t-111 -10 q-69 0 -127 19.5t-100.5 60t-66.5 102t-24 145.5zM283 305q0 -92 48.5 -135t127.5 -43q61 0 113 19t90 57.5t59.5 97t21.5 137.5v99l-143 -7q-90 -4 -151 -20t-97.5 -44.5t-52.5 -69t-16 -91.5zM285 1548v21h219q16 -34 37.5 -74.5t44.5 -81t47 -78.5t45 -67v-27h-120 q-35 28 -76 69.5t-79.5 85.5t-70 84.5t-47.5 67.5z" />
+<glyph unicode="&#xe1;" horiz-adv-x="1087" d="M94 307q0 164 115.5 252t351.5 96l184 7v69q0 67 -14.5 112t-42 72.5t-68 39.5t-92.5 12q-83 0 -154.5 -24t-137.5 -58l-64 137q74 40 165 68t191 28q102 0 176.5 -20.5t123 -65t72.5 -113.5t24 -167v-752h-131l-37 152h-8q-33 -45 -66 -77.5t-72 -53.5t-87 -31t-111 -10 q-69 0 -127 19.5t-100.5 60t-66.5 102t-24 145.5zM283 305q0 -92 48.5 -135t127.5 -43q61 0 113 19t90 57.5t59.5 97t21.5 137.5v99l-143 -7q-90 -4 -151 -20t-97.5 -44.5t-52.5 -69t-16 -91.5zM446 1241v27q22 29 45.5 67t47 78.5t44.5 81t37 74.5h219v-21 q-16 -27 -47.5 -67.5t-70 -84.5t-79 -85.5t-75.5 -69.5h-121z" />
+<glyph unicode="&#xe2;" horiz-adv-x="1087" d="M94 307q0 164 115.5 252t351.5 96l184 7v69q0 67 -14.5 112t-42 72.5t-68 39.5t-92.5 12q-83 0 -154.5 -24t-137.5 -58l-64 137q74 40 165 68t191 28q102 0 176.5 -20.5t123 -65t72.5 -113.5t24 -167v-752h-131l-37 152h-8q-33 -45 -66 -77.5t-72 -53.5t-87 -31t-111 -10 q-69 0 -127 19.5t-100.5 60t-66.5 102t-24 145.5zM283 305q0 -92 48.5 -135t127.5 -43q61 0 113 19t90 57.5t59.5 97t21.5 137.5v99l-143 -7q-90 -4 -151 -20t-97.5 -44.5t-52.5 -69t-16 -91.5zM228 1241v27q26 29 60 67t67.5 78.5t63 81t45.5 74.5h192q16 -34 45.5 -74.5 t63 -81t68 -78.5t59.5 -67v-27h-121q-51 34 -105 82.5t-106 103.5q-54 -55 -107 -103.5t-104 -82.5h-121z" />
+<glyph unicode="&#xe3;" horiz-adv-x="1087" d="M94 307q0 164 115.5 252t351.5 96l184 7v69q0 67 -14.5 112t-42 72.5t-68 39.5t-92.5 12q-83 0 -154.5 -24t-137.5 -58l-64 137q74 40 165 68t191 28q102 0 176.5 -20.5t123 -65t72.5 -113.5t24 -167v-752h-131l-37 152h-8q-33 -45 -66 -77.5t-72 -53.5t-87 -31t-111 -10 q-69 0 -127 19.5t-100.5 60t-66.5 102t-24 145.5zM283 305q0 -92 48.5 -135t127.5 -43q61 0 113 19t90 57.5t59.5 97t21.5 137.5v99l-143 -7q-90 -4 -151 -20t-97.5 -44.5t-52.5 -69t-16 -91.5zM191 1241q5 60 21.5 109t43 83.5t63.5 53t83 18.5q42 0 82.5 -17.5t78.5 -38.5 t72.5 -38.5t63.5 -17.5q45 0 68 26t38 88h105q-5 -60 -21.5 -108.5t-43 -83t-63.5 -53.5t-83 -19q-40 0 -79.5 17.5t-77.5 39t-73 39t-67 17.5q-45 0 -69 -26.5t-38 -88.5h-104z" />
+<glyph unicode="&#xe4;" horiz-adv-x="1087" d="M94 307q0 164 115.5 252t351.5 96l184 7v69q0 67 -14.5 112t-42 72.5t-68 39.5t-92.5 12q-83 0 -154.5 -24t-137.5 -58l-64 137q74 40 165 68t191 28q102 0 176.5 -20.5t123 -65t72.5 -113.5t24 -167v-752h-131l-37 152h-8q-33 -45 -66 -77.5t-72 -53.5t-87 -31t-111 -10 q-69 0 -127 19.5t-100.5 60t-66.5 102t-24 145.5zM283 305q0 -92 48.5 -135t127.5 -43q61 0 113 19t90 57.5t59.5 97t21.5 137.5v99l-143 -7q-90 -4 -151 -20t-97.5 -44.5t-52.5 -69t-16 -91.5zM273 1395q0 54 28 78t68 24q39 0 68 -24.5t29 -77.5t-29 -78t-68 -25 q-40 0 -68 25t-28 78zM648 1395q0 54 28 78t68 24q19 0 36.5 -6t30.5 -18.5t21 -31.5t8 -46q0 -53 -29 -78t-67 -25q-40 0 -68 25t-28 78z" />
+<glyph unicode="&#xe5;" horiz-adv-x="1087" d="M94 307q0 164 115.5 252t351.5 96l184 7v69q0 67 -14.5 112t-42 72.5t-68 39.5t-92.5 12q-83 0 -154.5 -24t-137.5 -58l-64 137q74 40 165 68t191 28q102 0 176.5 -20.5t123 -65t72.5 -113.5t24 -167v-752h-131l-37 152h-8q-33 -45 -66 -77.5t-72 -53.5t-87 -31t-111 -10 q-69 0 -127 19.5t-100.5 60t-66.5 102t-24 145.5zM283 305q0 -92 48.5 -135t127.5 -43q61 0 113 19t90 57.5t59.5 97t21.5 137.5v99l-143 -7q-90 -4 -151 -20t-97.5 -44.5t-52.5 -69t-16 -91.5zM331 1456q0 51 16 90.5t45.5 67.5t70.5 42.5t91 14.5q48 0 90 -14.5t73 -42 t48.5 -67t17.5 -89.5q0 -51 -17.5 -91.5t-48 -68.5t-72.5 -42.5t-91 -14.5q-50 0 -91 14.5t-70.5 42.5t-45.5 67.5t-16 90.5zM441 1456q0 -53 28.5 -83t84.5 -30q49 0 80.5 30t31.5 83t-31.5 83t-80.5 30q-50 0 -81.5 -30t-31.5 -83z" />
+<glyph unicode="&#xe6;" horiz-adv-x="1706" d="M94 307q0 164 115.5 252t351.5 96l184 7v69q0 67 -14.5 112t-42 72.5t-68 39.5t-92.5 12q-83 0 -154.5 -24t-137.5 -58l-64 137q74 40 165 68t191 28q131 0 214 -42.5t126 -135.5q51 85 134 131.5t186 46.5q97 0 174 -35.5t131 -100t82.5 -155t28.5 -200.5v-113h-672 q5 -193 78.5 -284t220.5 -91q49 0 91.5 5t81.5 14.5t76 24t74 32.5v-162q-39 -19 -76.5 -33t-77 -23t-82 -13t-91.5 -4q-138 0 -239 57t-163 172q-34 -54 -72 -96.5t-85.5 -72t-105.5 -45t-132 -15.5q-71 0 -132.5 19.5t-106.5 60t-71 102t-26 145.5zM283 305 q0 -92 48.5 -135t127.5 -43q61 0 113 19t90 57.5t59.5 97t21.5 137.5v99l-143 -7q-90 -4 -151 -20t-97.5 -44.5t-52.5 -69t-16 -91.5zM936 662h471q0 68 -13 124.5t-40.5 96.5t-69.5 62t-100 22q-110 0 -173.5 -78t-74.5 -227z" />
+<glyph unicode="&#xe7;" horiz-adv-x="948" d="M113 543q0 157 38 266.5t104.5 178t155.5 99.5t191 31q78 0 152.5 -17t124.5 -42l-54 -154q-23 10 -51 19.5t-58 17t-59 12t-55 4.5q-157 0 -229 -100.5t-72 -312.5q0 -211 72.5 -308.5t220.5 -97.5q81 0 146.5 18.5t119.5 43.5v-162q-54 -29 -115.5 -44t-150.5 -15 q-101 0 -189 31.5t-153 100t-102 175t-37 256.5zM357 -375q15 -3 39.5 -4.5t40.5 -1.5q71 0 111 21.5t40 70.5q0 24 -13 41.5t-36 30.5t-54.5 22.5t-68.5 18.5l90 176h121l-57 -115q34 -8 63 -21t50.5 -33.5t34 -49.5t12.5 -68q0 -97 -70.5 -151t-220.5 -54q-22 0 -44.5 3 t-37.5 6v108z" />
+<glyph unicode="&#xe8;" horiz-adv-x="1096" d="M113 541q0 136 33 243t93 181.5t143.5 113.5t184.5 39q99 0 178 -35.5t134 -100t84.5 -155t29.5 -200.5v-113h-692q5 -193 81.5 -284t227.5 -91q51 0 94.5 5t84 14.5t78.5 24t77 32.5v-162q-40 -19 -78.5 -33t-79 -23t-84 -13t-94.5 -4q-110 0 -201 37t-156.5 108 t-101.5 176t-36 240zM305 662h492q0 68 -13.5 124.5t-42 96.5t-72.5 62t-106 22q-114 0 -180.5 -78t-77.5 -227zM285 1548v21h219q16 -34 37.5 -74.5t44.5 -81t47 -78.5t45 -67v-27h-120q-35 28 -76 69.5t-79.5 85.5t-70 84.5t-47.5 67.5z" />
+<glyph unicode="&#xe9;" horiz-adv-x="1096" d="M113 541q0 136 33 243t93 181.5t143.5 113.5t184.5 39q99 0 178 -35.5t134 -100t84.5 -155t29.5 -200.5v-113h-692q5 -193 81.5 -284t227.5 -91q51 0 94.5 5t84 14.5t78.5 24t77 32.5v-162q-40 -19 -78.5 -33t-79 -23t-84 -13t-94.5 -4q-110 0 -201 37t-156.5 108 t-101.5 176t-36 240zM305 662h492q0 68 -13.5 124.5t-42 96.5t-72.5 62t-106 22q-114 0 -180.5 -78t-77.5 -227zM475 1241v27q22 29 45.5 67t47 78.5t44.5 81t37 74.5h219v-21q-16 -27 -47.5 -67.5t-70 -84.5t-79 -85.5t-75.5 -69.5h-121z" />
+<glyph unicode="&#xea;" horiz-adv-x="1096" d="M113 541q0 136 33 243t93 181.5t143.5 113.5t184.5 39q99 0 178 -35.5t134 -100t84.5 -155t29.5 -200.5v-113h-692q5 -193 81.5 -284t227.5 -91q51 0 94.5 5t84 14.5t78.5 24t77 32.5v-162q-40 -19 -78.5 -33t-79 -23t-84 -13t-94.5 -4q-110 0 -201 37t-156.5 108 t-101.5 176t-36 240zM305 662h492q0 68 -13.5 124.5t-42 96.5t-72.5 62t-106 22q-114 0 -180.5 -78t-77.5 -227zM224 1241v27q26 29 60 67t67.5 78.5t63 81t45.5 74.5h192q16 -34 45.5 -74.5t63 -81t68 -78.5t59.5 -67v-27h-121q-51 34 -105 82.5t-106 103.5 q-54 -55 -107 -103.5t-104 -82.5h-121z" />
+<glyph unicode="&#xeb;" horiz-adv-x="1096" d="M113 541q0 136 33 243t93 181.5t143.5 113.5t184.5 39q99 0 178 -35.5t134 -100t84.5 -155t29.5 -200.5v-113h-692q5 -193 81.5 -284t227.5 -91q51 0 94.5 5t84 14.5t78.5 24t77 32.5v-162q-40 -19 -78.5 -33t-79 -23t-84 -13t-94.5 -4q-110 0 -201 37t-156.5 108 t-101.5 176t-36 240zM305 662h492q0 68 -13.5 124.5t-42 96.5t-72.5 62t-106 22q-114 0 -180.5 -78t-77.5 -227zM269 1395q0 54 28 78t68 24q39 0 68 -24.5t29 -77.5t-29 -78t-68 -25q-40 0 -68 25t-28 78zM644 1395q0 54 28 78t68 24q19 0 36.5 -6t30.5 -18.5t21 -31.5 t8 -46q0 -53 -29 -78t-67 -25q-40 0 -68 25t-28 78z" />
+<glyph unicode="&#xec;" horiz-adv-x="530" d="M174 0v1098h182v-1098h-182zM-34 1548v21h219q16 -34 37.5 -74.5t44.5 -81t47 -78.5t45 -67v-27h-120q-35 28 -76 69.5t-79.5 85.5t-70 84.5t-47.5 67.5z" />
+<glyph unicode="&#xed;" horiz-adv-x="530" d="M174 0v1098h182v-1098h-182zM185 1241v27q22 29 45.5 67t47 78.5t44.5 81t37 74.5h219v-21q-16 -27 -47.5 -67.5t-70 -84.5t-79 -85.5t-75.5 -69.5h-121z" />
+<glyph unicode="&#xee;" horiz-adv-x="530" d="M174 0v1098h182v-1098h-182zM-67 1241v27q26 29 60 67t67.5 78.5t63 81t45.5 74.5h192q16 -34 45.5 -74.5t63 -81t68 -78.5t59.5 -67v-27h-121q-51 34 -105 82.5t-106 103.5q-54 -55 -107 -103.5t-104 -82.5h-121z" />
+<glyph unicode="&#xef;" horiz-adv-x="530" d="M174 0v1098h182v-1098h-182zM-18 1395q0 54 28 78t68 24q39 0 68 -24.5t29 -77.5t-29 -78t-68 -25q-40 0 -68 25t-28 78zM357 1395q0 54 28 78t68 24q19 0 36.5 -6t30.5 -18.5t21 -31.5t8 -46q0 -53 -29 -78t-67 -25q-40 0 -68 25t-28 78z" />
+<glyph unicode="&#xf0;" horiz-adv-x="1182" d="M111 477q0 119 31.5 211t90.5 155t143 95.5t189 32.5q102 0 179 -29.5t120 -89.5l8 4q-31 118 -91 214t-150 177l-256 -153l-74 114l217 131q-40 28 -82.5 55.5t-89.5 53.5l70 123q65 -32 126 -68t120 -80l227 138l74 -113l-195 -117q67 -65 122.5 -143t95 -171.5 t61.5 -204t22 -239.5q0 -142 -33.5 -252t-96 -186t-151.5 -115.5t-200 -39.5q-104 0 -191.5 33t-151 96.5t-99 156t-35.5 211.5zM303 471q0 -76 16.5 -138.5t52 -107.5t90 -69.5t130.5 -24.5q154 0 221.5 99.5t67.5 295.5q0 56 -17 109.5t-52 94.5t-90 66t-130 25 q-77 0 -131.5 -23t-89.5 -67t-51.5 -109.5t-16.5 -150.5z" />
+<glyph unicode="&#xf1;" horiz-adv-x="1206" d="M174 0v1098h148l26 -148h10q25 43 59.5 74.5t75.5 52.5t87 31t94 10q183 0 275.5 -95.5t92.5 -305.5v-717h-182v707q0 130 -52.5 195t-164.5 65q-81 0 -136 -26t-88.5 -77t-48 -125t-14.5 -170v-569h-182zM251 1241q5 60 21.5 109t43 83.5t63.5 53t83 18.5 q42 0 82.5 -17.5t78.5 -38.5t72.5 -38.5t63.5 -17.5q45 0 68 26t38 88h105q-5 -60 -21.5 -108.5t-43 -83t-63.5 -53.5t-83 -19q-40 0 -79.5 17.5t-77.5 39t-73 39t-67 17.5q-45 0 -69 -26.5t-38 -88.5h-104z" />
+<glyph unicode="&#xf2;" horiz-adv-x="1182" d="M113 551q0 136 33.5 241.5t95.5 178t151.5 110t200.5 37.5q103 0 190 -37.5t150.5 -110t99 -178t35.5 -241.5q0 -137 -33.5 -243.5t-96 -179t-151.5 -110.5t-200 -38q-103 0 -190 38t-150.5 110.5t-99 179t-35.5 243.5zM301 551q0 -209 68.5 -314.5t222.5 -105.5 t221.5 105.5t67.5 314.5t-68.5 312.5t-222.5 103.5t-221.5 -103.5t-67.5 -312.5zM353 1548v21h219q16 -34 37.5 -74.5t44.5 -81t47 -78.5t45 -67v-27h-120q-35 28 -76 69.5t-79.5 85.5t-70 84.5t-47.5 67.5z" />
+<glyph unicode="&#xf3;" horiz-adv-x="1182" d="M113 551q0 136 33.5 241.5t95.5 178t151.5 110t200.5 37.5q103 0 190 -37.5t150.5 -110t99 -178t35.5 -241.5q0 -137 -33.5 -243.5t-96 -179t-151.5 -110.5t-200 -38q-103 0 -190 38t-150.5 110.5t-99 179t-35.5 243.5zM301 551q0 -209 68.5 -314.5t222.5 -105.5 t221.5 105.5t67.5 314.5t-68.5 312.5t-222.5 103.5t-221.5 -103.5t-67.5 -312.5zM473 1241v27q22 29 45.5 67t47 78.5t44.5 81t37 74.5h219v-21q-16 -27 -47.5 -67.5t-70 -84.5t-79 -85.5t-75.5 -69.5h-121z" />
+<glyph unicode="&#xf4;" horiz-adv-x="1182" d="M113 551q0 136 33.5 241.5t95.5 178t151.5 110t200.5 37.5q103 0 190 -37.5t150.5 -110t99 -178t35.5 -241.5q0 -137 -33.5 -243.5t-96 -179t-151.5 -110.5t-200 -38q-103 0 -190 38t-150.5 110.5t-99 179t-35.5 243.5zM301 551q0 -209 68.5 -314.5t222.5 -105.5 t221.5 105.5t67.5 314.5t-68.5 312.5t-222.5 103.5t-221.5 -103.5t-67.5 -312.5zM253 1241v27q26 29 60 67t67.5 78.5t63 81t45.5 74.5h192q16 -34 45.5 -74.5t63 -81t68 -78.5t59.5 -67v-27h-121q-51 34 -105 82.5t-106 103.5q-54 -55 -107 -103.5t-104 -82.5h-121z" />
+<glyph unicode="&#xf5;" horiz-adv-x="1182" d="M113 551q0 136 33.5 241.5t95.5 178t151.5 110t200.5 37.5q103 0 190 -37.5t150.5 -110t99 -178t35.5 -241.5q0 -137 -33.5 -243.5t-96 -179t-151.5 -110.5t-200 -38q-103 0 -190 38t-150.5 110.5t-99 179t-35.5 243.5zM301 551q0 -209 68.5 -314.5t222.5 -105.5 t221.5 105.5t67.5 314.5t-68.5 312.5t-222.5 103.5t-221.5 -103.5t-67.5 -312.5zM228 1241q5 60 21.5 109t43 83.5t63.5 53t83 18.5q42 0 82.5 -17.5t78.5 -38.5t72.5 -38.5t63.5 -17.5q45 0 68 26t38 88h105q-5 -60 -21.5 -108.5t-43 -83t-63.5 -53.5t-83 -19 q-40 0 -79.5 17.5t-77.5 39t-73 39t-67 17.5q-45 0 -69 -26.5t-38 -88.5h-104z" />
+<glyph unicode="&#xf6;" horiz-adv-x="1182" d="M113 551q0 136 33.5 241.5t95.5 178t151.5 110t200.5 37.5q103 0 190 -37.5t150.5 -110t99 -178t35.5 -241.5q0 -137 -33.5 -243.5t-96 -179t-151.5 -110.5t-200 -38q-103 0 -190 38t-150.5 110.5t-99 179t-35.5 243.5zM301 551q0 -209 68.5 -314.5t222.5 -105.5 t221.5 105.5t67.5 314.5t-68.5 312.5t-222.5 103.5t-221.5 -103.5t-67.5 -312.5zM300 1395q0 54 28 78t68 24q39 0 68 -24.5t29 -77.5t-29 -78t-68 -25q-40 0 -68 25t-28 78zM675 1395q0 54 28 78t68 24q19 0 36.5 -6t30.5 -18.5t21 -31.5t8 -46q0 -53 -29 -78t-67 -25 q-40 0 -68 25t-28 78z" />
+<glyph unicode="&#xf7;" d="M102 647v150h924v-150h-924zM449 373q0 35 9 58.5t24.5 38.5t36 21.5t44.5 6.5q23 0 44 -6.5t37 -21.5t25 -38.5t9 -58.5q0 -33 -9 -56.5t-25 -39t-37 -22.5t-44 -7q-24 0 -44.5 7t-36 22.5t-24.5 39t-9 56.5zM449 1071q0 35 9 58.5t24.5 38.5t36 21.5t44.5 6.5 q23 0 44 -6.5t37 -21.5t25 -38.5t9 -58.5q0 -33 -9 -56.5t-25 -39t-37 -22.5t-44 -7q-24 0 -44.5 7t-36 22.5t-24.5 39t-9 56.5z" />
+<glyph unicode="&#xf8;" horiz-adv-x="1182" d="M115 551q0 136 33.5 241.5t95.5 178t151.5 110t200.5 37.5q63 0 119.5 -14.5t105.5 -42.5l68 108l131 -73l-80 -129q62 -73 96.5 -177.5t34.5 -238.5q0 -137 -33.5 -243.5t-96 -179t-151.5 -110.5t-200 -38q-125 0 -223 53l-68 -109l-131 74l80 131q-63 72 -98 178.5 t-35 243.5zM303 551q0 -84 9.5 -149.5t31.5 -116.5l397 647q-29 17 -66.5 26t-82.5 9q-154 0 -221.5 -103.5t-67.5 -312.5zM446 164q31 -17 67 -25t81 -8q154 0 221.5 105.5t67.5 314.5q0 159 -39 258z" />
+<glyph unicode="&#xf9;" horiz-adv-x="1206" d="M164 381v717h182v-707q0 -130 53 -195t164 -65q81 0 136 26t88.5 76.5t48 124.5t14.5 170v570h182v-1098h-147l-27 147h-10q-25 -43 -59.5 -74.5t-75.5 -52t-87 -30.5t-94 -10q-91 0 -160 23t-115 72t-69.5 125t-23.5 181zM300 1548v21h219q16 -34 37.5 -74.5t44.5 -81 t47 -78.5t45 -67v-27h-120q-35 28 -76 69.5t-79.5 85.5t-70 84.5t-47.5 67.5z" />
+<glyph unicode="&#xfa;" horiz-adv-x="1206" d="M164 381v717h182v-707q0 -130 53 -195t164 -65q81 0 136 26t88.5 76.5t48 124.5t14.5 170v570h182v-1098h-147l-27 147h-10q-25 -43 -59.5 -74.5t-75.5 -52t-87 -30.5t-94 -10q-91 0 -160 23t-115 72t-69.5 125t-23.5 181zM489 1241v27q22 29 45.5 67t47 78.5t44.5 81 t37 74.5h219v-21q-16 -27 -47.5 -67.5t-70 -84.5t-79 -85.5t-75.5 -69.5h-121z" />
+<glyph unicode="&#xfb;" horiz-adv-x="1206" d="M164 381v717h182v-707q0 -130 53 -195t164 -65q81 0 136 26t88.5 76.5t48 124.5t14.5 170v570h182v-1098h-147l-27 147h-10q-25 -43 -59.5 -74.5t-75.5 -52t-87 -30.5t-94 -10q-91 0 -160 23t-115 72t-69.5 125t-23.5 181zM266 1241v27q26 29 60 67t67.5 78.5t63 81 t45.5 74.5h192q16 -34 45.5 -74.5t63 -81t68 -78.5t59.5 -67v-27h-121q-51 34 -105 82.5t-106 103.5q-54 -55 -107 -103.5t-104 -82.5h-121z" />
+<glyph unicode="&#xfc;" horiz-adv-x="1206" d="M164 381v717h182v-707q0 -130 53 -195t164 -65q81 0 136 26t88.5 76.5t48 124.5t14.5 170v570h182v-1098h-147l-27 147h-10q-25 -43 -59.5 -74.5t-75.5 -52t-87 -30.5t-94 -10q-91 0 -160 23t-115 72t-69.5 125t-23.5 181zM309 1395q0 54 28 78t68 24q39 0 68 -24.5 t29 -77.5t-29 -78t-68 -25q-40 0 -68 25t-28 78zM684 1395q0 54 28 78t68 24q19 0 36.5 -6t30.5 -18.5t21 -31.5t8 -46q0 -53 -29 -78t-67 -25q-40 0 -68 25t-28 78z" />
+<glyph unicode="&#xfd;" horiz-adv-x="1001" d="M10 1098h189l215 -613q14 -40 28.5 -84t27 -88t21.5 -85t13 -76h6q5 25 16 68t24.5 91.5t28 95.5t25.5 80l199 611h188l-434 -1241q-28 -81 -60.5 -145.5t-75.5 -109.5t-101 -69.5t-138 -24.5q-52 0 -90 5.5t-65 11.5v145q21 -5 53 -8.5t67 -3.5q48 0 83 11.5t61 33.5 t44.5 54t33.5 73l57 160zM407 1241v27q22 29 45.5 67t47 78.5t44.5 81t37 74.5h219v-21q-16 -27 -47.5 -67.5t-70 -84.5t-79 -85.5t-75.5 -69.5h-121z" />
+<glyph unicode="&#xfe;" horiz-adv-x="1200" d="M174 -492v2048h182v-458l-8 -148h8q23 35 52 65.5t67.5 53t86.5 36t108 13.5q94 0 171 -36t131.5 -107.5t84.5 -177.5t30 -246q0 -141 -30 -247.5t-84.5 -178.5t-131.5 -108.5t-171 -36.5q-59 0 -107 13t-86.5 34.5t-68 50.5t-52.5 61h-12q3 -34 6 -65q2 -26 4 -53.5 t2 -43.5v-469h-182zM356 551q0 -101 13.5 -179.5t46 -132t86.5 -81t135 -27.5q135 0 198.5 109t63.5 313q0 208 -63.5 311t-200.5 103q-76 0 -128.5 -23t-85 -70t-48 -117t-17.5 -165v-41z" />
+<glyph unicode="&#xff;" horiz-adv-x="1001" d="M10 1098h189l215 -613q14 -40 28.5 -84t27 -88t21.5 -85t13 -76h6q5 25 16 68t24.5 91.5t28 95.5t25.5 80l199 611h188l-434 -1241q-28 -81 -60.5 -145.5t-75.5 -109.5t-101 -69.5t-138 -24.5q-52 0 -90 5.5t-65 11.5v145q21 -5 53 -8.5t67 -3.5q48 0 83 11.5t61 33.5 t44.5 54t33.5 73l57 160zM228 1395q0 54 28 78t68 24q39 0 68 -24.5t29 -77.5t-29 -78t-68 -25q-40 0 -68 25t-28 78zM603 1395q0 54 28 78t68 24q19 0 36.5 -6t30.5 -18.5t21 -31.5t8 -46q0 -53 -29 -78t-67 -25q-40 0 -68 25t-28 78z" />
+<glyph unicode="&#x131;" horiz-adv-x="530" d="M174 0v1098h182v-1098h-182z" />
+<glyph unicode="&#x152;" horiz-adv-x="1823" d="M125 735q0 170 38 308.5t117 236.5t199 151.5t283 53.5q98 0 182 -23h756v-164h-574v-452h535v-162h-535v-520h574v-164h-758q-43 -9 -88.5 -14.5t-93.5 -5.5q-163 0 -282.5 54t-198 153t-116.5 238.5t-38 309.5zM322 733q0 -137 26 -246.5t79.5 -186t136 -117 t196.5 -40.5q52 0 97 9t83 24v1112q-38 16 -82.5 24.5t-95.5 8.5q-114 0 -197 -40.5t-137 -116t-80 -184.5t-26 -247z" />
+<glyph unicode="&#x153;" horiz-adv-x="1864" d="M113 551q0 136 33.5 241.5t95.5 178t151.5 110t200.5 37.5q121 0 218.5 -55.5t160.5 -161.5q60 105 152.5 161t209.5 56q99 0 178 -35.5t134 -100t84.5 -155t29.5 -200.5v-113h-692q5 -193 81.5 -284t227.5 -91q51 0 94.5 5t84 14.5t78.5 24t77 32.5v-162 q-40 -19 -78.5 -33t-79 -23t-84 -13t-94.5 -4q-130 0 -232 56t-167 165q-63 -109 -162 -165t-227 -56q-103 0 -190 38t-150.5 110.5t-99 179t-35.5 243.5zM301 551q0 -209 68.5 -314.5t222.5 -105.5q150 0 219.5 100.5t69.5 309.5q0 220 -70 323t-221 103 q-154 0 -221.5 -103.5t-67.5 -312.5zM1073 662h492q0 68 -13.5 124.5t-42 96.5t-72.5 62t-106 22q-114 0 -180.5 -78t-77.5 -227z" />
+<glyph unicode="&#x178;" horiz-adv-x="1079" d="M0 1462h203l336 -739l340 739h200l-446 -893v-569h-187v559zM257 1733q0 54 28 78t68 24q39 0 68 -24.5t29 -77.5t-29 -78t-68 -25q-40 0 -68 25t-28 78zM632 1733q0 54 28 78t68 24q19 0 36.5 -6t30.5 -18.5t21 -31.5t8 -46q0 -53 -29 -78t-67 -25q-40 0 -68 25t-28 78z " />
+<glyph unicode="&#x2c6;" horiz-adv-x="1182" d="M258 1241v27q26 29 60 67t67.5 78.5t63 81t45.5 74.5h192q16 -34 45.5 -74.5t63 -81t68 -78.5t59.5 -67v-27h-121q-51 34 -105 82.5t-106 103.5q-54 -55 -107 -103.5t-104 -82.5h-121z" />
+<glyph unicode="&#x2da;" horiz-adv-x="1182" d="M365 1456q0 51 16 90.5t45.5 67.5t70.5 42.5t91 14.5q48 0 90 -14.5t73 -42t48.5 -67t17.5 -89.5q0 -51 -17.5 -91.5t-48 -68.5t-72.5 -42.5t-91 -14.5q-50 0 -91 14.5t-70.5 42.5t-45.5 67.5t-16 90.5zM475 1456q0 -53 28.5 -83t84.5 -30q49 0 80.5 30t31.5 83t-31.5 83 t-80.5 30q-50 0 -81.5 -30t-31.5 -83z" />
+<glyph unicode="&#x2dc;" horiz-adv-x="1182" d="M258 1241q5 60 21.5 109t43 83.5t63.5 53t83 18.5q42 0 82.5 -17.5t78.5 -38.5t72.5 -38.5t63.5 -17.5q45 0 68 26t38 88h105q-5 -60 -21.5 -108.5t-43 -83t-63.5 -53.5t-83 -19q-40 0 -79.5 17.5t-77.5 39t-73 39t-67 17.5q-45 0 -69 -26.5t-38 -88.5h-104z" />
+<glyph unicode="&#x2000;" horiz-adv-x="953" />
+<glyph unicode="&#x2001;" horiz-adv-x="1907" />
+<glyph unicode="&#x2002;" horiz-adv-x="953" />
+<glyph unicode="&#x2003;" horiz-adv-x="1907" />
+<glyph unicode="&#x2004;" horiz-adv-x="635" />
+<glyph unicode="&#x2005;" horiz-adv-x="476" />
+<glyph unicode="&#x2006;" horiz-adv-x="317" />
+<glyph unicode="&#x2007;" horiz-adv-x="317" />
+<glyph unicode="&#x2008;" horiz-adv-x="238" />
+<glyph unicode="&#x2009;" horiz-adv-x="381" />
+<glyph unicode="&#x200a;" horiz-adv-x="105" />
+<glyph unicode="&#x2010;" horiz-adv-x="659" d="M82 465v168h496v-168h-496z" />
+<glyph unicode="&#x2011;" horiz-adv-x="659" d="M82 465v168h496v-168h-496z" />
+<glyph unicode="&#x2012;" horiz-adv-x="659" d="M82 465v168h496v-168h-496z" />
+<glyph unicode="&#x2013;" horiz-adv-x="1024" d="M82 465v168h860v-168h-860z" />
+<glyph unicode="&#x2014;" horiz-adv-x="2048" d="M82 465v168h1884v-168h-1884z" />
+<glyph unicode="&#x2018;" horiz-adv-x="358" d="M23 983q14 54 33.5 115t42.5 123t49 123.5t51 117.5h137q-15 -61 -29.5 -127t-27.5 -131.5t-24 -127.5t-19 -115h-199z" />
+<glyph unicode="&#x2019;" horiz-adv-x="358" d="M23 961q14 60 28.5 126t28 132t24.5 128t19 115h199l14 -22q-14 -55 -33.5 -115.5t-43 -123t-49 -123.5t-50.5 -117h-137z" />
+<glyph unicode="&#x201a;" horiz-adv-x="512" d="M63 -264q15 61 29.5 127t28 131.5t24.5 128t19 115.5h198l15 -23q-14 -54 -33.5 -115t-43 -123t-49 -123.5t-50.5 -117.5h-138z" />
+<glyph unicode="&#x201c;" horiz-adv-x="743" d="M23 983q14 54 33.5 115t42.5 123t49 123.5t51 117.5h137q-15 -61 -29.5 -127t-27.5 -131.5t-24 -127.5t-19 -115h-199zM408 983q14 54 33.5 115t42.5 123t49 123.5t51 117.5h137q-15 -61 -29.5 -127t-27.5 -131.5t-24 -127.5t-19 -115h-199z" />
+<glyph unicode="&#x201d;" horiz-adv-x="743" d="M23 961q14 60 28.5 126t28 132t24.5 128t19 115h199l14 -22q-14 -55 -33.5 -115.5t-43 -123t-49 -123.5t-50.5 -117h-137zM408 961q14 60 28.5 126t28 132t24.5 128t19 115h199l14 -22q-14 -55 -33.5 -115.5t-43 -123t-49 -123.5t-50.5 -117h-137z" />
+<glyph unicode="&#x201e;" horiz-adv-x="897" d="M63 -264q15 61 29.5 127t28 131.5t24.5 128t19 115.5h198l15 -23q-14 -54 -33.5 -115t-43 -123t-49 -123.5t-50.5 -117.5h-138zM449 -264q14 61 28.5 127t28 131.5t24.5 128t19 115.5h199l14 -23q-14 -54 -33.5 -115t-43 -123t-49 -123.5t-50.5 -117.5h-137z" />
+<glyph unicode="&#x2022;" horiz-adv-x="770" d="M150 748q0 71 18 121t49.5 81.5t74.5 45.5t93 14q49 0 92 -14t75 -45.5t50.5 -81.5t18.5 -121q0 -70 -18.5 -120t-50.5 -81.5t-75 -46.5t-92 -15q-50 0 -93 15t-74.5 46.5t-49.5 81.5t-18 120z" />
+<glyph unicode="&#x2026;" horiz-adv-x="1647" d="M147 111q0 38 10 64.5t27 43t40 24t50 7.5q26 0 49.5 -7.5t40.5 -24t27 -43t10 -64.5q0 -37 -10 -63.5t-27 -43.5t-40.5 -25t-49.5 -8q-27 0 -50 8t-40 25t-27 43.5t-10 63.5zM696 111q0 38 10 64.5t27 43t40 24t50 7.5q26 0 49.5 -7.5t40.5 -24t27 -43t10 -64.5 q0 -37 -10 -63.5t-27 -43.5t-40.5 -25t-49.5 -8q-27 0 -50 8t-40 25t-27 43.5t-10 63.5zM1245 111q0 38 9.5 64.5t27 43t40.5 24t50 7.5q26 0 49.5 -7.5t40.5 -24t27 -43t10 -64.5q0 -37 -10 -63.5t-27 -43.5t-40.5 -25t-49.5 -8q-54 0 -90.5 33t-36.5 107z" />
+<glyph unicode="&#x202f;" horiz-adv-x="381" />
+<glyph unicode="&#x2039;" horiz-adv-x="590" d="M82 526v27l309 414l117 -78l-238 -348l238 -348l-117 -78z" />
+<glyph unicode="&#x203a;" horiz-adv-x="590" d="M82 193l237 348l-237 348l117 78l309 -414v-27l-309 -411z" />
+<glyph unicode="&#x2044;" horiz-adv-x="266" d="M-352 0l811 1462h157l-811 -1462h-157z" />
+<glyph unicode="&#x205f;" horiz-adv-x="476" />
+<glyph unicode="&#x20ac;" d="M63 502v137h148q-2 23 -2 38v44q0 22 1 45t1 31h-148v137h160q18 125 62 226t111.5 173t159.5 111t206 39q97 0 177 -21.5t159 -70.5l-80 -146q-51 31 -110.5 52.5t-131.5 21.5q-69 0 -128 -26t-106 -75.5t-80.5 -121t-51.5 -162.5h432v-137h-447q0 -15 -1 -29 q-1 -12 -1 -25v-22v-39q0 -21 2 -43h385v-137h-366q34 -175 126.5 -267t241.5 -92q75 0 142.5 16t126.5 42v-162q-59 -28 -125.5 -43.5t-157.5 -15.5q-115 0 -206 36.5t-158.5 104t-111.5 164t-65 217.5h-164z" />
+<glyph unicode="&#x2122;" horiz-adv-x="1534" d="M37 1354v108h522v-108h-199v-613h-127v613h-196zM625 741v721h186l180 -551l191 551h178v-721h-127v428q0 9 0.5 24t0.5 33l2 34q0 18 1 30h-6l-195 -549h-100l-186 549h-7q1 -16 2 -33t1.5 -32t1 -27t0.5 -18v-439h-123z" />
+<glyph unicode="&#xe000;" horiz-adv-x="1100" d="M0 1100h1100v-1100h-1100v1100z" />
+<glyph unicode="&#xfb01;" horiz-adv-x="1204" d="M29 961v75l194 68v96q0 107 22.5 177.5t65 112.5t104.5 59.5t140 17.5q59 0 108.5 -11.5t88.5 -25.5l-47 -141q-31 11 -67.5 19.5t-76.5 8.5t-69 -9.5t-48 -33.5t-28.5 -65.5t-9.5 -106.5v-104h245v-137h-245v-961h-183v961h-194zM834 1395q0 60 30.5 87t75.5 27 q22 0 41.5 -6.5t34 -20.5t23 -35.5t8.5 -51.5q0 -58 -31.5 -86.5t-75.5 -28.5q-45 0 -75.5 28t-30.5 87zM848 0v1098h182v-1098h-182z" />
+<glyph unicode="&#xfb02;" horiz-adv-x="1204" d="M29 961v75l194 68v96q0 107 22.5 177.5t65 112.5t104.5 59.5t140 17.5q59 0 108.5 -11.5t88.5 -25.5l-47 -141q-31 11 -67.5 19.5t-76.5 8.5t-69 -9.5t-48 -33.5t-28.5 -65.5t-9.5 -106.5v-104h245v-137h-245v-961h-183v961h-194zM848 0v1556h182v-1556h-182z" />
+<glyph unicode="&#xfb03;" horiz-adv-x="1878" d="M29 961v75l194 68v96q0 107 22.5 177.5t65 112.5t104.5 59.5t140 17.5q59 0 108.5 -11.5t88.5 -25.5l-47 -141q-31 11 -67.5 19.5t-76.5 8.5t-69 -9.5t-48 -33.5t-28.5 -65.5t-9.5 -106.5v-104h245v-137h-245v-961h-183v961h-194zM703 961v75l194 68v96q0 107 22.5 177.5 t65 112.5t104.5 59.5t140 17.5q59 0 108.5 -11.5t88.5 -25.5l-47 -141q-31 11 -67.5 19.5t-76.5 8.5t-69 -9.5t-48 -33.5t-28.5 -65.5t-9.5 -106.5v-104h245v-137h-245v-961h-183v961h-194zM1508 1395q0 60 30.5 87t75.5 27q22 0 41.5 -6.5t34 -20.5t23 -35.5t8.5 -51.5 q0 -58 -31.5 -86.5t-75.5 -28.5q-45 0 -75.5 28t-30.5 87zM1522 0v1098h182v-1098h-182z" />
+<glyph unicode="&#xfb04;" horiz-adv-x="1878" d="M29 961v75l194 68v96q0 107 22.5 177.5t65 112.5t104.5 59.5t140 17.5q59 0 108.5 -11.5t88.5 -25.5l-47 -141q-31 11 -67.5 19.5t-76.5 8.5t-69 -9.5t-48 -33.5t-28.5 -65.5t-9.5 -106.5v-104h245v-137h-245v-961h-183v961h-194zM703 961v75l194 68v96q0 107 22.5 177.5 t65 112.5t104.5 59.5t140 17.5q59 0 108.5 -11.5t88.5 -25.5l-47 -141q-31 11 -67.5 19.5t-76.5 8.5t-69 -9.5t-48 -33.5t-28.5 -65.5t-9.5 -106.5v-104h245v-137h-245v-961h-183v961h-194zM1522 0v1556h182v-1556h-182z" />
+<glyph horiz-adv-x="678" d="M12 778v111l377 579h141v-563h125v-127h-125v-192h-143v192h-375zM158 905h229v195q0 42 1.5 91.5t4.5 98.5q-5 -11 -15 -29.5t-21 -39.5t-23 -41l-21 -35z" />
+</font>
+</defs></svg> 
\ No newline at end of file
Index: modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/manuals/OpenAIRE_registration.pdf
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/manuals/OpenAIRE_registration.pdf
===================================================================
--- modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/manuals/OpenAIRE_registration.pdf	(nonexistent)
+++ modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/manuals/OpenAIRE_registration.pdf	(revision 47450)

Property changes on: modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/manuals/OpenAIRE_registration.pdf
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/fonts/DroidSans-webfont.ttf
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/fonts/DroidSans-webfont.ttf
===================================================================
--- modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/fonts/DroidSans-webfont.ttf	(nonexistent)
+++ modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/fonts/DroidSans-webfont.ttf	(revision 47450)

Property changes on: modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/fonts/DroidSans-webfont.ttf
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/fonts/OpenSans-Light-webfont.ttf
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/fonts/OpenSans-Light-webfont.ttf
===================================================================
--- modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/fonts/OpenSans-Light-webfont.ttf	(nonexistent)
+++ modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/fonts/OpenSans-Light-webfont.ttf	(revision 47450)

Property changes on: modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/fonts/OpenSans-Light-webfont.ttf
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/WEB-INF/log4j.properties
===================================================================
--- modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/WEB-INF/log4j.properties	(nonexistent)
+++ modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/WEB-INF/log4j.properties	(revision 47450)
@@ -0,0 +1,36 @@
+log4j.rootLogger = WARN, R
+
+log4j.logger.eu.dnetlib = INFO
+log4j.logger.org.springframework = INFO, S
+log4j.additivity.org.springframework = false
+
+log4j.logger.com.opensymphony.xwork2.ognl.OgnlValueStack = FATAL
+log4j.logger.com.opensymphony.xwork2.ObjectFactory = FATAL
+
+log4j.appender.R=org.apache.log4j.RollingFileAppender
+log4j.appender.R.File=/var/log/dnet/validator/validator-admin.log
+log4j.appender.R.MaxFileSize=10MB
+log4j.appender.R.MaxBackupIndex=10
+log4j.appender.R.layout=org.apache.log4j.PatternLayout
+log4j.appender.R.layout.ConversionPattern= %d %p %t [%c] - %m%n
+
+log4j.appender.S=org.apache.log4j.RollingFileAppender
+log4j.appender.S.File=/var/log/dnet/validator/validator-admin-spring.log
+log4j.appender.S.MaxFileSize=10MB
+log4j.appender.S.MaxBackupIndex=10
+log4j.appender.S.layout=org.apache.log4j.PatternLayout
+log4j.appender.S.layout.ConversionPattern= %d %p %t [%c] - %m%n
+
+#log4j.rootLogger = ERROR, stdout
+#
+#log4j.logger.gr.uoa = INFO, stdout
+#log4j.logger.org.springframework = INFO, stdout
+#log4j.additivity.org.springframework = false
+#
+#log4j.logger.com.opensymphony.xwork2.ognl.OgnlValueStack = FATAL, stdout
+#log4j.logger.com.opensymphony.xwork2.ObjectFactory = FATAL, stdout
+#
+#log4j.appender.stdout=org.apache.log4j.ConsoleAppender
+#log4j.appender.stdout.Target=System.out
+#log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
+#log4j.appender.stdout.layout.ConversionPattern=%d %p %t [%c] - %m%n
Index: modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/fonts/maven_pro_regular-webfont.eot
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/fonts/maven_pro_regular-webfont.eot
===================================================================
--- modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/fonts/maven_pro_regular-webfont.eot	(nonexistent)
+++ modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/fonts/maven_pro_regular-webfont.eot	(revision 47450)

Property changes on: modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/fonts/maven_pro_regular-webfont.eot
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/fonts/OpenSans-Light-webfont.svg
===================================================================
--- modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/fonts/OpenSans-Light-webfont.svg	(nonexistent)
+++ modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/fonts/OpenSans-Light-webfont.svg	(revision 47450)
@@ -0,0 +1,252 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" >
+<svg xmlns="http://www.w3.org/2000/svg">
+<metadata>
+This is a custom SVG webfont generated by Font Squirrel.
+Copyright   : Digitized data copyright  20102011 Google Corporation
+Foundry     : Ascender Corporation
+Foundry URL : httpwwwascendercorpcom
+</metadata>
+<defs>
+<font id="OpenSansLight" horiz-adv-x="1169" >
+<font-face units-per-em="2048" ascent="1638" descent="-410" />
+<missing-glyph horiz-adv-x="532" />
+<glyph unicode=" "  horiz-adv-x="532" />
+<glyph unicode="&#x09;" horiz-adv-x="532" />
+<glyph unicode="&#xa0;" horiz-adv-x="532" />
+<glyph unicode="!" horiz-adv-x="492" d="M164 78q0 98 80 98q82 0 82 -98t-82 -98q-80 0 -80 98zM186 1462h119l-29 -1085h-61z" />
+<glyph unicode="&#x22;" horiz-adv-x="723" d="M133 1462h127l-33 -528h-61zM463 1462h127l-33 -528h-61z" />
+<glyph unicode="#" horiz-adv-x="1323" d="M55 451v79h299l76 398h-297v80h311l86 454h91l-89 -454h365l88 454h86l-88 -454h285v-80h-301l-76 -398h303v-79h-320l-86 -451h-90l88 451h-360l-86 -451h-88l86 451h-283zM440 530h363l78 398h-363z" />
+<glyph unicode="$" d="M164 186v103q75 -36 179.5 -61t193.5 -25v508q-145 44 -215 88t-102 104t-32 146q0 124 94.5 208.5t254.5 104.5v192h81v-190q197 -9 351 -72l-33 -90q-141 62 -318 72v-486q213 -66 293 -144t80 -204q0 -133 -99 -217t-274 -106v-236h-81v232q-92 2 -200.5 22.5 t-172.5 50.5zM297 1049q0 -86 57 -141t183 -93v453q-119 -16 -179.5 -76t-60.5 -143zM618 209q122 13 192.5 75t70.5 160q0 85 -63 140.5t-200 95.5v-471z" />
+<glyph unicode="%" horiz-adv-x="1653" d="M113 1026q0 223 72 340t212 117q139 0 215 -120.5t76 -336.5q0 -226 -75 -343.5t-216 -117.5q-133 0 -208.5 120.5t-75.5 340.5zM211 1026q0 -186 45 -279.5t141 -93.5q193 0 193 373q0 184 -49.5 276.5t-143.5 92.5q-96 0 -141 -92.5t-45 -276.5zM373 0l811 1462h96 l-811 -1462h-96zM965 438q0 225 73.5 341t212.5 116q137 0 213 -120t76 -337q0 -226 -74 -343.5t-215 -117.5q-136 0 -211 121.5t-75 339.5zM1063 438q0 -185 45 -277.5t141 -92.5q193 0 193 370q0 369 -193 369q-96 0 -141 -91.5t-45 -277.5z" />
+<glyph unicode="&#x26;" horiz-adv-x="1460" d="M123 371q0 138 73.5 235t274.5 205l-75 82q-66 71 -98 139t-32 142q0 143 95.5 227t256.5 84q155 0 245.5 -81t90.5 -224q0 -105 -70 -192.5t-253 -194.5l452 -457q61 72 104 157t75 201h96q-63 -246 -209 -426l266 -268h-135l-193 197q-92 -90 -164 -131.5t-157.5 -63.5 t-194.5 -22q-209 0 -328.5 103t-119.5 288zM227 375q0 -143 93 -224t258 -81q128 0 234.5 43.5t209.5 146.5l-483 485q-136 -72 -196.5 -122.5t-88 -109.5t-27.5 -138zM373 1176q0 -79 40 -146t152 -174q159 85 221 159t62 169q0 94 -62 152.5t-168 58.5q-114 0 -179.5 -58 t-65.5 -161z" />
+<glyph unicode="'" horiz-adv-x="393" d="M133 1462h127l-33 -528h-61z" />
+<glyph unicode="(" horiz-adv-x="557" d="M82 561q0 265 77.5 496t223.5 405h113q-148 -182 -227 -412.5t-79 -486.5q0 -483 304 -887h-111q-147 170 -224 397t-77 488z" />
+<glyph unicode=")" horiz-adv-x="557" d="M61 1462h113q147 -175 224 -406.5t77 -494.5t-77.5 -490t-223.5 -395h-111q304 404 304 887q0 257 -79 487.5t-227 411.5z" />
+<glyph unicode="*" horiz-adv-x="1128" d="M104 1124l19 131l401 -104l-39 405h146l-37 -405l405 104l21 -131l-395 -39l247 -340l-124 -71l-191 379l-180 -379l-125 71l242 340z" />
+<glyph unicode="+" d="M111 682v82h432v434h82v-434h434v-82h-434v-432h-82v432h-432z" />
+<glyph unicode="," horiz-adv-x="440" d="M68 -264q77 275 110 502h117l12 -21q-75 -265 -174 -481h-65z" />
+<glyph unicode="-" horiz-adv-x="659" d="M92 512v82h475v-82h-475z" />
+<glyph unicode="." horiz-adv-x="487" d="M162 78q0 98 80 98q82 0 82 -98t-82 -98q-80 0 -80 98z" />
+<glyph unicode="/" horiz-adv-x="698" d="M25 0l544 1462h105l-545 -1462h-104z" />
+<glyph unicode="0" d="M115 735q0 382 115.5 566t351.5 184q231 0 352 -190.5t121 -559.5q0 -385 -117.5 -570t-355.5 -185q-229 0 -348 190.5t-119 564.5zM223 735q0 -340 89 -502.5t270 -162.5q189 0 275.5 168t86.5 497q0 324 -86.5 492t-275.5 168t-274 -168t-85 -492z" />
+<glyph unicode="1" d="M199 1165l397 297h86v-1462h-98v1065q0 145 12 301q-15 -15 -31 -29t-309 -243z" />
+<glyph unicode="2" d="M113 0v88l389 406q164 170 230 260t97 172t31 172q0 131 -86 213t-223 82q-183 0 -350 -133l-54 69q183 154 406 154q191 0 300.5 -102t109.5 -281q0 -145 -73.5 -280.5t-268.5 -334.5l-375 -385v-4h782v-96h-915z" />
+<glyph unicode="3" d="M94 63v99q84 -44 188.5 -69t196.5 -25q221 0 332 89.5t111 252.5q0 145 -113.5 223t-333.5 78h-158v96h160q182 0 288.5 86.5t106.5 234.5q0 122 -86.5 195.5t-226.5 73.5q-109 0 -199 -30.5t-202 -104.5l-49 67q85 71 205 112.5t243 41.5q202 0 312 -95.5t110 -269.5 q0 -136 -85.5 -229t-229.5 -119v-6q176 -22 268 -112t92 -242q0 -205 -139.5 -317.5t-401.5 -112.5q-223 0 -389 83z" />
+<glyph unicode="4" d="M43 373v67l725 1030h121v-1011h252v-86h-252v-373h-94v373h-752zM162 459h633v418q0 302 14 507h-8q-20 -37 -123 -188z" />
+<glyph unicode="5" d="M143 63v103q108 -55 192 -76.5t179 -21.5q192 0 308 101.5t116 274.5q0 163 -113 256t-307 93q-130 0 -272 -39l-60 39l58 669h704v-96h-610l-45 -516q156 29 244 29q234 0 368.5 -113t134.5 -311q0 -225 -140 -350t-386 -125q-109 0 -207 21.5t-164 61.5z" />
+<glyph unicode="6" d="M131 623q0 285 77.5 479.5t220 288.5t343.5 94q94 0 172 -23v-88q-73 27 -176 27q-247 0 -384.5 -178t-154.5 -518h13q76 98 174 148t207 50q205 0 320.5 -117t115.5 -323q0 -224 -121.5 -353.5t-327.5 -129.5q-222 0 -350.5 169.5t-128.5 473.5zM240 504 q0 -111 49.5 -213.5t134 -162.5t186.5 -60q164 0 255 103t91 294q0 168 -90 262t-245 94q-102 0 -189.5 -45t-139.5 -119.5t-52 -152.5z" />
+<glyph unicode="7" d="M109 1366v96h946v-73l-604 -1389h-117l602 1366h-827z" />
+<glyph unicode="8" d="M121 375q0 131 83 230t257 169q-161 76 -227 160.5t-66 202.5q0 105 53 184.5t148.5 122.5t212.5 43q186 0 299.5 -95t113.5 -257q0 -112 -70.5 -198t-228.5 -159q192 -79 270 -173t78 -228q0 -181 -126.5 -289t-339.5 -108q-221 0 -339 101t-118 294zM223 360 q0 -138 93.5 -214t261.5 -76q164 0 264 80.5t100 218.5q0 124 -78.5 201.5t-302.5 162.5q-184 -71 -261 -157t-77 -216zM268 1137q0 -70 31.5 -123.5t91 -97t199.5 -101.5q163 63 234 139t71 183q0 120 -84.5 190t-230.5 70q-141 0 -226.5 -69.5t-85.5 -190.5z" />
+<glyph unicode="9" d="M111 993q0 220 124.5 356t323.5 136q144 0 252 -75.5t166.5 -221.5t58.5 -346q0 -288 -75.5 -482t-220 -287t-349.5 -93q-104 0 -192 26v86q43 -14 103.5 -21.5t92.5 -7.5q247 0 387 178.5t156 520.5h-12q-73 -96 -174 -147.5t-211 -51.5q-203 0 -316.5 112t-113.5 318z M213 999q0 -174 87 -264t249 -90q101 0 188.5 45t139 119.5t51.5 151.5q0 117 -46.5 219t-130 159.5t-192.5 57.5q-158 0 -252 -106.5t-94 -291.5z" />
+<glyph unicode=":" horiz-adv-x="487" d="M162 78q0 98 80 98q82 0 82 -98t-82 -98q-80 0 -80 98zM162 971q0 98 80 98q82 0 82 -98q0 -53 -23.5 -76t-58.5 -23q-34 0 -57 23t-23 76z" />
+<glyph unicode=";" horiz-adv-x="487" d="M76 -264q29 97 62 245.5t48 256.5h117l12 -21q-75 -265 -174 -481h-65zM162 971q0 98 80 98q82 0 82 -98q0 -53 -23.5 -76t-58.5 -23q-34 0 -57 23t-23 76z" />
+<glyph unicode="&#x3c;" d="M111 682v61l948 474v-95l-823 -405l823 -355v-96z" />
+<glyph unicode="=" d="M111 477v82h948v-82h-948zM111 885v82h948v-82h-948z" />
+<glyph unicode="&#x3e;" d="M111 266v96l823 355l-823 405v95l948 -474v-61z" />
+<glyph unicode="?" horiz-adv-x="862" d="M57 1403q110 48 184.5 64t153.5 16q183 0 288 -98.5t105 -270.5q0 -68 -18 -119t-50.5 -94.5t-78.5 -84t-102 -87.5q-64 -54 -98.5 -98.5t-50 -93.5t-15.5 -146v-14h-82v37q0 123 37.5 201t138.5 167l91 79q72 61 103 121t31 138q0 127 -83.5 202t-219.5 75 q-79 0 -148 -17.5t-149 -56.5zM260 78q0 98 80 98q82 0 82 -98t-82 -98q-80 0 -80 98z" />
+<glyph unicode="@" horiz-adv-x="1815" d="M113 561q0 256 108.5 460.5t307 317.5t448.5 113q215 0 380.5 -89t255 -254.5t89.5 -383.5q0 -228 -90.5 -366t-245.5 -138q-89 0 -144.5 54t-64.5 147h-4q-43 -100 -124 -150.5t-189 -50.5q-148 0 -229 96.5t-81 270.5q0 202 120.5 330.5t314.5 128.5q138 0 286 -41 l-22 -464v-30q0 -104 35 -156.5t116 -52.5q103 0 168.5 116.5t65.5 303.5q0 194 -79 340t-225.5 224.5t-334.5 78.5q-230 0 -405.5 -99.5t-270 -281.5t-94.5 -418q0 -322 167 -497.5t474 -175.5q93 0 188.5 18t231.5 70v-99q-203 -80 -414 -80q-349 0 -544 200.5t-195 557.5 zM633 590q0 -143 55 -215t174 -72q255 0 273 346l16 291q-79 27 -193 27q-149 0 -237 -102.5t-88 -274.5z" />
+<glyph unicode="A" horiz-adv-x="1229" d="M0 0l588 1468h65l576 -1468h-115l-203 516h-594l-204 -516h-113zM354 608h523l-199 527q-25 62 -60 172q-27 -96 -59 -174z" />
+<glyph unicode="B" horiz-adv-x="1284" d="M207 0v1462h401q271 0 398 -92t127 -278q0 -127 -77.5 -211.5t-226.5 -108.5v-6q175 -26 257.5 -110.5t82.5 -235.5q0 -202 -134 -311t-380 -109h-448zM309 90h344q406 0 406 330q0 301 -428 301h-322v-631zM309 811h322q206 0 299.5 68.5t93.5 214.5t-105.5 212 t-314.5 66h-295v-561z" />
+<glyph unicode="C" horiz-adv-x="1272" d="M129 735q0 223 84.5 393t243 262.5t368.5 92.5q214 0 383 -80l-41 -92q-160 80 -336 80q-275 0 -433 -176t-158 -482q0 -313 149 -486t426 -173q184 0 338 47v-90q-145 -51 -362 -51q-308 0 -485 199t-177 556z" />
+<glyph unicode="D" horiz-adv-x="1446" d="M207 0v1462h395q350 0 532.5 -183t182.5 -534q0 -368 -193 -556.5t-567 -188.5h-350zM309 90h242q655 0 655 651q0 314 -159.5 472.5t-468.5 158.5h-269v-1282z" />
+<glyph unicode="E" horiz-adv-x="1130" d="M207 0v1462h799v-94h-697v-553h658v-94h-658v-627h697v-94h-799z" />
+<glyph unicode="F" horiz-adv-x="1028" d="M207 0v1462h801v-94h-699v-620h660v-95h-660v-653h-102z" />
+<glyph unicode="G" horiz-adv-x="1481" d="M129 729q0 223 91.5 395.5t262 266.5t391.5 94q239 0 429 -88l-41 -92q-190 88 -394 88q-289 0 -458.5 -178.5t-169.5 -481.5q0 -330 161 -496.5t473 -166.5q202 0 343 57v514h-435v96h539v-667q-212 -90 -477 -90q-346 0 -530.5 195.5t-184.5 553.5z" />
+<glyph unicode="H" horiz-adv-x="1473" d="M207 0v1462h102v-649h854v649h103v-1462h-103v719h-854v-719h-102z" />
+<glyph unicode="I" horiz-adv-x="516" d="M207 0v1462h102v-1462h-102z" />
+<glyph unicode="J" horiz-adv-x="506" d="M-184 -254q78 -20 149 -20q242 0 242 264v1472h102v-1462q0 -369 -342 -369q-92 0 -151 27v88z" />
+<glyph unicode="K" horiz-adv-x="1190" d="M207 0v1462h102v-760l162 162l573 598h130l-599 -618l615 -844h-125l-561 772l-195 -172v-600h-102z" />
+<glyph unicode="L" horiz-adv-x="1051" d="M207 0v1462h102v-1366h697v-96h-799z" />
+<glyph unicode="M" horiz-adv-x="1767" d="M207 0v1462h158l518 -1286h6l518 1286h154v-1462h-103v1108q0 116 12 240h-8l-547 -1348h-65l-545 1350h-8q8 -124 8 -254v-1096h-98z" />
+<glyph unicode="N" horiz-adv-x="1477" d="M207 0v1462h102l865 -1296h6q-9 180 -9 342v954h99v-1462h-103l-866 1298h-8q12 -232 12 -350v-948h-98z" />
+<glyph unicode="O" horiz-adv-x="1565" d="M129 735q0 349 175.5 549.5t479.5 200.5q306 0 479 -201.5t173 -550.5q0 -348 -174 -550.5t-480 -202.5q-305 0 -479 202.5t-174 552.5zM240 733q0 -314 140 -485.5t402 -171.5q264 0 403.5 170t139.5 487q0 316 -139.5 484.5t-401.5 168.5q-261 0 -402.5 -170 t-141.5 -483z" />
+<glyph unicode="P" horiz-adv-x="1198" d="M207 0v1462h358q522 0 522 -420q0 -212 -144 -325t-408 -113h-226v-604h-102zM309 692h201q247 0 357 81.5t110 264.5q0 169 -104 250.5t-322 81.5h-242v-678z" />
+<glyph unicode="Q" horiz-adv-x="1565" d="M129 735q0 349 175.5 549.5t479.5 200.5q306 0 479 -201.5t173 -550.5q0 -294 -126 -486.5t-349 -246.5l333 -348h-166l-282 330l-33 -2h-31q-305 0 -479 202.5t-174 552.5zM240 733q0 -314 140 -485.5t402 -171.5q264 0 403.5 170t139.5 487q0 316 -139.5 484.5 t-401.5 168.5q-261 0 -402.5 -170t-141.5 -483z" />
+<glyph unicode="R" horiz-adv-x="1217" d="M207 0v1462h348q272 0 402 -100.5t130 -302.5q0 -147 -77.5 -248t-235.5 -145l397 -666h-122l-377 637h-363v-637h-102zM309 725h279q185 0 287 82.5t102 243.5q0 167 -100 243t-326 76h-242v-645z" />
+<glyph unicode="S" horiz-adv-x="1116" d="M111 39v102q158 -67 403 -67q180 0 285.5 82.5t105.5 216.5q0 83 -35 137.5t-114 99.5t-232 97q-224 77 -309.5 166.5t-85.5 238.5q0 164 128.5 267.5t330.5 103.5q206 0 387 -78l-37 -88q-182 76 -348 76q-162 0 -258 -75t-96 -204q0 -81 29.5 -133t96.5 -93.5 t230 -99.5q171 -59 257 -114.5t125.5 -126t39.5 -170.5q0 -183 -134.5 -290t-357.5 -107q-268 0 -411 59z" />
+<glyph unicode="T" horiz-adv-x="1073" d="M10 1366v96h1053v-96h-475v-1366h-103v1366h-475z" />
+<glyph unicode="U" horiz-adv-x="1473" d="M190 520v942h103v-946q0 -211 117 -328.5t331 -117.5q209 0 324 115.5t115 320.5v956h102v-946q0 -252 -146 -394t-407 -142q-254 0 -396.5 142.5t-142.5 397.5z" />
+<glyph unicode="V" horiz-adv-x="1182" d="M0 1462h109l368 -995q84 -225 113 -338q20 75 79 233l402 1100h111l-547 -1462h-90z" />
+<glyph unicode="W" horiz-adv-x="1827" d="M51 1462h107l256 -942q15 -57 28 -105.5t23.5 -91t19 -82t15.5 -79.5q24 136 102 413l250 887h113l293 -1018q51 -176 73 -284q13 72 33.5 153t308.5 1149h103l-404 -1462h-84l-321 1128q-40 139 -60 228q-16 -87 -45.5 -200t-322.5 -1156h-86z" />
+<glyph unicode="X" horiz-adv-x="1102" d="M0 0l492 762l-447 700h115l395 -626l401 626h109l-453 -698l490 -764h-117l-432 682l-440 -682h-113z" />
+<glyph unicode="Y" horiz-adv-x="1081" d="M0 1462h117l426 -800l428 800h110l-487 -897v-565h-105v557z" />
+<glyph unicode="Z" horiz-adv-x="1180" d="M82 0v76l856 1290h-817v96h954v-76l-858 -1290h881v-96h-1016z" />
+<glyph unicode="[" horiz-adv-x="653" d="M174 -324v1786h428v-94h-330v-1597h330v-95h-428z" />
+<glyph unicode="\" horiz-adv-x="698" d="M25 1462h102l547 -1462h-103z" />
+<glyph unicode="]" horiz-adv-x="653" d="M51 -229h330v1597h-330v94h428v-1786h-428v95z" />
+<glyph unicode="^" d="M88 561l465 912h68l460 -912h-100l-395 791l-398 -791h-100z" />
+<glyph unicode="_" horiz-adv-x="842" d="M-4 -184h850v-82h-850v82z" />
+<glyph unicode="`" horiz-adv-x="1182" d="M393 1552v17h142q26 -48 98.5 -142t142.5 -170v-16h-69q-96 79 -188.5 171.5t-125.5 139.5z" />
+<glyph unicode="a" horiz-adv-x="1085" d="M98 289q0 159 132.5 247t383.5 93l207 6v72q0 155 -63 234t-203 79q-151 0 -313 -84l-37 86q179 84 354 84q179 0 267.5 -93t88.5 -290v-723h-73l-25 172h-8q-82 -105 -168.5 -148.5t-204.5 -43.5q-160 0 -249 82t-89 227zM203 285q0 -102 62.5 -158.5t176.5 -56.5 q174 0 274.5 99.5t100.5 276.5v107l-190 -8q-229 -11 -326.5 -71.5t-97.5 -188.5z" />
+<glyph unicode="b" horiz-adv-x="1219" d="M182 0v1556h99v-391q0 -88 -4 -162l-3 -85h7q62 98 149.5 144t210.5 46q228 0 343.5 -143.5t115.5 -419.5q0 -271 -121.5 -418t-341.5 -147q-116 0 -209 48t-147 136h-9l-28 -164h-62zM281 528q0 -246 86.5 -353t269.5 -107q178 0 268 124.5t90 354.5q0 471 -356 471 q-192 0 -275 -110t-83 -363v-17z" />
+<glyph unicode="c" horiz-adv-x="973" d="M119 537q0 270 137 420.5t375 150.5q141 0 270 -49l-27 -88q-141 47 -245 47q-200 0 -303 -123.5t-103 -355.5q0 -220 103 -344.5t288 -124.5q148 0 275 53v-92q-104 -51 -273 -51q-233 0 -365 147t-132 410z" />
+<glyph unicode="d" horiz-adv-x="1219" d="M119 528q0 282 118 431t343 149q118 0 204 -43t154 -147h6q-6 126 -6 247v391h98v-1556h-65l-25 166h-8q-124 -186 -356 -186q-225 0 -344 140t-119 408zM223 530q0 -462 359 -462q184 0 270 107t86 353v17q0 252 -84.5 362.5t-273.5 110.5q-178 0 -267.5 -125 t-89.5 -363z" />
+<glyph unicode="e" horiz-adv-x="1124" d="M119 535q0 260 128 416.5t345 156.5q192 0 303 -134t111 -364v-80h-783q2 -224 104.5 -342t293.5 -118q93 0 163.5 13t178.5 56v-90q-92 -40 -170 -54.5t-172 -14.5q-237 0 -369.5 146t-132.5 409zM229 618h672q0 189 -82 295.5t-227 106.5q-157 0 -252 -103.5 t-111 -298.5z" />
+<glyph unicode="f" horiz-adv-x="614" d="M29 1001v58l202 37v84q0 200 73.5 293.5t240.5 93.5q90 0 180 -27l-23 -86q-80 25 -159 25q-116 0 -164.5 -68.5t-48.5 -222.5v-101h256v-86h-256v-1001h-99v1001h-202z" />
+<glyph unicode="g" horiz-adv-x="1071" d="M45 -193q0 112 69.5 186t188.5 101q-49 21 -78.5 59.5t-29.5 88.5q0 109 139 192q-95 39 -148 122.5t-53 191.5q0 163 103.5 261.5t279.5 98.5q107 0 166 -21h348v-69l-225 -14q90 -112 90 -246q0 -157 -104.5 -254.5t-280.5 -97.5q-74 0 -104 6q-59 -31 -90 -73t-31 -89 q0 -52 39.5 -76t132.5 -24h190q177 0 271 -71.5t94 -211.5q0 -172 -139.5 -265.5t-397.5 -93.5q-205 0 -317.5 79t-112.5 220zM150 -184q0 -224 333 -224q428 0 428 273q0 98 -67 142t-217 44h-178q-299 0 -299 -235zM233 748q0 -126 76.5 -195.5t204.5 -69.5 q136 0 208.5 69t72.5 200q0 139 -74.5 208.5t-208.5 69.5q-130 0 -204.5 -74.5t-74.5 -207.5z" />
+<glyph unicode="h" horiz-adv-x="1208" d="M182 0v1556h99v-495l-5 -139h7q61 98 154 142t231 44q370 0 370 -397v-711h-98v705q0 164 -69 238.5t-214 74.5q-195 0 -285.5 -98.5t-90.5 -319.5v-600h-99z" />
+<glyph unicode="i" horiz-adv-x="463" d="M168 1389q0 96 63 96q31 0 48.5 -25t17.5 -71q0 -45 -17.5 -71t-48.5 -26q-63 0 -63 97zM182 0v1087h99v-1087h-99z" />
+<glyph unicode="j" horiz-adv-x="463" d="M-98 -381q69 -20 129 -20q151 0 151 176v1312h99v-1298q0 -135 -63.5 -208t-180.5 -73q-80 0 -135 25v86zM168 1389q0 96 63 96q31 0 48.5 -25t17.5 -71q0 -45 -17.5 -71t-48.5 -26q-63 0 -63 97z" />
+<glyph unicode="k" horiz-adv-x="991" d="M182 0v1556h99v-780l-7 -299h5l555 610h120l-428 -464l465 -623h-119l-413 549l-178 -162v-387h-99z" />
+<glyph unicode="l" horiz-adv-x="463" d="M182 0v1556h99v-1556h-99z" />
+<glyph unicode="m" horiz-adv-x="1808" d="M182 0v1087h82l21 -149h6q45 81 128 125.5t183 44.5q257 0 330 -193h4q53 93 142.5 143t203.5 50q178 0 267 -95t89 -302v-711h-98v713q0 159 -62 232t-190 73q-167 0 -247 -92t-80 -289v-637h-101v743q0 275 -252 275q-171 0 -249 -99.5t-78 -318.5v-600h-99z" />
+<glyph unicode="n" horiz-adv-x="1208" d="M182 0v1087h84l19 -149h6q106 170 377 170q370 0 370 -397v-711h-98v705q0 164 -69 238.5t-214 74.5q-195 0 -285.5 -98.5t-90.5 -319.5v-600h-99z" />
+<glyph unicode="o" horiz-adv-x="1200" d="M119 545q0 266 129 414.5t354 148.5q224 0 351.5 -150.5t127.5 -412.5q0 -266 -129 -415.5t-356 -149.5q-143 0 -252 69t-167 198t-58 298zM223 545q0 -224 98.5 -349.5t278.5 -125.5t278.5 125.5t98.5 349.5q0 225 -99.5 349t-279.5 124t-277.5 -123.5t-97.5 -349.5z " />
+<glyph unicode="p" horiz-adv-x="1219" d="M182 -492v1579h84l19 -155h6q112 176 358 176q220 0 335.5 -144.5t115.5 -420.5q0 -268 -121.5 -415.5t-331.5 -147.5q-251 0 -366 188h-7l3 -84q4 -74 4 -162v-414h-99zM281 541q0 -255 85.5 -364t278.5 -109q167 0 258.5 124t91.5 347q0 479 -346 479 q-190 0 -279 -104.5t-89 -340.5v-32z" />
+<glyph unicode="q" horiz-adv-x="1219" d="M119 532q0 275 118 425.5t338 150.5q236 0 353 -174h6l18 153h84v-1579h-98v414q0 122 6 248h-6q-118 -190 -369 -190q-214 0 -332 142t-118 410zM223 530q0 -229 89.5 -345.5t258.5 -116.5q198 0 282.5 109t84.5 366v12q0 245 -85 354t-271 109q-176 0 -267.5 -124 t-91.5 -364z" />
+<glyph unicode="r" horiz-adv-x="797" d="M182 0v1087h84l10 -196h7q67 120 143 168.5t184 48.5q69 0 148 -14l-19 -95q-68 17 -141 17q-139 0 -228 -118t-89 -298v-600h-99z" />
+<glyph unicode="s" horiz-adv-x="954" d="M84 47v107q164 -82 346 -82q161 0 244.5 53.5t83.5 142.5q0 82 -66.5 138t-218.5 110q-163 59 -229 101.5t-99.5 96t-33.5 130.5q0 122 102.5 193t286.5 71q176 0 334 -66l-37 -90q-160 66 -297 66q-133 0 -211 -44t-78 -122q0 -85 60.5 -136t236.5 -114 q147 -53 214 -95.5t100.5 -96.5t33.5 -127q0 -146 -111 -224.5t-315 -78.5q-218 0 -346 67z" />
+<glyph unicode="t" horiz-adv-x="686" d="M25 1001v58l161 45l50 246h51v-263h319v-86h-319v-688q0 -125 44 -185t138 -60t164 16v-80q-72 -24 -166 -24q-144 0 -212.5 77t-68.5 242v702h-161z" />
+<glyph unicode="u" horiz-adv-x="1208" d="M170 377v710h98v-704q0 -164 69 -238.5t214 -74.5q194 0 285.5 98t91.5 319v600h98v-1087h-84l-18 150h-6q-106 -170 -377 -170q-371 0 -371 397z" />
+<glyph unicode="v" horiz-adv-x="940" d="M0 1087h102l281 -739q56 -142 84 -248h6q41 136 84 250l281 737h102l-420 -1087h-100z" />
+<glyph unicode="w" horiz-adv-x="1481" d="M31 1087h106l174 -630q61 -234 80 -344h6q59 234 86 311l224 663h90l213 -661q72 -235 88 -311h6q8 65 80 348l166 624h100l-295 -1087h-104l-238 727q-23 74 -59 217h-6l-21 -74l-45 -145l-242 -725h-98z" />
+<glyph unicode="x" horiz-adv-x="1020" d="M55 0l394 559l-379 528h114l324 -458l321 458h109l-373 -528l400 -559h-115l-342 485l-344 -485h-109z" />
+<glyph unicode="y" horiz-adv-x="940" d="M0 1087h102l230 -610q105 -281 133 -379h6q42 129 137 385l230 604h102l-487 -1263q-59 -154 -99 -208t-93.5 -81t-129.5 -27q-57 0 -127 21v86q58 -16 125 -16q51 0 90 24t70.5 74.5t73 160t53.5 142.5z" />
+<glyph unicode="z" horiz-adv-x="944" d="M82 0v63l645 936h-598v88h727v-63l-649 -936h651v-88h-776z" />
+<glyph unicode="{" horiz-adv-x="723" d="M61 528v80q122 2 176 51t54 148v350q0 299 360 305v-90q-138 -5 -200 -58t-62 -157v-305q0 -130 -44 -194t-142 -85v-8q97 -20 141.5 -83.5t44.5 -186.5v-322q0 -102 59.5 -152.5t202.5 -53.5v-91q-195 0 -277.5 75t-82.5 231v337q0 205 -230 209z" />
+<glyph unicode="|" horiz-adv-x="1108" d="M508 -506v2067h92v-2067h-92z" />
+<glyph unicode="}" horiz-adv-x="723" d="M72 -233q141 2 201.5 52.5t60.5 153.5v322q0 123 44.5 186.5t141.5 83.5v8q-97 20 -141.5 84t-44.5 195v305q0 103 -61.5 156.5t-200.5 58.5v90q174 0 267 -77.5t93 -227.5v-350q0 -100 54.5 -148.5t175.5 -50.5v-80q-230 -4 -230 -209v-337q0 -155 -82.5 -230.5 t-277.5 -75.5v91z" />
+<glyph unicode="~" d="M111 625v94q108 110 233 110q61 0 115 -13.5t155 -57.5q126 -58 220 -58q56 0 109.5 30.5t115.5 94.5v-96q-48 -49 -104.5 -81t-129.5 -32q-116 0 -270 72q-124 57 -221 57q-49 0 -108 -30.5t-115 -89.5z" />
+<glyph unicode="&#xa1;" horiz-adv-x="492" d="M166 1010q0 98 80 98q82 0 82 -98q0 -53 -23.5 -76t-58.5 -23q-34 0 -57 23t-23 76zM186 -375l29 1086h61l29 -1086h-119z" />
+<glyph unicode="&#xa2;" d="M211 745q0 232 102.5 381.5t288.5 182.5v174h82v-166h14q131 0 275 -55l-31 -84q-134 51 -237 51q-187 0 -288.5 -122.5t-101.5 -358.5q0 -225 100.5 -349.5t280.5 -124.5q131 0 267 58v-92q-110 -56 -267 -56h-12v-204h-82v210q-186 30 -288.5 175t-102.5 380z" />
+<glyph unicode="&#xa3;" d="M78 0v84q110 21 171.5 110t61.5 224v258h-211v82h211v297q0 204 98 315t281 111q175 0 330 -68l-35 -86q-157 66 -295 66q-141 0 -209.5 -81t-68.5 -253v-301h411v-82h-411v-256q0 -116 -35 -196t-113 -128h809v-96h-995z" />
+<glyph unicode="&#xa4;" d="M127 326l139 141q-90 106 -90 256q0 147 90 258l-139 141l59 60l138 -142q103 93 260 93q155 0 260 -93l137 142l59 -60l-139 -141q90 -111 90 -258q0 -151 -90 -256l139 -141l-59 -60l-137 142q-110 -93 -260 -93q-153 0 -260 93l-138 -142zM260 723q0 -136 94.5 -232 t229.5 -96q134 0 228.5 95.5t94.5 232.5q0 136 -95 233t-228 97q-134 0 -229 -97t-95 -233z" />
+<glyph unicode="&#xa5;" d="M43 1462h117l426 -796l428 796h110l-432 -788h283v-82h-338v-205h338v-82h-338v-305h-105v305h-337v82h337v205h-337v82h278z" />
+<glyph unicode="&#xa6;" horiz-adv-x="1108" d="M508 258h92v-764h-92v764zM508 797v764h92v-764h-92z" />
+<glyph unicode="&#xa7;" horiz-adv-x="1057" d="M129 63v95q182 -78 332 -78q162 0 247 49.5t85 140.5q0 55 -25 87.5t-88.5 65.5t-190.5 79q-200 73 -272 141.5t-72 169.5q0 83 50.5 152.5t138.5 107.5q-86 47 -125 102t-39 136q0 117 101.5 183.5t275.5 66.5q175 0 336 -64l-35 -80q-91 34 -158.5 47t-144.5 13 q-134 0 -205.5 -44.5t-71.5 -119.5q0 -54 25.5 -88.5t85.5 -65.5t188 -74q192 -64 264 -132.5t72 -170.5q0 -173 -186 -274q86 -42 129 -96t43 -136q0 -135 -113 -207.5t-311 -72.5q-92 0 -171 15t-165 52zM246 825q0 -65 31.5 -104t105.5 -75t250 -99q82 41 126 98t44 121 q0 62 -32 102t-108.5 77t-236.5 87q-81 -23 -130.5 -79t-49.5 -128z" />
+<glyph unicode="&#xa8;" horiz-adv-x="1182" d="M336 1389q0 46 15.5 66t47.5 20q64 0 64 -86t-64 -86q-63 0 -63 86zM717 1389q0 46 15.5 66t47.5 20q64 0 64 -86t-64 -86q-63 0 -63 86z" />
+<glyph unicode="&#xa9;" horiz-adv-x="1704" d="M100 731q0 200 100 375t275 276t377 101q200 0 375 -100t276 -275t101 -377q0 -197 -97 -370t-272 -277t-383 -104q-207 0 -382 103.5t-272.5 276.5t-97.5 371zM193 731q0 -178 88.5 -329.5t240.5 -240.5t330 -89t329.5 88.5t240.5 240.5t89 330q0 174 -85.5 325 t-239 243t-334.5 92q-176 0 -328.5 -88.5t-241.5 -242.5t-89 -329zM489 725q0 208 111 332.5t297 124.5q119 0 227 -52l-37 -83q-98 45 -190 45q-142 0 -222.5 -94.5t-80.5 -264.5q0 -186 74.5 -275t220.5 -89q84 0 198 43v-88q-102 -45 -208 -45q-187 0 -288.5 115 t-101.5 331z" />
+<glyph unicode="&#xaa;" horiz-adv-x="686" d="M78 989q0 100 80 151.5t241 59.5l95 4v43q0 77 -38 114.5t-106 37.5q-87 0 -196 -49l-33 73q117 56 231 56q228 0 228 -215v-451h-68l-25 72q-84 -84 -202 -84q-95 0 -151 49t-56 139zM168 993q0 -54 35 -85t96 -31q90 0 142.5 50t52.5 142v64l-88 -5q-116 -6 -177 -36.5 t-61 -98.5z" />
+<glyph unicode="&#xab;" horiz-adv-x="885" d="M82 516v27l309 393l62 -43l-254 -363l254 -362l-62 -43zM442 516v27l310 393l61 -43l-254 -363l254 -362l-61 -43z" />
+<glyph unicode="&#xac;" d="M111 682v82h927v-494h-82v412h-845z" />
+<glyph unicode="&#xad;" horiz-adv-x="659" d="M92 512v82h475v-82h-475z" />
+<glyph unicode="&#xae;" horiz-adv-x="1704" d="M100 731q0 200 100 375t275 276t377 101q200 0 375 -100t276 -275t101 -377q0 -197 -97 -370t-272 -277t-383 -104q-207 0 -382 103.5t-272.5 276.5t-97.5 371zM193 731q0 -178 88.5 -329.5t240.5 -240.5t330 -89t329.5 88.5t240.5 240.5t89 330q0 174 -85.5 325 t-239 243t-334.5 92q-176 0 -328.5 -88.5t-241.5 -242.5t-89 -329zM608 291v880h211q143 0 222 -62t79 -191q0 -79 -38.5 -139.5t-110.5 -94.5l237 -393h-121l-210 360h-168v-360h-101zM709 731h112q91 0 143 46.5t52 135.5q0 172 -197 172h-110v-354z" />
+<glyph unicode="&#xaf;" horiz-adv-x="1024" d="M-6 1556v82h1036v-82h-1036z" />
+<glyph unicode="&#xb0;" horiz-adv-x="877" d="M139 1184q0 132 86.5 215.5t212.5 83.5t212.5 -83.5t86.5 -215.5t-86.5 -215.5t-212.5 -83.5q-130 0 -214.5 83t-84.5 216zM229 1184q0 -91 61 -154t148 -63q86 0 147.5 62t61.5 155q0 92 -60 154.5t-149 62.5q-90 0 -149.5 -64t-59.5 -153z" />
+<glyph unicode="&#xb1;" d="M111 1v82h948v-82h-948zM111 682v82h432v434h82v-434h434v-82h-434v-432h-82v432h-432z" />
+<glyph unicode="&#xb2;" horiz-adv-x="688" d="M53 586v78l242 237q125 121 172 193t47 149q0 71 -46.5 112.5t-123.5 41.5q-108 0 -217 -82l-49 65q119 103 270 103q124 0 194 -63.5t70 -174.5q0 -47 -13 -89t-40 -85.5t-68.5 -90t-308.5 -306.5h447v-88h-576z" />
+<glyph unicode="&#xb3;" horiz-adv-x="688" d="M41 629v88q136 -62 266 -62q115 0 174.5 49t59.5 136q0 83 -59.5 122t-178.5 39h-131v84h135q105 0 158 43.5t53 120.5q0 67 -47 107.5t-127 40.5q-128 0 -246 -78l-47 70q130 94 293 94q127 0 199.5 -60t72.5 -163q0 -78 -44 -131.5t-117 -75.5q186 -45 186 -211 q0 -130 -88.5 -201.5t-247.5 -71.5q-144 0 -264 60z" />
+<glyph unicode="&#xb4;" horiz-adv-x="1182" d="M393 1241v16q73 79 144.5 171.5t97.5 140.5h141v-17q-36 -52 -122.5 -138t-190.5 -173h-70z" />
+<glyph unicode="&#xb5;" horiz-adv-x="1221" d="M182 -492v1579h99v-704q0 -164 69 -238.5t213 -74.5q194 0 285.5 98t91.5 319v600h98v-1087h-84l-18 150h-6q-50 -77 -150 -123.5t-217 -46.5q-99 0 -167.5 27.5t-119.5 84.5q5 -92 5 -170v-414h-99z" />
+<glyph unicode="&#xb6;" horiz-adv-x="1341" d="M113 1042q0 260 109 387t341 127h543v-1816h-100v1722h-228v-1722h-100v819q-64 -18 -146 -18q-216 0 -317.5 125t-101.5 376z" />
+<glyph unicode="&#xb7;" horiz-adv-x="487" d="M162 721q0 98 80 98q82 0 82 -98t-82 -98q-80 0 -80 98z" />
+<glyph unicode="&#xb8;" horiz-adv-x="420" d="M43 -393q30 -10 92 -10q78 0 119 28t41 80q0 94 -193 121l93 174h96l-66 -117q168 -37 168 -174q0 -100 -67.5 -150.5t-188.5 -50.5q-68 0 -94 11v88z" />
+<glyph unicode="&#xb9;" horiz-adv-x="688" d="M76 1298l274 164h92v-876h-98v547q0 99 12 233q-26 -23 -233 -145z" />
+<glyph unicode="&#xba;" horiz-adv-x="739" d="M70 1141q0 162 78 250t223 88q142 0 220.5 -87t78.5 -251q0 -161 -80 -250.5t-223 -89.5t-220 86t-77 254zM160 1141q0 -264 209 -264t209 264q0 131 -50 194.5t-159 63.5t-159 -63.5t-50 -194.5z" />
+<glyph unicode="&#xbb;" horiz-adv-x="885" d="M72 168l254 362l-254 363l61 43l309 -391v-27l-309 -393zM432 168l254 362l-254 363l62 43l309 -391v-27l-309 -393z" />
+<glyph unicode="&#xbc;" horiz-adv-x="1516" d="M59 1298l274 164h92v-876h-98v547q0 99 12 233q-26 -23 -233 -145zM243 0l811 1462h94l-811 -1462h-94zM760 242v60l407 581h96v-563h129v-78h-129v-241h-90v241h-413zM864 320h309v221q0 132 8 232q-6 -12 -21.5 -35.5t-295.5 -417.5z" />
+<glyph unicode="&#xbd;" horiz-adv-x="1516" d="M11 1298l274 164h92v-876h-98v547q0 99 12 233q-26 -23 -233 -145zM168 0l811 1462h94l-811 -1462h-94zM827 1v78l242 237q125 121 172 193t47 149q0 71 -46.5 112.5t-123.5 41.5q-108 0 -217 -82l-49 65q119 103 270 103q124 0 194 -63.5t70 -174.5q0 -47 -13 -89 t-40 -85.5t-68.5 -90t-308.5 -306.5h447v-88h-576z" />
+<glyph unicode="&#xbe;" horiz-adv-x="1516" d="M41 629v88q136 -62 266 -62q115 0 174.5 49t59.5 136q0 83 -59.5 122t-178.5 39h-131v84h135q105 0 158 43.5t53 120.5q0 67 -47 107.5t-127 40.5q-128 0 -246 -78l-47 70q130 94 293 94q127 0 199.5 -60t72.5 -163q0 -78 -44 -131.5t-117 -75.5q186 -45 186 -211 q0 -130 -88.5 -201.5t-247.5 -71.5q-144 0 -264 60zM395 0l811 1462h94l-811 -1462h-94zM863 242v60l407 581h96v-563h129v-78h-129v-241h-90v241h-413zM967 320h309v221q0 132 8 232q-6 -12 -21.5 -35.5t-295.5 -417.5z" />
+<glyph unicode="&#xbf;" horiz-adv-x="862" d="M74 -27q0 70 20 124t58.5 102t171.5 159q64 53 98.5 98.5t49.5 94t15 145.5v15h82v-37q0 -125 -39.5 -204.5t-136.5 -164.5l-90 -79q-73 -61 -104 -120.5t-31 -138.5q0 -124 82 -200t221 -76q125 0 233 46l64 27l37 -79q-111 -48 -185.5 -64t-152.5 -16q-184 0 -288.5 99 t-104.5 269zM440 1010q0 98 80 98q82 0 82 -98q0 -53 -23.5 -76t-58.5 -23q-34 0 -57 23t-23 76z" />
+<glyph unicode="&#xc0;" horiz-adv-x="1229" d="M0 0l588 1468h65l576 -1468h-115l-203 516h-594l-204 -516h-113zM354 608h523l-199 527q-25 62 -60 172q-27 -96 -59 -174zM337 1890v17h142q26 -48 98.5 -142t142.5 -170v-16h-69q-96 79 -188.5 171.5t-125.5 139.5z" />
+<glyph unicode="&#xc1;" horiz-adv-x="1229" d="M0 0l588 1468h65l576 -1468h-115l-203 516h-594l-204 -516h-113zM354 608h523l-199 527q-25 62 -60 172q-27 -96 -59 -174zM504 1579v16q73 79 144.5 171.5t97.5 140.5h141v-17q-36 -52 -122.5 -138t-190.5 -173h-70z" />
+<glyph unicode="&#xc2;" horiz-adv-x="1229" d="M0 0l588 1468h65l576 -1468h-115l-203 516h-594l-204 -516h-113zM354 608h523l-199 527q-25 62 -60 172q-27 -96 -59 -174zM328 1579v16q62 67 131.5 156t110.5 156h98q68 -120 242 -312v-16h-70q-122 101 -221 207q-108 -114 -221 -207h-70z" />
+<glyph unicode="&#xc3;" horiz-adv-x="1229" d="M0 0l588 1468h65l576 -1468h-115l-203 516h-594l-204 -516h-113zM354 608h523l-199 527q-25 62 -60 172q-27 -96 -59 -174zM287 1581q10 111 63 174.5t137 63.5q48 0 88 -25t82 -59q34 -28 66 -50t61 -22q46 0 77 36.5t48 119.5h76q-16 -116 -69 -177t-132 -61 q-36 0 -75 18.5t-101 71.5q-32 26 -62.5 46t-62.5 20q-45 0 -75 -34.5t-48 -121.5h-73z" />
+<glyph unicode="&#xc4;" horiz-adv-x="1229" d="M0 0l588 1468h65l576 -1468h-115l-203 516h-594l-204 -516h-113zM354 608h523l-199 527q-25 62 -60 172q-27 -96 -59 -174zM367 1727q0 46 15.5 66t47.5 20q64 0 64 -86t-64 -86q-63 0 -63 86zM748 1727q0 46 15.5 66t47.5 20q64 0 64 -86t-64 -86q-63 0 -63 86z" />
+<glyph unicode="&#xc5;" horiz-adv-x="1229" d="M0 0l588 1468h65l576 -1468h-115l-203 516h-594l-204 -516h-113zM354 608h523l-199 527q-25 62 -60 172q-27 -96 -59 -174zM402 1610q0 94 60 152.5t157 58.5t157 -59t60 -152q0 -97 -60 -155t-157 -58t-157 58t-60 155zM482 1610q0 -66 37.5 -103.5t99.5 -37.5 t99.5 37.5t37.5 103.5q0 64 -39 101.5t-98 37.5q-62 0 -99.5 -38t-37.5 -101z" />
+<glyph unicode="&#xc6;" horiz-adv-x="1653" d="M-2 0l653 1462h877v-94h-615v-553h576v-94h-576v-627h615v-94h-717v516h-475l-227 -516h-111zM377 608h434v760h-100z" />
+<glyph unicode="&#xc7;" horiz-adv-x="1272" d="M129 735q0 223 84.5 393t243 262.5t368.5 92.5q214 0 383 -80l-41 -92q-160 80 -336 80q-275 0 -433 -176t-158 -482q0 -313 149 -486t426 -173q184 0 338 47v-90q-145 -51 -362 -51q-308 0 -485 199t-177 556zM561 -393q30 -10 92 -10q78 0 119 28t41 80q0 94 -193 121 l93 174h96l-66 -117q168 -37 168 -174q0 -100 -67.5 -150.5t-188.5 -50.5q-68 0 -94 11v88z" />
+<glyph unicode="&#xc8;" horiz-adv-x="1130" d="M207 0v1462h799v-94h-697v-553h658v-94h-658v-627h697v-94h-799zM314 1890v17h142q26 -48 98.5 -142t142.5 -170v-16h-69q-96 79 -188.5 171.5t-125.5 139.5z" />
+<glyph unicode="&#xc9;" horiz-adv-x="1130" d="M207 0v1462h799v-94h-697v-553h658v-94h-658v-627h697v-94h-799zM463 1579v16q73 79 144.5 171.5t97.5 140.5h141v-17q-36 -52 -122.5 -138t-190.5 -173h-70z" />
+<glyph unicode="&#xca;" horiz-adv-x="1130" d="M207 0v1462h799v-94h-697v-553h658v-94h-658v-627h697v-94h-799zM315 1579v16q62 67 131.5 156t110.5 156h98q68 -120 242 -312v-16h-70q-122 101 -221 207q-108 -114 -221 -207h-70z" />
+<glyph unicode="&#xcb;" horiz-adv-x="1130" d="M207 0v1462h799v-94h-697v-553h658v-94h-658v-627h697v-94h-799zM354 1727q0 46 15.5 66t47.5 20q64 0 64 -86t-64 -86q-63 0 -63 86zM735 1727q0 46 15.5 66t47.5 20q64 0 64 -86t-64 -86q-63 0 -63 86z" />
+<glyph unicode="&#xcc;" horiz-adv-x="516" d="M207 0v1462h102v-1462h-102zM-63 1890v17h142q26 -48 98.5 -142t142.5 -170v-16h-69q-96 79 -188.5 171.5t-125.5 139.5z" />
+<glyph unicode="&#xcd;" horiz-adv-x="516" d="M207 0v1462h102v-1462h-102zM191 1579v16q73 79 144.5 171.5t97.5 140.5h141v-17q-36 -52 -122.5 -138t-190.5 -173h-70z" />
+<glyph unicode="&#xce;" horiz-adv-x="516" d="M207 0v1462h102v-1462h-102zM-32 1579v16q62 67 131.5 156t110.5 156h98q68 -120 242 -312v-16h-70q-122 101 -221 207q-108 -114 -221 -207h-70z" />
+<glyph unicode="&#xcf;" horiz-adv-x="516" d="M207 0v1462h102v-1462h-102zM5 1727q0 46 15.5 66t47.5 20q64 0 64 -86t-64 -86q-63 0 -63 86zM386 1727q0 46 15.5 66t47.5 20q64 0 64 -86t-64 -86q-63 0 -63 86z" />
+<glyph unicode="&#xd0;" horiz-adv-x="1466" d="M47 678v94h160v690h395q350 0 532.5 -183t182.5 -534q0 -368 -193 -556.5t-567 -188.5h-350v678h-160zM309 90h242q655 0 655 651q0 314 -159.5 472.5t-468.5 158.5h-269v-600h406v-94h-406v-588z" />
+<glyph unicode="&#xd1;" horiz-adv-x="1477" d="M207 0v1462h102l865 -1296h6q-9 180 -9 342v954h99v-1462h-103l-866 1298h-8q12 -232 12 -350v-948h-98zM400 1581q10 111 63 174.5t137 63.5q48 0 88 -25t82 -59q34 -28 66 -50t61 -22q46 0 77 36.5t48 119.5h76q-16 -116 -69 -177t-132 -61q-36 0 -75 18.5t-101 71.5 q-32 26 -62.5 46t-62.5 20q-45 0 -75 -34.5t-48 -121.5h-73z" />
+<glyph unicode="&#xd2;" horiz-adv-x="1565" d="M129 735q0 349 175.5 549.5t479.5 200.5q306 0 479 -201.5t173 -550.5q0 -348 -174 -550.5t-480 -202.5q-305 0 -479 202.5t-174 552.5zM240 733q0 -314 140 -485.5t402 -171.5q264 0 403.5 170t139.5 487q0 316 -139.5 484.5t-401.5 168.5q-261 0 -402.5 -170 t-141.5 -483zM502 1890v17h142q26 -48 98.5 -142t142.5 -170v-16h-69q-96 79 -188.5 171.5t-125.5 139.5z" />
+<glyph unicode="&#xd3;" horiz-adv-x="1565" d="M129 735q0 349 175.5 549.5t479.5 200.5q306 0 479 -201.5t173 -550.5q0 -348 -174 -550.5t-480 -202.5q-305 0 -479 202.5t-174 552.5zM240 733q0 -314 140 -485.5t402 -171.5q264 0 403.5 170t139.5 487q0 316 -139.5 484.5t-401.5 168.5q-261 0 -402.5 -170 t-141.5 -483zM686 1579v16q73 79 144.5 171.5t97.5 140.5h141v-17q-36 -52 -122.5 -138t-190.5 -173h-70z" />
+<glyph unicode="&#xd4;" horiz-adv-x="1565" d="M129 735q0 349 175.5 549.5t479.5 200.5q306 0 479 -201.5t173 -550.5q0 -348 -174 -550.5t-480 -202.5q-305 0 -479 202.5t-174 552.5zM240 733q0 -314 140 -485.5t402 -171.5q264 0 403.5 170t139.5 487q0 316 -139.5 484.5t-401.5 168.5q-261 0 -402.5 -170 t-141.5 -483zM492 1579v16q62 67 131.5 156t110.5 156h98q68 -120 242 -312v-16h-70q-122 101 -221 207q-108 -114 -221 -207h-70z" />
+<glyph unicode="&#xd5;" horiz-adv-x="1565" d="M129 735q0 349 175.5 549.5t479.5 200.5q306 0 479 -201.5t173 -550.5q0 -348 -174 -550.5t-480 -202.5q-305 0 -479 202.5t-174 552.5zM240 733q0 -314 140 -485.5t402 -171.5q264 0 403.5 170t139.5 487q0 316 -139.5 484.5t-401.5 168.5q-261 0 -402.5 -170 t-141.5 -483zM443 1581q10 111 63 174.5t137 63.5q48 0 88 -25t82 -59q34 -28 66 -50t61 -22q46 0 77 36.5t48 119.5h76q-16 -116 -69 -177t-132 -61q-36 0 -75 18.5t-101 71.5q-32 26 -62.5 46t-62.5 20q-45 0 -75 -34.5t-48 -121.5h-73z" />
+<glyph unicode="&#xd6;" horiz-adv-x="1565" d="M129 735q0 349 175.5 549.5t479.5 200.5q306 0 479 -201.5t173 -550.5q0 -348 -174 -550.5t-480 -202.5q-305 0 -479 202.5t-174 552.5zM240 733q0 -314 140 -485.5t402 -171.5q264 0 403.5 170t139.5 487q0 316 -139.5 484.5t-401.5 168.5q-261 0 -402.5 -170 t-141.5 -483zM529 1727q0 46 15.5 66t47.5 20q64 0 64 -86t-64 -86q-63 0 -63 86zM910 1727q0 46 15.5 66t47.5 20q64 0 64 -86t-64 -86q-63 0 -63 86z" />
+<glyph unicode="&#xd7;" d="M119 1130l57 58l408 -408l409 408l58 -58l-408 -407l406 -408l-58 -57l-407 408l-406 -408l-57 57l405 408z" />
+<glyph unicode="&#xd8;" horiz-adv-x="1565" d="M129 735q0 349 175.5 549.5t479.5 200.5q232 0 392 -121l108 152l72 -60l-111 -153q191 -207 191 -570q0 -348 -174 -550.5t-480 -202.5q-236 0 -395 120l-86 -120l-74 59l90 127q-188 200 -188 569zM240 733q0 -312 139 -483l739 1034q-133 102 -334 102 q-261 0 -402.5 -170t-141.5 -483zM444 182q133 -106 338 -106q264 0 403.5 170t139.5 487q0 315 -139 486z" />
+<glyph unicode="&#xd9;" horiz-adv-x="1473" d="M190 520v942h103v-946q0 -211 117 -328.5t331 -117.5q209 0 324 115.5t115 320.5v956h102v-946q0 -252 -146 -394t-407 -142q-254 0 -396.5 142.5t-142.5 397.5zM450 1890v17h142q26 -48 98.5 -142t142.5 -170v-16h-69q-96 79 -188.5 171.5t-125.5 139.5z" />
+<glyph unicode="&#xda;" horiz-adv-x="1473" d="M190 520v942h103v-946q0 -211 117 -328.5t331 -117.5q209 0 324 115.5t115 320.5v956h102v-946q0 -252 -146 -394t-407 -142q-254 0 -396.5 142.5t-142.5 397.5zM633 1579v16q73 79 144.5 171.5t97.5 140.5h141v-17q-36 -52 -122.5 -138t-190.5 -173h-70z" />
+<glyph unicode="&#xdb;" horiz-adv-x="1473" d="M190 520v942h103v-946q0 -211 117 -328.5t331 -117.5q209 0 324 115.5t115 320.5v956h102v-946q0 -252 -146 -394t-407 -142q-254 0 -396.5 142.5t-142.5 397.5zM444 1579v16q62 67 131.5 156t110.5 156h98q68 -120 242 -312v-16h-70q-122 101 -221 207 q-108 -114 -221 -207h-70z" />
+<glyph unicode="&#xdc;" horiz-adv-x="1473" d="M190 520v942h103v-946q0 -211 117 -328.5t331 -117.5q209 0 324 115.5t115 320.5v956h102v-946q0 -252 -146 -394t-407 -142q-254 0 -396.5 142.5t-142.5 397.5zM481 1727q0 46 15.5 66t47.5 20q64 0 64 -86t-64 -86q-63 0 -63 86zM862 1727q0 46 15.5 66t47.5 20 q64 0 64 -86t-64 -86q-63 0 -63 86z" />
+<glyph unicode="&#xdd;" horiz-adv-x="1081" d="M0 1462h117l426 -800l428 800h110l-487 -897v-565h-105v557zM434 1579v16q73 79 144.5 171.5t97.5 140.5h141v-17q-36 -52 -122.5 -138t-190.5 -173h-70z" />
+<glyph unicode="&#xde;" horiz-adv-x="1198" d="M207 0v1462h102v-264h256q522 0 522 -420q0 -212 -144 -325t-408 -113h-226v-340h-102zM309 428h201q247 0 357 81.5t110 264.5q0 169 -104 250.5t-322 81.5h-242v-678z" />
+<glyph unicode="&#xdf;" horiz-adv-x="1194" d="M182 0v1206q0 173 103.5 267t292.5 94q188 0 285.5 -72.5t97.5 -210.5q0 -139 -139 -250q-81 -64 -110.5 -100.5t-29.5 -75.5q0 -44 14.5 -68t51.5 -57t102 -78q106 -75 151.5 -124.5t68 -103t22.5 -120.5q0 -156 -88 -241.5t-246 -85.5q-95 0 -174.5 18.5t-126.5 48.5 v107q65 -38 148.5 -62t152.5 -24q114 0 174.5 54.5t60.5 160.5q0 83 -39 144t-149 136q-127 87 -175 147t-48 146q0 60 32.5 110t106.5 108q74 57 106.5 105.5t32.5 106.5q0 93 -70 143t-202 50q-145 0 -226 -69t-81 -196v-1214h-99z" />
+<glyph unicode="&#xe0;" horiz-adv-x="1085" d="M98 289q0 159 132.5 247t383.5 93l207 6v72q0 155 -63 234t-203 79q-151 0 -313 -84l-37 86q179 84 354 84q179 0 267.5 -93t88.5 -290v-723h-73l-25 172h-8q-82 -105 -168.5 -148.5t-204.5 -43.5q-160 0 -249 82t-89 227zM203 285q0 -102 62.5 -158.5t176.5 -56.5 q174 0 274.5 99.5t100.5 276.5v107l-190 -8q-229 -11 -326.5 -71.5t-97.5 -188.5zM255 1552v17h142q26 -48 98.5 -142t142.5 -170v-16h-69q-96 79 -188.5 171.5t-125.5 139.5z" />
+<glyph unicode="&#xe1;" horiz-adv-x="1085" d="M98 289q0 159 132.5 247t383.5 93l207 6v72q0 155 -63 234t-203 79q-151 0 -313 -84l-37 86q179 84 354 84q179 0 267.5 -93t88.5 -290v-723h-73l-25 172h-8q-82 -105 -168.5 -148.5t-204.5 -43.5q-160 0 -249 82t-89 227zM203 285q0 -102 62.5 -158.5t176.5 -56.5 q174 0 274.5 99.5t100.5 276.5v107l-190 -8q-229 -11 -326.5 -71.5t-97.5 -188.5zM422 1241v16q73 79 144.5 171.5t97.5 140.5h141v-17q-36 -52 -122.5 -138t-190.5 -173h-70z" />
+<glyph unicode="&#xe2;" horiz-adv-x="1085" d="M98 289q0 159 132.5 247t383.5 93l207 6v72q0 155 -63 234t-203 79q-151 0 -313 -84l-37 86q179 84 354 84q179 0 267.5 -93t88.5 -290v-723h-73l-25 172h-8q-82 -105 -168.5 -148.5t-204.5 -43.5q-160 0 -249 82t-89 227zM203 285q0 -102 62.5 -158.5t176.5 -56.5 q174 0 274.5 99.5t100.5 276.5v107l-190 -8q-229 -11 -326.5 -71.5t-97.5 -188.5zM251 1241v16q62 67 131.5 156t110.5 156h98q68 -120 242 -312v-16h-70q-122 101 -221 207q-108 -114 -221 -207h-70z" />
+<glyph unicode="&#xe3;" horiz-adv-x="1085" d="M98 289q0 159 132.5 247t383.5 93l207 6v72q0 155 -63 234t-203 79q-151 0 -313 -84l-37 86q179 84 354 84q179 0 267.5 -93t88.5 -290v-723h-73l-25 172h-8q-82 -105 -168.5 -148.5t-204.5 -43.5q-160 0 -249 82t-89 227zM203 285q0 -102 62.5 -158.5t176.5 -56.5 q174 0 274.5 99.5t100.5 276.5v107l-190 -8q-229 -11 -326.5 -71.5t-97.5 -188.5zM200 1243q10 111 63 174.5t137 63.5q48 0 88 -25t82 -59q34 -28 66 -50t61 -22q46 0 77 36.5t48 119.5h76q-16 -116 -69 -177t-132 -61q-36 0 -75 18.5t-101 71.5q-32 26 -62.5 46t-62.5 20 q-45 0 -75 -34.5t-48 -121.5h-73z" />
+<glyph unicode="&#xe4;" horiz-adv-x="1085" d="M98 289q0 159 132.5 247t383.5 93l207 6v72q0 155 -63 234t-203 79q-151 0 -313 -84l-37 86q179 84 354 84q179 0 267.5 -93t88.5 -290v-723h-73l-25 172h-8q-82 -105 -168.5 -148.5t-204.5 -43.5q-160 0 -249 82t-89 227zM203 285q0 -102 62.5 -158.5t176.5 -56.5 q174 0 274.5 99.5t100.5 276.5v107l-190 -8q-229 -11 -326.5 -71.5t-97.5 -188.5zM282 1389q0 46 15.5 66t47.5 20q64 0 64 -86t-64 -86q-63 0 -63 86zM663 1389q0 46 15.5 66t47.5 20q64 0 64 -86t-64 -86q-63 0 -63 86z" />
+<glyph unicode="&#xe5;" horiz-adv-x="1085" d="M98 289q0 159 132.5 247t383.5 93l207 6v72q0 155 -63 234t-203 79q-151 0 -313 -84l-37 86q179 84 354 84q179 0 267.5 -93t88.5 -290v-723h-73l-25 172h-8q-82 -105 -168.5 -148.5t-204.5 -43.5q-160 0 -249 82t-89 227zM203 285q0 -102 62.5 -158.5t176.5 -56.5 q174 0 274.5 99.5t100.5 276.5v107l-190 -8q-229 -11 -326.5 -71.5t-97.5 -188.5zM325 1456q0 94 60 152.5t157 58.5t157 -59t60 -152q0 -97 -60 -155t-157 -58t-157 58t-60 155zM405 1456q0 -66 37.5 -103.5t99.5 -37.5t99.5 37.5t37.5 103.5q0 64 -39 101.5t-98 37.5 q-62 0 -99.5 -38t-37.5 -101z" />
+<glyph unicode="&#xe6;" horiz-adv-x="1731" d="M98 289q0 154 125 243t377 97l201 6v72q0 155 -61.5 234t-198.5 79q-148 0 -305 -84l-37 86q173 84 346 84q261 0 325 -211q111 213 347 213q184 0 289.5 -134.5t105.5 -363.5v-80h-715q0 -460 348 -460q85 0 150 12t174 57v-90q-92 -41 -165 -55t-161 -14 q-295 0 -397 256q-68 -133 -168 -194.5t-252 -61.5q-156 0 -242 82.5t-86 226.5zM203 285q0 -102 61 -158.5t170 -56.5q169 0 266 99.5t97 276.5v107l-187 -8q-219 -11 -313 -71.5t-94 -188.5zM903 618h604q0 188 -77.5 295t-212.5 107q-284 0 -314 -402z" />
+<glyph unicode="&#xe7;" horiz-adv-x="973" d="M119 537q0 270 137 420.5t375 150.5q141 0 270 -49l-27 -88q-141 47 -245 47q-200 0 -303 -123.5t-103 -355.5q0 -220 103 -344.5t288 -124.5q148 0 275 53v-92q-104 -51 -273 -51q-233 0 -365 147t-132 410zM373 -393q30 -10 92 -10q78 0 119 28t41 80q0 94 -193 121 l93 174h96l-66 -117q168 -37 168 -174q0 -100 -67.5 -150.5t-188.5 -50.5q-68 0 -94 11v88z" />
+<glyph unicode="&#xe8;" horiz-adv-x="1124" d="M119 535q0 260 128 416.5t345 156.5q192 0 303 -134t111 -364v-80h-783q2 -224 104.5 -342t293.5 -118q93 0 163.5 13t178.5 56v-90q-92 -40 -170 -54.5t-172 -14.5q-237 0 -369.5 146t-132.5 409zM229 618h672q0 189 -82 295.5t-227 106.5q-157 0 -252 -103.5 t-111 -298.5zM302 1552v17h142q26 -48 98.5 -142t142.5 -170v-16h-69q-96 79 -188.5 171.5t-125.5 139.5z" />
+<glyph unicode="&#xe9;" horiz-adv-x="1124" d="M119 535q0 260 128 416.5t345 156.5q192 0 303 -134t111 -364v-80h-783q2 -224 104.5 -342t293.5 -118q93 0 163.5 13t178.5 56v-90q-92 -40 -170 -54.5t-172 -14.5q-237 0 -369.5 146t-132.5 409zM229 618h672q0 189 -82 295.5t-227 106.5q-157 0 -252 -103.5 t-111 -298.5zM452 1241v16q73 79 144.5 171.5t97.5 140.5h141v-17q-36 -52 -122.5 -138t-190.5 -173h-70z" />
+<glyph unicode="&#xea;" horiz-adv-x="1124" d="M119 535q0 260 128 416.5t345 156.5q192 0 303 -134t111 -364v-80h-783q2 -224 104.5 -342t293.5 -118q93 0 163.5 13t178.5 56v-90q-92 -40 -170 -54.5t-172 -14.5q-237 0 -369.5 146t-132.5 409zM229 618h672q0 189 -82 295.5t-227 106.5q-157 0 -252 -103.5 t-111 -298.5zM290 1241v16q62 67 131.5 156t110.5 156h98q68 -120 242 -312v-16h-70q-122 101 -221 207q-108 -114 -221 -207h-70z" />
+<glyph unicode="&#xeb;" horiz-adv-x="1124" d="M119 535q0 260 128 416.5t345 156.5q192 0 303 -134t111 -364v-80h-783q2 -224 104.5 -342t293.5 -118q93 0 163.5 13t178.5 56v-90q-92 -40 -170 -54.5t-172 -14.5q-237 0 -369.5 146t-132.5 409zM229 618h672q0 189 -82 295.5t-227 106.5q-157 0 -252 -103.5 t-111 -298.5zM331 1389q0 46 15.5 66t47.5 20q64 0 64 -86t-64 -86q-63 0 -63 86zM712 1389q0 46 15.5 66t47.5 20q64 0 64 -86t-64 -86q-63 0 -63 86z" />
+<glyph unicode="&#xec;" horiz-adv-x="463" d="M182 0v1087h99v-1087h-99zM-34 1552v17h142q26 -48 98.5 -142t142.5 -170v-16h-69q-96 79 -188.5 171.5t-125.5 139.5z" />
+<glyph unicode="&#xed;" horiz-adv-x="463" d="M182 0v1087h99v-1087h-99zM107 1241v16q73 79 144.5 171.5t97.5 140.5h141v-17q-36 -52 -122.5 -138t-190.5 -173h-70z" />
+<glyph unicode="&#xee;" horiz-adv-x="463" d="M182 0v1087h99v-1087h-99zM-58 1241v16q62 67 131.5 156t110.5 156h98q68 -120 242 -312v-16h-70q-122 101 -221 207q-108 -114 -221 -207h-70z" />
+<glyph unicode="&#xef;" horiz-adv-x="463" d="M182 0v1087h99v-1087h-99zM-21 1389q0 46 15.5 66t47.5 20q64 0 64 -86t-64 -86q-63 0 -63 86zM360 1389q0 46 15.5 66t47.5 20q64 0 64 -86t-64 -86q-63 0 -63 86z" />
+<glyph unicode="&#xf0;" horiz-adv-x="1174" d="M117 471q0 228 126.5 357.5t342.5 129.5q108 0 187.5 -33t148.5 -96l4 2q-64 270 -269 459l-270 -157l-49 77l244 146q-86 62 -199 119l45 81q147 -69 248 -145l225 137l49 -84l-202 -121q154 -151 230.5 -353t76.5 -431q0 -276 -124 -427.5t-349 -151.5 q-214 0 -339.5 130t-125.5 361zM221 463q0 -186 94.5 -289.5t268.5 -103.5q179 0 272.5 123t93.5 364q0 146 -97 228.5t-267 82.5q-185 0 -275 -100.5t-90 -304.5z" />
+<glyph unicode="&#xf1;" horiz-adv-x="1208" d="M182 0v1087h84l19 -149h6q106 170 377 170q370 0 370 -397v-711h-98v705q0 164 -69 238.5t-214 74.5q-195 0 -285.5 -98.5t-90.5 -319.5v-600h-99zM282 1243q10 111 63 174.5t137 63.5q48 0 88 -25t82 -59q34 -28 66 -50t61 -22q46 0 77 36.5t48 119.5h76 q-16 -116 -69 -177t-132 -61q-36 0 -75 18.5t-101 71.5q-32 26 -62.5 46t-62.5 20q-45 0 -75 -34.5t-48 -121.5h-73z" />
+<glyph unicode="&#xf2;" horiz-adv-x="1200" d="M119 545q0 266 129 414.5t354 148.5q224 0 351.5 -150.5t127.5 -412.5q0 -266 -129 -415.5t-356 -149.5q-143 0 -252 69t-167 198t-58 298zM223 545q0 -224 98.5 -349.5t278.5 -125.5t278.5 125.5t98.5 349.5q0 225 -99.5 349t-279.5 124t-277.5 -123.5t-97.5 -349.5z M335 1552v17h142q26 -48 98.5 -142t142.5 -170v-16h-69q-96 79 -188.5 171.5t-125.5 139.5z" />
+<glyph unicode="&#xf3;" horiz-adv-x="1200" d="M119 545q0 266 129 414.5t354 148.5q224 0 351.5 -150.5t127.5 -412.5q0 -266 -129 -415.5t-356 -149.5q-143 0 -252 69t-167 198t-58 298zM223 545q0 -224 98.5 -349.5t278.5 -125.5t278.5 125.5t98.5 349.5q0 225 -99.5 349t-279.5 124t-277.5 -123.5t-97.5 -349.5z M499 1241v16q73 79 144.5 171.5t97.5 140.5h141v-17q-36 -52 -122.5 -138t-190.5 -173h-70z" />
+<glyph unicode="&#xf4;" horiz-adv-x="1200" d="M119 545q0 266 129 414.5t354 148.5q224 0 351.5 -150.5t127.5 -412.5q0 -266 -129 -415.5t-356 -149.5q-143 0 -252 69t-167 198t-58 298zM223 545q0 -224 98.5 -349.5t278.5 -125.5t278.5 125.5t98.5 349.5q0 225 -99.5 349t-279.5 124t-277.5 -123.5t-97.5 -349.5z M309 1241v16q62 67 131.5 156t110.5 156h98q68 -120 242 -312v-16h-70q-122 101 -221 207q-108 -114 -221 -207h-70z" />
+<glyph unicode="&#xf5;" horiz-adv-x="1200" d="M119 545q0 266 129 414.5t354 148.5q224 0 351.5 -150.5t127.5 -412.5q0 -266 -129 -415.5t-356 -149.5q-143 0 -252 69t-167 198t-58 298zM223 545q0 -224 98.5 -349.5t278.5 -125.5t278.5 125.5t98.5 349.5q0 225 -99.5 349t-279.5 124t-277.5 -123.5t-97.5 -349.5z M264 1243q10 111 63 174.5t137 63.5q48 0 88 -25t82 -59q34 -28 66 -50t61 -22q46 0 77 36.5t48 119.5h76q-16 -116 -69 -177t-132 -61q-36 0 -75 18.5t-101 71.5q-32 26 -62.5 46t-62.5 20q-45 0 -75 -34.5t-48 -121.5h-73z" />
+<glyph unicode="&#xf6;" horiz-adv-x="1200" d="M119 545q0 266 129 414.5t354 148.5q224 0 351.5 -150.5t127.5 -412.5q0 -266 -129 -415.5t-356 -149.5q-143 0 -252 69t-167 198t-58 298zM223 545q0 -224 98.5 -349.5t278.5 -125.5t278.5 125.5t98.5 349.5q0 225 -99.5 349t-279.5 124t-277.5 -123.5t-97.5 -349.5z M346 1389q0 46 15.5 66t47.5 20q64 0 64 -86t-64 -86q-63 0 -63 86zM727 1389q0 46 15.5 66t47.5 20q64 0 64 -86t-64 -86q-63 0 -63 86z" />
+<glyph unicode="&#xf7;" d="M111 682v82h948v-82h-948zM504 371q0 98 80 98q82 0 82 -98q0 -53 -23.5 -76t-58.5 -23q-34 0 -57 23t-23 76zM504 1075q0 99 80 99q82 0 82 -99q0 -52 -23.5 -75t-58.5 -23q-34 0 -57 23t-23 75z" />
+<glyph unicode="&#xf8;" horiz-adv-x="1200" d="M119 545q0 266 129 414.5t354 148.5q179 0 301 -104l96 124l74 -55l-104 -137q112 -147 112 -391q0 -266 -129 -415.5t-356 -149.5q-173 0 -291 98l-86 -113l-72 58l93 120q-121 153 -121 402zM223 545q0 -200 78 -322l543 705q-98 90 -246 90q-180 0 -277.5 -123.5 t-97.5 -349.5zM362 152q94 -82 238 -82q180 0 278.5 125.5t98.5 349.5q0 190 -72 309z" />
+<glyph unicode="&#xf9;" horiz-adv-x="1208" d="M170 377v710h98v-704q0 -164 69 -238.5t214 -74.5q194 0 285.5 98t91.5 319v600h98v-1087h-84l-18 150h-6q-106 -170 -377 -170q-371 0 -371 397zM304 1552v17h142q26 -48 98.5 -142t142.5 -170v-16h-69q-96 79 -188.5 171.5t-125.5 139.5z" />
+<glyph unicode="&#xfa;" horiz-adv-x="1208" d="M170 377v710h98v-704q0 -164 69 -238.5t214 -74.5q194 0 285.5 98t91.5 319v600h98v-1087h-84l-18 150h-6q-106 -170 -377 -170q-371 0 -371 397zM495 1241v16q73 79 144.5 171.5t97.5 140.5h141v-17q-36 -52 -122.5 -138t-190.5 -173h-70z" />
+<glyph unicode="&#xfb;" horiz-adv-x="1208" d="M170 377v710h98v-704q0 -164 69 -238.5t214 -74.5q194 0 285.5 98t91.5 319v600h98v-1087h-84l-18 150h-6q-106 -170 -377 -170q-371 0 -371 397zM313 1241v16q62 67 131.5 156t110.5 156h98q68 -120 242 -312v-16h-70q-122 101 -221 207q-108 -114 -221 -207h-70z" />
+<glyph unicode="&#xfc;" horiz-adv-x="1208" d="M170 377v710h98v-704q0 -164 69 -238.5t214 -74.5q194 0 285.5 98t91.5 319v600h98v-1087h-84l-18 150h-6q-106 -170 -377 -170q-371 0 -371 397zM350 1389q0 46 15.5 66t47.5 20q64 0 64 -86t-64 -86q-63 0 -63 86zM731 1389q0 46 15.5 66t47.5 20q64 0 64 -86t-64 -86 q-63 0 -63 86z" />
+<glyph unicode="&#xfd;" horiz-adv-x="940" d="M0 1087h102l230 -610q105 -281 133 -379h6q42 129 137 385l230 604h102l-487 -1263q-59 -154 -99 -208t-93.5 -81t-129.5 -27q-57 0 -127 21v86q58 -16 125 -16q51 0 90 24t70.5 74.5t73 160t53.5 142.5zM361 1241v16q73 79 144.5 171.5t97.5 140.5h141v-17 q-36 -52 -122.5 -138t-190.5 -173h-70z" />
+<glyph unicode="&#xfe;" horiz-adv-x="1219" d="M182 -492v2048h99v-391l-7 -247h7q114 190 368 190q220 0 335.5 -144.5t115.5 -420.5q0 -268 -121.5 -415.5t-331.5 -147.5q-251 0 -366 188h-7l3 -84q4 -74 4 -162v-414h-99zM281 541q0 -255 85.5 -364t278.5 -109q167 0 258.5 124t91.5 347q0 479 -348 479 q-193 0 -279.5 -105t-86.5 -354v-18z" />
+<glyph unicode="&#xff;" horiz-adv-x="940" d="M0 1087h102l230 -610q105 -281 133 -379h6q42 129 137 385l230 604h102l-487 -1263q-59 -154 -99 -208t-93.5 -81t-129.5 -27q-57 0 -127 21v86q58 -16 125 -16q51 0 90 24t70.5 74.5t73 160t53.5 142.5zM214 1389q0 46 15.5 66t47.5 20q64 0 64 -86t-64 -86 q-63 0 -63 86zM595 1389q0 46 15.5 66t47.5 20q64 0 64 -86t-64 -86q-63 0 -63 86z" />
+<glyph unicode="&#x131;" horiz-adv-x="463" d="M182 0v1087h99v-1087h-99z" />
+<glyph unicode="&#x152;" horiz-adv-x="1839" d="M129 735q0 347 174.5 545.5t480.5 198.5q78 0 183 -17h747v-94h-655v-553h616v-94h-616v-627h655v-94h-756q-76 -16 -176 -16q-305 0 -479 200t-174 551zM240 733q0 -315 140.5 -484t401.5 -169q109 0 174 18v1266q-62 16 -172 16q-262 0 -403 -167.5t-141 -479.5z" />
+<glyph unicode="&#x153;" horiz-adv-x="1942" d="M119 545q0 266 129 414.5t354 148.5q151 0 251 -70t157 -209q110 279 399 279q192 0 303 -134t111 -364v-80h-762q2 -230 100.5 -345t276.5 -115q93 0 163.5 13t178.5 56v-90q-92 -40 -170 -54.5t-172 -14.5q-156 0 -266.5 67.5t-165.5 198.5q-59 -128 -158 -197 t-252 -69q-143 0 -252 69t-167 198t-58 298zM223 545q0 -224 98.5 -349.5t278.5 -125.5q174 0 265 122.5t91 352.5q0 224 -93 348.5t-265 124.5q-180 0 -277.5 -123.5t-97.5 -349.5zM1065 618h653q0 189 -82 295.5t-227 106.5q-155 0 -242 -104t-102 -298z" />
+<glyph unicode="&#x178;" horiz-adv-x="1081" d="M0 1462h117l426 -800l428 800h110l-487 -897v-565h-105v557zM288 1727q0 46 15.5 66t47.5 20q64 0 64 -86t-64 -86q-63 0 -63 86zM669 1727q0 46 15.5 66t47.5 20q64 0 64 -86t-64 -86q-63 0 -63 86z" />
+<glyph unicode="&#x2c6;" horiz-adv-x="1182" d="M299 1241v16q62 67 131.5 156t110.5 156h98q68 -120 242 -312v-16h-70q-122 101 -221 207q-108 -114 -221 -207h-70z" />
+<glyph unicode="&#x2da;" horiz-adv-x="1182" d="M371 1456q0 94 60 152.5t157 58.5t157 -59t60 -152q0 -97 -60 -155t-157 -58t-157 58t-60 155zM451 1456q0 -66 37.5 -103.5t99.5 -37.5t99.5 37.5t37.5 103.5q0 64 -39 101.5t-98 37.5q-62 0 -99.5 -38t-37.5 -101z" />
+<glyph unicode="&#x2dc;" horiz-adv-x="1182" d="M283 1243q10 111 63 174.5t137 63.5q48 0 88 -25t82 -59q34 -28 66 -50t61 -22q46 0 77 36.5t48 119.5h76q-16 -116 -69 -177t-132 -61q-36 0 -75 18.5t-101 71.5q-32 26 -62.5 46t-62.5 20q-45 0 -75 -34.5t-48 -121.5h-73z" />
+<glyph unicode="&#x2000;" horiz-adv-x="953" />
+<glyph unicode="&#x2001;" horiz-adv-x="1907" />
+<glyph unicode="&#x2002;" horiz-adv-x="953" />
+<glyph unicode="&#x2003;" horiz-adv-x="1907" />
+<glyph unicode="&#x2004;" horiz-adv-x="635" />
+<glyph unicode="&#x2005;" horiz-adv-x="476" />
+<glyph unicode="&#x2006;" horiz-adv-x="317" />
+<glyph unicode="&#x2007;" horiz-adv-x="317" />
+<glyph unicode="&#x2008;" horiz-adv-x="238" />
+<glyph unicode="&#x2009;" horiz-adv-x="381" />
+<glyph unicode="&#x200a;" horiz-adv-x="105" />
+<glyph unicode="&#x2010;" horiz-adv-x="659" d="M92 512v82h475v-82h-475z" />
+<glyph unicode="&#x2011;" horiz-adv-x="659" d="M92 512v82h475v-82h-475z" />
+<glyph unicode="&#x2012;" horiz-adv-x="659" d="M92 512v82h475v-82h-475z" />
+<glyph unicode="&#x2013;" horiz-adv-x="1024" d="M82 512v82h860v-82h-860z" />
+<glyph unicode="&#x2014;" horiz-adv-x="2048" d="M82 512v82h1884v-82h-1884z" />
+<glyph unicode="&#x2018;" horiz-adv-x="297" d="M29 981q32 112 81.5 251t92.5 230h65q-30 -101 -64.5 -257t-45.5 -244h-117z" />
+<glyph unicode="&#x2019;" horiz-adv-x="297" d="M29 961q29 96 61 241.5t49 259.5h117l12 -20q-75 -265 -174 -481h-65z" />
+<glyph unicode="&#x201a;" horiz-adv-x="451" d="M68 -263q29 96 61 241.5t49 259.5h117l12 -20q-75 -265 -174 -481h-65z" />
+<glyph unicode="&#x201c;" horiz-adv-x="614" d="M29 981q32 112 81.5 251t92.5 230h65q-30 -101 -64.5 -257t-45.5 -244h-117zM346 981q34 120 83 255t91 226h66q-30 -98 -63 -248.5t-48 -252.5h-117z" />
+<glyph unicode="&#x201d;" horiz-adv-x="614" d="M29 961q29 96 61 241.5t49 259.5h117l12 -20q-75 -265 -174 -481h-65zM346 961q30 98 63 248.5t48 252.5h116l13 -20q-36 -128 -85 -261t-89 -220h-66z" />
+<glyph unicode="&#x201e;" horiz-adv-x="768" d="M68 -263q29 96 61 241.5t49 259.5h117l12 -20q-75 -265 -174 -481h-65zM385 -263q30 98 63 248.5t48 252.5h116l13 -20q-36 -128 -85 -261t-89 -220h-66z" />
+<glyph unicode="&#x2022;" horiz-adv-x="770" d="M231 748q0 89 40.5 134.5t113.5 45.5t113.5 -47t40.5 -133q0 -85 -41 -133t-113 -48t-113 47t-41 134z" />
+<glyph unicode="&#x2026;" horiz-adv-x="1466" d="M162 78q0 98 80 98q82 0 82 -98t-82 -98q-80 0 -80 98zM651 78q0 98 80 98q82 0 82 -98t-82 -98q-80 0 -80 98zM1141 78q0 98 80 98q82 0 82 -98t-82 -98q-80 0 -80 98z" />
+<glyph unicode="&#x202f;" horiz-adv-x="381" />
+<glyph unicode="&#x2039;" horiz-adv-x="524" d="M82 516v27l309 393l62 -43l-254 -363l254 -362l-62 -43z" />
+<glyph unicode="&#x203a;" horiz-adv-x="524" d="M72 168l254 362l-254 363l61 43l309 -391v-27l-309 -393z" />
+<glyph unicode="&#x2044;" horiz-adv-x="246" d="M-332 0l811 1462h94l-811 -1462h-94z" />
+<glyph unicode="&#x205f;" horiz-adv-x="476" />
+<glyph unicode="&#x2074;" horiz-adv-x="688" d="M25 827v60l407 581h96v-563h129v-78h-129v-241h-90v241h-413zM129 905h309v221q0 132 8 232q-6 -12 -21.5 -35.5t-295.5 -417.5z" />
+<glyph unicode="&#x20ac;" d="M74 528v82h172q-4 38 -4 113l4 102h-172v82h184q39 272 183 425t362 153q88 0 161 -17t148 -57l-39 -86q-132 72 -270 72q-174 0 -288 -125.5t-155 -364.5h502v-82h-510l-4 -104v-24q0 -65 4 -87h449v-82h-443q30 -217 147.5 -338.5t301.5 -121.5q148 0 287 65v-94 q-81 -34 -150.5 -46.5t-140.5 -12.5q-228 0 -367.5 140t-181.5 408h-180z" />
+<glyph unicode="&#x2122;" horiz-adv-x="1485" d="M10 1384v78h522v-78h-219v-643h-86v643h-217zM608 741v721h125l221 -606l224 606h125v-721h-86v398l4 207h-7l-227 -605h-74l-221 609h-6l4 -201v-408h-82z" />
+<glyph unicode="&#x2212;" d="M111 682v82h948v-82h-948z" />
+<glyph unicode="&#xe000;" horiz-adv-x="1085" d="M0 1085h1085v-1085h-1085v1085z" />
+<glyph unicode="&#xfb01;" horiz-adv-x="1077" d="M29 1001v58l202 37v84q0 200 73.5 293.5t240.5 93.5q90 0 180 -27l-23 -86q-80 25 -159 25q-116 0 -164.5 -68.5t-48.5 -222.5v-101h256v-86h-256v-1001h-99v1001h-202zM782 1389q0 96 63 96q31 0 48.5 -25t17.5 -71q0 -45 -17.5 -71t-48.5 -26q-63 0 -63 97zM796 0v1087 h99v-1087h-99z" />
+<glyph unicode="&#xfb02;" horiz-adv-x="1077" d="M29 1001v58l202 37v84q0 200 73.5 293.5t240.5 93.5q90 0 180 -27l-23 -86q-80 25 -159 25q-116 0 -164.5 -68.5t-48.5 -222.5v-101h256v-86h-256v-1001h-99v1001h-202zM796 0v1556h99v-1556h-99z" />
+<glyph unicode="&#xfb03;" horiz-adv-x="1692" d="M29 1001v58l202 37v84q0 200 73.5 293.5t240.5 93.5q90 0 180 -27l-23 -86q-80 25 -159 25q-116 0 -164.5 -68.5t-48.5 -222.5v-101h256v-86h-256v-1001h-99v1001h-202zM643 1001v58l202 37v84q0 200 73.5 293.5t240.5 93.5q90 0 180 -27l-23 -86q-80 25 -159 25 q-116 0 -164.5 -68.5t-48.5 -222.5v-101h256v-86h-256v-1001h-99v1001h-202zM1397 1389q0 96 63 96q31 0 48.5 -25t17.5 -71q0 -45 -17.5 -71t-48.5 -26q-63 0 -63 97zM1411 0v1087h99v-1087h-99z" />
+<glyph unicode="&#xfb04;" horiz-adv-x="1692" d="M29 1001v58l202 37v84q0 200 73.5 293.5t240.5 93.5q90 0 180 -27l-23 -86q-80 25 -159 25q-116 0 -164.5 -68.5t-48.5 -222.5v-101h256v-86h-256v-1001h-99v1001h-202zM643 1001v58l202 37v84q0 200 73.5 293.5t240.5 93.5q90 0 180 -27l-23 -86q-80 25 -159 25 q-116 0 -164.5 -68.5t-48.5 -222.5v-101h256v-86h-256v-1001h-99v1001h-202zM1411 0v1556h99v-1556h-99z" />
+</font>
+</defs></svg> 
\ No newline at end of file
Index: modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/deploy.info
===================================================================
--- modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/deploy.info	(nonexistent)
+++ modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/deploy.info	(revision 47450)
@@ -0,0 +1,10 @@
+{
+  "type_source": "SVN", 
+  "goal": "package -U -T 4C source:jar", 
+  "url": "http://svn-public.driver.research-infrastructures.eu/driver/dnet40/modules/uoa-validator-admin/trunk", 
+  "deploy_repository": "dnet4-snapshots", 
+  "version": "4", 
+  "mail": "nikonas@di.uoa.gr, antleb@di.uoa.gr, kiatrop@di.uoa.gr", 
+  "deploy_repository_url": "http://maven.research-infrastructures.eu/nexus/content/repositories/dnet4-snapshots", 
+  "name": "uoa-validator-admin"
+}
Index: modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/fonts/maven_pro_regular-webfont.ttf
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/fonts/maven_pro_regular-webfont.ttf
===================================================================
--- modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/fonts/maven_pro_regular-webfont.ttf	(nonexistent)
+++ modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/fonts/maven_pro_regular-webfont.ttf	(revision 47450)

Property changes on: modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/fonts/maven_pro_regular-webfont.ttf
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/fonts/maven_pro_regular-webfont.woff
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/fonts/maven_pro_regular-webfont.woff
===================================================================
--- modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/fonts/maven_pro_regular-webfont.woff	(nonexistent)
+++ modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/fonts/maven_pro_regular-webfont.woff	(revision 47450)

Property changes on: modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/fonts/maven_pro_regular-webfont.woff
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/fonts/droidsans.css
===================================================================
--- modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/fonts/droidsans.css	(nonexistent)
+++ modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/fonts/droidsans.css	(revision 47450)
@@ -0,0 +1,13 @@
+/* Copyright (C) YOOtheme GmbH, YOOtheme Proprietary Use License (http://www.yootheme.com/license) */
+
+@font-face {
+	font-family: 'DroidSansRegular';
+	src: url('DroidSans-webfont.eot');
+	src: url('DroidSans-webfont.eot?#iefix') format('embedded-opentype'),
+		 url('DroidSans-webfont.woff') format('woff'),
+		 url('DroidSans-webfont.ttf') format('truetype'),
+		 url('DroidSans-webfont.svg#DroidSansRegular') format('svg');
+	font-weight: normal;
+	font-style: normal;
+}
+
Index: modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/instructions.jsp
===================================================================
--- modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/instructions.jsp	(nonexistent)
+++ modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/instructions.jsp	(revision 47450)
@@ -0,0 +1,43 @@
+<%@ page contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<%@ taglib prefix="s" uri="/struts-tags"%>
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title><s:text name="instructions.welcome"/></title>
+<link href="jsps/style.css" rel="stylesheet" type="text/css" media="screen" />
+
+ <link href="jsps/favicon.ico" rel="shortcut icon" type="image/x-icon" />
+</head>	
+<body>
+<div id="wrapper">
+	<jsp:include page="menu.jsp"/>
+	<div id="page">
+	<div id="page-bgtop">
+		<div id="middle">
+            <div class="middle-b">
+                <div class="background">
+                
+        			<div id="main">
+                        <div id="main_container" class="clearfix">
+                            <div id="mainmiddle" class="floatbox">
+                                <h1 class="title"><s:text name="instructions.welcome"/></h1>
+                                <div class="entry">
+                                	<s:text name="instructions.message"/>
+                                </div>
+                             </div>
+                        </div>
+                    </div>
+                 </div>
+			</div>
+		</div>
+		<div style="clear: both;">&nbsp;</div>
+	</div>
+    <!-- NMI This needs to be the same in all pages and the text is some properties file -->
+    <div id="footer"> 
+		<jsp:include page="footer.jsp"/>
+	</div>
+</div>
+</div>
+</body>
+</html>
\ No newline at end of file
Index: modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/help2.jsp
===================================================================
--- modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/help2.jsp	(nonexistent)
+++ modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/help2.jsp	(revision 47450)
@@ -0,0 +1,131 @@
+<%@ page contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<%@ taglib prefix="s" uri="/struts-tags"%>
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<link href="jsps/favicon.ico" rel="shortcut icon" type="image/x-icon" />
+<link href="jsps/style.css" rel="stylesheet" type="text/css" media="screen" />
+<title><s:text name="help"/></title>
+</head>
+<body>
+<div id="wrapper">
+	<jsp:include page="menu.jsp"/>
+	<div id="page">
+	<div id="page-bgtop">
+		<div id="content">
+			<div class="post">
+				<h2 class="title"><a name="addOaiContent"><s:text name="help.addOaiContent.title"/></a></h2>
+				<div class="entry">
+					<s:text name="help.addOaiContent.message"/>
+				</div>
+			</div>
+			<div class="post">
+				<h2 class="title"><a name="addOaiUsage"><s:text name="help.addOaiUsage.title"/></a></h2>
+				<div class="entry">
+					<s:text name="help.addOaiUsage.message"/>
+				</div>
+			</div>
+			<%--<div class="post">
+				<h2 class="title"><a name="addRule"><s:text name="help.addRule.title"/></a></h2>
+				<div class="entry">
+					<s:text name="help.addRule.message"/>
+				</div>
+			</div>--%>
+			<div class="post">
+				<h2 class="title"><a name="browseJobs"><s:text name="help.browseJobs.title"/></a></h2>
+				<div class="entry">
+					<s:text name="help.browseJobs.message"/>
+				</div>
+			</div>
+			<%--<div class="post">
+				<h2 class="title"><a name="chooseJobCategory"><s:text name="help.chooseJobCategory.title"/></a></h2>
+				<div class="entry">
+					<s:text name="help.chooseJobCategory.message"/>
+				</div>
+			</div>
+			<div class="post">
+				<h2 class="title"><a name="chooseRuleCategory"><s:text name="help.chooseRuleCategory.title"/></a></h2>
+				<div class="entry">
+					<s:text name="help.chooseRuleCategory.message"/>
+				</div>
+			</div>
+			<div class="post">
+				<h2 class="title"><a name="chooseRuleForEdit"><s:text name="help.chooseRuleForEdit.title"/></a></h2>
+				<div class="entry">
+					<s:text name="help.chooseRuleForEdit.message"/>
+				</div>
+			</div>
+			<div class="post">
+				<h2 class="title"><a name="chooseRuleSet"><s:text name="help.chooseRuleSet.title"/></a></h2>
+				<div class="entry">
+					<s:text name="help.chooseRuleSet.message"/>
+				</div>
+			</div>
+			<div class="post">
+				<h2 class="title"><a name="chooseRuleSetForDeletion"><s:text name="help.chooseRuleSetForDeletion.title"/></a></h2>
+				<div class="entry">
+					<s:text name="help.chooseRuleSetForDeletion.message"/>
+				</div>
+			</div>--%>
+			<div class="post">
+				<h2 class="title"><a name="createRuleSet"><s:text name="help.createRuleSet.title"/></a></h2>
+				<div class="entry">
+					<s:text name="help.createRuleSet.message"/>
+				</div>
+			</div>
+			<%--<div class="post">
+				<h2 class="title"><a name="deleteRule"><s:text name="help.deleteRule.title"/></a></h2>
+				<div class="entry">
+					<s:text name="help.deleteRule.message"/>
+				</div>
+			</div>--%>
+			<div class="post">
+				<h2 class="title"><a name="editRule"><s:text name="help.editRule.title"/></a></h2>
+				<div class="entry">
+					<s:text name="help.editRule.message"/>
+				</div>
+			</div>
+			<div class="post">
+				<h2 class="title"><a name="jobDetails"><s:text name="help.jobDetails.title"/></a></h2>
+				<div class="entry">
+					<s:text name="help.jobDetails.message"/>
+				</div>
+			</div>
+			<div class="post">
+				<h2 class="title"><a name="jobSummary"><s:text name="help.jobSummary.title"/></a></h2>
+				<div class="entry">
+					<s:text name="help.jobSummary.message"/>
+				</div>
+			</div>
+			<%--<div class="post">
+				<h2 class="title"><a name="login"><s:text name="help.login.title"/></a></h2>
+				<div class="entry">
+					<s:text name="help.login.message"/>
+				</div>
+			</div>
+			<div class="post">
+				<h2 class="title"><a name="registration"><s:text name="help.registration.title"/></a></h2>
+				<div class="entry">
+					<s:text name="help.registration.message"/>
+				</div>
+			</div>--%>
+			<div class="post">
+				<h2 class="title"><a name="repoRegistration"><s:text name="help.repoRegistration.title"/></a></h2>
+				<div class="entry">
+					<s:text name="help.repoRegistration.message"/>
+				</div>
+			</div>
+			<%--<div class="post">
+				<h2 class="title"><a name="resetPassword"><s:text name="help.resetPassword.title"/></a></h2>
+				<div class="entry">
+					<s:text name="help.resetPassword.message"/>
+				</div>
+			</div>--%>
+		</div>
+		<div style="clear: both;">&nbsp;</div>
+	</div>
+	</div>
+</div>
+</body>
+</html>
Index: modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/fonts/kreon-regular-webfont.ttf
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/fonts/kreon-regular-webfont.ttf
===================================================================
--- modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/fonts/kreon-regular-webfont.ttf	(nonexistent)
+++ modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/fonts/kreon-regular-webfont.ttf	(revision 47450)

Property changes on: modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/fonts/kreon-regular-webfont.ttf
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/fonts/DroidSans-webfont.eot
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/fonts/DroidSans-webfont.eot
===================================================================
--- modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/fonts/DroidSans-webfont.eot	(nonexistent)
+++ modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/fonts/DroidSans-webfont.eot	(revision 47450)

Property changes on: modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/fonts/DroidSans-webfont.eot
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/resetPassword.jsp
===================================================================
--- modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/resetPassword.jsp	(nonexistent)
+++ modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/resetPassword.jsp	(revision 47450)
@@ -0,0 +1,46 @@
+<%@ page contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<%@ taglib prefix="s" uri="/struts-tags"%>
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title><s:text name="forgotPassword.title"/></title>
+<link href="jsps/favicon.ico" rel="shortcut icon" type="image/x-icon" />
+<link href="jsps/style.css" rel="stylesheet" type="text/css" media="screen" />
+</head>
+<body>
+<div id="wrapper">
+	<jsp:include page="menu.jsp"/>
+	<div id="page">
+		<div id="page-bgtop">
+			<div id="middle">
+                <div class="middle-b">
+                    <div class="background">
+                        <div class="main">
+                        <div id="main_container" class="clearfix">
+                                <div id="mainmiddle" class="floatbox">
+                                <h2 class="title"><s:text name="forgotPassword.title"/></h2>
+                                <%--<p class="meta"><a href='<s:url value="/jsps/help.jsp#forgotPassword"/>' target="_blank"><s:text name="help"/></a></p>--%>
+                                <div class="entry">
+                                    <s:form action="resetPassword">
+                                    	<s:text name="resetPassword.securityCode.message" />
+                                        <s:textfield name="securityCode" key="resetPassword.securityCode"/>
+                                        <s:password name="password" key="registration.password"/>
+                                        <s:password name="repassword" key="registration.repassword"/>
+                                        <s:submit/>
+                                    </s:form>
+                                </div>
+								</div>
+                            </div>
+                        </div>
+                    </div>
+                </div>
+            </div>
+		</div>
+		  <div id="footer"> 
+           <jsp:include page="footer.jsp"/>
+        </div>
+	</div>
+</div>
+</body>
+</html>
\ No newline at end of file
Index: modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/MenuMatic.css
===================================================================
--- modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/MenuMatic.css	(nonexistent)
+++ modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/MenuMatic.css	(revision 47450)
@@ -0,0 +1,125 @@
+/* Based partially on Matthew Carroll's keyboard accessible flavor of Suckerfish 
+ * Dropdowns by Patrick Griffiths and Dan Webb. 
+ * http://carroll.org.uk/sandbox/suckerfish/bones2.html
+ */
+
+/* ----[ LINKS ]----*/
+
+/* all menu links */
+#nav a, #subMenusContainer a{
+	text-decoration:none;
+	display:block;
+	padding:10px 20px;
+	background-color:#fff ;
+	-moz-border-radius: 7px;
+	-webkit-border-radius: 7px;
+}
+
+/* Just main menu links --[for non-javascript users this applies to submenu links as well]*/
+#nav a{
+	margin:0;
+	float:left;	
+}
+
+/* Just sub menu links */
+#subMenusContainer a, #nav li li a{
+	text-align:left;
+}
+
+/* All menu links on hover or focus */
+#nav a:hover, #nav a:focus, #subMenusContainer a:hover, #subMenusContainer a:focus, #nav a.mainMenuParentBtnFocused, #subMenusContainer a.subMenuParentBtnFocused{
+	background-color:#F6C739 ;
+	color:#FFF;
+}
+
+/* sub menu links on hover or focus */
+#subMenusContainer a:hover, 
+#subMenusContainer a:focus, 
+#nav a.mainMenuParentBtnFocused, 
+#subMenusContainer a.subMenuParentBtnFocused,
+#nav li a:hover,
+#nav li a:focus{
+	background-color:#F6C739 ;
+	color:#FFF;
+}
+
+/* Parent Sub Menu Links ---[javascript users only]*/
+.subMenuParentBtn{ 
+	background: url(../img/arrow_right.gif) right center no-repeat;  
+}
+
+/* Parent Sub Menu Links on hover or focus ---[javascript users only]*/
+.subMenuParentBtnFocused{ 
+	background: url(../img/arrow_right_over.gif) right center no-repeat;  
+}
+
+/* Parent Main Menu Links ---[javascript users only]*/
+.mainMenuParentBtn{	
+	 background: url(../img/arrow_down.gif) right center no-repeat; 
+}
+
+/* Parent Main Menu Links on hover or focus ---[javascript users only]*/
+.mainMenuParentBtnFocused{	
+	background: url(../img/arrow_down_over.gif) right center no-repeat; 
+}
+
+/* ----[ OLs ULs, LIs, and DIVs ]----*/
+
+/* Submenu Outer Wrapper - each submenu is inside a div with this class - javascript users only */
+.smOW{ 
+	display:none; 
+	position: absolute; 
+	overflow:hidden; 
+	/*the 2px left & right padding lets you have a 1px border 
+	  on the ul or ol inside since overflow is set to hidden*/
+	padding:0 2px;
+	margin:0 0 0 -2px;
+}
+
+
+/* All ULs and OLs */
+#nav, #nav ul, #nav ol, #subMenusContainer ul, #subMenusContainer ol { 
+	padding: 0;
+	margin: 0;
+	list-style: none;
+	line-height: 1em;
+}
+
+/* All submenu OLs and ULs */
+#nav ol, #nav ul, #subMenusContainer ul, #subMenusContainer ol {	
+	/*border around submenu goes here*/	 
+	background:#fff;	
+	border:1px solid #C3D46A;
+	left:0;
+}
+
+
+/* List items in main menu --[for non-javascript users this applies to submenus as well]  */
+#nav li { 
+	/*great place to use a background image as a divider*/
+	display:block;
+	list-style:none;
+	position:relative;
+	float:left;
+}
+
+#subMenusContainer li{
+	list-style: none;
+}
+
+/* main menu ul or ol elment */
+#nav{
+	display:block;
+	position: absolute;
+	list-style:none;
+	margin:0 0 0 0;
+	z-index:5;
+	top:15px;
+	left:50%;
+	text-align: center;
+	display:block;
+}
+
+#subMenusContainer{	display:block; 	position:absolute;	top:0;	left:0;	width:100%;	height:0;	overflow:visible;	z-index:1000000000; }
+
+
Index: modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/forgotPassword.jsp
===================================================================
--- modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/forgotPassword.jsp	(nonexistent)
+++ modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/forgotPassword.jsp	(revision 47450)
@@ -0,0 +1,43 @@
+<%@ page contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<%@ taglib prefix="s" uri="/struts-tags"%>
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title><s:text name="forgotPassword.title"/></title>
+<link href="jsps/favicon.ico" rel="shortcut icon" type="image/x-icon" />
+<link href="jsps/style.css" rel="stylesheet" type="text/css" media="screen" />
+</head>
+<body>
+<div id="wrapper">
+	<jsp:include page="menu.jsp"/>
+	<div id="page">
+        <div id="page-bgtop">
+             <div id="middle">
+                <div class="middle-b">
+                    <div class="background">
+                        <div id="main">
+                            <div id="main_container" class="clearfix">
+                                <div id="mainmiddle" class="floatbox">
+                                    <h1>Reset your password</h1>
+                                    <s:actionerror/>
+                                    <s:form action="sendPassword">
+                                        <s:textfield name="email" key="registration.email"/>
+                                        <s:submit/>
+                                    </s:form>
+                                    <s:text name="forgotPassword.message"/>
+                                </div>
+                            </div>
+                        </div>
+                    </div>
+                </div>
+            </div>
+        </div>
+        <!-- NMI This needs to be the same in all pages and the text is some properties file -->
+        <div id="footer"> 
+           <jsp:include page="footer.jsp"/>
+        </div>
+	</div>
+</div>
+</body>
+</html>
\ No newline at end of file
Index: modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/footer.jsp
===================================================================
--- modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/footer.jsp	(nonexistent)
+++ modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/footer.jsp	(revision 47450)
@@ -0,0 +1,7 @@
+<%@ taglib prefix="s" uri="/struts-tags"%>
+
+<div id="footer-bgcontent">
+	<p>
+		<s:text name="footer.text"/> 
+	</p>
+</div>
\ No newline at end of file
Index: modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/table-images/patternb-head.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/table-images/patternb-head.png
===================================================================
--- modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/table-images/patternb-head.png	(nonexistent)
+++ modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/table-images/patternb-head.png	(revision 47450)

Property changes on: modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/table-images/patternb-head.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/table-images/patternb.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/table-images/patternb.png
===================================================================
--- modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/table-images/patternb.png	(nonexistent)
+++ modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/table-images/patternb.png	(revision 47450)

Property changes on: modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/table-images/patternb.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/table-images/botright.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/table-images/botright.png
===================================================================
--- modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/table-images/botright.png	(nonexistent)
+++ modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/table-images/botright.png	(revision 47450)

Property changes on: modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/table-images/botright.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/manuals/favicon.ico
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/manuals/favicon.ico
===================================================================
--- modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/manuals/favicon.ico	(nonexistent)
+++ modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/manuals/favicon.ico	(revision 47450)

Property changes on: modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/manuals/favicon.ico
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/fonts/YanoneKaffeesatz-Light-webfont.svg
===================================================================
--- modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/fonts/YanoneKaffeesatz-Light-webfont.svg	(nonexistent)
+++ modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/fonts/YanoneKaffeesatz-Light-webfont.svg	(revision 47450)
@@ -0,0 +1,299 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" >
+<svg xmlns="http://www.w3.org/2000/svg">
+<metadata>
+This is a custom SVG webfont generated by Font Squirrel.
+Copyright   : Copyright c 2010 Yanone httpyanonedetypedesign All rights reservedThis Font Software is licensed under the SIL Open Font License Version 11This license is available with a FAQ at httpscriptssilorgOFL
+Designer    : Yanone
+Foundry     : Yanone
+Foundry URL : httpyanonedetypedesign
+</metadata>
+<defs>
+<font id="webfont6ZqOUGp9" horiz-adv-x="882" >
+<font-face units-per-em="2048" ascent="1638" descent="-410" />
+<missing-glyph horiz-adv-x="350" />
+<glyph unicode="&#xfb01;" horiz-adv-x="811" d="M23 926q0 63 4 84q2 14 28 14h123v129q0 92 23 164q20 66 55 106q29 35 82 58q45 20 90 26q39 6 96 6q209 0 209 -73q0 -33 -14 -68q-80 39 -193 39q-52 0 -86 -6q-31 -6 -71 -33q-39 -27 -58 -80q-20 -61 -20 -141v-127h172q0 -63 -4 -84q-2 -14 -25 -14h-143v-899 q0 -27 -29 -27h-84v926h-155zM584 0v969q0 39 20 47q18 8 94 8v-997q0 -20 -14 -23q-20 -4 -100 -4z" />
+<glyph unicode="&#xfb02;" horiz-adv-x="831" d="M20 926q0 63 5 84q2 14 28 14h123v129q0 117 31 194.5t82 110.5q53 35 94 43q47 10 98 10q133 0 236 -57v-1427q0 -27 -29 -27h-84v1397q-55 18 -117 18q-41 0 -65.5 -6t-59.5 -27q-37 -20 -55 -77q-18 -55 -18 -140v-141h205q0 -63 -5 -84q-2 -14 -24 -14h-176v-899 q0 -27 -27 -27h-86v926h-156z" />
+<glyph horiz-adv-x="518" />
+<glyph horiz-adv-x="518" />
+<glyph unicode=" "  horiz-adv-x="350" />
+<glyph unicode="&#x09;" horiz-adv-x="350" />
+<glyph unicode="&#xa0;" horiz-adv-x="350" />
+<glyph unicode="!" horiz-adv-x="385" d="M104 82q0 41 23 65q25 27 66 27q46 0 67 -24q23 -27 23 -68t-25 -66q-27 -27 -65 -26q-89 0 -89 92zM125 1415q0 20 29 27q28 6 116 6l-18 -1006q-3 -34 -25 -43q-18 -8 -88 -8z" />
+<glyph unicode="&#x22;" horiz-adv-x="495" d="M72 1544q0 57 6 60q27 12 110 2q2 -72 -10 -240q-12 -158 -22 -168q-63 -2 -64 -2q-3 22 -12 147q-8 113 -8 201zM307 1544q0 57 6 60q27 12 111 2q2 -72 -10 -240q-12 -158 -23 -168l-63 -2q-3 22 -13 147q-8 113 -8 201z" />
+<glyph unicode="#" d="M78 408q0 83 12 92q4 2 14 2h109l14 254h-149q0 83 12 92q4 2 14 2h127l9 147q4 20 20 23q25 4 82 4l-10 -174h231l8 147q4 20 21 23q25 4 84 4l-10 -174h143q0 -57 -4 -78q-4 -16 -25 -16h-118l-15 -254h162q0 -57 -4 -78q-4 -16 -25 -16h-137l-8 -162q-4 -20 -21 -23 q-25 -4 -84 -4l11 189h-232l-8 -162q-4 -20 -20 -23q-25 -4 -82 -4l10 189h-131zM313 502h232l14 254h-231z" />
+<glyph unicode="$" d="M135 72q0 12 12 43q14 35 25 45q76 -63 227 -64q233 0 234 221q0 66 -31 121q-29 51 -106 129l-230 215q-127 123 -127 236q0 100 72 166q70 63 201 76v198q0 31 22 41q25 10 80 10v-247q70 -2 125 -19q53 -14 73.5 -26.5t20.5 -20.5q0 -51 -33 -82q-72 47 -213 47 q-227 0 -227 -145q0 -80 107 -180l251 -234q133 -127 134 -287q0 -287 -271 -323v-193q0 -29 -22 -39q-25 -10 -78 -10v236q-82 4 -139.5 18t-83.5 35q-23 17 -23 33z" />
+<glyph unicode="%" horiz-adv-x="1456" d="M125 1073q0 377 289 377q143 0 207 -82q66 -84 65 -293q0 -379 -283 -379q-76 0 -118 15q-49 16 -86 53t-56 115q-18 75 -18 194zM233 1065q0 -164 39 -221.5t129 -57.5q178 0 179 289q0 166 -39 223q-41 59 -127 60q-181 0 -181 -293zM256 29l862 1421q66 -18 66 -51 q0 -10 -858 -1415q-70 14 -70 45zM772 360q0 377 289 377q143 0 207 -82q66 -84 65 -293q0 -379 -282 -378q-76 0 -119 14q-49 16 -86 53q-39 39 -58 115q-16 67 -16 194zM879 350q0 -162 41 -221q39 -57 129 -57q178 0 178 288q0 166 -39 224q-41 59 -127 59 q-182 0 -182 -293z" />
+<glyph unicode="&#x26;" horiz-adv-x="1048" d="M74 352q0 120 67 221q66 98 168 158q-168 279 -168 432q0 145 92 213q94 70 250 70q119 0 209 -29q86 -28 86 -61q0 -47 -26 -80q-100 70 -258 70q-109 0 -172 -41q-61 -39 -62 -156q0 -121 148 -361q139 -227 340 -462q35 115 34 249q0 154 -49 269q-49 117 -123 174 q80 12 215 12q106 0 181 -4q4 -16 4 -45q0 -27 -17 -39q-12 -10 -67 -10l-148 2q113 -131 113 -375q0 -190 -60 -328q113 -127 173 -159q-2 -25 -27 -60q-23 -31 -45 -30q-33 0 -162 143q-115 -145 -321 -145q-375 -1 -375 372zM190 346q0 -109 57.5 -184.5t194.5 -75.5 q162 0 250 125q-172 195 -330 436q-172 -98 -172 -301z" />
+<glyph unicode="'" horiz-adv-x="260" d="M72 1544q0 57 6 60q27 12 110 2q2 -72 -10 -240q-12 -158 -22 -168q-63 -2 -64 -2q-3 22 -12 147q-8 113 -8 201z" />
+<glyph unicode="(" horiz-adv-x="600" d="M141 659q0 180 35 359q35 176 82 282q45 102 102 193q53 84 89 119q37 37 45 37q43 0 61 -74q-295 -350 -299 -911q0 -344 98 -607q100 -266 201 -381q-18 -82 -63 -82q-14 0 -50 41q-31 37 -88 134q-55 96 -100 211q-47 121 -80 299q-33 175 -33 380z" />
+<glyph unicode=")" horiz-adv-x="600" d="M47 -324q45 57 90 136q51 90 96 200q53 133 82 295q31 172 31 357q-3 316 -92 546q-90 231 -207 365q18 74 62 74q12 0 45 -35q37 -39 86 -119q57 -90 102 -192q51 -117 84 -281q33 -166 33 -363q0 -201 -33 -372q-35 -180 -80 -299q-47 -123 -98 -213q-57 -102 -88 -137 q-37 -43 -49 -44q-46 0 -64 82z" />
+<glyph unicode="*" horiz-adv-x="964" d="M43 1051q-4 49 26.5 79.5t55.5 18.5l287 -158q2 -25 -8.5 -39t-28.5 -4zM154 602l243 272q27 27 58 -12l-199 -319q-25 -25 -55 -2q-33 22 -47 61zM424 1372q-2 14 8 20.5t33 8.5q45 4 78 -17l-31 -337q-3 -34 -55 -25zM508 870.5q8 12.5 35 20.5l229 -295 q18 -25 -12 -51q-29 -27 -74 -33l-178 332q-8 14 0 26.5zM563 940q-33 45 4 66l320 151q33 -23 39 -67q6 -41 -23 -52z" />
+<glyph unicode="+" d="M86 526v49q0 20 2 31q4 16 8 19q8 4 17 4h280v278q0 22 19 25q25 4 84 4v-307h307q0 -53 -4 -82q-2 -20 -25 -21h-278v-280q0 -20 -19 -23q-25 -4 -84 -4v307h-307z" />
+<glyph unicode="," horiz-adv-x="366" d="M92 -184q55 92 62 190q-41 25 -41 82q0 35 22 62q20 23 58 22q84 0 83 -96q0 -86 -53 -193q-51 -104 -84 -104q-37 0 -47 37z" />
+<glyph unicode="-" horiz-adv-x="591" d="M88 526v49q0 20 2 31q4 16 8 19q8 4 17 4h391q0 -53 -4 -82q-2 -20 -25 -21h-389z" />
+<glyph unicode="." horiz-adv-x="366" d="M100 82q0 41 23 65q25 27 63 27q90 0 90 -92q0 -37 -24 -66q-25 -27 -66 -26q-86 0 -86 92z" />
+<glyph unicode="/" horiz-adv-x="626" d="M20 -41l463 1573q10 25 27 31q12 4 98 4l-461 -1577q-10 -23 -28 -27q-25 -4 -99 -4z" />
+<glyph unicode="0" d="M74 606q0 309 90 467q88 156 289 156q195 0 276.5 -143.5t81.5 -452.5q0 -330 -86 -489.5t-287 -159.5q-199 0 -280 149q-84 151 -84 473zM195 592q0 -272 57 -387q59 -119 186 -119q139 0 197 133q59 137 59 420q0 252 -53 371q-51 117 -182 116q-141 0 -202.5 -135 t-61.5 -399z" />
+<glyph unicode="1" d="M74 84q0 23 323 22l29 1006q-39 -2 -266 -49q-16 23 -17 82q0 12 166 49t201 37q16 0 33 -8l-25 -1117h180l113 7q0 -113 -18 -113h-717q-2 12 -2 84z" />
+<glyph unicode="2" d="M74 43q0 4 1 11t1 9q0 10 6 23l8 16l16 25q8 12 17 29q61 100 158 211l174 196q74 80 133 187q57 102 57 202q0 80 -41 125q-39 43 -145 43q-206 0 -326 -80q-14 35 -14 86q0 16 43 41t129 43.5t184 18.5q170 0 232 -64q63 -68 63 -204q0 -111 -59 -226 q-57 -111 -136 -198l-182 -209q-111 -127 -170 -222h379l209 9q0 -115 -20 -115h-709q-8 14 -8 43z" />
+<glyph unicode="3" d="M100 -115q0 45 15 88q82 -70 217 -69q152 0 244 116.5t92 292.5q0 57 -19 101q-16 41 -51 67q-33 27 -76 41q-39 14 -90 21q-10 2 -100 6l-2 76q287 160 286 342q0 154 -182 153q-199 0 -317 -82q-12 27 -13 84q0 23 39 47.5t125 42.5q74 16 189 17q285 0 284 -238 q0 -199 -245 -370q131 -12 211 -84q82 -74 81 -224q0 -233 -126 -376q-125 -141 -334 -142q-106 0 -168 29q-60 28 -60 61z" />
+<glyph unicode="4" d="M78 403q0 102 155 394q160 297 299 422q20 18 54 18q27 0 61 -14l-6 -801l176 4l4 -43q0 -68 -37 -68h-143v-274q0 -29 -14 -37q-8 -4 -99 -4v315h-419q-31 31 -31 88zM180 422h348l19 661q-104 -115 -217 -307q-109 -186 -150 -354z" />
+<glyph unicode="5" d="M80 -123q0 53 14 94q76 -70 221 -69q186 0 272.5 133t86.5 348q0 311 -361 311q-39 0 -77 -6q-10 -2 -32 -4t-30 -4l-49 -12q-25 -6 -27 -6l58 567h626q0 -66 -10 -86q-8 -16 -53 -17l-465 4l-39 -354q55 14 143 15q70 2 140 -11q55 -10 137 -53q72 -37 115 -123t43 -207 q0 -602 -474 -602q-78 0 -133 14.5t-82 34.5q-24 19 -24 33z" />
+<glyph unicode="6" d="M78 608q0 224 37 387q37 160 102 258q63 94 150 140q84 43 182 43q223 0 223 -62q0 -39 -10 -80q-92 35 -213 35q-152 0 -252 -155q-98 -154 -111 -463q100 186 320 186q141 0 225 -98q84 -100 84 -299q0 -518 -389 -518q-86 0 -151.5 30.5t-102.5 79.5t-59 135 q-20 78 -27 170q-8 115 -8 211zM186 588q-3 -249 50 -375q53 -127 194 -127q131 0 203 106.5t72 280.5q0 317 -230 318q-181 0 -289 -203z" />
+<glyph unicode="7" d="M106 1229h738q-436 -717 -557 -1403q-115 0 -115 29q71 372 215 718q147 354 289 555q-111 -4 -535 -4q-35 1 -35 105z" />
+<glyph unicode="8" d="M82 371q0 132 74 239q72 106 184 162q-86 49 -131 90q-113 82 -113 238q0 170 100.5 258t252.5 88q356 0 356 -330q0 -207 -246 -354q76 -49 127 -92q133 -123 133 -299q0 -178 -92 -282.5t-264 -104.5q-190 0 -287 106q-94 103 -94 281zM188 377q0 -129 70 -207 q70 -80 199 -80q119 0 186 78q68 77 68 203q0 141 -121 245q-49 43 -141 97q-113 -41 -187 -133t-74 -203zM207 1106q0 -123 112 -201q25 -18 140 -86q240 117 239 293q0 127 -71 176q-74 51 -168 51q-109 0 -180.5 -59t-71.5 -174z" />
+<glyph unicode="9" d="M74 729q0 520 389 520q209 0 276 -139q70 -141 72 -485q-2 -424 -129 -631q-125 -205 -387 -205q-172 0 -172 49q0 51 8 76q68 -18 154 -18q385 0 415 616q-100 -186 -311 -186q-139 0 -227 102t-88 301zM184 748q0 -156 61.5 -236t174.5 -80q170 0 285 203v4 q0 131 -9 205q-10 86 -32 155q-25 76 -72 111t-127 35q-281 0 -281 -397z" />
+<glyph unicode=":" horiz-adv-x="366" d="M100 82q0 41 23 65q25 27 63 27q90 0 90 -92q0 -37 -24 -66q-25 -27 -66 -26q-86 0 -86 92zM100 791q0 41 23 65q25 27 63 27q90 0 90 -92q0 -37 -24 -66q-25 -27 -66 -27q-86 1 -86 93z" />
+<glyph unicode=";" horiz-adv-x="366" d="M86 -184q58 95 61 190q-41 25 -41 82q0 35 23 62q20 23 59 22q84 0 84 -96q0 -88 -55 -192.5t-84 -104.5q-39 0 -47 37zM102 791q0 37 25 65q25 27 61 27q90 0 91 -92q0 -37 -25 -66q-25 -27 -66 -27q-86 1 -86 93z" />
+<glyph unicode="&#x3c;" horiz-adv-x="817" d="M90 532q0 43 39 64l549 268q39 -37 39 -76q0 -27 -21 -34l-458 -226l487 -213q-4 -41 -18.5 -65.5t-34.5 -24.5q-10 0 -47 15l-514 225q-21 26 -21 67z" />
+<glyph unicode="=" d="M86 348v49q0 18 2 29q4 18 8 20q8 4 17 5h690q0 -59 -4 -84q-3 -18 -25 -19h-688zM86 705v49q0 20 2 30q4 16 8 19q8 4 17 4h690q0 -59 -4 -84q-3 -18 -25 -18h-688z" />
+<glyph unicode="&#x3e;" horiz-adv-x="817" d="M98 762q0 35 17 63q14 27 35 27q12 0 49 -14l514 -226q18 -31 18 -67q0 -45 -39 -64l-549 -270q-39 39 -39 76q0 29 21 37l459 225z" />
+<glyph unicode="?" horiz-adv-x="602" d="M51 1370q0 31 76 57q74 27 166 27q127 0 207 -67.5t80 -223.5q0 -80 -29 -159q-27 -72 -64 -127q-12 -18 -42.5 -58.5l-38.5 -50.5q-47 -63 -66 -96q-39 -59 -39 -140q0 -37 4 -57q6 -37 8 -39q4 -10 0 -20q-18 -23 -102 -13q-23 55 -23 125q0 96 48 179q20 37 90 131 q66 88 98 155q35 74 35 152q0 197 -197 196q-120 0 -196 -61q-15 31 -15 90zM178 82q0 41 23 65q25 27 63 27q90 0 90 -92q0 -37 -24 -66q-25 -27 -66 -26q-86 0 -86 92z" />
+<glyph unicode="@" horiz-adv-x="1542" d="M109 541q0 451 190 655q190 207 528 207q311 0 463 -160q150 -158 150 -518q0 -199 -27 -334q-29 -145 -63 -213q-37 -72 -86 -115q-43 -39 -84 -49q-37 -10 -68 -10q-78 0 -129 51q-78 -53 -227 -53q-123 -2 -195 61q-66 61 -63 248q2 180 86 254q83 74 221 74 q80 0 125 -16q0 23 1 66.5t3 62.5q2 90 -39 124.5t-125 34.5q-133 0 -219 -49q-12 25 -12 64q0 23 18 35q78 49 250 49q120 0 178 -56q57 -53 53 -186l-12 -440l-4 -94.5t-4 -73t-2 -31.5q40 -25 86 -25q25 0 49 13q20 10 57 53q31 37 58 102q25 61 43 174q18 114 18 259 q0 326 -113 458q-115 137 -389 137q-297 0 -450.5 -178t-153.5 -594q0 -215 27 -356q29 -152 74 -235q47 -88 120 -136q80 -51 154 -65q72 -14 188 -15q260 0 480 107q31 -52 30 -86q0 -25 -57 -51q-61 -29 -180 -53.5t-262 -24.5q-94 0 -158 6q-61 6 -143 29 q-77 22 -129 61q-53 41 -104.5 106.5t-82.5 166.5q-35 111 -51 237q-18 142 -18 322zM604 307q-4 -133 37 -174q43 -43 127 -43q55 0 100 25q43 23 47 65l13 367q-51 10 -101 10q-106 0 -163 -55q-56 -54 -60 -195z" />
+<glyph unicode="A" horiz-adv-x="890" d="M14 2l387 1421q4 18 39 19q31 0 49 -6l388 -1409q4 -16 -6.5 -22.5t-41.5 -6.5q-49 0 -67 2l-103 395h-426l-94 -372q-3 -25 -55 -25q-33 0 -70 4zM260 500h371l-99 379q-78 305 -86 401q-16 -137 -88 -401z" />
+<glyph unicode="B" horiz-adv-x="800" d="M113 0v1399q0 35 51 35h205q342 0 342 -312q0 -162 -62 -241q-59 -78 -139 -90q43 -4 76 -15q35 -12 78 -45q45 -35 67 -92q25 -61 25 -150q0 -121 -27 -206q-28 -89 -67 -142q-41 -53 -95 -86q-47 -29 -104 -43q-49 -12 -101 -12h-249zM225 102h137q117 0 191 88 q74 89 74 289q0 86 -19 139q-18 49 -59 76q-40 25 -80 31q-39 6 -107 6h-137v-629zM225 829h154q211 0 211 273q0 231 -219 231h-146v-504z" />
+<glyph unicode="C" horiz-adv-x="720" d="M80 649q0 205 24 359q25 156 62 237q37 84 92 133q53 47 107 64q45 14 112 14q94 0 141 -33q49 -35 50 -69q0 -37 -21 -70q-70 63 -153 64q-49 0 -86 -13q-39 -12 -80 -57q-43 -47 -70 -116.5t-45 -205.5q-16 -117 -16 -309q0 -156 20 -282q18 -113 55 -168.5t76 -76 t92 -20.5q70 0 125 27q59 29 88 63q20 -35 21 -71q0 -49 -76 -96q-72 -45 -178 -46q-55 0 -101 11q-41 10 -90 49q-51 41 -79 108q-27 61 -50 197q-20 123 -20 307z" />
+<glyph unicode="D" horiz-adv-x="845" d="M115 0v1399q0 35 51 35h205q203 0 301 -148q96 -143 96 -493q0 -244 -29 -394q-33 -166 -88 -245q-61 -86 -125 -119q-70 -35 -164 -35h-247zM227 109h138q41 0 84 14q35 12 75 55q39 41 64 117q27 78 41 203q16 137 16 303q0 287 -65.5 407.5t-210.5 120.5h-142v-1220z " />
+<glyph unicode="E" horiz-adv-x="688" d="M117 0v1405q0 29 26 29h490q0 -98 -10 -103q-2 -2 -11 -2h-385v-493h361q0 -76 -2 -88q-2 -16 -23 -17h-336v-627h404q0 -80 -2 -90q-2 -14 -23 -14h-489z" />
+<glyph unicode="F" horiz-adv-x="667" d="M117 0v1405q0 29 26 29h490q0 -92 -10 -99q-2 -2 -11 -2h-385v-495h361q0 -78 -2 -90q-2 -16 -23 -17h-336v-704q2 -27 -24 -27h-86z" />
+<glyph unicode="G" horiz-adv-x="815" d="M74 694q0 229 30 383q33 162 89 234q63 82 135 112q74 31 178 31q90 0 153 -29q61 -29 62 -65q0 -31 -16 -70q-71 55 -179 56q-113 0 -182.5 -51.5t-110 -199t-40.5 -395.5q0 -184 20 -323q18 -131 57 -187q41 -59 82 -79.5t109 -20.5q65 0 110 25q45 23 58 53v551h-201 v69q0 27 31 27h276v-721q-109 -115 -278 -114q-74 0 -133 16q-57 16 -107 61q-45 43 -78 127q-27 70 -47 207q-18 125 -18 303z" />
+<glyph unicode="H" d="M113 0v1405q0 23 14 25q20 4 98 4v-600h434v571q0 23 15 25q20 4 98 4v-1407q0 -20 -14 -23q-20 -4 -99 -4v727h-434v-700q0 -20 -14 -23q-20 -4 -98 -4z" />
+<glyph unicode="I" horiz-adv-x="335" d="M111 0v1376q0 45 16 51q15 6 98 7v-1407q0 -20 -14 -23q-20 -4 -100 -4z" />
+<glyph unicode="J" horiz-adv-x="616" d="M43 88q0 37 20 70q72 -74 173 -74q53 0 85.5 20.5t47.5 65.5q18 53 20 90q4 57 4 117v1001q0 43 15 49t98 7v-1090q0 -78 -4 -108q-8 -57 -21 -99q-14 -47 -43 -82q-27 -31 -76 -53q-51 -23 -114 -22q-100 0 -152 32q-53 35 -53 76z" />
+<glyph unicode="K" horiz-adv-x="802" d="M111 0v1405q0 23 14 25q20 4 98 4v-625l412 618q29 6 72 7q50 0 49 -21q0 -8 -6 -18l-412 -586q52 -33 118.5 -105.5t135.5 -174.5t115.5 -238t46.5 -268q0 -12 -6 -17q-12 -8 -37 -8q-57 0 -74 2q-83 280 -153.5 430.5t-159.5 239.5q-35 35 -101 65v-708q0 -20 -14 -23 q-20 -4 -98 -4z" />
+<glyph unicode="L" horiz-adv-x="671" d="M113 0v1393q0 31 14 37q10 4 100 4v-1328h406v-79q0 -27 -29 -27h-491z" />
+<glyph unicode="M" horiz-adv-x="1017" d="M113 0v1405q0 29 26 29h76l223 -719l72 -246l70 240l215 696q10 29 28 29h86v-1407q0 -20 -14 -23q-20 -4 -100 -4l4 592l18 577l-153 -512l-119 -348q-6 -18 -23 -18h-53l-115 366l-30 97l-66 215l-57 192q16 -377 20 -555l2 -579q0 -20 -14 -23q-20 -4 -96 -4z" />
+<glyph unicode="N" horiz-adv-x="931" d="M113 0v1405q0 29 26 29h80l246 -566q63 -172 254 -647q-10 170 -10 699v485q0 23 14 25q20 4 98 4v-1407q0 -27 -26 -27h-78l-252 575q-45 102 -250 642q8 -270 8 -689v-501q0 -18 -12 -23q-16 -4 -98 -4z" />
+<glyph unicode="O" horiz-adv-x="911" d="M78 727q0 391 94 559t299 168q200 0 283 -160q82 -158 82 -565q0 -414 -91 -579q-92 -170 -296.5 -170t-286.5 161q-84 164 -84 586zM203 692q0 -326 55 -461t195 -135q141 0 202 144q59 139 60 491q0 338 -55.5 473t-192.5 135q-135 0 -201 -149q-63 -146 -63 -498z" />
+<glyph unicode="P" horiz-adv-x="755" d="M113 0v1405q0 29 26 29h213q358 0 359 -390q0 -224 -99 -331q-98 -106 -268 -107h-121v-579q0 -18 -12 -23q-16 -4 -98 -4zM223 713h129q236 0 236 340q0 279 -226 278h-139v-618z" />
+<glyph unicode="Q" horiz-adv-x="911" d="M78 727q0 391 94 559t299 168q200 0 283 -160q82 -158 82 -565q0 -356 -68 -528q-70 -176 -219 -209q14 -90 45 -131q29 -39 80 -39q74 0 133 35q18 -25 18 -62q0 -33 -55 -51t-117 -18q-90 0 -145 59q-55 57 -86 195q-127 6 -199 75q-72 68 -108 230q-37 159 -37 442z M203 692q0 -326 55 -461t195 -135q141 0 202 144q59 139 60 491q0 338 -55.5 473t-192.5 135q-135 0 -201 -149q-63 -146 -63 -498z" />
+<glyph unicode="R" horiz-adv-x="774" d="M113 0v1405q0 29 26 29h213q358 0 359 -390q0 -326 -211 -411q172 -225 207 -602q2 -16 -9 -25q-8 -4 -47 -8q-47 0 -63 2q-43 414 -199 608q-10 -2 -45 -2h-121v-579q0 -18 -12 -23q-16 -4 -98 -4zM223 713h129q236 0 236 336q0 283 -226 282h-139v-618z" />
+<glyph unicode="S" horiz-adv-x="753" d="M68 88q0 43 32 80q76 -74 230 -74q246 0 245 250q0 80 -32 156q-31 70 -111 155l-221 232q-139 158 -139 291q0 125 92 200q90 76 252 76q131 0 192 -27q66 -29 66 -63q0 -37 -31 -68q-74 55 -219 56q-104 0 -170 -47q-63 -45 -64 -125q0 -94 113 -222l244 -251 q86 -92 115 -168q33 -86 32 -185q0 -170 -86 -272t-270 -102q-125 0 -199 34q-71 35 -71 74z" />
+<glyph unicode="T" horiz-adv-x="749" d="M14 1327v78q0 29 27 29h696v-80q0 -27 -26 -27h-283v-1300q0 -20 -14 -23q-20 -4 -99 -4v1327h-301z" />
+<glyph unicode="U" horiz-adv-x="935" d="M113 440v965q0 23 14 25q20 4 100 4v-998q0 -51 4 -112q2 -35 21 -93q15 -49 43 -79q25 -27 74 -48q45 -18 114 -18q143 0 230 43v1278q0 20 14 23q20 4 100 4v-1383q-47 -31 -141 -51t-203 -20q-92 0 -168 26q-70 25 -108 64q-37 37 -60 104q-23 70 -28 123 q-6 59 -6 143z" />
+<glyph unicode="V" horiz-adv-x="860" d="M12 1425q2 8 25 9h90l227 -897q35 -152 86 -435q45 279 80 435l207 856q6 41 33 41h92l-350 -1446q-74 -6 -88 -6q-43 0 -74 120l-326 1293q-3 12 -3 21q0 5 1 9z" />
+<glyph unicode="W" horiz-adv-x="1314" d="M12 1395q-1 7 -1 12q0 27 26 27h90l188 -899q35 -186 62 -398h8q12 160 55 398l158 784q6 39 33 39h80l180 -823q23 -117 27 -140l6 -42.5t8 -53.5t6 -47q2 -25 7 -62.5t7 -50.5h9q23 205 55 396l168 858q6 41 33 41h92l-289 -1446q-49 -6 -88 -6q-37 0 -62 104l-153 664 q-16 72 -62 389l-57 -387l-160 -764q-70 -4 -94 -4q-37 0 -61 122z" />
+<glyph unicode="X" horiz-adv-x="870" d="M20 0l345 743l-289 670q-6 16 10 19q12 2 119 2l104 -248q70 -162 137 -346q92 233 142 346l98 227q6 16 21 19q10 2 106 2l-297 -691l332 -720q3 -6 3 -11q0 -12 -20 -12h-116l-140 307l-143 338q-68 -170 -145 -336l-140 -295q-8 -14 -28 -14h-99z" />
+<glyph unicode="Y" horiz-adv-x="737" d="M12 1415q-2 4 -1 7q0 7 14 10q10 2 114 2l99 -293q43 -115 86 -262q49 -166 53 -193q14 106 139 457l90 270q2 12 21 17q20 4 102 4l-299 -848v-559q0 -18 -14 -23q-16 -4 -99 -4v582z" />
+<glyph unicode="Z" horiz-adv-x="802" d="M47 45q0 29 10 55l564 1231h-435q-55 0 -84 -4v78q0 29 29 29h610q12 -16 13 -39q0 -27 -13 -58l-569 -1235h461q78 0 108 13v-88q0 -27 -26 -27h-649q-19 16 -19 45z" />
+<glyph unicode="[" horiz-adv-x="847" d="M305 -406v2046q0 27 14 33q20 8 74 8h436q0 -66 -8 -86q-6 -16 -39 -16h-364v-1878h409q0 -74 -10 -90.5t-39 -16.5h-473z" />
+<glyph unicode="\" horiz-adv-x="618" d="M23 1532q-6 25 12 31q12 4 96 4l467 -1598q6 -23 -12 -26q-25 -4 -97 -4z" />
+<glyph unicode="]" horiz-adv-x="847" d="M20 -410q0 71 7 86q6 16 41 17h364v1884h-409q0 74 10 90t39 16h473v-2052q0 -29 -14.5 -35t-75.5 -6h-435z" />
+<glyph unicode="^" horiz-adv-x="878" d="M117 494l329 299l291 -267q20 -18 21 -37q0 -23 -17 -38q-14 -14 -41 -19l-264 215l-221 -190q-33 -23 -45 -23q-23 0 -37 17q-12 16 -16 43z" />
+<glyph unicode="_" horiz-adv-x="782" d="M33 -193q0 59 4 84q3 18 24 19h689v-49q0 -20 -2 -31q-2 -14 -10.5 -18.5t-14.5 -4.5h-690z" />
+<glyph unicode="`" horiz-adv-x="329" d="M0 1411q2 20 20 57q16 31 33 31q2 0 133 -108q117 -96 146 -131q-23 -66 -43 -66q-2 0 -139 102q-140 105 -150 115z" />
+<glyph unicode="a" horiz-adv-x="749" d="M74 285q0 104 24 174q23 68 72 102q45 33 94 45t115 12q109 0 168 -24v180q0 92 -41 127t-121 35q-184 0 -295 -51q-16 33 -16 65q0 29 16 41q35 23 125 37q98 16 197 16q125 0 186 -57q59 -55 59 -190v-123q0 -324 -10 -621q-119 -74 -278 -73q-39 0 -88 4 q-31 2 -78 22.5t-68 48.5q-27 35 -43 90q-18 60 -18 140zM190 289q0 -72 15 -115q16 -47 45 -65q31 -18 59 -25q27 -6 76 -6q104 0 152 45q10 160 10 387q-53 20 -133 20q-104 0 -164 -47t-60 -194z" />
+<glyph unicode="b" horiz-adv-x="819" d="M119 41v1409q0 37 20 47q16 8 92 8v-544q106 84 254 83q131 -2 199 -92q70 -92 70 -301q0 -178 -27 -299q-29 -131 -65 -196q-39 -70 -95 -113q-47 -37 -104 -51q-49 -12 -109 -12q-157 0 -235 61zM231 119q39 -37 138 -37q262 0 262 539q0 180 -45 249.5t-150 69.5 q-125 0 -205 -80v-741z" />
+<glyph unicode="c" horiz-adv-x="675" d="M82 489q0 141 24 246q25 106 58 162q34 58 86 92q57 37 96 45q51 10 105 10q74 0 123 -24.5t49 -56.5q0 -37 -15 -68q-70 47 -159 47q-43 0 -70 -8q-31 -9 -68 -37q-33 -25 -59 -74q-23 -41 -39 -135q-16 -92 -16 -205q0 -237 55 -319t168 -82q121 0 188 61 q14 -31 15 -65q0 -37 -68 -67.5t-166 -30.5q-74 0 -127 18q-51 18 -94 70q-45 53 -66 157q-20 100 -20 264z" />
+<glyph unicode="d" horiz-adv-x="821" d="M84 483q0 281 94 420q95 141 246 141q104 0 168 -45v451q0 39 20 47q18 8 95 8v-1464q-121 -61 -291 -61q-76 0 -131 16q-51 16 -103 65q-49 49 -73 152q-25 104 -25 270zM205 494q0 -174 31 -267q31 -94 73 -118q41 -23 117 -27q102 0 168 41l-2 780q-53 41 -135 41 q-109 0 -180.5 -108.5t-71.5 -341.5z" />
+<glyph unicode="e" horiz-adv-x="768" d="M78 457q0 145 22 262q22 111 56 172q33 57 86 96t98 47q51 10 104 10q258 0 258 -323q0 -156 -20 -246q-182 -37 -489 -37q0 -137 32 -223q31 -78 78 -102q45 -23 129 -23q150 0 246 70q14 -35 14 -80q0 -37 -84 -68q-88 -33 -194 -32q-80 0 -135 18q-57 18 -104.5 65.5 t-72 145.5t-24.5 248zM195 532q270 0 389 29q8 57 8 137q-2 127 -37 187q-33 57 -121 57q-49 0 -80 -14q-39 -18 -71 -54q-35 -37 -60 -124q-26 -91 -28 -218z" />
+<glyph unicode="f" horiz-adv-x="505" d="M31 926q0 63 4 84q2 14 26 14h125v129q0 96 21 160q20 66 53 104q25 31 80 60q45 25 88 30q40 6 92 6q176 0 176 -63q0 -25 -12 -64q-68 25 -152 25q-51 0 -83 -8q-45 -10 -74 -31q-37 -25 -56 -78q-20 -61 -20 -137v-133h213q0 -63 -4 -84q-2 -14 -25 -14h-184v-899 q0 -27 -29 -27h-84v926h-155z" />
+<glyph unicode="g" horiz-adv-x="823" d="M68 -186q0 72 49 139t119 119q-68 20 -103 45q-37 27 -33 63q0 78 129 180q-129 80 -129 314q0 184 93 276q94 94 245 94q43 0 92 -12h254q12 -31 13 -53q0 -45 -47 -45q-52 0 -111 12q113 -74 113 -254q0 -170 -80 -274q-78 -102 -252 -103q-74 0 -117 15 q-86 -71 -86 -117q0 -47 297 -84q135 -18 203 -66q72 -49 71 -159q0 -127 -102 -217t-295 -90q-323 0 -323 217zM182 -164q0 -68 45 -100q47 -35 174 -35q131 0 201 57q72 59 72 131q0 78 -53 109q-47 29 -177 41q-102 12 -114 14q-59 -41 -103 -102q-45 -64 -45 -115z M217 676q0 -131 43 -199q45 -70 168 -69q104 0 158 86q53 88 53 221q0 242 -205 241q-96 0 -158 -71q-59 -68 -59 -209z" />
+<glyph unicode="h" horiz-adv-x="808" d="M111 0v1450q0 37 20 47q16 8 92 8v-549q109 88 260 88q137 0 186.5 -67.5t49.5 -206.5v-743q0 -20 -14 -23q-20 -4 -101 -4v745q0 92 -35 144q-34 49 -129 49q-129 0 -217 -82v-829q0 -20 -14 -23q-20 -4 -98 -4z" />
+<glyph unicode="i" horiz-adv-x="348" d="M113 1370q0 94 67 94q63 0 64 -92q-4 -96 -70 -96q-63 0 -61 94zM117 0v969q0 39 20 47q18 8 96 8v-997q0 -18 -16 -23q-20 -4 -100 -4z" />
+<glyph unicode="j" horiz-adv-x="370" d="M-231 -305q0 39 18 63q90 -53 197 -53q94 0 120 55q27 53 27 187v1022q0 39 19 47q16 8 94 8v-1100q0 -156 -53.5 -239.5t-198.5 -83.5q-102 0 -164 28q-59 29 -59 66zM127 1370q0 94 68 94q63 0 63 -92q-4 -96 -70 -96q-63 0 -61 94z" />
+<glyph unicode="k" horiz-adv-x="800" d="M117 0v1450q0 37 20 47q16 8 92 8v-585q59 59 139.5 91.5t149.5 32.5q180 0 180 -180q0 -61 -24.5 -120.5t-65.5 -100.5q-40 -40 -67 -61q-33 -25 -58 -39q82 -14 156 -92q72 -76 94 -220q6 -43 6 -94t-6 -108q-4 -25 -20 -27q-10 -2 -107 -2q8 57 8 127q0 98 -18 162 q-35 117 -104 157q-50 29 -101 30q-20 0 -41 -5l-121 -45v-399q0 -18 -14 -23q-16 -4 -98 -4zM229 514q346 119 346 322q0 104 -104 104q-131 0 -242 -131v-295z" />
+<glyph unicode="l" horiz-adv-x="346" d="M117 0v1450q0 37 18 47q16 8 94 8v-1478q0 -20 -14 -23q-20 -4 -98 -4z" />
+<glyph unicode="m" horiz-adv-x="1210" d="M117 0v977q154 68 303 67q141 0 196 -73q113 74 261 73q141 0 186 -69q43 -68 43 -227v-721q0 -20 -14 -23q-20 -4 -99 -4v754q0 109 -26 147q-29 41 -109 41q-104 0 -188 -55v-860q0 -18 -11 -23h-2q-16 -4 -100 -4v801q-3 77 -31 110q-27 33 -108 33q-92 0 -189 -45 v-872q0 -18 -16 -23q-20 -4 -96 -4z" />
+<glyph unicode="n" horiz-adv-x="819" d="M113 0v973q168 72 331 71q158 0 220 -65q61 -65 61 -215v-737q0 -20 -14 -23q-20 -4 -101 -4v733q0 117 -34.5 164t-135.5 47q-125 0 -215 -47v-870q0 -20 -14 -23q-20 -4 -98 -4z" />
+<glyph unicode="o" horiz-adv-x="782" d="M63 510q0 535 343 534q164 0 241 -114q76 -113 76 -418q0 -532 -340 -532q-83 0 -135 18q-55 18 -98 72q-43 51 -66 163q-21 103 -21 277zM184 502q0 -164 27 -266q25 -96 65 -127t111 -31q215 0 215 438q0 254 -47 340q-49 88 -154 88q-106 0 -161.5 -98t-55.5 -344z " />
+<glyph unicode="p" horiz-adv-x="817" d="M117 -356v1319q131 82 295 81q168 0 254 -96q84 -92 84 -336q0 -154 -23 -278q-20 -115 -57 -184q-35 -66 -82 -107q-43 -37 -88 -51q-40 -12 -86 -12q-126 0 -185 73v-448q-33 -8 -59 -8q-53 0 -53 47zM229 176q55 -94 154 -94q244 6 244 508q0 209 -52 280 q-51 74 -169 74q-100 0 -177 -51v-717z" />
+<glyph unicode="q" horiz-adv-x="833" d="M82 453q0 301 110.5 446t303.5 145q135 0 223 -63v-1337q0 -33 -12 -41q-10 -8 -58 -9h-24q-6 0 -12.5 1.5t-8.5 1.5v491q-74 -109 -229 -108q-293 0 -293 473zM205 451q0 -369 209 -369h9q53 0 101 31q52 34 80 98v696q-47 37 -133 37q-266 1 -266 -493z" />
+<glyph unicode="r" horiz-adv-x="561" d="M113 0v954q133 90 274 90q147 0 148 -71q0 -37 -17 -68q-51 31 -115 31q-100 0 -176 -57v-852q0 -20 -14 -23q-20 -4 -100 -4z" />
+<glyph unicode="s" horiz-adv-x="751" d="M80 68q0 35 24 69q90 -53 224 -53q221 0 221 158q0 113 -115 198l-215 156q-82 57 -108.5 104.5t-26.5 110.5q0 109 88 170q92 63 246 63q80 0 151 -20q63 -18 86 -40.5t23 -41.5q0 -35 -27 -63q-102 66 -223 65q-96 0 -155.5 -35t-59.5 -98q0 -76 100 -143l222 -158 q139 -115 139 -254q0 -135 -88 -205q-90 -72 -248 -71q-113 0 -188 26q-70 25 -70 62z" />
+<glyph unicode="t" horiz-adv-x="608" d="M55 924q0 63 4 84q4 16 23 16h125v324q0 33 18.5 39t93.5 6v-369h248q0 -63 -4 -84q-4 -16 -20 -16h-224v-629q0 -59 5 -113q2 -37 26 -71q23 -31 64 -31q66 0 133 33q8 -31 8 -60q0 -37 -47 -55q-49 -18 -119 -18q-59 0 -98 22q-37 23 -55 70q-16 43 -23 96 q-6 49 -6 129v627h-152z" />
+<glyph unicode="u" horiz-adv-x="849" d="M119 346v649q0 25 14 27q10 2 100 2v-692q0 -147 39 -199q41 -53 158 -53q111 0 188 47v868q0 23 15 25q20 4 98 4v-973q-139 -72 -311 -71.5t-238 83.5q-63 82 -63 283z" />
+<glyph unicode="v" horiz-adv-x="727" d="M53 987q-3 9 -3 15q0 13 11 18q10 4 107 4l88 -356q37 -143 57 -244l43 -215l17 -82h2q47 281 108 543l80 325q3 22 19 25q20 4 98 4l-262 -1036q-45 -4 -76 -4q-23 0 -51 102z" />
+<glyph unicode="w" horiz-adv-x="1130" d="M49 995q-3 22 12 25q20 4 107 4l82 -373q57 -283 96 -510h6q16 94 88 445l72 375q4 29 39 28h74l88 -407q4 -14 21.5 -87t25.5 -116l19.5 -96.5l15.5 -77.5l10 -64h8q15 163 86 510l70 344q2 20 20 25q20 4 94 4q-227 -1036 -233 -1036q-45 -4 -70 -4q-14 0 -32 30 q-16 27 -29 82l-33 142q-70 287 -119 571q-57 -346 -110 -573l-56 -248q-78 -4 -88 -4q-29 0 -49 100z" />
+<glyph unicode="x" horiz-adv-x="892" d="M45 0l332 537l-285 467q-6 16 10 18q12 2 109 2l104 -164l140 -244l143 248l92 140q10 16 23 18q10 2 106 2l-297 -479l320 -516q7 -10 7 -17t-9 -8q-20 -4 -121 -4l-107 164q-71 114 -172 295q-20 -39 -170 -297l-92 -139q-8 -14 -28 -19q-25 -4 -105 -4z" />
+<glyph unicode="y" horiz-adv-x="755" d="M2 -334q0 39 21 66q61 -29 124 -29q127 0 187 264l-266 1022q-6 29 8 31q20 4 100 4l154 -602l59 -318q18 141 55 320l138 565q3 28 18 31q20 4 102 4l-270 -1087q-47 -182 -110 -256q-66 -76 -170 -76q-150 0 -150 61z" />
+<glyph unicode="z" horiz-adv-x="743" d="M59 57q0 25 13 45l481 824h-248q-166 0 -231 -11q-4 37 -4 56q0 53 36 53h566q12 -12 12 -37q0 -33 -14 -59l-477 -822h237q184 0 248 17q2 -8 2 -53q0 -70 -43 -70h-557q-21 18 -21 57z" />
+<glyph unicode="{" horiz-adv-x="581" d="M106 606q0 43 31 62q39 23 53 37q18 18 33 55t15 104q0 90 -14.5 219t-14.5 201q0 240 317 240q23 -35 23 -70q0 -37 -29 -41q-94 -2 -145 -45q-51 -41 -51 -133q0 -43 12 -174q12 -132 12 -221q0 -174 -121 -224q57 -20 90 -65q31 -43 31 -127q0 -90 -12 -225.5 t-12 -188.5q0 -131 47 -168q47 -39 164 -47q6 -28 6 -43q0 -59 -43 -59q-156 0 -222 63q-68 63 -67 211q0 78 14.5 205t14.5 219q0 80 -31 117q-29 35 -92 47q-9 22 -9 51z" />
+<glyph unicode="|" horiz-adv-x="722" d="M305 -410v2044q0 23 17 29q14 6 96 6v-2048q0 -23 -17 -27q-20 -4 -96 -4z" />
+<glyph unicode="}" horiz-adv-x="581" d="M37 -240q0 37 26 41q98 3 148 43q51 41 51 136q0 46 -12 178q-12 133 -12 219q0 98 30 147q29 47 90 76q-61 23 -90 64q-31 43 -30 129q0 90 12 225t12 188q0 127 -47 164q-49 39 -166 51q0 8 -1 18.5t-2 16.5t-1 8q0 59 41 60q156 0 221 -64q68 -63 68 -211 q0 -80 -14.5 -207t-14.5 -219q0 -80 31 -116q29 -35 92 -48q10 -25 10 -49q0 -41 -30 -63q-40 -22 -56 -37q-16 -16 -31 -53q-16 -43 -16 -107q0 -90 14.5 -219t14.5 -201q0 -238 -318 -237q-20 26 -20 67z" />
+<glyph unicode="~" horiz-adv-x="817" d="M25 535q33 49 96 88t151 39q71 0 148 -50q80 -51 139 -51q92 0 160 82q25 20 49 2q23 -16 29 -55q-90 -133 -248 -133q-76 0 -160 51q-80 49 -127 49q-41 0 -72 -14q-39 -18 -67 -41l-19.5 -15.5t-14.5 -10.5l-5 -3q-18 -8 -37 10q-20 21 -22 52z" />
+<glyph unicode="&#xa1;" horiz-adv-x="385" d="M111 948q0 41 24 66q27 27 66 26q86 0 86 -92q0 -41 -23 -65q-25 -27 -63 -27q-90 0 -90 92zM123 -406l18 1002q3 34 25 43q25 10 86 10l16 -1022q0 -20 -28 -26q-28 -7 -117 -7z" />
+<glyph unicode="&#xa2;" d="M186 461q0 524 291 575v217q0 31 25 43q20 10 78 11v-267q57 -4 102 -24.5t45 -38.5q0 -55 -14 -84q-70 45 -148 45q-51 0 -94 -16q-41 -16 -84 -62q-41 -45 -63 -147q-23 -106 -23 -252q0 -135 14 -207q16 -82 47 -115q33 -37 70 -45q41 -10 103 -10q96 0 178 63 q14 -27 14 -73q0 -29 -59 -60q-59 -33 -133 -34v-218q0 -31 -21 -38q-25 -10 -80 -11v271q-84 10 -133 43q-47 33 -82 141q-33 105 -33 293z" />
+<glyph unicode="&#xa3;" horiz-adv-x="782" d="M31 569v49q0 10 4 31q4 16 8 19q8 4 14 4h123q0 301 84 426q82 121 240 121q86 0 145.5 -27t59.5 -70q0 -37 -21 -71q-74 55 -168 55q-74 0 -119 -31q-47 -31 -77.5 -129t-30.5 -266v-8h301q0 -53 -4 -82q-2 -20 -25 -21h-272q0 -264 14 -456l375 -9q10 -37 10 -53 q0 -51 -112 -51h-381q-18 313 -19 569h-149z" />
+<glyph unicode="&#xa5;" d="M78 1415q-6 14 12 17q10 2 115 2l98 -293q37 -104 88 -267q47 -147 49 -167q4 53 138 436l94 270q2 12 20 17q20 4 103 4l-228 -641h201q0 -55 -8 -74q-8 -20 -39 -21h-189l-36 -108v-127h274q0 -57 -8 -74q-10 -20 -39 -20h-227v-342q0 -20 -15 -23q-20 -4 -98 -4v369 h-279q0 59 9 75q10 18 39 19h231v119l-43 116h-236q0 55 9 74q8 20 39 21h153z" />
+<glyph unicode="&#xa6;" horiz-adv-x="460" d="M174 -397v809q0 25 14.5 35t45 10t53.5 -8v-814q0 -29 -11 -32q-12 -6 -47 -6q-37 0 -55 6zM174 682v793q0 47 59 47q31 0 54 -9v-798q0 -25 -10.5 -33t-47.5 -8q-32 0 -55 8z" />
+<glyph unicode="&#xa7;" horiz-adv-x="749" d="M96 805q0 135 127 209l-20 22q-49 55 -66 92q-20 45 -20 93q0 100 82 161q80 59 219 60q86 0 149 -29q61 -27 74 -59q4 -12 4 -23q0 -39 -24 -69q-80 61 -197 61q-86 0 -133 -33q-49 -33 -49 -88q0 -51 69 -131q18 -20 121 -110q98 -86 135 -130q88 -94 88 -204 q0 -51 -32 -113q-31 -57 -95 -94l21 -23q53 -59 67 -92q18 -40 19 -92q0 -98 -82 -159.5t-217 -61.5q-88 0 -152 28q-61 29 -73 60q-4 8 -5 22q0 39 25 70q77 -61 197 -61q88 0 135 32.5t47 87.5q0 61 -70 131q-37 37 -118.5 109t-137.5 131q-88 101 -88 203zM203 799 q0 -74 69 -156q20 -27 174 -151q39 16 74 63q31 43 31 78q0 74 -72 158q-37 41 -174 149q-45 -14 -73.5 -59t-28.5 -82z" />
+<glyph unicode="&#xa8;" horiz-adv-x="448" d="M0 1329q0 37 20 60q20 25 60 24q40 0 61 -24q20 -23 21 -60q0 -35 -23 -61q-20 -23 -59 -23q-80 0 -80 84zM289 1329q0 33 22 60q20 25 58 24q40 0 61 -24q20 -23 21 -60q0 -35 -23 -61q-20 -23 -59 -23q-80 0 -80 84z" />
+<glyph unicode="&#xa9;" horiz-adv-x="948" d="M78 1106q0 451 409 450q197 0 293 -102q94 -100 94 -346q0 -219 -104 -336t-295 -117q-203 0 -301 99q-96 96 -96 352zM168 1100q0 -197 73.5 -277t225.5 -80q145 0 231 92.5t86 276.5q0 195 -73 279q-74 82 -222 82q-321 0 -321 -373zM311 1081q0 184 54 240 q55 59 139 59q31 0 61.5 -12t30.5 -22q0 -31 -14 -54q-35 20 -68 21q-59 0 -92 -45q-35 -47 -35 -189q0 -113 24.5 -143.5t82.5 -30.5q41 0 88 27q14 -27 14 -49q0 -14 -37 -29q-39 -16 -74 -16q-96 0 -135 44.5t-39 198.5z" />
+<glyph unicode="&#xaa;" horiz-adv-x="684" d="M100 838q0 143 64 194q66 53 178 53q76 0 143 -22v160q0 129 -147 129q-109 0 -207 -49q-15 15 -18 43q-4 29 10 43q76 66 248 65q213 0 213 -197v-608q-113 -57 -252 -57q-113 0 -172.5 47t-59.5 199zM195 831q0 -92 41 -122q40 -31 116 -31q86 0 133 31v268 q-49 20 -114 20q-90 0 -133 -31t-43 -135z" />
+<glyph unicode="&#xab;" horiz-adv-x="851" d="M57 522q0 25 76 150q63 104 154 237l75 115q18 0 35 -14q23 -18 27 -29l6 -14q0 -23 -65 -136q-59 -100 -134 -208l-65 -101q272 -403 272 -452q-27 -70 -65 -70q-316 463 -316 522zM391 512q0 20 76 141q41 66 149 224l76 104q12 0 35 -14q18 -12 27 -27l6 -14 q0 -27 -64 -129q-39 -61 -131 -195l-65 -90q266 -352 266 -399q-25 -68 -64 -68q-311 416 -311 467z" />
+<glyph unicode="&#xac;" horiz-adv-x="817" d="M68 553q0 25 12 39q12 16 29 16h622v-381q-18 -8 -55 -8q-53 0 -53 39v242h-545q-10 26 -10 53z" />
+<glyph unicode="&#xad;" horiz-adv-x="591" d="M88 526v49q0 20 2 31q4 16 8 19q8 4 17 4h391q0 -53 -4 -82q-2 -20 -25 -21h-389z" />
+<glyph unicode="&#xae;" horiz-adv-x="948" d="M78 1106q0 451 409 450q197 0 293 -102q94 -100 94 -346q0 -219 -104 -336t-295 -117q-203 0 -301 99q-96 96 -96 352zM168 1100q0 -197 73.5 -277t225.5 -80q145 0 231 92.5t86 276.5q0 195 -73 279q-74 82 -222 82q-321 0 -321 -373zM352 844v530q0 10 13 10h100 q170 0 170 -147q0 -111 -84 -152q80 -82 96 -225q0 -14 -22 -18l-3 1q-3 1 -7.5 1h-10.5h-24q-23 166 -97 225h-67v-209q0 -10 -10 -14q-6 -2 -41 -2h-13zM416 1128h47q104 0 104 109q0 90 -102 90h-49v-199z" />
+<glyph unicode="&#xaf;" horiz-adv-x="522" d="M0 1313q4 55 47 55h467q10 -25 10 -51q-2 -57 -45 -57h-473q-6 22 -6 53z" />
+<glyph unicode="&#xb0;" horiz-adv-x="757" d="M199 1335q0 186 192 187q88 0 133 -41q43 -39 43 -144q0 -92 -49 -139q-51 -47 -141 -47q-92 0 -133 39q-45 41 -45 145zM283 1331q0 -100 96 -100q106 0 106 106q0 104 -94 105q-108 0 -108 -111z" />
+<glyph unicode="&#xb1;" horiz-adv-x="884" d="M86 27v49q0 20 2 30q4 16 8 19q8 4 17 4h690q0 -57 -4 -82q-4 -20 -25 -20h-688zM88 573v50q0 20 2 30q4 16 8 19q8 4 17 4h280v278q0 22 19 25q25 4 84 4v-307h307q0 -59 -4 -84q-3 -18 -25 -19h-278v-280q0 -18 -19 -23q-25 -4 -84 -4v307h-307z" />
+<glyph unicode="&#xb2;" horiz-adv-x="819" d="M106 633q0 43 19 65q53 59 180 170q131 115 184 183q59 76 60 153q0 59 -35 99q-34 37 -123 36q-115 0 -235 -90q-25 33 -25 70q0 43 96 90q92 45 205 45q137 0 192.5 -59.5t55.5 -161.5q0 -74 -45 -150q-46 -77 -98 -129l-140 -133q-104 -98 -127 -123h439q8 -33 8 -49 q0 -57 -39 -57h-563q-9 14 -9 41z" />
+<glyph unicode="&#xb3;" horiz-adv-x="845" d="M125 672q0 39 31 63q78 -59 215 -59q111 0 174 45t63 125q0 55 -39 92q-41 39 -100 47q-41 8 -168 8q-12 14 -12 51q0 41 37 41q61 0 135 -8q106 70 106 162q0 43 -37 78q-39 35 -127 35q-138 0 -239 -80q-25 25 -25 55q0 33 17 41q90 86 284 86q131 0 189 -51 q59 -53 59 -133q0 -125 -115 -215q70 -25 109 -76q41 -53 41 -123q0 -139 -96 -213q-92 -72 -258 -72q-164 0 -228 58q-16 16 -16 43z" />
+<glyph unicode="&#xb4;" horiz-adv-x="329" d="M0 1249q74 74 119 113q94 82 110 94q45 35 50 35q18 0 34 -33q14 -31 19 -57q-14 -18 -111 -90q-102 -78 -176 -127q-10 0 -22 16q-6 8 -17 33z" />
+<glyph unicode="&#xb5;" horiz-adv-x="856" d="M119 -391v1376q0 49 55 49q37 0 55 -8v-760q0 -180 195 -180q106 0 201 41v856q0 27 12 39t43 12q37 0 55 -8v-979q-158 -68 -311 -67q-137 0 -195 73v-407q0 -45 -61 -45q-26 0 -49 8z" />
+<glyph unicode="&#x3bc;" horiz-adv-x="856" d="M119 -391v1376q0 49 55 49q37 0 55 -8v-760q0 -180 195 -180q106 0 201 41v856q0 27 12 39t43 12q37 0 55 -8v-979q-158 -68 -311 -67q-137 0 -195 73v-407q0 -45 -61 -45q-26 0 -49 8z" />
+<glyph unicode="&#xb6;" horiz-adv-x="1116" d="M88 864q0 293 107 439q109 150 299 149q135 0 237 -53v-1364q0 -41 -57 -41q-35 0 -53 8v422q-70 -35 -187 -35q-152 0 -250 109q-96 104 -96 366zM203 874q0 -387 258 -391q90 -4 157 37v805q-41 29 -139 29q-135 0 -205 -123q-71 -126 -71 -357zM885 2v1364q0 47 59 47 q18 0 53 -10v-1368q0 -22 -12 -31q-10 -8 -45 -8q-37 0 -55 6z" />
+<glyph unicode="&#xb7;" horiz-adv-x="423" d="M121 551q0 39 24.5 65.5t61.5 26.5q90 0 90 -92q0 -39 -24.5 -65.5t-65.5 -26.5q-86 0 -86 92z" />
+<glyph unicode="&#xb8;" horiz-adv-x="256" d="M0 -375q10 53 20 68q9 3 19 0q2 0 12 -5t19 -7q20 -6 41 -7q70 0 69 74q0 72 -67 72l-80 -13l39 199h73l-26 -129q4 4 37 4q41 0 71 -31q29 -29 29 -88q0 -78 -43 -118q-41 -39 -104 -39q-62 0 -109 20z" />
+<glyph unicode="&#xb9;" horiz-adv-x="833" d="M125 639q0 59 39 59h231v631l-250 -51q-14 20 -14 53q0 41 39 53q229 70 301 70q25 0 39 -6v-750h195q6 -27 6 -51q0 -55 -37 -55h-543q-6 27 -6 47z" />
+<glyph unicode="&#xba;" horiz-adv-x="710" d="M86 1020q0 217 76 328q74 106 207 106q135 0 196.5 -92t61.5 -340q0 -428 -279 -428q-133 0 -198 90q-64 88 -64 336zM184 1012q0 -186 39 -252q41 -70 125 -70q182 0 182 334q0 186 -38 256q-41 72 -121 72q-187 0 -187 -340z" />
+<glyph unicode="&#xbb;" horiz-adv-x="847" d="M88 111q0 49 266 401l-63 90q-82 117 -131 195q-66 100 -66 129q0 39 64 57q305 -420 305 -471q0 -25 -78 -143q-70 -106 -158 -222l-77 -104q-4 2 -17 6q-10 4 -27 21q-18 18 -18 41zM412 68q0 18 69 135l135 217l68 102q-264 391 -264 445q0 16 18 32q16 14 33 21l16 4 q305 -449 306 -502q0 -31 -78 -155q-92 -150 -160 -248l-78 -119l-18 6q-12 4 -29 21q-18 18 -18 41z" />
+<glyph unicode="&#xbc;" horiz-adv-x="1794" d="M125 639q0 59 39 59h231v631l-250 -51q-14 20 -14 53q0 41 39 53q229 70 301 70q25 0 39 -6v-750h195q6 -27 6 -51q0 -55 -37 -55h-543q-6 27 -6 47zM485 29l818 1401q8 27 36 26q41 0 76 -43l-819 -1411q-10 -18 -33 -18q-51 0 -78 45zM1012 205q0 27 14 63 q41 127 148 293q111 172 204 262q37 39 92 39q10 0 48 -6v-596h143q10 -27 10 -55q0 -53 -35 -53h-118v-123q0 -39 -62 -39q-20 0 -45 6v156h-383q-16 20 -16 53zM1122 254h291l4 467q-82 -76 -168 -209q-90 -141 -127 -258z" />
+<glyph unicode="&#xbd;" horiz-adv-x="1863" d="M125 639q0 59 39 59h231v631l-250 -51q-14 20 -14 53q0 41 39 53q229 70 301 70q25 0 39 -6v-750h195q6 -27 6 -51q0 -55 -37 -55h-543q-6 27 -6 47zM485 29l818 1401q8 27 36 26q41 0 76 -43l-819 -1411q-10 -18 -33 -18q-51 0 -78 45zM1133 41q0 45 18 65 q53 59 180 170q125 109 184.5 185t59.5 151q0 59 -35 99q-34 37 -123 37q-115 0 -235 -91q-25 35 -25 70q0 41 96 88q98 47 205 47q137 0 193 -59q55 -57 55 -162q0 -74 -45 -149q-46 -77 -98 -130q-53 -53 -140 -131q-96 -88 -127 -125h439q8 -33 8 -49q0 -57 -39 -57h-563 q-8 14 -8 41z" />
+<glyph unicode="&#xbe;" horiz-adv-x="1787" d="M125 672q0 39 31 63q78 -59 215 -59q111 0 174 45t63 125q0 55 -39 92q-41 39 -100 47q-41 8 -168 8q-12 14 -12 51q0 41 37 41q61 0 135 -8q106 70 106 162q0 43 -37 78q-39 35 -127 35q-138 0 -239 -80q-25 25 -25 55q0 33 17 41q90 86 284 86q131 0 189 -51 q59 -53 59 -133q0 -125 -115 -215q70 -25 109 -76q41 -53 41 -123q0 -139 -96 -213q-92 -72 -258 -72q-164 0 -228 58q-16 16 -16 43zM498 29l817 1401q8 27 37 26q41 0 75 -43l-819 -1411q-10 -18 -33 -18q-50 0 -77 45zM1006 205q0 27 14 63q41 127 147 293 q111 172 205 262q37 39 92 39q10 0 47 -6v-596h144q10 -27 10 -55q0 -53 -35 -53h-119v-123q0 -39 -61 -39q-20 0 -45 6v156h-383q-16 20 -16 53zM1116 254h291l4 467q-82 -76 -168 -209q-90 -141 -127 -258z" />
+<glyph unicode="&#xbf;" horiz-adv-x="616" d="M29 -109q0 78 28 160q25 70 64 127l82 111q51 70 65 94q37 63 37 139q0 14 -4 56q-4 33 -6 40q-4 10 0 21q18 29 102 12q23 -55 23 -125q0 -94 -47 -178q-41 -66 -90 -131q-61 -80 -101 -154q-35 -68 -35 -151q0 -199 199 -199q117 0 197 62q14 -37 14 -88q0 -29 -78 -58 q-80 -29 -164 -28q-125 0 -206 69q-80 67 -80 221zM254 946q0 37 25 66q25 27 65 26q86 0 86 -92q0 -37 -24 -65q-25 -27 -62 -27q-90 0 -90 92z" />
+<glyph unicode="&#xc0;" horiz-adv-x="890" d="M14 2l387 1421q4 18 39 19q31 0 49 -6l388 -1409q4 -16 -6.5 -22.5t-41.5 -6.5q-49 0 -67 2l-103 395h-426l-94 -372q-3 -25 -55 -25q-33 0 -70 4zM209 1821q2 20 20 57q16 31 33 31q2 0 133 -109q117 -96 146 -131q-23 -66 -43 -65q-2 0 -140 102q-139 105 -149 115z M260 500h371l-99 379q-78 305 -86 401q-16 -137 -88 -401z" />
+<glyph unicode="&#xc1;" horiz-adv-x="890" d="M14 2l387 1421q4 18 39 19q31 0 49 -6l388 -1409q4 -16 -6.5 -22.5t-41.5 -6.5q-49 0 -67 2l-103 395h-426l-94 -372q-3 -25 -55 -25q-33 0 -70 4zM260 500h371l-99 379q-78 305 -86 401q-16 -137 -88 -401zM362 1659q74 74 119 113l113 94q45 35 47 35q18 0 33 -31 q18 -35 20 -60q-18 -23 -110 -92l-176 -125q-8 0 -21 17q-10 12 -18 32z" />
+<glyph unicode="&#xc2;" horiz-adv-x="890" d="M14 2l387 1421q4 18 39 19q31 0 49 -6l388 -1409q4 -16 -6.5 -22.5t-41.5 -6.5q-49 0 -67 2l-103 395h-426l-94 -372q-3 -25 -55 -25q-33 0 -70 4zM195 1636l227 234q16 4 27 4q27 0 40 -19q199 -199 199 -219q0 -12 -26.5 -26.5t-57.5 -14.5q-141 147 -158 177 q-150 -174 -174 -175q-50 0 -77 39zM260 500h371l-99 379q-78 305 -86 401q-16 -137 -88 -401z" />
+<glyph unicode="&#xc3;" horiz-adv-x="890" d="M14 2l387 1421q4 18 39 19q31 0 49 -6l388 -1409q4 -16 -6.5 -22.5t-41.5 -6.5q-49 0 -67 2l-103 395h-426l-94 -372q-3 -25 -55 -25q-33 0 -70 4zM152 1688q84 139 208 139q45 0 95 -53q49 -51 92 -52q47 0 76 23q27 20 45 47q16 23 22 23q10 0 23 -17q10 -12 16 -33 l6 -16q-12 -27 -33 -53q-16 -20 -69 -54q-47 -29 -101 -28q-70 0 -114 53q-45 55 -78 55q-34 0 -61 -24q-29 -27 -43 -45q-16 -23 -25 -23q-32 1 -59 58zM260 500h371l-99 379q-78 305 -86 401q-16 -137 -88 -401z" />
+<glyph unicode="&#xc4;" horiz-adv-x="890" d="M14 2l387 1421q4 18 39 19q31 0 49 -6l388 -1409q4 -16 -6.5 -22.5t-41.5 -6.5q-49 0 -67 2l-103 395h-426l-94 -372q-3 -25 -55 -25q-33 0 -70 4zM223 1739q0 37 21 59q23 25 59 25q39 0 59 -23q23 -27 23 -61q0 -33 -23 -60q-23 -25 -59 -24q-80 0 -80 84zM260 500h371 l-99 379q-78 305 -86 401q-16 -137 -88 -401zM512 1739q0 37 20 59q20 25 60 25q41 0 61.5 -22.5t20.5 -61.5q0 -33 -23 -60q-20 -25 -59 -24q-80 0 -80 84z" />
+<glyph unicode="&#xc5;" horiz-adv-x="890" d="M14 2l387 1421q4 18 39 19q31 0 49 -6l388 -1409q4 -16 -6.5 -22.5t-41.5 -6.5q-49 0 -67 2l-103 395h-426l-94 -372q-3 -25 -55 -25q-33 0 -70 4zM260 500h371l-99 379q-78 305 -86 401q-16 -137 -88 -401zM260 1769q0 186 193 187q90 0 135 -41q41 -39 41 -143 q0 -186 -191 -187q-90 0 -133 41q-45 43 -45 143zM348 1765q0 -98 92 -98q102 0 103 105q0 100 -90 100q-53 0 -78 -25q-27 -27 -27 -82z" />
+<glyph unicode="&#xc6;" horiz-adv-x="1312" d="M37 2l672 1409q6 23 36 23h515q0 -78 -3 -88q-4 -16 -20 -17h-383v-493h358q0 -63 -4 -88q-2 -16 -18 -17h-336v-627h403q0 -70 -4 -90q-2 -14 -20 -14h-492v395h-401l-178 -372q-9 -25 -56 -25q-32 0 -69 4zM389 500h352v800q-78 -215 -174 -430z" />
+<glyph unicode="&#xc7;" horiz-adv-x="720" d="M80 649q0 205 24 359q25 156 62 237q37 84 92 133q53 47 107 64q45 14 112 14q94 0 141 -33q49 -35 50 -69q0 -37 -21 -70q-70 63 -153 64q-49 0 -86 -13q-39 -12 -80 -57q-43 -47 -70 -116.5t-45 -205.5q-16 -117 -16 -309q0 -156 20 -282q18 -113 55 -168.5t76 -76 t92 -20.5q70 0 125 27q59 29 88 63q20 -35 21 -71q0 -47 -66 -90q-65 -43 -159 -49l-21 -103q4 4 37 4q39 0 69.5 -30.5t30.5 -88.5q0 -78 -43 -118q-41 -39 -104 -39q-61 0 -109 20q10 53 21 68q9 3 18 0q2 0 12.5 -5t18.5 -7q23 -6 41 -7q70 0 69 74q0 72 -67 72l-80 -13 l33 173q-43 2 -90 20q-39 14 -78 57t-68 115q-27 70 -43 193q-16 126 -16 284z" />
+<glyph unicode="&#xc8;" horiz-adv-x="688" d="M117 0v1405q0 29 26 29h490q0 -98 -10 -103q-2 -2 -11 -2h-385v-493h361q0 -76 -2 -88q-2 -16 -23 -17h-336v-627h404q0 -80 -2 -90q-2 -14 -23 -14h-489zM162 1821q2 20 20 57q14 31 33 31q2 0 133 -109q115 -96 146 -131q-23 -66 -43 -65q-2 0 -140 102 q-139 105 -149 115z" />
+<glyph unicode="&#xc9;" horiz-adv-x="688" d="M117 0v1405q0 29 26 29h490q0 -98 -10 -103q-2 -2 -11 -2h-385v-493h361q0 -76 -2 -88q-2 -16 -23 -17h-336v-627h404q0 -80 -2 -90q-2 -14 -23 -14h-489zM313 1659q74 74 119 113l113 94q45 35 47 35q18 0 33 -31q18 -35 20 -60q-18 -23 -110 -92q-74 -55 -177 -125 q-8 0 -20 17q-10 12 -19 32z" />
+<glyph unicode="&#xca;" horiz-adv-x="688" d="M117 0v1405q0 29 26 29h490q0 -98 -10 -103q-2 -2 -11 -2h-385v-493h361q0 -76 -2 -88q-2 -16 -23 -17h-336v-627h404q0 -80 -2 -90q-2 -14 -23 -14h-489zM145 1636l228 234q16 4 26 4q27 0 41 -19q199 -199 199 -219q0 -12 -26.5 -26.5t-57.5 -14.5q-141 147 -158 177 q-150 -174 -174 -175q-51 0 -78 39z" />
+<glyph unicode="&#xcb;" horiz-adv-x="688" d="M117 0v1405q0 29 26 29h490q0 -98 -10 -103q-2 -2 -11 -2h-385v-493h361q0 -76 -2 -88q-2 -16 -23 -17h-336v-627h404q0 -80 -2 -90q-2 -14 -23 -14h-489zM174 1739q0 37 21 59q23 25 59 25q41 0 61.5 -22.5t20.5 -61.5q0 -33 -23 -60q-23 -25 -59 -24q-80 0 -80 84z M463 1739q0 33 22 59q23 25 58 25q41 0 61.5 -22.5t20.5 -61.5q0 -33 -23 -60q-20 -25 -59 -24q-80 0 -80 84z" />
+<glyph unicode="&#xcc;" horiz-adv-x="335" d="M-68 1821q2 27 18.5 57.5t35.5 30.5q4 0 135 -109q123 -102 143 -131q-23 -66 -43 -65q-2 0 -139 102q-140 105 -150 115zM111 0v1376q0 45 16 51q15 6 98 7v-1407q0 -20 -14 -23q-20 -4 -100 -4z" />
+<glyph unicode="&#xcd;" horiz-adv-x="335" d="M84 1659q74 74 119 113q94 82 110 94q45 35 49 35q18 0 33 -31q18 -35 21 -60q-18 -23 -111 -92l-176 -125q-10 0 -23 17q-6 8 -16 32zM111 0v1376q0 45 16 51q15 6 98 7v-1407q0 -20 -14 -23q-20 -4 -100 -4z" />
+<glyph unicode="&#xce;" horiz-adv-x="335" d="M-82 1636l227 234q16 4 27 4q25 0 41 -19q199 -199 199 -219q0 -12 -27 -26.5t-57 -14.5q-141 147 -158 177q-150 -174 -174 -175q-51 0 -78 39zM111 0v1376q0 45 16 51q15 6 98 7v-1407q0 -20 -14 -23q-20 -4 -100 -4z" />
+<glyph unicode="&#xcf;" horiz-adv-x="335" d="M-53 1739q0 33 22 59q23 25 58 25q41 0 61.5 -22.5t20.5 -61.5q0 -33 -23 -60q-20 -25 -59 -24q-80 0 -80 84zM111 0v1376q0 45 16 51q15 6 98 7v-1407q0 -20 -14 -23q-20 -4 -100 -4zM236 1739q0 33 22 59q20 25 57 25q39 0 60 -23q23 -27 22 -61q0 -33 -22 -60 q-23 -25 -60 -24q-79 0 -79 84z" />
+<glyph unicode="&#xd0;" horiz-adv-x="845" d="M25 705v49q0 8 4 28q4 16 8 19q8 4 14 4h64v594q0 35 51 35h205q203 0 301 -146q96 -141 96 -487q0 -248 -29 -400q-31 -160 -88 -245q-59 -88 -125 -121q-70 -35 -164 -35h-247v705h-90zM227 109h138q41 0 84 14q35 12 75 55q39 41 64 117q27 78 41 203q16 137 16 303 q0 287 -65.5 407.5t-210.5 120.5h-142v-524h213q0 -57 -4 -82q-3 -18 -24 -18h-185v-596z" />
+<glyph unicode="&#xd1;" horiz-adv-x="931" d="M113 0v1405q0 29 26 29h80l246 -566q63 -172 254 -647q-10 170 -10 699v485q0 23 14 25q20 4 98 4v-1407q0 -27 -26 -27h-78l-252 575q-45 102 -250 642q8 -270 8 -689v-501q0 -18 -12 -23q-16 -4 -98 -4zM190 1688q84 139 209 139q45 0 95 -53q49 -51 92 -52q47 0 76 23 q27 20 45 47q16 23 22 23q10 0 23 -17q10 -12 16 -33l6 -16q-12 -27 -33 -53q-16 -20 -69 -54q-47 -29 -101 -28q-70 0 -114 53q-47 55 -78 55q-34 0 -62 -24q-29 -27 -43 -45q-16 -23 -24 -23q-33 1 -60 58z" />
+<glyph unicode="&#xd2;" horiz-adv-x="911" d="M78 727q0 391 94 559t299 168q200 0 283 -160q82 -158 82 -565q0 -414 -91 -579q-92 -170 -296.5 -170t-286.5 161q-84 164 -84 586zM203 692q0 -326 55 -461t195 -135q141 0 202 144q59 139 60 491q0 338 -55.5 473t-192.5 135q-135 0 -201 -149q-63 -146 -63 -498z M240 1821q2 27 18 57.5t35 30.5q2 0 133 -109q127 -106 145 -131q-23 -66 -43 -65q-4 0 -141 102q-131 99 -147 115z" />
+<glyph unicode="&#xd3;" horiz-adv-x="911" d="M78 727q0 391 94 559t299 168q200 0 283 -160q82 -158 82 -565q0 -414 -91 -579q-92 -170 -296.5 -170t-286.5 161q-84 164 -84 586zM203 692q0 -326 55 -461t195 -135q141 0 202 144q59 139 60 491q0 338 -55.5 473t-192.5 135q-135 0 -201 -149q-63 -146 -63 -498z M391 1659q74 74 119 113l113 94q45 35 47 35q18 0 35 -31q14 -31 18 -60q-18 -23 -111 -92l-176 -125q-10 0 -22 17q-6 8 -17 32z" />
+<glyph unicode="&#xd4;" horiz-adv-x="911" d="M78 727q0 391 94 559t299 168q200 0 283 -160q82 -158 82 -565q0 -414 -91 -579q-92 -170 -296.5 -170t-286.5 161q-84 164 -84 586zM203 692q0 -326 55 -461t195 -135q141 0 202 144q59 139 60 491q0 338 -55.5 473t-192.5 135q-135 0 -201 -149q-63 -146 -63 -498z M223 1636l228 234q16 4 26 4q27 0 41 -19q199 -199 199 -219q0 -12 -26.5 -26.5t-57.5 -14.5q-141 147 -158 177q-150 -174 -174 -175q-51 0 -78 39z" />
+<glyph unicode="&#xd5;" horiz-adv-x="911" d="M78 727q0 391 94 559t299 168q200 0 283 -160q82 -158 82 -565q0 -414 -91 -579q-92 -170 -296.5 -170t-286.5 161q-84 164 -84 586zM180 1688q84 139 209 139q45 0 94 -53q49 -51 92 -52q47 0 76 23q27 20 45 47q16 23 23 23q12 0 24 -17q10 -12 17 -33l4 -16 q-12 -27 -33 -53q-16 -20 -69 -54q-47 -29 -101 -28q-68 0 -115 53q-49 55 -77 55q-34 0 -62 -24q-29 -27 -43 -45q-16 -23 -24 -23q-33 1 -60 58zM203 692q0 -326 55 -461t195 -135q141 0 202 144q59 139 60 491q0 338 -55.5 473t-192.5 135q-135 0 -201 -149 q-63 -146 -63 -498z" />
+<glyph unicode="&#xd6;" horiz-adv-x="911" d="M78 727q0 391 94 559t299 168q200 0 283 -160q82 -158 82 -565q0 -414 -91 -579q-92 -170 -296.5 -170t-286.5 161q-84 164 -84 586zM203 692q0 -326 55 -461t195 -135q141 0 202 144q59 139 60 491q0 338 -55.5 473t-192.5 135q-135 0 -201 -149q-63 -146 -63 -498z M252 1739q0 33 22 59q20 25 58 25q41 0 61.5 -22.5t20.5 -61.5q0 -33 -23 -60q-23 -25 -59 -24q-80 0 -80 84zM541 1739q0 33 22 59q23 25 58 25q41 0 61 -22.5t20 -61.5q0 -33 -22 -60q-20 -25 -59 -24q-80 0 -80 84z" />
+<glyph unicode="&#xd7;" d="M178 795q66 61 80 59q6 0 12 -6l170 -193l172 193q18 10 29 2q25 -18 53 -45q10 -10 11 -10l-195 -220l192 -215q-49 -49 -57 -55q-10 -8 -35 2l-170 191l-168 -191q-8 -8 -16 -8q-10 0 -18.5 6t-22.5 21l-35 34l191 215z" />
+<glyph unicode="&#xd8;" horiz-adv-x="948" d="M96 727q0 387 94 559q92 168 295 168q154 0 238 -90l43 109q70 -2 76 -37q0 -18 -58 -172q70 -166 70 -535q0 -410 -90 -579.5t-295 -169.5q-162 0 -244 92l-43 -105q-14 -2 -42.5 8.5t-30.5 28.5l2 7l8 22l26 67l25 62q-74 166 -74 565zM221 692q0 -297 43 -432 l379 1008q-55 72 -156 71q-138 0 -202 -147q-64 -146 -64 -500zM309 166q53 -72 156 -72q94 0 151 53q55 51 86 195q31 141 31 389q0 305 -43 440z" />
+<glyph unicode="&#xd9;" horiz-adv-x="935" d="M113 440v965q0 23 14 25q20 4 100 4v-998q0 -51 4 -112q2 -35 21 -93q15 -49 43 -79q25 -27 74 -48q45 -18 114 -18q143 0 230 43v1278q0 20 14 23q20 4 100 4v-1383q-47 -31 -141 -51t-203 -20q-92 0 -168 26q-70 25 -108 64q-37 37 -60 104q-23 70 -28 123 q-6 59 -6 143zM246 1821q2 20 20 57q16 31 33 31q2 0 133 -109q117 -96 146 -131q-23 -66 -43 -65q-2 0 -140 102q-139 105 -149 115z" />
+<glyph unicode="&#xda;" horiz-adv-x="935" d="M113 440v965q0 23 14 25q20 4 100 4v-998q0 -51 4 -112q2 -35 21 -93q15 -49 43 -79q25 -27 74 -48q45 -18 114 -18q143 0 230 43v1278q0 20 14 23q20 4 100 4v-1383q-47 -31 -141 -51t-203 -20q-92 0 -168 26q-70 25 -108 64q-37 37 -60 104q-23 70 -28 123 q-6 59 -6 143zM397 1659q74 74 119 113l113 94q45 35 47 35q16 0 33 -31q18 -35 20 -60q-18 -23 -111 -92l-176 -125q-8 0 -20 17q-10 12 -19 32z" />
+<glyph unicode="&#xdb;" horiz-adv-x="935" d="M113 440v965q0 23 14 25q20 4 100 4v-998q0 -51 4 -112q2 -35 21 -93q15 -49 43 -79q25 -27 74 -48q45 -18 114 -18q143 0 230 43v1278q0 20 14 23q20 4 100 4v-1383q-47 -31 -141 -51t-203 -20q-92 0 -168 26q-70 25 -108 64q-37 37 -60 104q-23 70 -28 123 q-6 59 -6 143zM229 1636l228 234q16 4 26 4q25 0 41 -19q199 -199 199 -219q0 -12 -26.5 -26.5t-57.5 -14.5q-141 147 -158 177q-150 -174 -174 -175q-51 0 -78 39z" />
+<glyph unicode="&#xdc;" horiz-adv-x="935" d="M113 440v965q0 23 14 25q20 4 100 4v-998q0 -51 4 -112q2 -35 21 -93q15 -49 43 -79q25 -27 74 -48q45 -18 114 -18q143 0 230 43v1278q0 20 14 23q20 4 100 4v-1383q-47 -31 -141 -51t-203 -20q-92 0 -168 26q-70 25 -108 64q-37 37 -60 104q-23 70 -28 123 q-6 59 -6 143zM258 1739q0 37 21 59q20 25 59 25q41 0 61.5 -22.5t20.5 -61.5q0 -33 -23 -60q-20 -25 -59 -24q-80 0 -80 84zM547 1739q0 33 22 59q20 25 58 25q41 0 61.5 -22.5t20.5 -61.5q0 -33 -23 -60q-23 -25 -59 -24q-80 0 -80 84z" />
+<glyph unicode="&#xdd;" horiz-adv-x="737" d="M12 1415q-6 14 13 17q10 2 114 2l99 -293q43 -115 86 -262q49 -166 53 -193q14 106 139 457l90 270q2 12 21 17q20 4 102 4l-299 -848v-559q0 -18 -14 -23q-16 -4 -99 -4v582zM293 1659q74 74 119 113q94 82 110 94q45 35 49 35q18 0 33 -31q18 -35 21 -60 q-18 -23 -111 -92l-176 -125q-8 0 -21 17q-10 12 -18 32z" />
+<glyph unicode="&#xde;" horiz-adv-x="755" d="M113 0v1403q0 20 14 27q10 4 61 4h35v-265h129q358 0 359 -391q0 -221 -99 -329q-98 -106 -268 -107h-121v-315q0 -20 -14 -23q-20 -4 -96 -4zM223 451h66h20h17.5t13.5 -1t9 -1h3q236 0 236 339q0 279 -226 279h-71q-12 0 -28.5 -1t-20.5 -1h-19v-614z" />
+<glyph unicode="&#xdf;" horiz-adv-x="960" d="M100 2q18 39 19 109l-2 1013q0 317 321 318q199 0 299 -90q98 -90 99 -201q0 -61 -41 -113q-43 -51 -90 -75q-49 -25 -90.5 -66t-41.5 -86q0 -39 37 -82q29 -33 90 -84l107 -90q55 -53 90 -121q37 -74 37 -155q0 -143 -82 -220q-84 -78 -225 -77q-70 0 -131 16 q-57 14 -84 32.5t-27 39.5q0 41 31 77q70 -63 190 -63q94 0 150 47q57 49 57 143q0 80 -57 156q-59 78 -123 125q-72 51 -123 115q-57 70 -57 135q0 61 41 113q39 47 92 77q51 29 90 68q41 41 41 88q0 72 -69.5 129t-201.5 57q-113 0 -165 -65q-51 -63 -52 -213l2 -1002 q0 -37 -14 -57q-12 -18 -51 -18q-18 0 -35 6q-20 8 -22 10z" />
+<glyph unicode="&#xe0;" horiz-adv-x="749" d="M74 285q0 104 24 174q23 68 72 102q45 33 94 45t115 12q109 0 168 -24v180q0 92 -41 127t-121 35q-184 0 -295 -51q-16 33 -16 65q0 29 16 41q35 23 125 37q98 16 197 16q125 0 186 -57q59 -55 59 -190v-123q0 -324 -10 -621q-119 -74 -278 -73q-39 0 -88 4 q-31 2 -78 22.5t-68 48.5q-27 35 -43 90q-18 60 -18 140zM143 1411q2 27 19 57q14 31 35 31q4 0 135 -108q123 -102 143 -131q-23 -66 -43 -66q-2 0 -139 102q-140 105 -150 115zM190 289q0 -72 15 -115q16 -47 45 -65q31 -18 59 -25q27 -6 76 -6q104 0 152 45 q10 160 10 387q-53 20 -133 20q-104 0 -164 -47t-60 -194z" />
+<glyph unicode="&#xe1;" horiz-adv-x="749" d="M74 285q0 104 24 174q23 68 72 102q45 33 94 45t115 12q109 0 168 -24v180q0 92 -41 127t-121 35q-184 0 -295 -51q-16 33 -16 65q0 29 16 41q35 23 125 37q98 16 197 16q125 0 186 -57q59 -55 59 -190v-123q0 -324 -10 -621q-119 -74 -278 -73q-39 0 -88 4 q-31 2 -78 22.5t-68 48.5q-27 35 -43 90q-18 60 -18 140zM190 289q0 -72 15 -115q16 -47 45 -65q31 -18 59 -25q27 -6 76 -6q104 0 152 45q10 160 10 387q-53 20 -133 20q-104 0 -164 -47t-60 -194zM297 1249q74 74 119 113q94 82 110 94q45 35 49 35q16 0 33 -33 q18 -35 21 -57q-14 -18 -111 -90q-102 -78 -176 -127q-10 0 -23 16q-6 8 -16 33z" />
+<glyph unicode="&#xe2;" horiz-adv-x="749" d="M74 285q0 104 24 174q23 68 72 102q45 33 94 45t115 12q109 0 168 -24v180q0 92 -41 127t-121 35q-184 0 -295 -51q-16 33 -16 65q0 29 16 41q35 23 125 37q98 16 197 16q125 0 186 -57q59 -55 59 -190v-123q0 -324 -10 -621q-119 -74 -278 -73q-39 0 -88 4 q-31 2 -78 22.5t-68 48.5q-27 35 -43 90q-18 60 -18 140zM129 1227l227 233q16 4 27 4q27 0 41 -18q199 -199 199 -219q0 -12 -27 -26.5t-57 -14.5q-137 143 -158 176q-150 -174 -174 -174q-51 0 -78 39zM190 289q0 -72 15 -115q16 -47 45 -65q31 -18 59 -25q27 -6 76 -6 q104 0 152 45q10 160 10 387q-53 20 -133 20q-104 0 -164 -47t-60 -194z" />
+<glyph unicode="&#xe3;" horiz-adv-x="749" d="M74 285q0 104 24 174q23 68 72 102q45 33 94 45t115 12q109 0 168 -24v180q0 92 -41 127t-121 35q-184 0 -295 -51q-16 33 -16 65q0 29 16 41q35 23 125 37q98 16 197 16q125 0 186 -57q59 -55 59 -190v-123q0 -324 -10 -621q-119 -74 -278 -73q-39 0 -88 4 q-31 2 -78 22.5t-68 48.5q-27 35 -43 90q-18 60 -18 140zM86 1278q84 139 209 139q45 0 94 -51q49 -53 92 -53q45 0 76 24.5t45 44.5q16 23 23 23q10 0 22 -16q10 -12 19 -33l4 -17q-14 -33 -33 -53q-20 -25 -70 -53q-47 -29 -100 -29q-66 0 -115 56q-47 53 -78 53 q-37 0 -61 -23q-27 -23 -43 -47q-16 -23 -25 -22q-32 0 -59 57zM190 289q0 -72 15 -115q16 -47 45 -65q31 -18 59 -25q27 -6 76 -6q104 0 152 45q10 160 10 387q-53 20 -133 20q-104 0 -164 -47t-60 -194z" />
+<glyph unicode="&#xe4;" horiz-adv-x="749" d="M74 285q0 104 24 174q23 68 72 102q45 33 94 45t115 12q109 0 168 -24v180q0 92 -41 127t-121 35q-184 0 -295 -51q-16 33 -16 65q0 29 16 41q35 23 125 37q98 16 197 16q125 0 186 -57q59 -55 59 -190v-123q0 -324 -10 -621q-119 -74 -278 -73q-39 0 -88 4 q-31 2 -78 22.5t-68 48.5q-27 35 -43 90q-18 60 -18 140zM158 1329q0 33 22 60q20 25 58 24q40 0 61 -24q20 -23 20 -60q0 -35 -22 -61q-20 -23 -59 -23q-80 0 -80 84zM190 289q0 -72 15 -115q16 -47 45 -65q31 -18 59 -25q27 -6 76 -6q104 0 152 45q10 160 10 387 q-53 20 -133 20q-104 0 -164 -47t-60 -194zM446 1329q0 37 21 60q20 25 59 24.5t60 -24.5q23 -27 22 -60q0 -35 -22 -61q-20 -23 -60 -23q-80 0 -80 84z" />
+<glyph unicode="&#xe5;" horiz-adv-x="749" d="M74 285q0 104 24 174q23 68 72 102q45 33 94 45t115 12q109 0 168 -24v180q0 92 -41 127t-121 35q-184 0 -295 -51q-16 33 -16 65q0 29 16 41q35 23 125 37q98 16 197 16q125 0 186 -57q59 -55 59 -190v-123q0 -324 -10 -621q-119 -74 -278 -73q-39 0 -88 4 q-31 2 -78 22.5t-68 48.5q-27 35 -43 90q-18 60 -18 140zM190 289q0 -72 15 -115q16 -47 45 -65q31 -18 59 -25q27 -6 76 -6q104 0 152 45q10 160 10 387q-53 20 -133 20q-104 0 -164 -47t-60 -194zM195 1360q0 186 192 186q88 0 133 -41q43 -39 43 -143q0 -186 -190 -186 q-86 0 -133 43q-45 43 -45 141zM283 1356q0 -98 92 -99q102 0 102 105q0 100 -90 100q-53 0 -78 -24q-26 -27 -26 -82z" />
+<glyph unicode="&#xe6;" horiz-adv-x="1267" d="M74 291q0 197 84 270q80 72 219 72q111 0 170 -25v172q0 94 -45 127q-47 35 -129 35q-170 0 -277 -59q-14 23 -14 67q0 29 18 39q86 55 312 55q96 0 155 -38q51 -35 68 -123q46 95 117 129q68 33 168 32q258 0 258 -317q0 -162 -21 -252q-86 -14 -190 -14q-156 0 -299 31 v-35q0 -125 14 -197q14 -74 49 -110.5t72 -47.5q41 -10 96 -10q154 0 254 70q14 -31 14 -103q0 -12 -37 -30q-25 -12 -104 -31q-63 -14 -137 -14q-182 0 -246 94v-35q-104 -61 -274 -61q-72 0 -111 8q-49 10 -90 35q-45 27 -69.5 94.5t-24.5 171.5zM190 289 q0 -133 47.5 -172t145.5 -39q121 0 164 43v403q-53 20 -133 21q-100 0 -164 -53q-60 -51 -60 -203zM672 586q152 -33 280 -33q68 0 107 8q8 57 8 144q-4 127 -37 182q-35 55 -121 55q-94 0 -157 -72q-66 -73 -80 -284z" />
+<glyph unicode="&#xe7;" horiz-adv-x="675" d="M82 489q0 141 24 246q25 106 58 162q34 58 86 92q57 37 96 45q51 10 105 10q74 0 123 -24.5t49 -56.5q0 -37 -15 -68q-70 47 -159 47q-43 0 -70 -8q-31 -9 -68 -37q-33 -25 -59 -74q-23 -41 -39 -135q-16 -92 -16 -205q0 -237 55 -319t168 -82q121 0 188 61 q14 -31 15 -65q0 -34 -56 -62q-57 -29 -143 -34l-21 -105q4 4 37 4q41 0 72 -31q29 -29 29 -88q0 -78 -43 -118q-41 -39 -105 -39q-61 0 -108 20q10 53 20 68q9 3 19 0l12 -5q12 -5 20 -7q20 -6 39 -7q70 0 70 74q0 72 -68 72l-80 -13l33 175q-135 8 -200 114 q-68 107 -68 393z" />
+<glyph unicode="&#xe8;" horiz-adv-x="768" d="M78 457q0 145 22 262q22 111 56 172q33 57 86 96t98 47q51 10 104 10q258 0 258 -323q0 -156 -20 -246q-182 -37 -489 -37q0 -137 32 -223q31 -78 78 -102q45 -23 129 -23q150 0 246 70q14 -35 14 -80q0 -37 -84 -68q-88 -33 -194 -32q-80 0 -135 18q-57 18 -104.5 65.5 t-72 145.5t-24.5 248zM193 1411q2 20 20 57q16 31 33 31q4 0 135 -108q123 -102 143 -131q-23 -66 -43 -66q-2 0 -139 102q-139 105 -149 115zM195 532q270 0 389 29q8 57 8 137q-2 127 -37 187q-33 57 -121 57q-49 0 -80 -14q-39 -18 -71 -54q-35 -37 -60 -124 q-26 -91 -28 -218z" />
+<glyph unicode="&#xe9;" horiz-adv-x="768" d="M78 457q0 145 22 262q22 111 56 172q33 57 86 96t98 47q51 10 104 10q258 0 258 -323q0 -156 -20 -246q-182 -37 -489 -37q0 -137 32 -223q31 -78 78 -102q45 -23 129 -23q150 0 246 70q14 -35 14 -80q0 -37 -84 -68q-88 -33 -194 -32q-80 0 -135 18q-57 18 -104.5 65.5 t-72 145.5t-24.5 248zM195 532q270 0 389 29q8 57 8 137q-2 127 -37 187q-33 57 -121 57q-49 0 -80 -14q-39 -18 -71 -54q-35 -37 -60 -124q-26 -91 -28 -218zM346 1249q74 74 119 113q94 82 110 94q45 35 50 35q18 0 34 -33q14 -31 19 -57q-14 -18 -111 -90 q-102 -78 -176 -127q-10 0 -22 16q-6 8 -17 33z" />
+<glyph unicode="&#xea;" horiz-adv-x="768" d="M78 457q0 145 22 262q22 111 56 172q33 57 86 96t98 47q51 10 104 10q258 0 258 -323q0 -156 -20 -246q-182 -37 -489 -37q0 -137 32 -223q31 -78 78 -102q45 -23 129 -23q150 0 246 70q14 -35 14 -80q0 -37 -84 -68q-88 -33 -194 -32q-80 0 -135 18q-57 18 -104.5 65.5 t-72 145.5t-24.5 248zM178 1227l228 233q16 4 26 4q27 0 41 -18q199 -199 199 -219q0 -12 -27 -26.5t-57 -14.5q-137 143 -158 176q-150 -174 -174 -174q-51 0 -78 39zM195 532q270 0 389 29q8 57 8 137q-2 127 -37 187q-33 57 -121 57q-49 0 -80 -14q-39 -18 -71 -54 q-35 -37 -60 -124q-26 -91 -28 -218z" />
+<glyph unicode="&#xeb;" horiz-adv-x="768" d="M78 457q0 145 22 262q22 111 56 172q33 57 86 96t98 47q51 10 104 10q258 0 258 -323q0 -156 -20 -246q-182 -37 -489 -37q0 -137 32 -223q31 -78 78 -102q45 -23 129 -23q150 0 246 70q14 -35 14 -80q0 -37 -84 -68q-88 -33 -194 -32q-80 0 -135 18q-57 18 -104.5 65.5 t-72 145.5t-24.5 248zM195 532q270 0 389 29q8 57 8 137q-2 127 -37 187q-33 57 -121 57q-49 0 -80 -14q-39 -18 -71 -54q-35 -37 -60 -124q-26 -91 -28 -218zM207 1329q0 33 22 60q20 25 58 24q40 0 61 -24q20 -23 21 -60q0 -35 -23 -61q-20 -23 -59 -23q-80 0 -80 84z M496 1329q0 33 22 60q23 25 57 24q39 0 60 -24q23 -27 22 -60q0 -35 -22 -61q-20 -23 -60 -23q-79 0 -79 84z" />
+<glyph unicode="&#xec;" horiz-adv-x="348" d="M-59 1411q2 27 18 57.5t35 30.5q2 0 133 -108q127 -106 145 -131q-23 -66 -43 -66q-4 0 -141 102q-131 99 -147 115zM117 0v969q0 39 20 47q18 8 96 8v-997q0 -18 -16 -23q-20 -4 -100 -4z" />
+<glyph unicode="&#xed;" horiz-adv-x="348" d="M92 1249q74 74 119 113l113 94q45 35 47 35q18 0 35 -33q14 -31 18 -57q-14 -18 -111 -90q-102 -78 -176 -127q-10 0 -22 16q-6 8 -17 33zM117 0v969q0 39 20 47q18 8 96 8v-997q0 -18 -16 -23q-20 -4 -100 -4z" />
+<glyph unicode="&#xee;" horiz-adv-x="348" d="M-76 1227l228 233q16 4 26 4q27 0 41 -18q199 -199 199 -219q0 -12 -26.5 -26.5t-57.5 -14.5q-137 143 -158 176q-150 -174 -174 -174q-51 0 -78 39zM117 0v969q0 39 20 47q18 8 96 8v-997q0 -18 -16 -23q-20 -4 -100 -4z" />
+<glyph unicode="&#xef;" horiz-adv-x="348" d="M-47 1329q0 33 22 60q20 25 58 24q40 0 61 -24q20 -23 21 -60q0 -35 -23 -61q-20 -23 -59 -23q-80 0 -80 84zM117 0v969q0 39 20 47q18 8 96 8v-997q0 -18 -16 -23q-20 -4 -100 -4zM242 1329q0 33 22 60q23 25 58 24q40 0 61 -24q20 -23 20 -60q0 -35 -22 -61 q-20 -23 -59 -23q-80 0 -80 84z" />
+<glyph unicode="&#xf0;" horiz-adv-x="892" d="M94 526q0 252 92 383q92 133 258 133q139 0 226 -92q-47 186 -158 328l-197 -78q-31 84 -20 96q2 4 10 9l135 53q-46 46 -129 110q29 55 78 56q27 0 47 -21q78 -63 113 -102l158 63q31 -84 22 -96q-2 -4 -12 -8l-99 -39q201 -268 201 -729q0 -135 -12 -234 q-12 -90 -51 -190q-35 -90 -111 -139q-74 -49 -182 -49q-188 0 -279 129q-90 130 -90 417zM207 510q0 -432 254 -432q78 0 131 41q47 37 74 121q23 74 32 159q8 72 9 199q0 111 -11 197q-86 143 -227 143q-127 0 -194.5 -112.5t-67.5 -315.5z" />
+<glyph unicode="&#xf1;" horiz-adv-x="819" d="M113 0v973q168 72 331 71q158 0 220 -65q61 -65 61 -215v-737q0 -20 -14 -23q-20 -4 -101 -4v733q0 117 -34.5 164t-135.5 47q-125 0 -215 -47v-870q0 -20 -14 -23q-20 -4 -98 -4zM141 1278q84 139 209 139q47 0 96 -51q49 -53 91 -53q47 0 77 24q25 20 43 45 q16 23 23 23q12 0 25 -16q6 -8 16 -33l4 -17q-14 -33 -33 -53q-20 -25 -69 -53q-47 -29 -101 -29q-66 0 -114 56q-47 53 -78 53q-37 0 -62 -23q-27 -23 -43 -47q-16 -23 -24 -22q-33 0 -60 57z" />
+<glyph unicode="&#xf2;" horiz-adv-x="782" d="M63 510q0 535 343 534q164 0 241 -114q76 -113 76 -418q0 -532 -340 -532q-83 0 -135 18q-55 18 -98 72q-43 51 -66 163q-21 103 -21 277zM168 1411q2 20 20 57q16 31 33 31q2 0 133 -108q117 -96 146 -131q-23 -66 -43 -66q-2 0 -140 102q-139 105 -149 115zM184 502 q0 -164 27 -266q25 -96 65 -127t111 -31q215 0 215 438q0 254 -47 340q-49 88 -154 88q-106 0 -161.5 -98t-55.5 -344z" />
+<glyph unicode="&#xf3;" horiz-adv-x="782" d="M63 510q0 535 343 534q164 0 241 -114q76 -113 76 -418q0 -532 -340 -532q-83 0 -135 18q-55 18 -98 72q-43 51 -66 163q-21 103 -21 277zM184 502q0 -164 27 -266q25 -96 65 -127t111 -31q215 0 215 438q0 254 -47 340q-49 88 -154 88q-106 0 -161.5 -98t-55.5 -344z M319 1249q74 74 119 113l113 94q45 35 47 35q16 0 33 -33q18 -35 20 -57q-14 -18 -110 -90q-102 -78 -176 -127q-8 0 -21 16q-10 12 -18 33z" />
+<glyph unicode="&#xf4;" horiz-adv-x="782" d="M63 510q0 535 343 534q164 0 241 -114q76 -113 76 -418q0 -532 -340 -532q-83 0 -135 18q-55 18 -98 72q-43 51 -66 163q-21 103 -21 277zM152 1227l227 233q16 4 27 4q25 0 40 -18q199 -199 199 -219q0 -12 -26.5 -26.5t-57.5 -14.5q-137 143 -158 176 q-150 -174 -174 -174q-50 0 -77 39zM184 502q0 -164 27 -266q25 -96 65 -127t111 -31q215 0 215 438q0 254 -47 340q-49 88 -154 88q-106 0 -161.5 -98t-55.5 -344z" />
+<glyph unicode="&#xf5;" horiz-adv-x="782" d="M63 510q0 535 343 534q164 0 241 -114q76 -113 76 -418q0 -532 -340 -532q-83 0 -135 18q-55 18 -98 72q-43 51 -66 163q-21 103 -21 277zM109 1278q84 139 208 139q45 0 95 -51q49 -53 92 -53q45 0 75.5 24.5t45.5 44.5q16 23 22 23q10 0 23 -16q6 -8 16 -33l6 -17 q-14 -33 -33 -53q-20 -25 -69 -53q-47 -29 -101 -29q-68 0 -114 56q-45 53 -78 53q-37 0 -61 -23q-27 -23 -43 -47q-16 -23 -25 -22q-32 0 -59 57zM184 502q0 -164 27 -266q25 -96 65 -127t111 -31q215 0 215 438q0 254 -47 340q-49 88 -154 88q-106 0 -161.5 -98 t-55.5 -344z" />
+<glyph unicode="&#xf6;" horiz-adv-x="782" d="M63 510q0 535 343 534q164 0 241 -114q76 -113 76 -418q0 -532 -340 -532q-83 0 -135 18q-55 18 -98 72q-43 51 -66 163q-21 103 -21 277zM180 1329q0 37 21 60q20 25 59 24.5t59 -24.5q23 -27 23 -60q0 -35 -23 -61q-20 -23 -59 -23q-80 0 -80 84zM184 502 q0 -164 27 -266q25 -96 65 -127t111 -31q215 0 215 438q0 254 -47 340q-49 88 -154 88q-106 0 -161.5 -98t-55.5 -344zM469 1329q0 33 23 60q20 25 57 24q40 0 61 -24q20 -23 21 -60q0 -35 -23 -61q-20 -23 -59 -23q-80 0 -80 84z" />
+<glyph unicode="&#xf7;" d="M86 526v49q0 20 2 31q4 16 8 19q8 4 17 4h690q0 -53 -4 -82q-2 -20 -25 -21h-688zM358 287q0 39 21 61q23 25 59 25q82 0 82 -86q0 -33 -22 -60q-23 -25 -60 -24q-80 0 -80 84zM358 856q0 37 21 59q23 25 59 25q82 0 82 -84q0 -35 -22 -61q-23 -25 -60 -25q-80 0 -80 86z " />
+<glyph unicode="&#xf8;" horiz-adv-x="866" d="M57 4q0 10 95 166q-37 117 -37 340q0 535 338 534q158 0 227 -94q59 104 74 119q68 -15 67 -49q0 -16 -92 -164q43 -123 43 -344q0 -532 -330 -532q-178 0 -245 98l-32 -52.5t-27 -46t-15 -24.5q-12 2 -41 16q-25 13 -25 33zM233 502q0 -147 17 -232l348 592 q-43 82 -147 82q-106 0 -162 -98t-56 -344zM279 174q47 -96 157 -96q215 0 215 438q0 156 -20 252z" />
+<glyph unicode="&#xf9;" horiz-adv-x="849" d="M119 346v649q0 25 14 27q10 2 100 2v-692q0 -147 39 -199q41 -53 158 -53q111 0 188 47v868q0 23 15 25q20 4 98 4v-973q-139 -72 -311 -71.5t-238 83.5q-63 82 -63 283zM197 1411q2 27 18 57q14 31 35 31q4 0 135 -108q123 -102 143 -131q-23 -66 -43 -66q-4 0 -141 102 q-131 99 -147 115z" />
+<glyph unicode="&#xfa;" horiz-adv-x="849" d="M119 346v649q0 25 14 27q10 2 100 2v-692q0 -147 39 -199q41 -53 158 -53q111 0 188 47v868q0 23 15 25q20 4 98 4v-973q-139 -72 -311 -71.5t-238 83.5q-63 82 -63 283zM348 1249q74 74 119 113l113 94q45 35 47 35q18 0 35 -33q14 -31 18 -57q-14 -18 -111 -90 q-102 -78 -176 -127q-10 0 -22 16q-6 8 -17 33z" />
+<glyph unicode="&#xfb;" horiz-adv-x="849" d="M119 346v649q0 25 14 27q10 2 100 2v-692q0 -147 39 -199q41 -53 158 -53q111 0 188 47v868q0 23 15 25q20 4 98 4v-973q-139 -72 -311 -71.5t-238 83.5q-63 82 -63 283zM180 1227l228 233q16 4 26 4q25 0 41 -18q199 -199 199 -219q0 -12 -26.5 -26.5t-57.5 -14.5 q-137 143 -158 176q-150 -174 -174 -174q-51 0 -78 39z" />
+<glyph unicode="&#xfc;" horiz-adv-x="849" d="M119 346v649q0 25 14 27q10 2 100 2v-692q0 -147 39 -199q41 -53 158 -53q111 0 188 47v868q0 23 15 25q20 4 98 4v-973q-139 -72 -311 -71.5t-238 83.5q-63 82 -63 283zM209 1329q0 33 22 60q23 25 58 24q40 0 61 -24q20 -23 21 -60q0 -35 -23 -61q-20 -23 -59 -23 q-80 0 -80 84zM498 1329q0 33 22 60q20 25 58 24q40 0 61 -24q20 -23 20 -60q0 -35 -22 -61q-20 -23 -59 -23q-80 0 -80 84z" />
+<glyph unicode="&#xfd;" horiz-adv-x="755" d="M2 -334q0 39 21 66q61 -29 124 -29q127 0 187 264l-266 1022q-6 29 8 31q20 4 100 4l154 -602l59 -318q18 141 55 320l138 565q3 28 18 31q20 4 102 4l-270 -1087q-47 -182 -110 -256q-66 -76 -170 -76q-150 0 -150 61zM309 1249q74 74 119 113l113 94q45 35 47 35 q16 0 33 -33q18 -35 20 -57q-14 -18 -111 -90q-102 -78 -176 -127q-8 0 -20 16q-10 12 -19 33z" />
+<glyph unicode="&#xfe;" horiz-adv-x="817" d="M117 -365v1815q0 37 18 47q16 8 94 8v-489q78 27 183 26q168 0 254 -98q84 -96 84 -342q0 -158 -25 -274q-25 -115 -61 -181q-35 -61 -89 -104q-43 -35 -90 -49q-39 -12 -82 -12q-117 0 -174 63v-446q-23 -8 -65 -9q-29 0 -37 9q-10 9 -10 36zM229 158q47 -78 144 -78 q29 0 59 10q29 10 66 43q41 37 65.5 84t44.5 150q18 96 19 223q0 203 -54 278q-53 74 -163 74q-102 0 -181 -53v-731z" />
+<glyph unicode="&#xff;" horiz-adv-x="755" d="M2 -334q0 39 21 66q61 -29 124 -29q127 0 187 264l-266 1022q-6 29 8 31q20 4 100 4l154 -602l59 -318q18 141 55 320l138 565q3 28 18 31q20 4 102 4l-270 -1087q-47 -182 -110 -256q-66 -76 -170 -76q-150 0 -150 61zM170 1329q0 33 23 60q20 25 57 24q40 0 61 -24 q20 -23 21 -60q0 -35 -23 -61q-20 -23 -59 -23q-80 0 -80 84zM459 1329q0 33 22 60q23 25 58 24q40 0 61 -24q20 -23 21 -60q0 -35 -23 -61q-20 -23 -59 -23q-80 0 -80 84z" />
+<glyph unicode="&#x131;" horiz-adv-x="348" d="M117 0v969q0 39 20 47q18 8 96 8v-997q0 -18 -16 -23q-20 -4 -100 -4z" />
+<glyph unicode="&#x141;" horiz-adv-x="671" d="M12 721q0 20 17 31l84 26v615q0 31 14 37q10 4 100 4v-617l209 68q18 -57 18.5 -78t-16.5 -29l-211 -69v-603h406v-79q0 -27 -29 -27h-491v670l-84 -27q-17 66 -17 78z" />
+<glyph unicode="&#x142;" horiz-adv-x="346" d="M-2 694q0 18 2 22.5t14 8.5l103 33v692q0 37 18 47q16 8 94 8v-708l105 34l12 -47q4 -20 4 -30q0 -16 -2 -20.5t-14 -8.5l-105 -35v-663q0 -18 -14 -23q-16 -4 -98 -4v651l-103 -33q-4 16 -7 26.5t-5 19.5q-4 20 -4 30z" />
+<glyph unicode="&#x152;" horiz-adv-x="1282" d="M74 725q0 391 94 559q96 170 295 170q178 0 262 -133v84q0 29 27 29h477q0 -78 -2 -88q-4 -16 -21 -17h-383v-493h359q0 -76 -2 -88q-2 -16 -23 -17h-334v-627h404q0 -80 -2 -90q-2 -14 -25 -14h-475v133q-84 -152 -279 -151q-201 0 -288 161q-84 156 -84 582zM199 692 q0 -322 57 -465q55 -137 193 -137q139 0 194 145.5t55 495.5q0 338 -51 479q-49 135 -182 136q-137 0 -203 -152q-63 -148 -63 -502z" />
+<glyph unicode="&#x153;" horiz-adv-x="1314" d="M76 510q0 535 340 534q203 0 270 -170q47 102 125 138q72 33 176 32q258 0 258 -317q0 -162 -20 -252q-180 -37 -490 -37q0 -111 17 -188q14 -68 51 -104.5t69 -45.5q41 -10 95 -10q158 0 254 70q14 -35 14 -105q0 -12 -37 -30q-27 -12 -104 -31q-63 -14 -138 -14 q-113 0 -180 32q-70 33 -108 127q-82 -160 -262 -159q-86 0 -141.5 18t-100.5 72q-45 55 -68 163q-20 103 -20 277zM197 502q0 -164 26 -266q25 -96 66 -127q39 -31 110 -31q215 0 215 438q0 252 -49 338q-51 88 -151 88q-106 0 -161.5 -98t-55.5 -342zM735 532 q272 0 391 29q8 57 9 144q-4 133 -35 184q-33 53 -123 53q-46 0 -80 -12q-39 -14 -74 -51q-37 -41 -61 -125q-23 -83 -27 -222z" />
+<glyph unicode="&#x160;" horiz-adv-x="753" d="M68 88q0 43 32 80q76 -74 230 -74q246 0 245 250q0 80 -32 156q-31 70 -111 155l-221 232q-139 158 -139 291q0 125 92 200q90 76 252 76q131 0 192 -27q66 -29 66 -63q0 -37 -31 -68q-74 55 -219 56q-104 0 -170 -47q-63 -45 -64 -125q0 -94 113 -222l244 -251 q86 -92 115 -168q33 -86 32 -185q0 -170 -86 -272t-270 -102q-125 0 -199 34q-71 35 -71 74zM166 1829q14 33 27 47q18 23 30.5 22.5t61.5 -49.5q63 -63 92 -96l43 -47l80 96q57 66 67 76l27 25q47 -29 47 -56q0 -23 -102 -137q-100 -113 -121 -113t-127 103 q-100 98 -125 129z" />
+<glyph unicode="&#x161;" horiz-adv-x="751" d="M80 68q0 35 24 69q90 -53 224 -53q221 0 221 158q0 113 -115 198l-215 156q-82 57 -108.5 104.5t-26.5 110.5q0 109 88 170q92 63 246 63q80 0 151 -20q63 -18 86 -40.5t23 -41.5q0 -35 -27 -63q-102 66 -223 65q-96 0 -155.5 -35t-59.5 -98q0 -76 100 -143l222 -158 q139 -115 139 -254q0 -135 -88 -205q-90 -72 -248 -71q-113 0 -188 26q-70 25 -70 62zM170 1419q14 33 25 47q16 23 32 23q14 0 62 -47q63 -63 92 -96l43 -50l80 97q43 49 67 73l27 27q47 -29 47 -55q0 -23 -102 -138q-100 -113 -121 -112.5t-127 102.5q-80 78 -125 129z " />
+<glyph unicode="&#x178;" horiz-adv-x="737" d="M12 1415q-6 14 13 17q10 2 114 2l99 -293q43 -115 86 -262q49 -166 53 -193q14 106 139 457l90 270q2 12 21 17q20 4 102 4l-299 -848v-559q0 -18 -14 -23q-16 -4 -99 -4v582zM156 1739q0 33 22 59q23 25 58 25q41 0 61 -22.5t20 -61.5q0 -33 -22 -60q-20 -25 -59 -24 q-80 0 -80 84zM444 1739q0 37 21 59q23 25 59 25q39 0 60 -23q23 -27 22 -61q0 -33 -22 -60q-23 -25 -60 -24q-80 0 -80 84z" />
+<glyph unicode="&#x17d;" horiz-adv-x="802" d="M47 45q0 29 10 55l564 1231h-435q-55 0 -84 -4v78q0 29 29 29h610q12 -16 13 -39q0 -27 -13 -58l-569 -1235h461q78 0 108 13v-88q0 -27 -26 -27h-649q-19 16 -19 45zM195 1829q14 33 26 47q18 23 30.5 22.5t61.5 -49.5q63 -63 93 -96l43 -47l79 96q43 49 70 76l25 25 q47 -29 47 -56q0 -25 -100.5 -137.5t-123.5 -112.5q-20 0 -127 103q-99 98 -124 129z" />
+<glyph unicode="&#x17e;" horiz-adv-x="743" d="M59 57q0 25 13 45l481 824h-248q-166 0 -231 -11q-4 37 -4 56q0 53 36 53h566q12 -12 12 -37q0 -33 -14 -59l-477 -822h237q184 0 248 17q2 -8 2 -53q0 -70 -43 -70h-557q-21 18 -21 57zM139 1419q14 33 25 47q16 23 33 23q14 0 61 -47q63 -63 92 -96l43 -50l80 97 q29 33 70 73l24 27q47 -29 47 -55q0 -23 -102 -138q-100 -113 -121 -112q-18 0 -125 102q-94 90 -127 129z" />
+<glyph unicode="&#x17f;" horiz-adv-x="354" d="M106 2q14 43 15 119v1081q0 166 86 238q88 72 252 71q98 0 167.5 -30.5t69.5 -59.5q0 -43 -28 -78q-86 68 -211 68q-119 0 -172 -57q-51 -53 -52 -195v-1122q0 -33 -14 -43t-51 -10q-44 0 -62 18z" />
+<glyph unicode="&#x192;" horiz-adv-x="974" d="M33 -338q0 35 14 66q63 -25 152 -25q53 0 84 6q35 6 71 27q39 20 58 74q20 57 20 133v979h-278v49q0 10 4 30q4 16 8 19q8 4 14 4h252v139q0 98 21 162q20 68 53 102.5t80 53.5q59 23 88 24q49 4 92 4q86 0 131 -18t45 -45q0 -33 -12 -64q-68 25 -152 25q-52 0 -86 -6 q-33 -6 -71.5 -26.5t-57.5 -74.5q-18 -52 -18 -135v-141h325q0 -59 -4 -84q-3 -18 -24 -18h-297v-975q0 -100 -21 -164q-20 -68 -53 -102.5t-80 -53.5q-59 -23 -88 -24q-49 -4 -92 -4q-80 0 -131 20q-47 18 -47 43z" />
+<glyph unicode="&#x237;" horiz-adv-x="370" d="M-231 -305q0 39 18 63q90 -53 197 -53q94 0 120 55q27 53 27 187v1022q0 39 19 47q16 8 94 8v-1100q0 -156 -53.5 -239.5t-198.5 -83.5q-102 0 -164 28q-59 29 -59 66z" />
+<glyph unicode="&#x2c6;" horiz-adv-x="491" d="M0 1227l227 233q16 4 27 4q25 0 41 -18q199 -199 199 -219q0 -12 -27 -26.5t-57 -14.5q-137 143 -158 176q-150 -174 -174 -174q-51 0 -78 39z" />
+<glyph unicode="&#x2c7;" horiz-adv-x="473" d="M0 1419q14 33 25 47q16 23 32 23q14 0 62 -47q63 -63 92 -96l43 -50l80 97q43 49 67 73l27 27q47 -29 47 -55q0 -23 -102 -138q-100 -113 -121 -112.5t-127 102.5q-80 78 -125 129z" />
+<glyph unicode="&#x2d8;" horiz-adv-x="497" d="M0 1413q0 43 63 62q63 -178 183 -179q49 0 84 27t51 55q2 4 35 74q18 31 49 12q33 -18 35 -51q-72 -225 -256 -225q-102 0 -172 82q-72 84 -72 143z" />
+<glyph unicode="&#x2d9;" horiz-adv-x="131" d="M2 1370q0 94 68 94q63 0 63 -92q-4 -96 -70 -96q-63 0 -61 94z" />
+<glyph unicode="&#x2da;" horiz-adv-x="366" d="M0 1360q0 186 193 186q90 0 135 -41q41 -39 41 -143q0 -186 -191 -186q-88 0 -133 43t-45 141zM88 1356q0 -98 92 -99q102 0 103 105q0 100 -90 100q-53 0 -78 -24q-27 -27 -27 -82z" />
+<glyph unicode="&#x2db;" horiz-adv-x="260" d="M0 -233q0 90 57 167q55 76 127 99q20 12 39 8q27 -6 37 -41q-63 -35 -110.5 -96.5t-47.5 -124.5q0 -90 82 -90q29 0 62 16q12 -25 14 -41q0 -20 -2 -24q-8 -39 -100 -39q-158 0 -158 166z" />
+<glyph unicode="&#x2dc;" horiz-adv-x="581" d="M0 1278q84 139 209 139q45 0 94 -51q49 -53 92 -53q45 0 76 24.5t45 44.5q16 23 23 23q10 0 22 -16q10 -12 19 -33l4 -17q-14 -33 -33 -53q-20 -25 -70 -53q-47 -29 -100 -29q-66 0 -115 56q-47 53 -78 53q-37 0 -61 -23q-27 -23 -43 -47q-16 -23 -25 -22q-32 0 -59 57z " />
+<glyph unicode="&#x2dd;" horiz-adv-x="604" d="M106 1212l205 304q12 23 41 22q12 0 25 -6q12 12 33 12q28 0 49 -18.5t24 -48.5l-229 -297q-10 -16 -31 -17q-18 0 -33 13l-2 -5q-10 -10 -26 -10q-20 0 -37 15q-15 11 -19 36z" />
+<glyph unicode="&#x394;" horiz-adv-x="899" d="M57 0l328 1366q16 74 82 74q39 0 55 -15l338 -1425h-803zM188 106h545l-270 1164h-6z" />
+<glyph unicode="&#x2206;" horiz-adv-x="899" d="M57 0l328 1366q16 74 82 74q39 0 55 -15l338 -1425h-803zM188 106h545l-270 1164h-6z" />
+<glyph unicode="&#x3a9;" horiz-adv-x="942" d="M94 49q0 57 39 57h133q-168 248 -168 666q0 356 95 518q96 164 301 164q193 0 272 -154q78 -150 78 -520q0 -240 -56 -415q-55 -178 -118 -259h168q10 -35 10 -51q0 -55 -43 -55h-273q80 121 140 315q59 197 59 410q0 334 -59 475q-57 137 -191 137q-137 0 -202 -133 q-66 -135 -66 -461q0 -223 57.5 -427.5t132.5 -315.5h-301q-8 22 -8 49z" />
+<glyph unicode="&#x2126;" horiz-adv-x="942" d="M94 49q0 57 39 57h133q-168 248 -168 666q0 356 95 518q96 164 301 164q193 0 272 -154q78 -150 78 -520q0 -240 -56 -415q-55 -178 -118 -259h168q10 -35 10 -51q0 -55 -43 -55h-273q80 121 140 315q59 197 59 410q0 334 -59 475q-57 137 -191 137q-137 0 -202 -133 q-66 -135 -66 -461q0 -223 57.5 -427.5t132.5 -315.5h-301q-8 22 -8 49z" />
+<glyph unicode="&#x3c0;" horiz-adv-x="903" d="M70 963q0 61 41 61h710q10 -27 10 -53q0 -55 -43 -56h-81v-882q0 -41 -60 -41q-31 0 -53 8v915h-295v-882q0 -41 -59 -41q-23 0 -54 8v915h-106q-10 25 -10 48z" />
+<glyph unicode="&#x2000;" horiz-adv-x="976" />
+<glyph unicode="&#x2001;" horiz-adv-x="1955" />
+<glyph unicode="&#x2002;" horiz-adv-x="976" />
+<glyph unicode="&#x2003;" horiz-adv-x="1955" />
+<glyph unicode="&#x2004;" horiz-adv-x="651" />
+<glyph unicode="&#x2005;" horiz-adv-x="487" />
+<glyph unicode="&#x2006;" horiz-adv-x="325" />
+<glyph unicode="&#x2007;" horiz-adv-x="325" />
+<glyph unicode="&#x2008;" horiz-adv-x="243" />
+<glyph unicode="&#x2009;" horiz-adv-x="389" />
+<glyph unicode="&#x200a;" horiz-adv-x="106" />
+<glyph unicode="&#x2010;" horiz-adv-x="591" d="M88 526v49q0 20 2 31q4 16 8 19q8 4 17 4h391q0 -53 -4 -82q-2 -20 -25 -21h-389z" />
+<glyph unicode="&#x2011;" horiz-adv-x="591" d="M88 526v49q0 20 2 31q4 16 8 19q8 4 17 4h391q0 -53 -4 -82q-2 -20 -25 -21h-389z" />
+<glyph unicode="&#x2012;" horiz-adv-x="591" d="M88 526v49q0 20 2 31q4 16 8 19q8 4 17 4h391q0 -53 -4 -82q-2 -20 -25 -21h-389z" />
+<glyph unicode="&#x2013;" horiz-adv-x="890" d="M88 526v49q0 20 2 31q4 16 8 19q8 4 17 4h690q0 -53 -4 -82q-2 -20 -25 -21h-688z" />
+<glyph unicode="&#x2014;" horiz-adv-x="1431" d="M12 526v49q0 20 2 31q4 16 9 19q8 4 16 4h1382q0 -53 -4 -82q-2 -20 -24 -21h-1381z" />
+<glyph unicode="&#x2018;" horiz-adv-x="323" d="M76 1284q0 90 49 213t76 123q41 0 47 -37q-45 -88 -47 -231q41 -25 41 -82q0 -33 -23 -60q-23 -25 -57 -24q-86 0 -86 98z" />
+<glyph unicode="&#x2019;" horiz-adv-x="323" d="M78 1212q45 92 47 232q-41 25 -41 82q0 35 22 61q20 23 60 23q84 0 84 -99q0 -90 -49 -212.5t-76 -122.5q-39 -1 -47 36z" />
+<glyph unicode="&#x201a;" horiz-adv-x="319" d="M78 -193q45 92 47 232q-41 25 -41 82q0 35 22 61q20 23 60 23q84 0 84 -99q0 -90 -49 -212.5t-76 -122.5q-39 -1 -47 36z" />
+<glyph unicode="&#x201c;" horiz-adv-x="608" d="M76 1284q0 90 49 213t76 123q41 0 47 -37q-45 -88 -47 -231q41 -25 41 -82q0 -33 -23 -60q-23 -25 -57 -24q-86 0 -86 98zM360 1284q0 96 48 213q49 123 77 123q39 0 47 -37q-45 -88 -47 -231q39 -25 39 -82q0 -33 -22 -60q-23 -25 -58 -24q-84 0 -84 98z" />
+<glyph unicode="&#x201d;" horiz-adv-x="608" d="M78 1212q45 92 47 232q-41 25 -41 82q0 35 22 61q20 23 60 23q84 0 84 -99q0 -90 -49 -212.5t-76 -122.5q-39 -1 -47 36zM360 1212q43 80 50 232q-41 25 -41 82q0 33 22 59q23 25 58 25q84 0 83 -99q0 -90 -49 -212.5t-73 -122.5q-41 -1 -50 36z" />
+<glyph unicode="&#x201e;" horiz-adv-x="604" d="M78 -193q45 92 47 232q-41 25 -41 82q0 35 22 61q20 23 60 23q84 0 84 -99q0 -90 -49 -212.5t-76 -122.5q-39 -1 -47 36zM360 -193q43 82 50 232q-41 25 -41 82q0 35 22 61q20 23 58 23q84 0 83 -99q0 -90 -49 -212.5t-73 -122.5q-41 -1 -50 36z" />
+<glyph unicode="&#x2020;" horiz-adv-x="880" d="M76 985q0 37 26 64l260 -31q20 -6 24.5 -28.5t-9.5 -37.5l-248 -28q-23 -4 -39 16q-14 16 -14 45zM381 16l29 889q4 16 14 23q16 8 27 6q15 -3 24 -12l29 -879q4 -25 -17 -41q-16 -14 -45 -14q-43 -1 -61 28zM381 1395q-4 25 16.5 39t48.5 14q39 0 60 -27l-29 -366 q-6 -23 -28.5 -27t-36.5 10zM500 976.5q-4 24.5 8 39.5l246 31q25 8 39 -12.5t14 -51.5q0 -41 -27 -61l-258 28q-18 2 -22 26.5z" />
+<glyph unicode="&#x2021;" horiz-adv-x="880" d="M76 449q0 39 26 61l258 -29q18 -6 22.5 -28.5t-7.5 -36.5l-246 -31q-25 -8 -39 12.5t-14 51.5zM76 985q0 37 26 64l260 -31q20 -6 24.5 -28.5t-9.5 -37.5l-248 -28q-23 -4 -39 16q-14 16 -14 45zM377 20l31 357q4 23 26.5 27t36.5 -11l31 -344q2 -27 -14.5 -41t-51.5 -14 q-36 -1 -59 26zM381 1395q-4 25 16.5 39t48.5 14q39 0 60 -27l-29 -366q-6 -23 -28.5 -27t-36.5 10zM403 504v393q0 29 23 35q27 6 55 -8v-392q0 -29 -22 -34q-22 -6 -56 6zM494 440q-3 22 12 37l248 29q25 4 39 -14q14 -16 14 -48q0 -39 -27 -63l-258 31q-24 5 -28 28z M500 976.5q-4 24.5 8 39.5l246 31q25 8 39 -12.5t14 -51.5q0 -41 -27 -61l-258 28q-18 2 -22 26.5z" />
+<glyph unicode="&#x2022;" horiz-adv-x="436" d="M104 578q0 55 33 94t90 39q59 0 95 -37q35 -39 34 -96q0 -53 -34 -95q-33 -39 -95 -39q-123 1 -123 134z" />
+<glyph unicode="&#x2026;" horiz-adv-x="997" d="M90 82q0 41 23 65q25 27 63 27q90 0 90 -92q0 -37 -24 -66q-25 -27 -66 -26q-86 0 -86 92zM412 82q0 37 24 65q25 27 62 27q90 0 90 -92q0 -37 -25 -66q-25 -27 -65 -26q-86 0 -86 92zM733 82q0 41 23 65q25 27 63 27q90 0 90 -92q0 -37 -24 -66q-25 -27 -66 -26 q-86 0 -86 92z" />
+<glyph unicode="&#x202f;" horiz-adv-x="389" />
+<glyph unicode="&#x2030;" horiz-adv-x="2050" d="M125 1075q0 377 289 377q143 0 207 -82q66 -84 65 -293q0 -379 -283 -379q-76 0 -118 15q-49 16 -86 53t-55.5 114.5t-18.5 194.5zM229 25l865 1427q66 -18 65 -51q0 -4 -215 -361l-430 -708l-215 -352q-70 14 -70 45zM233 1067q0 -164 39 -221.5t129 -57.5 q178 0 179 289q0 166 -39 223q-41 59 -127 60q-181 0 -181 -293zM748 360q0 377 288 377q141 0 207 -84t66 -293q0 -379 -281 -378q-145 0 -213 75q-67 78 -67 303zM856 352q0 -164 41 -223q39 -57 127 -57q180 0 180 288q0 160 -41 224q-41 61 -125 61q-182 0 -182 -293z M1364 360q0 377 291 377q141 0 206.5 -84t65.5 -293q0 -379 -282 -378q-76 0 -119 14q-49 16 -86 53q-39 39 -58 115q-18 76 -18 196zM1473 352q0 -162 40.5 -221t128.5 -59q178 0 179 288q0 164 -39 224q-41 61 -127 61q-182 0 -182 -293z" />
+<glyph unicode="&#x2039;" horiz-adv-x="522" d="M57 512q0 53 305 512q18 0 35 -14q23 -18 27 -29l6 -14q0 -23 -65 -138q-66 -117 -134 -217l-65 -100q272 -395 272 -442q-27 -70 -65 -70q-316 453 -316 512z" />
+<glyph unicode="&#x203a;" horiz-adv-x="522" d="M88 67.5q0 22.5 68 133.5q37 61 137 211l67 100q-266 397 -266 455q0 39 70 57q303 -457 303 -512q0 -23 -78 -154q-68 -113 -158 -241l-77 -117l-19 6q-12 4 -29 21q-18 18 -18 40.5z" />
+<glyph unicode="&#x2044;" horiz-adv-x="399" d="M-250 27l817 1400q8 27 37 27q43 0 76 -43l-819 -1411q-8 -18 -33 -18q-51 0 -78 45z" />
+<glyph unicode="&#x205f;" horiz-adv-x="487" />
+<glyph unicode="&#x2074;" horiz-adv-x="837" d="M106 797q0 27 15 63q41 127 147 293q111 172 205 262q37 39 92 39q10 0 47 -6v-596h144q10 -27 10 -55q0 -53 -35 -54h-119v-122q0 -39 -61 -39q-20 0 -45 6v155h-383q-17 21 -17 54zM217 846h291l4 467q-86 -78 -168 -207q-90 -139 -127 -260z" />
+<glyph unicode="&#x20ac;" d="M45 430q0 57 8 74q10 20 39 20h135v29q0 94 6 170h-188q0 57 8 74q10 20 39 20h152q23 135 59 219q39 86 96 131q53 41 107 58q55 16 114.5 16t108.5 -16.5t66 -32.5q20 -20 20 -31q0 -53 -22 -76q-10 8 -60 31q-43 18 -90 19q-41 0 -82 -11q-37 -8 -78 -40.5t-71 -98.5 q-33 -72 -47 -168h333q0 -53 -10 -73.5t-37 -20.5h-299q-6 -76 -6 -170v-29h277q0 -59 -9 -75q-8 -18 -39 -19h-225q10 -113 30.5 -182.5t59.5 -104.5q37 -33 72 -43q37 -10 86 -10q125 0 199 74q18 -37 18 -76q0 -31 -71.5 -69.5t-163.5 -38.5q-72 0 -127.5 16t-102.5 57 q-49 43 -80 140q-29 92 -39 237h-186z" />
+<glyph unicode="&#x2122;" horiz-adv-x="1083" d="M70 1368v45q0 16 20 21h414v-45q0 -20 -19 -21h-155v-565q0 -12 -11 -17q-6 -2 -59 -2v584h-190zM553 784v629q0 20 20 21h43l103 -285l49 -125l41 123l98 266q6 20 21 21h49v-629q0 -12 -10 -17q-12 -4 -60 -4l2 234q0 35 6 237l-22 -65q-6 -20 -12.5 -35.5t-10.5 -26.5 q-2 -6 -4 -13t-4 -11l-2 -4l-67 -176q-4 -10 -11 -11h-43l-71 187l-56 151q8 -182 9 -235l2 -211q0 -14 -9 -17q-12 -4 -61 -4z" />
+<glyph unicode="&#x2202;" horiz-adv-x="892" d="M94 526q0 252 92 383q92 133 258 133q139 0 226 -92q-77 304 -357 516q23 55 78 56q27 0 45 -19q197 -151 289 -368q94 -223 94 -543q0 -135 -12 -234q-12 -90 -51 -190q-35 -90 -111 -139q-74 -49 -182 -49q-188 0 -279 129q-90 130 -90 417zM207 510q0 -432 254 -432 q78 0 131 41q47 37 74 121q23 74 32 159q8 72 9 199q0 111 -11 197q-86 143 -227 143q-127 0 -194.5 -112.5t-67.5 -315.5z" />
+<glyph unicode="&#x220f;" horiz-adv-x="903" d="M70 1372q0 61 41 62h710q10 -27 10 -54q0 -55 -43 -55h-81v-1679q0 -41 -60 -41q-20 0 -53 8v1712h-295v-1679q0 -41 -59 -41q-23 0 -54 8v1712h-106q-10 24 -10 47z" />
+<glyph unicode="&#x2211;" horiz-adv-x="829" d="M119 -389l334 821l-332 1002h555q6 -31 6 -43q0 -63 -39 -64h-360l286 -903l-293 -707h410q6 -25 6 -49q0 -57 -39 -57h-534z" />
+<glyph unicode="&#x2212;" d="M86 526v49q0 20 2 31q4 16 8 19q8 4 17 4h690q0 -53 -4 -82q-2 -20 -25 -21h-688z" />
+<glyph unicode="&#x221a;" horiz-adv-x="952" d="M113 453q20 27 65 26q43 0 49 -30l162 -605l209 1590h305q8 -23 8 -54q0 -53 -39 -53h-174l-225 -1665q-8 -57 -76 -57q-27 0 -61 10z" />
+<glyph unicode="&#x221e;" horiz-adv-x="1273" d="M106 547q0 121 62 207q59 84 211 84q104 0 162 -50q59 -51 108 -135q55 90 111 135q61 49 153 50q119 0 187 -76q70 -80 69 -215q0 -291 -247 -301q-27 -2 -76 8q-141 29 -215 186q-119 -184 -262 -184q-127 0 -195 82q-68 83 -68 209zM217 547q0 -78 41 -131.5 t117 -53.5q68 0 119 48q47 45 94 135l-2 8q-25 72 -70 119q-45 49 -106 51q-53 4 -91 -12q-102 -37 -102 -164zM692 543q78 -188 199 -189q77 0 123 49q45 47 45 144q0 137 -105 174q-23 8 -63 4q-31 0 -60 -12q-27 -12 -38 -25l-33 -39q-5 -6 -68 -106z" />
+<glyph unicode="&#x222b;" horiz-adv-x="974" d="M33 -338q0 35 14 66q63 -25 152 -25q53 0 84 6q35 6 71 27q39 20 58 74q20 57 20 133v1220q0 98 21 162q20 68 53 102.5t80 53.5q59 23 88 24q49 4 92 4q86 0 131 -18t45 -45q0 -33 -12 -64q-68 25 -152 25q-52 0 -86 -6q-33 -6 -71.5 -26.5t-57.5 -74.5 q-18 -52 -18 -135v-1218q0 -100 -21 -164q-20 -68 -53 -102.5t-80 -53.5q-59 -23 -88 -24q-49 -4 -92 -4q-80 0 -131 20q-47 18 -47 43z" />
+<glyph unicode="&#x2248;" horiz-adv-x="817" d="M31 393q37 49 94 84q66 39 141 39q71 0 148 -49q78 -49 139 -49q84 0 182 80q18 10 35 -6q14 -14 21 -48q-90 -133 -246 -133q-84 0 -156 51.5t-123 51.5q-90 0 -160 -82q-27 -18 -49 4q-24 24 -26 57zM31 657q96 127 241 127q68 0 146 -51q74 -49 135 -49q96 0 160 82 q16 16 35 10q20 -6 28 -24q6 -31 -2 -62q-80 -111 -225 -110q-78 0 -156 49q-77 49 -129 49q-31 0 -65 -10q-27 -8 -47 -21q-14 -8 -41 -29q-6 -6 -13.5 -10l-11.5 -6l-4 -2q-14 -8 -31 8q-18 18 -20 49z" />
+<glyph unicode="&#x2260;" horiz-adv-x="817" d="M49 281v49q0 20 2 30q2 14 10.5 18.5t14.5 4.5h221l94 254h-342v49q0 18 2 29q4 16 10 20q8 4 15 4h352l100 271q10 29 39 28q33 0 74 -39l-96 -260h221q0 -57 -4 -82q-4 -20 -25 -20h-229l-92 -254h350q0 -57 -4 -82q-4 -20 -25 -20h-360l-98 -271q-10 -23 -39 -22 q-41 0 -74 39l92 254h-209z" />
+<glyph unicode="&#x2264;" horiz-adv-x="851" d="M104 578q0 43 39 63l549 270q37 -37 41 -75q0 -25 -22 -37l-459 -226l487 -211q-4 -41 -18 -65q-16 -25 -33 -25q-20 0 -49 15l-514 225q-21 27 -21 66zM119 0q0 57 4 82q4 20 24 20h603q0 -59 -5 -84q-3 -18 -24 -18h-602z" />
+<glyph unicode="&#x2265;" horiz-adv-x="841" d="M104 815q2 39 19 64q16 27 35 26q10 0 47 -14l514 -225q20 -27 20 -68q0 -43 -39 -63l-550 -271q-37 39 -37 76q0 29 20 37l459 225zM119 0q0 57 4 82q4 20 24 20h586q0 -59 -4 -84q-3 -18 -24 -18h-586z" />
+<glyph unicode="&#x25ca;" horiz-adv-x="958" d="M74 717l409 727l410 -727l-410 -727zM197 717l286 -504l285 504l-285 506z" />
+<glyph unicode="&#xe000;" horiz-adv-x="1025" d="M0 1025h1025v-1025h-1025v1025z" />
+<glyph unicode="&#xfb00;" horiz-adv-x="940" d="M31 926q0 63 4 84q2 14 26 14h125v152q0 113 33 180t90 100q51 29 101 39q47 10 96 10q113 0 213 -65q80 74 237 73q176 0 177 -71q0 -25 -13 -56q-63 25 -151 25q-53 0 -84 -8q-47 -12 -74 -31q-41 -27 -57 -78q-18 -55 -19 -137v-133h213q0 -63 -4 -84q-2 -14 -22 -14 h-187v-899q0 -27 -28 -27h-84v926h-324v-899q0 -27 -29 -27h-84v926h-155zM299 1024h324v129q0 125 36 207q-63 45 -161 45q-31 0 -60 -6q-23 -4 -61 -25q-35 -16 -58 -69q-20 -47 -20 -125v-156z" />
+<glyph unicode="&#xfb03;" horiz-adv-x="1257" d="M29 926q0 63 4 84q2 14 28 14h123v152q0 113 33 180q33 70 88 100q51 29 101 39q47 10 98 10q113 0 213 -65q80 74 252 73q207 0 207 -73q0 -37 -13 -68q-80 39 -192 39q-52 0 -86 -6q-33 -6 -74 -33q-39 -27 -57 -80q-18 -55 -19 -141v-127h172q0 -63 -4 -84 q-2 -14 -24 -14h-144v-899q0 -27 -28 -27h-84v926h-326v-899q0 -27 -27 -27h-86v926h-155zM297 1024h326v129q0 129 36 207q-63 45 -161 45q-34 0 -62 -6q-23 -4 -61 -25q-35 -16 -58 -69q-20 -47 -20 -125v-156zM1028 0v969q0 39 21 47q18 8 92 8v-997q0 -18 -13 -23 q-16 -4 -100 -4z" />
+<glyph unicode="&#xfb04;" horiz-adv-x="1280" d="M29 926q0 63 4 84q2 14 28 14h123v152q0 113 33 180q33 70 88 100q51 29 101 39q47 10 98 10q109 0 207 -61q70 70 217 69q138 0 233 -55l-2 -2h2v-1429q0 -18 -12 -23q-16 -4 -98 -4v1391q-55 18 -117 18q-53 0 -72 -4q-31 -6 -61 -27q-33 -20 -49.5 -75.5t-16.5 -133.5 v-145h172q0 -63 -4 -84q-2 -14 -24 -14h-144v-899q0 -27 -28 -27h-84v926h-326v-899q0 -27 -27 -27h-86v926h-155zM297 1024h326v129q0 125 34 207q-63 45 -159 45q-34 0 -62 -6q-23 -4 -61 -25q-35 -16 -58 -69q-20 -47 -20 -125v-156z" />
+<glyph horiz-adv-x="1351" d="M55 924q0 63 4 84q4 16 23 16h125v324q0 33 18.5 39t93.5 6v-369h248q0 -63 -4 -84q-4 -16 -20 -16h-224v-629q0 -59 5 -113q2 -37 26 -71q23 -31 64 -31q66 0 133 33q8 -31 8 -60q0 -37 -47 -55q-49 -18 -119 -18q-59 0 -98 22q-37 23 -55 70q-16 43 -23 96 q-6 49 -6 129v627h-152zM670 57q0 25 12 45l481 824h-248q-166 0 -231 -11q-4 37 -4 56q0 53 37 53h565q12 -12 12 -37q0 -33 -14 -59l-477 -822h237q184 0 248 17q2 -8 2 -53q0 -70 -43 -70h-557q-20 18 -20 57z" />
+<glyph horiz-adv-x="835" d="M92 479q0 158 35 279q33 115 98 176q61 59 131 84q74 27 150 26q133 0 217 -73v-1069q0 -160 -92 -236q-90 -76 -250 -76q-115 0 -188.5 31t-73.5 70q0 37 24 67q111 -61 242 -61q90 0 157.5 49t67.5 172v160q-35 -41 -96 -68q-68 -29 -137 -28q-137 0 -211 108 q-74 106 -74 389zM213 479q0 -395 195 -395q145 0 204 141v676q-43 47 -135 47q-45 0 -92 -20q-39 -16 -84 -68q-41 -47 -65 -145q-23 -91 -23 -236z" />
+<glyph horiz-adv-x="503" d="M27 926q0 63 4 84q2 14 28 14h123v248q0 240 221 239q135 0 136 -59q0 -33 -13 -57q-37 18 -104 18q-61 0 -94 -30.5t-33 -122.5v-236h213q0 -63 -4 -84q-2 -14 -25 -14h-184v-899q0 -27 -29 -27h-84v926h-155z" />
+<glyph horiz-adv-x="921" d="M94 436q0 125 64 203q66 82 166 111q-76 8 -137.5 67.5t-61.5 175.5q0 141 92 232q90 88 248 100v197q0 29 22 39q18 8 80 8v-246q86 -8 158 -43q70 -35 100 -63q29 -29 29 -52q0 -41 -41 -94q-102 145 -293 146q-127 0 -201 -60q-78 -61 -77 -170q0 -172 213 -172 q68 0 135 10l-17 -110q-178 -6 -268 -82t-90 -189q0 -94 67.5 -155.5t200.5 -61.5q215 0 326 162q47 -47 47 -90q0 -14 -18 -39q-25 -33 -50 -55q-35 -33 -96 -55q-70 -27 -143 -35v-187q0 -29 -23 -39q-25 -10 -80 -10v234q-352 12 -352 323z" />
+<glyph horiz-adv-x="1351" d="M88 815q0 304 86 449t287 145q100 0 170 -68q72 -68 71 -233q0 -47 -12 -119q-12 -70 -31 -76l259 33v205q0 61 24 80q27 20 90 20v-290l234 34q0 -66 -9 -84q-10 -23 -40 -26q-104 -15 -185 -25v-553q0 -135 19 -180q18 -47 79 -47q92 0 144 22q8 -27 8 -63 q0 -55 -178 -55q-104 0 -146 61q-41 63 -40 262v541q-455 -53 -713 -53q0 -119 16 -205q14 -78 53 -113q35 -33 68 -41q31 -8 90 -8q158 0 248 154q33 -39 33 -86q0 -27 -31 -64q-33 -39 -100 -72q-74 -35 -162 -34q-78 0 -139 20q-57 18 -103 70q-49 55 -69.5 149 t-20.5 250zM205 885q66 0 151.5 6t141.5 12l53 6q27 6 35 70q10 72 10 104q0 129 -37 181q-37 53 -106 53q-94 0 -166 -96q-74 -98 -82 -336z" />
+<glyph horiz-adv-x="987" d="M106 2q14 43 15 119v1083q0 166 86 234q88 70 258 69q59 0 119 -16q57 -16 84 -37q29 -23 28 -35q0 -27 -28 -80q-84 66 -211 66q-119 0 -172 -59q-51 -57 -52 -207v-115h676q16 -33 -14 -98l-270 -410q133 -18 227 -102q92 -82 92 -232q0 -203 -104 -332 q-102 -127 -295 -126q-78 0 -133 16q-51 14 -72 35q-18 18 -18 37q0 41 26 79q84 -59 191 -59q132 0 209 92q76 90 75 250q0 186 -166 242q-74 27 -202 28l315 482h-537v-860q0 -47 -14 -64q-14 -18 -51 -18q-44 0 -62 18z" />
+<glyph horiz-adv-x="735" d="M51 926q0 90 10 96q2 2 11 2h575q18 -34 -12 -98l-273 -410q137 -18 228 -100q92 -83 92 -234q0 -203 -104 -332q-102 -127 -293 -126q-80 0 -135 18q-59 20 -74 35q-16 16 -17 35q0 45 27 79q90 -59 190 -59q132 0 209 92q78 94 78 250q0 182 -166 242q-74 25 -202 28 l313 482h-457z" />
+<glyph horiz-adv-x="1058" d="M6 924q0 63 4 84q4 16 23 16h168v324q0 33 18.5 39t91.5 6v-369h662q20 -31 -12 -98l-271 -410q133 -18 228 -102q90 -82 90 -232q0 -207 -101 -332q-102 -127 -289 -126q-70 0 -124 16q-51 14 -68 31q-18 18 -18 32q0 33 26 82q84 -53 180 -53q127 0 201 92t74 250 q0 182 -166 242q-74 27 -203 28l314 480h-523v-883q0 -31 -14 -37q-10 -4 -96 -4v924h-195z" />
+<glyph horiz-adv-x="1675" d="M100 717q0 338 201 536q205 201 537 201q330 0 534 -201q203 -201 203 -536.5t-203 -536.5q-205 -201 -534 -200q-332 0 -537 200q-201 199 -201 537zM371 637q0 -37 43 -37h10q2 0 6 1l4 1q8 0 10 -2l119 -192v-70q0 -16 -12 -16q-6 0 -14 4q-4 2 -13 2q-37 0 -37 -39 q0 -35 43 -35q8 0 37 4t35 4q4 0 37 -4t37 -4q45 0 45 37t-33 37q-14 0 -20 -2q-4 -2 -7 -3q-2 -1 -4 -1q-12 0 -12 16v74l119 186q2 6 8 6q4 0 8 -1t6 -1h13q27 0 32 19q16 -18 31 -19h17q4 0 7 1l3 1q12 0 12 -26v-232q0 -25 -12 -24q-6 0 -12.5 2t-14.5 2q-35 0 -35 -35 q0 -37 41 -37q2 0 7.5 1t12.5 2t15 1q37 4 41 4q8 0 37 -4t31 -4q43 0 43 35q0 37 -35 37q-8 0 -14.5 -2t-12.5 -2q-12 0 -12 26v199l139 -252q27 -49 64 -49q55 0 55 90v242q0 25 14 24h11q39 0 39 35q0 39 -41 39q-18 0 -33 -2q-29 -4 -33 -4q-6 0 -35 4q-14 2 -31 2 q-23 0 -34 -12q-10 -10 -11 -27q0 -35 37 -35h17q23 0 22 -24v-201l-143 262l-4 12q-2 25 -39 25q-14 0 -24.5 -2t-29 -2t-30.5 2t-23 2q-29 0 -34 -23q-10 23 -35 23q-18 0 -35 -2q-33 -4 -39 -4t-35 4q-14 2 -31 2q-39 0 -38 -39q0 -37 38 -37q6 0 11 2q-2 -4 -13.5 -23.5 t-19.5 -35.5q-27 -45 -29 -54l-69 113h4q45 0 45 35q0 39 -41 39q-8 0 -33 -4t-31 -4q-2 0 -34.5 4t-36.5 4q-41 0 -41 -39zM461 795q0 -41 43 -41q25 0 45 6q14 4 34.5 4t32.5 -4q18 -6 35 -6q43 0 43 41q0 35 -35 34l-5 -1q-5 -1 -9 -1h-14q-10 0 -10 25v229q0 25 10 25 h14q4 0 9 -1l5 -1q8 0 23 10q12 9 12 25q0 37 -43 37q-18 0 -33 -2l-36 -5q-10 0 -39 5q-14 2 -35 2q-47 0 -47 -37q0 -12 10 -23q12 -12 27 -12q2 0 6 1t8 1h14q10 0 11 -25v-229q0 -25 -11 -25h-14q-4 0 -8 1t-6 1q-37 1 -37 -34zM731 1057q0 -63 39 -111q47 -59 111 -108 q76 -59 112 -109q37 49 113 109q68 53 111 106q41 51 40.5 112.5t-36.5 94.5q-39 35 -91 35q-88 0 -137 -90q-49 90 -137 90q-49 0 -88 -35q-37 -33 -37 -94z" />
+<glyph horiz-adv-x="350" />
+</font>
+</defs></svg> 
\ No newline at end of file
Index: modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/fonts/kreon-regular-webfont.eot
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/fonts/kreon-regular-webfont.eot
===================================================================
--- modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/fonts/kreon-regular-webfont.eot	(nonexistent)
+++ modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/fonts/kreon-regular-webfont.eot	(revision 47450)

Property changes on: modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/fonts/kreon-regular-webfont.eot
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/fonts/kreon-regular-webfont.svg
===================================================================
--- modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/fonts/kreon-regular-webfont.svg	(nonexistent)
+++ modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/fonts/kreon-regular-webfont.svg	(revision 47450)
@@ -0,0 +1,234 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" >
+<svg xmlns="http://www.w3.org/2000/svg">
+<metadata></metadata>
+<defs>
+<font id="KreonRegular" horiz-adv-x="1333" >
+<font-face units-per-em="2048" ascent="1638" descent="-410" />
+<missing-glyph horiz-adv-x="491" />
+<glyph horiz-adv-x="0" />
+<glyph horiz-adv-x="2048" />
+<glyph unicode=" "  horiz-adv-x="491" />
+<glyph unicode="&#x09;" horiz-adv-x="491" />
+<glyph unicode="&#xa0;" horiz-adv-x="491" />
+<glyph unicode="!" horiz-adv-x="548" d="M135 1386l240 27l43 -78l-76 -850h-141zM152 112.5q0 51.5 34.5 86t85 34.5t87 -35.5t36.5 -85t-36.5 -85t-87 -35.5t-85 34.5t-34.5 86z" />
+<glyph unicode="&#x22;" horiz-adv-x="661" d="M74 1411l190 21l35 -62l-59 -414h-113zM362 1411l191 21l35 -62l-60 -414h-112z" />
+<glyph unicode="#" horiz-adv-x="1323" d="M59 602l27 47h281l86 234h-283l-27 106l27 47h338l141 379h135l23 -29l-131 -350h207l137 379h135l23 -29l-127 -350h192q12 0 12 -16v-137h-262l-84 -234h250q12 0 12 -16v-137h-319l-143 -398h-136l-22 27l135 371h-209l-145 -398h-135l-23 27l135 371h-223zM535 649 h206l84 234h-204z" />
+<glyph unicode="$" horiz-adv-x="987" d="M68 1028q0 92 25.5 151.5t70.5 104.5q90 90 242 121v385h184v-377q137 -12 272 -59l29 -353h-141l-91 222q-61 20 -154 20t-157.5 -43t-64.5 -131q0 -102 102 -168q45 -31 100.5 -54.5t128 -56t136 -77.5t102.5 -95q74 -92 74 -200.5t-27 -175t-72 -115.5 q-90 -92 -237 -123v-397h-184v387q-182 8 -318 76v346h148l36 -219q88 -33 177 -33q176 0 241 115q23 39 23 101t-38 112.5t-125 93.5t-172 77.5t-153.5 83t-112.5 119t-44 162.5z" />
+<glyph unicode="%" horiz-adv-x="1472" d="M63 1059q0 61 17.5 123.5t52.5 113.5q80 117 219 117t217 -106q72 -100 72 -246q0 -154 -80 -256q-80 -104 -209 -105q-143 0 -221 119q-68 101 -68 240zM180 27l907 1388h173l8 -29l-897 -1386h-178zM215 1058q0 -93 38 -157.5t99 -64.5t98 65.5t37 158.5t-35.5 156.5 t-100 63.5t-100.5 -64.5t-36 -157.5zM836 348q0 139 69 238q80 117 217 116q139 0 217 -108q72 -96 72 -246q0 -152 -78 -254q-80 -102 -211 -102q-139 0 -219 117q-67 100 -67 239zM989 346q0 -94 37 -157.5t98.5 -63.5t97 64.5t35.5 158.5t-35.5 157.5t-100 63.5 t-98.5 -64.5t-34 -158.5z" />
+<glyph unicode="&#x26;" horiz-adv-x="1376" d="M66 412q0 217 258 422q-111 188 -111 319q0 150 94 244q100 100 244.5 100t226.5 -81t82 -206q0 -186 -262 -407q88 -121 182 -230l107 -127q53 111 78 226h-93l-32 143h319l23 -29q-45 -268 -150 -456l-16 -27q123 -127 158 -137q8 2 25.5 15.5t37.5 27.5l59 39l86 -189 q-78 -66 -209 -65.5t-290 137.5q-150 -139 -365 -139q-197 0 -325 123q-127 119 -127 297zM279 402.5q0 -97.5 68.5 -166t187.5 -68.5t217 94q-170 199 -336 428q-63 -61 -100 -125.5t-37 -162zM408 1194q0 -98 98 -258q160 145 160 274q0 66 -36 99.5t-96.5 33.5t-93 -46 t-32.5 -103z" />
+<glyph unicode="'" horiz-adv-x="372" d="M74 1391l190 20l35 -61l-59 -414h-113z" />
+<glyph unicode="(" horiz-adv-x="565" d="M104 600q0 160 23 302t55 259q57 201 146 359h172q-133 -266 -183 -633q-18 -137 -18 -293t21.5 -296t52.5 -257q43 -166 127 -373h-172l-15 31q-129 260 -186 604q-23 137 -23 297z" />
+<glyph unicode=")" horiz-adv-x="565" d="M66 -332q84 207 120 348q80 307 80 580q0 522 -200 924h172q223 -418 223 -926q0 -266 -76 -543q-47 -168 -133 -352l-14 -31h-172z" />
+<glyph unicode="*" horiz-adv-x="741" d="M72 1038l12 47l231 86l-243 78l32 115l50 12l188 -153l-47 247l115 25l32 -35l-41 -237l187 170l82 -88l-13 -48l-231 -86l244 -77l-33 -115l-49 -12l-189 153l47 -248l-114 -24l-33 35l41 237l-186 -170zM336 1169l18 -26h35l14 28l-16 29h-37z" />
+<glyph unicode="+" horiz-adv-x="821" d="M70 645v125l26 29h242v262h154v-262h256v-154h-256v-307h-127l-27 24v283h-268z" />
+<glyph unicode="," horiz-adv-x="438" d="M45 -211l102 209l-53 235l215 39q23 -90 23 -156.5t-17.5 -130t-44.5 -116.5q-49 -100 -118 -170l-107 61v29z" />
+<glyph unicode="-" horiz-adv-x="817" d="M119 500v125l24 28h543q12 0 12 -16v-137h-579z" />
+<glyph unicode="." horiz-adv-x="425" d="M92 112.5q0 51.5 35 86t85 34.5t87 -35.5t37 -85t-36 -85t-87 -35.5t-86 34.5t-35 86z" />
+<glyph unicode="/" horiz-adv-x="944" d="M45 27l672 1386h184l-2 -29l-672 -1384h-176z" />
+<glyph unicode="0" horiz-adv-x="1193" d="M94 702q0 483 260 650q96 61 242 61q266 0 395 -221q109 -184 109 -490q0 -481 -262 -649q-96 -61 -242 -61q-266 0 -395 223q-107 182 -107 487zM309 702q0 -371 158 -493q53 -41 129 -41q145 0 221 156q68 139 68 378q0 373 -158 494q-55 41 -132 41t-131 -42t-87 -114 q-68 -141 -68 -379z" />
+<glyph unicode="1" horiz-adv-x="741" d="M51 1286l428 133l41 -18v-1239l191 -25v-137h-605l-22 135l231 35v1016l-233 -47z" />
+<glyph unicode="2" horiz-adv-x="1060" d="M45 1135q72 131 189.5 204.5t265.5 73.5q180 0 295 -86q131 -96 131 -283q0 -190 -226 -477q-119 -154 -212 -250t-132 -141h412l80 219h135l-43 -395h-834l-24 141q41 45 102.5 109.5t130 141.5t138 161t125.5 168q125 182 133 303v14q0 98 -68 154q-59 45 -131 45 q-102 0 -182 -53l-56 -172z" />
+<glyph unicode="3" horiz-adv-x="1071" d="M55 1139q72 131 196 202.5t296 71.5q162 0 280 -90q129 -100 129 -272q0 -117 -62.5 -202t-166.5 -122q92 -31 160 -106q86 -96 86 -212t-42 -193t-108 -126q-131 -98 -301 -98q-287 0 -456 139l108 164q150 -127 320 -127q135 0 199.5 63.5t64.5 140.5t-28 122t-75 75 q-86 55 -235 56h-105v176q213 0 308 41q119 53 118 196q0 100 -67 154q-59 47 -139 47t-124 -17.5t-73 -33.5l-76 -168z" />
+<glyph unicode="4" horiz-adv-x="1060" d="M4 557l590 858h221v-835h168v-177h-168v-235l166 -27v-139h-651v139l282 33v229h-540zM205 580h407v583z" />
+<glyph unicode="5" horiz-adv-x="1028" d="M39 133l100 158q133 -123 301 -123q131 0 219 86q86 82 86 213q0 164 -116 240q-94 61 -287 61q-94 0 -180 -12v592l65 65h654v-176h-525v-295h50q35 0 99 -3t150 -31.5t154 -84.5q152 -127 152 -342q0 -213 -160 -354q-156 -135 -373 -135q-125 0 -224.5 41t-164.5 100z " />
+<glyph unicode="6" horiz-adv-x="1140" d="M88 694q0 311 148 514q71 101 174.5 159t211 58t174 -21.5t115.5 -51.5q76 -47 131 -127l-194 -138l-103 146q-49 16 -107 16t-118.5 -37.5t-105.5 -105.5q-96 -141 -109 -344q47 53 126 93t179.5 40t182 -29.5t141.5 -87.5q127 -123 127 -327q0 -190 -123 -320 q-131 -139 -326 -139q-264 0 -407 227q-117 188 -117 475zM336 430q70 -262 266 -262q121 0 184 84q59 76 60 192q0 121 -70 199t-174 78q-113 0 -188 -84q-74 -82 -78 -207z" />
+<glyph unicode="7" horiz-adv-x="909" d="M55 989v424h807l37 -53l-428 -1360h-211l-10 55l448 1182h-462l-52 -248h-129z" />
+<glyph unicode="8" horiz-adv-x="1089" d="M84 377q0 242 250 381q-78 51 -132.5 125.5t-54.5 172t36 162t93 109.5q121 98 273 98q158 0 274 -90q125 -100 125 -254q0 -143 -125 -245q-35 -31 -73 -58q127 -76 170 -133q86 -111 86 -248q0 -176 -142 -295q-131 -113 -317 -112q-190 0 -322 96q-141 107 -141 291z M299 383q0 -104 86 -166q72 -51 143.5 -51t116.5 17.5t76 45.5q70 66 70 152q0 139 -185 233q-51 27 -108 56q-199 -109 -199 -287zM362 1100.5q0 -56.5 19.5 -91t50.5 -59.5q47 -39 150 -86q65 41 108 91.5t43 123t-51 121.5t-133 49t-134.5 -46t-52.5 -102.5z" />
+<glyph unicode="9" horiz-adv-x="1112" d="M86 133l115 160q143 -125 297 -125q274 0 303 446q-61 -59 -140 -85.5t-155 -26.5t-156 28.5t-137 83.5q-125 117 -125 324q0 203 117 340q125 143 344 143q248 0 371 -233q100 -190 100 -496q0 -293 -127 -487q-61 -96 -157.5 -154.5t-203 -58.5t-174 15.5t-120.5 37.5 q-74 31 -152 88zM303 956q0 -137 70 -211q64 -67 164 -67q43 0 86 15.5t77 45.5q80 72 88 176q-35 229 -153 304q-43 27 -100 26q-100 0 -166 -73.5t-66 -215.5z" />
+<glyph unicode=":" horiz-adv-x="481" d="M119 399.5q0 51.5 35.5 86t86 34.5t86 -35.5t35.5 -85t-35.5 -85t-86 -35.5t-86 34.5t-35.5 86zM119 884q0 50 35.5 86t86 36t86 -37t35.5 -87.5t-35.5 -85t-87 -34.5t-86 36t-34.5 86z" />
+<glyph unicode=";" horiz-adv-x="499" d="M90 -211l103 209l-54 235l215 39q23 -90 23 -156.5t-17.5 -130t-44.5 -116.5q-49 -100 -118 -170l-107 61v29zM117 679q0 50 35.5 86t86 36t86 -37t35.5 -87t-35.5 -85t-87 -35t-86 36t-34.5 86z" />
+<glyph unicode="&#x3c;" horiz-adv-x="866" d="M59 627v139l670 405v-192l-473 -285l473 -282v-199z" />
+<glyph unicode="=" horiz-adv-x="923" d="M125 475v156h674v-156h-674zM125 733v156h674v-156h-674z" />
+<glyph unicode="&#x3e;" horiz-adv-x="866" d="M137 213v199l473 282l-473 285v192l670 -405v-139z" />
+<glyph unicode="?" horiz-adv-x="835" d="M80 1028l35 326q174 61 282.5 61t177 -25.5t113.5 -68.5q88 -84 88 -215q0 -174 -129 -293q-39 -35 -78 -63l-75 -54q-94 -68 -103 -168q-2 -25 -2 -43l-162 -2l-4 21q-8 29 -8 89t25.5 105t64.5 80t84 65.5t84 65.5q90 78 90 181q0 61 -44 107t-130 46q-88 0 -129 -18 l-55 -197h-125zM193 113.5q0 50.5 34.5 85t84.5 34.5t87 -35.5t37 -85t-37 -85t-87 -35.5t-84.5 35.5t-34.5 86z" />
+<glyph unicode="@" horiz-adv-x="1701" d="M63 553q0 184 67 329.5t177 247.5q229 207 567 207q326 0 539 -207q102 -96 160.5 -229t58.5 -261t-27.5 -221t-78.5 -165q-113 -156 -289 -156q-119 0 -174 64q-98 -63 -221 -64q-166 0 -275 103q-121 115 -121 319q0 231 152 348q117 88 272 88q109 0 203 -45l74 29 l55 -18v-586q0 -43 16.5 -55.5t43 -12.5t59.5 24.5t59 72.5q59 102 59.5 235t-38.5 234.5t-111 173.5q-156 156 -413 155q-266 0 -443 -172q-176 -172 -176 -442q0 -313 184 -486q168 -159 455 -159q143 0 240 39l37 -9l-58 -176q-100 -31 -261 -30.5t-307.5 56.5 t-252.5 163q-231 225 -232 606zM643 528q0 -141 74 -217q59 -61 176 -61q61 0 119 47q-2 20 -2 39v440q-61 31 -118.5 31t-100.5 -16.5t-76 -49.5q-72 -76 -72 -213z" />
+<glyph unicode="A" horiz-adv-x="1245" d="M-2 127l106 37l414 1251h197l436 -1251l94 -37l-22 -127h-482v121l181 43l-99 303h-438l-94 -303l176 -41v-123h-442zM438 643h328l-168 514z" />
+<glyph unicode="B" horiz-adv-x="1181" d="M94 1262v153h473q221 0 353 -104q124 -99 124 -264q0 -120 -65 -211q-59 -84 -145 -111q111 -23 186 -102q82 -86 82 -213t-44 -205t-116 -123q-123 -82 -332 -82h-489l-21 143l125 29v1077zM430 176h160q201 0 270 115q27 45 27 110.5t-25.5 108.5t-68.5 68 q-80 45 -207 45h-156v-447zM430 799h90q158 0 233.5 54t75.5 171q0 215 -274 215h-125v-440z" />
+<glyph unicode="C" horiz-adv-x="1191" d="M70 692q0 340 209 541q190 182 483 182q131 0 303 -39l39 -372h-139l-80 221q-39 14 -135.5 14t-185.5 -43t-150 -115q-129 -152 -129 -368q0 -236 141 -389q143 -156 381 -156q88 0 161.5 26.5t106.5 51.5l60 -162q-129 -92 -363 -92q-283 0 -483 180q-219 199 -219 520 z" />
+<glyph unicode="D" horiz-adv-x="1296" d="M100 145l125 29v1077l-123 13v151h387q334 0 531 -178q203 -182 203 -520t-195 -529q-193 -188 -530 -188h-377zM428 176l16 -2q563 0 564 545q0 246 -148 387q-143 135 -383 135l-49 -2v-1063z" />
+<glyph unicode="E" horiz-adv-x="1103" d="M98 145l125 27v1079l-123 11v153h873l41 -385h-129l-78 209h-381v-430h324v-176h-324v-457h401l72 207h129l-41 -383h-868z" />
+<glyph unicode="F" horiz-adv-x="1046" d="M98 145l125 27v1079l-123 11v153h873l43 -385h-127l-82 209h-381v-430h324v-176h-324v-453l332 -47l-13 -133h-626z" />
+<glyph unicode="G" horiz-adv-x="1259" d="M68 690q0 328 198 527q198 198 511 198h3q154 0 320 -43l30 -371h-149l-74 228q-61 10 -151 10t-180.5 -41t-153.5 -113q-139 -158 -139 -389q0 -240 147 -383q150 -145 399 -145q70 0 111 8l2 301l-233 29l36 145h400v-622q-147 -37 -321.5 -37t-308.5 47t-234 137 q-213 190 -213 514z" />
+<glyph unicode="H" horiz-adv-x="1376" d="M100 147l123 23v1079l-123 11v155h430l21 -153l-123 -21v-424h520v432l-117 11v155h424l21 -153l-123 -21v-1075l123 -16v-150h-424l-21 147l117 23v471h-520v-475l125 -16v-150h-432z" />
+<glyph unicode="I" horiz-adv-x="653" d="M94 147l129 23v1079l-129 11v155h447l20 -153l-133 -21v-1075l133 -16v-150h-448z" />
+<glyph unicode="J" horiz-adv-x="751" d="M16 96l109 162q90 -84 149 -84q76 0 76 113v954l-157 21l20 153h469v-155l-127 -11v-944q0 -182 -109 -262q-70 -51 -161 -51q-160 0 -269 104z" />
+<glyph unicode="K" horiz-adv-x="1255" d="M94 147l129 23v1079l-129 8v158h438l19 -151l-123 -23v-577l477 581l-145 23v147h452v-149l-67 -15l-393 -473l354 -612l113 -21v-145h-285l-324 608l-182 -219v-223l125 -16v-150h-440z" />
+<glyph unicode="L" horiz-adv-x="1046" d="M98 145l125 23v1083l-123 11v153h441l18 -151l-133 -23v-1065h401l72 207h129l-41 -383h-868z" />
+<glyph unicode="M" horiz-adv-x="1748" d="M92 145l129 27v1075l-102 10v158h422l331 -1147l345 1147h399l20 -158l-106 -16v-1075l112 -23l-8 -143h-397l-16 147l118 27v1053l-362 -1196h-236l-350 1206v-1069l121 -23v-145h-395z" />
+<glyph unicode="N" horiz-adv-x="1425" d="M96 145l129 27v1075l-123 13v155h428l517 -1218v1050l-127 17v151h403l27 -153l-131 -25v-1237h-304l-518 1221v-891l2 -146q0 -12 2 -18l117 -21v-145h-397z" />
+<glyph unicode="O" d="M88 705q0 303 143 499q156 213 435 213t436 -213q145 -199 145 -499q0 -301 -145 -500q-157 -213 -436 -213t-435 213q-143 197 -143 500zM303 700q0 -221 90 -370q96 -162 273 -162q178 0 276 162q90 147 90 370q0 225 -90 377q-100 164 -276 164t-273 -164 q-90 -152 -90 -377z" />
+<glyph unicode="P" horiz-adv-x="1132" d="M94 143l131 29v1077l-129 11v155h432q285 0 430 -129q131 -119 132 -323q0 -240 -162 -359q-143 -104 -404 -104h-94v-322q51 -10 297 -41l-6 -137h-606zM430 676h86q188 0 279 86q79 76 79 203q0 274 -372 274h-72v-563z" />
+<glyph unicode="Q" d="M88 705q0 303 143 499q156 213 435 213t436 -213q145 -199 145 -499q0 -301 -145 -500q-157 -213 -436 -213t-435 213q-143 197 -143 500zM303 700q0 -221 90 -370q96 -162 273 -162q178 0 276 162q90 147 90 370q0 225 -90 377q-100 164 -276 164t-273 -164 q-90 -152 -90 -377zM530 -131l80 86l430 -154l13 -67l-183 -162q-88 72 -171 146.5t-169 150.5z" />
+<glyph unicode="R" horiz-adv-x="1196" d="M94 143l131 29v1077l-129 11v155h432q285 0 430 -129q131 -119 132 -323q0 -141 -72 -239.5t-195 -150.5l199 -407l117 -25v-141h-285l-229 524q-49 -6 -101 -6h-94v-348l162 -29v-141h-477zM430 694h86q182 0 279 88q79 70 79 183q0 274 -372 274h-72v-545z" />
+<glyph unicode="S" horiz-adv-x="1038" d="M96 1035.5q0 99.5 36 167t97 114.5q129 98 316 98q180 0 346 -61l29 -353h-142l-90 222q-61 20 -154.5 20t-158 -43t-64.5 -131q0 -102 103 -168q45 -31 100 -54.5t128 -56t136.5 -77.5t102.5 -95q74 -91 74 -209q0 -119 -41 -197q-40 -77 -107 -126q-127 -94 -336 -94 t-365 78l15 346h143l37 -219q88 -33 176 -33q176 0 242 115q23 38 23 98q0 63 -38 115q-38 50 -125 93.5t-172 78t-154 83t-113 119t-44 170z" />
+<glyph unicode="T" horiz-adv-x="1187" d="M29 1036l43 379h1044l45 -379h-125l-86 203h-256v-1063l238 -41l-19 -135h-630l-27 135l233 41v1063h-251l-84 -203h-125z" />
+<glyph unicode="U" horiz-adv-x="1325" d="M61 1262v153h474v-151l-142 -19v-768q0 -145 72 -227t219 -82q190 0 258 164q25 59 25 147v768l-125 19v149h413v-151l-116 -21v-772q0 -238 -144 -365q-124 -114 -314 -114h-3q-236 0 -363 126t-127 353v778z" />
+<glyph unicode="V" horiz-adv-x="1185" d="M14 1276v139h463l17 -127l-187 -39l301 -930l305 934l-184 35v127h449v-139l-78 -27l-414 -1249h-188l-410 1249z" />
+<glyph unicode="W" horiz-adv-x="1830" d="M31 1274v141h440l18 -127l-149 -33l186 -1024l305 1147h205l307 -1155l193 1037l-168 30l12 125h441v-139l-121 -39l-242 -1237h-270l-275 1047l-276 -1047h-272l-232 1243z" />
+<glyph unicode="X" horiz-adv-x="1175" d="M41 0v127l90 14l334 545l-338 561l-86 25v143h457l16 -125l-145 -30l239 -392l230 389l-121 29v129h416v-149l-89 -15l-333 -549l331 -542l91 -25v-135h-463v127l129 10l-232 383l-225 -385l115 -14v-121h-416z" />
+<glyph unicode="Y" horiz-adv-x="1153" d="M8 1262v153h436l15 -135l-131 -25l278 -512l250 514l-117 23v135h400v-153l-88 -21l-369 -737v-334l238 -41l-21 -129h-635l-20 129l235 41v346l-389 727z" />
+<glyph unicode="Z" horiz-adv-x="1132" d="M76 158l727 1081h-531l-41 -219h-129v395h906l24 -190q-66 -100 -151.5 -233.5t-179 -276t-186.5 -282.5t-169 -257h522l39 217h131v-393h-929z" />
+<glyph unicode="[" horiz-adv-x="657" d="M160 -338v1751l16 25h475q12 0 13 -15v-137h-310v-1501h310v-135q0 -16 -13 -17h-469z" />
+<glyph unicode="\" horiz-adv-x="942" d="M43 1391v24h182l674 -1388l-16 -27h-166z" />
+<glyph unicode="]" horiz-adv-x="657" d="M-6 -215h309v1501h-309v137q0 14 12 15h475l17 -25v-1751l-23 -29h-469q-12 0 -12 17v135z" />
+<glyph unicode="^" horiz-adv-x="907" d="M106 1151l322 332h53l320 -334l-4 -10h-166l-178 121l-177 -121h-163z" />
+<glyph unicode="_" horiz-adv-x="1153" d="M10 -27l29 27h1091q12 0 13 -14v-140h-1133v127z" />
+<glyph unicode="`" horiz-adv-x="618" d="M106 1294l123 146l64 -17l219 -323l-76 -76z" />
+<glyph unicode="a" horiz-adv-x="942" d="M74 253.5q0 108.5 44 172t115 100.5q125 63 367 68v145q0 41 -38 75t-118 34q-76 0 -112 -33l-41 -133l-215 63q47 170 231 230q66 20 148 20q160 0 244.5 -79.5t84.5 -208.5v-525q0 -43 29 -43q14 0 43 15l45 -109q-63 -53 -141 -53q-117 0 -148 92q-90 -94 -229 -94 t-224 77.5t-85 186zM268 283.5q0 -50.5 15.5 -76t38 -40.5t47 -20.5t55.5 -5.5t62.5 13.5t54.5 31.5q43 33 59 82v176q-135 0 -198.5 -21.5t-98.5 -55t-35 -84z" />
+<glyph unicode="b" horiz-adv-x="1003" d="M4 1458l260 39l62 -65v-492q86 55 188 55t176 -34.5t127 -98.5q113 -135 113 -356q0 -279 -152 -412q-117 -102 -286 -102q-113 0 -197 47q-98 -49 -107 -51l-47 28v1327l-118 -8zM326 199q16 -20 62 -37t91 -17t88 15.5t80 56.5q88 90 88 277q0 176 -76 266 q-65 80 -167 80q-49 0 -95.5 -19.5t-70.5 -48.5v-573z" />
+<glyph unicode="c" horiz-adv-x="884" d="M74 477q0 268 143 408q114 110 294 110h3q133 0 231 -69q80 -55 107 -117l-203 -96l-65 118q-41 10 -68 11q-248 0 -248 -361q0 -154 75 -245t198 -91q57 0 120.5 21.5t104.5 62.5l45 -143q-123 -94 -299 -94q-184 0 -303 119q-135 131 -135 366z" />
+<glyph unicode="d" horiz-adv-x="1028" d="M74 481q0 279 151 412q117 102 287 102q86 0 164 -32v380l-117 -8l-18 123l256 43l63 -69v-1250q0 -43 29 -43q14 0 43 15l45 -109q-63 -53 -153 -53q-1 0 -2 -1q-89 0 -124 68q-95 -68 -202 -68l-2 1q-108 0 -181 34.5t-127 98.5q-113 135 -112 356zM268 494 q0 -176 76 -267q66 -80 168.5 -80t163.5 66v578q-18 18 -62.5 34.5t-89.5 16.5t-88 -15.5t-80 -56.5q-88 -90 -88 -276z" />
+<glyph unicode="e" horiz-adv-x="909" d="M108 706q36 96 99 158q123 131 307 131q135 0 227 -71q95 -76 95 -199q0 -63 -21.5 -123.5t-83.5 -109.5q-139 -111 -455 -115q33 -162 166 -213q46 -18 102 -18q3 0 6 -1q52 -1 89 9q39 10 68 22q55 27 77 49l45 -143q-23 -23 -75 -45q-112 -46 -221 -46q-91 0 -181 32 q-178 63 -246 247q-35 91 -35 213q0 126 37 223zM266 528q150 0 223.5 23.5t112.5 61.5t39 95.5t-30.5 94.5t-89 37t-98.5 -18.5t-73 -55.5q-72 -84 -84 -238z" />
+<glyph unicode="f" horiz-adv-x="690" d="M35 975l14 20h154v187q0 156 84 239q74 74 196 74q141 0 262 -86q25 -16 31 -23l-145 -169l-131 120q-12 4 -29 4q-82 0 -82 -135v-211h232q10 0 10 -12v-141h-242v-697l234 -34v-111h-512l-25 111l117 24v707h-140z" />
+<glyph unicode="g" horiz-adv-x="999" d="M37 -258q0 193 170 276q-49 41 -49 130t80 169q-158 104 -158 301q0 164 113 271q109 106 265 106t267 -90l203 103l43 -7l20 -170l-184 -22q49 -90 49 -185.5t-34 -163t-89 -112.5q-109 -90 -266 -90q-51 0 -90 8l-51 -80l8 -34q20 -4 87.5 -13.5t156 -30t151 -52 t98.5 -68.5q62 -69 62 -173q0 -101 -37 -169q-37 -70 -96 -117q-121 -92 -295 -92q-184 0 -299 78q-125 84 -125 227zM217 -229q0 -68 76 -113q70 -41 180 -41q109 0 182 47q78 47 78 111.5t-56 90t-157.5 47t-157.5 38.5q-145 -59 -145 -180zM274 644q0 -75 16.5 -116 t43.5 -65q51 -51 134 -51t138.5 55t55.5 160q0 104 -58.5 159.5t-136.5 55.5h-8q-84 -4 -134.5 -63.5t-50.5 -134.5z" />
+<glyph unicode="h" horiz-adv-x="1067" d="M37 1458l256 43l63 -69v-510q101 73 238 73h4q213 0 279 -155q24 -51 24 -125v-6v-566l123 -32v-111h-408l-24 111l125 28v539q0 92 -43 126t-91 34t-80 -8.5t-61 -20.5q-57 -25 -86 -53v-613l121 -32v-111h-407l-25 111l127 28v1204l-117 -8z" />
+<glyph unicode="i" horiz-adv-x="548" d="M59 950l252 45l66 -65v-787l121 -32v-111h-410l-22 111l127 28v697l-113 -9zM127 1364q0 53 37 90t90 37t90 -39t37 -90t-37 -88t-90 -37t-90 37t-37 90z" />
+<glyph unicode="j" horiz-adv-x="497" d="M-76 -504l78 150q14 -10 39.5 -28.5t60.5 -18.5q72 0 72 125v1112l-108 -9l-19 123l248 45l63 -65v-1184q0 -162 -66.5 -232.5t-178.5 -70.5q-104 0 -189 53zM106 1364q0 53 37 90t90 37t90 -39t37 -90t-36.5 -88t-91 -37t-90.5 37t-36 90z" />
+<glyph unicode="k" horiz-adv-x="993" d="M37 1458l256 43l63 -69v-891l314 325h-101l-16 129h326l49 -94l-318 -307l236 -455l108 -24v-115h-256l-233 453l-109 -105v-213l121 -24v-111h-407l-25 111l127 28v1204l-117 -8z" />
+<glyph unicode="l" horiz-adv-x="532" d="M35 1458l256 43l65 -69v-1289l129 -32v-111h-417l-25 111l129 28v1204l-117 -8z" />
+<glyph unicode="m" horiz-adv-x="1632" d="M59 950q27 4 62 11.5t69.5 13.5t67.5 11t53 9l60 -75q97 76 254 76h3q158 0 234 -99q133 98 299 98q213 0 283 -155q24 -51 24 -125v-6v-566l121 -32v-111h-409l-23 111l127 28v539q0 86 -51 127q-43 33 -108.5 33t-122 -25t-84.5 -49v-21l2 -59v-541l122 -32v-111h-407 l-25 111l125 28v539q0 92 -43 126t-106.5 34t-123 -27t-85.5 -53v-615l119 -32v-111h-408l-25 111l130 28v697l-113 -9z" />
+<glyph unicode="n" horiz-adv-x="1085" d="M59 950q27 4 62 11.5t69.5 13.5t67.5 11t53 9l60 -75q97 75 241 75h4q213 0 281 -155q23 -53 23 -131v-564l122 -34v-111h-407l-25 111l125 28v539q0 92 -43 126t-106.5 34t-123 -27t-85.5 -53v-615l119 -32v-111h-408l-25 111l130 28v697l-113 -9z" />
+<glyph unicode="o" horiz-adv-x="1013" d="M74 502q0 119 34.5 211t96.5 155q119 127 303 127q188 0 311 -135t123 -362q0 -238 -131 -375q-121 -131 -303 -131q-190 0 -311 139q-123 138 -123 371zM268 478q0 -163 66 -248t172 -85t174 83t68 253t-65 265.5t-175 95.5q-117 0 -180 -101q-60 -96 -60 -263z" />
+<glyph unicode="p" horiz-adv-x="1034" d="M39 952l256 43l55 -59q92 59 194.5 59t176.5 -34.5t127 -98.5q113 -135 113 -356q0 -279 -152 -412q-117 -102 -287 -102q-94 0 -164 31v-431l250 -45v-108h-536l-25 108l127 31v1260l-117 -9zM358 197q18 -20 62.5 -36t89.5 -16t88 15.5t82 56.5q86 90 86 277 q0 176 -74 266q-68 80 -168 80t-166 -66v-577z" />
+<glyph unicode="q" horiz-adv-x="1001" d="M74 481q0 279 151 412q117 102 287 102q102 0 184 -41l117 43l47 -39v-1331l113 -39v-149h-527l-22 129l252 49v428q-82 -53 -185.5 -53t-177 34.5t-127.5 98.5q-113 135 -112 356zM268 494q0 -176 76 -267q66 -80 168.5 -80t163.5 66v578q-18 18 -62.5 34.5t-89.5 16.5 t-88 -15.5t-80 -56.5q-88 -90 -88 -276z" />
+<glyph unicode="r" horiz-adv-x="829" d="M59 950q115 18 242 43l64 -94q82 94 213 94q90 0 152.5 -45t92.5 -110l-202 -103l-64 99q-70 0 -125 -60q-57 -59 -57 -158v-442q0 -8 35 -14l231 -49v-111h-553l-25 111l127 28v690h-112z" />
+<glyph unicode="s" horiz-adv-x="827" d="M49 207l211 80l49 -119q47 -20 87 -20q3 0 6 -1q36 1 58 7q24 6 46 18q47 31 47 90q0 76 -93 116t-160 72.5t-112 69.5q-92 78 -92 205q0 125 101 201q94 69 225 69q66 0 121 -18.5t96 -46.5q78 -53 121 -137l-209 -80l-47 104q-41 21 -88 21h-2q-46 0 -84 -28 q-39 -28 -39 -81t51 -87t141 -70.5t138.5 -69.5t74.5 -70q52 -69 52 -153q0 -81 -31 -133q-31 -54 -80 -89q-95 -65 -230 -65h-4q-115 0 -223 63q-100 61 -131 152z" />
+<glyph unicode="t" horiz-adv-x="665" d="M8 975l15 20h182v342l164 39l10 -30v-351h213q10 0 10 -12v-141h-223v-588q0 -66 19.5 -85t49 -19t50 6t39.5 16q38 17 61 35q4 -14 43 -135q-29 -27 -84 -53.5t-143 -26.5t-148.5 53t-60.5 174v623h-168z" />
+<glyph unicode="u" horiz-adv-x="1044" d="M25 950l254 45l63 -67v-555q0 -193 113 -217q31 -8 58.5 -8t55 7t54.5 21q59 33 77 80v575h-106l-19 119l250 47l60 -69v-723q0 -68 37 -68l36 4l29 -92q-57 -57 -133 -57q-106 0 -139 92q-96 -92 -230 -92q-225 0 -301 184q-26 61 -26 148v6v501h-113z" />
+<glyph unicode="v" horiz-adv-x="956" d="M0 977l248 18l260 -755l252 620h-111l-14 117l248 18l65 -77l-381 -928h-161l-310 870h-80z" />
+<glyph unicode="w" horiz-adv-x="1441" d="M10 979l273 20l159 -784l193 758h223l209 -760l158 639h-92l-15 127l228 18l45 -71l-224 -932h-241l-195 731l-188 -731h-244l-184 858h-90z" />
+<glyph unicode="x" horiz-adv-x="950" d="M57 129h86l213 367l-215 364h-84v135h230l217 -360l196 360h185v-129h-78l-219 -372l217 -361h88v-133h-240l-207 346l-198 -346h-182z" />
+<glyph unicode="y" horiz-adv-x="983" d="M2 979l254 16l276 -829l259 686h-107l-14 125l248 18l53 -69q-184 -522 -329.5 -896t-169 -422t-54.5 -87q-72 -84 -185 -84q-90 0 -182 82l76 141q57 -70 121 -70q66 0 112 123q14 35 27 66l45 121l-332 952h-82z" />
+<glyph unicode="z" horiz-adv-x="866" d="M88 0v158l469 682q-160 4 -321 4l-29 -160h-119v311h690v-159l-471 -682h326l29 168h116v-322h-690z" />
+<glyph unicode="{" horiz-adv-x="690" d="M14 477v170q98 0 163 57.5t65 167.5l-2 78l-2 92q0 205 53 293q66 111 252 111q53 0 101 -9.5t50 -10.5t6 -1l-61 -196l-145 49q-63 -35 -64 -201l2 -205q0 -297 -215 -313q215 -8 215 -311l-2 -180q0 -143 29 -197q12 -23 35 -33l145 49l61 -196q-121 -23 -157 -23 q-182 0 -254 127q-51 90 -51 283l4 198q0 141 -142 187q-41 14 -86 14z" />
+<glyph unicode="|" horiz-adv-x="505" d="M160 -438v1859h186v-1859h-186z" />
+<glyph unicode="}" horiz-adv-x="690" d="M-10 -309l61 196l146 -49q63 29 63 230l-2 180q0 305 217 317q-217 0 -217 307l2 205q0 166 -63 201l-146 -49l-61 196q123 20 190.5 20.5t127 -28t91.5 -82.5q53 -86 54 -293l-2 -92l-2 -78q0 -111 64.5 -168t162.5 -57v-170q-92 0 -160 -51q-68 -53 -67 -150l4 -198 q0 -193 -52 -283q-72 -127 -254 -127q-43 0 -83.5 8.5t-73.5 14.5z" />
+<glyph unicode="~" horiz-adv-x="839" d="M51 1186l2 26q35 74 76 107q80 63 164 63q70 0 158 -47l63 -30q29 -14 53 -15l113 101l121 -140q-109 -121 -213 -121q-55 0 -116.5 29t-96.5 42t-80 13t-77 -31.5t-46 -68.5z" />
+<glyph unicode="&#xa1;" horiz-adv-x="520" d="M121 -387l65 901h142l75 -850l-43 -78zM137 887q0 51 35 86t85 35t87 -36t37 -85t-37 -85t-87 -36t-85 35t-35 86z" />
+<glyph unicode="&#xa2;" horiz-adv-x="894" d="M63 477q0 233 105 367q92 115 242 141v420h184v-420q96 -18 168 -80q47 -39 80 -96l-203 -96l-66 118q-41 10 -67 11q-248 0 -248 -361q0 -154 75 -245t197 -91q57 0 121 21.5t105 62.5l45 -143q-90 -68 -207 -86v-430h-184v430q-150 31 -242 145q-104 127 -105 332z" />
+<glyph unicode="&#xa3;" horiz-adv-x="1079" d="M61 42q0 32 21.5 78t64.5 83q82 82 114 213t40 276h-182v135l16 19h172l-4 192q0 289 205 355q59 20 123.5 20t115 -12t91.5 -29q66 -29 114 -65l-145 -187l-164 140q-96 -4 -125 -82q-18 -49 -18 -226v-106h286q14 0 15 -17v-137h-307q-14 -276 -82 -413q113 -8 315 -82 q39 -14 61 -15l156 105l80 -217q-72 -78 -231 -78q-100 0 -197.5 31.5t-145 46t-102.5 14.5t-89 -28.5t-44 -61.5h-149q-2 4 -3 10q-2 6 -2 38z" />
+<glyph unicode="&#xa4;" horiz-adv-x="1232" d="M104 317l138 138q-78 113 -78 254q0 143 82 260l-142 143l142 145l153 -153q98 55 216 55t216 -57l156 155l143 -145l-147 -145q82 -117 82 -258q0 -139 -78 -252l143 -140l-143 -145l-149 147q-102 -59 -222 -59t-223 57l-147 -145zM358 709q0 -113 72 -186.5t184 -73.5 q113 0 184.5 73.5t71.5 186.5t-71.5 186.5t-184.5 73.5t-184.5 -73.5t-71.5 -186.5z" />
+<glyph unicode="&#xa5;" horiz-adv-x="1249" d="M51 1266v149h424l14 -129l-124 -26l284 -451l281 453l-121 22v131h389v-149l-78 -21l-385 -612h223v-158h-225v-43h225v-158h-225v-104l234 -41l-17 -129h-631l-18 129l227 41v104h-243v158h243v43h-243v158h229l-381 614z" />
+<glyph unicode="&#xa6;" horiz-adv-x="528" d="M166 -381v778h196v-778h-196zM166 635v778h196v-778h-196z" />
+<glyph unicode="&#xa7;" horiz-adv-x="1030" d="M98 -254l17 346h139l29 -231q98 -29 165.5 -29t110.5 9t76 32q76 47 76 122t-44 118t-112 78.5t-144.5 69.5t-144.5 79q-156 100 -156 244.5t113 246.5q-117 98 -117 240q0 147 119 244q123 100 305 100q176 0 357 -61l26 -353h-141l-88 232q-57 20 -150.5 20t-154 -45 t-60.5 -104.5t32 -96t80 -66.5t104.5 -52.5t123 -55t124 -72.5t91.5 -81q66 -80 66 -197.5t-111 -228.5q94 -90 95 -219q0 -178 -142 -279q-125 -86 -321 -86q-113 0 -196 21.5t-167 54.5zM324 622.5q0 -63.5 61 -106.5t131 -74q117 -55 162 -80q47 63 47 110.5t-31.5 83.5 t-82 65.5t-113 57.5t-123.5 58q-51 -51 -51 -114.5z" />
+<glyph unicode="&#xa8;" horiz-adv-x="790" d="M106 1246q0 48 34 85t84 37t86 -37t36 -86t-37 -84t-85 -35t-83 36t-35 84zM442 1247q0 47 36 84t86 37t85 -37t35 -85t-36 -84t-84 -36t-85 37t-37 84z" />
+<glyph unicode="&#xa9;" horiz-adv-x="1466" d="M66 765q0 138 52 260t142 213t212 143.5t260 52.5t260 -52.5t213 -143.5t143.5 -213t52.5 -260t-52.5 -260t-143.5 -212t-213 -142.5t-260 -52.5t-260 52.5t-212 142.5t-142 212t-52 260zM246 766q0 -102 38 -190.5t105 -153.5q141 -143 344 -143t345.5 142t142.5 345 t-142.5 345t-345.5 142t-345 -142t-142 -345zM375 752q0 182 112 290q106 104 273 105q57 0 94 -4l53 -10l19 -248h-97l-28 104l-37 2q-104 0 -168 -57t-64 -166t61.5 -173.5t153 -64.5t164.5 45l54 -133q-98 -63 -192.5 -63t-164 26.5t-121.5 73.5q-113 104 -112 273z" />
+<glyph unicode="&#xaa;" horiz-adv-x="700" d="M78 1019.5q0 67.5 27.5 106.5t72.5 60q76 35 219 35v18q0 47 -23.5 61.5t-45.5 14.5q-31 0 -62 -6l-8 -49l-178 34q18 78 92 123q63 37 150.5 37t137.5 -27.5t72.5 -74.5t26.5 -110.5t4 -138.5t3 -93.5t14 -18.5l26 6l31 -94q-59 -45 -121.5 -45t-93.5 49 q-53 -53 -143.5 -53t-145.5 49t-55 116.5zM242 1038q0 -20 13 -39.5t50 -19.5q70 0 92 51v88q-156 0 -155 -80z" />
+<glyph unicode="&#xab;" horiz-adv-x="944" d="M12 694l437 439l110 -111l-330 -330l330 -332l-110 -108zM360 694l394 396l110 -111l-286 -287l286 -289l-110 -108z" />
+<glyph unicode="&#xac;" horiz-adv-x="1204" d="M100 778v131l23 23h928l22 -23v-413q0 -14 -16 -15h-144v297h-813z" />
+<glyph unicode="&#xad;" horiz-adv-x="825" d="M-57 639v176h938v-176h-938z" />
+<glyph unicode="&#xae;" horiz-adv-x="1466" d="M66 765q0 138 52 260t142 213t212 143.5t260 52.5t260 -52.5t213 -143.5t143.5 -213t52.5 -260t-52.5 -260t-143.5 -212t-213 -142.5t-260 -52.5t-260 52.5t-212 142.5t-142 212t-52 260zM246 766q0 -102 38 -190.5t105 -153.5q141 -143 344 -143t345.5 142t142.5 345 t-142.5 345t-345.5 142t-345 -142t-142 -345zM467 1026v119h205q174 0 262 -74q80 -65 80 -178q0 -147 -133 -211l94 -172l63 -12v-103h-180l-117 252q-23 -4 -43 -4h-41v-131l95 -23v-94h-275l-8 99l47 16v506zM657 776h29q178 0 178 116t-170 116h-37v-232z" />
+<glyph unicode="&#xaf;" horiz-adv-x="905" d="M117 1257v156h671v-156h-671z" />
+<glyph unicode="&#xb0;" horiz-adv-x="624" d="M68 1220.5q0 118.5 63 194.5q66 78 180 78q113 0 181 -78q66 -78 65.5 -195.5t-65 -194.5t-182 -77t-180 77t-62.5 195.5zM229 1221q0 -82 41 -119q14 -14 40 -14.5t41.5 13t25.5 34.5q18 37 18 86q0 78 -43 114q-16 14 -41.5 14.5t-41 -13t-23.5 -33.5q-17 -35 -17 -82z " />
+<glyph unicode="&#xb1;" horiz-adv-x="931" d="M129 346v156h674v-156h-674zM129 842v155h258v240h156v-240h260v-155h-260v-264h-156v264h-258z" />
+<glyph unicode="&#xb2;" horiz-adv-x="614" d="M72 1286q29 86 96.5 126t123.5 40t92 -11t65 -34q66 -51 65.5 -123t-25 -119t-58.5 -82.5t-69.5 -62.5t-56.5 -45h107l30 69h86l-22 -188h-391l-21 88l72 64q131 121 158.5 169.5t27.5 79.5q0 68 -67 68q-23 0 -43 -8l-31 -74z" />
+<glyph unicode="&#xb3;" horiz-adv-x="604" d="M72 934l63 108q35 -29 68 -50t78 -21t66.5 21.5t21.5 56.5q0 59 -146 59v98q125 0 125 72q0 16 -14.5 32.5t-34.5 16.5q-53 0 -57 -10l-29 -62l-135 45q59 152 233 152q72 0 115 -31q82 -59 82 -127q0 -106 -100 -129q45 -10 82.5 -40.5t37.5 -87t-20.5 -90.5t-52.5 -56 q-66 -43 -154 -43q-143 0 -229 86z" />
+<glyph unicode="&#xb4;" horiz-adv-x="641" d="M106 1124l238 310l66 16l125 -166l-345 -250z" />
+<glyph unicode="&#xb6;" horiz-adv-x="1196" d="M57 1024q0 154 95 258q123 133 354 133h575v-164h-98v-1251h-174v1251h-92v-979l-2 -67q0 -82 -187 -232l-135 185l139 88v366q-225 10 -350 121t-125 291z" />
+<glyph unicode="&#xb7;" horiz-adv-x="485" d="M121 489v328h219l27 -31l-2 -297h-244z" />
+<glyph unicode="&#xb8;" horiz-adv-x="831" d="M147 -510l89 176l145 -96q78 0 117 55q14 20 14 58t-37 73t-125 35l-26 2l-35 39l71 199h203l-47 -119q76 -20 132.5 -74.5t56.5 -158t-83 -174t-229 -70.5q-147 0 -246 55z" />
+<glyph unicode="&#xb9;" horiz-adv-x="485" d="M70 1399l241 69l23 -32v-478l74 -16v-86h-302l-6 82l78 14v367l-90 -16z" />
+<glyph unicode="&#xba;" horiz-adv-x="684" d="M70 1152q0 77 21.5 134t58.5 94q74 76 192 76q121 0 195 -76q78 -82 77 -227q0 -221 -163 -285q-51 -20 -109 -20q-186 0 -252 170q-20 57 -20 134zM233 1146.5q0 -65.5 28 -106.5t81 -41t82 40t29 107.5t-28 112t-82 44.5t-82 -45.5t-28 -111z" />
+<glyph unicode="&#xbb;" horiz-adv-x="946" d="M82 403l285 289l-285 287l111 111l393 -400l-393 -395zM387 1022l113 111l436 -443l-436 -438l-111 108l328 330z" />
+<glyph unicode="&#xbc;" horiz-adv-x="1343" d="M63 1362l273 78l24 -17v-114q0 -12 -2 -25v-524q0 -18 74 -19v-96h-338v92l92 15v522l-106 -17zM193 4l684 1411h182l-2 -29l-682 -1409l-176 23zM686 221v150l318 420h180v-435h96v-135h-96v-108l86 -13v-100h-422l-8 90l172 25v106h-326zM827 356h185v238z" />
+<glyph unicode="&#xbd;" horiz-adv-x="1435" d="M68 1362l272 78l25 -17v-114q0 -12 -3 -25v-524q0 -18 74 -19v-96h-338v92l92 15v522l-106 -17zM197 4l684 1411h182l-2 -29l-682 -1409l-176 23zM776 608q45 92 110.5 139.5t151.5 47.5t135.5 -18.5t79.5 -51.5q63 -63 64 -164q0 -141 -154 -311q-43 -49 -84 -94 l-20 -23h182l43 115h92l-26 -248h-514l-27 100q37 39 93 93.5t110 117.5q127 156 127 264q0 47 -29 63.5t-53 16.5q-27 0 -58 -12l-49 -117z" />
+<glyph unicode="&#xbe;" horiz-adv-x="1445" d="M59 1251q45 121 187 168q49 16 105.5 16.5t103.5 -13t82 -38.5q78 -55 77 -159q0 -61 -32.5 -109.5t-92.5 -66.5q66 -18 102 -63.5t36 -108.5q0 -119 -97 -185q-84 -59 -186 -59q-166 0 -262 72l111 114q59 -47 133 -47t112 55q13 18 13 47q0 113 -172 113h-27v119h27 q80 0 108 14q57 29 57 79t-36.5 73.5t-69.5 23.5q-35 0 -76 -16l-47 -100zM305 4l682 1411h184l-2 -29l-682 -1409l-176 23zM784 221v150l318 420h180v-435h96v-135h-96v-108l86 -13v-100h-422l-8 90l172 25v106h-326zM926 356h184v238z" />
+<glyph unicode="&#xbf;" horiz-adv-x="800" d="M47 -126q0 128 57.5 212t144.5 148.5t135 116.5t48 130v25l162 2l4 -21q6 -31 6 -88t-25.5 -106t-63.5 -87t-82 -67.5t-81 -64.5q-90 -78 -90 -172q0 -98 86 -140q31 -14 70 -14q84 0 135 19l53 194h125l-35 -323q-66 -23 -136.5 -41.5t-160.5 -18.5q-170 0 -261 84 t-91 212zM385 876.5q0 51.5 35 86t86 34.5t87 -35.5t36 -86t-37 -85t-88 -34.5t-85 34.5t-34 86z" />
+<glyph unicode="&#xc0;" horiz-adv-x="1245" d="M-2 127l106 37l414 1251h197l436 -1251l94 -37l-22 -127h-482v121l181 43l-99 307h-438l-94 -307l176 -41v-123h-442zM387 1726l115 168l69 -12l287 -317l-76 -90zM438 643h328l-168 514z" />
+<glyph unicode="&#xc1;" horiz-adv-x="1245" d="M-2 127l106 37l414 1251h197l436 -1251l94 -37l-22 -127h-482v121l181 43l-99 303h-438l-94 -303l176 -41v-123h-442zM387 1597l293 304l68 8l118 -187l-399 -229zM438 643h328l-168 514z" />
+<glyph unicode="&#xc2;" horiz-adv-x="1245" d="M-2 127l106 37l414 1251h197l436 -1251l94 -37l-22 -127h-482v121l181 43l-99 303h-438l-94 -303l176 -41v-123h-442zM274 1499l322 332h53l320 -334l-4 -10h-166l-178 121l-177 -121h-163zM438 643h328l-168 514z" />
+<glyph unicode="&#xc3;" horiz-adv-x="1245" d="M-2 127l106 37l414 1251h197l436 -1251l94 -37l-22 -127h-482v121l181 43l-99 303h-438l-94 -303l176 -41v-123h-442zM274 1559v34q45 100 148 144q45 18 113.5 18t127 -32.5t105.5 -67.5l18 -13l125 115l121 -137q-113 -125 -205 -125q-49 0 -83.5 15.5t-66.5 34 t-64.5 33.5t-87 15t-87 -34.5t-49.5 -69.5zM438 643h328l-168 514z" />
+<glyph unicode="&#xc4;" horiz-adv-x="1245" d="M-2 127l106 37l414 1251h197l436 -1251l94 -37l-22 -127h-482v121l181 43l-99 303h-438l-94 -303l176 -41v-123h-442zM311 1788q0 53 37 92t91.5 39t92 -39t37.5 -93t-40 -92t-91 -38t-89 39t-38 92zM438 643h328l-168 514zM674 1789q0 52 39 91t93 39t92 -39t38 -92 t-39 -92t-91 -39t-92 40t-40 92z" />
+<glyph unicode="&#xc5;" horiz-adv-x="1236" d="M-6 127l106 37l394 1192q-86 59 -86 170q0 86 59 145t145 60q86 0 146.5 -60.5t60.5 -157t-88 -157.5l416 -1192l94 -37l-22 -127h-482v121l181 43l-99 303h-438l-94 -303l176 -41v-123h-443zM434 643h328l-168 514zM535 1526q0 -37 21.5 -57.5t57 -20.5t57 20.5 t21.5 57.5t-21.5 57.5t-57 20.5t-57 -20.5t-21.5 -57.5z" />
+<glyph unicode="&#xc6;" horiz-adv-x="1609" d="M-25 127l107 37l524 1251h873l41 -385h-129l-78 209h-381v-430h323v-176h-323v-457h401l72 207h129l-41 -383h-868l-21 145l125 27v356h-319l-146 -364l180 -41v-123h-442zM481 705h248v546l-29 2z" />
+<glyph unicode="&#xc7;" horiz-adv-x="1193" d="M72 692q0 340 207 541q193 182 485 182q131 0 303 -39l39 -372h-139l-80 221q-39 14 -134.5 14t-185.5 -43t-153 -115q-127 -147 -127 -368q0 -236 141 -389q143 -156 381 -156q88 0 161.5 26.5t106.5 51.5l60 -162q-113 -80 -320 -90l-29 -74q72 -18 124.5 -69.5 t52.5 -148.5t-78 -163.5t-213 -66.5q-100 0 -219 49l-13 4l84 164l136 -88q72 0 108 51q14 18 14 53t-33.5 68.5t-117.5 33.5l-25 3l-33 34l58 160q-238 43 -391 217q-170 193 -170 471z" />
+<glyph unicode="&#xc8;" horiz-adv-x="1103" d="M98 145l125 27v1079l-123 11v153h873l41 -385h-129l-78 209h-381v-430h324v-176h-324v-457h401l72 207h129l-41 -383h-868zM301 1726l117 168l69 -12l285 -317l-74 -90z" />
+<glyph unicode="&#xc9;" horiz-adv-x="1103" d="M98 145l125 27v1079l-123 11v153h873l41 -385h-129l-78 209h-381v-430h324v-176h-324v-457h401l72 207h129l-41 -383h-868zM387 1597l295 304l70 8l116 -187l-399 -229z" />
+<glyph unicode="&#xca;" horiz-adv-x="1103" d="M98 145l125 27v1079l-123 11v153h873l41 -385h-129l-78 209h-381v-430h324v-176h-324v-457h401l72 207h129l-41 -383h-868zM207 1499l321 332h54l319 -334l-4 -10h-166l-178 121l-176 -121h-164z" />
+<glyph unicode="&#xcb;" horiz-adv-x="1103" d="M98 145l125 27v1079l-123 11v153h873l41 -385h-129l-78 209h-381v-430h324v-176h-324v-457h401l72 207h129l-41 -383h-868zM258 1810q0 53 37 92.5t91 39.5t92 -39t38 -93.5t-40 -92.5t-91 -38t-89 39t-38 92zM621 1811.5q0 52.5 38.5 91.5t93 39t92.5 -39t38 -93 q0 -53 -39 -92t-91.5 -39t-92 40t-39.5 92.5z" />
+<glyph unicode="&#xcc;" horiz-adv-x="655" d="M78 147l147 23v1079l-129 11v155h447l20 -153l-133 -21v-1075l133 -16v-150h-448zM78 1726l117 168l65 -12l287 -317l-74 -90z" />
+<glyph unicode="&#xcd;" horiz-adv-x="653" d="M94 147l129 23v1079l-129 11v155h447l20 -153l-133 -21v-1075l133 -16v-150h-448zM96 1597l293 304l70 8l116 -187l-399 -229z" />
+<glyph unicode="&#xce;" horiz-adv-x="653" d="M-20 1499l321 332h53l320 -334l-4 -10h-166l-178 121l-176 -121h-164zM94 147l129 23v1079l-129 11v155h447l20 -153l-133 -21v-1075l133 -16v-150h-448z" />
+<glyph unicode="&#xcf;" horiz-adv-x="653" d="M43 1634q0 53 37 91t88 38t91 -37.5t40 -91.5q0 -53 -40 -91t-91 -38t-88 38t-37 91zM94 147l129 23v1079l-129 11v155h447l20 -153l-133 -21v-1075l133 -16v-150h-448zM371 1633.5q0 54.5 39 92t92 37.5t89 -38.5t36 -91t-37 -90.5t-89 -38t-91 37t-39 91.5z" />
+<glyph unicode="&#xd0;" horiz-adv-x="1294" d="M76 637v139l20 23h127v452l-123 13v151h387q334 0 531 -178q203 -182 203 -520t-195 -529q-193 -188 -530 -188h-377l-21 145l125 29v463h-147zM426 176h49q264 0 399 148q132 139 132 401q0 129 -42 227.5t-120 161.5q-152 129 -418 129v-444h340q14 0 14 -17v-145h-354 v-461z" />
+<glyph unicode="&#xd1;" horiz-adv-x="1425" d="M96 145l129 27v1075l-123 13v155h428l517 -1218v1050l-127 17v151h403l27 -153l-131 -25v-1237h-240l-582 1223v-893l2 -146q0 -12 2 -18l117 -21v-145h-397zM342 1559v34q45 100 150 144q43 18 111.5 18t126.5 -32.5t106 -67.5l18 -13l125 115l121 -137 q-113 -125 -205 -125q-49 0 -84 15.5t-66.5 34t-64.5 33.5t-87 15t-87 -34.5t-49 -69.5z" />
+<glyph unicode="&#xd2;" d="M88 705q0 303 143 499q156 213 435 213t436 -213q145 -199 145 -499q0 -301 -145 -500q-157 -213 -436 -213t-435 213q-143 197 -143 500zM303 700q0 -221 90 -370q96 -162 273 -162q178 0 276 162q90 147 90 370q0 225 -90 377q-100 164 -276 164t-273 -164 q-90 -152 -90 -377zM428 1726l115 168l67 -12l287 -317l-74 -90z" />
+<glyph unicode="&#xd3;" d="M88 705q0 303 143 499q156 213 435 213t436 -213q145 -199 145 -499q0 -301 -145 -500q-157 -213 -436 -213t-435 213q-143 197 -143 500zM303 700q0 -221 90 -370q96 -162 273 -162q178 0 276 162q90 147 90 370q0 225 -90 377q-100 164 -276 164t-273 -164 q-90 -152 -90 -377zM449 1597l292 304l70 8l117 -187l-400 -229z" />
+<glyph unicode="&#xd4;" d="M88 705q0 303 143 499q156 213 435 213t436 -213q145 -199 145 -499q0 -301 -145 -500q-157 -213 -436 -213t-435 213q-143 197 -143 500zM303 700q0 -221 90 -370q96 -162 273 -162q178 0 276 162q90 147 90 370q0 225 -90 377q-100 164 -276 164t-273 -164 q-90 -152 -90 -377zM319 1499l322 332h53l320 -334l-2 -10h-168l-178 121l-177 -121h-167z" />
+<glyph unicode="&#xd5;" d="M88 705q0 303 143 499q156 213 435 213t436 -213q145 -199 145 -499q0 -301 -145 -500q-157 -213 -436 -213t-435 213q-143 197 -143 500zM297 1559v34q45 100 145 144q45 18 117 18t135.5 -38t110.5 -75l125 115l121 -137q-66 -82 -148 -113q-29 -12 -66.5 -12 t-73.5 15.5t-66.5 34t-63.5 33.5t-86 15q-84 0 -139 -104zM303 700q0 -221 90 -370q96 -162 273 -162q178 0 276 162q90 147 90 370q0 225 -90 377q-100 164 -276 164t-273 -164q-90 -152 -90 -377z" />
+<glyph unicode="&#xd6;" d="M88 705q0 303 143 499q156 213 435 213t436 -213q145 -199 145 -499q0 -301 -145 -500q-157 -213 -436 -213t-435 213q-143 197 -143 500zM303 700q0 -221 90 -370q96 -162 273 -162q178 0 276 162q90 147 90 370q0 225 -90 377q-100 164 -276 164t-273 -164 q-90 -152 -90 -377zM371 1810q0 53 36.5 92.5t91 39.5t92.5 -39t38 -93.5t-40 -92.5t-91.5 -38t-89 39t-37.5 92zM733 1811.5q0 52.5 39 91.5t93.5 39t92 -39t37.5 -93q0 -53 -38.5 -92t-91 -39t-92.5 40t-40 92.5z" />
+<glyph unicode="&#xd7;" horiz-adv-x="978" d="M100 1008l109 108l283 -282l274 274l111 -109l-277 -276l272 -270l-108 -109l-272 270l-277 -276l-109 111l277 276z" />
+<glyph unicode="&#xd8;" d="M88 691.5q0 156.5 36 285.5t107 227q156 213 435 213q104 0 194 -33l70 154h200l-2 -39l-100 -217q111 -98 165 -250.5t54 -311.5t-36.5 -288t-108.5 -227q-158 -213 -436 -213q-123 0 -215 39l-64 -140h-192l-7 37l99 213q-100 98 -149.5 246t-49.5 304.5zM303 704.5 q0 -221.5 78 -358.5l401 873q-55 23 -132 22.5t-145.5 -45.5t-111.5 -119q-90 -151 -90 -372.5zM528 199q61 -31 145.5 -31t154 44t114.5 118q90 147 90 372t-96 381z" />
+<glyph unicode="&#xd9;" horiz-adv-x="1306" d="M61 1262v153h474v-151l-142 -19v-768q0 -309 283 -309q188 0 250 164q23 59 22 147v768l-125 19v149h414v-151l-117 -21v-772q0 -238 -137 -365q-121 -115 -313 -114q-236 0 -359 126t-123 353v778zM420 1726l115 168l69 -12l287 -317l-76 -90z" />
+<glyph unicode="&#xda;" horiz-adv-x="1306" d="M61 1262v153h474v-151l-142 -19v-768q0 -309 283 -309q188 0 250 164q23 59 22 147v768l-125 19v149h414v-151l-117 -21v-772q0 -238 -137 -365q-121 -115 -313 -114q-236 0 -359 126t-123 353v778zM485 1597l295 304l70 8l115 -187l-398 -229z" />
+<glyph unicode="&#xdb;" horiz-adv-x="1306" d="M61 1262v153h474v-151l-142 -19v-768q0 -309 283 -309q188 0 250 164q23 59 22 147v768l-125 19v149h414v-151l-117 -21v-772q0 -238 -137 -365q-121 -115 -313 -114q-236 0 -359 126t-123 353v778zM326 1499l321 332h53l320 -334l-2 -10h-168l-178 121l-176 -121h-168z " />
+<glyph unicode="&#xdc;" horiz-adv-x="1325" d="M61 1262v153h474v-151l-142 -19v-768q0 -145 72 -227t219 -82q190 0 258 164q25 59 25 147v768l-125 19v149h413v-151l-116 -21v-772q0 -238 -144 -365q-125 -115 -317 -114q-236 0 -363 126t-127 353v778zM395 1810q0 53 37 92.5t91.5 39.5t92 -39t37.5 -93.5t-40 -92.5 t-91 -38t-89 39t-38 92zM758 1811.5q0 52.5 39 91.5t93 39t92 -39t38 -93q0 -53 -39 -92t-91 -39t-92 40t-40 92.5z" />
+<glyph unicode="&#xdd;" horiz-adv-x="1153" d="M8 1262v153h436l15 -135l-137 -25l284 -524l258 526l-125 23v135h400v-153l-88 -21l-369 -737v-334l238 -41l-21 -129h-635l-20 129l235 41v346l-389 727zM412 1597l295 304l69 8l115 -187l-397 -229z" />
+<glyph unicode="&#xde;" horiz-adv-x="1075" d="M94 147l129 23v1079l-129 11v155h447l20 -153l-133 -21l4 -76q301 0 451.5 -103.5t150.5 -320.5q0 -219 -162 -331q-143 -98 -403 -99h-41v-145l236 -37v-129h-551zM428 487h33q199 0 278.5 64.5t79.5 173.5q0 141 -94 197.5t-281 56.5h-16v-492z" />
+<glyph unicode="&#xdf;" horiz-adv-x="1079" d="M66 0v119l104 20v948q0 203 106 314q96 96 263 96q143 0 243 -80q111 -88 111 -233q0 -94 -34 -154.5t-75 -103.5t-74.5 -76t-33.5 -70q8 -45 92 -88q268 -139 268 -358q0 -160 -114 -260q-102 -90 -244 -90q-119 0 -229 49l110 192q27 -23 53.5 -48t49.5 -40 q72 0 126 53.5t54 147.5q0 88 -90 162q-39 31 -84 58.5t-84 59.5q-90 72 -90 158q0 59 32.5 100.5t72.5 82t73 92t33 133.5q-4 66 -52 112.5t-118 46.5q-176 0 -177 -217v-1126h-292z" />
+<glyph unicode="&#xe0;" horiz-adv-x="942" d="M74 253.5q0 108.5 44 172t115 100.5q125 63 367 68v145q0 41 -38 75t-118 34q-76 0 -112 -33l-41 -133l-215 63q47 170 231 230q66 20 148 20q160 0 244.5 -79.5t84.5 -208.5v-525q0 -43 29 -43q14 0 43 15l45 -109q-63 -53 -141 -53q-117 0 -148 92q-90 -94 -229 -94 t-224 77.5t-85 186zM256 1294l123 146l63 -17l220 -323l-76 -76zM268 283.5q0 -50.5 15.5 -76t38 -40.5t47 -20.5t55.5 -5.5t62.5 13.5t54.5 31.5q43 33 59 82v176q-135 0 -198.5 -21.5t-98.5 -55t-35 -84z" />
+<glyph unicode="&#xe1;" horiz-adv-x="942" d="M74 253.5q0 108.5 44 172t115 100.5q125 63 367 68v145q0 41 -38 75t-118 34q-76 0 -112 -33l-41 -133l-215 63q47 170 231 230q66 20 148 20q160 0 244.5 -79.5t84.5 -208.5v-525q0 -43 29 -43q14 0 43 15l45 -109q-63 -53 -141 -53q-117 0 -148 92q-90 -94 -229 -94 t-224 77.5t-85 186zM268 283.5q0 -50.5 15.5 -76t38 -40.5t47 -20.5t55.5 -5.5t62.5 13.5t54.5 31.5q43 33 59 82v176q-135 0 -198.5 -21.5t-98.5 -55t-35 -84zM270 1174l236 305l65 16l123 -164l-340 -248z" />
+<glyph unicode="&#xe2;" horiz-adv-x="942" d="M74 253.5q0 108.5 44 172t115 100.5q125 63 367 68v145q0 41 -38 75t-118 34q-76 0 -112 -33l-41 -133l-215 63q47 170 231 230q66 20 148 20q160 0 244.5 -79.5t84.5 -208.5v-525q0 -43 29 -43q14 0 43 15l45 -109q-63 -53 -141 -53q-117 0 -148 92q-90 -94 -229 -94 t-224 77.5t-85 186zM123 1108l272 326h68l274 -328l-12 -23h-160l-137 107l-137 -107h-158zM268 283.5q0 -50.5 15.5 -76t38 -40.5t47 -20.5t55.5 -5.5t62.5 13.5t54.5 31.5q43 33 59 82v176q-135 0 -198.5 -21.5t-98.5 -55t-35 -84z" />
+<glyph unicode="&#xe3;" horiz-adv-x="942" d="M74 253.5q0 108.5 44 172t115 100.5q125 63 367 68v145q0 41 -38 75t-118 34q-76 0 -112 -33l-41 -133l-215 63q47 170 231 230q66 20 148 20q160 0 244.5 -79.5t84.5 -208.5v-525q0 -43 29 -43q14 0 43 15l45 -109q-63 -53 -141 -53q-117 0 -148 92q-90 -94 -229 -94 t-224 77.5t-85 186zM143 1198q0 57 54 115q66 72 163 71q74 0 177 -59q25 -14 47 -22l2 -7l94 97l115 -136q-43 -47 -89.5 -79.5t-94.5 -32.5t-77.5 12t-57 25.5t-54 26t-57.5 12.5q-74 0 -113 -93zM268 283.5q0 -50.5 15.5 -76t38 -40.5t47 -20.5t55.5 -5.5t62.5 13.5 t54.5 31.5q43 33 59 82v176q-135 0 -198.5 -21.5t-98.5 -55t-35 -84z" />
+<glyph unicode="&#xe4;" horiz-adv-x="942" d="M74 253.5q0 108.5 44 172t115 100.5q125 63 367 68v145q0 41 -38 75t-118 34q-76 0 -112 -33l-41 -133l-215 63q47 170 231 230q66 20 148 20q160 0 244.5 -79.5t84.5 -208.5v-525q0 -43 29 -43q14 0 43 15l45 -109q-63 -53 -141 -53q-117 0 -148 92q-90 -94 -229 -94 t-224 77.5t-85 186zM141 1278q0 53 37 90t90 37t90 -37t37 -90t-36.5 -90t-90.5 -37q-53 0 -90 37t-37 90zM268 283.5q0 -50.5 15.5 -76t38 -40.5t47 -20.5t55.5 -5.5t62.5 13.5t54.5 31.5q43 33 59 82v176q-135 0 -198.5 -21.5t-98.5 -55t-35 -84zM471 1278q0 53 37 90 t90 37t90 -37t37 -90t-37 -90t-90 -37t-90 37t-37 90z" />
+<glyph unicode="&#xe5;" horiz-adv-x="942" d="M74 253.5q0 108.5 44 172t115 100.5q125 63 367 68v145q0 41 -38 75t-118 34q-76 0 -112 -33l-41 -133l-215 63q47 170 231 230q66 20 148 20q160 0 244.5 -79.5t84.5 -208.5v-525q0 -43 29 -43q14 0 43 15l45 -109q-63 -53 -141 -53q-117 0 -148 92q-90 -94 -229 -94 t-224 77.5t-85 186zM268 283.5q0 -50.5 15.5 -76t38 -40.5t47 -20.5t55.5 -5.5t62.5 13.5t54.5 31.5q43 33 59 82v176q-135 0 -198.5 -21.5t-98.5 -55t-35 -84zM268 1290q0 82 56.5 138.5t139.5 56.5t139 -56.5t56 -138.5t-56 -138t-139 -56t-139.5 56t-56.5 138zM389 1290 q0 -31 21.5 -52t52.5 -21t53.5 21.5t22.5 51.5q0 31 -22.5 52.5t-53.5 21.5t-52.5 -21.5t-21.5 -52.5z" />
+<glyph unicode="&#xe6;" horiz-adv-x="1441" d="M74 252.5q0 107.5 46 171t122 100.5q135 70 358 70v145q0 41 -38 75t-118 34q-76 0 -112 -33l-41 -133l-215 63q47 170 231 230q66 20 148 20q198 0 286 -131q131 131 318 131q137 0 229 -69q96 -72 96 -199q0 -213 -278 -283q-98 -25 -236 -24h-36q-18 0 -39 2 q20 -193 163 -254q51 -23 124 -23t131.5 29t80.5 47l39 -139q-25 -27 -98.5 -58.5t-182 -31.5t-210 46t-166.5 144q-53 -127 -182 -174q-47 -18 -107 -18q-143 0 -228 77.5t-85 185zM268 274q0 -72 54 -106q37 -27 85 -27t79.5 13.5t54.5 31.5q43 33 59 82v176 q-332 0 -332 -170zM795 573h75q135 0 196.5 19.5t92.5 49.5t31 63.5t-6 55t-21.5 39t-43 30t-68.5 12.5t-83 -16.5t-77 -51.5q-82 -78 -96 -201z" />
+<glyph unicode="&#xe7;" horiz-adv-x="882" d="M74 477q0 268 143 408q115 111 297 110q133 0 231 -69q80 -55 107 -117l-203 -96l-65 118q-41 10 -68 11q-248 0 -248 -361q0 -154 75 -245t198 -91q57 0 120.5 21.5t104.5 62.5l45 -143q-92 -74 -227 -90l-25 -72q53 -14 96 -52t43 -116t-62.5 -130t-172.5 -52 q-84 0 -180 39l67 135l111 -76q61 0 92 43q10 16 10 39q0 90 -145 90l-25 31l43 123q-156 27 -252 141q-111 129 -110 338z" />
+<glyph unicode="&#xe8;" horiz-adv-x="927" d="M72 485q0 -242 133 -370q125 -123 334 -123q141 0 258 67q25 14 32 23l-45 143q-47 -47 -145 -69q-39 -10 -94.5 -10.5t-102.5 18t-82 49.5q-61 57 -84 164q315 4 455 115q105 83 105 233q0 61 -26 112.5t-69 86.5q-92 72 -227 71q-184 0 -307 -131q-135 -141 -135 -379z M266 528q12 154 84 238q66 74 170 74q59 0 90 -37t31 -94.5t-39 -95.5t-96 -56q-90 -29 -240 -29zM317 1378l121 162l66 -16l233 -303l-84 -88z" />
+<glyph unicode="&#xe9;" horiz-adv-x="909" d="M71.5 486q0.5 124 37 219.5t98.5 158.5q123 131 307 131q135 0 227 -71q95 -76 95 -199q0 -63 -21.5 -123.5t-83.5 -109.5q-139 -111 -455 -115q33 -162 166 -213q47 -18 102.5 -18.5t94.5 9t68 21.5q55 27 77 49l45 -143q-23 -23 -75 -45q-205 -84 -402 -14 q-178 63 -246 247q-35 92 -34.5 216zM266 528q150 0 223.5 23.5t112.5 61.5t39 95.5t-30.5 94.5t-89 37t-98.5 -18.5t-73 -55.5q-72 -84 -84 -238zM319 1174l236 305l66 16l122 -164l-340 -248z" />
+<glyph unicode="&#xea;" horiz-adv-x="927" d="M71.5 486q0.5 124 37 219.5t98.5 158.5q123 131 307 131q135 0 227 -71q95 -76 95 -199q0 -63 -21.5 -123.5t-83.5 -109.5q-139 -111 -455 -115q33 -162 166 -213q47 -18 102.5 -18.5t94.5 9t68 21.5q55 27 77 49l45 -143q-23 -23 -75 -45q-205 -84 -402 -14 q-178 63 -246 247q-35 92 -34.5 216zM199 1108l272 326h68l274 -328l-12 -23h-160l-137 107l-137 -107h-158zM266 528q150 0 223.5 23.5t112.5 61.5t39 95.5t-30.5 94.5t-89 37t-98.5 -18.5t-73 -55.5q-72 -84 -84 -238z" />
+<glyph unicode="&#xeb;" horiz-adv-x="927" d="M71.5 486q0.5 124 37 219.5t98.5 158.5q123 131 307 131q135 0 227 -71q95 -76 95 -199q0 -63 -21.5 -123.5t-83.5 -109.5q-139 -111 -455 -115q33 -162 166 -213q47 -18 102.5 -18.5t94.5 9t68 21.5q55 27 77 49l45 -143q-23 -23 -75 -45q-205 -84 -402 -14 q-178 63 -246 247q-35 92 -34.5 216zM217 1282q0 47 32 80t80 33t80.5 -34t32.5 -80t-33.5 -79t-80.5 -33t-79 33t-32 80zM266 528q150 0 223.5 23.5t112.5 61.5t39 95.5t-30.5 94.5t-89 37t-98.5 -18.5t-73 -55.5q-72 -84 -84 -238zM524 1283q0 46 32 79t80 33t81 -34 t33 -80t-34 -79t-81 -33t-79 34t-32 80z" />
+<glyph unicode="&#xec;" horiz-adv-x="548" d="M59 950l21 -123l113 9v-697l-127 -28l22 -111h410v111l-121 32v787l-66 65zM59 1333l123 164l66 -16l233 -305l-82 -89z" />
+<glyph unicode="&#xed;" horiz-adv-x="548" d="M59 950l252 45l66 -65v-787l121 -32v-111h-410l-22 111l127 28v697l-113 -9zM66 1174l235 305l66 16l120 -164l-337 -246z" />
+<glyph unicode="&#xee;" horiz-adv-x="548" d="M-23 1114l256 309h50l256 -307l-11 -16h-137l-135 110l-137 -110h-133zM59 950l252 45l66 -65v-787l121 -32v-111h-410l-22 111l127 28v697l-113 -9z" />
+<glyph unicode="&#xef;" horiz-adv-x="548" d="M-2 1282q0 47 31.5 80t80 33t81 -34t32.5 -80t-33.5 -79t-81 -33t-79 33t-31.5 80zM59 950l252 45l66 -65v-787l121 -32v-111h-410l-22 111l127 28v697l-113 -9zM283 1283q0 46 32.5 79t79.5 33t81 -34t34 -80t-35 -79t-81 -33t-78.5 34t-32.5 80z" />
+<glyph unicode="&#xf0;" horiz-adv-x="1046" d="M72 438q0 190 108 328q115 139 293 139q170 0 260 -94q-45 156 -155 274l-218 -122l-65 116l166 113q-84 63 -207 121l76 182q154 -59 303 -184l219 149l100 -164l-198 -112q188 -229 207 -529v-41q0 -256 -107 -426q-123 -197 -348 -196q-213 0 -330 143 q-104 125 -104 303zM266 438q0 -125 68 -197.5t174 -72.5q195 0 244 274q0 141 -80 222q-68 68 -178 67q-115 0 -175 -90q-53 -78 -53 -203z" />
+<glyph unicode="&#xf1;" horiz-adv-x="1085" d="M59 950q27 4 62 11.5t69.5 13.5t67.5 11t53 9l60 -75q98 76 245 75q213 0 281 -155q23 -53 23 -131v-564l122 -34v-111h-407l-25 111l125 28v539q0 92 -43 126t-106.5 34t-123 -27t-85.5 -53v-615l119 -32v-111h-408l-25 111l130 28v697l-113 -9zM246 1198q0 57 53 115 q66 72 164 71q74 0 176 -59q25 -14 47 -22l2 -7l94 97l115 -136q-43 -47 -89 -79.5t-94 -32.5t-78 12t-57.5 25.5t-54 26t-57.5 12.5q-74 0 -113 -93z" />
+<glyph unicode="&#xf2;" horiz-adv-x="1013" d="M74 502q0 -119 31.5 -212t91.5 -159q121 -139 311 -139q182 0 303 131q131 137 131 375q0 227 -123 362t-311 135q-184 0 -303 -127q-131 -137 -131 -366zM268 485q0 250 135 330q45 27 105 27q111 0 175.5 -95.5t64.5 -265.5t-68 -253t-174.5 -83t-172 85t-65.5 255z M319 1333l123 164l66 -16l233 -307l-82 -89z" />
+<glyph unicode="&#xf3;" horiz-adv-x="1013" d="M74 502q0 119 34.5 211t96.5 155q119 127 303 127q188 0 311 -135t123 -362q0 -238 -131 -375q-121 -131 -303 -131q-190 0 -311 139q-123 138 -123 371zM268.5 480q-0.5 -165 65 -250t172 -85t174.5 83t68 253t-65 265.5t-175 95.5q-117 0 -180 -101q-59 -96 -59.5 -261 zM326 1174l235 305l66 16l123 -164l-340 -248z" />
+<glyph unicode="&#xf4;" horiz-adv-x="1011" d="M74 502q0 119 34.5 211t96.5 155q119 127 303 127q188 0 311 -135t123 -362q0 -238 -131 -375q-121 -131 -303 -131q-190 0 -311 139q-123 138 -123 371zM223 1114l256 309h49l256 -307l-8 -16h-135l-137 110l-137 -110h-134zM268.5 480q-0.5 -165 65 -250t172 -85 t174.5 83t68 253t-65 265.5t-175 95.5q-117 0 -180 -101q-59 -96 -59.5 -261z" />
+<glyph unicode="&#xf5;" horiz-adv-x="1011" d="M74 502q0 119 34.5 211t96.5 155q119 127 303 127q188 0 311 -135t123 -362q0 -238 -131 -375q-121 -131 -303 -131q-190 0 -311 139q-123 138 -123 371zM193 1196q0 57 53 115q70 74 164 73q72 0 176 -59q27 -14 49 -22l2 -7l94 95l115 -136q-45 -47 -89 -78.5 t-94.5 -31.5t-80 11t-56.5 26q-68 37 -112.5 37t-72.5 -29t-38 -64zM268.5 480q-0.5 -165 65 -250t172 -85t174.5 83t68 253t-65 265.5t-175 95.5q-117 0 -180 -101q-59 -96 -59.5 -261z" />
+<glyph unicode="&#xf6;" horiz-adv-x="1011" d="M74 502q0 119 34.5 211t96.5 155q119 127 303 127q188 0 311 -135t123 -362q0 -238 -131 -375q-121 -131 -303 -131q-190 0 -311 139q-123 138 -123 371zM246 1282q0 47 31.5 80t80 33t81 -34t32.5 -80t-34 -79t-81 -33t-78.5 33t-31.5 80zM268.5 480q-0.5 -165 65 -250 t172 -85t174.5 83t68 253t-65 265.5t-175 95.5q-117 0 -180 -101q-59 -96 -59.5 -261zM553 1283q0 46 31.5 79t80 33t81 -34t32.5 -80t-33.5 -79t-81 -33t-79 34t-31.5 80z" />
+<glyph unicode="&#xf7;" horiz-adv-x="858" d="M92 520v156h674v-156h-674zM328 284q0 46 31.5 78.5t79.5 32.5t81 -33.5t33 -79.5t-34 -79t-81 -33t-78.5 34t-31.5 80zM328 915.5q0 47.5 31.5 80t79.5 32.5t81 -33.5t33 -80t-34 -79t-81 -32.5t-78.5 32.5t-31.5 80z" />
+<glyph unicode="&#xf8;" horiz-adv-x="1011" d="M74 498q0 231 131 370q119 127 303 127q61 0 125 -18l108 237h174l-2 -26l-131 -291q158 -139 158 -399q0 -238 -129 -375q-123 -131 -303 -131q-61 0 -127 18l-94 -211h-168l-6 27l120 266q-160 137 -159 406zM268 493.5q0 -147.5 43 -227.5l256 563q-29 8 -59 9 q-119 0 -179.5 -98.5t-60.5 -246zM446 154q25 -8 62 -9q104 0 170.5 83t66.5 240t-47 245z" />
+<glyph unicode="&#xf9;" horiz-adv-x="1044" d="M25 950l20 -119h113v-501q0 -170 98 -260q86 -78 229 -78q133 0 230 92q33 -92 139 -92q76 0 133 57l-29 92l-36 -4q-37 0 -37 68v723l-60 69l-250 -47l19 -119h106v-575q-18 -47 -77 -80q-53 -29 -95.5 -29t-74 7.5t-56.5 29.5q-55 53 -55 189v555l-63 67zM236 1333 l120 164l66 -16l235 -307l-84 -89z" />
+<glyph unicode="&#xfa;" horiz-adv-x="1044" d="M25 950l254 45l63 -67v-555q0 -193 113 -217q31 -8 58.5 -8.5t55 7t54.5 21.5q59 33 77 80v575h-106l-19 119l250 47l60 -69v-723q0 -68 37 -68l36 4l29 -92q-57 -57 -133 -57q-106 0 -139 92q-96 -92 -230 -92q-225 0 -301 184q-27 63 -26 154v501h-113zM305 1174 l236 305l65 16l123 -164l-340 -248z" />
+<glyph unicode="&#xfb;" horiz-adv-x="1044" d="M25 950l254 45l63 -67v-555q0 -193 113 -217q31 -8 58.5 -8.5t55 7t54.5 21.5q59 33 77 80v575h-106l-19 119l250 47l60 -69v-723q0 -68 37 -68l36 4l29 -92q-57 -57 -133 -57q-106 0 -139 92q-96 -92 -230 -92q-225 0 -301 184q-27 63 -26 154v501h-113zM201 1114 l256 309h49l256 -307l-10 -16h-138l-135 110l-137 -110h-133z" />
+<glyph unicode="&#xfc;" horiz-adv-x="1044" d="M25 950l254 45l63 -67v-555q0 -193 113 -217q31 -8 58.5 -8.5t55 7t54.5 21.5q59 33 77 80v575h-106l-19 119l250 47l60 -69v-723q0 -68 37 -68l36 4l29 -92q-57 -57 -133 -57q-106 0 -139 92q-96 -92 -230 -92q-225 0 -301 184q-27 63 -26 154v501h-113zM256 1282 q0 47 31.5 80t80 33t81 -34t32.5 -80t-33.5 -79t-81 -33t-79 33t-31.5 80zM563 1283q0 46 32 79t80 33t80.5 -34t32.5 -80t-33.5 -79t-80.5 -33t-79 34t-32 80z" />
+<glyph unicode="&#xfd;" horiz-adv-x="983" d="M2 979l254 16l276 -829l259 686h-107l-14 125l248 18l53 -69q-184 -522 -329.5 -896t-169 -422t-54.5 -87q-72 -84 -185 -84q-90 0 -182 82l76 141q57 -70 121 -70q66 0 112 123q14 35 27 66l45 121l-332 952h-82zM283 1174l235 305l66 16l123 -164l-340 -248z" />
+<glyph unicode="&#xfe;" horiz-adv-x="1007" d="M8 1466l260 39l62 -65v-500q86 55 188.5 55t176 -34.5t126.5 -98.5q113 -135 113 -356q0 -279 -152 -412q-117 -102 -286 -102q-102 0 -170 33q4 -66 4 -93v-329l245 -49v-113h-530l-14 110l112 27v1774l-116 -9zM330 197q18 -20 63 -36t90 -16t88 15.5t80 56.5 q88 90 88 277q0 172 -75 264q-62 80 -168 80q-49 0 -95.5 -19.5t-70.5 -48.5v-573z" />
+<glyph unicode="&#xff;" horiz-adv-x="978" d="M0 979l248 16l276 -829l264 694h-108l-14 117l249 18l52 -69q-164 -463 -284 -769.5t-158 -403.5t-61.5 -145t-53.5 -87q-72 -84 -185 -84q-90 0 -182 82l76 141q57 -70 121 -70q66 0 112 123q14 35 27 66l45 121l-332 960h-76zM215 1282q0 47 32 80t80 33t80.5 -34 t32.5 -80t-33.5 -79t-80.5 -33t-79 33t-32 80zM522 1283q0 46 32 79t80 33t81 -34t33 -80t-34 -79t-81 -33t-79 34t-32 80z" />
+<glyph unicode="&#x152;" horiz-adv-x="1787" d="M88 705q0 303 143 499q156 213 435 213l55 -2h936l41 -385h-129l-78 209h-381v-430h324v-176h-324v-457h401l72 207h129l-41 -383h-872q-70 -8 -133 -8q-279 0 -435 213q-143 197 -143 500zM303 700q0 -215 111 -370q113 -162 293 -162q133 0 200 72v923 q-96 78 -199.5 78t-178 -45t-123.5 -119q-102 -152 -103 -377z" />
+<glyph unicode="&#x153;" horiz-adv-x="1587" d="M74 498q0 233 131 370q119 127 303 127q219 0 342 -174q63 86 153.5 130t172 44t140 -18.5t101.5 -52.5q96 -76 96 -203q0 -145 -104 -229q-139 -111 -455 -115q33 -162 166 -213q47 -18 102.5 -18.5t94.5 9t67 21.5q55 27 78 49l45 -143q-23 -23 -75 -45 q-109 -45 -215 -45q-248 0 -373 168q-61 -84 -149.5 -126t-185.5 -42t-176 35.5t-136 103.5q-123 137 -123 367zM268.5 480q-0.5 -165 65 -250t172 -85t174.5 83t68 253t-65 265.5t-175 95.5q-117 0 -180 -101q-59 -96 -59.5 -261zM944 528q150 0 223.5 23.5t112.5 61.5 t39 95.5t-31 94.5t-89 37t-98 -18.5t-73 -55.5q-72 -84 -84 -238z" />
+<glyph unicode="&#x2000;" horiz-adv-x="971" />
+<glyph unicode="&#x2001;" horiz-adv-x="1942" />
+<glyph unicode="&#x2002;" horiz-adv-x="971" />
+<glyph unicode="&#x2003;" horiz-adv-x="1942" />
+<glyph unicode="&#x2004;" horiz-adv-x="647" />
+<glyph unicode="&#x2005;" horiz-adv-x="485" />
+<glyph unicode="&#x2006;" horiz-adv-x="323" />
+<glyph unicode="&#x2007;" horiz-adv-x="323" />
+<glyph unicode="&#x2008;" horiz-adv-x="242" />
+<glyph unicode="&#x2009;" horiz-adv-x="388" />
+<glyph unicode="&#x200a;" horiz-adv-x="107" />
+<glyph unicode="&#x2010;" horiz-adv-x="817" d="M119 500v125l24 28h543q12 0 12 -16v-137h-579z" />
+<glyph unicode="&#x2011;" horiz-adv-x="817" d="M119 500v125l24 28h543q12 0 12 -16v-137h-579z" />
+<glyph unicode="&#x2012;" horiz-adv-x="817" d="M119 500v125l24 28h543q12 0 12 -16v-137h-579z" />
+<glyph unicode="&#x2013;" horiz-adv-x="987" d="M111 616v154h759v-154h-759z" />
+<glyph unicode="&#x2014;" horiz-adv-x="1294" d="M111 616v154h1067v-154h-1067z" />
+<glyph unicode="&#x2018;" horiz-adv-x="411" d="M78 1196q0 68 26.5 151t73.5 152l113 -33l8 -28l-49 -234l110 -209l-198 -92q-84 135 -84 293z" />
+<glyph unicode="&#x2019;" horiz-adv-x="407" d="M61 985v29l103 209l-53 235l215 39q23 -90 22.5 -156.5t-18 -130t-43.5 -116.5q-49 -100 -119 -170z" />
+<glyph unicode="&#x201a;" horiz-adv-x="434" d="M74 -199l84 213l-76 230l203 59q10 -16 29.5 -72.5t19.5 -126t-16.5 -128t-43.5 -107.5q-45 -92 -108 -156l-92 64v24z" />
+<glyph unicode="&#x201c;" horiz-adv-x="684" d="M90 1083q0 207 121 418l125 -61v-29l-62 -209l54 -276l-215 -43q-2 8 -5.5 31.5t-7.5 52.5q-10 76 -10 116zM364.5 1084.5q0.5 66.5 14.5 130t35 116.5q35 92 90 170l106 -61v-29l-61 -209l53 -235l-215 -39q-23 90 -22.5 156.5z" />
+<glyph unicode="&#x201d;" horiz-adv-x="673" d="M80 924v28l61 209l-53 236l215 39q23 -90 23 -157t-14.5 -130.5t-35.5 -116.5q-35 -92 -90 -170zM354 924v28l62 209l-54 277l216 43q2 -8 5 -32t7 -52q10 -76 10 -117q0 -207 -121 -418z" />
+<glyph unicode="&#x201e;" horiz-adv-x="708" d="M68 -223l84 192l-76 230l194 59q8 -18 26.5 -83.5t18.5 -131.5t-15 -115t-40 -94q-45 -82 -108 -145l-84 63v25zM330 -246l104 215l-76 291l203 59q47 -141 47 -272q0 -150 -104 -305q-31 -45 -62 -74l-112 62v24z" />
+<glyph unicode="&#x2022;" horiz-adv-x="530" d="M88 784q0 74 51 126.5t125 52.5t126 -52.5t52 -126.5t-52 -125t-126 -51t-125 51t-51 125z" />
+<glyph unicode="&#x202f;" horiz-adv-x="388" />
+<glyph unicode="&#x2039;" horiz-adv-x="714" d="M23 590v53l579 442l10 -4v-186l-366 -281l366 -278v-186l-12 -7z" />
+<glyph unicode="&#x203a;" horiz-adv-x="716" d="M102 150v186l367 278l-367 281v186l11 4l579 -442v-53l-577 -447z" />
+<glyph unicode="&#x205f;" horiz-adv-x="485" />
+<glyph unicode="&#x20ac;" horiz-adv-x="1165" d="M63 455v155h117q-2 20 -2 39v64h-115v155h125q35 283 179.5 417t375.5 134q188 0 306 -35l38 -360h-139l-80 201q-49 18 -126.5 18t-141 -28.5t-104.5 -79.5q-76 -96 -95 -267h521v-155h-529l2 -103h527v-155h-510q27 -141 102 -209q86 -78 244 -78q88 0 154.5 26.5 t99.5 51.5l59 -162q-129 -92 -348 -92q-432 0 -524 463h-136z" />
+<glyph unicode="&#xe000;" horiz-adv-x="993" d="M0 0v993h993v-993h-993z" />
+</font>
+</defs></svg> 
\ No newline at end of file
Index: modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/js/mootools-1.2.5-core-nc.js
===================================================================
--- modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/js/mootools-1.2.5-core-nc.js	(nonexistent)
+++ modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/js/mootools-1.2.5-core-nc.js	(revision 47450)
@@ -0,0 +1,4288 @@
+/*
+---
+
+name: Core
+
+description: The core of MooTools, contains all the base functions and the Native and Hash implementations. Required by all the other scripts.
+
+license: MIT-style license.
+
+copyright: Copyright (c) 2006-2008 [Valerio Proietti](http://mad4milk.net/).
+
+authors: The MooTools production team (http://mootools.net/developers/)
+
+inspiration:
+  - Class implementation inspired by [Base.js](http://dean.edwards.name/weblog/2006/03/base/) Copyright (c) 2006 Dean Edwards, [GNU Lesser General Public License](http://opensource.org/licenses/lgpl-license.php)
+  - Some functionality inspired by [Prototype.js](http://prototypejs.org) Copyright (c) 2005-2007 Sam Stephenson, [MIT License](http://opensource.org/licenses/mit-license.php)
+
+provides: [MooTools, Native, Hash.base, Array.each, $util]
+
+...
+*/
+
+var MooTools = {
+	'version': '1.2.5',
+	'build': '008d8f0f2fcc2044e54fdd3635341aaab274e757'
+};
+
+var Native = function(options){
+	options = options || {};
+	var name = options.name;
+	var legacy = options.legacy;
+	var protect = options.protect;
+	var methods = options.implement;
+	var generics = options.generics;
+	var initialize = options.initialize;
+	var afterImplement = options.afterImplement || function(){};
+	var object = initialize || legacy;
+	generics = generics !== false;
+
+	object.constructor = Native;
+	object.$family = {name: 'native'};
+	if (legacy && initialize) object.prototype = legacy.prototype;
+	object.prototype.constructor = object;
+
+	if (name){
+		var family = name.toLowerCase();
+		object.prototype.$family = {name: family};
+		Native.typize(object, family);
+	}
+
+	var add = function(obj, name, method, force){
+		if (!protect || force || !obj.prototype[name]) obj.prototype[name] = method;
+		if (generics) Native.genericize(obj, name, protect);
+		afterImplement.call(obj, name, method);
+		return obj;
+	};
+
+	object.alias = function(a1, a2, a3){
+		if (typeof a1 == 'string'){
+			var pa1 = this.prototype[a1];
+			if ((a1 = pa1)) return add(this, a2, a1, a3);
+		}
+		for (var a in a1) this.alias(a, a1[a], a2);
+		return this;
+	};
+
+	object.implement = function(a1, a2, a3){
+		if (typeof a1 == 'string') return add(this, a1, a2, a3);
+		for (var p in a1) add(this, p, a1[p], a2);
+		return this;
+	};
+
+	if (methods) object.implement(methods);
+
+	return object;
+};
+
+Native.genericize = function(object, property, check){
+	if ((!check || !object[property]) && typeof object.prototype[property] == 'function') object[property] = function(){
+		var args = Array.prototype.slice.call(arguments);
+		return object.prototype[property].apply(args.shift(), args);
+	};
+};
+
+Native.implement = function(objects, properties){
+	for (var i = 0, l = objects.length; i < l; i++) objects[i].implement(properties);
+};
+
+Native.typize = function(object, family){
+	if (!object.type) object.type = function(item){
+		return ($type(item) === family);
+	};
+};
+
+(function(){
+	var natives = {'Array': Array, 'Date': Date, 'Function': Function, 'Number': Number, 'RegExp': RegExp, 'String': String};
+	for (var n in natives) new Native({name: n, initialize: natives[n], protect: true});
+
+	var types = {'boolean': Boolean, 'native': Native, 'object': Object};
+	for (var t in types) Native.typize(types[t], t);
+
+	var generics = {
+		'Array': ["concat", "indexOf", "join", "lastIndexOf", "pop", "push", "reverse", "shift", "slice", "sort", "splice", "toString", "unshift", "valueOf"],
+		'String': ["charAt", "charCodeAt", "concat", "indexOf", "lastIndexOf", "match", "replace", "search", "slice", "split", "substr", "substring", "toLowerCase", "toUpperCase", "valueOf"]
+	};
+	for (var g in generics){
+		for (var i = generics[g].length; i--;) Native.genericize(natives[g], generics[g][i], true);
+	}
+})();
+
+var Hash = new Native({
+
+	name: 'Hash',
+
+	initialize: function(object){
+		if ($type(object) == 'hash') object = $unlink(object.getClean());
+		for (var key in object) this[key] = object[key];
+		return this;
+	}
+
+});
+
+Hash.implement({
+
+	forEach: function(fn, bind){
+		for (var key in this){
+			if (this.hasOwnProperty(key)) fn.call(bind, this[key], key, this);
+		}
+	},
+
+	getClean: function(){
+		var clean = {};
+		for (var key in this){
+			if (this.hasOwnProperty(key)) clean[key] = this[key];
+		}
+		return clean;
+	},
+
+	getLength: function(){
+		var length = 0;
+		for (var key in this){
+			if (this.hasOwnProperty(key)) length++;
+		}
+		return length;
+	}
+
+});
+
+Hash.alias('forEach', 'each');
+
+Array.implement({
+
+	forEach: function(fn, bind){
+		for (var i = 0, l = this.length; i < l; i++) fn.call(bind, this[i], i, this);
+	}
+
+});
+
+Array.alias('forEach', 'each');
+
+function $A(iterable){
+	if (iterable.item){
+		var l = iterable.length, array = new Array(l);
+		while (l--) array[l] = iterable[l];
+		return array;
+	}
+	return Array.prototype.slice.call(iterable);
+};
+
+function $arguments(i){
+	return function(){
+		return arguments[i];
+	};
+};
+
+function $chk(obj){
+	return !!(obj || obj === 0);
+};
+
+function $clear(timer){
+	clearTimeout(timer);
+	clearInterval(timer);
+	return null;
+};
+
+function $defined(obj){
+	return (obj != undefined);
+};
+
+function $each(iterable, fn, bind){
+	var type = $type(iterable);
+	((type == 'arguments' || type == 'collection' || type == 'array') ? Array : Hash).each(iterable, fn, bind);
+};
+
+function $empty(){};
+
+function $extend(original, extended){
+	for (var key in (extended || {})) original[key] = extended[key];
+	return original;
+};
+
+function $H(object){
+	return new Hash(object);
+};
+
+function $lambda(value){
+	return ($type(value) == 'function') ? value : function(){
+		return value;
+	};
+};
+
+function $merge(){
+	var args = Array.slice(arguments);
+	args.unshift({});
+	return $mixin.apply(null, args);
+};
+
+function $mixin(mix){
+	for (var i = 1, l = arguments.length; i < l; i++){
+		var object = arguments[i];
+		if ($type(object) != 'object') continue;
+		for (var key in object){
+			var op = object[key], mp = mix[key];
+			mix[key] = (mp && $type(op) == 'object' && $type(mp) == 'object') ? $mixin(mp, op) : $unlink(op);
+		}
+	}
+	return mix;
+};
+
+function $pick(){
+	for (var i = 0, l = arguments.length; i < l; i++){
+		if (arguments[i] != undefined) return arguments[i];
+	}
+	return null;
+};
+
+function $random(min, max){
+	return Math.floor(Math.random() * (max - min + 1) + min);
+};
+
+function $splat(obj){
+	var type = $type(obj);
+	return (type) ? ((type != 'array' && type != 'arguments') ? [obj] : obj) : [];
+};
+
+var $time = Date.now || function(){
+	return +new Date;
+};
+
+function $try(){
+	for (var i = 0, l = arguments.length; i < l; i++){
+		try {
+			return arguments[i]();
+		} catch(e){}
+	}
+	return null;
+};
+
+function $type(obj){
+	if (obj == undefined) return false;
+	if (obj.$family) return (obj.$family.name == 'number' && !isFinite(obj)) ? false : obj.$family.name;
+	if (obj.nodeName){
+		switch (obj.nodeType){
+			case 1: return 'element';
+			case 3: return (/\S/).test(obj.nodeValue) ? 'textnode' : 'whitespace';
+		}
+	} else if (typeof obj.length == 'number'){
+		if (obj.callee) return 'arguments';
+		else if (obj.item) return 'collection';
+	}
+	return typeof obj;
+};
+
+function $unlink(object){
+	var unlinked;
+	switch ($type(object)){
+		case 'object':
+			unlinked = {};
+			for (var p in object) unlinked[p] = $unlink(object[p]);
+		break;
+		case 'hash':
+			unlinked = new Hash(object);
+		break;
+		case 'array':
+			unlinked = [];
+			for (var i = 0, l = object.length; i < l; i++) unlinked[i] = $unlink(object[i]);
+		break;
+		default: return object;
+	}
+	return unlinked;
+};
+
+
+/*
+---
+
+name: Array
+
+description: Contains Array Prototypes like each, contains, and erase.
+
+license: MIT-style license.
+
+requires: [$util, Array.each]
+
+provides: Array
+
+...
+*/
+
+Array.implement({
+
+	every: function(fn, bind){
+		for (var i = 0, l = this.length; i < l; i++){
+			if (!fn.call(bind, this[i], i, this)) return false;
+		}
+		return true;
+	},
+
+	filter: function(fn, bind){
+		var results = [];
+		for (var i = 0, l = this.length; i < l; i++){
+			if (fn.call(bind, this[i], i, this)) results.push(this[i]);
+		}
+		return results;
+	},
+
+	clean: function(){
+		return this.filter($defined);
+	},
+
+	indexOf: function(item, from){
+		var len = this.length;
+		for (var i = (from < 0) ? Math.max(0, len + from) : from || 0; i < len; i++){
+			if (this[i] === item) return i;
+		}
+		return -1;
+	},
+
+	map: function(fn, bind){
+		var results = [];
+		for (var i = 0, l = this.length; i < l; i++) results[i] = fn.call(bind, this[i], i, this);
+		return results;
+	},
+
+	some: function(fn, bind){
+		for (var i = 0, l = this.length; i < l; i++){
+			if (fn.call(bind, this[i], i, this)) return true;
+		}
+		return false;
+	},
+
+	associate: function(keys){
+		var obj = {}, length = Math.min(this.length, keys.length);
+		for (var i = 0; i < length; i++) obj[keys[i]] = this[i];
+		return obj;
+	},
+
+	link: function(object){
+		var result = {};
+		for (var i = 0, l = this.length; i < l; i++){
+			for (var key in object){
+				if (object[key](this[i])){
+					result[key] = this[i];
+					delete object[key];
+					break;
+				}
+			}
+		}
+		return result;
+	},
+
+	contains: function(item, from){
+		return this.indexOf(item, from) != -1;
+	},
+
+	extend: function(array){
+		for (var i = 0, j = array.length; i < j; i++) this.push(array[i]);
+		return this;
+	},
+	
+	getLast: function(){
+		return (this.length) ? this[this.length - 1] : null;
+	},
+
+	getRandom: function(){
+		return (this.length) ? this[$random(0, this.length - 1)] : null;
+	},
+
+	include: function(item){
+		if (!this.contains(item)) this.push(item);
+		return this;
+	},
+
+	combine: function(array){
+		for (var i = 0, l = array.length; i < l; i++) this.include(array[i]);
+		return this;
+	},
+
+	erase: function(item){
+		for (var i = this.length; i--; i){
+			if (this[i] === item) this.splice(i, 1);
+		}
+		return this;
+	},
+
+	empty: function(){
+		this.length = 0;
+		return this;
+	},
+
+	flatten: function(){
+		var array = [];
+		for (var i = 0, l = this.length; i < l; i++){
+			var type = $type(this[i]);
+			if (!type) continue;
+			array = array.concat((type == 'array' || type == 'collection' || type == 'arguments') ? Array.flatten(this[i]) : this[i]);
+		}
+		return array;
+	},
+
+	hexToRgb: function(array){
+		if (this.length != 3) return null;
+		var rgb = this.map(function(value){
+			if (value.length == 1) value += value;
+			return value.toInt(16);
+		});
+		return (array) ? rgb : 'rgb(' + rgb + ')';
+	},
+
+	rgbToHex: function(array){
+		if (this.length < 3) return null;
+		if (this.length == 4 && this[3] == 0 && !array) return 'transparent';
+		var hex = [];
+		for (var i = 0; i < 3; i++){
+			var bit = (this[i] - 0).toString(16);
+			hex.push((bit.length == 1) ? '0' + bit : bit);
+		}
+		return (array) ? hex : '#' + hex.join('');
+	}
+
+});
+
+
+/*
+---
+
+name: String
+
+description: Contains String Prototypes like camelCase, capitalize, test, and toInt.
+
+license: MIT-style license.
+
+requires: Native
+
+provides: String
+
+...
+*/
+
+String.implement({
+
+	test: function(regex, params){
+		return ((typeof regex == 'string') ? new RegExp(regex, params) : regex).test(this);
+	},
+
+	contains: function(string, separator){
+		return (separator) ? (separator + this + separator).indexOf(separator + string + separator) > -1 : this.indexOf(string) > -1;
+	},
+
+	trim: function(){
+		return this.replace(/^\s+|\s+$/g, '');
+	},
+
+	clean: function(){
+		return this.replace(/\s+/g, ' ').trim();
+	},
+
+	camelCase: function(){
+		return this.replace(/-\D/g, function(match){
+			return match.charAt(1).toUpperCase();
+		});
+	},
+
+	hyphenate: function(){
+		return this.replace(/[A-Z]/g, function(match){
+			return ('-' + match.charAt(0).toLowerCase());
+		});
+	},
+
+	capitalize: function(){
+		return this.replace(/\b[a-z]/g, function(match){
+			return match.toUpperCase();
+		});
+	},
+
+	escapeRegExp: function(){
+		return this.replace(/([-.*+?^${}()|[\]\/\\])/g, '\\$1');
+	},
+
+	toInt: function(base){
+		return parseInt(this, base || 10);
+	},
+
+	toFloat: function(){
+		return parseFloat(this);
+	},
+
+	hexToRgb: function(array){
+		var hex = this.match(/^#?(\w{1,2})(\w{1,2})(\w{1,2})$/);
+		return (hex) ? hex.slice(1).hexToRgb(array) : null;
+	},
+
+	rgbToHex: function(array){
+		var rgb = this.match(/\d{1,3}/g);
+		return (rgb) ? rgb.rgbToHex(array) : null;
+	},
+
+	stripScripts: function(option){
+		var scripts = '';
+		var text = this.replace(/<script[^>]*>([\s\S]*?)<\/script>/gi, function(){
+			scripts += arguments[1] + '\n';
+			return '';
+		});
+		if (option === true) $exec(scripts);
+		else if ($type(option) == 'function') option(scripts, text);
+		return text;
+	},
+
+	substitute: function(object, regexp){
+		return this.replace(regexp || (/\\?\{([^{}]+)\}/g), function(match, name){
+			if (match.charAt(0) == '\\') return match.slice(1);
+			return (object[name] != undefined) ? object[name] : '';
+		});
+	}
+
+});
+
+
+/*
+---
+
+name: Function
+
+description: Contains Function Prototypes like create, bind, pass, and delay.
+
+license: MIT-style license.
+
+requires: [Native, $util]
+
+provides: Function
+
+...
+*/
+
+try {
+	delete Function.prototype.bind;
+} catch(e){}
+
+Function.implement({
+
+	extend: function(properties){
+		for (var property in properties) this[property] = properties[property];
+		return this;
+	},
+
+	create: function(options){
+		var self = this;
+		options = options || {};
+		return function(event){
+			var args = options.arguments;
+			args = (args != undefined) ? $splat(args) : Array.slice(arguments, (options.event) ? 1 : 0);
+			if (options.event) args = [event || window.event].extend(args);
+			var returns = function(){
+				return self.apply(options.bind || null, args);
+			};
+			if (options.delay) return setTimeout(returns, options.delay);
+			if (options.periodical) return setInterval(returns, options.periodical);
+			if (options.attempt) return $try(returns);
+			return returns();
+		};
+	},
+
+	run: function(args, bind){
+		return this.apply(bind, $splat(args));
+	},
+
+	pass: function(args, bind){
+		return this.create({bind: bind, arguments: args});
+	},
+
+	bind: function(bind, args){
+		return this.create({bind: bind, arguments: args});
+	},
+
+	bindWithEvent: function(bind, args){
+		return this.create({bind: bind, arguments: args, event: true});
+	},
+
+	attempt: function(args, bind){
+		return this.create({bind: bind, arguments: args, attempt: true})();
+	},
+
+	delay: function(delay, bind, args){
+		return this.create({bind: bind, arguments: args, delay: delay})();
+	},
+
+	periodical: function(periodical, bind, args){
+		return this.create({bind: bind, arguments: args, periodical: periodical})();
+	}
+
+});
+
+
+/*
+---
+
+name: Number
+
+description: Contains Number Prototypes like limit, round, times, and ceil.
+
+license: MIT-style license.
+
+requires: [Native, $util]
+
+provides: Number
+
+...
+*/
+
+Number.implement({
+
+	limit: function(min, max){
+		return Math.min(max, Math.max(min, this));
+	},
+
+	round: function(precision){
+		precision = Math.pow(10, precision || 0);
+		return Math.round(this * precision) / precision;
+	},
+
+	times: function(fn, bind){
+		for (var i = 0; i < this; i++) fn.call(bind, i, this);
+	},
+
+	toFloat: function(){
+		return parseFloat(this);
+	},
+
+	toInt: function(base){
+		return parseInt(this, base || 10);
+	}
+
+});
+
+Number.alias('times', 'each');
+
+(function(math){
+	var methods = {};
+	math.each(function(name){
+		if (!Number[name]) methods[name] = function(){
+			return Math[name].apply(null, [this].concat($A(arguments)));
+		};
+	});
+	Number.implement(methods);
+})(['abs', 'acos', 'asin', 'atan', 'atan2', 'ceil', 'cos', 'exp', 'floor', 'log', 'max', 'min', 'pow', 'sin', 'sqrt', 'tan']);
+
+
+/*
+---
+
+name: Hash
+
+description: Contains Hash Prototypes. Provides a means for overcoming the JavaScript practical impossibility of extending native Objects.
+
+license: MIT-style license.
+
+requires: Hash.base
+
+provides: Hash
+
+...
+*/
+
+Hash.implement({
+
+	has: Object.prototype.hasOwnProperty,
+
+	keyOf: function(value){
+		for (var key in this){
+			if (this.hasOwnProperty(key) && this[key] === value) return key;
+		}
+		return null;
+	},
+
+	hasValue: function(value){
+		return (Hash.keyOf(this, value) !== null);
+	},
+
+	extend: function(properties){
+		Hash.each(properties || {}, function(value, key){
+			Hash.set(this, key, value);
+		}, this);
+		return this;
+	},
+
+	combine: function(properties){
+		Hash.each(properties || {}, function(value, key){
+			Hash.include(this, key, value);
+		}, this);
+		return this;
+	},
+
+	erase: function(key){
+		if (this.hasOwnProperty(key)) delete this[key];
+		return this;
+	},
+
+	get: function(key){
+		return (this.hasOwnProperty(key)) ? this[key] : null;
+	},
+
+	set: function(key, value){
+		if (!this[key] || this.hasOwnProperty(key)) this[key] = value;
+		return this;
+	},
+
+	empty: function(){
+		Hash.each(this, function(value, key){
+			delete this[key];
+		}, this);
+		return this;
+	},
+
+	include: function(key, value){
+		if (this[key] == undefined) this[key] = value;
+		return this;
+	},
+
+	map: function(fn, bind){
+		var results = new Hash;
+		Hash.each(this, function(value, key){
+			results.set(key, fn.call(bind, value, key, this));
+		}, this);
+		return results;
+	},
+
+	filter: function(fn, bind){
+		var results = new Hash;
+		Hash.each(this, function(value, key){
+			if (fn.call(bind, value, key, this)) results.set(key, value);
+		}, this);
+		return results;
+	},
+
+	every: function(fn, bind){
+		for (var key in this){
+			if (this.hasOwnProperty(key) && !fn.call(bind, this[key], key)) return false;
+		}
+		return true;
+	},
+
+	some: function(fn, bind){
+		for (var key in this){
+			if (this.hasOwnProperty(key) && fn.call(bind, this[key], key)) return true;
+		}
+		return false;
+	},
+
+	getKeys: function(){
+		var keys = [];
+		Hash.each(this, function(value, key){
+			keys.push(key);
+		});
+		return keys;
+	},
+
+	getValues: function(){
+		var values = [];
+		Hash.each(this, function(value){
+			values.push(value);
+		});
+		return values;
+	},
+
+	toQueryString: function(base){
+		var queryString = [];
+		Hash.each(this, function(value, key){
+			if (base) key = base + '[' + key + ']';
+			var result;
+			switch ($type(value)){
+				case 'object': result = Hash.toQueryString(value, key); break;
+				case 'array':
+					var qs = {};
+					value.each(function(val, i){
+						qs[i] = val;
+					});
+					result = Hash.toQueryString(qs, key);
+				break;
+				default: result = key + '=' + encodeURIComponent(value);
+			}
+			if (value != undefined) queryString.push(result);
+		});
+
+		return queryString.join('&');
+	}
+
+});
+
+Hash.alias({keyOf: 'indexOf', hasValue: 'contains'});
+
+
+/*
+---
+
+name: Class
+
+description: Contains the Class Function for easily creating, extending, and implementing reusable Classes.
+
+license: MIT-style license.
+
+requires: [$util, Native, Array, String, Function, Number, Hash]
+
+provides: Class
+
+...
+*/
+
+function Class(params){
+	
+	if (params instanceof Function) params = {initialize: params};
+	
+	var newClass = function(){
+		Object.reset(this);
+		if (newClass._prototyping) return this;
+		this._current = $empty;
+		var value = (this.initialize) ? this.initialize.apply(this, arguments) : this;
+		delete this._current; delete this.caller;
+		return value;
+	}.extend(this);
+	
+	newClass.implement(params);
+	
+	newClass.constructor = Class;
+	newClass.prototype.constructor = newClass;
+
+	return newClass;
+
+};
+
+Function.prototype.protect = function(){
+	this._protected = true;
+	return this;
+};
+
+Object.reset = function(object, key){
+		
+	if (key == null){
+		for (var p in object) Object.reset(object, p);
+		return object;
+	}
+	
+	delete object[key];
+	
+	switch ($type(object[key])){
+		case 'object':
+			var F = function(){};
+			F.prototype = object[key];
+			var i = new F;
+			object[key] = Object.reset(i);
+		break;
+		case 'array': object[key] = $unlink(object[key]); break;
+	}
+	
+	return object;
+	
+};
+
+new Native({name: 'Class', initialize: Class}).extend({
+
+	instantiate: function(F){
+		F._prototyping = true;
+		var proto = new F;
+		delete F._prototyping;
+		return proto;
+	},
+	
+	wrap: function(self, key, method){
+		if (method._origin) method = method._origin;
+		
+		return function(){
+			if (method._protected && this._current == null) throw new Error('The method "' + key + '" cannot be called.');
+			var caller = this.caller, current = this._current;
+			this.caller = current; this._current = arguments.callee;
+			var result = method.apply(this, arguments);
+			this._current = current; this.caller = caller;
+			return result;
+		}.extend({_owner: self, _origin: method, _name: key});
+
+	}
+	
+});
+
+Class.implement({
+	
+	implement: function(key, value){
+		
+		if ($type(key) == 'object'){
+			for (var p in key) this.implement(p, key[p]);
+			return this;
+		}
+		
+		var mutator = Class.Mutators[key];
+		
+		if (mutator){
+			value = mutator.call(this, value);
+			if (value == null) return this;
+		}
+		
+		var proto = this.prototype;
+
+		switch ($type(value)){
+			
+			case 'function':
+				if (value._hidden) return this;
+				proto[key] = Class.wrap(this, key, value);
+			break;
+			
+			case 'object':
+				var previous = proto[key];
+				if ($type(previous) == 'object') $mixin(previous, value);
+				else proto[key] = $unlink(value);
+			break;
+			
+			case 'array':
+				proto[key] = $unlink(value);
+			break;
+			
+			default: proto[key] = value;
+
+		}
+		
+		return this;
+
+	}
+	
+});
+
+Class.Mutators = {
+	
+	Extends: function(parent){
+
+		this.parent = parent;
+		this.prototype = Class.instantiate(parent);
+
+		this.implement('parent', function(){
+			var name = this.caller._name, previous = this.caller._owner.parent.prototype[name];
+			if (!previous) throw new Error('The method "' + name + '" has no parent.');
+			return previous.apply(this, arguments);
+		}.protect());
+
+	},
+
+	Implements: function(items){
+		$splat(items).each(function(item){
+			if (item instanceof Function) item = Class.instantiate(item);
+			this.implement(item);
+		}, this);
+
+	}
+	
+};
+
+
+/*
+---
+
+name: Class.Extras
+
+description: Contains Utility Classes that can be implemented into your own Classes to ease the execution of many common tasks.
+
+license: MIT-style license.
+
+requires: Class
+
+provides: [Chain, Events, Options, Class.Extras]
+
+...
+*/
+
+var Chain = new Class({
+
+	$chain: [],
+
+	chain: function(){
+		this.$chain.extend(Array.flatten(arguments));
+		return this;
+	},
+
+	callChain: function(){
+		return (this.$chain.length) ? this.$chain.shift().apply(this, arguments) : false;
+	},
+
+	clearChain: function(){
+		this.$chain.empty();
+		return this;
+	}
+
+});
+
+var Events = new Class({
+
+	$events: {},
+
+	addEvent: function(type, fn, internal){
+		type = Events.removeOn(type);
+		if (fn != $empty){
+			this.$events[type] = this.$events[type] || [];
+			this.$events[type].include(fn);
+			if (internal) fn.internal = true;
+		}
+		return this;
+	},
+
+	addEvents: function(events){
+		for (var type in events) this.addEvent(type, events[type]);
+		return this;
+	},
+
+	fireEvent: function(type, args, delay){
+		type = Events.removeOn(type);
+		if (!this.$events || !this.$events[type]) return this;
+		this.$events[type].each(function(fn){
+			fn.create({'bind': this, 'delay': delay, 'arguments': args})();
+		}, this);
+		return this;
+	},
+
+	removeEvent: function(type, fn){
+		type = Events.removeOn(type);
+		if (!this.$events[type]) return this;
+		if (!fn.internal) this.$events[type].erase(fn);
+		return this;
+	},
+
+	removeEvents: function(events){
+		var type;
+		if ($type(events) == 'object'){
+			for (type in events) this.removeEvent(type, events[type]);
+			return this;
+		}
+		if (events) events = Events.removeOn(events);
+		for (type in this.$events){
+			if (events && events != type) continue;
+			var fns = this.$events[type];
+			for (var i = fns.length; i--; i) this.removeEvent(type, fns[i]);
+		}
+		return this;
+	}
+
+});
+
+Events.removeOn = function(string){
+	return string.replace(/^on([A-Z])/, function(full, first){
+		return first.toLowerCase();
+	});
+};
+
+var Options = new Class({
+
+	setOptions: function(){
+		this.options = $merge.run([this.options].extend(arguments));
+		if (!this.addEvent) return this;
+		for (var option in this.options){
+			if ($type(this.options[option]) != 'function' || !(/^on[A-Z]/).test(option)) continue;
+			this.addEvent(option, this.options[option]);
+			delete this.options[option];
+		}
+		return this;
+	}
+
+});
+
+
+/*
+---
+
+name: Browser
+
+description: The Browser Core. Contains Browser initialization, Window and Document, and the Browser Hash.
+
+license: MIT-style license.
+
+requires: [Native, $util]
+
+provides: [Browser, Window, Document, $exec]
+
+...
+*/
+
+var Browser = $merge({
+
+	Engine: {name: 'unknown', version: 0},
+
+	Platform: {name: (window.orientation != undefined) ? 'ipod' : (navigator.platform.match(/mac|win|linux/i) || ['other'])[0].toLowerCase()},
+
+	Features: {xpath: !!(document.evaluate), air: !!(window.runtime), query: !!(document.querySelector)},
+
+	Plugins: {},
+
+	Engines: {
+
+		presto: function(){
+			return (!window.opera) ? false : ((arguments.callee.caller) ? 960 : ((document.getElementsByClassName) ? 950 : 925));
+		},
+
+		trident: function(){
+			return (!window.ActiveXObject) ? false : ((window.XMLHttpRequest) ? ((document.querySelectorAll) ? 6 : 5) : 4);
+		},
+
+		webkit: function(){
+			return (navigator.taintEnabled) ? false : ((Browser.Features.xpath) ? ((Browser.Features.query) ? 525 : 420) : 419);
+		},
+
+		gecko: function(){
+			return (!document.getBoxObjectFor && window.mozInnerScreenX == null) ? false : ((document.getElementsByClassName) ? 19 : 18);
+		}
+
+	}
+
+}, Browser || {});
+
+Browser.Platform[Browser.Platform.name] = true;
+
+Browser.detect = function(){
+
+	for (var engine in this.Engines){
+		var version = this.Engines[engine]();
+		if (version){
+			this.Engine = {name: engine, version: version};
+			this.Engine[engine] = this.Engine[engine + version] = true;
+			break;
+		}
+	}
+
+	return {name: engine, version: version};
+
+};
+
+Browser.detect();
+
+Browser.Request = function(){
+	return $try(function(){
+		return new XMLHttpRequest();
+	}, function(){
+		return new ActiveXObject('MSXML2.XMLHTTP');
+	}, function(){
+		return new ActiveXObject('Microsoft.XMLHTTP');
+	});
+};
+
+Browser.Features.xhr = !!(Browser.Request());
+
+Browser.Plugins.Flash = (function(){
+	var version = ($try(function(){
+		return navigator.plugins['Shockwave Flash'].description;
+	}, function(){
+		return new ActiveXObject('ShockwaveFlash.ShockwaveFlash').GetVariable('$version');
+	}) || '0 r0').match(/\d+/g);
+	return {version: parseInt(version[0] || 0 + '.' + version[1], 10) || 0, build: parseInt(version[2], 10) || 0};
+})();
+
+function $exec(text){
+	if (!text) return text;
+	if (window.execScript){
+		window.execScript(text);
+	} else {
+		var script = document.createElement('script');
+		script.setAttribute('type', 'text/javascript');
+		script[(Browser.Engine.webkit && Browser.Engine.version < 420) ? 'innerText' : 'text'] = text;
+		document.head.appendChild(script);
+		document.head.removeChild(script);
+	}
+	return text;
+};
+
+Native.UID = 1;
+
+var $uid = (Browser.Engine.trident) ? function(item){
+	return (item.uid || (item.uid = [Native.UID++]))[0];
+} : function(item){
+	return item.uid || (item.uid = Native.UID++);
+};
+
+var Window = new Native({
+
+	name: 'Window',
+
+	legacy: (Browser.Engine.trident) ? null: window.Window,
+
+	initialize: function(win){
+		$uid(win);
+		if (!win.Element){
+			win.Element = $empty;
+			if (Browser.Engine.webkit) win.document.createElement("iframe"); //fixes safari 2
+			win.Element.prototype = (Browser.Engine.webkit) ? window["[[DOMElement.prototype]]"] : {};
+		}
+		win.document.window = win;
+		return $extend(win, Window.Prototype);
+	},
+
+	afterImplement: function(property, value){
+		window[property] = Window.Prototype[property] = value;
+	}
+
+});
+
+Window.Prototype = {$family: {name: 'window'}};
+
+new Window(window);
+
+var Document = new Native({
+
+	name: 'Document',
+
+	legacy: (Browser.Engine.trident) ? null: window.Document,
+
+	initialize: function(doc){
+		$uid(doc);
+		doc.head = doc.getElementsByTagName('head')[0];
+		doc.html = doc.getElementsByTagName('html')[0];
+		if (Browser.Engine.trident && Browser.Engine.version <= 4) $try(function(){
+			doc.execCommand("BackgroundImageCache", false, true);
+		});
+		if (Browser.Engine.trident) doc.window.attachEvent('onunload', function(){
+			doc.window.detachEvent('onunload', arguments.callee);
+			doc.head = doc.html = doc.window = null;
+		});
+		return $extend(doc, Document.Prototype);
+	},
+
+	afterImplement: function(property, value){
+		document[property] = Document.Prototype[property] = value;
+	}
+
+});
+
+Document.Prototype = {$family: {name: 'document'}};
+
+new Document(document);
+
+
+/*
+---
+
+name: Element
+
+description: One of the most important items in MooTools. Contains the dollar function, the dollars function, and an handful of cross-browser, time-saver methods to let you easily work with HTML Elements.
+
+license: MIT-style license.
+
+requires: [Window, Document, Array, String, Function, Number, Hash]
+
+provides: [Element, Elements, $, $$, Iframe]
+
+...
+*/
+
+var Element = new Native({
+
+	name: 'Element',
+
+	legacy: window.Element,
+
+	initialize: function(tag, props){
+		var konstructor = Element.Constructors.get(tag);
+		if (konstructor) return konstructor(props);
+		if (typeof tag == 'string') return document.newElement(tag, props);
+		return document.id(tag).set(props);
+	},
+
+	afterImplement: function(key, value){
+		Element.Prototype[key] = value;
+		if (Array[key]) return;
+		Elements.implement(key, function(){
+			var items = [], elements = true;
+			for (var i = 0, j = this.length; i < j; i++){
+				var returns = this[i][key].apply(this[i], arguments);
+				items.push(returns);
+				if (elements) elements = ($type(returns) == 'element');
+			}
+			return (elements) ? new Elements(items) : items;
+		});
+	}
+
+});
+
+Element.Prototype = {$family: {name: 'element'}};
+
+Element.Constructors = new Hash;
+
+var IFrame = new Native({
+
+	name: 'IFrame',
+
+	generics: false,
+
+	initialize: function(){
+		var params = Array.link(arguments, {properties: Object.type, iframe: $defined});
+		var props = params.properties || {};
+		var iframe = document.id(params.iframe);
+		var onload = props.onload || $empty;
+		delete props.onload;
+		props.id = props.name = $pick(props.id, props.name, iframe ? (iframe.id || iframe.name) : 'IFrame_' + $time());
+		iframe = new Element(iframe || 'iframe', props);
+		var onFrameLoad = function(){
+			var host = $try(function(){
+				return iframe.contentWindow.location.host;
+			});
+			if (!host || host == window.location.host){
+				var win = new Window(iframe.contentWindow);
+				new Document(iframe.contentWindow.document);
+				$extend(win.Element.prototype, Element.Prototype);
+			}
+			onload.call(iframe.contentWindow, iframe.contentWindow.document);
+		};
+		var contentWindow = $try(function(){
+			return iframe.contentWindow;
+		});
+		((contentWindow && contentWindow.document.body) || window.frames[props.id]) ? onFrameLoad() : iframe.addListener('load', onFrameLoad);
+		return iframe;
+	}
+
+});
+
+var Elements = new Native({
+
+	initialize: function(elements, options){
+		options = $extend({ddup: true, cash: true}, options);
+		elements = elements || [];
+		if (options.ddup || options.cash){
+			var uniques = {}, returned = [];
+			for (var i = 0, l = elements.length; i < l; i++){
+				var el = document.id(elements[i], !options.cash);
+				if (options.ddup){
+					if (uniques[el.uid]) continue;
+					uniques[el.uid] = true;
+				}
+				if (el) returned.push(el);
+			}
+			elements = returned;
+		}
+		return (options.cash) ? $extend(elements, this) : elements;
+	}
+
+});
+
+Elements.implement({
+
+	filter: function(filter, bind){
+		if (!filter) return this;
+		return new Elements(Array.filter(this, (typeof filter == 'string') ? function(item){
+			return item.match(filter);
+		} : filter, bind));
+	}
+
+});
+
+(function(){
+
+/*<ltIE8>*/
+var createElementAcceptsHTML;
+try {
+	var x = document.createElement('<input name=x>');
+	createElementAcceptsHTML = (x.name == 'x');
+} catch(e){}
+
+var escapeQuotes = function(html){
+	return ('' + html).replace(/&/g,'&amp;').replace(/"/g,'&quot;');
+};
+/*</ltIE8>*/
+
+Document.implement({
+
+	newElement: function(tag, props){
+		if (props && props.checked != null) props.defaultChecked = props.checked;
+		/*<ltIE8>*/// Fix for readonly name and type properties in IE < 8
+		if (createElementAcceptsHTML && props){
+			tag = '<' + tag;
+			if (props.name) tag += ' name="' + escapeQuotes(props.name) + '"';
+			if (props.type) tag += ' type="' + escapeQuotes(props.type) + '"';
+			tag += '>';
+			delete props.name;
+			delete props.type;
+		}
+		/*</ltIE8>*/
+		return this.id(this.createElement(tag)).set(props);
+	},
+
+	newTextNode: function(text){
+		return this.createTextNode(text);
+	},
+
+	getDocument: function(){
+		return this;
+	},
+
+	getWindow: function(){
+		return this.window;
+	},
+	
+	id: (function(){
+		
+		var types = {
+
+			string: function(id, nocash, doc){
+				id = doc.getElementById(id);
+				return (id) ? types.element(id, nocash) : null;
+			},
+			
+			element: function(el, nocash){
+				$uid(el);
+				if (!nocash && !el.$family && !(/^object|embed$/i).test(el.tagName)){
+					var proto = Element.Prototype;
+					for (var p in proto) el[p] = proto[p];
+				};
+				return el;
+			},
+			
+			object: function(obj, nocash, doc){
+				if (obj.toElement) return types.element(obj.toElement(doc), nocash);
+				return null;
+			}
+			
+		};
+
+		types.textnode = types.whitespace = types.window = types.document = $arguments(0);
+		
+		return function(el, nocash, doc){
+			if (el && el.$family && el.uid) return el;
+			var type = $type(el);
+			return (types[type]) ? types[type](el, nocash, doc || document) : null;
+		};
+
+	})()
+
+});
+
+})();
+
+if (window.$ == null) Window.implement({
+	$: function(el, nc){
+		return document.id(el, nc, this.document);
+	}
+});
+
+Window.implement({
+
+	$$: function(selector){
+		if (arguments.length == 1 && typeof selector == 'string') return this.document.getElements(selector);
+		var elements = [];
+		var args = Array.flatten(arguments);
+		for (var i = 0, l = args.length; i < l; i++){
+			var item = args[i];
+			switch ($type(item)){
+				case 'element': elements.push(item); break;
+				case 'string': elements.extend(this.document.getElements(item, true));
+			}
+		}
+		return new Elements(elements);
+	},
+
+	getDocument: function(){
+		return this.document;
+	},
+
+	getWindow: function(){
+		return this;
+	}
+
+});
+
+Native.implement([Element, Document], {
+
+	getElement: function(selector, nocash){
+		return document.id(this.getElements(selector, true)[0] || null, nocash);
+	},
+
+	getElements: function(tags, nocash){
+		tags = tags.split(',');
+		var elements = [];
+		var ddup = (tags.length > 1);
+		tags.each(function(tag){
+			var partial = this.getElementsByTagName(tag.trim());
+			(ddup) ? elements.extend(partial) : elements = partial;
+		}, this);
+		return new Elements(elements, {ddup: ddup, cash: !nocash});
+	}
+
+});
+
+(function(){
+
+var collected = {}, storage = {};
+var props = {input: 'checked', option: 'selected', textarea: (Browser.Engine.webkit && Browser.Engine.version < 420) ? 'innerHTML' : 'value'};
+
+var get = function(uid){
+	return (storage[uid] || (storage[uid] = {}));
+};
+
+var clean = function(item, retain){
+	if (!item) return;
+	var uid = item.uid;
+	if (retain !== true) retain = false;
+	if (Browser.Engine.trident){
+		if (item.clearAttributes){
+			var clone = retain && item.cloneNode(false);
+			item.clearAttributes();
+			if (clone) item.mergeAttributes(clone);
+		} else if (item.removeEvents){
+			item.removeEvents();
+		}
+		if ((/object/i).test(item.tagName)){
+			for (var p in item){
+				if (typeof item[p] == 'function') item[p] = $empty;
+			}
+			Element.dispose(item);
+		}
+	}	
+	if (!uid) return;
+	collected[uid] = storage[uid] = null;
+};
+
+var purge = function(){
+	Hash.each(collected, clean);
+	if (Browser.Engine.trident) $A(document.getElementsByTagName('object')).each(clean);
+	if (window.CollectGarbage) CollectGarbage();
+	collected = storage = null;
+};
+
+var walk = function(element, walk, start, match, all, nocash){
+	var el = element[start || walk];
+	var elements = [];
+	while (el){
+		if (el.nodeType == 1 && (!match || Element.match(el, match))){
+			if (!all) return document.id(el, nocash);
+			elements.push(el);
+		}
+		el = el[walk];
+	}
+	return (all) ? new Elements(elements, {ddup: false, cash: !nocash}) : null;
+};
+
+var attributes = {
+	'html': 'innerHTML',
+	'class': 'className',
+	'for': 'htmlFor',
+	'defaultValue': 'defaultValue',
+	'text': (Browser.Engine.trident || (Browser.Engine.webkit && Browser.Engine.version < 420)) ? 'innerText' : 'textContent'
+};
+var bools = ['compact', 'nowrap', 'ismap', 'declare', 'noshade', 'checked', 'disabled', 'readonly', 'multiple', 'selected', 'noresize', 'defer'];
+var camels = ['value', 'type', 'defaultValue', 'accessKey', 'cellPadding', 'cellSpacing', 'colSpan', 'frameBorder', 'maxLength', 'readOnly', 'rowSpan', 'tabIndex', 'useMap'];
+
+bools = bools.associate(bools);
+
+Hash.extend(attributes, bools);
+Hash.extend(attributes, camels.associate(camels.map(String.toLowerCase)));
+
+var inserters = {
+
+	before: function(context, element){
+		if (element.parentNode) element.parentNode.insertBefore(context, element);
+	},
+
+	after: function(context, element){
+		if (!element.parentNode) return;
+		var next = element.nextSibling;
+		(next) ? element.parentNode.insertBefore(context, next) : element.parentNode.appendChild(context);
+	},
+
+	bottom: function(context, element){
+		element.appendChild(context);
+	},
+
+	top: function(context, element){
+		var first = element.firstChild;
+		(first) ? element.insertBefore(context, first) : element.appendChild(context);
+	}
+
+};
+
+inserters.inside = inserters.bottom;
+
+Hash.each(inserters, function(inserter, where){
+
+	where = where.capitalize();
+
+	Element.implement('inject' + where, function(el){
+		inserter(this, document.id(el, true));
+		return this;
+	});
+
+	Element.implement('grab' + where, function(el){
+		inserter(document.id(el, true), this);
+		return this;
+	});
+
+});
+
+Element.implement({
+
+	set: function(prop, value){
+		switch ($type(prop)){
+			case 'object':
+				for (var p in prop) this.set(p, prop[p]);
+				break;
+			case 'string':
+				var property = Element.Properties.get(prop);
+				(property && property.set) ? property.set.apply(this, Array.slice(arguments, 1)) : this.setProperty(prop, value);
+		}
+		return this;
+	},
+
+	get: function(prop){
+		var property = Element.Properties.get(prop);
+		return (property && property.get) ? property.get.apply(this, Array.slice(arguments, 1)) : this.getProperty(prop);
+	},
+
+	erase: function(prop){
+		var property = Element.Properties.get(prop);
+		(property && property.erase) ? property.erase.apply(this) : this.removeProperty(prop);
+		return this;
+	},
+
+	setProperty: function(attribute, value){
+		var key = attributes[attribute];
+		if (value == undefined) return this.removeProperty(attribute);
+		if (key && bools[attribute]) value = !!value;
+		(key) ? this[key] = value : this.setAttribute(attribute, '' + value);
+		return this;
+	},
+
+	setProperties: function(attributes){
+		for (var attribute in attributes) this.setProperty(attribute, attributes[attribute]);
+		return this;
+	},
+
+	getProperty: function(attribute){
+		var key = attributes[attribute];
+		var value = (key) ? this[key] : this.getAttribute(attribute, 2);
+		return (bools[attribute]) ? !!value : (key) ? value : value || null;
+	},
+
+	getProperties: function(){
+		var args = $A(arguments);
+		return args.map(this.getProperty, this).associate(args);
+	},
+
+	removeProperty: function(attribute){
+		var key = attributes[attribute];
+		(key) ? this[key] = (key && bools[attribute]) ? false : '' : this.removeAttribute(attribute);
+		return this;
+	},
+
+	removeProperties: function(){
+		Array.each(arguments, this.removeProperty, this);
+		return this;
+	},
+
+	hasClass: function(className){
+		return this.className.contains(className, ' ');
+	},
+
+	addClass: function(className){
+		if (!this.hasClass(className)) this.className = (this.className + ' ' + className).clean();
+		return this;
+	},
+
+	removeClass: function(className){
+		this.className = this.className.replace(new RegExp('(^|\\s)' + className + '(?:\\s|$)'), '$1');
+		return this;
+	},
+
+	toggleClass: function(className){
+		return this.hasClass(className) ? this.removeClass(className) : this.addClass(className);
+	},
+
+	adopt: function(){
+		Array.flatten(arguments).each(function(element){
+			element = document.id(element, true);
+			if (element) this.appendChild(element);
+		}, this);
+		return this;
+	},
+
+	appendText: function(text, where){
+		return this.grab(this.getDocument().newTextNode(text), where);
+	},
+
+	grab: function(el, where){
+		inserters[where || 'bottom'](document.id(el, true), this);
+		return this;
+	},
+
+	inject: function(el, where){
+		inserters[where || 'bottom'](this, document.id(el, true));
+		return this;
+	},
+
+	replaces: function(el){
+		el = document.id(el, true);
+		el.parentNode.replaceChild(this, el);
+		return this;
+	},
+
+	wraps: function(el, where){
+		el = document.id(el, true);
+		return this.replaces(el).grab(el, where);
+	},
+
+	getPrevious: function(match, nocash){
+		return walk(this, 'previousSibling', null, match, false, nocash);
+	},
+
+	getAllPrevious: function(match, nocash){
+		return walk(this, 'previousSibling', null, match, true, nocash);
+	},
+
+	getNext: function(match, nocash){
+		return walk(this, 'nextSibling', null, match, false, nocash);
+	},
+
+	getAllNext: function(match, nocash){
+		return walk(this, 'nextSibling', null, match, true, nocash);
+	},
+
+	getFirst: function(match, nocash){
+		return walk(this, 'nextSibling', 'firstChild', match, false, nocash);
+	},
+
+	getLast: function(match, nocash){
+		return walk(this, 'previousSibling', 'lastChild', match, false, nocash);
+	},
+
+	getParent: function(match, nocash){
+		return walk(this, 'parentNode', null, match, false, nocash);
+	},
+
+	getParents: function(match, nocash){
+		return walk(this, 'parentNode', null, match, true, nocash);
+	},
+	
+	getSiblings: function(match, nocash){
+		return this.getParent().getChildren(match, nocash).erase(this);
+	},
+
+	getChildren: function(match, nocash){
+		return walk(this, 'nextSibling', 'firstChild', match, true, nocash);
+	},
+
+	getWindow: function(){
+		return this.ownerDocument.window;
+	},
+
+	getDocument: function(){
+		return this.ownerDocument;
+	},
+
+	getElementById: function(id, nocash){
+		var el = this.ownerDocument.getElementById(id);
+		if (!el) return null;
+		for (var parent = el.parentNode; parent != this; parent = parent.parentNode){
+			if (!parent) return null;
+		}
+		return document.id(el, nocash);
+	},
+
+	getSelected: function(){
+		return new Elements($A(this.options).filter(function(option){
+			return option.selected;
+		}));
+	},
+
+	getComputedStyle: function(property){
+		if (this.currentStyle) return this.currentStyle[property.camelCase()];
+		var computed = this.getDocument().defaultView.getComputedStyle(this, null);
+		return (computed) ? computed.getPropertyValue([property.hyphenate()]) : null;
+	},
+
+	toQueryString: function(){
+		var queryString = [];
+		this.getElements('input, select, textarea', true).each(function(el){
+			if (!el.name || el.disabled || el.type == 'submit' || el.type == 'reset' || el.type == 'file') return;
+			var value = (el.tagName.toLowerCase() == 'select') ? Element.getSelected(el).map(function(opt){
+				return opt.value;
+			}) : ((el.type == 'radio' || el.type == 'checkbox') && !el.checked) ? null : el.value;
+			$splat(value).each(function(val){
+				if (typeof val != 'undefined') queryString.push(el.name + '=' + encodeURIComponent(val));
+			});
+		});
+		return queryString.join('&');
+	},
+
+	clone: function(contents, keepid){
+		contents = contents !== false;
+		var clone = this.cloneNode(contents);
+		var clean = function(node, element){
+			if (!keepid) node.removeAttribute('id');
+			if (Browser.Engine.trident){
+				node.clearAttributes();
+				node.mergeAttributes(element);
+				node.removeAttribute('uid');
+				if (node.options){
+					var no = node.options, eo = element.options;
+					for (var j = no.length; j--;) no[j].selected = eo[j].selected;
+				}
+			}
+			var prop = props[element.tagName.toLowerCase()];
+			if (prop && element[prop]) node[prop] = element[prop];
+		};
+
+		if (contents){
+			var ce = clone.getElementsByTagName('*'), te = this.getElementsByTagName('*');
+			for (var i = ce.length; i--;) clean(ce[i], te[i]);
+		}
+
+		clean(clone, this);
+		return document.id(clone);
+	},
+
+	destroy: function(){
+		Element.empty(this);
+		Element.dispose(this);
+		clean(this, true);
+		return null;
+	},
+
+	empty: function(){
+		$A(this.childNodes).each(function(node){
+			Element.destroy(node);
+		});
+		return this;
+	},
+
+	dispose: function(){
+		return (this.parentNode) ? this.parentNode.removeChild(this) : this;
+	},
+
+	hasChild: function(el){
+		el = document.id(el, true);
+		if (!el) return false;
+		if (Browser.Engine.webkit && Browser.Engine.version < 420) return $A(this.getElementsByTagName(el.tagName)).contains(el);
+		return (this.contains) ? (this != el && this.contains(el)) : !!(this.compareDocumentPosition(el) & 16);
+	},
+
+	match: function(tag){
+		return (!tag || (tag == this) || (Element.get(this, 'tag') == tag));
+	}
+
+});
+
+Native.implement([Element, Window, Document], {
+
+	addListener: function(type, fn){
+		if (type == 'unload'){
+			var old = fn, self = this;
+			fn = function(){
+				self.removeListener('unload', fn);
+				old();
+			};
+		} else {
+			collected[this.uid] = this;
+		}
+		if (this.addEventListener) this.addEventListener(type, fn, false);
+		else this.attachEvent('on' + type, fn);
+		return this;
+	},
+
+	removeListener: function(type, fn){
+		if (this.removeEventListener) this.removeEventListener(type, fn, false);
+		else this.detachEvent('on' + type, fn);
+		return this;
+	},
+
+	retrieve: function(property, dflt){
+		var storage = get(this.uid), prop = storage[property];
+		if (dflt != undefined && prop == undefined) prop = storage[property] = dflt;
+		return $pick(prop);
+	},
+
+	store: function(property, value){
+		var storage = get(this.uid);
+		storage[property] = value;
+		return this;
+	},
+
+	eliminate: function(property){
+		var storage = get(this.uid);
+		delete storage[property];
+		return this;
+	}
+
+});
+
+window.addListener('unload', purge);
+
+})();
+
+Element.Properties = new Hash;
+
+Element.Properties.style = {
+
+	set: function(style){
+		this.style.cssText = style;
+	},
+
+	get: function(){
+		return this.style.cssText;
+	},
+
+	erase: function(){
+		this.style.cssText = '';
+	}
+
+};
+
+Element.Properties.tag = {
+
+	get: function(){
+		return this.tagName.toLowerCase();
+	}
+
+};
+
+Element.Properties.html = (function(){
+	var wrapper = document.createElement('div');
+
+	var translations = {
+		table: [1, '<table>', '</table>'],
+		select: [1, '<select>', '</select>'],
+		tbody: [2, '<table><tbody>', '</tbody></table>'],
+		tr: [3, '<table><tbody><tr>', '</tr></tbody></table>']
+	};
+	translations.thead = translations.tfoot = translations.tbody;
+
+	var html = {
+		set: function(){
+			var html = Array.flatten(arguments).join('');
+			var wrap = Browser.Engine.trident && translations[this.get('tag')];
+			if (wrap){
+				var first = wrapper;
+				first.innerHTML = wrap[1] + html + wrap[2];
+				for (var i = wrap[0]; i--;) first = first.firstChild;
+				this.empty().adopt(first.childNodes);
+			} else {
+				this.innerHTML = html;
+			}
+		}
+	};
+
+	html.erase = html.set;
+
+	return html;
+})();
+
+if (Browser.Engine.webkit && Browser.Engine.version < 420) Element.Properties.text = {
+	get: function(){
+		if (this.innerText) return this.innerText;
+		var temp = this.ownerDocument.newElement('div', {html: this.innerHTML}).inject(this.ownerDocument.body);
+		var text = temp.innerText;
+		temp.destroy();
+		return text;
+	}
+};
+
+
+/*
+---
+
+name: Element.Dimensions
+
+description: Contains methods to work with size, scroll, or positioning of Elements and the window object.
+
+license: MIT-style license.
+
+credits:
+  - Element positioning based on the [qooxdoo](http://qooxdoo.org/) code and smart browser fixes, [LGPL License](http://www.gnu.org/licenses/lgpl.html).
+  - Viewport dimensions based on [YUI](http://developer.yahoo.com/yui/) code, [BSD License](http://developer.yahoo.com/yui/license.html).
+
+requires: Element
+
+provides: Element.Dimensions
+
+...
+*/
+
+(function(){
+
+Element.implement({
+
+	scrollTo: function(x, y){
+		if (isBody(this)){
+			this.getWindow().scrollTo(x, y);
+		} else {
+			this.scrollLeft = x;
+			this.scrollTop = y;
+		}
+		return this;
+	},
+
+	getSize: function(){
+		if (isBody(this)) return this.getWindow().getSize();
+		return {x: this.offsetWidth, y: this.offsetHeight};
+	},
+
+	getScrollSize: function(){
+		if (isBody(this)) return this.getWindow().getScrollSize();
+		return {x: this.scrollWidth, y: this.scrollHeight};
+	},
+
+	getScroll: function(){
+		if (isBody(this)) return this.getWindow().getScroll();
+		return {x: this.scrollLeft, y: this.scrollTop};
+	},
+
+	getScrolls: function(){
+		var element = this, position = {x: 0, y: 0};
+		while (element && !isBody(element)){
+			position.x += element.scrollLeft;
+			position.y += element.scrollTop;
+			element = element.parentNode;
+		}
+		return position;
+	},
+
+	getOffsetParent: function(){
+		var element = this;
+		if (isBody(element)) return null;
+		if (!Browser.Engine.trident) return element.offsetParent;
+		while ((element = element.parentNode) && !isBody(element)){
+			if (styleString(element, 'position') != 'static') return element;
+		}
+		return null;
+	},
+
+	getOffsets: function(){
+		if (this.getBoundingClientRect){
+			var bound = this.getBoundingClientRect(),
+				html = document.id(this.getDocument().documentElement),
+				htmlScroll = html.getScroll(),
+				elemScrolls = this.getScrolls(),
+				elemScroll = this.getScroll(),
+				isFixed = (styleString(this, 'position') == 'fixed');
+
+			return {
+				x: bound.left.toInt() + elemScrolls.x - elemScroll.x + ((isFixed) ? 0 : htmlScroll.x) - html.clientLeft,
+				y: bound.top.toInt()  + elemScrolls.y - elemScroll.y + ((isFixed) ? 0 : htmlScroll.y) - html.clientTop
+			};
+		}
+
+		var element = this, position = {x: 0, y: 0};
+		if (isBody(this)) return position;
+
+		while (element && !isBody(element)){
+			position.x += element.offsetLeft;
+			position.y += element.offsetTop;
+
+			if (Browser.Engine.gecko){
+				if (!borderBox(element)){
+					position.x += leftBorder(element);
+					position.y += topBorder(element);
+				}
+				var parent = element.parentNode;
+				if (parent && styleString(parent, 'overflow') != 'visible'){
+					position.x += leftBorder(parent);
+					position.y += topBorder(parent);
+				}
+			} else if (element != this && Browser.Engine.webkit){
+				position.x += leftBorder(element);
+				position.y += topBorder(element);
+			}
+
+			element = element.offsetParent;
+		}
+		if (Browser.Engine.gecko && !borderBox(this)){
+			position.x -= leftBorder(this);
+			position.y -= topBorder(this);
+		}
+		return position;
+	},
+
+	getPosition: function(relative){
+		if (isBody(this)) return {x: 0, y: 0};
+		var offset = this.getOffsets(),
+				scroll = this.getScrolls();
+		var position = {
+			x: offset.x - scroll.x,
+			y: offset.y - scroll.y
+		};
+		var relativePosition = (relative && (relative = document.id(relative))) ? relative.getPosition() : {x: 0, y: 0};
+		return {x: position.x - relativePosition.x, y: position.y - relativePosition.y};
+	},
+
+	getCoordinates: function(element){
+		if (isBody(this)) return this.getWindow().getCoordinates();
+		var position = this.getPosition(element),
+				size = this.getSize();
+		var obj = {
+			left: position.x,
+			top: position.y,
+			width: size.x,
+			height: size.y
+		};
+		obj.right = obj.left + obj.width;
+		obj.bottom = obj.top + obj.height;
+		return obj;
+	},
+
+	computePosition: function(obj){
+		return {
+			left: obj.x - styleNumber(this, 'margin-left'),
+			top: obj.y - styleNumber(this, 'margin-top')
+		};
+	},
+
+	setPosition: function(obj){
+		return this.setStyles(this.computePosition(obj));
+	}
+
+});
+
+
+Native.implement([Document, Window], {
+
+	getSize: function(){
+		if (Browser.Engine.presto || Browser.Engine.webkit){
+			var win = this.getWindow();
+			return {x: win.innerWidth, y: win.innerHeight};
+		}
+		var doc = getCompatElement(this);
+		return {x: doc.clientWidth, y: doc.clientHeight};
+	},
+
+	getScroll: function(){
+		var win = this.getWindow(), doc = getCompatElement(this);
+		return {x: win.pageXOffset || doc.scrollLeft, y: win.pageYOffset || doc.scrollTop};
+	},
+
+	getScrollSize: function(){
+		var doc = getCompatElement(this), min = this.getSize();
+		return {x: Math.max(doc.scrollWidth, min.x), y: Math.max(doc.scrollHeight, min.y)};
+	},
+
+	getPosition: function(){
+		return {x: 0, y: 0};
+	},
+
+	getCoordinates: function(){
+		var size = this.getSize();
+		return {top: 0, left: 0, bottom: size.y, right: size.x, height: size.y, width: size.x};
+	}
+
+});
+
+// private methods
+
+var styleString = Element.getComputedStyle;
+
+function styleNumber(element, style){
+	return styleString(element, style).toInt() || 0;
+};
+
+function borderBox(element){
+	return styleString(element, '-moz-box-sizing') == 'border-box';
+};
+
+function topBorder(element){
+	return styleNumber(element, 'border-top-width');
+};
+
+function leftBorder(element){
+	return styleNumber(element, 'border-left-width');
+};
+
+function isBody(element){
+	return (/^(?:body|html)$/i).test(element.tagName);
+};
+
+function getCompatElement(element){
+	var doc = element.getDocument();
+	return (!doc.compatMode || doc.compatMode == 'CSS1Compat') ? doc.html : doc.body;
+};
+
+})();
+
+//aliases
+Element.alias('setPosition', 'position'); //compatability
+
+Native.implement([Window, Document, Element], {
+
+	getHeight: function(){
+		return this.getSize().y;
+	},
+
+	getWidth: function(){
+		return this.getSize().x;
+	},
+
+	getScrollTop: function(){
+		return this.getScroll().y;
+	},
+
+	getScrollLeft: function(){
+		return this.getScroll().x;
+	},
+
+	getScrollHeight: function(){
+		return this.getScrollSize().y;
+	},
+
+	getScrollWidth: function(){
+		return this.getScrollSize().x;
+	},
+
+	getTop: function(){
+		return this.getPosition().y;
+	},
+
+	getLeft: function(){
+		return this.getPosition().x;
+	}
+
+});
+
+
+/*
+---
+
+name: Event
+
+description: Contains the Event Class, to make the event object cross-browser.
+
+license: MIT-style license.
+
+requires: [Window, Document, Hash, Array, Function, String]
+
+provides: Event
+
+...
+*/
+
+var Event = new Native({
+
+	name: 'Event',
+
+	initialize: function(event, win){
+		win = win || window;
+		var doc = win.document;
+		event = event || win.event;
+		if (event.$extended) return event;
+		this.$extended = true;
+		var type = event.type;
+		var target = event.target || event.srcElement;
+		while (target && target.nodeType == 3) target = target.parentNode;
+
+		if (type.test(/key/)){
+			var code = event.which || event.keyCode;
+			var key = Event.Keys.keyOf(code);
+			if (type == 'keydown'){
+				var fKey = code - 111;
+				if (fKey > 0 && fKey < 13) key = 'f' + fKey;
+			}
+			key = key || String.fromCharCode(code).toLowerCase();
+		} else if (type.match(/(click|mouse|menu)/i)){
+			doc = (!doc.compatMode || doc.compatMode == 'CSS1Compat') ? doc.html : doc.body;
+			var page = {
+				x: event.pageX || event.clientX + doc.scrollLeft,
+				y: event.pageY || event.clientY + doc.scrollTop
+			};
+			var client = {
+				x: (event.pageX) ? event.pageX - win.pageXOffset : event.clientX,
+				y: (event.pageY) ? event.pageY - win.pageYOffset : event.clientY
+			};
+			if (type.match(/DOMMouseScroll|mousewheel/)){
+				var wheel = (event.wheelDelta) ? event.wheelDelta / 120 : -(event.detail || 0) / 3;
+			}
+			var rightClick = (event.which == 3) || (event.button == 2);
+			var related = null;
+			if (type.match(/over|out/)){
+				switch (type){
+					case 'mouseover': related = event.relatedTarget || event.fromElement; break;
+					case 'mouseout': related = event.relatedTarget || event.toElement;
+				}
+				if (!(function(){
+					while (related && related.nodeType == 3) related = related.parentNode;
+					return true;
+				}).create({attempt: Browser.Engine.gecko})()) related = false;
+			}
+		}
+
+		return $extend(this, {
+			event: event,
+			type: type,
+
+			page: page,
+			client: client,
+			rightClick: rightClick,
+
+			wheel: wheel,
+
+			relatedTarget: related,
+			target: target,
+
+			code: code,
+			key: key,
+
+			shift: event.shiftKey,
+			control: event.ctrlKey,
+			alt: event.altKey,
+			meta: event.metaKey
+		});
+	}
+
+});
+
+Event.Keys = new Hash({
+	'enter': 13,
+	'up': 38,
+	'down': 40,
+	'left': 37,
+	'right': 39,
+	'esc': 27,
+	'space': 32,
+	'backspace': 8,
+	'tab': 9,
+	'delete': 46
+});
+
+Event.implement({
+
+	stop: function(){
+		return this.stopPropagation().preventDefault();
+	},
+
+	stopPropagation: function(){
+		if (this.event.stopPropagation) this.event.stopPropagation();
+		else this.event.cancelBubble = true;
+		return this;
+	},
+
+	preventDefault: function(){
+		if (this.event.preventDefault) this.event.preventDefault();
+		else this.event.returnValue = false;
+		return this;
+	}
+
+});
+
+
+/*
+---
+
+name: Element.Event
+
+description: Contains Element methods for dealing with events. This file also includes mouseenter and mouseleave custom Element Events.
+
+license: MIT-style license.
+
+requires: [Element, Event]
+
+provides: Element.Event
+
+...
+*/
+
+Element.Properties.events = {set: function(events){
+	this.addEvents(events);
+}};
+
+Native.implement([Element, Window, Document], {
+
+	addEvent: function(type, fn){
+		var events = this.retrieve('events', {});
+		events[type] = events[type] || {'keys': [], 'values': []};
+		if (events[type].keys.contains(fn)) return this;
+		events[type].keys.push(fn);
+		var realType = type, custom = Element.Events.get(type), condition = fn, self = this;
+		if (custom){
+			if (custom.onAdd) custom.onAdd.call(this, fn);
+			if (custom.condition){
+				condition = function(event){
+					if (custom.condition.call(this, event)) return fn.call(this, event);
+					return true;
+				};
+			}
+			realType = custom.base || realType;
+		}
+		var defn = function(){
+			return fn.call(self);
+		};
+		var nativeEvent = Element.NativeEvents[realType];
+		if (nativeEvent){
+			if (nativeEvent == 2){
+				defn = function(event){
+					event = new Event(event, self.getWindow());
+					if (condition.call(self, event) === false) event.stop();
+				};
+			}
+			this.addListener(realType, defn);
+		}
+		events[type].values.push(defn);
+		return this;
+	},
+
+	removeEvent: function(type, fn){
+		var events = this.retrieve('events');
+		if (!events || !events[type]) return this;
+		var pos = events[type].keys.indexOf(fn);
+		if (pos == -1) return this;
+		events[type].keys.splice(pos, 1);
+		var value = events[type].values.splice(pos, 1)[0];
+		var custom = Element.Events.get(type);
+		if (custom){
+			if (custom.onRemove) custom.onRemove.call(this, fn);
+			type = custom.base || type;
+		}
+		return (Element.NativeEvents[type]) ? this.removeListener(type, value) : this;
+	},
+
+	addEvents: function(events){
+		for (var event in events) this.addEvent(event, events[event]);
+		return this;
+	},
+
+	removeEvents: function(events){
+		var type;
+		if ($type(events) == 'object'){
+			for (type in events) this.removeEvent(type, events[type]);
+			return this;
+		}
+		var attached = this.retrieve('events');
+		if (!attached) return this;
+		if (!events){
+			for (type in attached) this.removeEvents(type);
+			this.eliminate('events');
+		} else if (attached[events]){
+			while (attached[events].keys[0]) this.removeEvent(events, attached[events].keys[0]);
+			attached[events] = null;
+		}
+		return this;
+	},
+
+	fireEvent: function(type, args, delay){
+		var events = this.retrieve('events');
+		if (!events || !events[type]) return this;
+		events[type].keys.each(function(fn){
+			fn.create({'bind': this, 'delay': delay, 'arguments': args})();
+		}, this);
+		return this;
+	},
+
+	cloneEvents: function(from, type){
+		from = document.id(from);
+		var fevents = from.retrieve('events');
+		if (!fevents) return this;
+		if (!type){
+			for (var evType in fevents) this.cloneEvents(from, evType);
+		} else if (fevents[type]){
+			fevents[type].keys.each(function(fn){
+				this.addEvent(type, fn);
+			}, this);
+		}
+		return this;
+	}
+
+});
+
+// IE9
+try {
+	if (typeof HTMLElement != 'undefined')
+		HTMLElement.prototype.fireEvent = Element.prototype.fireEvent;
+} catch(e){}
+
+Element.NativeEvents = {
+	click: 2, dblclick: 2, mouseup: 2, mousedown: 2, contextmenu: 2, //mouse buttons
+	mousewheel: 2, DOMMouseScroll: 2, //mouse wheel
+	mouseover: 2, mouseout: 2, mousemove: 2, selectstart: 2, selectend: 2, //mouse movement
+	keydown: 2, keypress: 2, keyup: 2, //keyboard
+	focus: 2, blur: 2, change: 2, reset: 2, select: 2, submit: 2, //form elements
+	load: 1, unload: 1, beforeunload: 2, resize: 1, move: 1, DOMContentLoaded: 1, readystatechange: 1, //window
+	error: 1, abort: 1, scroll: 1 //misc
+};
+
+(function(){
+
+var $check = function(event){
+	var related = event.relatedTarget;
+	if (related == undefined) return true;
+	if (related === false) return false;
+	return ($type(this) != 'document' && related != this && related.prefix != 'xul' && !this.hasChild(related));
+};
+
+Element.Events = new Hash({
+
+	mouseenter: {
+		base: 'mouseover',
+		condition: $check
+	},
+
+	mouseleave: {
+		base: 'mouseout',
+		condition: $check
+	},
+
+	mousewheel: {
+		base: (Browser.Engine.gecko) ? 'DOMMouseScroll' : 'mousewheel'
+	}
+
+});
+
+})();
+
+
+/*
+---
+
+name: Element.Style
+
+description: Contains methods for interacting with the styles of Elements in a fashionable way.
+
+license: MIT-style license.
+
+requires: Element
+
+provides: Element.Style
+
+...
+*/
+
+Element.Properties.styles = {set: function(styles){
+	this.setStyles(styles);
+}};
+
+Element.Properties.opacity = {
+
+	set: function(opacity, novisibility){
+		if (!novisibility){
+			if (opacity == 0){
+				if (this.style.visibility != 'hidden') this.style.visibility = 'hidden';
+			} else {
+				if (this.style.visibility != 'visible') this.style.visibility = 'visible';
+			}
+		}
+		if (!this.currentStyle || !this.currentStyle.hasLayout) this.style.zoom = 1;
+		if (Browser.Engine.trident) this.style.filter = (opacity == 1) ? '' : 'alpha(opacity=' + opacity * 100 + ')';
+		this.style.opacity = opacity;
+		this.store('opacity', opacity);
+	},
+
+	get: function(){
+		return this.retrieve('opacity', 1);
+	}
+
+};
+
+Element.implement({
+
+	setOpacity: function(value){
+		return this.set('opacity', value, true);
+	},
+
+	getOpacity: function(){
+		return this.get('opacity');
+	},
+
+	setStyle: function(property, value){
+		switch (property){
+			case 'opacity': return this.set('opacity', parseFloat(value));
+			case 'float': property = (Browser.Engine.trident) ? 'styleFloat' : 'cssFloat';
+		}
+		property = property.camelCase();
+		if ($type(value) != 'string'){
+			var map = (Element.Styles.get(property) || '@').split(' ');
+			value = $splat(value).map(function(val, i){
+				if (!map[i]) return '';
+				return ($type(val) == 'number') ? map[i].replace('@', Math.round(val)) : val;
+			}).join(' ');
+		} else if (value == String(Number(value))){
+			value = Math.round(value);
+		}
+		this.style[property] = value;
+		return this;
+	},
+
+	getStyle: function(property){
+		switch (property){
+			case 'opacity': return this.get('opacity');
+			case 'float': property = (Browser.Engine.trident) ? 'styleFloat' : 'cssFloat';
+		}
+		property = property.camelCase();
+		var result = this.style[property];
+		if (!$chk(result)){
+			result = [];
+			for (var style in Element.ShortStyles){
+				if (property != style) continue;
+				for (var s in Element.ShortStyles[style]) result.push(this.getStyle(s));
+				return result.join(' ');
+			}
+			result = this.getComputedStyle(property);
+		}
+		if (result){
+			result = String(result);
+			var color = result.match(/rgba?\([\d\s,]+\)/);
+			if (color) result = result.replace(color[0], color[0].rgbToHex());
+		}
+		if (Browser.Engine.presto || (Browser.Engine.trident && !$chk(parseInt(result, 10)))){
+			if (property.test(/^(height|width)$/)){
+				var values = (property == 'width') ? ['left', 'right'] : ['top', 'bottom'], size = 0;
+				values.each(function(value){
+					size += this.getStyle('border-' + value + '-width').toInt() + this.getStyle('padding-' + value).toInt();
+				}, this);
+				return this['offset' + property.capitalize()] - size + 'px';
+			}
+			if ((Browser.Engine.presto) && String(result).test('px')) return result;
+			if (property.test(/(border(.+)Width|margin|padding)/)) return '0px';
+		}
+		return result;
+	},
+
+	setStyles: function(styles){
+		for (var style in styles) this.setStyle(style, styles[style]);
+		return this;
+	},
+
+	getStyles: function(){
+		var result = {};
+		Array.flatten(arguments).each(function(key){
+			result[key] = this.getStyle(key);
+		}, this);
+		return result;
+	}
+
+});
+
+Element.Styles = new Hash({
+	left: '@px', top: '@px', bottom: '@px', right: '@px',
+	width: '@px', height: '@px', maxWidth: '@px', maxHeight: '@px', minWidth: '@px', minHeight: '@px',
+	backgroundColor: 'rgb(@, @, @)', backgroundPosition: '@px @px', color: 'rgb(@, @, @)',
+	fontSize: '@px', letterSpacing: '@px', lineHeight: '@px', clip: 'rect(@px @px @px @px)',
+	margin: '@px @px @px @px', padding: '@px @px @px @px', border: '@px @ rgb(@, @, @) @px @ rgb(@, @, @) @px @ rgb(@, @, @)',
+	borderWidth: '@px @px @px @px', borderStyle: '@ @ @ @', borderColor: 'rgb(@, @, @) rgb(@, @, @) rgb(@, @, @) rgb(@, @, @)',
+	zIndex: '@', 'zoom': '@', fontWeight: '@', textIndent: '@px', opacity: '@'
+});
+
+Element.ShortStyles = {margin: {}, padding: {}, border: {}, borderWidth: {}, borderStyle: {}, borderColor: {}};
+
+['Top', 'Right', 'Bottom', 'Left'].each(function(direction){
+	var Short = Element.ShortStyles;
+	var All = Element.Styles;
+	['margin', 'padding'].each(function(style){
+		var sd = style + direction;
+		Short[style][sd] = All[sd] = '@px';
+	});
+	var bd = 'border' + direction;
+	Short.border[bd] = All[bd] = '@px @ rgb(@, @, @)';
+	var bdw = bd + 'Width', bds = bd + 'Style', bdc = bd + 'Color';
+	Short[bd] = {};
+	Short.borderWidth[bdw] = Short[bd][bdw] = All[bdw] = '@px';
+	Short.borderStyle[bds] = Short[bd][bds] = All[bds] = '@';
+	Short.borderColor[bdc] = Short[bd][bdc] = All[bdc] = 'rgb(@, @, @)';
+});
+
+
+/*
+---
+
+name: Fx
+
+description: Contains the basic animation logic to be extended by all other Fx Classes.
+
+license: MIT-style license.
+
+requires: [Chain, Events, Options]
+
+provides: Fx
+
+...
+*/
+
+var Fx = new Class({
+
+	Implements: [Chain, Events, Options],
+
+	options: {
+		/*
+		onStart: $empty,
+		onCancel: $empty,
+		onComplete: $empty,
+		*/
+		fps: 50,
+		unit: false,
+		duration: 500,
+		link: 'ignore'
+	},
+
+	initialize: function(options){
+		this.subject = this.subject || this;
+		this.setOptions(options);
+		this.options.duration = Fx.Durations[this.options.duration] || this.options.duration.toInt();
+		var wait = this.options.wait;
+		if (wait === false) this.options.link = 'cancel';
+	},
+
+	getTransition: function(){
+		return function(p){
+			return -(Math.cos(Math.PI * p) - 1) / 2;
+		};
+	},
+
+	step: function(){
+		var time = $time();
+		if (time < this.time + this.options.duration){
+			var delta = this.transition((time - this.time) / this.options.duration);
+			this.set(this.compute(this.from, this.to, delta));
+		} else {
+			this.set(this.compute(this.from, this.to, 1));
+			this.complete();
+		}
+	},
+
+	set: function(now){
+		return now;
+	},
+
+	compute: function(from, to, delta){
+		return Fx.compute(from, to, delta);
+	},
+
+	check: function(){
+		if (!this.timer) return true;
+		switch (this.options.link){
+			case 'cancel': this.cancel(); return true;
+			case 'chain': this.chain(this.caller.bind(this, arguments)); return false;
+		}
+		return false;
+	},
+
+	start: function(from, to){
+		if (!this.check(from, to)) return this;
+		this.from = from;
+		this.to = to;
+		this.time = 0;
+		this.transition = this.getTransition();
+		this.startTimer();
+		this.onStart();
+		return this;
+	},
+
+	complete: function(){
+		if (this.stopTimer()) this.onComplete();
+		return this;
+	},
+
+	cancel: function(){
+		if (this.stopTimer()) this.onCancel();
+		return this;
+	},
+
+	onStart: function(){
+		this.fireEvent('start', this.subject);
+	},
+
+	onComplete: function(){
+		this.fireEvent('complete', this.subject);
+		if (!this.callChain()) this.fireEvent('chainComplete', this.subject);
+	},
+
+	onCancel: function(){
+		this.fireEvent('cancel', this.subject).clearChain();
+	},
+
+	pause: function(){
+		this.stopTimer();
+		return this;
+	},
+
+	resume: function(){
+		this.startTimer();
+		return this;
+	},
+
+	stopTimer: function(){
+		if (!this.timer) return false;
+		this.time = $time() - this.time;
+		this.timer = $clear(this.timer);
+		return true;
+	},
+
+	startTimer: function(){
+		if (this.timer) return false;
+		this.time = $time() - this.time;
+		this.timer = this.step.periodical(Math.round(1000 / this.options.fps), this);
+		return true;
+	}
+
+});
+
+Fx.compute = function(from, to, delta){
+	return (to - from) * delta + from;
+};
+
+Fx.Durations = {'short': 250, 'normal': 500, 'long': 1000};
+
+
+/*
+---
+
+name: Fx.CSS
+
+description: Contains the CSS animation logic. Used by Fx.Tween, Fx.Morph, Fx.Elements.
+
+license: MIT-style license.
+
+requires: [Fx, Element.Style]
+
+provides: Fx.CSS
+
+...
+*/
+
+Fx.CSS = new Class({
+
+	Extends: Fx,
+
+	//prepares the base from/to object
+
+	prepare: function(element, property, values){
+		values = $splat(values);
+		var values1 = values[1];
+		if (!$chk(values1)){
+			values[1] = values[0];
+			values[0] = element.getStyle(property);
+		}
+		var parsed = values.map(this.parse);
+		return {from: parsed[0], to: parsed[1]};
+	},
+
+	//parses a value into an array
+
+	parse: function(value){
+		value = $lambda(value)();
+		value = (typeof value == 'string') ? value.split(' ') : $splat(value);
+		return value.map(function(val){
+			val = String(val);
+			var found = false;
+			Fx.CSS.Parsers.each(function(parser, key){
+				if (found) return;
+				var parsed = parser.parse(val);
+				if ($chk(parsed)) found = {value: parsed, parser: parser};
+			});
+			found = found || {value: val, parser: Fx.CSS.Parsers.String};
+			return found;
+		});
+	},
+
+	//computes by a from and to prepared objects, using their parsers.
+
+	compute: function(from, to, delta){
+		var computed = [];
+		(Math.min(from.length, to.length)).times(function(i){
+			computed.push({value: from[i].parser.compute(from[i].value, to[i].value, delta), parser: from[i].parser});
+		});
+		computed.$family = {name: 'fx:css:value'};
+		return computed;
+	},
+
+	//serves the value as settable
+
+	serve: function(value, unit){
+		if ($type(value) != 'fx:css:value') value = this.parse(value);
+		var returned = [];
+		value.each(function(bit){
+			returned = returned.concat(bit.parser.serve(bit.value, unit));
+		});
+		return returned;
+	},
+
+	//renders the change to an element
+
+	render: function(element, property, value, unit){
+		element.setStyle(property, this.serve(value, unit));
+	},
+
+	//searches inside the page css to find the values for a selector
+
+	search: function(selector){
+		if (Fx.CSS.Cache[selector]) return Fx.CSS.Cache[selector];
+		var to = {};
+		Array.each(document.styleSheets, function(sheet, j){
+			var href = sheet.href;
+			if (href && href.contains('://') && !href.contains(document.domain)) return;
+			var rules = sheet.rules || sheet.cssRules;
+			Array.each(rules, function(rule, i){
+				if (!rule.style) return;
+				var selectorText = (rule.selectorText) ? rule.selectorText.replace(/^\w+/, function(m){
+					return m.toLowerCase();
+				}) : null;
+				if (!selectorText || !selectorText.test('^' + selector + '$')) return;
+				Element.Styles.each(function(value, style){
+					if (!rule.style[style] || Element.ShortStyles[style]) return;
+					value = String(rule.style[style]);
+					to[style] = (value.test(/^rgb/)) ? value.rgbToHex() : value;
+				});
+			});
+		});
+		return Fx.CSS.Cache[selector] = to;
+	}
+
+});
+
+Fx.CSS.Cache = {};
+
+Fx.CSS.Parsers = new Hash({
+
+	Color: {
+		parse: function(value){
+			if (value.match(/^#[0-9a-f]{3,6}$/i)) return value.hexToRgb(true);
+			return ((value = value.match(/(\d+),\s*(\d+),\s*(\d+)/))) ? [value[1], value[2], value[3]] : false;
+		},
+		compute: function(from, to, delta){
+			return from.map(function(value, i){
+				return Math.round(Fx.compute(from[i], to[i], delta));
+			});
+		},
+		serve: function(value){
+			return value.map(Number);
+		}
+	},
+
+	Number: {
+		parse: parseFloat,
+		compute: Fx.compute,
+		serve: function(value, unit){
+			return (unit) ? value + unit : value;
+		}
+	},
+
+	String: {
+		parse: $lambda(false),
+		compute: $arguments(1),
+		serve: $arguments(0)
+	}
+
+});
+
+
+/*
+---
+
+name: Fx.Morph
+
+description: Formerly Fx.Styles, effect to transition any number of CSS properties for an element using an object of rules, or CSS based selector rules.
+
+license: MIT-style license.
+
+requires: Fx.CSS
+
+provides: Fx.Morph
+
+...
+*/
+
+Fx.Morph = new Class({
+
+	Extends: Fx.CSS,
+
+	initialize: function(element, options){
+		this.element = this.subject = document.id(element);
+		this.parent(options);
+	},
+
+	set: function(now){
+		if (typeof now == 'string') now = this.search(now);
+		for (var p in now) this.render(this.element, p, now[p], this.options.unit);
+		return this;
+	},
+
+	compute: function(from, to, delta){
+		var now = {};
+		for (var p in from) now[p] = this.parent(from[p], to[p], delta);
+		return now;
+	},
+
+	start: function(properties){
+		if (!this.check(properties)) return this;
+		if (typeof properties == 'string') properties = this.search(properties);
+		var from = {}, to = {};
+		for (var p in properties){
+			var parsed = this.prepare(this.element, p, properties[p]);
+			from[p] = parsed.from;
+			to[p] = parsed.to;
+		}
+		return this.parent(from, to);
+	}
+
+});
+
+Element.Properties.morph = {
+
+	set: function(options){
+		var morph = this.retrieve('morph');
+		if (morph) morph.cancel();
+		return this.eliminate('morph').store('morph:options', $extend({link: 'cancel'}, options));
+	},
+
+	get: function(options){
+		if (options || !this.retrieve('morph')){
+			if (options || !this.retrieve('morph:options')) this.set('morph', options);
+			this.store('morph', new Fx.Morph(this, this.retrieve('morph:options')));
+		}
+		return this.retrieve('morph');
+	}
+
+};
+
+Element.implement({
+
+	morph: function(props){
+		this.get('morph').start(props);
+		return this;
+	}
+
+});
+
+
+/*
+---
+
+name: Fx.Transitions
+
+description: Contains a set of advanced transitions to be used with any of the Fx Classes.
+
+license: MIT-style license.
+
+credits: Easing Equations by Robert Penner, <http://www.robertpenner.com/easing/>, modified and optimized to be used with MooTools.
+
+requires: Fx
+
+provides: Fx.Transitions
+
+...
+*/
+
+Fx.implement({
+
+	getTransition: function(){
+		var trans = this.options.transition || Fx.Transitions.Sine.easeInOut;
+		if (typeof trans == 'string'){
+			var data = trans.split(':');
+			trans = Fx.Transitions;
+			trans = trans[data[0]] || trans[data[0].capitalize()];
+			if (data[1]) trans = trans['ease' + data[1].capitalize() + (data[2] ? data[2].capitalize() : '')];
+		}
+		return trans;
+	}
+
+});
+
+Fx.Transition = function(transition, params){
+	params = $splat(params);
+	return $extend(transition, {
+		easeIn: function(pos){
+			return transition(pos, params);
+		},
+		easeOut: function(pos){
+			return 1 - transition(1 - pos, params);
+		},
+		easeInOut: function(pos){
+			return (pos <= 0.5) ? transition(2 * pos, params) / 2 : (2 - transition(2 * (1 - pos), params)) / 2;
+		}
+	});
+};
+
+Fx.Transitions = new Hash({
+
+	linear: $arguments(0)
+
+});
+
+Fx.Transitions.extend = function(transitions){
+	for (var transition in transitions) Fx.Transitions[transition] = new Fx.Transition(transitions[transition]);
+};
+
+Fx.Transitions.extend({
+
+	Pow: function(p, x){
+		return Math.pow(p, x[0] || 6);
+	},
+
+	Expo: function(p){
+		return Math.pow(2, 8 * (p - 1));
+	},
+
+	Circ: function(p){
+		return 1 - Math.sin(Math.acos(p));
+	},
+
+	Sine: function(p){
+		return 1 - Math.sin((1 - p) * Math.PI / 2);
+	},
+
+	Back: function(p, x){
+		x = x[0] || 1.618;
+		return Math.pow(p, 2) * ((x + 1) * p - x);
+	},
+
+	Bounce: function(p){
+		var value;
+		for (var a = 0, b = 1; 1; a += b, b /= 2){
+			if (p >= (7 - 4 * a) / 11){
+				value = b * b - Math.pow((11 - 6 * a - 11 * p) / 4, 2);
+				break;
+			}
+		}
+		return value;
+	},
+
+	Elastic: function(p, x){
+		return Math.pow(2, 10 * --p) * Math.cos(20 * p * Math.PI * (x[0] || 1) / 3);
+	}
+
+});
+
+['Quad', 'Cubic', 'Quart', 'Quint'].each(function(transition, i){
+	Fx.Transitions[transition] = new Fx.Transition(function(p){
+		return Math.pow(p, [i + 2]);
+	});
+});
+
+
+/*
+---
+
+name: Fx.Tween
+
+description: Formerly Fx.Style, effect to transition any CSS property for an element.
+
+license: MIT-style license.
+
+requires: Fx.CSS
+
+provides: [Fx.Tween, Element.fade, Element.highlight]
+
+...
+*/
+
+Fx.Tween = new Class({
+
+	Extends: Fx.CSS,
+
+	initialize: function(element, options){
+		this.element = this.subject = document.id(element);
+		this.parent(options);
+	},
+
+	set: function(property, now){
+		if (arguments.length == 1){
+			now = property;
+			property = this.property || this.options.property;
+		}
+		this.render(this.element, property, now, this.options.unit);
+		return this;
+	},
+
+	start: function(property, from, to){
+		if (!this.check(property, from, to)) return this;
+		var args = Array.flatten(arguments);
+		this.property = this.options.property || args.shift();
+		var parsed = this.prepare(this.element, this.property, args);
+		return this.parent(parsed.from, parsed.to);
+	}
+
+});
+
+Element.Properties.tween = {
+
+	set: function(options){
+		var tween = this.retrieve('tween');
+		if (tween) tween.cancel();
+		return this.eliminate('tween').store('tween:options', $extend({link: 'cancel'}, options));
+	},
+
+	get: function(options){
+		if (options || !this.retrieve('tween')){
+			if (options || !this.retrieve('tween:options')) this.set('tween', options);
+			this.store('tween', new Fx.Tween(this, this.retrieve('tween:options')));
+		}
+		return this.retrieve('tween');
+	}
+
+};
+
+Element.implement({
+
+	tween: function(property, from, to){
+		this.get('tween').start(arguments);
+		return this;
+	},
+
+	fade: function(how){
+		var fade = this.get('tween'), o = 'opacity', toggle;
+		how = $pick(how, 'toggle');
+		switch (how){
+			case 'in': fade.start(o, 1); break;
+			case 'out': fade.start(o, 0); break;
+			case 'show': fade.set(o, 1); break;
+			case 'hide': fade.set(o, 0); break;
+			case 'toggle':
+				var flag = this.retrieve('fade:flag', this.get('opacity') == 1);
+				fade.start(o, (flag) ? 0 : 1);
+				this.store('fade:flag', !flag);
+				toggle = true;
+			break;
+			default: fade.start(o, arguments);
+		}
+		if (!toggle) this.eliminate('fade:flag');
+		return this;
+	},
+
+	highlight: function(start, end){
+		if (!end){
+			end = this.retrieve('highlight:original', this.getStyle('background-color'));
+			end = (end == 'transparent') ? '#fff' : end;
+		}
+		var tween = this.get('tween');
+		tween.start('background-color', start || '#ffff88', end).chain(function(){
+			this.setStyle('background-color', this.retrieve('highlight:original'));
+			tween.callChain();
+		}.bind(this));
+		return this;
+	}
+
+});
+
+
+/*
+---
+
+name: Request
+
+description: Powerful all purpose Request Class. Uses XMLHTTPRequest.
+
+license: MIT-style license.
+
+requires: [Element, Chain, Events, Options, Browser]
+
+provides: Request
+
+...
+*/
+
+var Request = new Class({
+
+	Implements: [Chain, Events, Options],
+
+	options: {/*
+		onRequest: $empty,
+		onComplete: $empty,
+		onCancel: $empty,
+		onSuccess: $empty,
+		onFailure: $empty,
+		onException: $empty,*/
+		url: '',
+		data: '',
+		headers: {
+			'X-Requested-With': 'XMLHttpRequest',
+			'Accept': 'text/javascript, text/html, application/xml, text/xml, */*'
+		},
+		async: true,
+		format: false,
+		method: 'post',
+		link: 'ignore',
+		isSuccess: null,
+		emulation: true,
+		urlEncoded: true,
+		encoding: 'utf-8',
+		evalScripts: false,
+		evalResponse: false,
+		noCache: false
+	},
+
+	initialize: function(options){
+		this.xhr = new Browser.Request();
+		this.setOptions(options);
+		this.options.isSuccess = this.options.isSuccess || this.isSuccess;
+		this.headers = new Hash(this.options.headers);
+	},
+
+	onStateChange: function(){
+		if (this.xhr.readyState != 4 || !this.running) return;
+		this.running = false;
+		this.status = 0;
+		$try(function(){
+			this.status = this.xhr.status;
+		}.bind(this));
+		this.xhr.onreadystatechange = $empty;
+		if (this.options.isSuccess.call(this, this.status)){
+			this.response = {text: this.xhr.responseText, xml: this.xhr.responseXML};
+			this.success(this.response.text, this.response.xml);
+		} else {
+			this.response = {text: null, xml: null};
+			this.failure();
+		}
+	},
+
+	isSuccess: function(){
+		return ((this.status >= 200) && (this.status < 300));
+	},
+
+	processScripts: function(text){
+		if (this.options.evalResponse || (/(ecma|java)script/).test(this.getHeader('Content-type'))) return $exec(text);
+		return text.stripScripts(this.options.evalScripts);
+	},
+
+	success: function(text, xml){
+		this.onSuccess(this.processScripts(text), xml);
+	},
+
+	onSuccess: function(){
+		this.fireEvent('complete', arguments).fireEvent('success', arguments).callChain();
+	},
+
+	failure: function(){
+		this.onFailure();
+	},
+
+	onFailure: function(){
+		this.fireEvent('complete').fireEvent('failure', this.xhr);
+	},
+
+	setHeader: function(name, value){
+		this.headers.set(name, value);
+		return this;
+	},
+
+	getHeader: function(name){
+		return $try(function(){
+			return this.xhr.getResponseHeader(name);
+		}.bind(this));
+	},
+
+	check: function(){
+		if (!this.running) return true;
+		switch (this.options.link){
+			case 'cancel': this.cancel(); return true;
+			case 'chain': this.chain(this.caller.bind(this, arguments)); return false;
+		}
+		return false;
+	},
+
+	send: function(options){
+		if (!this.check(options)) return this;
+		this.running = true;
+
+		var type = $type(options);
+		if (type == 'string' || type == 'element') options = {data: options};
+
+		var old = this.options;
+		options = $extend({data: old.data, url: old.url, method: old.method}, options);
+		var data = options.data, url = String(options.url), method = options.method.toLowerCase();
+
+		switch ($type(data)){
+			case 'element': data = document.id(data).toQueryString(); break;
+			case 'object': case 'hash': data = Hash.toQueryString(data);
+		}
+
+		if (this.options.format){
+			var format = 'format=' + this.options.format;
+			data = (data) ? format + '&' + data : format;
+		}
+
+		if (this.options.emulation && !['get', 'post'].contains(method)){
+			var _method = '_method=' + method;
+			data = (data) ? _method + '&' + data : _method;
+			method = 'post';
+		}
+
+		if (this.options.urlEncoded && method == 'post'){
+			var encoding = (this.options.encoding) ? '; charset=' + this.options.encoding : '';
+			this.headers.set('Content-type', 'application/x-www-form-urlencoded' + encoding);
+		}
+
+		if (this.options.noCache){
+			var noCache = 'noCache=' + new Date().getTime();
+			data = (data) ? noCache + '&' + data : noCache;
+		}
+
+		var trimPosition = url.lastIndexOf('/');
+		if (trimPosition > -1 && (trimPosition = url.indexOf('#')) > -1) url = url.substr(0, trimPosition);
+
+		if (data && method == 'get'){
+			url = url + (url.contains('?') ? '&' : '?') + data;
+			data = null;
+		}
+
+		this.xhr.open(method.toUpperCase(), url, this.options.async);
+
+		this.xhr.onreadystatechange = this.onStateChange.bind(this);
+
+		this.headers.each(function(value, key){
+			try {
+				this.xhr.setRequestHeader(key, value);
+			} catch (e){
+				this.fireEvent('exception', [key, value]);
+			}
+		}, this);
+
+		this.fireEvent('request');
+		this.xhr.send(data);
+		if (!this.options.async) this.onStateChange();
+		return this;
+	},
+
+	cancel: function(){
+		if (!this.running) return this;
+		this.running = false;
+		this.xhr.abort();
+		this.xhr.onreadystatechange = $empty;
+		this.xhr = new Browser.Request();
+		this.fireEvent('cancel');
+		return this;
+	}
+
+});
+
+(function(){
+
+var methods = {};
+['get', 'post', 'put', 'delete', 'GET', 'POST', 'PUT', 'DELETE'].each(function(method){
+	methods[method] = function(){
+		var params = Array.link(arguments, {url: String.type, data: $defined});
+		return this.send($extend(params, {method: method}));
+	};
+});
+
+Request.implement(methods);
+
+})();
+
+Element.Properties.send = {
+
+	set: function(options){
+		var send = this.retrieve('send');
+		if (send) send.cancel();
+		return this.eliminate('send').store('send:options', $extend({
+			data: this, link: 'cancel', method: this.get('method') || 'post', url: this.get('action')
+		}, options));
+	},
+
+	get: function(options){
+		if (options || !this.retrieve('send')){
+			if (options || !this.retrieve('send:options')) this.set('send', options);
+			this.store('send', new Request(this.retrieve('send:options')));
+		}
+		return this.retrieve('send');
+	}
+
+};
+
+Element.implement({
+
+	send: function(url){
+		var sender = this.get('send');
+		sender.send({data: this, url: url || sender.options.url});
+		return this;
+	}
+
+});
+
+
+/*
+---
+
+name: Request.HTML
+
+description: Extends the basic Request Class with additional methods for interacting with HTML responses.
+
+license: MIT-style license.
+
+requires: [Request, Element]
+
+provides: Request.HTML
+
+...
+*/
+
+Request.HTML = new Class({
+
+	Extends: Request,
+
+	options: {
+		update: false,
+		append: false,
+		evalScripts: true,
+		filter: false
+	},
+
+	processHTML: function(text){
+		var match = text.match(/<body[^>]*>([\s\S]*?)<\/body>/i);
+		text = (match) ? match[1] : text;
+
+		var container = new Element('div');
+
+		return $try(function(){
+			var root = '<root>' + text + '</root>', doc;
+			if (Browser.Engine.trident){
+				doc = new ActiveXObject('Microsoft.XMLDOM');
+				doc.async = false;
+				doc.loadXML(root);
+			} else {
+				doc = new DOMParser().parseFromString(root, 'text/xml');
+			}
+			root = doc.getElementsByTagName('root')[0];
+			if (!root) return null;
+			for (var i = 0, k = root.childNodes.length; i < k; i++){
+				var child = Element.clone(root.childNodes[i], true, true);
+				if (child) container.grab(child);
+			}
+			return container;
+		}) || container.set('html', text);
+	},
+
+	success: function(text){
+		var options = this.options, response = this.response;
+
+		response.html = text.stripScripts(function(script){
+			response.javascript = script;
+		});
+
+		var temp = this.processHTML(response.html);
+
+		response.tree = temp.childNodes;
+		response.elements = temp.getElements('*');
+
+		if (options.filter) response.tree = response.elements.filter(options.filter);
+		if (options.update) document.id(options.update).empty().set('html', response.html);
+		else if (options.append) document.id(options.append).adopt(temp.getChildren());
+		if (options.evalScripts) $exec(response.javascript);
+
+		this.onSuccess(response.tree, response.elements, response.html, response.javascript);
+	}
+
+});
+
+Element.Properties.load = {
+
+	set: function(options){
+		var load = this.retrieve('load');
+		if (load) load.cancel();
+		return this.eliminate('load').store('load:options', $extend({data: this, link: 'cancel', update: this, method: 'get'}, options));
+	},
+
+	get: function(options){
+		if (options || ! this.retrieve('load')){
+			if (options || !this.retrieve('load:options')) this.set('load', options);
+			this.store('load', new Request.HTML(this.retrieve('load:options')));
+		}
+		return this.retrieve('load');
+	}
+
+};
+
+Element.implement({
+
+	load: function(){
+		this.get('load').send(Array.link(arguments, {data: Object.type, url: String.type}));
+		return this;
+	}
+
+});
+
+
+/*
+---
+
+name: JSON
+
+description: JSON encoder and decoder.
+
+license: MIT-style license.
+
+see: <http://www.json.org/>
+
+requires: [Array, String, Number, Function, Hash]
+
+provides: JSON
+
+...
+*/
+
+var JSON = new Hash(this.JSON && {
+	stringify: JSON.stringify,
+	parse: JSON.parse
+}).extend({
+	
+	$specialChars: {'\b': '\\b', '\t': '\\t', '\n': '\\n', '\f': '\\f', '\r': '\\r', '"' : '\\"', '\\': '\\\\'},
+
+	$replaceChars: function(chr){
+		return JSON.$specialChars[chr] || '\\u00' + Math.floor(chr.charCodeAt() / 16).toString(16) + (chr.charCodeAt() % 16).toString(16);
+	},
+
+	encode: function(obj){
+		switch ($type(obj)){
+			case 'string':
+				return '"' + obj.replace(/[\x00-\x1f\\"]/g, JSON.$replaceChars) + '"';
+			case 'array':
+				return '[' + String(obj.map(JSON.encode).clean()) + ']';
+			case 'object': case 'hash':
+				var string = [];
+				Hash.each(obj, function(value, key){
+					var json = JSON.encode(value);
+					if (json) string.push(JSON.encode(key) + ':' + json);
+				});
+				return '{' + string + '}';
+			case 'number': case 'boolean': return String(obj);
+			case false: return 'null';
+		}
+		return null;
+	},
+
+	decode: function(string, secure){
+		if ($type(string) != 'string' || !string.length) return null;
+		if (secure && !(/^[,:{}\[\]0-9.\-+Eaeflnr-u \n\r\t]*$/).test(string.replace(/\\./g, '@').replace(/"[^"\\\n\r]*"/g, ''))) return null;
+		return eval('(' + string + ')');
+	}
+
+});
+
+
+/*
+---
+
+name: Request.JSON
+
+description: Extends the basic Request Class with additional methods for sending and receiving JSON data.
+
+license: MIT-style license.
+
+requires: [Request, JSON]
+
+provides: [Request.JSON]
+
+...
+*/
+
+Request.JSON = new Class({
+
+	Extends: Request,
+
+	options: {
+		secure: true
+	},
+
+	initialize: function(options){
+		this.parent(options);
+		this.headers.extend({'Accept': 'application/json', 'X-Request': 'JSON'});
+	},
+
+	success: function(text){
+		this.response.json = JSON.decode(text, this.options.secure);
+		this.onSuccess(this.response.json, text);
+	}
+
+});
+
+
+/*
+---
+
+name: Cookie
+
+description: Class for creating, reading, and deleting browser Cookies.
+
+license: MIT-style license.
+
+credits: Based on the functions by Peter-Paul Koch (http://quirksmode.org).
+
+requires: Options
+
+provides: Cookie
+
+...
+*/
+
+var Cookie = new Class({
+
+	Implements: Options,
+
+	options: {
+		path: false,
+		domain: false,
+		duration: false,
+		secure: false,
+		document: document
+	},
+
+	initialize: function(key, options){
+		this.key = key;
+		this.setOptions(options);
+	},
+
+	write: function(value){
+		value = encodeURIComponent(value);
+		if (this.options.domain) value += '; domain=' + this.options.domain;
+		if (this.options.path) value += '; path=' + this.options.path;
+		if (this.options.duration){
+			var date = new Date();
+			date.setTime(date.getTime() + this.options.duration * 24 * 60 * 60 * 1000);
+			value += '; expires=' + date.toGMTString();
+		}
+		if (this.options.secure) value += '; secure';
+		this.options.document.cookie = this.key + '=' + value;
+		return this;
+	},
+
+	read: function(){
+		var value = this.options.document.cookie.match('(?:^|;)\\s*' + this.key.escapeRegExp() + '=([^;]*)');
+		return (value) ? decodeURIComponent(value[1]) : null;
+	},
+
+	dispose: function(){
+		new Cookie(this.key, $merge(this.options, {duration: -1})).write('');
+		return this;
+	}
+
+});
+
+Cookie.write = function(key, value, options){
+	return new Cookie(key, options).write(value);
+};
+
+Cookie.read = function(key){
+	return new Cookie(key).read();
+};
+
+Cookie.dispose = function(key, options){
+	return new Cookie(key, options).dispose();
+};
+
+
+/*
+---
+
+name: DomReady
+
+description: Contains the custom event domready.
+
+license: MIT-style license.
+
+requires: Element.Event
+
+provides: DomReady
+
+...
+*/
+
+Element.Events.domready = {
+
+	onAdd: function(fn){
+		if (Browser.loaded) fn.call(this);
+	}
+
+};
+
+(function(){
+
+	var domready = function(){
+		if (Browser.loaded) return;
+		Browser.loaded = true;
+		window.fireEvent('domready');
+		document.fireEvent('domready');
+	};
+	
+	window.addEvent('load', domready);
+
+	if (Browser.Engine.trident){
+		var temp = document.createElement('div');
+		(function(){
+			($try(function(){
+				temp.doScroll(); // Technique by Diego Perini
+				return document.id(temp).inject(document.body).set('html', 'temp').dispose();
+			})) ? domready() : arguments.callee.delay(50);
+		})();
+	} else if (Browser.Engine.webkit && Browser.Engine.version < 525){
+		(function(){
+			(['loaded', 'complete'].contains(document.readyState)) ? domready() : arguments.callee.delay(50);
+		})();
+	} else {
+		document.addEvent('DOMContentLoaded', domready);
+	}
+
+})();
+
+
+/*
+---
+
+name: Selectors
+
+description: Adds advanced CSS-style querying capabilities for targeting HTML Elements. Includes pseudo selectors.
+
+license: MIT-style license.
+
+requires: Element
+
+provides: Selectors
+
+...
+*/
+
+Native.implement([Document, Element], {
+
+	getElements: function(expression, nocash){
+		expression = expression.split(',');
+		var items, local = {};
+		for (var i = 0, l = expression.length; i < l; i++){
+			var selector = expression[i], elements = Selectors.Utils.search(this, selector, local);
+			if (i != 0 && elements.item) elements = $A(elements);
+			items = (i == 0) ? elements : (items.item) ? $A(items).concat(elements) : items.concat(elements);
+		}
+		return new Elements(items, {ddup: (expression.length > 1), cash: !nocash});
+	}
+
+});
+
+Element.implement({
+
+	match: function(selector){
+		if (!selector || (selector == this)) return true;
+		var tagid = Selectors.Utils.parseTagAndID(selector);
+		var tag = tagid[0], id = tagid[1];
+		if (!Selectors.Filters.byID(this, id) || !Selectors.Filters.byTag(this, tag)) return false;
+		var parsed = Selectors.Utils.parseSelector(selector);
+		return (parsed) ? Selectors.Utils.filter(this, parsed, {}) : true;
+	}
+
+});
+
+var Selectors = {Cache: {nth: {}, parsed: {}}};
+
+Selectors.RegExps = {
+	id: (/#([\w-]+)/),
+	tag: (/^(\w+|\*)/),
+	quick: (/^(\w+|\*)$/),
+	splitter: (/\s*([+>~\s])\s*([a-zA-Z#.*:\[])/g),
+	combined: (/\.([\w-]+)|\[(\w+)(?:([!*^$~|]?=)(["']?)([^\4]*?)\4)?\]|:([\w-]+)(?:\(["']?(.*?)?["']?\)|$)/g)
+};
+
+Selectors.Utils = {
+
+	chk: function(item, uniques){
+		if (!uniques) return true;
+		var uid = $uid(item);
+		if (!uniques[uid]) return uniques[uid] = true;
+		return false;
+	},
+
+	parseNthArgument: function(argument){
+		if (Selectors.Cache.nth[argument]) return Selectors.Cache.nth[argument];
+		var parsed = argument.match(/^([+-]?\d*)?([a-z]+)?([+-]?\d*)?$/);
+		if (!parsed) return false;
+		var inta = parseInt(parsed[1], 10);
+		var a = (inta || inta === 0) ? inta : 1;
+		var special = parsed[2] || false;
+		var b = parseInt(parsed[3], 10) || 0;
+		if (a != 0){
+			b--;
+			while (b < 1) b += a;
+			while (b >= a) b -= a;
+		} else {
+			a = b;
+			special = 'index';
+		}
+		switch (special){
+			case 'n': parsed = {a: a, b: b, special: 'n'}; break;
+			case 'odd': parsed = {a: 2, b: 0, special: 'n'}; break;
+			case 'even': parsed = {a: 2, b: 1, special: 'n'}; break;
+			case 'first': parsed = {a: 0, special: 'index'}; break;
+			case 'last': parsed = {special: 'last-child'}; break;
+			case 'only': parsed = {special: 'only-child'}; break;
+			default: parsed = {a: (a - 1), special: 'index'};
+		}
+
+		return Selectors.Cache.nth[argument] = parsed;
+	},
+
+	parseSelector: function(selector){
+		if (Selectors.Cache.parsed[selector]) return Selectors.Cache.parsed[selector];
+		var m, parsed = {classes: [], pseudos: [], attributes: []};
+		while ((m = Selectors.RegExps.combined.exec(selector))){
+			var cn = m[1], an = m[2], ao = m[3], av = m[5], pn = m[6], pa = m[7];
+			if (cn){
+				parsed.classes.push(cn);
+			} else if (pn){
+				var parser = Selectors.Pseudo.get(pn);
+				if (parser) parsed.pseudos.push({parser: parser, argument: pa});
+				else parsed.attributes.push({name: pn, operator: '=', value: pa});
+			} else if (an){
+				parsed.attributes.push({name: an, operator: ao, value: av});
+			}
+		}
+		if (!parsed.classes.length) delete parsed.classes;
+		if (!parsed.attributes.length) delete parsed.attributes;
+		if (!parsed.pseudos.length) delete parsed.pseudos;
+		if (!parsed.classes && !parsed.attributes && !parsed.pseudos) parsed = null;
+		return Selectors.Cache.parsed[selector] = parsed;
+	},
+
+	parseTagAndID: function(selector){
+		var tag = selector.match(Selectors.RegExps.tag);
+		var id = selector.match(Selectors.RegExps.id);
+		return [(tag) ? tag[1] : '*', (id) ? id[1] : false];
+	},
+
+	filter: function(item, parsed, local){
+		var i;
+		if (parsed.classes){
+			for (i = parsed.classes.length; i--; i){
+				var cn = parsed.classes[i];
+				if (!Selectors.Filters.byClass(item, cn)) return false;
+			}
+		}
+		if (parsed.attributes){
+			for (i = parsed.attributes.length; i--; i){
+				var att = parsed.attributes[i];
+				if (!Selectors.Filters.byAttribute(item, att.name, att.operator, att.value)) return false;
+			}
+		}
+		if (parsed.pseudos){
+			for (i = parsed.pseudos.length; i--; i){
+				var psd = parsed.pseudos[i];
+				if (!Selectors.Filters.byPseudo(item, psd.parser, psd.argument, local)) return false;
+			}
+		}
+		return true;
+	},
+
+	getByTagAndID: function(ctx, tag, id){
+		if (id){
+			var item = (ctx.getElementById) ? ctx.getElementById(id, true) : Element.getElementById(ctx, id, true);
+			return (item && Selectors.Filters.byTag(item, tag)) ? [item] : [];
+		} else {
+			return ctx.getElementsByTagName(tag);
+		}
+	},
+
+	search: function(self, expression, local){
+		var splitters = [];
+
+		var selectors = expression.trim().replace(Selectors.RegExps.splitter, function(m0, m1, m2){
+			splitters.push(m1);
+			return ':)' + m2;
+		}).split(':)');
+
+		var items, filtered, item;
+
+		for (var i = 0, l = selectors.length; i < l; i++){
+
+			var selector = selectors[i];
+
+			if (i == 0 && Selectors.RegExps.quick.test(selector)){
+				items = self.getElementsByTagName(selector);
+				continue;
+			}
+
+			var splitter = splitters[i - 1];
+
+			var tagid = Selectors.Utils.parseTagAndID(selector);
+			var tag = tagid[0], id = tagid[1];
+
+			if (i == 0){
+				items = Selectors.Utils.getByTagAndID(self, tag, id);
+			} else {
+				var uniques = {}, found = [];
+				for (var j = 0, k = items.length; j < k; j++) found = Selectors.Getters[splitter](found, items[j], tag, id, uniques);
+				items = found;
+			}
+
+			var parsed = Selectors.Utils.parseSelector(selector);
+
+			if (parsed){
+				filtered = [];
+				for (var m = 0, n = items.length; m < n; m++){
+					item = items[m];
+					if (Selectors.Utils.filter(item, parsed, local)) filtered.push(item);
+				}
+				items = filtered;
+			}
+
+		}
+
+		return items;
+
+	}
+
+};
+
+Selectors.Getters = {
+
+	' ': function(found, self, tag, id, uniques){
+		var items = Selectors.Utils.getByTagAndID(self, tag, id);
+		for (var i = 0, l = items.length; i < l; i++){
+			var item = items[i];
+			if (Selectors.Utils.chk(item, uniques)) found.push(item);
+		}
+		return found;
+	},
+
+	'>': function(found, self, tag, id, uniques){
+		var children = Selectors.Utils.getByTagAndID(self, tag, id);
+		for (var i = 0, l = children.length; i < l; i++){
+			var child = children[i];
+			if (child.parentNode == self && Selectors.Utils.chk(child, uniques)) found.push(child);
+		}
+		return found;
+	},
+
+	'+': function(found, self, tag, id, uniques){
+		while ((self = self.nextSibling)){
+			if (self.nodeType == 1){
+				if (Selectors.Utils.chk(self, uniques) && Selectors.Filters.byTag(self, tag) && Selectors.Filters.byID(self, id)) found.push(self);
+				break;
+			}
+		}
+		return found;
+	},
+
+	'~': function(found, self, tag, id, uniques){
+		while ((self = self.nextSibling)){
+			if (self.nodeType == 1){
+				if (!Selectors.Utils.chk(self, uniques)) break;
+				if (Selectors.Filters.byTag(self, tag) && Selectors.Filters.byID(self, id)) found.push(self);
+			}
+		}
+		return found;
+	}
+
+};
+
+Selectors.Filters = {
+
+	byTag: function(self, tag){
+		return (tag == '*' || (self.tagName && self.tagName.toLowerCase() == tag));
+	},
+
+	byID: function(self, id){
+		return (!id || (self.id && self.id == id));
+	},
+
+	byClass: function(self, klass){
+		return (self.className && self.className.contains && self.className.contains(klass, ' '));
+	},
+
+	byPseudo: function(self, parser, argument, local){
+		return parser.call(self, argument, local);
+	},
+
+	byAttribute: function(self, name, operator, value){
+		var result = Element.prototype.getProperty.call(self, name);
+		if (!result) return (operator == '!=');
+		if (!operator || value == undefined) return true;
+		switch (operator){
+			case '=': return (result == value);
+			case '*=': return (result.contains(value));
+			case '^=': return (result.substr(0, value.length) == value);
+			case '$=': return (result.substr(result.length - value.length) == value);
+			case '!=': return (result != value);
+			case '~=': return result.contains(value, ' ');
+			case '|=': return result.contains(value, '-');
+		}
+		return false;
+	}
+
+};
+
+Selectors.Pseudo = new Hash({
+
+	// w3c pseudo selectors
+
+	checked: function(){
+		return this.checked;
+	},
+	
+	empty: function(){
+		return !(this.innerText || this.textContent || '').length;
+	},
+
+	not: function(selector){
+		return !Element.match(this, selector);
+	},
+
+	contains: function(text){
+		return (this.innerText || this.textContent || '').contains(text);
+	},
+
+	'first-child': function(){
+		return Selectors.Pseudo.index.call(this, 0);
+	},
+
+	'last-child': function(){
+		var element = this;
+		while ((element = element.nextSibling)){
+			if (element.nodeType == 1) return false;
+		}
+		return true;
+	},
+
+	'only-child': function(){
+		var prev = this;
+		while ((prev = prev.previousSibling)){
+			if (prev.nodeType == 1) return false;
+		}
+		var next = this;
+		while ((next = next.nextSibling)){
+			if (next.nodeType == 1) return false;
+		}
+		return true;
+	},
+
+	'nth-child': function(argument, local){
+		argument = (argument == undefined) ? 'n' : argument;
+		var parsed = Selectors.Utils.parseNthArgument(argument);
+		if (parsed.special != 'n') return Selectors.Pseudo[parsed.special].call(this, parsed.a, local);
+		var count = 0;
+		local.positions = local.positions || {};
+		var uid = $uid(this);
+		if (!local.positions[uid]){
+			var self = this;
+			while ((self = self.previousSibling)){
+				if (self.nodeType != 1) continue;
+				count ++;
+				var position = local.positions[$uid(self)];
+				if (position != undefined){
+					count = position + count;
+					break;
+				}
+			}
+			local.positions[uid] = count;
+		}
+		return (local.positions[uid] % parsed.a == parsed.b);
+	},
+
+	// custom pseudo selectors
+
+	index: function(index){
+		var element = this, count = 0;
+		while ((element = element.previousSibling)){
+			if (element.nodeType == 1 && ++count > index) return false;
+		}
+		return (count == index);
+	},
+
+	even: function(argument, local){
+		return Selectors.Pseudo['nth-child'].call(this, '2n+1', local);
+	},
+
+	odd: function(argument, local){
+		return Selectors.Pseudo['nth-child'].call(this, '2n', local);
+	},
+	
+	selected: function(){
+		return this.selected;
+	},
+	
+	enabled: function(){
+		return (this.disabled === false);
+	}
+
+});
+
+
+/*
+---
+
+name: Swiff
+
+description: Wrapper for embedding SWF movies. Supports External Interface Communication.
+
+license: MIT-style license.
+
+credits: Flash detection & Internet Explorer + Flash Player 9 fix inspired by SWFObject.
+
+requires: [Options, $util]
+
+provides: Swiff
+
+...
+*/
+
+var Swiff = new Class({
+
+	Implements: [Options],
+
+	options: {
+		id: null,
+		height: 1,
+		width: 1,
+		container: null,
+		properties: {},
+		params: {
+			quality: 'high',
+			allowScriptAccess: 'always',
+			wMode: 'transparent',
+			swLiveConnect: true
+		},
+		callBacks: {},
+		vars: {}
+	},
+
+	toElement: function(){
+		return this.object;
+	},
+
+	initialize: function(path, options){
+		this.instance = 'Swiff_' + $time();
+
+		this.setOptions(options);
+		options = this.options;
+		var id = this.id = options.id || this.instance;
+		var container = document.id(options.container);
+
+		Swiff.CallBacks[this.instance] = {};
+
+		var params = options.params, vars = options.vars, callBacks = options.callBacks;
+		var properties = $extend({height: options.height, width: options.width}, options.properties);
+
+		var self = this;
+
+		for (var callBack in callBacks){
+			Swiff.CallBacks[this.instance][callBack] = (function(option){
+				return function(){
+					return option.apply(self.object, arguments);
+				};
+			})(callBacks[callBack]);
+			vars[callBack] = 'Swiff.CallBacks.' + this.instance + '.' + callBack;
+		}
+
+		params.flashVars = Hash.toQueryString(vars);
+		if (Browser.Engine.trident){
+			properties.classid = 'clsid:D27CDB6E-AE6D-11cf-96B8-444553540000';
+			params.movie = path;
+		} else {
+			properties.type = 'application/x-shockwave-flash';
+			properties.data = path;
+		}
+		var build = '<object id="' + id + '"';
+		for (var property in properties) build += ' ' + property + '="' + properties[property] + '"';
+		build += '>';
+		for (var param in params){
+			if (params[param]) build += '<param name="' + param + '" value="' + params[param] + '" />';
+		}
+		build += '</object>';
+		this.object = ((container) ? container.empty() : new Element('div')).set('html', build).firstChild;
+	},
+
+	replaces: function(element){
+		element = document.id(element, true);
+		element.parentNode.replaceChild(this.toElement(), element);
+		return this;
+	},
+
+	inject: function(element){
+		document.id(element, true).appendChild(this.toElement());
+		return this;
+	},
+
+	remote: function(){
+		return Swiff.remote.apply(Swiff, [this.toElement()].extend(arguments));
+	}
+
+});
+
+Swiff.CallBacks = {};
+
+Swiff.remote = function(obj, fn){
+	var rs = obj.CallFunction('<invoke name="' + fn + '" returntype="javascript">' + __flash__argumentsToXML(arguments, 2) + '</invoke>');
+	return eval(rs);
+};
+
Index: modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/info.jsp
===================================================================
--- modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/info.jsp	(nonexistent)
+++ modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/info.jsp	(revision 47450)
@@ -0,0 +1,25 @@
+<%@ page contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<%@ taglib prefix="s" uri="/struts-tags"%>
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<link href="jsps/style.css" rel="stylesheet" type="text/css" media="screen" />
+<link href="jsps/favicon.ico" rel="shortcut icon" type="image/x-icon" />
+<title><s:text name="info.title"/></title>
+</head>
+<body>
+<div id="wrapper">
+	<jsp:include page="menu.jsp"/>
+	<div id="page">
+	<div id="page-bgtop">
+		<div id="content">
+			<s:actionerror escape="false"/> 
+			<s:actionmessage escape="false"/> 
+		</div>
+		<div style="clear: both;">&nbsp;</div>
+	</div>
+	</div>
+</div>
+</body>
+</html>
\ No newline at end of file
Index: modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/table-images/pattern.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/table-images/pattern.png
===================================================================
--- modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/table-images/pattern.png	(nonexistent)
+++ modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/table-images/pattern.png	(revision 47450)

Property changes on: modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/table-images/pattern.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/table-images/botleft.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/table-images/botleft.png
===================================================================
--- modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/table-images/botleft.png	(nonexistent)
+++ modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/table-images/botleft.png	(revision 47450)

Property changes on: modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/table-images/botleft.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/table-images/gradhover.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/table-images/gradhover.png
===================================================================
--- modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/table-images/gradhover.png	(nonexistent)
+++ modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/table-images/gradhover.png	(revision 47450)

Property changes on: modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/table-images/gradhover.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/table-images/blurry.jpg
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/table-images/blurry.jpg
===================================================================
--- modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/table-images/blurry.jpg	(nonexistent)
+++ modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/table-images/blurry.jpg	(revision 47450)

Property changes on: modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/table-images/blurry.jpg
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/manuals/example_record.txt
===================================================================
--- modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/manuals/example_record.txt	(nonexistent)
+++ modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/manuals/example_record.txt	(revision 47450)
@@ -0,0 +1,25 @@
+<header>
+	<identifier>oai:openaire.cern.ch:1</identifier>
+	<datestamp>2011-01-18T14:26:14Z</datestamp>
+	<setSpec>EC_fundedresources</setSpec>
+</header>
+<metadata>
+	<oai_dc:dc xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:oai_dc="http://www.openarchives.org/OAI/2.0/oai_dc/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.openarchives.org/OAI/2.0/oai_dc/ http://www.openarchives.org/OAI/2.0/oai_dc.xsd">
+		<dc:language>eng</dc:language>
+		<dc:creator>Berchum, Marnix</dc:creator>
+		<dc:creator>Rodrigues, Eloy</dc:creator>
+		<dc:contributor>Brown, John</dc:contributor>
+		<dc:title>OpenAIRE Guidelines</dc:title>
+		<dc:date>2010-09-01</dc:date>
+		<dc:identifier>http://openaire.cern.ch/record/1</dc:identifier>
+		<dc:description>
+			The OpenAIRE Guidelines will provide orientation for repository managers to define and implement their local data management policies in compliance with the Open Access demands of the European Commission. Furthermore they will comply with the technical requirements of the OpenAIRE infrastructure that is being established to support and monitor the implementation of the FP7 OA pilot. By implementing these Guidelines repository managers are facilitating the authors who deposit their publications in the repository, in complying with the EC Open Access requirements. For developers of repository platforms the Guidelines provide guidance to add supportive functionalities for authors of EC funded research in future versions.
+		</dc:description>
+		<dc:relation>info:eu-repo/grantAgreement/EC/FP7/246686</dc:relation>
+		<dc:rights>info:eu-repo/semantics/openAccess</dc:rights>
+		<dc:audience>Librarians</dc:audience>
+		<dc:type>info:eu-repo/semantics/article</dc:type>
+		<dc:format>application/pdf</dc:format>
+		<dc:source>ISSN:0165-0505</dc:source>
+	</oai_dc:dc>
+</metadata>
\ No newline at end of file
Index: modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/WEB-INF/applicationContext.xml
===================================================================
--- modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/WEB-INF/applicationContext.xml	(nonexistent)
+++ modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/WEB-INF/applicationContext.xml	(revision 47450)
@@ -0,0 +1,44 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<beans xmlns="http://www.springframework.org/schema/beans"
+	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p"
+	xmlns:context="http://www.springframework.org/schema/context"
+
+	xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.0.xsd
+	http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.0.xsd">
+
+
+	
+<!-- 	<import resource="classpath*:/eu/dnetlib/validator/admin/**/springContext-*.xml" /> -->
+<!-- 	<import resource="classpath*:/eu/dnetlib/validator/commons/**/springContext-*.xml" /> -->
+
+	<context:annotation-config />
+
+<bean class="eu.dnetlib.validator.web.config.CascadingPropertyLoader"
+		id="propertyLoader">
+		<property name="order" value="2" />
+		<property name="properties">
+			<bean class="eu.dnetlib.conf.WebappContextProperyFactory">
+				<property name="propertyFetcher">
+					<bean class="eu.dnetlib.conf.PropertyFetcher" />
+				</property>
+			</bean>
+		</property>
+		<property name="ignoreUnresolvablePlaceholders" value="true" />
+		<property name="locations">			<list>
+				<value>classpath*:/gr/**/springContext-*.properties</value>
+				<value>classpath*:/eu/**/springContext-*.properties</value>
+
+				<value>classpath*:dnet-site-wizard.properties</value>
+				<value>classpath*:dnet-site-override.properties</value>
+				<value>classpath*:dnet-wizard.properties</value>
+				<value>classpath*:dnet-override.properties</value>
+				<value>classpath*:dnet-validator-wizard.properties</value>
+				<value>classpath*:dnet-validator-override.properties</value>
+				<value>classpath*:dnet-site-force-override.properties</value>
+				<value>classpath*:dnet-force-override.properties</value>
+			</list>
+		</property>
+	</bean>
+
+</beans>
\ No newline at end of file
Index: modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/fonts/mavenpro.css
===================================================================
--- modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/fonts/mavenpro.css	(nonexistent)
+++ modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/fonts/mavenpro.css	(revision 47450)
@@ -0,0 +1,12 @@
+/* Copyright (C) YOOtheme GmbH, YOOtheme Proprietary Use License (http://www.yootheme.com/license) */
+
+@font-face {
+	font-family: 'MavenProRegular';
+	src: url('maven_pro_regular-webfont.eot');
+	src: url('maven_pro_regular-webfont.eot?#iefix') format('embedded-opentype'),
+		 url('maven_pro_regular-webfont.woff') format('woff'),
+		 url('maven_pro_regular-webfont.ttf') format('truetype'),
+		 url('maven_pro_regular-webfont.svg#MavenProRegular') format('svg');
+	font-weight: normal;
+	font-style: normal;
+}
\ No newline at end of file
Index: modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/index.jsp
===================================================================
--- modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/index.jsp	(nonexistent)
+++ modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/index.jsp	(revision 47450)
@@ -0,0 +1,4 @@
+
+<% 
+response.sendRedirect("welcome");
+%>
\ No newline at end of file
Index: modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/js/ddmenu.js
===================================================================
--- modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/js/ddmenu.js	(nonexistent)
+++ modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/js/ddmenu.js	(revision 47450)
@@ -0,0 +1,16 @@
+var ddmenuOptions=
+{
+	menuId: "ddmenu",
+	linkIdToMenuHtml: null,
+	effect: "slide",
+	delay: 50,
+	//dl114
+/*	license: "2c7u1" */
+	//production
+	license: "2c1o2"
+};
+
+var ddmenu=new McDdMenu(ddmenuOptions);
+
+/* Menucool Drop Down Menu v2013.3.18 Copyright www.menucool.com */
+function McDdMenu(d){var o=function(a,b){return a.getElementsByTagName(b)},k=function(b,d){if(window.getComputedStyle)var c=window.getComputedStyle(b,null);else if(b.currentStyle)c=b.currentStyle;else c=b[a];return c[d]},e=function(a,c,b){if(a.addEventListener)a.addEventListener(c,b,false);else a.attachEvent&&a.attachEvent("on"+c,b)},t=function(a){if(a&&a.stopPropagation)a.stopPropagation();else window.event.cancelBubble=true},F=function(b){var a=b?b:window.event;a.preventDefault&&a.preventDefault();a.returnValue=false;return false},b,l,y,a,c,i,g,f,n,x=document,L=["$1$2$3","$1$2$3","$1$24","$1$23","$1$22"];mcDdl=0;var K=[/(?:.*\.)?(\w)([\w\-])[^.]*(\w)\.[^.]+$/,/.*([\w\-])\.(\w)(\w)\.[^.]+$/,/^(?:.*\.)?(\w)(\w)\.[^.]+$/,/.*([\w\-])([\w\-])\.com\.[^.]+$/,/^(\w)[^.]*(\w)+$/],D=function(){var c=50,b=navigator.userAgent,a;if((a=b.indexOf("MSIE "))!=-1)c=parseInt(b.substring(a+5,b.indexOf(".",a)));return c},B=function(){b={a:d.license,b:d.menuId,c:d.effect=="none"?0:1,d:d.delay,e:d.linkIdToMenuHtml}},j=D(),m=function(d){var a=d.childNodes,c=[];if(a)for(var b=0,e=a.length;b<e;b++)a[b].nodeType==1&&c.push(a[b]);return c},C=function(b){var a=[],c=b.length;while(c--)a.push(String.fromCharCode(b[c]));return a.join("")},z=function(a){return a.replace(/(?:.*\.)?(\w)([\w\-])?[^.]*(\w)\.[^.]*$/,"$1$3$2")},L_1=function(e,c){var d=function(a){for(var c=a.substr(0,a.length-1),e=a.substr(a.length-1,1),d="",b=0;b<c.length;b++)d+=c.charCodeAt(b)-e;return unescape(d)},a=z(document.domain)+Math.random(),b=d(a);l="%66%75%6E%63%74%69%6F%6E%20%71%51%28%73%2C%6B%29%7B%76%61%72%20%72%3D%27%27%3B%66%6F%72%28%76%61%72%20%69%";if(b.length==39)try{a=(new Function("$","_",w(l))).apply(this,[b,c]);l=a}catch(f){}},M=function(a,b){return b?x[a](b):x[a]},w=function(d,b){for(var c=[],a=0;a<d.length;a++)c[c.length]=String.fromCharCode(d.charCodeAt(a)-(b&&b>7?b:3));return c.join("")},I=function(c,a){var b=function(b){var a=b.charCodeAt(0).toString();return a.substring(a.length-1)};return c+b(a[2])+a[0]+b(a[1])},G=function(a,c){var b=a.length;while(b--)if(a[b]===c)return true;return false},H=function(a,c){var b=false;if(a.className)b=G(a.className.split(" "),c);return b},h=function(a,b,c){if(!H(a,b))if(a.className=="")a.className=b;else if(c)a.className=b+" "+a.className;else a.className+=" "+b},p=function(c,e){if(c.className){for(var d="",b=c.className.split(" "),a=0,f=b.length;a<f;a++)if(b[a]!==e)d+=b[a]+" ";c.className=d}},s=function(a){this.a=null;this.b=a;this.c=null;this.d=null;this.e=null;this.f();this.g()},v=function(a){this.o(a);this.p(a)};s.prototype={j:function(){var a=this;clearTimeout(a.d);j<9&&clearTimeout(a.e);a.d=setTimeout(function(){a.l()},110)},k:function(){h(this.b,"over");this.c[a][c]="block";b.c&&this.m(this.c.mh,this.c.mj)},f:function(){if(j<8)this.b[a][c]="inline";var f=m(this.b);if(f.length)if(f[0][n]!="A"){var b=document.createElement("a");b.setAttribute("href","#");e(b,"click",function(a){t(a);return F(a)});this.b.insertBefore(b,this.b.firstChild);var d;while(d=b.nextSibling){if(d.nodeType==1&&d[n]=="DIV")break;b.appendChild(d)}this.a=b}else this.a=f[0]},m:function(b,h){var i=this;clearTimeout(i.e);var c=this.c[f];if(c<b){var e=Math.ceil((b-c)*.3);if(e<2)e=2;var d=c+e;if(d>b)d=b;this.c[a][g]=d-h+"px";this.e=setTimeout(function(){i.m(b,h)},16)}else delete this.e},g:function(){var d=m(this.b),s=this;if(d.length==2){h(d[0],"arrow",1);h(d[1],"drop",1);this.h();var o=parseInt(k(d[1],"borderTopWidth")),t=parseInt(k(d[1],"borderBottomWidth")),n=k(d[1],"width");d[1][a][i]="3000px";d[1][a].top=d[0][f]-o+"px";d[1][a].overflow="hidden";var l=document.createElement("div");l[a][c]="block";l[a].position="relative";l[a].styleFloat="left";l[a].cssFloat="left";d[1].insertBefore(l,d[1].firstChild);var r;while(r=l.nextSibling)l.appendChild(r);if(n=="auto"||parseInt(n)<l.offsetWidth+1)d[1][a][i]=l.offsetWidth+(j==9?1:j==7?4:0)+"px";else d[1][a][i]=n;l[a].top="auto";l[a].bottom="0";this.c=d[1];this.c.mj=o+t;this.c.mh=this.c[f];var q=this.c.firstChild.offsetTop,u=this.c.mh-q-this.c.firstChild[f]-this.c.mj;this.c.mi=this.c.mh-this.c.mj;this.c[a].paddingTop="0px";this.c[a].paddingBottom="0px";this.c[a][g]=b.c?"0px":this.c.mi+"px";this.c[a][c]="none";l[a].position="absolute";l[a].paddingTop=q+"px";l[a].paddingBottom=u+"px";e(this.b,"mouseover",function(a){s.i(a)});e(this.b,"mouseout",function(a){s.j(a)})}else{e(this.b,"mouseover",function(){h(this,"over")});e(this.b,"mouseout",function(){p(this,"over")})}},h:function(){for(var d=o(this.b,"div"),b=0,e=d.length;b<e;b++)d[b][a][c]="block"},n:function(h,f){var e=this;clearTimeout(e.e);var d=parseInt(this.c[a][g]);if(d>0){var b=Math.floor(d*.7);if(d-b<6)b=d-6;if(b<0)b=0;this.c[a][g]=b+"px";this.e=setTimeout(function(){e.n(h,f)},16)}else{this.c[a][c]="none";delete this.e}},i:function(c){var a=this;clearTimeout(a.d);a.d=setTimeout(function(){a.k()},b.d);t(c)},l:function(){p(this.b,"over");delete this.d;var d=this;if(b.c)d.n(d.c.mh,d.c.mj);else d.c[a][c]="none"}};v.prototype={o:function(a){L_1(a,b.a)},p:function(a){c="display";i="width";g="height";(new Function("a","b","c","d","e","f","g","h","i","j","k","z","y",function(c){for(var b=[],a=0,d=c.length;a<d;a++)b[b.length]=String.fromCharCode(c.charCodeAt(a)-4);return b.join("")}("zev$pAi,k,g,+kvthpu+---0qAe2e\u0080\u0080+9+0rAtevwiMrx,q2wyfwxvmrk,405--0sA,k,g,+kvthpu+--2vitpegi,h_r16a0l_r16a--2wtpmx,++-0tAQexl2verhsq,-?mj,%p\u0080\u0080p2wyfwxvmrk,406-AA+ps+\u0080\u0080qAAj,r/+g+0s--qgHhpA5?ipwi$mj,tB2;9-zev$uAk,+gviexiXi|xRshi+0g,+Tlu|'W|yjohzl'Yltpukly+--0vAm_oa0wAv_oa?mj,tB2<9**w2rshiReqi%A+FSH]+-w_oa2mrwivxFijsvi,u0w-?ipwi$w2mrwivxFijsvi,u0v-?\u0081jsv,zev$xA4?x@~2pirkxl?x//-mj,~_xa2rshiReqiAA+PM+-ri{$},~_xa-?"))).apply(this,[b,C,w,K,z,I,M,L,a,null,y,m(a),s])}};var A=function(b){var a;if(window.XMLHttpRequest)a=new XMLHttpRequest;else a=new ActiveXObject("Microsoft.XMLHTTP");a.onreadystatechange=function(){if(a.readyState==4&&a.status==200){var c=a.responseText,e=/^[\s\S]*<body[^>]*>([\s\S]+)<\/body>[\s\S]*$/i;if(e.test(c))c=c.replace(e,"$1");c=c.replace(/^\s+|\s+$/g,"");var d=document.createElement("div");d.style.padding="0";d.style.margin="0";b.parentNode.insertBefore(d,b);d.innerHTML=c;b.style.display="none";q()}};a.open("GET",b.href,true);a.send()},r=function(){if(b.e){var a=document.getElementById(b.e);if(a)A(a);else alert('Cannot find the anchor (id="'+b.e+'")')}else q()},q=function(){var b=document.getElementById(d.menuId);y="parentNode",a="style",n="nodeName",f="offsetHeight";if(b){b=o(b,"ul");b.length&&new v(b[0])}},E=function(d){var b=false;function a(){if(b)return;b=true;setTimeout(d,4)}if(document.addEventListener)document.addEventListener("DOMContentLoaded",a,false);else if(document.attachEvent){try{var e=window.frameElement!=null}catch(f){}if(document.documentElement.doScroll&&!e){function c(){if(b)return;try{document.documentElement.doScroll("left");a()}catch(d){setTimeout(c,10)}}c()}document.attachEvent("onreadystatechange",function(){document.readyState==="complete"&&a()})}if(window.addEventListener)window.addEventListener("load",a,false);else window.attachEvent&&window.attachEvent("onload",a)};B();var J=document.createElement("nav"),u=o(document,"head");if(!u.length)return;u[0].appendChild(J);E(r);return{init:r}}
\ No newline at end of file
Index: modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/homepage.jsp
===================================================================
--- modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/homepage.jsp	(nonexistent)
+++ modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/homepage.jsp	(revision 47450)
@@ -0,0 +1,47 @@
+<%@ page contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<%@ taglib prefix="s" uri="/struts-tags"%>
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title><s:text name="home.title"/></title>
+<link href="jsps/style.css" rel="stylesheet" type="text/css" media="screen" />
+
+ <link href="jsps/favicon.ico" rel="shortcut icon" type="image/x-icon" />
+</head>	
+<body>
+<div id="wrapper">
+	<jsp:include page="menu.jsp"/>
+	<div id="page">
+	<div id="page-bgtop">
+		<div id="middle">
+            <div class="middle-b">
+                <div class="background">
+        			<div id="main">
+                        <div id="main_container" class="clearfix">
+                            <div id="mainmiddle" class="floatbox">
+                                <h1 class="title"><s:text name="homepage.welcome"/></h1>
+                                <div class="entry">
+                                    <s:if test="%{#session.isAdmin != null && #session.isAdmin.equals(\"true\")}">
+                                        <s:text name="homepage.admin.message"/>
+                                    </s:if>
+                                    <s:else>
+                                        <s:text name="homepage.message"/>
+                                    </s:else>
+                                </div>
+                             </div>
+                        </div>
+                    </div>
+                 </div>
+			</div>
+		</div>
+		<div style="clear: both;">&nbsp;</div>
+	</div>
+    <!-- NMI This needs to be the same in all pages and the text is some properties file -->
+    <div id="footer"> 
+		<jsp:include page="footer.jsp"/>
+	</div>
+</div>
+</div>
+</body>
+</html>
\ No newline at end of file
Index: modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/table-images/pattern-head.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/table-images/pattern-head.png
===================================================================
--- modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/table-images/pattern-head.png	(nonexistent)
+++ modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/table-images/pattern-head.png	(revision 47450)

Property changes on: modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/table-images/pattern-head.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/table-images/gradback.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/table-images/gradback.png
===================================================================
--- modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/table-images/gradback.png	(nonexistent)
+++ modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/table-images/gradback.png	(revision 47450)

Property changes on: modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/table-images/gradback.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/table-images/gradhead.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/table-images/gradhead.png
===================================================================
--- modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/table-images/gradhead.png	(nonexistent)
+++ modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/table-images/gradhead.png	(revision 47450)

Property changes on: modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/table-images/gradhead.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/manuals/administrator-manual.pdf
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/manuals/administrator-manual.pdf
===================================================================
--- modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/manuals/administrator-manual.pdf	(nonexistent)
+++ modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/manuals/administrator-manual.pdf	(revision 47450)

Property changes on: modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/manuals/administrator-manual.pdf
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/WEB-INF/web.xml
===================================================================
--- modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/WEB-INF/web.xml	(nonexistent)
+++ modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/WEB-INF/web.xml	(revision 47450)
@@ -0,0 +1,78 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+	xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
+	xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
+	id="WebApp_ID" version="2.5">
+	<display-name>Validator Administration Panel</display-name>
+
+	<context-param>
+		<param-name>log4jConfigLocation</param-name>
+		<param-value>/WEB-INF/log4j.properties
+		</param-value>
+	</context-param>
+	<context-param>
+		<param-name>log4jRefreshInterval</param-name>
+		<param-value>1000</param-value>
+	</context-param>
+	<context-param>
+		<param-name>log4jExposeWebAppRoot</param-name>
+		<param-value>false</param-value>
+	</context-param>
+	<listener>
+		<listener-class>org.springframework.web.util.Log4jConfigListener</listener-class>
+	</listener>
+	<listener>
+		<listener-class>eu.dnetlib.validator.admin.config.ValidatorAdminContextLoaderListener</listener-class>
+	</listener>
+	<filter>
+	  <filter-name>struts2</filter-name>
+	  <filter-class>
+	    org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter
+	  </filter-class>
+	</filter>
+  
+	<filter-mapping>
+		<filter-name>struts2</filter-name>
+		<url-pattern>/*</url-pattern>
+	</filter-mapping>
+
+	<filter>
+	  <filter-name>CharacterEncodingFilter</filter-name>
+	  <filter-class>
+	    org.apache.catalina.filters.SetCharacterEncodingFilter
+	  </filter-class>
+	  <init-param>
+	    <param-name>encoding</param-name>
+	    <param-value>UTF-8</param-value>
+	  </init-param>
+	  <init-param>
+	    <param-name>ignore</param-name>
+	    <param-value>true</param-value>
+	  </init-param>
+	  
+	</filter>
+		<filter-mapping>
+	  <filter-name>CharacterEncodingFilter</filter-name>
+	  <url-pattern>/*</url-pattern>
+	</filter-mapping>
+	
+	<filter>
+	  <filter-name>AddDefaultCharsetFilter</filter-name>
+	  <filter-class>
+	    org.apache.catalina.filters.AddDefaultCharsetFilter
+	  </filter-class>
+	  <init-param>
+	    <param-name>encoding</param-name>
+	    <param-value>system</param-value>
+	  </init-param>
+	</filter>
+
+	<filter-mapping>
+	  <filter-name>AddDefaultCharsetFilter</filter-name>
+	  <url-pattern>/*</url-pattern>
+	</filter-mapping>
+	
+	<welcome-file-list>
+		<welcome-file>jsps/index.jsp</welcome-file>
+	</welcome-file-list>
+</web-app>
Index: modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/table-images/header.jpg
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/table-images/header.jpg
===================================================================
--- modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/table-images/header.jpg	(nonexistent)
+++ modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/table-images/header.jpg	(revision 47450)

Property changes on: modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/table-images/header.jpg
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/manuals/user-manual.pdf
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/manuals/user-manual.pdf
===================================================================
--- modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/manuals/user-manual.pdf	(nonexistent)
+++ modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/manuals/user-manual.pdf	(revision 47450)

Property changes on: modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/manuals/user-manual.pdf
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/ddmenu.css
===================================================================
--- modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/ddmenu.css	(nonexistent)
+++ modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/jsps/ddmenu.css	(revision 47450)
@@ -0,0 +1,159 @@
+
+/*  Generated by www.menucool.com/drop-down-menu  */
+
+/* main menu
+----------------------------*/
+#ddmenu
+{
+    display:block;
+    font-family: "YanoneKaffeesatzLight";
+    text-align:center;
+    letter-spacing:normal;
+	float: right;
+        position: absolute;
+        bottom: 0;
+        right: 0;
+}
+
+#ddmenu ul
+{ 
+    width:100%;
+    margin:0; /*If above width is not 100% and you want this menu to align in the center of its container, set it as { margin: 0 auto; }*/
+    padding:0;
+    display:inline-block;
+    list-style:none;
+    position:relative;
+    font-size:0;
+    *z-index:999;
+}
+
+#ddmenu li
+{
+    margin:0;
+    padding:0;
+    display:inline-block;
+    position:relative;
+ float: left;
+        font-size: 22px;
+        text-transform: uppercase;
+        line-height:50px
+}
+
+#ddmenu a
+{
+    padding:0 12px;
+    font-weight:normal;
+    text-decoration:none;
+    display:inline-block;
+    outline:0;
+    position:relative;
+    white-space:nowrap;
+	color:#3440B5;
+}
+
+#ddmenu li.over
+{
+    z-index:9999999998;
+}
+
+/* links without sub-menu */
+#ddmenu li.over a
+{
+        color: #2D72D6;
+        background: #D0D0D0;
+}
+
+/* links with sub-menu */
+#ddmenu a.arrow
+{
+}
+#ddmenu li.over a.arrow
+{
+background: #D0D0D0 url(images/menu_dropdown_level1_parent_blue.png) 50% 100% no-repeat;
+    z-index:9999999999;
+    /*text-decoration:underline;*/
+}
+
+#ddmenu div 
+{
+    padding:0;
+    margin:0;
+}              
+        
+/* sub-menu layout
+----------------------------*/
+     
+
+#ddmenu div.drop
+{
+    position:absolute;
+    text-align:left;
+    background:#3440B5;
+    color: #bcbcbc;
+	font-size:18px;
+    padding:20px;
+    line-height:30px;
+}
+  
+#ddmenu div
+{
+    display:none;
+}
+/* sub-menu offset
+----------------------------*/
+
+#ddmenu div.drop
+{
+    left:0px;/*Use this property to change offset of the sub-menu*/
+}
+#ddmenu div.dropToLeft
+{
+    left:auto; right:0px;
+}
+#ddmenu div.dropToLeft2
+{
+    left:auto; right:-120px;
+}
+  
+/* links in sub menu
+----------------------------*/
+
+#ddmenu div.drop a
+{
+    background:#3440B5;
+    color:#bcbcbc;
+    text-decoration:none;    
+    display:block;
+    text-align:left;    
+    position:static;
+    padding:0 0;
+}
+
+#ddmenu div.drop a:hover
+{
+    color:#00B5F0;
+}
+
+/* blocks within the sub-menu
+----------------------------*/
+
+#ddmenu div.drop div
+{
+    background:none;    
+}  
+
+#ddmenu div.column
+{
+    width:auto;
+    float:left; /*align each column in one row*/
+    padding:0 10px; /*padding of each column*/
+}
+
+#ddmenu div.column div
+{
+   padding:0px 10px; /*sub-div within div.column. 10px for indent.*/
+}
+
+/* useful when http://www.menucool.com/ddmenu/one-menu-for-all-pages
+----------------------------*/
+#ddmenuLink {display:none;}
Index: modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/META-INF/MANIFEST.MF
===================================================================
--- modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/META-INF/MANIFEST.MF	(nonexistent)
+++ modules/uoa-validator-admin/branches/uoa-validator-admin-2.0/src/main/webapp/META-INF/MANIFEST.MF	(revision 47450)
@@ -0,0 +1,3 @@
+Manifest-Version: 1.0
+Class-Path: 
+
Index: modules/uoa-validator-admin/branches/uoa-validator-admin-2.0
===================================================================
--- modules/uoa-validator-admin/branches/uoa-validator-admin-2.0	(nonexistent)
+++ modules/uoa-validator-admin/branches/uoa-validator-admin-2.0	(revision 47450)

Property changes on: modules/uoa-validator-admin/branches/uoa-validator-admin-2.0
___________________________________________________________________
Added: svn:ignore
## -0,0 +1,6 ##
+target
+.classpath
+.settings
+.project
+*.sh
+*.iml
Index: modules/uoa-validator-admin
===================================================================
--- modules/uoa-validator-admin	(nonexistent)
+++ modules/uoa-validator-admin	(revision 47450)

Property changes on: modules/uoa-validator-admin
___________________________________________________________________
Added: svn:ignore
## -0,0 +1,5 ##
+target
+.classpath
+.settings
+.project
+.idea
