Version 0.4.10 merged with default stable

Fri, 01 May 2020 16:37:31 +0200

author
Michiel Broek <mbroek@mbse.eu>
date
Fri, 01 May 2020 16:37:31 +0200
branch
stable
changeset 665
4d01937ae7af
parent 521
9d1aa6f3a4da (current diff)
parent 664
17cec1b43923 (diff)

Version 0.4.10 merged with default

config.status file | annotate | diff | comparison | revisions
configure file | annotate | diff | comparison | revisions
configure.ac file | annotate | diff | comparison | revisions
www/js/global-min.js file | annotate | diff | comparison | revisions
www/js/import_ingredients-min.js file | annotate | diff | comparison | revisions
www/js/inv_equipments-min.js file | annotate | diff | comparison | revisions
www/js/inv_fermentables-min.js file | annotate | diff | comparison | revisions
www/js/inv_hops-min.js file | annotate | diff | comparison | revisions
www/js/inv_miscs-min.js file | annotate | diff | comparison | revisions
www/js/inv_suppliers-min.js file | annotate | diff | comparison | revisions
www/js/inv_waters-min.js file | annotate | diff | comparison | revisions
www/js/inv_yeasts-min.js file | annotate | diff | comparison | revisions
www/js/jquery-1.11.1-min.js file | annotate | diff | comparison | revisions
www/js/log_brew-min.js file | annotate | diff | comparison | revisions
www/js/log_co2pressure-min.js file | annotate | diff | comparison | revisions
www/js/log_fermentation-min.js file | annotate | diff | comparison | revisions
www/js/mon_co2meter-min.js file | annotate | diff | comparison | revisions
www/js/mon_fermenter-min.js file | annotate | diff | comparison | revisions
www/js/mon_node-min.js file | annotate | diff | comparison | revisions
www/js/prod_archive_code-min.js file | annotate | diff | comparison | revisions
www/js/prod_archive_date-min.js file | annotate | diff | comparison | revisions
www/js/prod_archive_name-min.js file | annotate | diff | comparison | revisions
www/js/prod_divide-min.js file | annotate | diff | comparison | revisions
www/js/prod_edit-min.js file | annotate | diff | comparison | revisions
www/js/prod_export-min.js file | annotate | diff | comparison | revisions
www/js/prod_impbrew-min.js file | annotate | diff | comparison | revisions
www/js/prod_inprod-min.js file | annotate | diff | comparison | revisions
www/js/prod_new-min.js file | annotate | diff | comparison | revisions
www/js/profile_fermentation-min.js file | annotate | diff | comparison | revisions
www/js/profile_mash-min.js file | annotate | diff | comparison | revisions
www/js/profile_setup-min.js file | annotate | diff | comparison | revisions
www/js/profile_styles-min.js file | annotate | diff | comparison | revisions
www/js/profile_water-min.js file | annotate | diff | comparison | revisions
www/js/rec_edit-min.js file | annotate | diff | comparison | revisions
www/js/rec_export-min.js file | annotate | diff | comparison | revisions
www/js/rec_import-min.js file | annotate | diff | comparison | revisions
www/js/rec_main-min.js file | annotate | diff | comparison | revisions
www/js/rec_new-min.js file | annotate | diff | comparison | revisions
--- a/.hgignore	Fri Oct 18 13:20:35 2019 +0200
+++ b/.hgignore	Fri May 01 16:37:31 2020 +0200
@@ -10,12 +10,12 @@
 www/version.php
 www/config.php
 www/thermferm
+www/website
 www/run/sequence
 
 syntax: glob
 *.o
 */filelist
 icons/*
-tools/*
 www/log/*
 Makefile.bak
--- a/README.design	Fri Oct 18 13:20:35 2019 +0200
+++ b/README.design	Fri May 01 16:37:31 2020 +0200
@@ -7,20 +7,10 @@
 
 -----------------------------------------------------------------------------
 
-TODO:
-
-Export ingredienten naar xml.
-
 Bug:
   Metingen en berekeningen met afgelezen Brix waardes kloppen niet op het eind
   van de vergisting. Gaat vooral fout met de Saison.
-  Eind SG na koken klopt niet als er suiker in de vergisting toegevoegd wordt.
-  In de js code is dit est_og3 en niet est_og, maar est_og3 is niet beschikbaar
-  in de php code.
-
-Wish:
-  Giststarter bereken gist viability. Viability zelf wordt al gebruikt.
-  Giststarter automatisch aantal regels aanpassen bij wijzigen van de hoeveelheden.
+  NOOT: experimentele wijziging is toegevoegd op 5-dec-2019. New Cubic van seanterrill.
 
 Extra:
 
@@ -30,42 +20,36 @@
   beta glucosidase
 Gist typen: Wild yeast, Spontaneous.
 
-Nieuwe velden:
-  pofpos		boolean						POF+ (Phenolic Off Flavor Positive) (Ferulic acid to 4-vinyl-guaiacol)
-  zymocide		int4		none, K1, K2, K28, Klus		zymocide+ (K1,K2,K28 or Klus)  (killer yeast gen) (Alleen in wijngist?)
-  sta1			boolean						Diastatic gen
-  harvest_top   	boolean						Kveik top/bottom harvest
-  harvest_time  	int16						Kveik harvest after nn hours
-  pitch_temperature     float						Kveik pitch temperature
-  bacteria      	boolean						Kveik has bacteria flag
-
 
 Toevoegen Barrel/Oak aging vergisting stap. Wort souring stap.
 
-Add dry-hop toevoegen moment.
-
 Split batch:
- 1. After sparge, before boil.
- 2. After boil, before primary.
- 3. After primary
- 4. After secondary (several dry-hops)
- 5. After lagering (separated packaging)
 
 Split fields:
-divide_type	0:none 1:after mash 2:after boil 3:after primary 4:after secondary 5:after tertiary
+divide_type	0:none 1:after mash 2:after boil 3:after cooling 4:after primary 5:after secondary 6:after tertiary
 divide_size	amount in liters of this part.
+divide_factor	factor size of this part or 1.0
 divide_parts	hoeveel afsplitsingen.
-divide_from	uuid
-Via Export module dialoog  maken, keuze aantal afsplitsels en grootte per stuk. 10 stuks.
-Procedure: Genereer afsplitsels met uniek uuid en moeder uuid. Pas volumes aan na splitspunt.
-Afsplitsels naam aanpassen, code een -n volgnummer toevoegen.
-Daarna, markeer master en reduceer volume na splitspunt.
+divide_part	0=hoofdbatch.
 
-Miscs type: add wood.
+Via Export module dialoog  maken, keuze aantal afsplitsels en grootte per stuk. 10 stuks.	Ok.
+Procedure: Genereer afsplitsels in db_product. Pas alle volumes aan.				Ok.
+Afsplitsels naam aanpassen, code en -n volgnummer toevoegen.					Ok.
+Daarna, markeer master en reduceer volume.							Ok.
+Tot zover werkt het. Probleem, wijzig iets aan ingredienten voor het splitspunt. Alle
+batches moeten dan ook bijgewerkt worden. Logic: in db_product.php test stage tegen divide_type.
+Zolang we wijzigen en het splitspunt is nog niet bereikt, de overige records bijwerken met de
+data tot het splitspunt. Dus check voorgaande stage in geval die ophoogt na edit.
 
-Hop types: Extract IKE.
+View - master alleen wijzigen voor splitspunt.
+     - splitsingen alleen wijzigen na splitspunt.
+
 
-Popups in de editors met rekenhulpjes.
+Hop types: Extract IKE. Tetra hop.
+
+Maischen: volledig infusie en decoctie implementeren zodat ook de Hermann methode kan.
+          Dubbel maischen?
+Stap velden: gemeten pH en SG
 
 
 https://github.com/beerjson/beerjson
--- a/bmsd/Makefile	Fri Oct 18 13:20:35 2019 +0200
+++ b/bmsd/Makefile	Fri May 01 16:37:31 2020 +0200
@@ -1,4 +1,4 @@
-# Makefile for the mbsePi-apps/thermferm.
+# Makefile for the bmsd/bmsd.
 
 include ../Makefile.global
 
@@ -55,11 +55,13 @@
 
 # DO NOT DELETE THIS LINE - MAKE DEPEND RELIES ON IT
 # Dependencies generated by make depend
-mqtt.o: bms.h xutil.h mqtt.h nodes.h fermenters.h co2meters.h
+mqtt.o: bms.h xutil.h mqtt.h nodes.h fermenters.h co2meters.h ispindels.h
 lock.o: lock.h bms.h futil.h
 nodes.o: bms.h xutil.h nodes.h mysql.h
 futil.o: bms.h futil.h
 fermenters.o: bms.h xutil.h fermenters.h mysql.h
+co2meters.o: bms.h xutil.h co2meters.h mysql.h
+ispindels.o: bms.h xutil.h ispindels.h mysql.h nodes.h
 bms.o: bms.h xutil.h futil.h rdconfig.h lock.h mqtt.h mysql.h nodes.h
 xutil.o: bms.h xutil.h
 rdconfig.o: bms.h xutil.h futil.h rdconfig.h
--- a/bmsd/bms.c	Fri Oct 18 13:20:35 2019 +0200
+++ b/bmsd/bms.c	Fri May 01 16:37:31 2020 +0200
@@ -32,7 +32,7 @@
 
 int			my_shutdown = FALSE;
 int			debug = FALSE;
-static pid_t		pgrp, mypid;
+static pid_t		/*pgrp, */mypid;
 char			*Private_Path = NULL;	/* Users data path		*/
 
 extern sys_config       Config;
@@ -133,8 +133,10 @@
 
     while (my_shutdown == FALSE) {
 
-	usleep(100000);
+	usleep(4000000);
 	nodes_check_online();
+	usleep(1000000);
+	ispindel_mysql_check();
     }
     if (debug)
 	fprintf(stdout, "[main] Exit from main loop\n");
@@ -217,9 +219,9 @@
 	 * if the child were to open a terminal, it would become
 	 * associated with that terminal as its control terminal.
 	 */
-	if ((pgrp = setpgid(0, 0)) == -1) {
-	    syslog(LOG_NOTICE, "setpgpid failed");
-	}
+//	if ((pgrp = setpgid(0, 0)) == -1) {
+//	    syslog(LOG_NOTICE, "setpgid failed: %s", strerror(errno));
+//	}
 
 	frk = fork();
 	switch (frk) {
--- a/bmsd/bms.h	Fri Oct 18 13:20:35 2019 +0200
+++ b/bmsd/bms.h	Fri May 01 16:37:31 2020 +0200
@@ -45,7 +45,12 @@
 #include <libxml/encoding.h>
 #include <libxml/xmlwriter.h>
 #include <mosquitto.h>
+#ifdef HAVE_MYSQL_MYSQL_H
 #include <mysql/mysql.h>
+#endif
+#ifdef HAVE_MARIADB_MYSQL_H
+#include <mariadb/mysql.h>
+#endif
 #include <json-c/json.h>
 
 
@@ -53,7 +58,7 @@
 
 
 #define MQTT_NODE_CONTROL	0x0001			///< Show node control
-
+#define LOWBATT			3.3			///< Low battery voltage
 
 
 /**
@@ -100,6 +105,7 @@
     char			*net_address;		///< IPv4 or IPv6 address
     char			*net_ifname;		///< Interface name
     int				net_rssi;		///< RSSI value if wireless.
+    int				interval;		///< Update interval
 } sys_node_list;
 
 
@@ -146,6 +152,7 @@
 {
     ALARM_FLAG_DOOR	= 0x0001,	///< Door open
     ALARM_FLAG_PSU	= 0x0002,	///< PSU problem
+    ALARM_FLAG_BATTERY	= 0x0004,	///< Low battery
     ALARM_FLAG_CHILLER	= 0x0100,	///< Chiller too warm
 } ALARM_FLAGS;
 
@@ -237,7 +244,7 @@
     int		fan_power;		///< Fan power 0 or 100
     uint64_t	fan_usage;		///< Fan usage counter in seconds
     float	setpoint_low;		///< Target temperature low
-    float	setpoint_high;		///< Tarhet temperature high
+    float	setpoint_high;		///< Target temperature high
     char	*mode;			///< Working mode.
     char	*stage;			///< Fermentation stage
     char	*event;			///< Optional event
@@ -275,7 +282,7 @@
 
 
 /**
- * @brief Strcuture holding a co2 pressure log entry.
+ * @brief Structure holding a co2 pressure log entry.
  */
 typedef struct co2meter_log {
     char			*datetime;		///< Date/time stamp
@@ -300,35 +307,25 @@
 } brewer_list;
 
 
-// Make it universal and make it connectable with a fermenter.
+// Make it universal and make it connectable with a beer.
 typedef struct _ispindel_list {
     struct _ispindel_list	*next;
-    char			*uuid;			///< Fixed uuid string
-    char			*name;			///< Name or description (Red iSpindle).
-    char			*beercode;		///< Beer code if in use.
-    float			temperature;		///< Temperature of the beer.
-    float			gravity;		///< Measured gravity
-    							// What nore, battery?
-} ispindel_list;
-
-
-// Hergisting meters.
+    char			*uuid;			///< Fixed uuid string.
+    char			*alias;			///< Alias name.
+    char			*node;			///< Node name received.
+    bool			online;			///< Is considered online.
+    char			*mode;			///< Working mode OFF or ON.
+    uint32_t			alarm;			///< Alarm flags.
+    char			*beercode;              ///< Beer unique code
+    char                        *beername;              ///< Beer name being measured
+    char                        *beeruuid;              ///< Beer uuid being measured
+    float			angle;			///< Tilt angle in degrees
+    float			temperature;		///< Temperature in C
+    float			battery;		///< Battery voltage
+    float			gravity;		///< Gravity in plato?
+    int				interval;		///< Measure interval
+} sys_ispindel_list;
 
-/**
- * @brief Standalone temperature loggers. (Freezers, refrigerators, chambers).
- */
-typedef struct _thb_list {
-    struct _thb_list		*next;
-    char			*uuit;			///< Fixed uuid string
-    char			*name;			///< Name or description
-    char			*beercode;		///< Beer code if needed.
-    float			temperature;		///< Temperature in Celcius
-    float			humidity;		///< Humidity in %
-    float			barometer;		///< Air pressure.
-    float			gps_latitude;		///< GPS latitude
-    float			gps_longitude;		///< GPS longitide
-    float			gps_altitude;		///< GPS altitude
-} thb_list;
 
 
 #endif
--- a/bmsd/co2meters.c	Fri Oct 18 13:20:35 2019 +0200
+++ b/bmsd/co2meters.c	Fri May 01 16:37:31 2020 +0200
@@ -235,9 +235,9 @@
     jobj = json_tokener_parse(payload);
 
     timestamp = time(NULL);
-    log->datetime = malloc(21);
+    log->datetime = malloc(73);
     mytime = localtime(&timestamp);
-    snprintf(log->datetime, 20, "%04d-%02d-%02d %02d:%02d:%02d", 
+    snprintf(log->datetime, 72, "%04d-%02d-%02d %02d:%02d:%02d",
 	mytime->tm_year + 1900, mytime->tm_mon + 1, mytime->tm_mday, mytime->tm_hour, mytime->tm_min, mytime->tm_sec);
 
     if (json_object_object_get_ex(jobj, "metric", &metric)) {
@@ -267,6 +267,21 @@
             syslog(LOG_NOTICE, "MySQL: mysq_store_result error %u (%s))", mysql_errno(con), mysql_error(con));
         } else {
             if ((row = mysql_fetch_row(res_set)) != NULL) {
+		/*
+		 * Ignore when the beer_name or beer_code is not set.
+		 */
+		if ((int)strlen(row[0]) == 0 || (int)strlen(row[1]) == 0) {
+		    if (log->datetime)
+        		free(log->datetime);
+    		    if (log->uuid)
+        		free(log->uuid);
+    		    if (log->node)
+        		free(log->node);
+    		    if (log->alias)
+        		free(log->alias);
+    		    free(log);
+		    return;
+		}
 		log->product_code = xstrcpy(row[0]);
 		log->product_name = xstrcpy(row[1]);
 		log->product_uuid = xstrcpy(row[2]);
--- a/bmsd/fermenters.c	Fri Oct 18 13:20:35 2019 +0200
+++ b/bmsd/fermenters.c	Fri May 01 16:37:31 2020 +0200
@@ -444,9 +444,9 @@
 
     if (json_object_object_get_ex(jobj, "timestamp", &val)) {
 	timestamp = json_object_get_int(val);
-    	log->datetime = malloc(21);
+    	log->datetime = malloc(73);
     	mytime = localtime(&timestamp);
-    	snprintf(log->datetime, 20, "%04d-%02d-%02d %02d:%02d:%02d", 
+    	snprintf(log->datetime, 73, "%04d-%02d-%02d %02d:%02d:%02d",
 	    mytime->tm_year + 1900, mytime->tm_mon + 1, mytime->tm_mday, mytime->tm_hour, mytime->tm_min, mytime->tm_sec);
     }
 
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/bmsd/ispindels.c	Fri May 01 16:37:31 2020 +0200
@@ -0,0 +1,241 @@
+/**
+ * @file ispindels.c
+ * @brief Handle ispindels data
+ * @author Michiel Broek <mbroek at mbse dot eu>
+ *
+ * Copyright (C) 2019-2020
+ *
+ * This file is part of the bms (Brewery Management System)
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License as published by the
+ * Free Software Foundation; either version 2, or (at your option) any
+ * later version.
+ *
+ * bms is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with ThermFerm; see the file COPYING.  If not, write to the Free
+ * Software Foundation, 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.
+ */
+
+
+#include "bms.h"
+#include "xutil.h"
+#include "ispindels.h"
+#include "mysql.h"
+#include "nodes.h"
+
+
+sys_ispindel_list	*ispindels = NULL;
+
+extern int		debug;
+extern sys_config       Config;
+extern MYSQL		*con;
+extern MYSQL_RES	*res_set;
+extern MYSQL_ROW	row;
+
+
+
+void ispindel_set(char *node, char *payload)
+{
+    sys_ispindel_list	*ispindel, *tmpp;
+    struct json_object  *jobj, *metric, *val;
+    bool		new_ispindel = true;
+    char		*datetime, buf[65], *line, *logfile;
+    struct tm           *mytime;
+    time_t              timestamp;
+    FILE		*fp;
+
+//    if (debug)
+//    	printf("ispindel_set: %s %s\n", node, payload);
+
+    /*
+     * Search ispindel record in the memory array and use it if found.
+     */
+    if (ispindels) {
+	for (tmpp = ispindels; tmpp; tmpp = tmpp->next) {
+	    if (strcmp(tmpp->node, node) == 0) {
+		new_ispindel = false;
+		ispindel = tmpp;
+		break;
+	    }
+	}
+    }
+
+//    if (debug)
+//    	printf("new_ispindel %s\n", new_ispindel ? "true":"false");
+
+    /*
+     * Allocate new ispindel if not yet known.
+     */
+    if (new_ispindel) {
+	ispindel = (sys_ispindel_list *)malloc(sizeof(sys_ispindel_list));
+	memset(ispindel, 0, sizeof(sys_ispindel_list));
+	ispindel->node = xstrcpy(node);
+	ispindel->mode = xstrcpy((char *)"OFF");
+    }
+
+    if (! ispindel->online) {
+    	ispindel->online = true;
+    	syslog(LOG_NOTICE, "Online ispindel %s mode %s", node, ispindel->mode);
+    }
+
+    /*
+     * Process the JSON formatted payload.
+     * Update only the fields that are found in the payload.
+     */
+    jobj = json_tokener_parse(payload);
+
+    if (json_object_object_get_ex(jobj, "unit", &metric)) {
+	if (json_object_object_get_ex(metric, "uuid", &val)) {
+            if (ispindel->uuid)
+                free(ispindel->uuid);
+            ispindel->uuid = xstrcpy((char *)json_object_get_string(val));
+        }
+	if (json_object_object_get_ex(metric, "alias", &val)) {
+            if (ispindel->alias)
+                free(ispindel->alias);
+            ispindel->alias = xstrcpy((char *)json_object_get_string(val));
+        }
+	if (json_object_object_get_ex(metric, "alarm", &val)) {
+            ispindel->alarm = json_object_get_int(val);
+        }
+	if (json_object_object_get_ex(metric, "interval", &val)) {
+            ispindel->interval = json_object_get_int(val);
+        }
+	if (json_object_object_get_ex(metric, "angle", &val)) {
+            ispindel->angle = json_object_get_double(val);
+        }
+	if (json_object_object_get_ex(metric, "temperature", &val)) {
+            ispindel->temperature = json_object_get_double(val);
+        }
+	if (json_object_object_get_ex(metric, "battery", &val)) {
+            ispindel->battery = json_object_get_double(val);
+        }
+	if (json_object_object_get_ex(metric, "gravity", &val)) {
+            ispindel->gravity = json_object_get_double(val);
+        }
+    }
+
+//    ispindel_dump(ispindel);
+
+    if (new_ispindel) {
+    	if (ispindels == NULL) {
+	    ispindels = ispindel;
+	} else {
+	    for (tmpp = ispindels; tmpp; tmpp = tmpp->next) {
+		if (tmpp->next == NULL) {
+		    tmpp->next = ispindel;
+		    break;
+		}
+	    }
+	}
+	ispindel_mysql_insert(ispindel);
+    } else {
+	ispindel_mysql_update(ispindel);
+    }
+
+    /*
+     * The data is complete, see if we can write a log entry.
+     */
+    if (ispindel->beercode && strlen(ispindel->beercode) && ispindel->beername && strlen(ispindel->beername) &&
+	ispindel->online && (strcmp(ispindel->mode, (char *)"ON") == 0)) {
+	datetime = malloc(72);
+	timestamp = time(NULL);
+	mytime = localtime(&timestamp);
+    	snprintf(datetime, 72, "%04d-%02d-%02d %02d:%02d:%02d",
+        	mytime->tm_year + 1900, mytime->tm_mon + 1, mytime->tm_mday, mytime->tm_hour, mytime->tm_min, mytime->tm_sec);
+
+	line = xstrcpy(datetime);
+    	line = xstrcat(line, (char *)",");
+	snprintf(buf, 64, "%.4f", ispindel->temperature);
+        line = xstrcat(line, buf);
+        line = xstrcat(line, (char *)",");
+	snprintf(buf, 64, "%.5f", ispindel->gravity);
+        line = xstrcat(line, buf);
+        line = xstrcat(line, (char *)",");
+//	snprintf(buf, 64, "%.5f", 1 + (ispindel->gravity / (258.6 - ((ispindel->gravity / 258.2) * 227.1))));
+	snprintf(buf, 64, "%.5f", 1.00001 + (0.0038661 * ispindel->gravity) + (1.3488e-5 * ispindel->gravity * ispindel->gravity) +
+			(4.3074e-8 * ispindel->gravity * ispindel->gravity * ispindel->gravity));
+	line = xstrcat(line, buf);
+        line = xstrcat(line, (char *)",");
+        snprintf(buf, 64, "%.6f", ispindel->battery);
+        line = xstrcat(line, buf);
+        line = xstrcat(line, (char *)",");
+        snprintf(buf, 64, "%.5f", ispindel->angle);
+        line = xstrcat(line, buf);
+        line = xstrcat(line, (char *)",");
+	snprintf(buf, 64, "%d", ispindel->interval);
+        line = xstrcat(line, buf);
+        line = xstrcat(line, (char *)",");
+	line = xstrcat(line, ispindel->uuid);
+
+	/*
+	 * Build logfile name
+	 */
+	logfile = xstrcpy(Config.web_root);
+	logfile = xstrcat(logfile, (char *)"/log/ispindel/");
+	logfile = xstrcat(logfile, ispindel->beercode);
+	logfile = xstrcat(logfile, (char *)" ");
+	logfile = xstrcat(logfile, ispindel->beername);
+	logfile = xstrcat(logfile, (char *)".log");
+
+	fp = fopen(logfile, "a");
+	if (fp) {
+	    fprintf(fp, "%s\n", line);
+	    fclose(fp);
+	} else {
+	    syslog(LOG_NOTICE, "cannot append to `%s'", logfile);
+	}
+
+	free(logfile);
+	logfile = NULL;
+	free(line);
+	line = NULL;
+	free(datetime);
+	datetime = NULL;
+    }
+}
+
+
+
+/*
+ * Process iSpindel MQTT message.
+ */
+void ispindel_birth_data(char *topic, char *payload)
+{
+    char		*message_type, *edge_node;
+
+    strtok(topic, "/"); // ignore namespace
+    strtok(NULL, "/");
+    message_type = strtok(NULL, "/");
+    edge_node = strtok(NULL, "/\0");
+
+    if (strcmp("DBIRTH", message_type) == 0) {
+	ispindel_set(edge_node, payload);
+    }
+}
+
+
+
+void ispindel_dump(sys_ispindel_list *ispindel)
+{
+    if (debug) {
+    	printf("node/alias  %s / %s\n", ispindel->node, ispindel->alias);
+	printf("uuid        %s\n", ispindel->uuid);
+	printf("online      %s\n", ispindel->online ? "yes":"no");
+	printf("mode        %s\n", ispindel->mode);
+	printf("product     %s / %s\n", ispindel->beercode, ispindel->beername);
+        printf("tilt        %.5f\n", ispindel->angle);
+	printf("temperature %.4f\n", ispindel->temperature);
+	printf("battery     %.6f\n", ispindel->battery);
+	printf("gravity     %.5f\n", ispindel->gravity);
+	printf("interval    %d\n", ispindel->interval);
+    }
+}
+
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/bmsd/ispindels.h	Fri May 01 16:37:31 2020 +0200
@@ -0,0 +1,22 @@
+/**
+ * @file ispindels.h
+ */
+
+#ifndef _ISPINDEL_H
+#define _ISPINDEL_H
+
+void ispindel_dump(sys_ispindel_list *ispindel);
+
+/**
+ * @brief Messages received from a iSpindel using the MQTT sender.
+ *        A new node is created if this is the first message of the
+ *        iSpindel, else the last seen time is updated. Then the last
+ *        actual state is recorded. A log line is written when a beer
+ *        is assigned.
+ * @param topic The MQTT topic string, contains the ispindel type and name
+ * @param payload The value for the selected keyword.
+ */
+void ispindel_birth_data(char *topic, char *payload);
+
+
+#endif
--- a/bmsd/mqtt.c	Fri Oct 18 13:20:35 2019 +0200
+++ b/bmsd/mqtt.c	Fri May 01 16:37:31 2020 +0200
@@ -1,5 +1,5 @@
 /*****************************************************************************
- * Copyright (C) 2017-2019
+ * Copyright (C) 2017-2020
  *   
  * Michiel Broek <mbroek at mbse dot eu>
  *
@@ -26,6 +26,7 @@
 #include "nodes.h"
 #include "fermenters.h"
 #include "co2meters.h"
+#include "ispindels.h"
 
 
 extern sys_config       Config;
@@ -102,6 +103,9 @@
 	topic = xstrcpy((char *)"mbv1.0/co2meters/#");	// Subscribe to co2meter messages.
 	mosquitto_subscribe(mosq, NULL, topic, 0);
 	free(topic);
+	topic = xstrcpy((char *)"mbv1.0/ispindels/#");  // Subscribe to ispindel messages.
+        mosquitto_subscribe(mosq, NULL, topic, 0);
+        free(topic);
 	topic = NULL;
        	mqtt_status = STATUS_CONNACK_RECVD;
     } else {
@@ -171,6 +175,9 @@
 	    fermenter_log(message->topic, (char *)message->payload);
 	    return;
 	}
+	if (strstr(message->topic, (char *)"fermenters") && strstr(message->topic, (char *)"DCMD")) {
+            return; // just ignore our own commands.
+        }
 	if (strstr(message->topic, (char *)"co2meters") &&  strstr(message->topic, (char *)"DBIRTH")) {
             co2meter_birth_data(message->topic, (char *)message->payload);
             return;
@@ -179,6 +186,10 @@
             co2meter_log(message->topic, (char *)message->payload);
             return;
         }
+	if (strstr(message->topic, (char *)"ispindels") && strstr(message->topic, (char *)"DBIRTH")) {
+	    ispindel_birth_data(message->topic, (char *)message->payload);
+	    return;
+	}
 	syslog(LOG_NOTICE, "MQTT: message callback %s :: %d", message->topic, message->payloadlen);
     } else {
 	if (strstr(message->topic, (char *)"NBIRTH")) {
--- a/bmsd/mysql.c	Fri Oct 18 13:20:35 2019 +0200
+++ b/bmsd/mysql.c	Fri May 01 16:37:31 2020 +0200
@@ -3,7 +3,7 @@
  * @brief MySQL/MariaDB access.
  * @author Michiel Broek <mbroek at mbse dot eu>
  *
- * Copyright (C) 2018-2019
+ * Copyright (C) 2018-2020
  *
  * This file is part of the bms (Brewery Management System)
  *
@@ -36,6 +36,7 @@
 extern sys_node_list		*nodes;
 extern sys_fermenter_list	*fermenters;
 extern sys_co2meter_list	*co2meters;
+extern sys_ispindel_list	*ispindels;
 extern int              	debug;
 
 
@@ -62,7 +63,8 @@
     sys_node_list	*node, *tmpp;
     sys_fermenter_list	*fermenter, *tmpf;
     sys_co2meter_list	*co2meter, *tmpc;
-    int			ccnt = 0, ncnt = 0, fcnt = 0;
+    sys_ispindel_list   *ispindel, *tmpi;
+    int			icnt = 0, ccnt = 0, ncnt = 0, fcnt = 0;
 
     con = mysql_init(NULL);
     if (con == NULL) {
@@ -97,7 +99,7 @@
 		node->next          = NULL;
 		node->uuid          = xstrcpy(row[1]);
 		node->node          = xstrcpy(row[2]);
-		node->online        = false;	// Will be set using MQTT
+		node->online        = atoi(row[3]);
 		node->group_id      = xstrcpy(row[4]);
 		node->hardwaremake  = xstrcpy(row[5]);
 		node->hardwaremodel = xstrcpy(row[6]);
@@ -115,6 +117,7 @@
 		node->net_address   = xstrcpy(row[18]);
 		node->net_ifname    = xstrcpy(row[19]);
 		node->net_rssi      = atoi(row[20]);
+		node->interval      = atoi(row[21]);
 
 		if (nodes == NULL) {
 		    nodes = node;
@@ -146,7 +149,7 @@
 		fermenter->uuid     = xstrcpy(row[1]);
 		fermenter->alias    = xstrcpy(row[2]);
 		fermenter->node     = xstrcpy(row[3]);
-		fermenter->online   = false;	// Will be set later
+		fermenter->online   = atoi(row[4]);
 		fermenter->beercode = xstrcpy(row[5]);
 		fermenter->beername = xstrcpy(row[6]);
 		fermenter->beeruuid = xstrcpy(row[44]);
@@ -242,7 +245,7 @@
                 co2meter->uuid                = xstrcpy(row[1]);
                 co2meter->alias               = xstrcpy(row[2]);
                 co2meter->node                = xstrcpy(row[3]);
-                co2meter->online              = 0;    // Will be set later
+                co2meter->online              = atoi(row[4]);
                 co2meter->beercode            = xstrcpy(row[5]);
                 co2meter->beername            = xstrcpy(row[6]);
                 co2meter->beeruuid            = xstrcpy(row[7]);
@@ -272,7 +275,49 @@
 	}
     }
 
-    syslog(LOG_NOTICE, "MySQL: loaded %d nodes, %d fermenters, %d co2meters", ncnt, fcnt, ccnt);
+    if (mysql_query(con, "SELECT * FROM mon_ispindels")) {
+        syslog(LOG_NOTICE, "MySQL: SELECT * FROM mon_ispindels error %u (%s))", mysql_errno(con), mysql_error(con));
+    } else {
+        res_set = mysql_store_result(con);
+        if (res_set == NULL) {
+            syslog(LOG_NOTICE, "MySQL: mysq_store_result error %u (%s))", mysql_errno(con), mysql_error(con));
+        } else {
+            while ((row = mysql_fetch_row(res_set)) != NULL) {
+                ispindel = (sys_ispindel_list *)malloc(sizeof(sys_ispindel_list));
+                memset(ispindel, 0, sizeof(sys_ispindel_list));
+                ispindel->next                = NULL;
+		ispindel->uuid		      = xstrcpy(row[1]);
+		ispindel->alias		      = xstrcpy(row[2]);
+		ispindel->node                = xstrcpy(row[3]);
+		ispindel->online              = atoi(row[4]);
+		ispindel->alarm               = atoi(row[5]);
+		ispindel->beercode            = xstrcpy(row[6]);
+                ispindel->beername            = xstrcpy(row[7]);
+                ispindel->beeruuid            = xstrcpy(row[8]);
+		ispindel->angle               = atof(row[9]);
+		ispindel->temperature         = atof(row[10]);
+                ispindel->battery             = atof(row[11]);
+		ispindel->gravity             = atof(row[12]);
+		ispindel->interval            = atoi(row[13]);
+		ispindel->mode		      = xstrcpy(row[14]);
+
+                if (ispindels == NULL) {
+                    ispindels = ispindel;
+                } else {
+                    for (tmpi = ispindels; tmpi; tmpi = tmpi->next) {
+                        if (tmpi->next == NULL) {
+                            tmpi->next = ispindel;
+                            break;
+                        }
+                    }
+                }
+                icnt++;
+            }
+            mysql_free_result(res_set);
+        }
+    }
+
+    syslog(LOG_NOTICE, "MySQL: loaded %d nodes, %d fermenters, %d co2meters %d ispindels", ncnt, fcnt, ccnt, icnt);
     return 0;
 }
 
@@ -280,6 +325,7 @@
 
 void bms_mysql_end(void)
 {
+    sys_ispindel_list	*tmpi, *oldtmpi;
     sys_co2meter_list	*tmpp, *oldtmpp;
     sys_fermenter_list	*tmpf, *oldtmpf;
     sys_node_list	*tmpn, *oldtmpn;
@@ -290,6 +336,25 @@
     if (debug)
 	fprintf(stdout, "MySQL: disconnected\n");
 
+    for (tmpi = ispindels; tmpi; tmpi = oldtmpi) {
+        oldtmpi = tmpi->next;
+	if (tmpi->uuid)
+	    free(tmpi->uuid);
+	if (tmpi->alias)
+	    free(tmpi->alias);
+	if (tmpi->node)
+            free(tmpi->node);
+        if (tmpi->beercode)
+            free(tmpi->beercode);
+        if (tmpi->beername)
+            free(tmpi->beername);
+        if (tmpi->beeruuid)
+            free(tmpi->beeruuid);
+	if (tmpi->mode)
+	    free(tmpi->mode);
+        free(tmpi);
+    }
+
     for (tmpp = co2meters; tmpp; tmpp = oldtmpp) {
         oldtmpp = tmpp->next;
         if (tmpp->uuid)
@@ -397,18 +462,20 @@
 int bms_mysql_query(const char *query)
 {
     int		rc = mysql_query(con, query);
+    int		err = mysql_errno(con);
 
     if (rc) {
-        syslog(LOG_NOTICE, "MySQL: error %u (%s)", mysql_errno(con), mysql_error(con));
+        syslog(LOG_NOTICE, "MySQL: error %u (%s)", err, mysql_error(con));
         syslog(LOG_NOTICE, query);
     } else {
 	return 0;
     }
 
     /* Any error execpt server gone away */
-    if (rc != 2006)
+    if (err != 2006)
 	return rc;
 
+    syslog(LOG_NOTICE, "Trying to reconnect");
     /* Try to reconnect and do the query again */
     mysql_close(con);
     if (mysql_real_connect(con, Config.mysql_host, Config.mysql_user, Config.mysql_pass, Config.mysql_database, Config.mysql_port, NULL, 0) == NULL) {
@@ -434,25 +501,25 @@
 
 void node_mysql_insert(sys_node_list *node)
 {
-    char	*query = malloc(1024), first[21], last[21];
+    char	*query = malloc(1024), first[73], last[73];
     struct tm	*mytime;
 
     mytime = localtime(&node->firstseen);
-    snprintf(first, 20, "%04d-%02d-%02d %02d:%02d:%02d", 
+    snprintf(first, 72, "%04d-%02d-%02d %02d:%02d:%02d",
 		    mytime->tm_year + 1900, mytime->tm_mon + 1, mytime->tm_mday, mytime->tm_hour, mytime->tm_min, mytime->tm_sec);
     mytime = localtime(&node->lastseen);
-    snprintf(last, 20, "%04d-%02d-%02d %02d:%02d:%02d",
+    snprintf(last, 72, "%04d-%02d-%02d %02d:%02d:%02d",
 		mytime->tm_year + 1900, mytime->tm_mon + 1, mytime->tm_mday, mytime->tm_hour, mytime->tm_min, mytime->tm_sec);
 
     snprintf(query, 1023,
-	"INSERT INTO  mon_nodes SET uuid='%s', node='%s', online='%s', group_id='%s', " \
+	"INSERT INTO  mon_nodes SET uuid='%s', node='%s', online='%d', group_id='%s', " \
         "hardwaremake='%s', hardwaremodel='%s', os='%s', os_version='%s', firmware='%s', firstseen='%s', lastseen='%s', " \
 	"temperature='%.3f', humidity='%.3f', barometer='%.3f', gps_latitude='%.8f', gps_longitude='%.8f', gps_altitude='%.8f', " \
-	"net_address='%s', net_ifname='%s', net_rssi='%d'",
-	node->uuid, node->node, node->online ?"Y":"N", node->group_id, 
+	"net_address='%s', net_ifname='%s', net_rssi='%d', up_interval='%d'",
+	node->uuid, node->node, node->online ?1:0, node->group_id, 
 	node->hardwaremake, node->hardwaremodel, node->os, node->os_version, node->firmware, first, last,
 	node->temperature, node->humidity, node->barometer, node->gps_latitude, node->gps_longitude, node->gps_altitude,
-	node->net_address, node->net_ifname, node->net_rssi);
+	node->net_address, node->net_ifname, node->net_rssi, node->interval);
 
     if (bms_mysql_query(query) == 0) {
 	syslog(LOG_NOTICE,  "MySQL: insert new node %s", node->node);
@@ -465,20 +532,20 @@
 
 void node_mysql_update(sys_node_list *node)
 {
-    char        *query = malloc(1024), last[21];
+    char        *query = malloc(1024), last[65];
     struct tm   *mytime;
 
     mytime = localtime(&node->lastseen);
-    snprintf(last, 20, "%04d-%02d-%02d %02d:%02d:%02d",
+    snprintf(last, 64, "%04d-%02d-%02d %02d:%02d:%02d",
     	mytime->tm_year + 1900, mytime->tm_mon + 1, mytime->tm_mday, mytime->tm_hour, mytime->tm_min, mytime->tm_sec);
 
     snprintf(query, 1023,
-	"UPDATE mon_nodes SET online='%s', hardwaremake='%s', hardwaremodel='%s', os='%s', os_version='%s', firmware='%s', lastseen='%s', " \
+	"UPDATE mon_nodes SET online='%d', hardwaremake='%s', hardwaremodel='%s', os='%s', os_version='%s', firmware='%s', lastseen='%s', " \
 	"temperature='%.3f', humidity='%.3f', barometer='%.3f', gps_latitude='%.8f', gps_longitude='%.8f', gps_altitude='%.8f', " \
-	"net_address='%s', net_ifname='%s', net_rssi='%d' WHERE uuid='%s'",
-	node->online ?"Y":"N", node->hardwaremake, node->hardwaremodel, node->os, node->os_version, node->firmware, last,
+	"net_address='%s', net_ifname='%s', net_rssi='%d', up_interval='%d' WHERE uuid='%s'",
+	node->online ? 1:0, node->hardwaremake, node->hardwaremodel, node->os, node->os_version, node->firmware, last,
 	node->temperature, node->humidity, node->barometer, node->gps_latitude, node->gps_longitude, node->gps_altitude, 
-	node->net_address, node->net_ifname, node->net_rssi, node->uuid);
+	node->net_address, node->net_ifname, node->net_rssi, node->interval, node->uuid);
 
     bms_mysql_query(query);
     free(query);
@@ -490,7 +557,7 @@
 {
     char        *query = malloc(512);
 
-    snprintf(query, 511, "UPDATE mon_nodes SET online='N' WHERE node='%s'", node);
+    snprintf(query, 511, "UPDATE mon_nodes SET online='0' WHERE node='%s'", node);
     bms_mysql_query(query);
     free(query);
 }
@@ -502,7 +569,7 @@
     char        *query = malloc(2560);
 
     snprintf(query, 2559,
-	"INSERT INTO mon_fermenters SET uuid='%s', alias='%s', node='%s', online='%s', " \
+	"INSERT INTO mon_fermenters SET uuid='%s', alias='%s', node='%s', online='%d', " \
 	"beercode='%s', beername='%s', beeruuid='%s', " \
 	"air_address='%s', air_state='%s', air_temperature='%.3f', " \
 	"beer_address='%s', beer_state='%s', beer_temperature='%.3f', " \
@@ -517,7 +584,7 @@
 	"profile_uuid='%s', profile_name='%s', profile_state='%s', profile_percent='%d', " \
 	"profile_inittemp_high='%.3f', profile_inittemp_low='%.3f', profile_steps='%s', stage='%s', " \
 	"yeast_lo='%.1f', yeast_hi='%.1f', webcam_url='%s', webcam_light='%d'",
-	fermenter->uuid, fermenter->alias, fermenter->node, fermenter->online ? "Y":"N",
+	fermenter->uuid, fermenter->alias, fermenter->node, fermenter->online ? 1:0,
 	fermenter->beercode ? fermenter->beercode : "", fermenter->beername ? fermenter->beername : "",
 	fermenter->beeruuid ? fermenter->beeruuid : "",
 	fermenter->air_address ? fermenter->air_address : "", fermenter->air_state ? fermenter->air_state : "", fermenter->air_temperature,
@@ -548,7 +615,7 @@
     char        *query = malloc(2560);
 
     snprintf(query, 2559,
-	"UPDATE mon_fermenters SET online='%s', beercode='%s', beername='%s', beeruuid='%s', " \
+	"UPDATE mon_fermenters SET online='%d', beercode='%s', beername='%s', beeruuid='%s', " \
 	"air_address='%s', air_state='%s', air_temperature='%.3f', " \
 	"beer_address='%s', beer_state='%s', beer_temperature='%.3f', " \
 	"chiller_address='%s', chiller_state='%s', chiller_temperature='%.3f', " \
@@ -562,7 +629,7 @@
 	"profile_uuid='%s', profile_name='%s', profile_state='%s', profile_percent='%d', " \
 	"profile_inittemp_high='%.3f', profile_inittemp_low='%.3f', profile_steps='%s', stage='%s', " \
         "yeast_lo='%.1f', yeast_hi='%.1f', webcam_url='%s', webcam_light='%d' WHERE uuid='%s'",
-	fermenter->online ? "Y":"N", fermenter->beercode ? fermenter->beercode : "", fermenter->beername ? fermenter->beername : "",
+	fermenter->online ? 1:0, fermenter->beercode ? fermenter->beercode : "", fermenter->beername ? fermenter->beername : "",
 	fermenter->beeruuid ? fermenter->beeruuid : "",
 	fermenter->air_address ? fermenter->air_address : "", fermenter->air_state ? fermenter->air_state : "", fermenter->air_temperature,
 	fermenter->beer_address ? fermenter->beer_address : "", fermenter->beer_state ? fermenter->beer_state : "", fermenter->beer_temperature,
@@ -591,9 +658,9 @@
     char        *query = malloc(512);
 
     if (alias)
-    	snprintf(query, 511, "UPDATE mon_fermenters SET online='N' WHERE node='%s' and alias='%s'", node, alias);
+    	snprintf(query, 511, "UPDATE mon_fermenters SET online='0' WHERE node='%s' and alias='%s'", node, alias);
     else
-	snprintf(query, 511, "UPDATE mon_fermenters SET online='N' WHERE node='%s'", node);
+	snprintf(query, 511, "UPDATE mon_fermenters SET online='0' WHERE node='%s'", node);
 
     bms_mysql_query(query);
     free(query);
@@ -655,3 +722,111 @@
 }
 
 
+
+void ispindel_mysql_insert(sys_ispindel_list *ispindel)
+{
+    char        *query = malloc(2560);
+
+    snprintf(query, 2559,
+        "INSERT INTO mon_ispindels SET uuid='%s', alias='%s', node='%s', online='%d', mode='%s', alarm='%d', " \
+        "angle='%.5f', temperature='%.4f', battery='%.6f', gravity='%.5f', up_interval='%d', og_gravity='0.0'",
+        ispindel->uuid, ispindel->alias, ispindel->node, ispindel->online ? 1:0, ispindel->mode, ispindel->alarm,
+        ispindel->angle, ispindel->temperature, ispindel->battery, ispindel->gravity, ispindel->interval);
+
+    if (bms_mysql_query(query) == 0) {
+        syslog(LOG_NOTICE,  "MySQL: insert new ispindel %s", ispindel->node);
+    }
+    free(query);
+}
+
+
+
+void ispindel_mysql_update(sys_ispindel_list *ispindel)
+{
+    char        *query = malloc(2560);
+
+    snprintf(query, 2559,
+        "UPDATE mon_ispindels SET online='%d', mode='%s', alarm='%d', " \
+	"angle='%.5f', temperature='%.4f', battery='%.6f', gravity='%.5f', up_interval='%d', og_gravity=GREATEST(og_gravity, '%.5f') WHERE uuid='%s'",
+        ispindel->online ? 1:0, ispindel->mode, ispindel->alarm,
+	ispindel->angle, ispindel->temperature, ispindel->battery, ispindel->gravity, ispindel->interval, ispindel->gravity, ispindel->uuid);
+
+    bms_mysql_query(query);
+    free(query);
+}
+
+
+
+void ispindel_mysql_death(char *node)
+{
+    char        *query = malloc(512);
+
+    snprintf(query, 511, "UPDATE mon_ispindels SET online='0' WHERE node='%s'", node);
+    bms_mysql_query(query);
+    free(query);
+}
+
+
+
+/*
+ * Check using a new MySQL connection because we are running from another thread.
+ */
+void ispindel_mysql_check(void)
+{
+    sys_ispindel_list	*tmpp;
+    MYSQL		*con2 = NULL;
+    MYSQL_RES		*res_set2;
+    MYSQL_ROW		row2;
+
+    if (ispindels == NULL)
+	return;
+
+    con2 = mysql_init(NULL);
+    if (con2 == NULL) {
+        syslog(LOG_NOTICE, "MySQL: mysql_init() failed");
+        return;
+    }
+
+    if (mysql_real_connect(con2, Config.mysql_host, Config.mysql_user, Config.mysql_pass, Config.mysql_database, Config.mysql_port, NULL, 0) == NULL) {
+        syslog(LOG_NOTICE, "MySQL: mysql_real_connect() %s", mysql_error(con2));
+        return;
+    }
+
+    if (mysql_query(con2, "SELECT uuid,alias,beercode,beername,beeruuid,mode FROM mon_ispindels;")) {
+        syslog(LOG_NOTICE, "MySQL: SELECT uuid,alias,beercode,beername,beeruuid,mode FROM mon_ispindels error %u (%s))", mysql_errno(con2), mysql_error(con2));
+    } else {
+        res_set2 = mysql_store_result(con2);
+        if (res_set2 == NULL) {
+            syslog(LOG_NOTICE, "MySQL: mysq_store_result error %u (%s))", mysql_errno(con2), mysql_error(con2));
+        } else {
+            while ((row2 = mysql_fetch_row(res_set2)) != NULL) {
+		for (tmpp = ispindels; tmpp; tmpp = tmpp->next) {
+		    if (strcmp(tmpp->uuid, row2[0]) == 0) {
+			if (strcmp(tmpp->beercode, row2[2]) || strcmp(tmpp->beername, row2[3]) || strcmp(tmpp->beeruuid, row2[4])) {
+			    syslog(LOG_NOTICE, "ispindel `%s` change beer to `%s %s`", row2[1], row2[2], row2[3]);
+			    if (tmpp->beercode)
+				free(tmpp->beercode);
+			    tmpp->beercode = xstrcpy(row2[2]);
+			    if (tmpp->beername)
+				free(tmpp->beername);
+			    tmpp->beername = xstrcpy(row2[3]);
+			    if (tmpp->beeruuid)
+				free(tmpp->beeruuid);
+			    tmpp->beeruuid = xstrcpy(row2[4]);
+			}
+			if (strcmp(tmpp->mode, row2[5])) {
+			    syslog(LOG_NOTICE, "ispindel `%s` change mode `%s`", row2[1], row2[5]);
+			    if (tmpp->mode)
+				free(tmpp->mode);
+			    tmpp->mode = xstrcpy(row2[5]);
+			}
+		    }
+		}
+	    }
+	    mysql_free_result(res_set2);
+	}
+    }
+
+    mysql_close(con2);
+}
+
--- a/bmsd/mysql.h	Fri Oct 18 13:20:35 2019 +0200
+++ b/bmsd/mysql.h	Fri May 01 16:37:31 2020 +0200
@@ -41,5 +41,16 @@
 void co2meter_mysql_update(sys_co2meter_list *co2meter);
 void co2meter_mysql_death(char *node, char *alias);
 
+void ispindel_mysql_insert(sys_ispindel_list *ispindel);
+void ispindel_mysql_update(sys_ispindel_list *ispindel);
+void ispindel_mysql_death(char *alias);
+
+/**
+ * @brief Check state changes in the database for all iSpindels and
+ *        update the internal memory array. Called every 5 seconds from
+ *        the main server thread.
+ */
+void ispindel_mysql_check(void);
+
 
 #endif
--- a/bmsd/nodes.c	Fri Oct 18 13:20:35 2019 +0200
+++ b/bmsd/nodes.c	Fri May 01 16:37:31 2020 +0200
@@ -3,7 +3,7 @@
  * @brief Handle nodes status
  * @author Michiel Broek <mbroek at mbse dot eu>
  *
- * Copyright (C) 2018-2019
+ * Copyright (C) 2018-2020
  *
  * This file is part of the bms (Brewery Management System)
  *
@@ -34,7 +34,7 @@
 extern int			debug;
 extern sys_fermenter_list	*fermenters;
 extern sys_co2meter_list	*co2meters;
-
+extern sys_ispindel_list	*ispindels;
 
 
 void node_birth_data(char *topic, char *payload)
@@ -82,6 +82,7 @@
     	node->gps_latitude = node->gps_longitude = node->gps_altitude = 0.0;
 	node->net_address = node->net_ifname = NULL;
 	node->net_rssi = 0;
+	node->interval = 300;
     }
 
     /*
@@ -111,6 +112,9 @@
 		free(node->uuid);
 	    node->uuid = xstrcpy((char *)json_object_get_string(val));
 	}
+	if (json_object_object_get_ex(metric, "interval", &val)) {
+	    node->interval = json_object_get_int(val);
+	}
 	if (json_object_object_get_ex(metric, "properties", &metric2)) {
 	    if (json_object_object_get_ex(metric2, "hardwaremake", &val)) {
 		if (node->hardwaremake)
@@ -214,6 +218,7 @@
     	printf("GPS       %.5f  %.5f  %.5f\n", node->gps_latitude, node->gps_longitude, node->gps_altitude);
 	printf("net       %s:%s\n", node->net_ifname, node->net_address);
 	printf("rssi      %d\n", node->net_rssi);
+	printf("interval  %d\n", node->interval);
     }
 }
 
@@ -247,11 +252,14 @@
     sys_node_list	*tmpn;
     sys_fermenter_list  *tmpf;
     sys_co2meter_list	*tmpc;
+    sys_ispindel_list	*tmpi;
     time_t		now = time(NULL);
 
     for (tmpn = nodes; tmpn; tmpn = tmpn->next) {
-	if (tmpn->online && ((now - tmpn->lastseen) > 600)) {
-	    syslog(LOG_NOTICE, "Timeout node `%s/%s'", tmpn->group_id, tmpn->node);
+//	if (debug)
+//	    printf("%-20s online %s  %ld  %d\n", tmpn->node, tmpn->online ? "yes":"no ", tmpn->lastseen, tmpn->interval);
+	if (tmpn->online && ((now - tmpn->lastseen) > (tmpn->interval * 2 + 5))) { // 2 times interval + 5 seconds
+	    syslog(LOG_NOTICE, "Timeout node `%s/%s' after %ld seconds", tmpn->group_id, tmpn->node, (now - tmpn->lastseen));
 	    tmpn->online = false;
 	    node_mysql_death(tmpn->node);
 
@@ -274,6 +282,16 @@
 		    }
 		}
 	    }
+
+	    for (tmpi = ispindels; tmpi; tmpi = tmpi->next) {
+		if (strcmp(tmpi->node, tmpn->node) == 0) {
+		    if (tmpi->online) {
+                        syslog(LOG_NOTICE, "Timeout ispindel %s", tmpi->node);
+                        tmpi->online = false;
+                        ispindel_mysql_death(tmpi->node);
+                    }
+		}
+	    }
 	}
     }
 }
--- a/config.h.in	Fri Oct 18 13:20:35 2019 +0200
+++ b/config.h.in	Fri May 01 16:37:31 2020 +0200
@@ -9,3 +9,9 @@
 /* According to Sun we MUST define this in the source */
 #define _REENTRANT 1
 
+/* Define if you have the <mysql/mysql.h> header file. */
+#undef HAVE_MYSQL_MYSQL_H
+
+/* Define if you have the <mariadb/mysql.h> header file. */
+#undef HAVE_MARIADB_MYSQL_H
+
--- a/config.status	Fri Oct 18 13:20:35 2019 +0200
+++ b/config.status	Fri May 01 16:37:31 2020 +0200
@@ -619,9 +619,9 @@
 S["CFLAGS"]="-g -O2 -fomit-frame-pointer -fno-strict-aliasing -Wall -Wshadow -Wwrite-strings -Wstrict-prototypes -Winline -I/usr/include/libxml2 -I/usr/include/u"\
 "uid"
 S["CC"]="gcc"
-S["CYEARS"]="2016-2019"
-S["COPYRIGHT"]="Copyright (C) 2016-2019 Michiel Broek, All Rights Reserved"
-S["VERSION"]="0.4.9"
+S["CYEARS"]="2016-2020"
+S["COPYRIGHT"]="Copyright (C) 2016-2020 Michiel Broek, All Rights Reserved"
+S["VERSION"]="0.4.10"
 S["PACKAGE"]="bms"
 S["SUBDIRS"]="bmsd doc script tools www"
 S["target_alias"]=""
@@ -710,8 +710,8 @@
 D["PACKAGE_STRING"]=" \"\""
 D["PACKAGE_BUGREPORT"]=" \"\""
 D["PACKAGE_URL"]=" \"\""
-D["VERSION"]=" \"0.4.9\""
-D["COPYRIGHT"]=" \"Copyright (C) 2016-2019 Michiel Broek, All Rights Reserved\""
+D["VERSION"]=" \"0.4.10\""
+D["COPYRIGHT"]=" \"Copyright (C) 2016-2020 Michiel Broek, All Rights Reserved\""
 D["STDC_HEADERS"]=" 1"
 D["HAVE_SYS_TYPES_H"]=" 1"
 D["HAVE_SYS_STAT_H"]=" 1"
@@ -724,7 +724,7 @@
 D["HAVE_UNISTD_H"]=" 1"
 D["HAVE_MOSQUITTO_H"]=" 1"
 D["HAVE_JSON_C_JSON_H"]=" 1"
-D["HAVE_MYSQL_MYSQL_H"]=" 1"
+D["HAVE_MARIADB_MYSQL_H"]=" 1"
 D["HAVE_LIBXML_XMLMEMORY_H"]=" 1"
 D["HAVE_UUID_UUID_H"]=" 1"
 D["STDC_HEADERS"]=" 1"
--- a/configure	Fri Oct 18 13:20:35 2019 +0200
+++ b/configure	Fri May 01 16:37:31 2020 +0200
@@ -2043,9 +2043,9 @@
 
 
 PACKAGE="bms"
-VERSION="0.4.9"
-COPYRIGHT="Copyright (C) 2016-2019 Michiel Broek, All Rights Reserved"
-CYEARS="2016-2019"
+VERSION="0.4.10"
+COPYRIGHT="Copyright (C) 2016-2020 Michiel Broek, All Rights Reserved"
+CYEARS="2016-2020"
 
 
 
@@ -3652,6 +3652,18 @@
 
 done
 
+  for ac_header in mariadb/mysql.h
+do :
+  ac_fn_c_check_header_mongrel "$LINENO" "mariadb/mysql.h" "ac_cv_header_mariadb_mysql_h" "$ac_includes_default"
+if test "x$ac_cv_header_mariadb_mysql_h" = xyes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_MARIADB_MYSQL_H 1
+_ACEOF
+
+fi
+
+done
+
 else
   as_fn_error $? "mysqlclient not found" "$LINENO" 5
 fi
--- a/configure.ac	Fri Oct 18 13:20:35 2019 +0200
+++ b/configure.ac	Fri May 01 16:37:31 2020 +0200
@@ -8,9 +8,9 @@
 dnl General settings
 dnl After changeing the version number, run autoconf!
 PACKAGE="bms"
-VERSION="0.4.9"
-COPYRIGHT="Copyright (C) 2016-2019 Michiel Broek, All Rights Reserved"
-CYEARS="2016-2019"
+VERSION="0.4.10"
+COPYRIGHT="Copyright (C) 2016-2020 Michiel Broek, All Rights Reserved"
+CYEARS="2016-2020"
 AC_SUBST(PACKAGE)
 AC_SUBST(VERSION)
 AC_SUBST(COPYRIGHT)
@@ -66,6 +66,7 @@
 if test "$result" = "yes"; then
   LIBS="$LIBS -lmysqlclient"
   AC_CHECK_HEADERS(mysql/mysql.h)
+  AC_CHECK_HEADERS(mariadb/mysql.h)
 else
   AC_MSG_ERROR(mysqlclient not found)
 fi
--- a/doc/bms-ch8.sgml	Fri Oct 18 13:20:35 2019 +0200
+++ b/doc/bms-ch8.sgml	Fri May 01 16:37:31 2020 +0200
@@ -34,6 +34,8 @@
 <listitem><para><code>fermenters</code> is voor vergisting controllers.</para></listitem>
 <listitem><para><code>co2meters</code> is een drukmeter om bijvoorbeeld hergisting op de fles
 te monitoren.</para></listitem>
+<listitem><para><code>ispindels</code> is een electronische hydrometer die in het gistvat drijft
+en de temperatuur en sg verstuurt.</para></listitem>
 </orderedlist>
 
 <para>De volgende <code>message_type</code> namen zijn gedefinieerd:</para>
@@ -81,13 +83,19 @@
 is de unix tijd sinds 1 januari 1970. Niet alle controllers sturen een timestamp,
 controllers zonder klok laten dit weg. De tijd wordt dan door <code>bmsd</code>
 ingevuld en is de tijd dat het bericht ontvangen wordt.
-Het `seq' nummer wordt met ieder bericht met 1 verhoogd.</para>
+Het `seq' nummer wordt met ieder bericht met 1 verhoogd.
+Ook dit nummer is niet altijd aanwezig.</para>
+<para>In de `metric' groep is de `interval' optioneel. Dit wordt bijvoorbeeld
+verstuurd door iSpindels en is de ingestelde update interval tijd in seconden.
+Indien dit niet aanwezig is dan wordt 300 seconden als standaard waarde gebruikt.
+Deze waarde wordt gebruikt om een apparaat als offline te markeren indien het langer
+als twee maal deze tijd niet wordt gezien.</para>
 <programlisting>
 {
   "timestamp": 1532201089,
-  "seq": 0,
   "metric": {
     "uuid": "b508f01c-1f82-4e8b-b0d2-d88ecfb53031",
+    "interval":300,
     "properties": {
       "hardwaremake": "Raspberry",
       "hardwaremodel": "Unknown",
@@ -158,7 +166,9 @@
   "product": {
     "uuid": "1eb0c7bf-bf06-491c-a086-ac5478d521b9",
     "code": "CB0001",
-    "name": "Hoppy Housebeer"
+    "name": "Hoppy Housebeer",
+    "yeast_lo": 18.0,
+    "yeast_hi": 24.0
   },
   "air": {
     "address": "70d60411-3ec8-40ab-998a-81fead83025f",
@@ -207,11 +217,7 @@
   "mode": "BEER",
   "setpoint": {
     "low": 21.0,
-    "high": 21.0
-  },
-  "webcam": {
-    "url":"https://the.webcamserver.com:8090/?action=stream",
-    "light": 1
+    "high": 21.5
   },
   "alarm": 0,
   "profile": {
@@ -223,7 +229,6 @@
       "low": 17.9,
       "high": 18.1
     },
-    "fridgemode": 0,
     "steps": [
       {
         "resttime": 2,
@@ -273,7 +278,6 @@
 <programlisting>
 {
   "timestamp": 1532201089,
-  "seq": 0,
   "metric": {
     "product": {
       "uuid": "1eb0c7bf-bf06-491c-a086-ac5478d521b9",
@@ -304,7 +308,6 @@
       "power": 100,
       "usage": 8273772
     },
-    "sg": 1.023,
     "event": "Something to mark",
     "fermenter_uuid": "48c9ae27-3f58-41c9-ae4b-1d57b249c45a"
   }
@@ -318,36 +321,95 @@
 De bestandsnamen zijn <code>product_code\ product_name.log</code>.
 Het interne formaat is:</para>
 <programlisting>
-   2014-11-15 18:39:12,BEER,PRIMARY,20.312,19.750,-1.500,20.5,18.6,18.8,35,12345,0,67890,Whatsup,Fermenter
-            |            |     |      |      |      |      |    |    |   |   |   |   |      |        |
- 0 datetime +            |     |      |      |      |      |    |    |   |   |   |   |      |        |
- 1 werkwijze ------------+     |      |      |      |      |    |    |   |   |   |   |      |        |
- 2 vergisting fase ------------+      |      |      |      |    |    |   |   |   |   |      |        |
- 3 temperatuur lucht -----------------+      |      |      |    |    |   |   |   |   |      |        |
- 4 temperatuur bier -------------------------+      |      |    |    |   |   |   |   |      |        |
- 5 temperatuur koeler ------------------------------+      |    |    |   |   |   |   |      |        |
- 6 temperatuur ruimte -------------------------------------+    |    |   |   |   |   |      |        |
- 7 instelwaarde laag -------------------------------------------+    |   |   |   |   |      |        |
- 8 instelwaarde hoog ------------------------------------------------+   |   |   |   |      |        |
- 9 verwarming vermogen --------------------------------------------------+   |   |   |      |        |
-10 verwarming verbruik ------------------------------------------------------+   |   |      |        |
-11 koeler vermogen --------------------------------------------------------------+   |      |        |
-12 koeler verbruik ------------------------------------------------------------------+      |        |
-13 gebeurtenis -----------------------------------------------------------------------------+        |
-14 vergister uuid -----------------------------------------------------------------------------------+
+2014-11-15 18:39:12,BEER,PRIMARY,20.312,19.750,-1.500,20.5,18.6,18.8,35,12345,0,67890,Whatsup,Fermenter
+            |         |     |      |      |      |      |    |    |   |   |   |   |      |        |
+ 0 datetime +         |     |      |      |      |      |    |    |   |   |   |   |      |        |
+ 1 werkwijze ---------+     |      |      |      |      |    |    |   |   |   |   |      |        |
+ 2 vergisting fase ---------+      |      |      |      |    |    |   |   |   |   |      |        |
+ 3 temperatuur lucht --------------+      |      |      |    |    |   |   |   |   |      |        |
+ 4 temperatuur bier ----------------------+      |      |    |    |   |   |   |   |      |        |
+ 5 temperatuur koeler ---------------------------+      |    |    |   |   |   |   |      |        |
+ 6 temperatuur ruimte ----------------------------------+    |    |   |   |   |   |      |        |
+ 7 instelwaarde laag ----------------------------------------+    |   |   |   |   |      |        |
+ 8 instelwaarde hoog ---------------------------------------------+   |   |   |   |      |        |
+ 9 verwarming vermogen -----------------------------------------------+   |   |   |      |        |
+10 verwarming verbruik ---------------------------------------------------+   |   |      |        |
+11 koeler vermogen -----------------------------------------------------------+   |      |        |
+12 koeler verbruik ---------------------------------------------------------------+      |        |
+13 gebeurtenis --------------------------------------------------------------------------+        |
+14 vergister uuid --------------------------------------------------------------------------------+
+</programlisting>
+</sect1>
+
+<sect1 id="payloadco2data">
+<title>Netwerk payload data formaat voor CO2 meters.</title>
+<para>
+Nog schrijven
+</para>
+<programlisting>
+{
+  "seq":228196,
+  "metric":{
+    "units":[
+      {
+        "uuid":"c0ffeeee-dead-beef-caf0-3c71bffe4054",
+        "alias":"unit1",
+        "mode":"ON",
+        "alarm":0,
+        "temperature":{
+          "state":"OK",
+          "address":"e001191420732a28",
+          "temperature":20.250
+        },
+        "pressure":{
+          "state":"OK",
+          "channel":7,
+          "voltage":0.322,
+          "zero":0.110,
+          "bar":0.00
+        }
+      },
+      {
+        "uuid":"c0ffeeee-dead-beef-caf1-3c71bffe4054",
+        "alias":"unit2",
+        "mode":"OFF",
+        "alarm":1,
+        "temperature":{
+          "state":"OK",
+          "address":"e001191420732a28",
+          "temperature":20.250
+        },
+        "pressure":{
+          "state":"OK",
+          "channel":6,
+          "voltage":0.075,
+          "zero":0.109,
+          "bar":0.00
+        }
+      }
+    ]
+  }
+}
 </programlisting>
 </sect1>
 
 <sect1 id="payloadco2log">
 <title>Netwerk payload log formaat voor CO2 meters.</title>
 <para>
-Voor iedere actieve CO2 meter wordt bij iedere systeemstart een logbericht
-gestuurd. Dit is ongeveer iedere 5 minuten. Omdat de CO2 meters eenvoudige
+Voor iedere actieve CO2 meter wordt bij iedere systeemstart en iedere vijf
+minuten  een logbericht gestuurd. Omdat de CO2 meters eenvoudige
 controllers zijn is er geen tijd en product informatie beschikbaar. Deze
 ontbrekende gegevens worden aangevuld door <command>bmsd</command>
 </para>
 <programlisting>
-
+{
+  "seq":228229,
+  "metric":{
+    "uuid":"c0ffeeee-dead-beef-caf0-3c71bffe4054",
+    "temperature":21.125,
+    "pressure":0.000
+  }
+}
 </programlisting>
 <para>
 De ontvangen CO2 log gegevens worden niet opgeslagen in de SQL database
@@ -366,4 +428,103 @@
 </programlisting>
 </sect1>
 
+
+<sect1 id="payloadispindeldata">
+<title>Netwerk payload data formaat voor iSpindels.</title>
+<para>
+Iedere actieve iSpindel stuurt bij iedere systeemstart een bericht.
+Daarna na iedere <code>interval</code> tijd in seconden een volgend bericht.
+Omdat de iSpindel eenvoudige controllers zijn is er geen tijd en product
+informatie beschikbaar. De instellingen voor <code>bmsd</code> in de iSpindel zijn:
+</para>
+
+<orderedlist>
+<listitem><para>Unit of temperature: Celsius</para></listitem>
+<listitem><para>Service Type: HTTP</para></listitem>
+<listitem><para>Token: leeg laten</para></listitem>
+<listitem><para>Server Address: het server IP adres</para></listitem>
+<listitem><para>Server Port: 80</para></listitem>
+<listitem><para>Path / URI: /ispindel/index.php</para></listitem>
+</orderedlist>
+
+<para>
+De densiteit wordt standaard door de iSpindel in graden Plato gegeven en zo worden
+de gegevens ook verwerkt. Het SG wordt door de <code>/ispindel/index.php</code>
+berekend. Dit script verzorgd de omzetting van de iSpindel POST data naar MQTT
+data.
+</para>
+
+<informaltable frame="none" rowsep="0" colsep="0">
+<tgroup cols="2">
+<tbody>
+<row>
+<entry>
+<para>
+<figure><title>iSpindel menu.</title>
+<mediaobject>
+<imageobject>
+<imagedata valign="top" fileref="bms-ispindel-1.png" scale="15" format="png">
+</imageobject>
+</mediaobject>
+</figure>
+</para>
+</entry>
+<entry>
+<para>
+<figure><title>iSpindel configuratie.</title>
+<mediaobject>
+<imageobject>
+<imagedata valign="top" fileref="bms-ispindel-2.png" scale="15" format="png">
+</imageobject>
+</mediaobject>
+</figure>
+</para>
+</entry>
+</row>
+</tbody>
+</tgroup>
+</informaltable>
+
+<para>
+De ontbrekende gegevens worden aangevuld door <command>bmsd</command>
+De volgende gegevens worden via het MQTT protocol ontvangen:
+</para>
+<programlisting>
+{
+  "unit":{
+    "uuid":"c0ffeeee-cafe-dead-bee0-2af236d50dc9",
+    "alias":"iSpindel000",
+    "alarm":0,
+    "interval":900,
+    "angle":42.96722,
+    "temperature":25.5625,
+    "battery":4.254432,
+    "gravity":9.306425
+  }
+}
+</programlisting>
+<para>
+De iSpindel stuurt geen aparte log informatie, alle informatie voor de logfile
+wordt uit het standaard bericht gehaald.
+De log gegevens worden niet opgeslagen in de SQL database
+maar weggeschreven in platte tekst bestanden. Hierdoor is de gelogde informatie sneller toegankelijk.
+Ieder brouw product heeft zijn eigen bestand.
+De bestanden staan in <code>www/logs/ispindel/</code>.
+De bestandsnamen zijn <code>product_code\ product_name.log</code>.
+Het interne formaat is:</para>
+<programlisting>
+   2020-01-05 14:01:53,19.3750,7.08093,1.02806,3.34724,38.78126,900,c0ffeeee-cafe-dead-bee0-2af236d50dc9
+            |             |       |       |       |       |      |                 |
+ 0 datetime +             |       |       |       |       |      |                 |
+ 1 temperatuur -----------+       |       |       |       |      |                 |
+ 2 densiteit plato ---------------+       |       |       |      |                 |
+ 3 densiteit SG --------------------------+       |       |      |                 |
+ 4 batterij voltage ------------------------------+       |      |                 |
+ 5 tilt hoek ---------------------------------------------+      |                 |
+ 6 update interval ----------------------------------------------+                 |
+ 7 ispindel uuid ------------------------------------------------------------------+
+</programlisting>
+</sect1>
+
+
 </chapter>
Binary file doc/bms-ispindel-1.png has changed
Binary file doc/bms-ispindel-2.png has changed
--- a/doc/bms.sgml	Fri Oct 18 13:20:35 2019 +0200
+++ b/doc/bms.sgml	Fri May 01 16:37:31 2020 +0200
@@ -1,4 +1,4 @@
-<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook V4.4//EN" [
+<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook V4.5//EN" [
 <!ENTITY chapter1 SYSTEM "bms-ch1.sgml">
 <!ENTITY chapter2 SYSTEM "bms-ch2.sgml">
 <!ENTITY chapter3 SYSTEM "bms-ch3.sgml">
@@ -20,7 +20,7 @@
     </authorgroup>
 
     <copyright>
-	<year>2018</year>
+	<year>2018-2020</year>
 	<holder role='mailto:mbse@mbse.eu'>M. Broek</holder>
     </copyright>
 
--- a/doc/docbook-utils.dsl	Fri Oct 18 13:20:35 2019 +0200
+++ b/doc/docbook-utils.dsl	Fri May 01 16:37:31 2020 +0200
@@ -181,7 +181,7 @@
 (define %title-font-family% "Helvetica")
 
 ;;What font would you like for the body?
-(define %body-font-family% "Palatino")
+(define %body-font-family% "Helvetica")
 
 ;;What font would you like for mono-seq?
 (define %mono-font-family% "Courier New")
@@ -207,13 +207,13 @@
 (define %left-right-margin% 6pi)
 
 ;;How much indentation for the body?
-(define %body-start-indent% 4pi)
+(define %body-start-indent% 2pi)
 
 ;;How big is the left margin? (relative to physical page)
-(define %left-margin% 8pi) ;white-paper-column
+(define %left-margin% 6pi) ;white-paper-column
 
 ;;How big is the right margin? (relative to physical page)
-(define %right-margin% 8pi) ;white-paper-column
+(define %right-margin% 6pi) ;white-paper-column
 
 ;;How big do you want the margin at the top?
 (define %top-margin%
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tools/Makefile	Fri May 01 16:37:31 2020 +0200
@@ -0,0 +1,27 @@
+# Makefile for the mbsePi-apps/thermferm.
+
+include ../Makefile.global
+
+OTHER		= Makefile bmsd.init
+
+#############################################################################
+
+.c.o:
+		${CC} ${CFLAGS} ${INCLUDES} ${DEFINES} -c $<
+
+all:
+
+
+clean:
+		rm -f filelist Makefile.bak
+
+install:
+		${INSTALL} -c -g root -o root -m 0755 bmsd.init /etc/init.d/bmsd
+		[ -x /bin/systemctl ] && /bin/systemctl daemon-reload
+
+filelist:	Makefile
+		BASE=`pwd`; \
+		BASE=`basename $${BASE}`; \
+		(for f in ${SRCS} ${HDRS} ${OTHER} ;do echo ${PACKAGE}-${VERSION}/$${BASE}/$$f; done) >filelist
+
+depend:
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tools/bmsd.init	Fri May 01 16:37:31 2020 +0200
@@ -0,0 +1,136 @@
+#! /bin/sh
+### BEGIN INIT INFO
+# Provides:          bmsd
+# Required-Start:    $local_fs $remote_fs $network $syslog
+# Required-Stop:     $local_fs $remote_fs $network $syslog
+# Should-Start:      mosquitto
+# Should-Stop:       mosquitto
+# Default-Start:     2 3 4 5
+# Default-Stop:      0 1 6
+# Short-Description: Brewery Management Daemon
+# Description:       This program is the central daemon to collect data
+#                    from and control remote devices in a brewery. It is
+#                    the production and inventory database.
+### END INIT INFO
+
+# Author: Michiel Broek <mbroek@mbse.eu>
+
+# Do NOT "set -e"
+
+# PATH should only include /usr/* if it runs after the mountnfs.sh script
+PATH=/sbin:/usr/sbin:/bin:/usr/bin
+DESC="Brewery Management Daemon"
+NAME=bmsd
+DAEMON=/var/lib/bms/bin/$NAME
+#DAEMON_ARGS="--options args"
+PIDFILE=/var/lib/bms/.bms/run/$NAME.pid
+SCRIPTNAME=/etc/init.d/$NAME
+
+# Exit if the package is not installed
+[ -x "$DAEMON" ] || exit 0
+
+# Read configuration variable file if it is present
+[ -r /etc/default/$NAME ] && . /etc/default/$NAME
+
+# Load the VERBOSE setting and other rcS variables
+. /lib/init/vars.sh
+
+# Define LSB log_* functions.
+# Depend on lsb-base (>= 3.2-14) to ensure that this file is present
+# and status_of_proc is working.
+. /lib/lsb/init-functions
+
+#
+# Function that starts the daemon/service
+#
+do_start()
+{
+	# Return
+        #   0 if daemon has been started
+        #   1 if daemon was already running
+        #   other if daemon could not be started or a failure occured
+	start-stop-daemon --start --chuid brewery --exec $DAEMON
+}
+
+#
+# Function that stops the daemon/service
+#
+do_stop()
+{
+	# Return
+        #   0 if daemon has been stopped
+        #   1 if daemon was already stopped
+        #   other if daemon could not be stopped or a failure occurred
+	start-stop-daemon --stop --retry=TERM/30/KILL/5 --pidfile $PIDFILE --exec $DAEMON
+}
+
+#
+# Function that sends a SIGHUP to the daemon/service
+#
+do_reload() {
+	#
+	# If the daemon can reload its configuration without
+	# restarting (for example, when it is sent a SIGHUP),
+	# then implement that here.
+	#
+	return 0
+}
+
+case "$1" in
+  start)
+	[ "$VERBOSE" != no ] && log_daemon_msg "Starting $DESC" "$NAME"
+	do_start
+	case "$?" in
+		0|1) [ "$VERBOSE" != no ] && log_end_msg 0 ;;
+		2) [ "$VERBOSE" != no ] && log_end_msg 1 ;;
+	esac
+	;;
+  stop)
+	[ "$VERBOSE" != no ] && log_daemon_msg "Stopping $DESC" "$NAME"
+	do_stop
+	case "$?" in
+		0|1) [ "$VERBOSE" != no ] && log_end_msg 0 ;;
+		2) [ "$VERBOSE" != no ] && log_end_msg 1 ;;
+	esac
+	;;
+  status)
+	status_of_proc "$DAEMON" "$NAME" && exit 0 || exit $?
+	;;
+  #reload|force-reload)
+	#
+	# If do_reload() is not implemented then leave this commented out
+	# and leave 'force-reload' as an alias for 'restart'.
+	#
+	#log_daemon_msg "Reloading $DESC" "$NAME"
+	#do_reload
+	#log_end_msg $?
+	#;;
+  restart|force-reload)
+	#
+	# If the "reload" option is implemented then remove the
+	# 'force-reload' alias
+	#
+	log_daemon_msg "Restarting $DESC" "$NAME"
+	do_stop
+	case "$?" in
+	  0|1)
+		do_start
+		case "$?" in
+			0) log_end_msg 0 ;;
+			1) log_end_msg 1 ;; # Old process is still running
+			*) log_end_msg 1 ;; # Failed to start
+		esac
+		;;
+	  *)
+		# Failed to stop
+		log_end_msg 1
+		;;
+	esac
+	;;
+  *)
+	echo "Usage: $SCRIPTNAME {start|stop|status|restart|force-reload}" >&2
+	exit 3
+	;;
+esac
+
+:
--- a/www/Makefile	Fri Oct 18 13:20:35 2019 +0200
+++ b/www/Makefile	Fri May 01 16:37:31 2020 +0200
@@ -3,15 +3,18 @@
 
 include ../Makefile.global
 
-SRC		= cmd_fermenter.php cmd_co2meter.php \
-		  config.php.dist crontasks.php favicon.ico gen_about.php \
+SRC		= cmd_fermenter.php cmd_co2meter.php cmd_ispindel.php config.php.dist crontasks.php \
+		  export_equipments.php export_fermentables.php export_hops.php export_mashs.php \
+		  export_miscs.php export_styles.php export_suppliers.php export_waters.php \
+		  export_yeasts.php favicon.ico gen_about.php \
 		  getbrewlog.php getco2meter.php getco2pressurelog.php getfermentablesources.php \
 		  getfermenter.php getfermentlog.php gethopsources.php getmiscsources.php getnode.php \
-		  getwatersources.php getyeastsources.php import_ingredients.php index.php \
+		  getwatersources.php getyeastsources.php getispindel.php getispindellog.php \
+		  import_ingredients.php index.php \
 		  inv_equipments.php inv_fermentables.php inv_hops.php inv_instock.php \
-		  inv_miscs.php inv_suppliers.php inv_waters.php inv_yeasts.php \
-		  log_brew.php log_co2pressure.php log_fermentation.php \
-		  mon_brewer.php mon_co2meter.php mon_fermenter.php mon_node.php \
+		  inv_miscs.php inv_suppliers.php inv_waters.php inv_yeasts.php inv_yeastlab.php \
+		  log_brew.php log_co2pressure.php log_fermentation.php log_ispindel.php \
+		  mon_brewer.php mon_co2meter.php mon_fermenter.php mon_ispindel.php mon_node.php \
 		  prod_archive_code.php prod_archive_date.php prod_archive_name.php prod_beerxml.php \
 		  prod_checklist.php prod_divide.php prod_duplicate.php prod_edit.php prod_export.php prod_forum.php \
 		  prod_impbrew.php prod_inprod.php prod_new.php prod_print.php prod_torecipe.php \
@@ -27,12 +30,10 @@
 		  includes/* fpdf/* import/*
 OTHER		= Makefile
 CSS_FILES	= $(filter-out %-min.css,$(wildcard css/*.css css/**/*.css ))
-JS_FILES	= $(filter-out %-min.js,$(wildcard js/*.js js/**/*.js ))
 YUI_COMPRESSOR	= yui-compressor
 YUI_COMPRESSOR_FLAGS	= --charset utf-8 --verbose
 
 CSS_MINIFIED = $(CSS_FILES:.css=-min.css)
-JS_MINIFIED = $(JS_FILES:.js=-min.js)
 
 
 
@@ -41,38 +42,34 @@
 .c.o:
 		${CC} ${CFLAGS} ${INCLUDES} ${DEFINES} -c $<
 
-all:		minify-css minify-js
+all:		minify-css
 
 clean:
-		rm -f version.php ${CSS_MINIFIED} ${JS_MINIFIED}
+		rm -f version.php ${CSS_MINIFIED}
 
 minify-css:	$(CSS_FILES) $(CSS_MINIFIED)
-minify-js:	$(JS_FILES) $(JS_MINIFIED)
 
 %-min.css:	%.css
 		@echo '==> Minifying $<'
 		$(YUI_COMPRESSOR) $(YUI_COMPRESSOR_FLAGS) --type css $< >$@
 		@echo
 
-%-min.js:	%.js
-		@echo '==> Minifying $<'
-		$(YUI_COMPRESSOR) $(YUI_COMPRESSOR_FLAGS) --type js $< >$@
-		@echo
-
-
 install:
 		${INSTALL} -d -g 314 -o 314 ${PREFIX} ${WWWDIR} ${WWWDIR}/css ${WWWDIR}/fpdf \
-			${WWWDIR}/fpdf/font \
+			${WWWDIR}/fpdf/font ${WWWDIR}/ispindel \
 			${WWWDIR}/jqwidgets ${WWWDIR}/js ${WWWDIR}/images/ ${WWWDIR}/includes/
 		${INSTALL} -d -g 314 -o 314 -m 0777 ${WWWDIR}/run
 		${INSTALL} -d -g 314 -o 314 ${WWWDIR}/log
 		${INSTALL} -d -g 314 -o 314 ${WWWDIR}/log/brews
 		${INSTALL} -d -g 314 -o 314 ${WWWDIR}/log/fermentation
+		${INSTALL} -d -g 314 -o 314 ${WWWDIR}/log/co2pressure
+		${INSTALL} -d -g 314 -o 314 ${WWWDIR}/log/ispindel
 		${INSTALL} -g 314 -o 314 -m 0644 ${SRC} ${WWWDIR}/
 		${INSTALL} -g 314 -o 314 -m 0644 version.php ${WWWDIR}/
 		${INSTALL} -g 314 -o 314 -m 0644 css/* ${WWWDIR}/css/
 		${INSTALL} -g 314 -o 314 -m 0644 images/* ${WWWDIR}/images/
 		${INSTALL} -g 314 -o 314 -m 0644 includes/* ${WWWDIR}/includes/
+		${INSTALL} -g 314 -o 314 -m 0644 ispindel/* ${WWWDIR}/ispindel/
 		cp -r jqwidgets/* ${WWWDIR}/jqwidgets/
 		chown -R 314:314 ${WWWDIR}/jqwidgets
 		cp -r -p fpdf/* ${WWWDIR}/fpdf/
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/www/cmd_ispindel.php	Fri May 01 16:37:31 2020 +0200
@@ -0,0 +1,29 @@
+<?php
+require_once('config.php');
+
+#Connect to the database
+$connect = mysqli_connect(DBASE_HOST, DBASE_USER, DBASE_PASS, DBASE_NAME);
+if (! $connect) {
+        die('Connect Error (' . mysqli_connect_errno() . ') ' . mysqli_connect_error());
+}
+mysqli_set_charset($connect, "utf8" );
+$sql = "";
+
+if (isset($_POST['beername']) && isset($_POST['beercode']) && isset($_POST['beeruuid'])) {
+	$sql  = "UPDATE `mon_ispindels` SET ";
+	$sql .=    "beername='" . mysqli_real_escape_string($connect, $_POST['beername']);
+	$sql .= "', beercode='" . mysqli_real_escape_string($connect, $_POST['beercode']);
+	$sql .= "', beeruuid='" . mysqli_real_escape_string($connect, $_POST['beeruuid']);
+	$sql .= "', og_gravity=0 WHERE uuid='" . $_POST['uuid'] . "';";
+} else if (isset($_POST['mode'])) {
+	$sql  = "UPDATE `mon_ispindels` SET mode='" .$_POST['mode'] . "' WHERE uuid='" . $_POST['uuid'] . "';";
+} else {
+	syslog(LOG_NOTICE, "cmd_ispindel: unknown POST");
+}
+
+$result = mysqli_query($connect, $sql);
+if (! $result) {
+	syslog(LOG_NOTICE, "cmd_ispindel: result: ".mysqli_error($connect));
+}
+echo $result;
+?>
--- a/www/crontasks.php	Fri Oct 18 13:20:35 2019 +0200
+++ b/www/crontasks.php	Fri May 01 16:37:31 2020 +0200
@@ -74,9 +74,9 @@
 
 
 /*
- * Check fementation logs.
+ * Check several logs.
  */
-$query = "SELECT record,code,name,log_brew,log_fermentation FROM products;";
+$query = "SELECT record,code,name,log_brew,log_fermentation,log_ispindel,log_co2pressure FROM products;";
 $result = mysqli_query($connect, $query);
 while ($row = mysqli_fetch_array($result, MYSQLI_ASSOC)) {
 	$logfile = "log/fermentation/" . $row['code'] . " " . $row['name'] . ".log";
@@ -89,6 +89,26 @@
 		syslog(LOG_NOTICE, $query);
 		$result1 = mysqli_query($connect, $query);
 	}
+	$logfile = "log/ispindel/" . $row['code'] . " " . $row['name'] . ".log";
+	if (file_exists($logfile))
+                $ok = 1;
+        else
+                $ok = 0;
+        if ($ok != $row['log_ispindel']) {
+                $query = "UPDATE products SET log_ispindel='" . $ok . "' WHERE record='" . $row['record'] . "';";
+                syslog(LOG_NOTICE, $query);
+                $result1 = mysqli_query($connect, $query);
+        }
+	$logfile = "log/co2pressure/" . $row['code'] . " " . $row['name'] . ".log";
+        if (file_exists($logfile))
+                $ok = 1;
+        else
+                $ok = 0;
+        if ($ok != $row['log_co2pressure']) {
+                $query = "UPDATE products SET log_co2pressure='" . $ok . "' WHERE record='" . $row['record'] . "';";
+                syslog(LOG_NOTICE, $query);
+                $result1 = mysqli_query($connect, $query);
+        }
 }
 
 
--- a/www/css/style-min.css	Fri Oct 18 13:20:35 2019 +0200
+++ b/www/css/style-min.css	Fri May 01 16:37:31 2020 +0200
@@ -1,1 +1,1 @@
-body{background:#ccc;font-family:Verdana,Arial,sans-serif;margin:0}#MainPanel,#fermenter,#co2meter{width:1278px;height:628px;border:2px solid #4297d7;background:#252526;float:left;color:#eee}#water_totals{width:960px;background:#353536;margin-top:15px;border:1px solid;border-color:#59b4d4;border-radius:5px 5px 5px 5px}#propagator{width:800px;background:#353536;margin-top:15px;border:1px solid;border-color:#59b4d4;border-radius:5px 5px 5px 5px}#export_table,#about_table{width:960px;background:#353536;margin:150px;border:2px solid;border-color:#59b4d4;border-radius:5px 5px 5px 5px}#node_table{width:600px;background:#353536;margin:50px;border:2px solid;border-color:#59b4d4;border-radius:5px 5px 5px 5px}#fermenter_table,#co2meter_table{width:960px;height:210px;background:#252526;margin:5px;border:2px solid;border-color:#59b4d4;border-radius:5px 5px 5px 5px}.ebccolor{float:left;margin-left:10px;width:75px;height:23px;border:1px solid #59b4d4;border-radius:6px;moz-border-radius:6px;webkit-border-radius:6px;background:#212121}#fermenter_thermometers,#co2meter_meters{width:960px;height:390px;float:left;background-color:#252526;margin:5px;margin-top:3px;border:2px solid;border-color:#59b4d4;border-radius:5px 5px 5px 5px}#fermenter_panel_top,#co2meter_panel_top{width:290px;height:100px;float:right;margin:5px;background-color:#252526;border:2px solid;border-color:#59b4d4;border-radius:5px 5px 5px 5px}#fermenter_doorled,#fermenter_lightled,#fermenter_alarmled,#fermenter_powerled{width:50px;height:30px;float:left;text-align:center;margin-top:15px;margin-left:20px}#co2meter_alarmled,#co2meter_powerled{width:50px;height:30px;float:right;text-align:center;margin-top:15px;margin-right:20px}#co2meter_panel_display{width:290px;height:260px;float:right;margin:5px;margin-top:3px;background-color:#252526;border:2px solid;border-color:#59b4d4;border-radius:5px 5px 5px 5px}#fermenter_panel_display{width:290px;height:98px;float:right;margin:5px;margin-top:3px;background-color:#252526;border:2px solid;border-color:#59b4d4;border-radius:5px 5px 5px 5px}#fermenter_display{width:145px;height:98px;float:left;text-align:center}#fermenter_panel_control{width:290px;height:150px;float:right;margin:5px;margin-top:3px;background-color:#252526;border:2px solid;border-color:#59b4d4;border-radius:5px 5px 5px 5px}#fermenter_led1,#fermenter_led2,#fermenter_led3{width:96px;height:30px;float:left;text-align:center;margin-top:13px}#fermenter_toggle1{float:left;margin-left:29px;margin-top:20px}#fermenter_toggle2,#fermenter_toggle3{float:left;margin-left:60px;margin-top:20px}#fermenter_panel_buttons,#co2meter_panel_buttons{width:290px;height:227px;float:right;margin:5px;margin-top:3px;background-color:#252526;border:2px solid;border-color:#59b4d4;border-radius:5px 5px 5px 5px}.LEDred_on{margin:5px auto;width:18px;height:18px;background-color:#F40;border-radius:50%;box-shadow:#000 0 0 4px 1px,inset #C33 0 -1px 5px,#f44 0 2px 12px}.LEDred_off{margin:5px auto;width:18px;height:18px;background-color:#820;border-radius:50%;box-shadow:#400 0 0 1px 1px}.LEDyellow_on{margin:5px auto;width:18px;height:18px;background-color:#FF0;border-radius:50%;box-shadow:#000 0 0 4px 1px,inset #860 0 -1px 5px,#DD0 0 2px 12px}.LEDyellow_off{margin:5px auto;width:18px;height:18px;background-color:#A90;border-radius:50%;box-shadow:#440 0 0 1px 1px}.LEDgreen_on{margin:5px auto;width:18px;height:18px;background-color:#5E0;border-radius:50%;box-shadow:#000 0 0 4px 1px,inset #270 0 -1px 5px,#5D0 0 2px 12px}.LEDgreen_off{margin:5px auto;width:18px;height:18px;background-color:#270;border-radius:50%;box-shadow:#250 0 0 1px 1px}.LEDblue_on{margin:5px auto;width:18px;height:18px;background-color:#4AF;border-radius:50%;box-shadow:#000 0 0 4px 1px,inset #247 0 -1px 5px,#48F 0 2px 12px}.LEDblue_off{margin:5px auto;width:18px;height:18px;background-color:#137;border-radius:50%;box-shadow:#024 0 0 1px 1px}#hintBase,#hintStyle,#hintEq{float:left;margin-top:30px;margin-right:20px;padding:5px;width:600px;color:yellow}#section{margin:5px}#baseButtonsWrapper{float:right;margin-top:30px;margin-right:10px;width:160px}#styleButtonsWrapper{float:right;margin-top:30px;margin-right:10px;width:320px}#eqButtonsWrapper{float:right;margin-top:30px;margin-right:10px;width:320px}#completedButtonsWrapper{float:right;margin-right:10px;width:320px;margin-top:160px}.nextButton{float:right;margin-left:0}.backButton{float:left;margin-left:10px}
\ No newline at end of file
+body{background:#ccc;font-family:Verdana,Arial,sans-serif;margin:0}#MainPanel,#fermenter,#co2meter,#ispindel{width:1278px;height:628px;border:2px solid #4297d7;background:#252526;float:left;color:#eee}#water_totals{width:960px;background:#353536;margin-top:15px;border:1px solid;border-color:#59b4d4;border-radius:5px 5px 5px 5px}#propagator{width:800px;background:#353536;margin-top:15px;border:1px solid;border-color:#59b4d4;border-radius:5px 5px 5px 5px}#export_table,#about_table{width:960px;background:#353536;margin:150px;border:2px solid;border-color:#59b4d4;border-radius:5px 5px 5px 5px}#node_table{width:600px;background:#353536;margin:50px;border:2px solid;border-color:#59b4d4;border-radius:5px 5px 5px 5px}#fermenter_table,#co2meter_table,#ispindel_table{width:960px;height:210px;background:#252526;margin:5px;border:2px solid;border-color:#59b4d4;border-radius:5px 5px 5px 5px}.ebccolor{float:left;margin-left:10px;width:75px;height:23px;border:1px solid #59b4d4;border-radius:6px;moz-border-radius:6px;webkit-border-radius:6px;background:#212121}#fermenter_thermometers,#co2meter_meters,#ispindel_meters{width:960px;height:390px;float:left;background-color:#252526;margin:5px;margin-top:3px;border:2px solid;border-color:#59b4d4;border-radius:5px 5px 5px 5px}#fermenter_panel_top,#co2meter_panel_top,#ispindel_panel_top{width:290px;height:100px;float:right;margin:5px;background-color:#252526;border:2px solid;border-color:#59b4d4;border-radius:5px 5px 5px 5px}#fermenter_doorled,#fermenter_lightled,#fermenter_alarmled,#fermenter_powerled{width:50px;height:30px;float:left;text-align:center;margin-top:15px;margin-left:20px}#co2meter_alarmled,#co2meter_powerled,#ispindel_alarmled,#ispindel_powerled{width:50px;height:30px;float:right;text-align:center;margin-top:15px;margin-right:20px}#co2meter_panel_display,#ispindel_panel_display{width:290px;height:260px;float:right;margin:5px;margin-top:3px;background-color:#252526;border:2px solid;border-color:#59b4d4;border-radius:5px 5px 5px 5px}#fermenter_panel_display{width:290px;height:98px;float:right;margin:5px;margin-top:3px;background-color:#252526;border:2px solid;border-color:#59b4d4;border-radius:5px 5px 5px 5px}#fermenter_display{width:145px;height:98px;float:left;text-align:center}#fermenter_panel_control{width:290px;height:150px;float:right;margin:5px;margin-top:3px;background-color:#252526;border:2px solid;border-color:#59b4d4;border-radius:5px 5px 5px 5px}#fermenter_led1,#fermenter_led2,#fermenter_led3{width:96px;height:30px;float:left;text-align:center;margin-top:13px}#fermenter_toggle1{float:left;margin-left:29px;margin-top:20px}#fermenter_toggle2,#fermenter_toggle3{float:left;margin-left:60px;margin-top:20px}#fermenter_panel_buttons,#co2meter_panel_buttons,#ispindel_panel_buttons{width:290px;height:227px;float:right;margin:5px;margin-top:3px;background-color:#252526;border:2px solid;border-color:#59b4d4;border-radius:5px 5px 5px 5px}.LEDred_on{margin:5px auto;width:18px;height:18px;background-color:#F40;border-radius:50%;box-shadow:#000 0 0 4px 1px,inset #C33 0 -1px 5px,#f44 0 2px 12px}.LEDred_off{margin:5px auto;width:18px;height:18px;background-color:#820;border-radius:50%;box-shadow:#400 0 0 1px 1px}.LEDyellow_on{margin:5px auto;width:18px;height:18px;background-color:#FF0;border-radius:50%;box-shadow:#000 0 0 4px 1px,inset #860 0 -1px 5px,#DD0 0 2px 12px}.LEDyellow_off{margin:5px auto;width:18px;height:18px;background-color:#A90;border-radius:50%;box-shadow:#440 0 0 1px 1px}.LEDgreen_on{margin:5px auto;width:18px;height:18px;background-color:#5E0;border-radius:50%;box-shadow:#000 0 0 4px 1px,inset #270 0 -1px 5px,#5D0 0 2px 12px}.LEDgreen_off{margin:5px auto;width:18px;height:18px;background-color:#270;border-radius:50%;box-shadow:#250 0 0 1px 1px}.LEDblue_on{margin:5px auto;width:18px;height:18px;background-color:#4AF;border-radius:50%;box-shadow:#000 0 0 4px 1px,inset #247 0 -1px 5px,#48F 0 2px 12px}.LEDblue_off{margin:5px auto;width:18px;height:18px;background-color:#137;border-radius:50%;box-shadow:#024 0 0 1px 1px}#hintBase,#hintStyle,#hintEq{float:left;margin-top:30px;margin-right:20px;padding:5px;width:600px;color:yellow}#section{margin:5px}#baseButtonsWrapper{float:right;margin-top:30px;margin-right:10px;width:160px}#styleButtonsWrapper{float:right;margin-top:30px;margin-right:10px;width:320px}#eqButtonsWrapper{float:right;margin-top:30px;margin-right:10px;width:320px}#completedButtonsWrapper{float:right;margin-right:10px;width:320px;margin-top:160px}.nextButton{float:right;margin-left:0}.backButton{float:left;margin-left:10px}
\ No newline at end of file
--- a/www/css/style.css	Fri Oct 18 13:20:35 2019 +0200
+++ b/www/css/style.css	Fri May 01 16:37:31 2020 +0200
@@ -10,7 +10,8 @@
 
 #MainPanel,
 #fermenter,
-#co2meter {
+#co2meter,
+#ispindel {
     width: 1278px;
     height: 628px;
     border: 2px solid #4297d7;
@@ -65,7 +66,8 @@
 
 
 #fermenter_table,
-#co2meter_table {
+#co2meter_table,
+#ispindel_table {
     width: 960px;
     height: 210px;
     background: #252526;
@@ -105,7 +107,8 @@
  */
 
 #fermenter_thermometers,
-#co2meter_meters {
+#co2meter_meters,
+#ispindel_meters {
     width: 960px;
     height: 390px;
     float: left;
@@ -140,7 +143,8 @@
  * +-------------------------------+
  */
 #fermenter_panel_top,
-#co2meter_panel_top {
+#co2meter_panel_top,
+#ispindel_panel_top {
   width: 290px;
   height: 100px;
   float: right;
@@ -164,7 +168,9 @@
 }
 
 #co2meter_alarmled,
-#co2meter_powerled {
+#co2meter_powerled,
+#ispindel_alarmled,
+#ispindel_powerled {
   width: 50px;
   height: 30px;
   float: right;
@@ -173,7 +179,8 @@
   margin-right: 20px;
 }
 
-#co2meter_panel_display {
+#co2meter_panel_display,
+#ispindel_panel_display {
   width: 290px;
   height: 260px;
   float: right;
@@ -241,7 +248,8 @@
 
 
 #fermenter_panel_buttons,
-#co2meter_panel_buttons {
+#co2meter_panel_buttons,
+#ispindel_panel_buttons {
   width: 290px;
   height: 227px;
   float: right;
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/www/export_equipments.php	Fri May 01 16:37:31 2020 +0200
@@ -0,0 +1,134 @@
+<?php
+require_once($_SERVER['DOCUMENT_ROOT'].'/config.php');
+require_once($_SERVER['DOCUMENT_ROOT'].'/includes/formulas.php');
+
+
+$link = mysqli_connect(DBASE_HOST,DBASE_USER,DBASE_PASS,DBASE_NAME);
+if (! $link) {
+	die('Connect Error (' . mysqli_connect_errno() . ') ' . mysqli_connect_error());
+}
+if (! mysqli_set_charset($link, "utf8" )) {
+	echo "error";
+	return 1;
+}
+
+$result = mysqli_query($link, "SELECT * FROM inventory_equipments ORDER BY name");
+$row = mysqli_fetch_array($result);
+
+
+/*
+ * Create beerxml output
+ */
+$xw = xmlwriter_open_memory();
+xmlwriter_set_indent($xw, 1);
+$res = xmlwriter_set_indent_string($xw, ' ');
+
+xmlwriter_start_document($xw, '1.0', 'UTF-8');
+
+
+xmlwriter_start_element($xw, 'EQUIPMENTS');
+while ($row = mysqli_fetch_array($result)) {
+
+	xmlwriter_start_element($xw, 'EQUIPMENT');
+
+	xmlwriter_start_element($xw, 'VERSION');
+	xmlwriter_text($xw, '1');
+	xmlwriter_end_element($xw);
+
+	xmlwriter_start_element($xw, 'NAME');
+	xmlwriter_text($xw, $row['name']);
+	xmlwriter_end_element($xw);
+
+	xmlwriter_start_element($xw, 'NOTES');
+        xmlwriter_text($xw, $row['notes']);
+        xmlwriter_end_element($xw);
+
+	xmlwriter_start_element($xw, 'BOIL_SIZE');
+        xmlwriter_text($xw, sprintf("%.4f", floatval($row['boil_size'])));
+        xmlwriter_end_element($xw);
+
+        xmlwriter_start_element($xw, 'BATCH_SIZE');
+        xmlwriter_text($xw, sprintf("%.4f", floatval($row['batch_size'])));
+        xmlwriter_end_element($xw);
+
+        xmlwriter_start_element($xw, 'TUN_VOLUME');
+        xmlwriter_text($xw, sprintf("%.5f", floatval($row['tun_volume'])));
+        xmlwriter_end_element($xw);
+
+        xmlwriter_start_element($xw, 'TUN_WEIGHT');
+        xmlwriter_text($xw, sprintf("%.5f", floatval($row['tun_weight'])));
+        xmlwriter_end_element($xw);
+
+        xmlwriter_start_element($xw, 'TUN_SPECIFIC_HEAT');
+        xmlwriter_text($xw, sprintf("%.5f", floatval($row['tun_specific_heat'])));
+        xmlwriter_end_element($xw);
+
+        xmlwriter_start_element($xw, 'TUN_HEIGHT');
+        xmlwriter_text($xw, sprintf("%.5f", floatval($row['tun_height'])));
+        xmlwriter_end_element($xw);
+
+        xmlwriter_start_element($xw, 'TRUB_CHILLER_LOSS');
+        xmlwriter_text($xw, sprintf("%.5f", floatval($row['trub_chiller_loss'])));
+        xmlwriter_end_element($xw);
+
+        xmlwriter_start_element($xw, 'EVAP_RATE');
+        xmlwriter_text($xw, sprintf("%.5f", floatval($row['evap_rate'])));
+        xmlwriter_end_element($xw);
+
+        xmlwriter_start_element($xw, 'BOIL_TIME');
+        xmlwriter_text($xw, sprintf("%.5f", floatval($row['boil_time'])));
+        xmlwriter_end_element($xw);
+
+	xmlwriter_start_element($xw, 'CALC_BOIL_VOLUME');
+        ($row['calc_boil_volume'] > 1) ? xmlwriter_text($xw, 'TRUE') : xmlwriter_text($xw, 'FALSE');
+        xmlwriter_end_element($xw);
+
+        xmlwriter_start_element($xw, 'TOP_UP_KETTLE');
+        xmlwriter_text($xw, sprintf("%.5f", floatval($row['top_up_kettle'])));
+        xmlwriter_end_element($xw);
+
+        xmlwriter_start_element($xw, 'HOP_UTILIZATION');
+        xmlwriter_text($xw, sprintf("%.5f", floatval($row['hop_utilization'])));
+        xmlwriter_end_element($xw);
+
+        xmlwriter_start_element($xw, 'LAUTER_VOLUME');
+        xmlwriter_text($xw, sprintf("%.5f", floatval($row['lauter_volume'])));
+        xmlwriter_end_element($xw);
+
+        xmlwriter_start_element($xw, 'LAUTER_HEIGHT');
+        xmlwriter_text($xw, sprintf("%.5f", floatval($row['lauter_height'])));
+        xmlwriter_end_element($xw);
+
+        xmlwriter_start_element($xw, 'LAUTER_DEADSPACE');
+        xmlwriter_text($xw, sprintf("%.5f", floatval($row['lauter_deadspace'])));
+        xmlwriter_end_element($xw);
+
+        xmlwriter_start_element($xw, 'KETTLE_VOLUME');
+        xmlwriter_text($xw, sprintf("%.5f", floatval($row['kettle_volume'])));
+        xmlwriter_end_element($xw);
+
+        xmlwriter_start_element($xw, 'KETTLE_HEIGHT');
+        xmlwriter_text($xw, sprintf("%.5f", floatval($row['kettle_height'])));
+        xmlwriter_end_element($xw);
+
+        xmlwriter_start_element($xw, 'MASH_VOLUME');
+        xmlwriter_text($xw, sprintf("%.5f", floatval($row['mash_volume'])));
+        xmlwriter_end_element($xw);
+
+        xmlwriter_start_element($xw, 'EFFICIENCY');
+        xmlwriter_text($xw, sprintf("%.5f", floatval($row['efficiency'])));
+        xmlwriter_end_element($xw);
+
+	xmlwriter_end_element($xw);	// EQUIPMENT
+}
+xmlwriter_end_element($xw);	// EQUIPMENTS
+
+$beerxml = xmlwriter_output_memory($xw);
+
+Header('Content-type: text/xml');
+header('Content-Disposition: attachment; filename="equipments.xml"');
+header('Content-Transfer-Encoding: binary');
+header('Expires: 0');
+header('Pragma: no-cache');
+header('Content-Length: '.strlen($beerxml));
+exit($beerxml);
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/www/export_fermentables.php	Fri May 01 16:37:31 2020 +0200
@@ -0,0 +1,144 @@
+<?php
+require_once($_SERVER['DOCUMENT_ROOT'].'/config.php');
+require_once($_SERVER['DOCUMENT_ROOT'].'/includes/formulas.php');
+
+
+$link = mysqli_connect(DBASE_HOST,DBASE_USER,DBASE_PASS,DBASE_NAME);
+if (! $link) {
+	die('Connect Error (' . mysqli_connect_errno() . ') ' . mysqli_connect_error());
+}
+if (! mysqli_set_charset($link, "utf8" )) {
+	echo "error";
+	return 1;
+}
+
+$result = mysqli_query($link, "SELECT * FROM inventory_fermentables ORDER BY supplier,name");
+$row = mysqli_fetch_array($result);
+
+
+$fermentabletype = array( 'Grain', 'Sugar', 'Extract', 'Dry extract', 'Adjunct' );
+$graintype = array( 'Base', 'Roast', 'Crystal', 'Kilned', 'Sour malt', 'Special', 'No malt' );
+$addedtype = array( 'Mash', 'Boil', 'Fermentation', 'Lagering', 'Bottle', 'Kegs' );
+
+/*
+ * Create beerxml output
+ */
+$xw = xmlwriter_open_memory();
+xmlwriter_set_indent($xw, 1);
+$res = xmlwriter_set_indent_string($xw, ' ');
+
+xmlwriter_start_document($xw, '1.0', 'UTF-8');
+
+
+xmlwriter_start_element($xw, 'FERMENTABLES');
+while ($row = mysqli_fetch_array($result)) {
+
+	xmlwriter_start_element($xw, 'FERMENTABLES');
+
+	xmlwriter_start_element($xw, 'VERSION');
+	xmlwriter_text($xw, '1');
+	xmlwriter_end_element($xw);
+
+	xmlwriter_start_element($xw, 'NAME');
+	xmlwriter_text($xw, $row['name']);
+	xmlwriter_end_element($xw);
+
+	xmlwriter_start_element($xw, 'NOTES');
+        xmlwriter_text($xw, $row['notes']);
+        xmlwriter_end_element($xw);
+
+	xmlwriter_start_element($xw, 'TYPE');
+	xmlwriter_text($xw, $fermentabletype[$row['type']]);
+	xmlwriter_end_element($xw);
+
+        xmlwriter_start_element($xw, 'YIELD');
+        xmlwriter_text($xw, sprintf("%.5f",floatval($row['yield'])));
+        xmlwriter_end_element($xw);
+
+        xmlwriter_start_element($xw, 'COLOR');
+        xmlwriter_text($xw, sprintf("%.3f",ebc_to_srm(floatval($row['color']))));
+        xmlwriter_end_element($xw);
+
+        xmlwriter_start_element($xw, 'ADD_AFTER_BOIL');
+        ($row['added'] > 1) ? xmlwriter_text($xw, 'TRUE') : xmlwriter_text($xw, 'FALSE');
+        xmlwriter_end_element($xw);
+
+        xmlwriter_start_element($xw, 'ORIGIN');
+        xmlwriter_text($xw, $row['origin']);
+        xmlwriter_end_element($xw);
+
+        xmlwriter_start_element($xw, 'SUPPLIER');
+        xmlwriter_text($xw, $row['supplier']);
+        xmlwriter_end_element($xw);
+
+        if (floatval($row['coarse_fine_diff'])) {
+                xmlwriter_start_element($xw, 'COARSE_FINE_DIFF');
+                xmlwriter_text($xw, sprintf("%.4f",floatval($row['coarse_fine_diff'])));
+                xmlwriter_end_element($xw);
+        }
+
+        if (floatval($row['moisture'])) {
+                xmlwriter_start_element($xw, 'MOISTURE');
+                xmlwriter_text($xw, sprintf("%.4f",floatval($row['moisture'])));
+                xmlwriter_end_element($xw);
+        }
+
+        if (floatval($row['diastatic_power'])) {
+                xmlwriter_start_element($xw, 'DIASTATIC_POWER');
+                xmlwriter_text($xw, sprintf("%.4f",floatval($row['diastatic_power'])));
+                xmlwriter_end_element($xw);
+        }
+
+        if (floatval($row['protein'])) {
+                xmlwriter_start_element($xw, 'PROTEIN');
+                xmlwriter_text($xw, sprintf("%.4f",floatval($row['protein'])));
+                xmlwriter_end_element($xw);
+        }
+
+        if (floatval($row['max_in_batch'])) {
+                xmlwriter_start_element($xw, 'MAX_IN_BATCH');
+                xmlwriter_text($xw, sprintf("%.3f",floatval($row['max_in_batch'])));
+                xmlwriter_end_element($xw);
+        }
+
+        xmlwriter_start_element($xw, 'RECOMMEND_MASH');
+        ($row['recommend_mash']) ? xmlwriter_text($xw, 'TRUE') : xmlwriter_text($xw, 'FALSE');
+        xmlwriter_end_element($xw);
+
+	xmlwriter_start_element($xw, 'DISPLAY_COLOR');
+        xmlwriter_text($xw, sprintf("%.0f EBC",floatval($row['color'])));
+        xmlwriter_end_element($xw);
+
+        xmlwriter_start_element($xw, 'GRAINTYPE');
+        xmlwriter_text($xw, $graintype[$row['graintype']]);
+        xmlwriter_end_element($xw);
+
+        xmlwriter_start_element($xw, 'ADDED');
+        xmlwriter_text($xw, $addedtype[$row['added']]);
+        xmlwriter_end_element($xw);
+
+	if (floatval($row['di_ph'])) {
+                xmlwriter_start_element($xw, 'DI_pH');
+                xmlwriter_text($xw, sprintf("%.5f",floatval($row['di_ph'])));
+                xmlwriter_end_element($xw);
+        }
+
+	if (floatval($row['acid_to_ph_57'])) {
+                xmlwriter_start_element($xw, 'ACID_TO_pH_5.7');
+                xmlwriter_text($xw, sprintf("%.5f",floatval($row['acid_to_ph_57'])));
+                xmlwriter_end_element($xw);
+        }
+
+	xmlwriter_end_element($xw);	// FERMENTABLE
+}
+xmlwriter_end_element($xw);	// FERMENTABLES
+
+$beerxml = xmlwriter_output_memory($xw);
+
+Header('Content-type: text/xml');
+header('Content-Disposition: attachment; filename="fermentables.xml"');
+header('Content-Transfer-Encoding: binary');
+header('Expires: 0');
+header('Pragma: no-cache');
+header('Content-Length: '.strlen($beerxml));
+exit($beerxml);
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/www/export_hops.php	Fri May 01 16:37:31 2020 +0200
@@ -0,0 +1,125 @@
+<?php
+require_once($_SERVER['DOCUMENT_ROOT'].'/config.php');
+require_once($_SERVER['DOCUMENT_ROOT'].'/includes/formulas.php');
+
+
+$link = mysqli_connect(DBASE_HOST,DBASE_USER,DBASE_PASS,DBASE_NAME);
+if (! $link) {
+	die('Connect Error (' . mysqli_connect_errno() . ') ' . mysqli_connect_error());
+}
+if (! mysqli_set_charset($link, "utf8" )) {
+	echo "error";
+	return 1;
+}
+
+$result = mysqli_query($link, "SELECT * FROM inventory_hops ORDER BY origin,name");
+$row = mysqli_fetch_array($result);
+
+
+$hoptype = array( 'Bittering', 'Aroma', 'Both' );
+$hopform = array( 'Pellet', 'Plug', 'Leaf', 'Leaf', 'Leaf' );
+
+
+
+/*
+ * Create beerxml output
+ */
+$xw = xmlwriter_open_memory();
+xmlwriter_set_indent($xw, 1);
+$res = xmlwriter_set_indent_string($xw, ' ');
+
+xmlwriter_start_document($xw, '1.0', 'UTF-8');
+
+
+xmlwriter_start_element($xw, 'HOPS');
+while ($row = mysqli_fetch_array($result)) {
+
+	xmlwriter_start_element($xw, 'HOP');
+
+	xmlwriter_start_element($xw, 'VERSION');
+	xmlwriter_text($xw, '1');
+	xmlwriter_end_element($xw);
+
+	xmlwriter_start_element($xw, 'NAME');
+	xmlwriter_text($xw, $row['name']);
+	xmlwriter_end_element($xw);
+
+	if (strlen($row['notes'])) {
+        	xmlwriter_start_element($xw, 'NOTES');
+        	xmlwriter_text($xw, $row['notes']);
+        	xmlwriter_end_element($xw);
+	}
+
+	xmlwriter_start_element($xw, 'ALWAYS_ON_STOCK');
+        ($row['always_on_stock']) ? xmlwriter_text($xw, 'TRUE') : xmlwriter_text($xw, 'FALSE');
+        xmlwriter_end_element($xw);
+
+        xmlwriter_start_element($xw, 'ALPHA');
+        xmlwriter_text($xw, sprintf("%.4f",floatval($row['alpha'])));
+        xmlwriter_end_element($xw);
+
+        xmlwriter_start_element($xw, 'BETA');
+        xmlwriter_text($xw, sprintf("%.4f",floatval($row['beta'])));
+        xmlwriter_end_element($xw);
+
+        xmlwriter_start_element($xw, 'HUMULENE');
+        xmlwriter_text($xw, sprintf("%.4f",floatval($row['humulene'])));
+        xmlwriter_end_element($xw);
+
+        xmlwriter_start_element($xw, 'CAROPHYLLENE');
+        xmlwriter_text($xw, sprintf("%.4f",floatval($row['caryophyllene'])));
+        xmlwriter_end_element($xw);
+
+        xmlwriter_start_element($xw, 'COHUMULONE');
+        xmlwriter_text($xw, sprintf("%.4f",floatval($row['cohumulone'])));
+        xmlwriter_end_element($xw);
+
+        xmlwriter_start_element($xw, 'MYRCENE');
+        xmlwriter_text($xw, sprintf("%.4f",floatval($row['myrcene'])));
+        xmlwriter_end_element($xw);
+
+        xmlwriter_start_element($xw, 'TOTAL_OIL');
+        xmlwriter_text($xw, sprintf("%.4f",floatval($row['total_oil'])));
+        xmlwriter_end_element($xw);
+
+        xmlwriter_start_element($xw, 'HSI');
+        xmlwriter_text($xw, sprintf("%.4f",floatval($row['hsi'])));
+        xmlwriter_end_element($xw);
+
+        xmlwriter_start_element($xw, 'TYPE');
+        xmlwriter_text($xw, $hoptype[$row['type']]);
+        xmlwriter_end_element($xw);
+
+        xmlwriter_start_element($xw, 'FORM');
+        xmlwriter_text($xw, $hopform[$row['form']]);
+        xmlwriter_end_element($xw);
+
+        xmlwriter_start_element($xw, 'ORIGIN');
+        xmlwriter_text($xw, $row['origin']);
+        xmlwriter_end_element($xw);
+
+	if (strlen($row['substitutes'])) {
+        	xmlwriter_start_element($xw, 'SUBSTITUTES');
+        	xmlwriter_text($xw, $row['substitutes']);
+        	xmlwriter_end_element($xw);
+	}
+
+	if (floatval($row['cost']) > 0) {
+        	xmlwriter_start_element($xw, 'COST');
+        	xmlwriter_text($xw, sprintf("%.4f",floatval($row['cost'])));
+        	xmlwriter_end_element($xw);
+	}
+
+	xmlwriter_end_element($xw);	// HOP
+}
+xmlwriter_end_element($xw);	// HOPS
+
+$beerxml = xmlwriter_output_memory($xw);
+
+Header('Content-type: text/xml');
+header('Content-Disposition: attachment; filename="hops.xml"');
+header('Content-Transfer-Encoding: binary');
+header('Expires: 0');
+header('Pragma: no-cache');
+header('Content-Length: '.strlen($beerxml));
+exit($beerxml);
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/www/export_mashs.php	Fri May 01 16:37:31 2020 +0200
@@ -0,0 +1,100 @@
+<?php
+require_once($_SERVER['DOCUMENT_ROOT'].'/config.php');
+require_once($_SERVER['DOCUMENT_ROOT'].'/includes/formulas.php');
+
+
+$link = mysqli_connect(DBASE_HOST,DBASE_USER,DBASE_PASS,DBASE_NAME);
+if (! $link) {
+	die('Connect Error (' . mysqli_connect_errno() . ') ' . mysqli_connect_error());
+}
+if (! mysqli_set_charset($link, "utf8" )) {
+	echo "error";
+	return 1;
+}
+
+$result = mysqli_query($link, "SELECT * FROM profile_mash ORDER BY name");
+$row = mysqli_fetch_array($result);
+
+
+$mashsteptype = array( 'Infusion', 'Temperature', 'Decoction' );
+
+
+/*
+ * Create beerxml output
+ */
+$xw = xmlwriter_open_memory();
+xmlwriter_set_indent($xw, 1);
+$res = xmlwriter_set_indent_string($xw, ' ');
+
+xmlwriter_start_document($xw, '1.0', 'UTF-8');
+
+
+xmlwriter_start_element($xw, 'MASHS');
+while ($row = mysqli_fetch_array($result)) {
+
+	xmlwriter_start_element($xw, 'MASH');
+
+	xmlwriter_start_element($xw, 'VERSION');
+	xmlwriter_text($xw, '1');
+	xmlwriter_end_element($xw);
+
+	xmlwriter_start_element($xw, 'NAME');
+	xmlwriter_text($xw, $row['name']);
+	xmlwriter_end_element($xw);
+
+	if (strlen($row['notes'])) {
+        	xmlwriter_start_element($xw, 'NOTES');
+        	xmlwriter_text($xw, $row['notes']);
+        	xmlwriter_end_element($xw);
+	}
+
+	xmlwriter_start_element($xw, 'MASH_STEPS');
+	$arr = json_decode($row['steps'], true);
+	foreach($arr as $item) { //foreach element in $arr
+        	xmlwriter_start_element($xw, 'MASH_STEP');
+
+        	xmlwriter_start_element($xw, 'VERSION');
+        	xmlwriter_text($xw, '1');
+        	xmlwriter_end_element($xw);
+
+        	xmlwriter_start_element($xw, 'NAME');
+        	xmlwriter_text($xw, $item['step_name']);
+        	xmlwriter_end_element($xw);
+
+        	xmlwriter_start_element($xw, 'TYPE');
+        	xmlwriter_text($xw, $mashsteptype[$item['step_type']]);
+        	xmlwriter_end_element($xw);
+
+        	xmlwriter_start_element($xw, 'STEP_TEMP');
+        	xmlwriter_text($xw, sprintf("%.4f",floatval($item['step_temp'])));
+        	xmlwriter_end_element($xw);
+
+        	xmlwriter_start_element($xw, 'STEP_TIME');
+        	xmlwriter_text($xw, sprintf("%.3f",floatval($item['step_time'])));
+        	xmlwriter_end_element($xw);
+
+        	xmlwriter_start_element($xw, 'RAMP_TIME');
+        	xmlwriter_text($xw, sprintf("%.3f",floatval($item['ramp_time'])));
+        	xmlwriter_end_element($xw);
+
+        	xmlwriter_start_element($xw, 'END_TEMP');
+        	xmlwriter_text($xw, sprintf("%.4f",floatval($item['end_temp'])));
+        	xmlwriter_end_element($xw);
+
+        	xmlwriter_end_element($xw);     // MASH_STEP
+	}
+
+	xmlwriter_end_element($xw);     // MASH_STEPS
+	xmlwriter_end_element($xw);	// MASH
+}
+xmlwriter_end_element($xw);	// MASHS
+
+$beerxml = xmlwriter_output_memory($xw);
+
+Header('Content-type: text/xml');
+header('Content-Disposition: attachment; filename="mashs.xml"');
+header('Content-Transfer-Encoding: binary');
+header('Expires: 0');
+header('Pragma: no-cache');
+header('Content-Length: '.strlen($beerxml));
+exit($beerxml);
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/www/export_miscs.php	Fri May 01 16:37:31 2020 +0200
@@ -0,0 +1,99 @@
+<?php
+require_once($_SERVER['DOCUMENT_ROOT'].'/config.php');
+require_once($_SERVER['DOCUMENT_ROOT'].'/includes/formulas.php');
+
+
+$link = mysqli_connect(DBASE_HOST,DBASE_USER,DBASE_PASS,DBASE_NAME);
+if (! $link) {
+	die('Connect Error (' . mysqli_connect_errno() . ') ' . mysqli_connect_error());
+}
+if (! mysqli_set_charset($link, "utf8" )) {
+	echo "error";
+	return 1;
+}
+
+$result = mysqli_query($link, "SELECT * FROM inventory_miscs ORDER BY name");
+$row = mysqli_fetch_array($result);
+
+
+$misctype = array( 'Spice', 'Herb', 'Flavor', 'Fining', 'Water agent', 'Yeast nutrient', 'Other' );
+$miscuse = array( 'Starter', 'Mash', 'Boil', 'Primary', 'Secondary', 'Bottling' );
+
+
+
+/*
+ * Create beerxml output
+ */
+$xw = xmlwriter_open_memory();
+xmlwriter_set_indent($xw, 1);
+$res = xmlwriter_set_indent_string($xw, ' ');
+
+xmlwriter_start_document($xw, '1.0', 'UTF-8');
+
+
+xmlwriter_start_element($xw, 'MISCS');
+while ($row = mysqli_fetch_array($result)) {
+
+	xmlwriter_start_element($xw, 'MISC');
+
+	xmlwriter_start_element($xw, 'VERSION');
+	xmlwriter_text($xw, '1');
+	xmlwriter_end_element($xw);
+
+	xmlwriter_start_element($xw, 'NAME');
+	xmlwriter_text($xw, $row['name']);
+	xmlwriter_end_element($xw);
+
+	xmlwriter_start_element($xw, 'TYPE');
+	xmlwriter_text($xw, $misctype[$row['type']]);
+	xmlwriter_end_element($xw);
+
+	xmlwriter_start_element($xw, 'AMOUNT_IS_WEIGHT');
+	($row['amount_is_weight']) ? xmlwriter_text($xw, 'TRUE') : xmlwriter_text($xw, 'FALSE');
+	xmlwriter_end_element($xw);
+
+	xmlwriter_start_element($xw, 'USE');
+	xmlwriter_text($xw, $miscuse[$row['use_use']]);
+	xmlwriter_end_element($xw);
+
+	if (floatval($row['time']) > 0) {
+		xmlwriter_start_element($xw, 'TIME');
+		xmlwriter_text($xw, sprintf("%.3f",floatval($row['time'])));
+		xmlwriter_end_element($xw);
+	}
+
+	if (floatval($row['cost']) > 0) {
+		xmlwriter_start_element($xw, 'COST');
+		xmlwriter_text($xw, sprintf("%.5f",floatval($row['cost'])));
+		xmlwriter_end_element($xw);
+	}
+
+	xmlwriter_start_element($xw, 'ALWAYS_ON_STOCK');
+	($row['always_on_stock']) ? xmlwriter_text($xw, 'TRUE') : xmlwriter_text($xw, 'FALSE');
+	xmlwriter_end_element($xw);
+
+	if (strlen($row['notes'])) {
+		xmlwriter_start_element($xw, 'NOTES');
+		xmlwriter_text($xw, $row['notes']);
+		xmlwriter_end_element($xw);
+	}
+
+	if (strlen($row['use_for'])) {
+		xmlwriter_start_element($xw, 'USE_FOR');
+		xmlwriter_text($xw, $row['use_for']);
+		xmlwriter_end_element($xw);
+	}
+
+	xmlwriter_end_element($xw);	// MISC
+}
+xmlwriter_end_element($xw);	// MISCS
+
+$beerxml = xmlwriter_output_memory($xw);
+
+Header('Content-type: text/xml');
+header('Content-Disposition: attachment; filename="miscs.xml"');
+header('Content-Transfer-Encoding: binary');
+header('Expires: 0');
+header('Pragma: no-cache');
+header('Content-Length: '.strlen($beerxml));
+exit($beerxml);
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/www/export_styles.php	Fri May 01 16:37:31 2020 +0200
@@ -0,0 +1,151 @@
+<?php
+require_once($_SERVER['DOCUMENT_ROOT'].'/config.php');
+require_once($_SERVER['DOCUMENT_ROOT'].'/includes/formulas.php');
+
+
+$link = mysqli_connect(DBASE_HOST,DBASE_USER,DBASE_PASS,DBASE_NAME);
+if (! $link) {
+	die('Connect Error (' . mysqli_connect_errno() . ') ' . mysqli_connect_error());
+}
+if (! mysqli_set_charset($link, "utf8" )) {
+	echo "error";
+	return 1;
+}
+
+$result = mysqli_query($link, "SELECT * FROM profile_styles ORDER BY style_guide,style_letter,name");
+$row = mysqli_fetch_array($result);
+
+
+$styletype = array( 'Lager', 'Ale', 'Mead', 'Wheat', 'Mixed', 'Cider' );
+
+
+/*
+ * Create beerxml output
+ */
+$xw = xmlwriter_open_memory();
+xmlwriter_set_indent($xw, 1);
+$res = xmlwriter_set_indent_string($xw, ' ');
+
+xmlwriter_start_document($xw, '1.0', 'UTF-8');
+
+
+xmlwriter_start_element($xw, 'STYLES');
+while ($row = mysqli_fetch_array($result)) {
+
+	xmlwriter_start_element($xw, 'STYLE');
+
+	xmlwriter_start_element($xw, 'VERSION');
+	xmlwriter_text($xw, '1');
+	xmlwriter_end_element($xw);
+
+	xmlwriter_start_element($xw, 'NAME');
+	xmlwriter_text($xw, $row['name']);
+	xmlwriter_end_element($xw);
+
+	if (strlen($row['category'])) {
+		xmlwriter_start_element($xw, 'CATEGORY');
+		xmlwriter_text($xw, $row['category']);
+		xmlwriter_end_element($xw);
+
+		xmlwriter_start_element($xw, 'CATEGORY_NUMBER');
+		xmlwriter_text($xw, $row['category_number']);
+		xmlwriter_end_element($xw);
+	}
+
+	xmlwriter_start_element($xw, 'STYLE_LETTER');
+	xmlwriter_text($xw, $row['style_letter']);
+	xmlwriter_end_element($xw);
+
+	xmlwriter_start_element($xw, 'STYLE_GUIDE');
+	xmlwriter_text($xw, $row['style_guide']);
+	xmlwriter_end_element($xw);
+
+	xmlwriter_start_element($xw, 'TYPE');
+	xmlwriter_text($xw, $styletype[$row['type']]);
+	xmlwriter_end_element($xw);
+
+	xmlwriter_start_element($xw, 'OG_MIN');
+	xmlwriter_text($xw, sprintf("%.6f",floatval($row['og_min'])));
+	xmlwriter_end_element($xw);
+
+	xmlwriter_start_element($xw, 'OG_MAX');
+	xmlwriter_text($xw, sprintf("%.6f",floatval($row['og_max'])));
+	xmlwriter_end_element($xw);
+
+	xmlwriter_start_element($xw, 'FG_MIN');
+	xmlwriter_text($xw, sprintf("%.6f",floatval($row['fg_min'])));
+	xmlwriter_end_element($xw);
+
+	xmlwriter_start_element($xw, 'FG_MAX');
+	xmlwriter_text($xw, sprintf("%.6f",floatval($row['fg_max'])));
+	xmlwriter_end_element($xw);
+
+	xmlwriter_start_element($xw, 'IBU_MIN');
+	xmlwriter_text($xw, sprintf("%.3f",floatval($row['ibu_min'])));
+	xmlwriter_end_element($xw);
+
+	xmlwriter_start_element($xw, 'IBU_MAX');
+	xmlwriter_text($xw, sprintf("%.3f",floatval($row['ibu_max'])));
+	xmlwriter_end_element($xw);
+
+	xmlwriter_start_element($xw, 'COLOR_MIN');
+	xmlwriter_text($xw, sprintf("%.3f",ebc_to_srm(floatval($row['color_min']))));
+	xmlwriter_end_element($xw);
+
+	xmlwriter_start_element($xw, 'COLOR_MAX');
+	xmlwriter_text($xw, sprintf("%.3f",ebc_to_srm(floatval($row['color_max']))));
+	xmlwriter_end_element($xw);
+
+	xmlwriter_start_element($xw, 'CARB_MIN');
+	xmlwriter_text($xw, sprintf("%.4f",floatval($row['carb_min'])));
+	xmlwriter_end_element($xw);
+
+	xmlwriter_start_element($xw, 'CARB_MAX');
+	xmlwriter_text($xw, sprintf("%.4f",floatval($row['carb_max'])));
+	xmlwriter_end_element($xw);
+
+	xmlwriter_start_element($xw, 'ABV_MIN');
+	xmlwriter_text($xw, sprintf("%.4f",floatval($row['abv_min'])));
+	xmlwriter_end_element($xw);
+
+	xmlwriter_start_element($xw, 'ABV_MAX');
+	xmlwriter_text($xw, sprintf("%.4f",floatval($row['abv_max'])));
+	xmlwriter_end_element($xw);
+
+	if (strlen($row['notes'])) {
+		xmlwriter_start_element($xw, 'NOTES');
+        	xmlwriter_text($xw, $row['notes']);
+        	xmlwriter_end_element($xw);
+	}
+
+        if (strlen($row['profile'])) {
+                xmlwriter_start_element($xw, 'PROFILE');
+                xmlwriter_text($xw, $row['profile']);
+                xmlwriter_end_element($xw);
+        }
+
+        if (strlen($row['ingredients'])) {
+                xmlwriter_start_element($xw, 'INGREDIENTS');
+                xmlwriter_text($xw, $row['ingredients']);
+                xmlwriter_end_element($xw);
+        }
+
+        if (strlen($row['examples'])) {
+                xmlwriter_start_element($xw, 'EXAMPLES');
+                xmlwriter_text($xw, $row['examples']);
+                xmlwriter_end_element($xw);
+        }
+
+	xmlwriter_end_element($xw);	// STYLE
+}
+xmlwriter_end_element($xw);	// STYLES
+
+$beerxml = xmlwriter_output_memory($xw);
+
+Header('Content-type: text/xml');
+header('Content-Disposition: attachment; filename="styles.xml"');
+header('Content-Transfer-Encoding: binary');
+header('Expires: 0');
+header('Pragma: no-cache');
+header('Content-Length: '.strlen($beerxml));
+exit($beerxml);
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/www/export_suppliers.php	Fri May 01 16:37:31 2020 +0200
@@ -0,0 +1,103 @@
+<?php
+require_once($_SERVER['DOCUMENT_ROOT'].'/config.php');
+require_once($_SERVER['DOCUMENT_ROOT'].'/includes/formulas.php');
+
+
+$link = mysqli_connect(DBASE_HOST,DBASE_USER,DBASE_PASS,DBASE_NAME);
+if (! $link) {
+	die('Connect Error (' . mysqli_connect_errno() . ') ' . mysqli_connect_error());
+}
+if (! mysqli_set_charset($link, "utf8" )) {
+	echo "error";
+	return 1;
+}
+
+$result = mysqli_query($link, "SELECT * FROM inventory_suppliers ORDER BY name");
+$row = mysqli_fetch_array($result);
+
+
+
+/*
+ * Create beerxml output
+ */
+$xw = xmlwriter_open_memory();
+xmlwriter_set_indent($xw, 1);
+$res = xmlwriter_set_indent_string($xw, ' ');
+
+xmlwriter_start_document($xw, '1.0', 'UTF-8');
+
+
+xmlwriter_start_element($xw, 'SUPPLIERS');
+while ($row = mysqli_fetch_array($result)) {
+
+	xmlwriter_start_element($xw, 'SUPPLIER');
+
+	xmlwriter_start_element($xw, 'VERSION');
+	xmlwriter_text($xw, '1');
+	xmlwriter_end_element($xw);
+
+	xmlwriter_start_element($xw, 'NAME');
+	xmlwriter_text($xw, $row['name']);
+	xmlwriter_end_element($xw);
+
+	if (strlen($row['notes'])) {
+		xmlwriter_start_element($xw, 'NOTES');
+		xmlwriter_text($xw, $row['notes']);
+		xmlwriter_end_element($xw);
+	}
+
+        if (strlen($row['address'])) {
+                xmlwriter_start_element($xw, 'ADDRESS');
+                xmlwriter_text($xw, $row['address']);
+                xmlwriter_end_element($xw);
+        }
+
+        if (strlen($row['city'])) {
+                xmlwriter_start_element($xw, 'CITY');
+                xmlwriter_text($xw, $row['city']);
+                xmlwriter_end_element($xw);
+        }
+
+        if (strlen($row['zip'])) {
+                xmlwriter_start_element($xw, 'ZIP');
+                xmlwriter_text($xw, $row['zip']);
+                xmlwriter_end_element($xw);
+        }
+
+        if (strlen($row['country'])) {
+                xmlwriter_start_element($xw, 'COUNTRY');
+                xmlwriter_text($xw, $row['country']);
+                xmlwriter_end_element($xw);
+        }
+
+        if (strlen($row['website'])) {
+                xmlwriter_start_element($xw, 'WEBSITE');
+                xmlwriter_text($xw, $row['website']);
+                xmlwriter_end_element($xw);
+        }
+
+        if (strlen($row['email'])) {
+                xmlwriter_start_element($xw, 'EMAIL');
+                xmlwriter_text($xw, $row['email']);
+                xmlwriter_end_element($xw);
+        }
+
+        if (strlen($row['phone'])) {
+                xmlwriter_start_element($xw, 'PHONE');
+                xmlwriter_text($xw, $row['phone']);
+                xmlwriter_end_element($xw);
+        }
+
+	xmlwriter_end_element($xw);	// SUPPLIER
+}
+xmlwriter_end_element($xw);	// SUPPLIERS
+
+$beerxml = xmlwriter_output_memory($xw);
+
+Header('Content-type: text/xml');
+header('Content-Disposition: attachment; filename="suppliers.xml"');
+header('Content-Transfer-Encoding: binary');
+header('Expires: 0');
+header('Pragma: no-cache');
+header('Content-Length: '.strlen($beerxml));
+exit($beerxml);
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/www/export_waters.php	Fri May 01 16:37:31 2020 +0200
@@ -0,0 +1,99 @@
+<?php
+require_once($_SERVER['DOCUMENT_ROOT'].'/config.php');
+require_once($_SERVER['DOCUMENT_ROOT'].'/includes/formulas.php');
+
+
+$link = mysqli_connect(DBASE_HOST,DBASE_USER,DBASE_PASS,DBASE_NAME);
+if (! $link) {
+	die('Connect Error (' . mysqli_connect_errno() . ') ' . mysqli_connect_error());
+}
+if (! mysqli_set_charset($link, "utf8" )) {
+	echo "error";
+	return 1;
+}
+
+$result = mysqli_query($link, "SELECT * FROM inventory_waters ORDER BY name");
+$row = mysqli_fetch_array($result);
+
+
+
+/*
+ * Create beerxml output
+ */
+$xw = xmlwriter_open_memory();
+xmlwriter_set_indent($xw, 1);
+$res = xmlwriter_set_indent_string($xw, ' ');
+
+xmlwriter_start_document($xw, '1.0', 'UTF-8');
+
+
+xmlwriter_start_element($xw, 'WATERS');
+while ($row = mysqli_fetch_array($result)) {
+
+	xmlwriter_start_element($xw, 'WATER');
+
+	xmlwriter_start_element($xw, 'VERSION');
+	xmlwriter_text($xw, '1');
+	xmlwriter_end_element($xw);
+
+	xmlwriter_start_element($xw, 'NAME');
+	xmlwriter_text($xw, $row['name']);
+	xmlwriter_end_element($xw);
+
+	if (floatval($row['cost']) > 0) {
+                xmlwriter_start_element($xw, 'COST');
+                xmlwriter_text($xw, sprintf("%.5f",floatval($row['cost'])));
+                xmlwriter_end_element($xw);
+        }
+
+        if (strlen($row['notes'])) {
+                xmlwriter_start_element($xw, 'NOTES');
+                xmlwriter_text($xw, $row['notes']);
+                xmlwriter_end_element($xw);
+        }
+
+	xmlwriter_start_element($xw, 'CALCIUM');
+        xmlwriter_text($xw, sprintf("%.4f",floatval($row['calcium'])));
+        xmlwriter_end_element($xw);
+
+        xmlwriter_start_element($xw, 'BICARBONATE');
+        xmlwriter_text($xw, sprintf("%.4f",floatval($row['bicarbonate'])));
+        xmlwriter_end_element($xw);
+
+        xmlwriter_start_element($xw, 'SULFATE');
+        xmlwriter_text($xw, sprintf("%.4f",floatval($row['sulfate'])));
+        xmlwriter_end_element($xw);
+
+        xmlwriter_start_element($xw, 'CHLORIDE');
+        xmlwriter_text($xw, sprintf("%.4f",floatval($row['chloride'])));
+        xmlwriter_end_element($xw);
+
+        xmlwriter_start_element($xw, 'SODIUM');
+        xmlwriter_text($xw, sprintf("%.4f",floatval($row['sodium'])));
+        xmlwriter_end_element($xw);
+
+        xmlwriter_start_element($xw, 'MAGNESIUM');
+        xmlwriter_text($xw, sprintf("%.4f",floatval($row['magnesium'])));
+        xmlwriter_end_element($xw);
+
+        xmlwriter_start_element($xw, 'TOTAL_ALKALINITY');
+        xmlwriter_text($xw, sprintf("%.4f",floatval($row['total_alkalinity'])));
+        xmlwriter_end_element($xw);
+
+        xmlwriter_start_element($xw, 'PH');
+        xmlwriter_text($xw, sprintf("%.5f",floatval($row['ph'])));
+        xmlwriter_end_element($xw);
+
+	xmlwriter_end_element($xw);	// WATER
+}
+xmlwriter_end_element($xw);	// WATERS
+
+$beerxml = xmlwriter_output_memory($xw);
+
+Header('Content-type: text/xml');
+header('Content-Disposition: attachment; filename="waters.xml"');
+header('Content-Transfer-Encoding: binary');
+header('Expires: 0');
+header('Pragma: no-cache');
+header('Content-Length: '.strlen($beerxml));
+exit($beerxml);
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/www/export_yeasts.php	Fri May 01 16:37:31 2020 +0200
@@ -0,0 +1,75 @@
+<?php
+require_once($_SERVER['DOCUMENT_ROOT'].'/config.php');
+require_once($_SERVER['DOCUMENT_ROOT'].'/includes/formulas.php');
+
+
+$link = mysqli_connect(DBASE_HOST,DBASE_USER,DBASE_PASS,DBASE_NAME);
+if (! $link) {
+	die('Connect Error (' . mysqli_connect_errno() . ') ' . mysqli_connect_error());
+}
+if (! mysqli_set_charset($link, "utf8" )) {
+	echo "error";
+	return 1;
+}
+
+$result = mysqli_query($link, "SELECT * FROM inventory_yeasts ORDER BY laboratory,product_id,name");
+$row = mysqli_fetch_array($result);
+
+function field($x, $field, $value) {
+        xmlwriter_start_element($x, $field);
+        xmlwriter_text($x, $value);
+        xmlwriter_end_element($x);
+}
+
+$yeasttype = array( 'Lager', 'Ale', 'Wheat', 'Wine', 'Champagne', 'Other', 'Other', 'Other', 'Other', 'Other' );
+$yeastform = array( 'Liquid', 'Dry', 'Slant', 'Culture', 'Frozen', 'Bottle', 'Dry' );
+$yeastflocculation = array( 'Low', 'Medium', 'High', 'Very high' );
+
+
+/*
+ * Create beerxml output
+ */
+$xw = xmlwriter_open_memory();
+xmlwriter_set_indent($xw, 1);
+$res = xmlwriter_set_indent_string($xw, ' ');
+
+xmlwriter_start_document($xw, '1.0', 'UTF-8');
+
+
+xmlwriter_start_element($xw, 'YEASTS');
+while ($row = mysqli_fetch_array($result)) {
+
+	xmlwriter_start_element($xw, 'YEAST');
+
+	field($xw, 'VERSION', '1');
+	field($xw, 'NAME', $row['name']);
+	field($xw, 'TYPE', $yeasttype[$row['type']]);
+	field($xw, 'FORM', $yeastform[$row['form']]);
+	field($xw, 'AMOUNT_IS_WEIGHT', ($row['form'] == '1' || $row['form'] == '6') ? 'TRUE':'FALSE');
+	field($xw, 'LABORATORY', $row['laboratory']);
+	if (strlen($row['product_id']))
+		field($xw, 'PRODUCT_ID', $row['product_id']);
+	field($xw, 'MIN_TEMPERATURE', sprintf("%.4f",floatval($row['min_temperature'])));
+	field($xw, 'MAX_TEMPERATURE', sprintf("%.4f",floatval($row['max_temperature'])));
+	field($xw, 'ATTENUATION', sprintf("%.4f",floatval($row['attenuation'])));
+	field($xw, 'ADD_TO_SECONDARY', ($row['use'] == 0) ? 'FALSE':'TRUE');
+	field($xw, 'FLOCCULATION', $yeastflocculation[$row['flocculation']]);
+	field($xw, 'MAX_REUSE', $row['max_reuse']);
+	if (floatval($row['cost']) > 0)
+		field($xw, 'COST', sprintf("%.5f",floatval($row['cost'])));
+	if (strlen($row['notes']))
+		field($xw, 'NOTES', $row['notes']);
+
+	xmlwriter_end_element($xw);	// YEAST
+}
+xmlwriter_end_element($xw);	// YEASTS
+
+$beerxml = xmlwriter_output_memory($xw);
+
+Header('Content-type: text/xml');
+header('Content-Disposition: attachment; filename="yeasts.xml"');
+header('Content-Transfer-Encoding: binary');
+header('Expires: 0');
+header('Pragma: no-cache');
+header('Content-Length: '.strlen($beerxml));
+exit($beerxml);
--- a/www/getco2pressurelog.php	Fri Oct 18 13:20:35 2019 +0200
+++ b/www/getco2pressurelog.php	Fri May 01 16:37:31 2020 +0200
@@ -5,15 +5,21 @@
 if (isset($_GET["code"]))
 	$code = $_GET["code"] . ' ' . $_GET["name"];
 else
-	$code = "TB0015 Winterbier-2";
+	$code = "CB0080 Op stoom";
 
 $filename = 'log/co2pressure/' . $code . '.log';
+if (! file_exists($filename)) {
+	header("Content-type: application/json");
+	echo '{}';
+	exit;
+}
+
+
 /*
  * From Stackoverflow, the fastest way to count the lines in a file.
  */
 $file = new \SplFileObject($filename, 'r');
 $file->seek(PHP_INT_MAX);
-// $file->key() = lines in the file.
 
 define ('MAX_INTERVALS', 10);
 $GRAPH_INTERVAL = array ( 0, 1, 5, 15, 30, 60, 120, 240, 480, 720 );
@@ -27,7 +33,6 @@
 if ($graphstep > MAX_INTERVALS)
 	$graphstep = MAX_INTERVALS;
 
-//echo $code . '.log lines=' . $file->key() . ' interval=' . $GRAPH_INTERVAL[$graphstep] . ' graphstep=' . $graphstep . PHP_EOL;
 
 /*
  * 2014-11-15 18:39:12,TEMPERATURE,PRESSURE,UUID
@@ -58,34 +63,13 @@
 		    (($graphstep == 7) && (substr($buffer, 14, 2) == '00') && (($hr % 4) == 0)) ||
 		    (($graphstep == 8) && (substr($buffer, 14, 2) == '00') && (($hr % 8) == 0)) ||
 		    (($graphstep == 9) && (substr($buffer, 14, 2) == '00') && (($hr % 12) == 0))) {
-//				echo $hr . ' ' . $row[1] . ' ' . $buffer;
 			$lines++;
-
-//			$heat_used = $cool_used = 0;
-//			if ($row[10] && ($row[10] != "NA") && ($heater_l > 0)) {
-//				$heat_used = round((intval($row[10]) - $heater_l) * 100 / ($GRAPH_INTERVAL[$graphstep] * 60));
-//			}
-//			if ($row[12] && ($row[12] != "NA") && ($cooler_l > 0)) {
-//				$cool_used = round((intval($row[12]) - $cooler_l) * 100 / ($GRAPH_INTERVAL[$graphstep] * 60));
-//			}
-
-
-//				echo $GRAPH_INTERVAL[$graphstep] . ' ' . $heat_used . ' ' . $cool_used . PHP_EOL;
-
-//			if (($heat_used <= 100) && ($cool_used <= 100)) {
 			$logs[] = array(
 				'date' => $row[0],
 				'temperature' => $row[1],
 				'pressure' => $row[2]
 			);
-//			}
-
-//				if ($row[10] && ($row[10] != "NA"))
-//					$heater_l = intval($row[10]);
-//				if ($row[12] && ($row[12] != "NA"))
-//					$cooler_l = intval($row[12]);
 		}
-
 	}
 	if (!feof($handle)) {
 		echo "Error: unexpected fgets() fail\n";
@@ -94,4 +78,3 @@
 }
 header("Content-type: application/json");
 echo json_encode($logs);
-//echo $lines . ' lines' . PHP_EOL;
--- a/www/getfermenter.php	Fri Oct 18 13:20:35 2019 +0200
+++ b/www/getfermenter.php	Fri May 01 16:37:31 2020 +0200
@@ -12,10 +12,5 @@
 $query = "SELECT * FROM mon_fermenters WHERE uuid=".$uuid."";
 $result = $mysqli->query($query);
 $resultArray = $result->fetch_array(MYSQLI_ASSOC);
-if ($resultArray['online'] == 'Y') {
-  $resultArray['online'] = 1;
-} else {
-  $resultArray['online'] = 0;
-}
 header("Content-type: application/json");
 echo json_encode($resultArray);
--- a/www/getfermentlog.php	Fri Oct 18 13:20:35 2019 +0200
+++ b/www/getfermentlog.php	Fri May 01 16:37:31 2020 +0200
@@ -8,12 +8,18 @@
 	$code = "TB0015 Winterbier-2";
 
 $filename = 'log/fermentation/' . $code . '.log';
+if (! file_exists($filename)) {
+        header("Content-type: application/json");
+        echo '{}';
+        exit;
+}
+
+
 /*
  * From Stackoverflow, the fastest way to count the lines in a file.
  */
 $file = new \SplFileObject($filename, 'r');
 $file->seek(PHP_INT_MAX);
-// $file->key() = lines in the file.
 
 define ('MAX_INTERVALS', 10);
 $GRAPH_INTERVAL = array ( 0, 1, 5, 15, 30, 60, 120, 240, 480, 720 );
@@ -27,8 +33,6 @@
 if ($graphstep > MAX_INTERVALS)
 	$graphstep = MAX_INTERVALS;
 
-//echo $code . '.log lines=' . $file->key() . ' interval=' . $GRAPH_INTERVAL[$graphstep] . ' graphstep=' . $graphstep . PHP_EOL;
-
 /*
  * 2014-11-15 18:39,BEER,PRIMARY,20.312,19.750,-1.500,20.5,18.6,18.8,35,12345,0,67890,Whatsup
  *          |         |     |      |      |      |      |    |    |   |   |   |   |      |
@@ -115,4 +119,3 @@
 }
 header("Content-type: application/json");
 echo json_encode($logs);
-//echo $lines . ' lines' . PHP_EOL;
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/www/getispindel.php	Fri May 01 16:37:31 2020 +0200
@@ -0,0 +1,16 @@
+<?php
+
+require_once('config.php');
+
+if (isset($_GET["uuid"]))
+	    $uuid = $_GET["uuid"];
+else
+	    $uuid = "'c0ffeeee-cafe-dead-bee0-2af236d50dc9'";
+
+
+$mysqli = new mysqli(DBASE_HOST,DBASE_USER,DBASE_PASS,DBASE_NAME);
+$query = "SELECT * FROM mon_ispindels WHERE uuid=".$uuid."";
+$result = $mysqli->query($query);
+$resultArray = $result->fetch_array(MYSQLI_ASSOC);
+header("Content-type: application/json");
+echo json_encode($resultArray);
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/www/getispindellog.php	Fri May 01 16:37:31 2020 +0200
@@ -0,0 +1,50 @@
+<?php
+
+require_once('config.php');
+
+if (isset($_GET["code"]))
+	$code = $_GET["code"] . ' ' . $_GET["name"];
+else
+	$code = "CB0081 Keuls";
+
+$filename = 'log/ispindel/' . $code . '.log';
+if (! file_exists($filename)) {
+        header("Content-type: application/json");
+        echo '{}';
+        exit;
+}
+
+
+/*
+ * 2014-11-15 18:39:12,TEMPERATURE,PLATO,SG,BATTERY,ANGLE,INVERVAL,UUID
+ *          |              |         |    |    |
+ * datetime +              |         |    |    |
+ * temperature ------------+         |    |    |
+ * density plato --------------------+    |    |
+ * density sg ----------------------------+    |
+ * battery ------------------------------------+
+ */
+$handle = @fopen($filename, "r");
+if ($handle) {
+	$lines = 0;
+	while (($buffer = fgets($handle, 4096)) !== false) {
+
+		$buffer = preg_replace( "/\r|\n/", "", $buffer);
+		$row = explode(",", $buffer);
+		$lines++;
+
+		$logs[] = array(
+			'date' => $row[0],
+			'temperature' => $row[1],
+			'plato' => $row[2],
+			'sg' => $row[3],
+			'battery' => $row[4]
+		);
+	}
+	if (!feof($handle)) {
+		echo "Error: unexpected fgets() fail\n";
+	}
+	fclose($handle);
+}
+header("Content-type: application/json");
+echo json_encode($logs);
--- a/www/getnode.php	Fri Oct 18 13:20:35 2019 +0200
+++ b/www/getnode.php	Fri May 01 16:37:31 2020 +0200
@@ -13,10 +13,5 @@
 $result = $mysqli->query($query);
 //Copy result into a associative array
 $resultArray = $result->fetch_array(MYSQLI_ASSOC);
-if ($resultArray['online'] == 'Y') {
-    $resultArray['online'] = 1;
-} else {
-    $resultArray['online'] = 0;
-}
 header("Content-type: application/json");
 echo json_encode($resultArray);
--- a/www/getyeastsources.php	Fri Oct 18 13:20:35 2019 +0200
+++ b/www/getyeastsources.php	Fri May 01 16:37:31 2020 +0200
@@ -23,7 +23,14 @@
 		'cells' => $row['cells'],
 		'inventory' => $row['inventory'],
 		'cost' => $row['cost'],
-		'tolerance' => $row['tolerance']
+		'tolerance' => $row['tolerance'],
+		'sta1' => $row['sta1'],
+		'bacteria' => $row['bacteria'],
+		'harvest_top' => $row['harvest_top'],
+		'harvest_time' => $row['harvest_time'],
+		'pitch_temperature' => $row['pitch_temperature'],
+		'pofpos' => $row['pofpos'],
+		'zymocide' => $row['zymocide']
 	);
 }
 header("Content-type: application/json");
Binary file www/images/science.png has changed
--- a/www/includes/constants.php	Fri Oct 18 13:20:35 2019 +0200
+++ b/www/includes/constants.php	Fri May 01 16:37:31 2020 +0200
@@ -6,6 +6,7 @@
 $ibumethod = array( 'Tinseth', 'Rager', 'Daniels' );
 $coolingtype = array( '-', 'Dompelkoeler', 'Tegenstroomkoeler', 'Au bain marie', 'Laten afkoelen' );
 $aerationtype = array( 'Geen', 'Lucht', 'Zuurstof' );
+$splitat = array( 'Niet', 'Na maischen', 'Na koken', 'Na koelen', 'Na hoofdgisting', 'Na nagisting', 'Na lageren' );
 
 $added = array( 'Maischen', 'Koken', 'Vergisten', 'Nagisten/lageren', 'Bottelen', 'Fust' );
 $fermentabletype = array( 'Mout', 'Suiker', 'Vloeibaar extract', 'Droog extract', 'Ongemout graan' );
@@ -23,5 +24,7 @@
 $miscuse = array( 'Starter', 'Maischen', 'Koken', 'Hoofdvergisting', 'Nagisting/lagering', 'Bottelen' );
 
 $mashtype = array( 'Infusie', 'Verwarming', 'Decoctie' );
+$acidtype = array( 'Melkzuur', 'Zoutzuur', 'Fosforzuur', 'Zwavelzuur' );
+
 
 ?>
--- a/www/includes/db_divides.php	Fri Oct 18 13:20:35 2019 +0200
+++ b/www/includes/db_divides.php	Fri May 01 16:37:31 2020 +0200
@@ -4,75 +4,418 @@
 require($_SERVER['DOCUMENT_ROOT']."/version.php");
 
 #Connect to the database
-$connect = mysqli_connect(DBASE_HOST, DBASE_USER, DBASE_PASS, DBASE_NAME);
-if (! $connect) {
+$link = mysqli_connect(DBASE_HOST, DBASE_USER, DBASE_PASS, DBASE_NAME);
+if (! $link) {
 	die('Connect Error (' . mysqli_connect_errno() . ') ' . mysqli_connect_error());
 }
-mysqli_set_charset($connect, "utf8" );
+mysqli_set_charset($link, "utf8" );
 
+$escapers = array("\\", "/", "\"", "\n", "\r", "\t", "\x08", "\x0c");
+$replacements = array("\\\\", "\\/", "\\\"", "\\n", "\\r", "\\t", "\\f", "\\b");
+$rescapers = array("'");
+$rreplacements = array("\\'");
+$disallowed = array('visibleindex','uniqueid','boundindex','uid','h_weight','m_weight');
 
-if (isset($_POST['insert']) || isset($_POST['update'])) {
-	if (isset($_POST['insert'])) {
-		$sql  = "INSERT INTO `divides` SET ";
-	}
-	if (isset($_POST['update'])) {
-		$sql  = "UPDATE `divides` SET ";
+/*
+ * Server side split batch. Parameters:
+ * record = original record.
+ * divide_type = divide moment.
+ * divide parts = number of divisions
+ * divide_data = array with { size, factor, part, name, code } where index 0 is original
+ *
+ * generate the new records and modify the original record.
+ * rollback if something goes wrong.
+ * return ok or error
+ */
+
+if (isset($_POST['record']) && isset($_POST['divide_type']) && isset($_POST['divide_parts']) && isset($_POST['divide_data'])) {
+
+    $rc = 0;
+    $record = $_POST['record'];
+    $divide_parts = $_POST['divide_parts'];
+    $divide_type = $_POST['divide_type'];
+    $divide_data = array_reverse($_POST['divide_data'], true); // reverse the array so the master record is last.
+
+    syslog(LOG_NOTICE, "db_divide: record " . $record . "  divide_type " . $divide_type . "  parts " . $divide_parts);
+
+    foreach ($divide_data as $index => &$split) {
+	syslog(LOG_NOTICE, "db_divide: index " . $index);
+
+	foreach ($split as $key => &$value) {
+	    syslog(LOG_NOTICE, "db_divide: index " . $index . " key " . $key . " value " . $value);
 	}
 
-	$sql .= "divide_from='" . mysqli_real_escape_string($connect, $_POST['divide_from']);
-	$sql .= "', divide_type='" . $_POST['divide_type'];
-	$sql .= "', divide_size='" . $_POST['divide_size'];
-	$sql .= "', divide_part='" . $_POST['divide_part'];
-	$sql .= "', name='" . mysqli_real_escape_string($connect, $_POST['name']);
-	$sql .= "', code='" . mysqli_real_escape_string($connect, $_POST['code']);
-	if (isset($_POST['insert'])) {
-		$sql .= "';";
-	}
-	if (isset($_POST['update'])) {
-		$sql .= "' WHERE record='" . $_POST['record'] . "';";
+	$result = mysqli_query($link, "SELECT * FROM products WHERE record='" . $record . "'");
+	if (! $result) {
+            syslog(LOG_NOTICE, "db_divide: result: ".mysqli_error($link));
 	}
-	syslog(LOG_NOTICE, $sql);
+	$row = mysqli_fetch_array($result);
+	$factor = floatval($split['factor']);
 
-	$result = mysqli_query($connect, $sql);
-	if (! $result) {
-		syslog(LOG_NOTICE, "db_divides: ".$sql." result: ".mysqli_error($connect));
-	} else {
-		if (isset($_POST['update'])) {
-			syslog(LOG_NOTICE, "db_divides: updated record ".$_POST['record']);
-		} else {
-			$lastid = mysqli_insert_id($connect);
-			syslog(LOG_NOTICE, "db_divides: inserted record ".$lastid);
-		}
-	}
-	echo $result;
+	if ($index == 0) {
+	    /*
+	     * Update the main record
+	     */
+	    $sql = "UPDATE `products` SET ";
+            $sql .=    "brew_sparge_volume='" . sprintf("%.1f", $row['brew_sparge_volume'] * $factor);
+            $sql .= "', brew_sparge_est='" . sprintf("%.1f", $row['brew_sparge_est'] * $factor);
+            $sql .= "', brew_preboil_volume='" . sprintf("%.1f", $row['brew_preboil_volume'] * $factor);
+            $sql .= "', brew_aboil_volume='" . sprintf("%.1f", $row['brew_aboil_volume'] * $factor);
+            $sql .= "', brew_fermenter_volume='" . sprintf("%.1f", $row['brew_fermenter_volume'] * $factor);
+            $sql .= "', brew_fermenter_extrawater='" . sprintf("%.1f", $row['brew_fermenter_extrawater'] * $factor);
+            $sql .= "', brew_fermenter_tcloss='" . sprintf("%.1f", $row['brew_fermenter_tcloss'] * $factor);
+            $sql .= "', package_volume='" . sprintf("%.1f", $row['package_volume'] * $factor);
+            $sql .= "', package_infuse_amount='" . sprintf("%.1f", $row['package_infuse_amount'] * $factor);
+            $sql .= "', bottle_amount='" . sprintf("%.1f", $row['bottle_amount'] * $factor);
+            $sql .= "', bottle_priming_water='" . sprintf("%.3f", $row['bottle_priming_water'] * $factor);
+            $sql .= "', keg_amount='" . sprintf("%.1f", $row['keg_amount'] * $factor);
+            $sql .= "', keg_priming_water='" . sprintf("%.3f", $row['keg_priming_water'] * $factor);
+            $sql .= "', batch_size='" . sprintf("%.2f", $row['batch_size'] * $factor);
+            $sql .= "', boil_size='" . sprintf("%.2f", $row['boil_size'] * $factor);
+            $sql .= "', sparge_volume='" . sprintf("%.1f", $row['sparge_volume'] * $factor);
+            $sql .= "', sparge_acid_amount='" . sprintf("%.5f", $row['sparge_acid_amount'] * $factor);
+            $sql .= "', w1_amount='" . sprintf("%.2f", $row['w1_amount'] * $factor);
+            $sql .= "', w2_amount='" . sprintf("%.2f", $row['w2_amount'] * $factor);
+            $sql .= "', wg_amount='" . sprintf("%.2f", $row['wg_amount'] * $factor);
+            $sql .= "', prop1_volume='" . sprintf("%.3f", $row['prop1_volume'] * $factor);
+            $sql .= "', prop2_volume='" . sprintf("%.3f", $row['prop2_volume'] * $factor);
+            $sql .= "', prop3_volume='" . sprintf("%.3f", $row['prop3_volume'] * $factor);
+            $sql .= "', prop4_volume='" . sprintf("%.3f", $row['prop4_volume'] * $factor);
+            $sql .= "', divide_type='" . $divide_type;
+            $sql .= "', divide_parts='" . $divide_parts;
+            $sql .= "', divide_part='" . $index;
+            $sql .= "', divide_size='" . floatval($split['size']);
+            $sql .= "', divide_factor='". $factor;
+	    syslog(LOG_NOTICE, "db_divide: index " . $index . " " . $sql);
 
-} else if (isset($_POST['delete'])) {
-	// DELETE COMMAND
-	$sql = "DELETE FROM `divides` WHERE record='".$_POST['record']."';";
-	$result = mysqli_query($connect, $sql);
-	if (! $result) {
-		syslog(LOG_NOTICE, "db_divides: ".$sql." result: ".mysqli_error($connect));
 	} else {
-		syslog(LOG_NOTICE, "db_divides: deleted record ".$_POST['record']);
+	    /*
+	     * Insert splitted batches
+	     */
+	    $uuid = str_replace("\n", "", file_get_contents('/proc/sys/kernel/random/uuid'));
+	    $sql  = "INSERT INTO `products` SET ";
+	    $sql .= "name='" . mysqli_real_escape_string($link, $split['name']);
+	    $sql .= "', uuid='" . $uuid;
+	    $sql .= "', code='" . mysqli_real_escape_string($link, $split['code']);
+	    $sql .= "', birth='" . $row['birth'];
+	    $sql .= "', stage='" . $row['stage'];
+	    $sql .= "', notes='" . mysqli_real_escape_string($link, $row['notes']);
+	    $sql .= "', log_brew='" . $row['log_brew'];
+	    $sql .= "', log_fermentation='" . $row['log_fermentation'];
+	    $sql .= "', log_ispindel='" . $row['log_ispindel'];
+	    $sql .= "', log_co2pressure='" . $row['log_co2pressure'];
+	    $sql .= "', inventory_reduced='" . $row['inventory_reduced'];;
+	    $sql .= "', locked='" . $row['locked'];;
+	    // Equipment
+	    $sql .= "', eq_name='" . mysqli_real_escape_string($link, $row['eq_name']);
+	    $sql .= "', eq_boil_size='" . $row['eq_boil_size'];
+	    $sql .= "', eq_batch_size='" . $row['eq_batch_size'];
+	    $sql .= "', eq_tun_volume='" . $row['eq_tun_volume'];
+	    $sql .= "', eq_tun_weight='" . $row['eq_tun_weight'];
+	    $sql .= "', eq_tun_specific_heat='" . $row['eq_tun_specific_heat'];
+	    $sql .= "', eq_tun_material='" . $row['eq_tun_material'];
+	    $sql .= "', eq_tun_height='" . $row['eq_tun_height'];
+	    $sql .= "', eq_top_up_water='" . $row['eq_top_up_water'];
+	    $sql .= "', eq_trub_chiller_loss='" . $row['eq_trub_chiller_loss'];
+	    $sql .= "', eq_evap_rate='" . $row['eq_evap_rate'];
+	    $sql .= "', eq_boil_time='" . $row['eq_boil_time'];
+	    $sql .= "', eq_calc_boil_volume='" . $row['eq_calc_boil_volume'];
+	    $sql .= "', eq_top_up_kettle='" . $row['eq_top_up_kettle'];
+	    $sql .= "', eq_hop_utilization='" . $row['eq_hop_utilization'];
+	    $sql .= "', eq_notes='" . mysqli_real_escape_string($link, $row['eq_notes']);
+	    $sql .= "', eq_lauter_volume='" . $row['eq_lauter_volume'];
+	    $sql .= "', eq_lauter_height='" . $row['eq_lauter_height'];
+	    $sql .= "', eq_lauter_deadspace='" . $row['eq_lauter_deadspace'];
+	    $sql .= "', eq_kettle_volume='" . $row['eq_kettle_volume'];
+	    $sql .= "', eq_kettle_height='" . $row['eq_kettle_height'];
+	    $sql .= "', eq_mash_volume='" . $row['eq_mash_volume'];
+	    $sql .= "', eq_mash_max='" . $row['eq_mash_max'];
+	    $sql .= "', eq_efficiency='" . $row['eq_efficiency'];
+	    // brewdate
+	    if (strlen($row['brew_date_start']))
+	    	$sql .= "', brew_date_start='" . $row['brew_date_start'] . "'";
+	    else
+		$sql .= "', brew_date_start=NULL";
+            $sql .=  ", brew_mash_ph='" . $row['brew_mash_ph'];
+            $sql .= "', brew_mash_sg='" . $row['brew_mash_sg'];
+	    $sql .= "', brew_mash_efficiency='" . $row['brew_mash_efficiency'];
+	    $sql .= "', brew_sparge_temperature='" . $row['brew_sparge_temperature'];
+	    $sql .= "', brew_sparge_volume='" . sprintf("%.1f", $row['brew_sparge_volume'] * $factor);
+            $sql .= "', brew_sparge_est='" . sprintf("%.1f", $row['brew_sparge_est'] * $factor);
+            $sql .= "', brew_sparge_ph='" . $row['brew_sparge_ph'];
+            $sql .= "', brew_preboil_volume='" . sprintf("%.1f", $row['brew_preboil_volume'] * $factor);
+            $sql .= "', brew_preboil_sg='" . $row['brew_preboil_sg'];
+            $sql .= "', brew_preboil_ph='" . $row['brew_preboil_ph'];
+	    $sql .= "', brew_preboil_efficiency='" . $row['brew_preboil_efficiency'];
+            $sql .= "', brew_aboil_volume='" . sprintf("%.1f", $row['brew_aboil_volume'] * $factor);
+            $sql .= "', brew_aboil_sg='" . $row['brew_aboil_sg'];
+            $sql .= "', brew_aboil_ph='" . $row['brew_aboil_ph'];
+            $sql .= "', brew_aboil_efficiency='" . $row['brew_aboil_efficiency'];
+	    $sql .= "', brew_cooling_method='" . $row['brew_cooling_method'];
+            $sql .= "', brew_cooling_time='" . $row['brew_cooling_time'];
+	    $sql .= "', brew_cooling_to='" . $row['brew_cooling_to'];
+	    $sql .= "', brew_whirlpool9='" . $row['brew_whirlpool9'];
+	    $sql .= "', brew_whirlpool7='" . $row['brew_whirlpool7'];
+	    $sql .= "', brew_whirlpool6='" . $row['brew_whirlpool6'];
+	    $sql .= "', brew_whirlpool2='" . $row['brew_whirlpool2'];
+	    $sql .= "', brew_aeration_time='" . $row['brew_aeration_time'];
+	    $sql .= "', brew_aeration_speed='" . $row['brew_aeration_speed'];
+	    $sql .= "', brew_aeration_type='" . $row['brew_aeration_type'];
+	    $sql .= "', brew_fermenter_volume='" . sprintf("%.1f", $row['brew_fermenter_volume'] * $factor);
+	    $sql .= "', brew_fermenter_extrawater='" . sprintf("%.1f", $row['brew_fermenter_extrawater'] * $factor);
+	    $sql .= "', brew_fermenter_tcloss='" . sprintf("%.1f", $row['brew_fermenter_tcloss'] * $factor);
+            $sql .= "', brew_fermenter_sg='" . $row['brew_fermenter_sg'];
+	    $sql .= "', brew_fermenter_ibu='" . $row['brew_fermenter_ibu'];
+	    $sql .= "', brew_fermenter_color='" . $row['brew_fermenter_color'];
+	    if (strlen($row['brew_date_end']))
+		$sql .= "', brew_date_end='" . $row['brew_date_end'] . "'";
+	    else
+		$sql .= "', brew_date_end=NULL";
+	    $sql .=  ", og='" . $row['og'];
+	    $sql .= "', fg='" . $row['fg'];
+	    $sql .= "', primary_start_temp='" . $row['primary_start_temp'];
+	    $sql .= "', primary_max_temp='" . $row['primary_max_temp'];
+	    $sql .= "', primary_end_temp='" . $row['primary_end_temp'];
+	    if (strlen($row['primary_end_date']))
+		$sql .= "', primary_end_date='" . $row['primary_end_date'] . "'";
+	    else
+	    	$sql .= "', primary_end_date=NULL";
+	    $sql .=  ", primary_end_sg='" . $row['primary_end_sg'];
+	    $sql .= "', secondary_temp='" . $row['secondary_temp'];
+	    $sql .= "', secondary_end_sg='" . $row['secondary_end_sg'];
+	    if (strlen($row['secondary_end_date']))
+		$sql .= "', secondary_end_date='" . $row['secondary_end_date'] . "'";
+	    else
+	    	$sql .= "', secondary_end_date=NULL";
+	    $sql .=  ", tertiary_temp='" . $row['tertiary_temp'];
+	    if (strlen($row['package_date']))
+		$sql .= "', package_date='" . $row['package_date'] . "'";
+	    else
+		$sql .= "', package_date=NULL";
+	    $sql .=  ", package_volume='" . sprintf("%.1f", $row['package_volume'] * $factor);
+	    $sql .= "', package_infuse_amount='" . sprintf("%.1f", $row['package_infuse_amount'] * $factor);
+	    $sql .= "', package_infuse_abv='" . $row['package_infuse_abv'];
+	    $sql .= "', package_infuse_notes='" . mysqli_real_escape_string($link, $row['package_infuse_notes']);
+	    $sql .= "', package_abv='" . $row['package_abv'];
+	    $sql .= "', package_ph='" . $row['package_ph'];
+	    $sql .= "', bottle_amount='" . sprintf("%.1f", $row['bottle_amount'] * $factor);
+	    $sql .= "', bottle_carbonation='" . $row['bottle_carbonation'];
+	    $sql .= "', bottle_priming_sugar='" . $row['bottle_priming_sugar'];
+	    $sql .= "', bottle_priming_water='" . sprintf("%.3f", $row['bottle_priming_water'] * $factor);
+	    $sql .= "', bottle_priming_amount='" . $row['bottle_priming_amount'];
+	    $sql .= "', bottle_carbonation_temp='" . $row['bottle_carbonation_temp'];
+	    $sql .= "', keg_amount='" . sprintf("%.1f", $row['keg_amount'] * $factor);
+	    $sql .= "', keg_carbonation='" . $row['keg_carbonation'];
+	    $sql .= "', keg_priming_sugar='" . $row['keg_priming_sugar'];
+	    $sql .= "', keg_priming_water='" . sprintf("%.3f", $row['keg_priming_water'] * $factor);
+	    $sql .= "', keg_priming_amount='" . $row['keg_priming_amount'];
+	    $sql .= "', keg_carbonation_temp='" . $row['keg_carbonation_temp'];
+	    $sql .= "', keg_forced_carb='" . $row['keg_forced_carb'];
+	    $sql .= "', keg_pressure='" . $row['keg_pressure'];
+	    $sql .= "', taste_notes='";
+	    $sql .= "', taste_rate='0";
+	    $sql .= "', taste_date=NULL";
+	    $sql .=  ", taste_color='";
+	    $sql .= "', taste_transparency='";
+	    $sql .= "', taste_head='";
+	    $sql .= "', taste_aroma='";
+	    $sql .= "', taste_taste='";
+	    $sql .= "', taste_mouthfeel='";
+	    $sql .= "', taste_aftertaste='";
+	    // Style
+	    $sql .= "', st_name='" . mysqli_real_escape_string($link, $row['st_name']);
+	    $sql .= "', st_letter='" . mysqli_real_escape_string($link, $row['st_letter']);
+	    $sql .= "', st_guide='" . mysqli_real_escape_string($link, $row['st_guide']);
+	    $sql .= "', st_type='" . $row['st_type'];
+	    $sql .= "', st_category='" . mysqli_real_escape_string($link, $row['st_category']);
+	    $sql .= "', st_category_number='" . $row['st_category_number'];
+	    $sql .= "', st_og_min='" . $row['st_og_min'];
+	    $sql .= "', st_og_max='" . $row['st_og_max'];
+	    $sql .= "', st_fg_min='" . $row['st_fg_min'];
+	    $sql .= "', st_fg_max='" . $row['st_fg_max'];
+	    $sql .= "', st_ibu_min='" . $row['st_ibu_min'];
+	    $sql .= "', st_ibu_max='" . $row['st_ibu_max'];
+	    $sql .= "', st_color_min='" . $row['st_color_min'];
+	    $sql .= "', st_color_max='" . $row['st_color_max'];
+	    $sql .= "', st_carb_min='" . $row['st_carb_min'];
+	    $sql .= "', st_carb_max='" . $row['st_carb_max'];
+	    $sql .= "', st_abv_min='" . $row['st_abv_min'];
+	    $sql .= "', st_abv_max='" . $row['st_abv_max'];
+	    $sql .= "', type='" . $row['type'];
+            $sql .= "', batch_size='" . sprintf("%.2f", $row['batch_size'] * $factor);
+            $sql .= "', boil_size='" . sprintf("%.2f", $row['boil_size'] * $factor);
+	    $sql .= "', boil_time='" . $row['boil_time'];
+	    $sql .= "', efficiency='" . $row['efficiency'];
+	    $sql .= "', est_og='" . $row['est_og'];
+	    $sql .= "', est_og3='" . $row['est_og3'];
+	    $sql .= "', est_fg='" . $row['est_fg'];
+	    $sql .= "', est_abv='" . $row['est_abv'];
+	    $sql .= "', est_carb='" . $row['est_carb'];
+	    $sql .= "', est_color='" . $row['est_color'];
+	    $sql .= "', color_method='" . $row['color_method'];
+	    $sql .= "', est_ibu='" . $row['est_ibu'];
+	    $sql .= "', ibu_method='" . $row['ibu_method'];
+            $sql .= "', sparge_volume='" . sprintf("%.1f", $row['sparge_volume'] * $factor);
+            $sql .= "', sparge_acid_amount='" . sprintf("%.5f", $row['sparge_acid_amount'] * $factor);
+	    $sql .= "', sparge_temp='" . $row['sparge_temp'];
+	    $sql .= "', sparge_ph='" . $row['sparge_ph'];
+	    $sql .= "', sparge_source='" . $row['sparge_source'];
+	    $sql .= "', sparge_acid_type='" . $row['sparge_acid_type'];
+	    $sql .= "', sparge_acid_perc='" . $row['sparge_acid_perc'];
+	    $sql .= "', mash_ph='" . $row['mash_ph'];
+	    $sql .= "', mash_name='" . $row['mash_name'];
+	    $sql .= "', calc_acid='" . $row['calc_acid'];
+	    $sql .= "', w1_name='" . mysqli_real_escape_string($link, $row['w1_name']);
+            $sql .= "', w1_amount='" . sprintf("%.2f", $row['w1_amount'] * $factor);
+	    $sql .= "', w1_calcium='" . $row['w1_calcium'];
+	    $sql .= "', w1_sulfate='" . $row['w1_sulfate'];
+	    $sql .= "', w1_chloride='" . $row['w1_chloride'];
+	    $sql .= "', w1_sodium='" . $row['w1_sodium'];
+	    $sql .= "', w1_magnesium='" . $row['w1_magnesium'];
+	    $sql .= "', w1_total_alkalinity='" . $row['w1_total_alkalinity'];
+	    $sql .= "', w1_ph='" . $row['w1_ph'];
+            $sql .= "', w1_cost='" . $row['w1_cost'];
+	    $sql .= "', w2_name='" . mysqli_real_escape_string($link, $row['w2_name']);
+            $sql .= "', w2_amount='" . sprintf("%.2f", $row['w2_amount'] * $factor);
+	    $sql .= "', w2_calcium='" . $row['w2_calcium'];
+	    $sql .= "', w2_sulfate='" . $row['w2_sulfate'];
+	    $sql .= "', w2_chloride='" . $row['w2_chloride'];
+	    $sql .= "', w2_sodium='" . $row['w2_sodium'];
+	    $sql .= "', w2_magnesium='" . $row['w2_magnesium'];
+	    $sql .= "', w2_total_alkalinity='" . $row['w2_total_alkalinity'];
+	    $sql .= "', w2_ph='" . $row['w2_ph'];
+	    $sql .= "', w2_cost='" . $row['w2_cost'];
+            $sql .= "', wg_amount='" . sprintf("%.2f", $row['wg_amount'] * $factor);
+            $sql .= "', wg_calcium='" . $row['wg_calcium'];
+            $sql .= "', wg_sulfate='" . $row['wg_sulfate'];
+            $sql .= "', wg_chloride='" . $row['wg_chloride'];
+            $sql .= "', wg_sodium='" . $row['wg_sodium'];
+            $sql .= "', wg_magnesium='" . $row['wg_magnesium'];
+            $sql .= "', wg_total_alkalinity='" . $row['wg_total_alkalinity'];
+            $sql .= "', wg_ph='" . $row['wg_ph'];
+            $sql .= "', wb_calcium='" . $row['wb_calcium'];
+            $sql .= "', wb_sulfate='" . $row['wb_sulfate'];
+            $sql .= "', wb_chloride='" . $row['wb_chloride'];
+            $sql .= "', wb_sodium='" . $row['wb_sodium'];
+            $sql .= "', wb_magnesium='" . $row['wb_magnesium'];
+            $sql .= "', wb_total_alkalinity='" . $row['wb_total_alkalinity'];
+            $sql .= "', wb_ph='" . $row['wb_ph'];
+	    $sql .= "', wa_acid_name='" . $row['wa_acid_name'];
+	    $sql .= "', wa_acid_perc='" . $row['wa_acid_perc'];
+	    $sql .= "', wa_base_name='" . $row['wa_base_name'];
+	    $sql .= "', starter_enable='" . $row['starter_enable'];
+	    $sql .= "', starter_type='" . $row['starter_type'];
+	    $sql .= "', starter_sg='" . $row['starter_sg'];
+	    $sql .= "', starter_viability='" . $row['starter_viability'];
+	    $sql .= "', prop1_type='" . $row['prop1_type'];
+	    $sql .= "', prop2_type='" . $row['prop2_type'];
+	    $sql .= "', prop3_type='" . $row['prop3_type'];
+	    $sql .= "', prop4_type='" . $row['prop4_type'];
+            $sql .= "', prop1_volume='" . sprintf("%.3f", $row['prop1_volume'] * $factor);
+            $sql .= "', prop2_volume='" . sprintf("%.3f", $row['prop2_volume'] * $factor);
+            $sql .= "', prop3_volume='" . sprintf("%.3f", $row['prop3_volume'] * $factor);
+            $sql .= "', prop4_volume='" . sprintf("%.3f", $row['prop4_volume'] * $factor);
+	    $sql .= "', divide_type='" . $divide_type;
+	    $sql .= "', divide_parts='" . $divide_parts;
+            $sql .= "', divide_part='" . $index;
+            $sql .= "', divide_size='" . floatval($split['size']);
+	    $sql .= "', divide_factor='". $factor;
+	    syslog(LOG_NOTICE, "db_divide: index " . $index . " " . $sql);
 	}
-	echo $result;
+    
+	$fermentables = json_decode($row['json_fermentables'], true);
+    	for ($i = 0; $i < count($fermentables); $i++) {
+	    $fermentables[$i]['f_amount'] = sprintf("%.5f", $fermentables[$i]['f_amount'] * $factor);
+    	}
+    	// syslog(LOG_NOTICE, "db_divide: " . str_replace($rescapers,$rreplacements,json_encode($fermentables, JSON_UNESCAPED_UNICODE)));
+    	$sql .= "', json_fermentables='" . str_replace($rescapers,$rreplacements,json_encode($fermentables, JSON_UNESCAPED_UNICODE));
+
+	$hops = json_decode($row['json_hops'], true);
+	for ($i = 0; $i < count($hops); $i++) {
+	    $hops[$i]['h_amount'] = sprintf("%.5f", $hops[$i]['h_amount'] * $factor);
+	}
+	// syslog(LOG_NOTICE, "db_divide: " . str_replace($rescapers,$rreplacements,json_encode($hops, JSON_UNESCAPED_UNICODE)));
+	$sql .= "', json_hops='" . str_replace($rescapers,$rreplacements,json_encode($hops, JSON_UNESCAPED_UNICODE));
+
+	$miscs = json_decode($row['json_miscs'], true);
+	for ($i = 0; $i < count($miscs); $i++) {
+            $miscs[$i]['m_amount'] = sprintf("%.5f", $miscs[$i]['m_amount'] * $factor);
+	}
+	// syslog(LOG_NOTICE, "db_divide: " . str_replace($rescapers,$rreplacements,json_encode($miscs, JSON_UNESCAPED_UNICODE)));
+	$sql .= "', json_miscs='" . str_replace($rescapers,$rreplacements,json_encode($miscs, JSON_UNESCAPED_UNICODE));
+
+	$yeasts = json_decode($row['json_yeasts'], true);
+	for ($i = 0; $i < count($yeasts); $i++) {
+	    $yeasts[$i]['y_amount'] = sprintf("%.5f", $yeasts[$i]['y_amount'] * $factor);
+	}
+	// syslog(LOG_NOTICE, "db_divide: " . str_replace($rescapers,$rreplacements,json_encode($yeasts, JSON_UNESCAPED_UNICODE)));
+	$sql .= "', json_yeasts='" . str_replace($rescapers,$rreplacements,json_encode($yeasts, JSON_UNESCAPED_UNICODE));
+
+	$mashs = json_decode($row['json_mashs'], true);
+	for ($i = 0; $i < count($mashs); $i++) {
+	    $mashs[$i]['step_infuse_amount'] = sprintf("%.5f", $mashs[$i]['step_infuse_amount'] * $factor);
+	}
+	syslog(LOG_NOTICE, "db_divide: " . str_replace($rescapers,$rreplacements,json_encode($mashs, JSON_UNESCAPED_UNICODE)));
+	$sql .= "', json_mashs='" . str_replace($rescapers,$rreplacements,json_encode($mashs, JSON_UNESCAPED_UNICODE));
 
+	if ($index == 0) {
+	    $sql .= "' WHERE record='" . $record . "';";
+	    $result2 = mysqli_query($link, $sql);
+            if (! $result2) {
+                syslog(LOG_NOTICE, "db_divide: result: ".mysqli_error($link));
+            	$rc = 1;
+		break;
+	    } else {
+                syslog(LOG_NOTICE, "db_divide: updated record ".$record." code ".$split['code']);
+            }
+	} else {
+	    $sql .= "';";
+	    $result2 = mysqli_query($link, $sql);
+	    if (! $result2) {
+             	syslog(LOG_NOTICE, "db_divide: result: ".mysqli_error($link));
+		$rc = 1;
+		break;
+            } else {
+	     	$lastid = mysqli_insert_id($link);
+                syslog(LOG_NOTICE, "db_divide: inserted record ".$lastid." code ".$split['code']);
+		/* Copy brew log records */
+		if ($row['log_brew'] == '1') {
+		    $result3 = mysqli_query($link, "SELECT * FROM log_brews WHERE code='" . $row['code'] . "'");
+        	    if (! $result3) {
+            		syslog(LOG_NOTICE, "db_divide: result3: ".mysqli_error($link));
+        	    }
+        	    while ($row3 = mysqli_fetch_array($result3)) {
+			$sql3  = "INSERT INTO log_brews SET datetime='" . $row3['datetime'];
+			$sql3 .= "', version='" . $row3['version'];
+			$sql3 .= "', uuid='" . $uuid;
+			$sql3 .= "', code='" . mysqli_real_escape_string($link, $split['code']);
+			$sql3 .= "', name='" . mysqli_real_escape_string($link, $split['name']);
+			$sql3 .= "', pv_mlt='" . $row3['pv_mlt'];
+			$sql3 .= "', pv_hlt='" . $row3['pv_hlt'];
+			$sql3 .= "', pv_room='" . $row3['pv_room'];
+			$sql3 .= "', sp_mlt='" . $row3['sp_mlt'];
+			$sql3 .= "', sp_hlt='" . $row3['sp_hlt'];
+			$sql3 .= "', pwm_mlt='" . $row3['pwm_mlt'];
+			$sql3 .= "', pwm_hlt='" . $row3['pwm_hlt'];
+			$sql3 .= "', event='" . $row3['event'] . "';";
+			$result4 = mysqli_query($link, $sql3);
+			if (! $result4) {
+                	    syslog(LOG_NOTICE, "db_divide: result4: ".mysqli_error($link)." ".$sql3);
+			}
+		    }
+		}
+	    }
+	}
+
+    }
+    syslog(LOG_NOTICE, "db_divide: rc=".$rc);
+    echo $rc;
 } else {
-	// SELECT COMMAND
-	$query = "SELECT * FROM divides ORDER BY divide_from,divide_part";
-	$result = mysqli_query($connect, $query) or die("SQL Error 1: " . mysqli_error($connect));
-	while ($row = mysqli_fetch_array($result, MYSQLI_ASSOC)) {
-		$divides[] = array(
-			'record' => $row['record'],
-			'divide_from' => $row['divide_from'],
-			'divide_type' => $row['divide_type'],
-			'divide_size' => $row['divide_size'],
-			'divide_part' => $row['divide_part'],
-			'name' => $row['name'],
-			'code' => $row['code']
-		);
-	}
-	header("Content-type: application/json");
-	echo json_encode($divides);
+    syslog(LOG_NOTICE, "db_divide: missing arguments");
+    echo 1;
 }
+
+
+
+
 ?>
--- a/www/includes/db_inventory_yeasts.php	Fri Oct 18 13:20:35 2019 +0200
+++ b/www/includes/db_inventory_yeasts.php	Fri May 01 16:37:31 2020 +0200
@@ -26,6 +26,7 @@
 	$sql .= "', form='" . array_search($_POST['form'], $yeastform);
 	$sql .= "', laboratory='" . mysqli_real_escape_string($connect, $_POST['laboratory']);
 	$sql .= "', product_id='" . mysqli_real_escape_string($connect, $_POST['product_id']);
+	$sql .= "', short_desc='" . mysqli_real_escape_string($connect, $_POST['short_desc']);
 	$sql .= "', min_temperature='" . $_POST['min_temperature'];
 	$sql .= "', max_temperature='" . $_POST['max_temperature'];
 	$sql .= "', flocculation='" . $_POST['flocculation'];
@@ -96,6 +97,7 @@
 			'form' => $yeastform[$row['form']],
 			'laboratory' => $row['laboratory'],
 			'product_id' => $row['product_id'],
+			'short_desc' => $row['short_desc'],
 			'min_temperature' => $row['min_temperature'],
 			'max_temperature' => $row['max_temperature'],
 			'flocculation' => $row['flocculation'],
--- a/www/includes/db_product.php	Fri Oct 18 13:20:35 2019 +0200
+++ b/www/includes/db_product.php	Fri May 01 16:37:31 2020 +0200
@@ -40,6 +40,8 @@
 	$sql .= "', notes='" . mysqli_real_escape_string($connect, $_POST['notes']);
 	$sql .= "', log_brew='" . $_POST['log_brew'];
 	$sql .= "', log_fermentation='" . $_POST['log_fermentation'];
+	$sql .= "', log_ispindel='" . $_POST['log_ispindel'];
+	$sql .= "', log_co2pressure='" . $_POST['log_co2pressure'];
 	$sql .= "', inventory_reduced='" . $_POST['inventory_reduced'];
 	$sql .= "', locked='" . $_POST['locked'];
 	// Equipment
@@ -185,6 +187,7 @@
 	$sql .= "', boil_time='" . $_POST['boil_time'];
 	$sql .= "', efficiency='" . $_POST['efficiency'];
 	$sql .= "', est_og='" . $_POST['est_og'];
+	$sql .= "', est_og3='" . $_POST['est_og3'];
 	$sql .= "', est_fg='" . $_POST['est_fg'];
 	$sql .= "', est_abv='" . $_POST['est_abv'];
 	$sql .= "', est_carb='" . $_POST['est_carb'];
@@ -262,9 +265,15 @@
 		$sql .= "', prop4_type='" . $_POST['prop4_type'];
 		$sql .= "', prop4_volume='" . $_POST['prop4_volume'];
 	}
-	$sql .= "', divide_type='" . $_POST['divide_type'];
-	$sql .= "', divide_size='" . $_POST['divide_size'];
+	if ($_POST['yeast_prod_date'] == '')
+                $sql .= "', yeast_prod_date=NULL";
+        else
+                $sql .= "', yeast_prod_date='" . $_POST['yeast_prod_date'] . "'";
+	$sql .=  ", divide_type='" . $_POST['divide_type'];
+	$sql .= "', divide_size='" . floatval($_POST['divide_size']);
+	$sql .= "', divide_factor='" . floatval($_POST['divide_factor']);
 	$sql .= "', divide_parts='" . $_POST['divide_parts'];
+	$sql .= "', divide_part='" . $_POST['divide_part'];
 	//syslog(LOG_NOTICE, $sql);
 
 	$fermentables = '[';
@@ -435,6 +444,13 @@
 			$yeast .= ',"y_tolerance":' . $item['y_tolerance'];
 			$yeast .= ',"y_inventory":' . $item['y_inventory'];
 			$yeast .= ',"y_use":' . $item['y_use'];
+			$yeast .= ',"y_sta1":' . $item['y_sta1'];
+			$yeast .= ',"y_bacteria":' . $item['y_bacteria'];
+			$yeast .= ',"y_harvest_top":' . $item['y_harvest_top'];
+			$yeast .= ',"y_harvest_time":' . $item['y_harvest_time'];
+			$yeast .= ',"y_pitch_temperature":' . $item['y_pitch_temperature'];
+			$yeast .= ',"y_pofpos":' . $item['y_pofpos'];
+			$yeast .= ',"y_zymocide":' . $item['y_zymocide'];
 			$yeast .= ',"y_cost":' . $item['y_cost'] . '}';
 			//syslog(LOG_NOTICE, $yeast);
 			$yeasts .= $yeast;
@@ -535,7 +551,7 @@
 	 * SELECT, produce a list of products that are not yet Closed.
 	 */
 	if (isset($_GET['select']) && ($_GET['select'] == "inprod")) {
-		$query = "SELECT record,name,code,birth,stage,brew_date_start,package_date FROM products WHERE stage != '11' ORDER BY birth,code;";
+		$query = "SELECT record,name,code,birth,stage,brew_date_start,package_date FROM products WHERE stage != '11' ORDER BY stage,code,birth;";
 		$result = mysqli_query($connect, $query) or die("SQL Error 1: " . mysqli_error($connect));
 		while ($row = mysqli_fetch_array($result, MYSQLI_ASSOC)) {
 			$brews[] = array(
@@ -554,7 +570,7 @@
 	}
 
 	if (isset($_GET['select']) && ($_GET['select'] == "archname")) {
-		$query = "SELECT record,name,code,brew_date_start,st_name,og,fg,batch_size FROM products WHERE stage = '11' ORDER BY name,brew_date_start;";
+		$query = "SELECT record,name,code,brew_date_start,st_name,brew_fermenter_sg,fg,batch_size FROM products WHERE stage = '11' ORDER BY name,brew_date_start;";
 		$result = mysqli_query($connect, $query) or die("SQL Error 1: " . mysqli_error($connect));
 		while ($row = mysqli_fetch_array($result, MYSQLI_ASSOC)) {
 			$brews[] = array(
@@ -563,7 +579,7 @@
 				'code' => $row['code'],
 				'date' => substr($row['brew_date_start'], 0, 10),
 				'style' => $row['st_name'],
-				'og' => $row['og'],
+				'og' => $row['brew_fermenter_sg'],
 				'fg' => $row['fg'],
 				'batch_size' => $row['batch_size']
 			);
@@ -574,7 +590,7 @@
 	}
 
 	if (isset($_GET['select']) && ($_GET['select'] == "archcode")) {
-		$query = "SELECT record,name,code,brew_date_start,st_name,og,fg,batch_size FROM products WHERE stage = '11' ORDER BY code;";
+		$query = "SELECT record,name,code,brew_date_start,st_name,brew_fermenter_sg,fg,batch_size FROM products WHERE stage = '11' ORDER BY code;";
 		$result = mysqli_query($connect, $query) or die("SQL Error 1: " . mysqli_error($connect));
 		while ($row = mysqli_fetch_array($result, MYSQLI_ASSOC)) {
 			$brews[] = array(
@@ -583,7 +599,7 @@
 				'code' => $row['code'],
 				'date' => substr($row['brew_date_start'], 0, 10),
 				'style' => $row['st_name'],
-				'og' => $row['og'],
+				'og' => $row['brew_fermenter_sg'],
 				'fg' => $row['fg'],
 				'batch_size' => $row['batch_size']
 			);
@@ -594,7 +610,7 @@
 	}
 
 	if (isset($_GET['select']) && ($_GET['select'] == "archdate")) {
-		$query = "SELECT record,name,code,brew_date_start,st_name,og,fg,batch_size FROM products WHERE stage = '11' ORDER BY brew_date_start;";
+		$query = "SELECT record,name,code,brew_date_start,st_name,brew_fermenter_sg,fg,batch_size FROM products WHERE stage = '11' ORDER BY brew_date_start;";
 		$result = mysqli_query($connect, $query) or die("SQL Error 1: " . mysqli_error($connect));
 		while ($row = mysqli_fetch_array($result, MYSQLI_ASSOC)) {
 			$brews[] = array(
@@ -604,7 +620,7 @@
 				'year' => substr($row['brew_date_start'], 0, 4),
 				'date' => substr($row['brew_date_start'], 0, 10),
 				'style' => $row['st_name'],
-				'og' => $row['og'],
+				'og' => $row['brew_fermenter_sg'],
 				'fg' => $row['fg'],
 				'batch_size' => $row['batch_size']
 			);
@@ -672,6 +688,8 @@
 		$brew .= ',"notes":"' . str_replace($escapers, $replacements, $row['notes']);
 		$brew .= '","log_brew":' . $row['log_brew'];
 		$brew .= ',"log_fermentation":' . $row['log_fermentation'];
+		$brew .= ',"log_ispindel":' . $row['log_ispindel'];
+		$brew .= ',"log_co2pressure":' . $row['log_co2pressure'];
 		$brew .= ',"inventory_reduced":' . $row['inventory_reduced'];
 		$brew .= ',"locked":' . $row['locked'];
 		$brew .= ',"eq_name":"' . str_replace($escapers, $replacements, $row['eq_name']);
@@ -795,6 +813,7 @@
 		$brew .= ',"boil_time":' . floatval($row['boil_time']);
 		$brew .= ',"efficiency":' . floatval($row['efficiency']);
 		$brew .= ',"est_og":' . floatval($row['est_og']);
+		$brew .= ',"est_og3":' . floatval($row['est_og3']);
 		$brew .= ',"est_fg":' . floatval($row['est_fg']);
 		$brew .= ',"est_abv":' . floatval($row['est_abv']);
 		$brew .= ',"est_carb":' . floatval($row['est_carb']);
@@ -854,7 +873,8 @@
 		$brew .= ',"starter_type":' . $row['starter_type'];
 		$brew .= ',"starter_sg":' . $row['starter_sg'];
 		$brew .= ',"starter_viability":' . $row['starter_viability'];
-		$brew .= ',"prop1_type":' . $row['prop1_type'];
+		$brew .= ',"yeast_prod_date":"' . $row['yeast_prod_date'];
+		$brew .= '","prop1_type":' . $row['prop1_type'];
 		$brew .= ',"prop1_volume":' . $row['prop1_volume'];
 		$brew .= ',"prop2_type":' . $row['prop2_type'];
 		$brew .= ',"prop2_volume":' . $row['prop2_volume'];
@@ -865,7 +885,9 @@
 
 		$brew .= ',"divide_type":' . $row['divide_type'];
 		$brew .= ',"divide_size":' . floatval($row['divide_size']);
+		$brew .= ',"divide_factor":' . floatval($row['divide_factor']);
 		$brew .= ',"divide_parts":' . $row['divide_parts'];
+		$brew .= ',"divide_part":' . $row['divide_part'];
 
 		if (isset($_GET['record'])) {
 			// Append stock information.
@@ -927,7 +949,8 @@
 				$yeasts[$i]['y_avail'] = 0;       // Ingredient not in db
 				if (! isset($yeasts[$i]['y_tolerance']))
                                         $yeasts[$i]['y_tolerance'] = 0;
-				$sql2 = "SELECT inventory,tolerance FROM inventory_yeasts ";
+				$sql2 = "SELECT inventory,tolerance,sta1,bacteria,harvest_top,harvest_time,pitch_temperature,pofpos,zymocide ";
+				$sql2 .= "FROM inventory_yeasts ";
 				$sql2 .= "WHERE name='".str_replace($rescapers, $rreplacements, $yeasts[$i]['y_name'])."' AND";
 				$sql2 .= " form='".str_replace($rescapers, $rreplacements, $yeasts[$i]['y_form'])."' AND";
 				$sql2 .= " laboratory='".str_replace($rescapers, $rreplacements, $yeasts[$i]['y_laboratory'])."' AND";
@@ -936,10 +959,39 @@
 					if ($obj = mysqli_fetch_object($result2)) {
 						$yeasts[$i]['y_inventory'] = floatval($obj->inventory);
 						$yeasts[$i]['y_avail'] = 1;
-						if ($yeasts[$i]['y_tolerance'] == 0) {
+						if ($yeasts[$i]['y_tolerance'] == 0)
 							$yeasts[$i]['y_tolerance'] = floatval($obj->tolerance); // Upgrade alcohol tolerance
-						}
-					}
+						// Upgrade new fields
+						if (! isset($yeasts[$i]['y_sta1']))
+                                                        $yeasts[$i]['y_sta1'] = intval($obj->sta1);
+						if (! isset($yeasts[$i]['y_bacteria']))
+                                                        $yeasts[$i]['y_bacteria'] = intval($obj->bacteria);
+						if (! isset($yeasts[$i]['y_harvest_top']))
+                                                        $yeasts[$i]['y_harvest_top'] = intval($obj->harvest_top);
+						if (! isset($yeasts[$i]['y_harvest_time']))
+                                                        $yeasts[$i]['y_harvest_time'] = intval($obj->harvest_time);
+						if (! isset($yeasts[$i]['y_pitch_temperature']))
+                                                        $yeasts[$i]['y_pitch_temperature'] = floatval($obj->pitch_temperature);
+						if (! isset($yeasts[$i]['y_pofpos']))
+                                                        $yeasts[$i]['y_pofpos'] = intval($obj->pofpos);
+						if (! isset($yeasts[$i]['y_zymocide']))
+                                                        $yeasts[$i]['y_zymocide'] = intval($obj->zymocide);
+					} else {
+                                                if (! isset($yeasts[$i]['y_sta1']))
+                                                        $yeasts[$i]['y_sta1'] = 0;
+                                                if (! isset($yeasts[$i]['y_bacteria']))
+                                                        $yeasts[$i]['y_bacteria'] = 0;
+                                                if (! isset($yeasts[$i]['y_harvest_top']))
+                                                        $yeasts[$i]['y_harvest_top'] = 0;
+                                                if (! isset($yeasts[$i]['y_harvest_time']))
+                                                        $yeasts[$i]['y_harvest_time'] = 0;
+                                                if (! isset($yeasts[$i]['y_pitch_temperature']))
+                                                        $yeasts[$i]['y_pitch_temperature'] = 0;
+                                                if (! isset($yeasts[$i]['y_pofpos']))
+                                                        $yeasts[$i]['y_pofpos'] = 0;
+                                                if (! isset($yeasts[$i]['y_zymocide']))
+                                                        $yeasts[$i]['y_zymocide'] = 0;
+                                        }
 					mysqli_free_result($result2);
 				}
 			}
--- a/www/includes/db_recipes.php	Fri Oct 18 13:20:35 2019 +0200
+++ b/www/includes/db_recipes.php	Fri May 01 16:37:31 2020 +0200
@@ -285,6 +285,13 @@
 			$yeast .= ',"y_tolerance":' . $item['y_tolerance'];
 			$yeast .= ',"y_inventory":' . $item['y_inventory'];
 			$yeast .= ',"y_use":' . $item['y_use'];
+			$yeast .= ',"y_sta1":' . $item['y_sta1'];
+                        $yeast .= ',"y_bacteria":' . $item['y_bacteria'];
+                        $yeast .= ',"y_harvest_top":' . $item['y_harvest_top'];
+                        $yeast .= ',"y_harvest_time":' . $item['y_harvest_time'];
+                        $yeast .= ',"y_pitch_temperature":' . $item['y_pitch_temperature'];
+                        $yeast .= ',"y_pofpos":' . $item['y_pofpos'];
+                        $yeast .= ',"y_zymocide":' . $item['y_zymocide'];
 			$yeast .= ',"y_cost":' . $item['y_cost'] . '}';
 			syslog(LOG_NOTICE, $yeast);
 			$yeasts .= $yeast;
@@ -518,7 +525,8 @@
 				$yeasts[$i]['y_avail'] = 0;       // Ingredient not in db
 				if (! isset($yeasts[$i]['y_tolerance']))
 					$yeasts[$i]['y_tolerance'] = 0;
-				$sql2 = "SELECT inventory,tolerance FROM inventory_yeasts ";
+				$sql2 = "SELECT inventory,tolerance,sta1,bacteria,harvest_top,harvest_time,pitch_temperature,pofpos,zymocide ";
+				$sql2 .= "FROM inventory_yeasts ";
 				$sql2 .= "WHERE name='".str_replace($rescapers, $rreplacements, $yeasts[$i]['y_name'])."' AND";
 			       	$sql2 .= " form='".str_replace($rescapers, $rreplacements, $yeasts[$i]['y_form'])."' AND";
 				$sql2 .= " laboratory='".str_replace($rescapers, $rreplacements, $yeasts[$i]['y_laboratory'])."' AND";
@@ -527,13 +535,43 @@
 					if ($obj = mysqli_fetch_object($result2)) {
 						$yeasts[$i]['y_inventory'] = floatval($obj->inventory);
 						$yeasts[$i]['y_avail'] = 1;
-						if ($yeasts[$i]['y_tolerance'] == 0) {
+						if ($yeasts[$i]['y_tolerance'] == 0)
 							$yeasts[$i]['y_tolerance'] = floatval($obj->tolerance); // Upgrade alcohol tolerance
-						}
+						// Upgrade new fields
+                                                if (! isset($yeasts[$i]['y_sta1']))
+                                                        $yeasts[$i]['y_sta1'] = intval($obj->sta1);
+                                                if (! isset($yeasts[$i]['y_bacteria']))
+                                                        $yeasts[$i]['y_bacteria'] = intval($obj->bacteria);
+                                                if (! isset($yeasts[$i]['y_harvest_top']))
+                                                        $yeasts[$i]['y_harvest_top'] = intval($obj->harvest_top);
+                                                if (! isset($yeasts[$i]['y_harvest_time']))
+                                                        $yeasts[$i]['y_harvest_time'] = intval($obj->harvest_time);
+                                                if (! isset($yeasts[$i]['y_pitch_temperature']))
+                                                        $yeasts[$i]['y_pitch_temperature'] = floatval($obj->pitch_temperature);
+                                                if (! isset($yeasts[$i]['y_pofpos']))
+                                                        $yeasts[$i]['y_pofpos'] = intval($obj->pofpos);
+                                                if (! isset($yeasts[$i]['y_zymocide']))
+                                                        $yeasts[$i]['y_zymocide'] = intval($obj->zymocide);
+					} else {
+                                                if (! isset($yeasts[$i]['y_sta1']))
+                                                        $yeasts[$i]['y_sta1'] = 0;
+                                                if (! isset($yeasts[$i]['y_bacteria']))
+                                                        $yeasts[$i]['y_bacteria'] = 0;
+                                                if (! isset($yeasts[$i]['y_harvest_top']))
+                                                        $yeasts[$i]['y_harvest_top'] = 0;
+                                                if (! isset($yeasts[$i]['y_harvest_time']))
+                                                        $yeasts[$i]['y_harvest_time'] = 0;
+                                                if (! isset($yeasts[$i]['y_pitch_temperature']))
+                                                        $yeasts[$i]['y_pitch_temperature'] = 0;
+                                                if (! isset($yeasts[$i]['y_pofpos']))
+                                                        $yeasts[$i]['y_pofpos'] = 0;
+                                                if (! isset($yeasts[$i]['y_zymocide']))
+                                                        $yeasts[$i]['y_zymocide'] = 0;
 					}
 					mysqli_free_result($result2);
 				}
 			}
+			syslog(LOG_NOTICE, json_encode($yeasts, JSON_UNESCAPED_UNICODE));
 			$recipes .= ',"yeasts":' . json_encode($yeasts, JSON_UNESCAPED_UNICODE);
 		} else {
 			// Just leave it.
--- a/www/includes/db_setup.php	Fri Oct 18 13:20:35 2019 +0200
+++ b/www/includes/db_setup.php	Fri May 01 16:37:31 2020 +0200
@@ -34,6 +34,7 @@
 	$sql .= "', brix_correction='" . $_POST['brix_correction'];
 	$sql .= "', grain_absorbtion='" . $_POST['grain_absorbtion'];
 	$sql .= "', default_water='" . $default_water;
+	$sql .= "', my_yeastlab='" . $_POST['my_yeastlab'];
 	$sql .= "' WHERE record='1';";
 	//syslog(LOG_NOTICE, $sql);
 	$result = mysqli_query($connect, $sql);
@@ -65,6 +66,7 @@
 		$data .= ',"brix_correction":' . floatval($row['brix_correction']);
 		$data .= ',"grain_absorbtion":' . floatval($row['grain_absorbtion']);
 		$data .= ',"default_water":"' . str_replace($escapers, $replacements, $default_water);
+		$data .= '","my_yeastlab":"' . str_replace($escapers, $replacements, $row['my_yeastlab']);
 		$data .= '"}';
 	}
 	header("Content-type: application/json");
--- a/www/includes/formulas.php	Fri Oct 18 13:20:35 2019 +0200
+++ b/www/includes/formulas.php	Fri May 01 16:37:31 2020 +0200
@@ -115,17 +115,27 @@
 
 
 function sg_to_plato($sg) {
-	if ($sg > 0.5)
-		return 259 - 259 / $sg;
-	return 0;
+//	if ($sg > 0.5)
+//		return 259 - 259 / $sg;
+//	return 0;
+	return -668.962 + (1262.45 * $sg) - (776.43 * $sg * $sg) + (182.94 * $sg * $sg * $sg);
 }
 
 
 
 function plato_to_sg($plato) {
-	if ($plato < 259)
-		return 259 / (259 - $plato);
-	return 1.000;
+//	if ($plato < 259)
+//		return 259 / (259 - $plato);
+//	return 1.000;
+	return 1.00001 + (0.0038661 * $plato) + (1.3488e-5 * $plato * $plato) + (4.3074e-8 * $plato * $plato * $plato);
+}
+
+
+
+function calc_svg($og, $fg) {
+	$oe = sg_to_plato($og);
+	$ae = sg_to_plato($fg);
+	return ($oe - $ae) / $oe * 100;
 }
 
 
@@ -175,9 +185,6 @@
 function abvol($og, $fg) {
 	$factor = $og * 3157 * pow(10, -5) + 9.716 * pow(10, -2);
 	return ($og * 1000 - $fg * 1000) * $factor;
-	//if ((4.749804 - $fg) <> 0)
-	//	return 486.8693 * ($og - $fg) / (4.749804 - $fg);
-	//return 0;
 }
 
 
@@ -202,7 +209,7 @@
 
 
 
-function calc_IBU($useat, $form, $sg, $volume, $mass, $boiltime, $alpha, $method)
+function calc_IBU($useat, $form, $sg, $volume, $mass, $boiltime, $alpha, $method, $whirlpool9, $whirlpool7, $whirlpool6)
 {
 	global $my_factor_mashhop;
 	global $my_factor_fwh;
@@ -234,13 +241,31 @@
                 $pfactor += $my_factor_cryohop / 100;
         }
 
+	$whirlibus = 0;
+        if ($useat == 3 || $useat == 4) { // Flameout or any whirlpool
+		if ($whirlpool9) {
+			$whirlibus += ($mass * ($alpha / 100) * 20) / $volume * $whirlpool9 / 50;
+		} else {
+			if ($useat == 3) // Flameout hops are 2 minutes in this range.
+				$whirlibus += ($mass * ($alpha / 100) * 20) / $volume * (2 / 50);
+		}
+		if ($whirlpool7) {
+			$whirlibus += ($mass * ($alpha / 100) * 6) / $volume * $whirlpool7 / 50;
+		} else {
+			if ($useat == 3) // Flameout hops are 4 minutes in this range.
+				$whirlibus += ($mass * ($alpha / 100) * 6) / $volume * (4 / 50);
+		}
+		if ($whirlpool6)
+			$whirlibus += ($mass * ($alpha / 100) * 2) / $volume * $whirlpool6 / 50;
+	}
+
 	$ibu = 0;
 	if (($method == 0) || ($method == 3)) {	// Tinseth or Garetz // For Garetz, we need the $ibu
 		$AddedAlphaAcids = (($alpha / 100) * $mass * 1000) / $volume;
 		$Bigness_factor = 1.65 * pow( 0.000125, $sg - 1);
 		$BoilTime_factor = ((1 - exp(-0.04 * $boiltime)) / 4.15);
 		$utiisation = $Bigness_factor * $BoilTime_factor;
-		$ibu = (round($utiisation * $AddedAlphaAcids * $fmoment * $pfactor * 10) / 10.0);
+		$ibu = (round(($utiisation * $AddedAlphaAcids * $fmoment * $pfactor + $whirlibus) * 10) / 10.0);
 	}
 	if ($method == 2) {	// Daniels
 
@@ -252,7 +277,7 @@
 			$sgfactor = 0;
 		else
 			$sgfactor = (($sg * 1000) - 1050) / 200;
-		$ibu = $fmoment * (($mass * $alpha * $boilfactor * 0.1) / ($volume * (1 + $sgfactor)));
+		$ibu = $fmoment * (($mass * $alpha * $boilfactor * 0.1) / ($volume * (1 + $sgfactor))) + $whirlibus;
 	}
 	if ($method == 1) {	// Rager
 		$boilfactor = $fmoment * 18.11 + 13.86 * tanh(($boiltime * 31.32) / 18.27);
@@ -260,7 +285,7 @@
 			$sgfactor = 0;
 		else
 			$sgfactor = (($sg * 1000) - 1050) / 200;
-		$ibu = ($mass * $alpha * $boilfactor * 0.1) / ($volume * (1 + $sgfactor));
+		$ibu = ($mass * $alpha * $boilfactor * 0.1) / ($volume * (1 + $sgfactor)) + $whirlibus;
 	}
 	if ($method == 3) {	// Garetz, not in use.
 		/* Something is wrong, late hops and dryhops give negative results. */
@@ -272,8 +297,6 @@
 		$tempfactor = (32.8/550)*0.02+1;
 		$ibu = ($boilfactor * $alpha * $mass * 0.1) / ($volume * $sgfactor * $hopratefactor * $tempfactor);
 	}
-	/* TODO: Noonan and Mosher */
-
 	return $ibu;
 }
 
--- a/www/includes/global.inc.php	Fri Oct 18 13:20:35 2019 +0200
+++ b/www/includes/global.inc.php	Fri May 01 16:37:31 2020 +0200
@@ -142,7 +142,7 @@
 	my_color_method = "<?php echo $my_color_method; ?>", my_brix_correction = "<?php echo $my_brix_correction; ?>",
 	my_grain_absorbtion = "<?php echo $my_grain_absorbtion; ?>", my_default_water = "<?php echo $my_default_water; ?>";
   </script>
-  <script src="js/jquery-1.11.1-min.js"></script>
+  <script src="js/jquery-1.11.1.js"></script>
   <script src="jqwidgets/jqxcore.js"></script>
   <script src="jqwidgets/jqxwindow.js"></script>
   <script src="jqwidgets/jqxmenu.js"></script>
@@ -179,7 +179,7 @@
   <script src="jqwidgets/jqxfileupload.js"></script>
   <script src="jqwidgets/jqxpanel.js"></script>
   <script src="jqwidgets/globalization/globalize.js"></script>
-  <script src="js/global-min.js"></script>
+  <script src="js/global.js"></script>
 <?php
 if (strlen($loadjs))
     echo  '  <script src="js/'.$loadjs.'.js"></script>'.PHP_EOL;
@@ -205,7 +205,7 @@
 $connect = mysqli_connect(DBASE_HOST,DBASE_USER,DBASE_PASS,DBASE_NAME);
 $result = mysqli_query($connect, "SELECT uuid,node,online,net_address FROM mon_nodes ORDER BY node");
 while ($row = mysqli_fetch_array($result, MYSQLI_ASSOC)) {
-    if ($row['online'] == "Y")
+    if ($row['online'] == 1)
 	$img = "network-idle.png";
     else
 	$img = "network-error.png";
@@ -220,7 +220,7 @@
 <?php
 $result = mysqli_query($connect, "SELECT uuid,node,alias,online,mode FROM mon_fermenters ORDER BY node,alias");
 while ($row = mysqli_fetch_array($result, MYSQLI_ASSOC)) {
-    if ($row['online'] == "Y")
+    if ($row['online'] == 1)
         $img = "network-idle.png";
     else
         $img = "network-error.png";
@@ -245,6 +245,21 @@
 ?>
         </ul>
        </li>
+       <li><img style='float: left; margin-right: 5px;' src='images/fermenter.png' />iSpindels
+        <ul style='width: 250px;'>
+<?php
+$result = mysqli_query($connect, "SELECT uuid,node,alias,online FROM mon_ispindels ORDER BY node,alias");
+while ($row = mysqli_fetch_array($result, MYSQLI_ASSOC)) {
+    if ($row['online'] == 1)
+        $img = "network-idle.png";
+    else
+        $img = "network-error.png";
+    echo '         <li><img style="float: left; margin-right: 5px;" src="images/'.$img.'" /><a href="mon_ispindel.php?uuid='.$row['uuid'].'">'.$row['alias'].'</a></li>'.PHP_EOL;
+}
+mysqli_free_result($result);
+?>
+        </ul>
+       </li>
       </ul>
      </li>
      <li style='width: 80px;'>Productie
@@ -290,6 +305,7 @@
        <li><img style='float: left; margin-left: 3px; margin-right: 9px;' src='images/water.png' /><a href="inv_waters.php">Brouwwater</a></li>
        <li><img style='float: left; margin-right: 5px;' src='images/mash.png' /><a href="inv_equipments.php">Brouw apparatuur</a></li>
        <li><img style='float: left; margin-left: 3px; margin-right: 8px;' src='images/database.png' /><a href="inv_instock.php">Voorraad lijst</a></li>
+       <li><img style='float: left; margin-left: 3px; margin-right: 8px;' src='images/science.png' /><a href="inv_yeastlab.php">Gistbank lijst</a></li>
       </ul>
      </li>
      <li style='width: 80px;'>Instellingen
--- a/www/inv_waters.php	Fri Oct 18 13:20:35 2019 +0200
+++ b/www/inv_waters.php	Fri May 01 16:37:31 2020 +0200
@@ -26,28 +26,37 @@
        <td colspan="4">&nbsp;</td>
       </tr>
       <tr>
-       <td style="vertical-align: top; float: right;">Calcium (Ca) mg/l:</td>
+       <td style="vertical-align: top; float: right;">Calcium (Ca) mg/L:</td>
        <td><div id="calcium"></div></td>
-       <td style="vertical-align: top; float: right;">Chloride (Cl) mg/l:</td>
+       <td style="vertical-align: top; float: right;">Sulfaat (CaSO4) mg/L:</td>
+       <td><div id="sulfate"></div></td>
+      </tr>
+      <tr>
+       <td style="vertical-align: top; float: right;">Magnesium (Mg) mg/L:</td>
+       <td><div id="magnesium"></div></td>
+       <td style="vertical-align: top; float: right;">Chloride (Cl) mg/L:</td>
        <td><div id="chloride"></div></td>
       </tr>
       <tr>
-       <td style="vertical-align: top; float: right;">Magnesium (Mg) mg/l:</td>
-       <td><div id="magnesium"></div></td>
-       <td style="vertical-align: top; float: right;">Sulfaat (CaSO4) mg/l:</td>
-       <td><div id="sulfate"></div></td>
+       <td style="vertical-align: top; float: right;">Natrium (Na) mg/L:</td>
+       <td><div id="sodium"></div></td>
+       <td style="vertical-align: top; float: right;">Bicarbonaat (HCO3) mg/L:</td> <!-- Input for total_alkalinity -->
+       <td><div id="bicarbonate"></div></td>
       </tr>
       <tr>
-       <td style="vertical-align: top; float: right;">Natrium (Na) mg/l:</td>
-       <td><div id="sodium"></div></td>
-       <td style="vertical-align: top; float: right;">Bicarbonaat (HCO3) mg/l:</td> <!-- Input for total_alkalinity -->
-       <td><div id="bicarbonate"></div></td>
+       <td></td>
+       <td></td>
+       <td style="vertical-align: top; float: right;">Totale alkaliteit (CaCO3) mg/L:</td>
+       <td><div id="total_alkalinity"></div></td>
+      </tr>
+      <tr>
+       <td colspan="4">&nbsp;</td>
       </tr>
       <tr>
        <td style="vertical-align: top; float: right;">Zuurgraad (pH):</td>
        <td><div id="ph"></div></td>
-       <td style="vertical-align: top; float: right;">Totale alkaliteit (CaCO3) mg/l:</td>
-       <td><div id="total_alkalinity"></div></td>
+       <td style="vertical-align: top; float: right;">Ionen balans meq/L:</td>
+       <td><div style="float: left;" id="balance"></div><div style="float: left; margin-left: 10px;" id="wr_balance"></div></td>
       </tr>
       <tr>
        <td colspan="4">&nbsp;</td>
@@ -63,10 +72,10 @@
        <td><div id="cost"></div></td>
       </tr>
       <tr>
-       <td style="padding-top: 110px; float: right;"><input type="button" id="Delete" value="Verwijder" /></td>
+       <td style="padding-top: 70px; float: right;"><input type="button" id="Delete" value="Verwijder" /></td>
        <td></td>
        <td></td>
-       <td style="padding-top: 110px;"><input style="margin-right: 5px;" type="button" id="Save" value="Sla op" /><input id="Cancel" type="button" value="Annuleer" /></td>
+       <td style="padding-top: 70px;"><input style="margin-right: 5px;" type="button" id="Save" value="Sla op" /><input id="Cancel" type="button" value="Annuleer" /></td>
       </tr>
      </table>
     </div>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/www/inv_yeastlab.php	Fri May 01 16:37:31 2020 +0200
@@ -0,0 +1,162 @@
+<?php
+require_once($_SERVER['DOCUMENT_ROOT'].'/includes/global.inc.php');
+require_once($_SERVER['DOCUMENT_ROOT'].'/includes/constants.php');
+require_once($_SERVER['DOCUMENT_ROOT'].'/fpdf/fpdf.php');
+
+define('EURO', chr(128) );
+
+$link = mysqli_connect(DBASE_HOST,DBASE_USER,DBASE_PASS,DBASE_NAME);
+if (! $link) {
+	die('Connect Error (' . mysqli_connect_errno() . ') ' . mysqli_connect_error());
+}
+if (! mysqli_set_charset($link, "utf8" )) {
+	echo "error";
+	return 1;
+}
+
+setlocale ( LC_ALL, 'nl_NL.UTF-8');
+date_default_timezone_set('Europe/Amsterdam');
+$prdate = date(DATE_RFC2822);
+
+$sql = "SELECT brewery_name,my_yeastlab FROM profile_setup WHERE record = '1';";
+$result = mysqli_query($link, $sql);
+if ($row=mysqli_fetch_array($result)) {
+	$my_brewery = iconv('UTF-8','windows-1252',$row['brewery_name']);
+	$my_lab = $row['my_yeastlab'];
+} else {
+	$my_brewery = $my_lab = '';
+}
+
+
+class PDF_MySQL_Table extends FPDF
+{
+	protected $ProcessingTable=false;
+	protected $aCols=array();
+	protected $TableX;
+	protected $HeaderColor;
+	protected $RowColors;
+	protected $TotalColor;
+	protected $ColorIndex;
+
+	function Header() {
+		// Print the table header if necessary
+		if ($this->ProcessingTable)
+			$this->TableHeader();
+	}
+
+	function TableHeader() {
+		$this->SetFont('Helvetica','B',9);
+		$this->SetX($this->TableX);
+		$this->SetFillColor($this->HeaderColor[0],$this->HeaderColor[1],$this->HeaderColor[2]);
+		foreach($this->aCols as $col)
+			$this->Cell($col['w'],5,$col['c'],0,0,$col['a'],true);
+		$this->Ln();
+	}
+
+	function CalcWidths($width, $align) {
+		// Compute the widths of the columns
+		$TableWidth=0;
+		foreach($this->aCols as $i=>$col) {
+			$w=$col['w'];
+			if($w==-1)
+				$w=$width/count($this->aCols);
+			elseif(substr($w,-1)=='%')
+				$w=$w/100*$width;
+			$this->aCols[$i]['w']=$w;
+			$TableWidth+=$w;
+		}
+		// Compute the abscissa of the table
+		if($align=='C')
+			$this->TableX=max(($this->w-$TableWidth)/2,0);
+		elseif($align=='R')
+			$this->TableX=max($this->w-$this->rMargin-$TableWidth,0);
+		else
+			$this->TableX=$this->lMargin;
+	}
+
+	function AddCol($width=-1, $caption='', $align='L') {
+	        $this->aCols[]=array('c'=>$caption,'w'=>$width,'a'=>$align);
+	}
+
+	function TableYeasts($link,$prop) {
+		global $yeasttype;
+		global $yeastform;
+		global $my_lab;
+		$this->AddCol( 60,'Gist','L');
+		$this->AddCol( 50,'Omschrijving','L');
+		$this->AddCol( 18,'Soort','L');
+		$this->AddCol( 18,'Vorm','L');
+		$this->AddCol( 20,'Voorraad','R');
+		$this->AddCol( 25,'Datum','L');
+		$prop['width']=$this->w-$this->lMargin-$this->rMargin;
+		$prop['align']='L';
+		$cMargin=$this->cMargin;
+		$this->cMargin=$prop['padding'];
+		$this->HeaderColor=$prop['HeaderColor'];
+                $this->TotalColor=$prop['TotalColor'];
+                $this->RowColors=array($prop['color1'],$prop['color2']);
+		$this->CalcWidths($prop['width'],$prop['align']);
+		$this->TableHeader();
+		$this->SetFont('Helvetica','',9);
+		$this->ColorIndex=0;
+		$this->ProcessingTable=true;
+
+		$sql  = "SELECT name,type,form,inventory,production_date,short_desc FROM inventory_yeasts ";
+		$sql .= "WHERE inventory > 0 AND laboratory = '".$my_lab."' ORDER BY product_id";
+		$result = mysqli_query($link, $sql);
+
+		while ($row=mysqli_fetch_array($result)) {
+			if ($row['form'] == 0)
+				$stock = floatval($row['inventory']);
+			else
+				$stock = floatval($row['inventory']) * 1000.0;
+			$form = array( 'pak', 'gr', 'ml', 'ml', 'ml', 'ml', 'gr' );
+
+			$this->SetX($this->TableX);
+			$ci=$this->ColorIndex;
+			$this->SetFillColor($this->RowColors[$ci][0],$this->RowColors[$ci][1],$this->RowColors[$ci][2]);
+			$this->Cell(60,5,iconv('UTF-8','windows-1252',$row['name']),0,0,'L',true);
+			$this->Cell(50,5,iconv('UTF-8','windows-1252',$row['short_desc']),0,0,'L',true);
+			$this->Cell(18,5,iconv('UTF-8','windows-1252',$yeasttype[$row['type']]),0,0,'L',true);
+			$this->Cell(18,5,iconv('UTF-8','windows-1252',$yeastform[$row['form']]),0,0,'L',true);
+			$this->Cell(20,5,sprintf("%10.1f ",$stock).$form[$row['form']],0,0,'R',true);
+			$this->Cell(25,5,$row['production_date'],0,0,'L',true);
+			$this->Ln();
+			$this->ColorIndex=1-$ci;
+		}
+
+		$this->ProcessingTable=false;
+		$this->cMargin=$cMargin;
+		$this->aCols=array();
+	}
+}
+
+
+
+class PDF extends PDF_MySQL_Table {
+	function Header() {
+		global $prdate;
+		global $my_brewery;
+		$this->Image('images/logo.png',10,6,30);
+		// Title
+		$this->SetFont('Helvetica','',18);
+		$this->SetX(45);
+		$this->Cell(0,10,'Gistbank van '.$my_brewery,0,1,'L');
+		$this->Ln(1);
+                $this->SetFont('Helvetica','',10);
+                $this->SetX(45);
+                $this->Cell(17,5,'Datum:',0,0,'L');
+                $this->Cell(0,5,$prdate,0,1,'L');
+		$this->Ln(18);
+		// Ensure table header is printed
+		parent::Header();
+	}
+}
+
+
+$pdf = new PDF();
+$pdf->AddPage();
+$prop = array('HeaderColor'=>array(255,150,100), 'color1'=>array(210,245,255),
+		'color2'=>array(255,255,210), 'TotalColor'=>array(255,150,100), 'padding'=>2);
+$pdf->TableYeasts($link,$prop);
+$pdf->Output();
--- a/www/inv_yeasts.php	Fri Oct 18 13:20:35 2019 +0200
+++ b/www/inv_yeasts.php	Fri May 01 16:37:31 2020 +0200
@@ -65,24 +65,24 @@
        <td align="left"><div id="max_reuse"></div></td>
       </tr>
       <tr>
+       <td align="right" style="vertical-align: top;">Gistbank tekst:</td>
+       <td align="left" colspan="3" style="vertical-align: top;"><input id="short_desc" /></td>
+       <td align="right" style="vertical-align: top;">Ent temperatuur &deg;C:</td>
+       <td align="left"><div id="pitch_temperature"></div></td>
+      </tr>
+      <tr>
        <td align="right" style="vertical-align: top;">POF+:</td>
        <td align="left"><div id="pofpos"></div></td>
        <td align="right" style="vertical-align: top;">Zymocide+:</td>
        <td align="left"><div id="zymocide"></div></td>
-       <td align="right" style="vertical-align: top;">Ent temperatuur &deg;C:</td>
-       <td align="left"><div id="pitch_temperature"></div></td>
+       <td align="right" style="vertical-align: top;">Oogst tijd uren:</td>
+       <td align="left"><div id="harvest_time"></div></td>
       </tr>
       <tr>
        <td align="right" style="vertical-align: top;">STA1 (diastatic) gen:</td>
        <td align="left"><div id="sta1"></div></td>
        <td align="right" style="vertical-align: top;">Oogst van boven:</td>
        <td align="left"><div id="harvest_top"></div></td>
-       <td align="right" style="vertical-align: top;">Oogst tijd uren:</td>
-       <td align="left"><div id="harvest_time"></div></td>
-      </tr>
-      <tr>
-       <td></td><td></td>
-       <td></td><td></td>
        <td align="right" style="vertical-align: top;">Bevat bacteri&euml;n:</td>
        <td align="left"><div id="bacteria"></div></td>
       </tr>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/www/ispindel/index.php	Fri May 01 16:37:31 2020 +0200
@@ -0,0 +1,52 @@
+<?php
+
+require($_SERVER['DOCUMENT_ROOT']."/config.php");
+
+if ($_SERVER['HTTP_USER_AGENT'] == 'ESP8266HTTPClient') {
+	//            /usr/bin/mosquitto_pub -h host] [-p port] [-u username [-P password]] -t topic -m message
+	$publisher = '/usr/bin/mosquitto_pub -h '.MQTT_HOST.' -t ';
+
+	$input = file_get_contents('php://input');
+	//syslog(LOG_NOTICE, "ispindel " . $input);
+	$data = json_decode($input, true );
+	$node = 'ispindel-' . sprintf("%06x", floatval($data['ID']));
+
+	$alarm = 0;
+	$interval = $data['interval'];
+        if (floatval($data['battery']) < 3.3) {
+                $alarm += 4;
+		if (($interval * 3) < 3600)
+			$interval = 3600; // at least 3600 seconds when the battery is low.
+		else
+			$interval = $interval * 3;
+	}
+
+	$uuid = 'c0ffeeee-cafe-dead-beef-' . sprintf("%06x", 0xffffff - floatval($data['ID'])) . sprintf("%06x", floatval($data['ID']));
+	$topic = 'mbv1.0/ispindels/NBIRTH/' . $node;
+	$payload  = '{"metric":{"uuid":"' . $uuid . '","interval":' . $interval . ',';
+	$payload .= '"properties":{"hardwaremake":"Wemos","hardwaremodel":"D1 mini","os":"Unknown","os_version":"Unknown","FW":"Unknown"},';
+	$payload .= '"net":{"address":"' . $_SERVER['REMOTE_ADDR'] . '","ifname":"sta","rssi":' . $data['RSSI'] . '}}}';
+	$pub = $publisher . $topic . ' -m \'' . $payload . '\'';
+	exec($pub);
+
+	$alarm = 0;
+	if (floatval($data['battery']) < 3.3)
+		$alarm += 4;
+
+	if ($data['temp_units'] == 'K') {
+		$tempC = floatval($data['temperature']) - 273.15;
+	} else if ($data['temp_units'] == 'F') {
+		$tempC = floatval($data['temperature']) / 1.8 - 32;
+	} else {
+		$tempC = floatval($data['temperature']);
+	}
+
+	$uuid = 'c0ffeeee-cafe-dead-bee0-' . sprintf("%06x", 0xffffff - floatval($data['ID'])) . sprintf("%06x", floatval($data['ID']));
+	$topic = 'mbv1.0/ispindels/DBIRTH/' . $node;
+	$payload  = '{"unit":{"uuid":"' . $uuid .'","alias":"' . $data['name'] . '","alarm":' . $alarm . ',"interval":' . $interval;
+	$payload .= ',"angle":' . $data['angle'] . ',"temperature":' . $tempC . ',"battery":' . $data['battery'] . ',"gravity":' . $data['gravity'] . '}}';
+	$pub = $publisher . $topic . ' -m \'' .$payload . '\'';
+	exec($pub);
+}
+
+?>
--- a/www/jqwidgets/jqx-all.js	Fri Oct 18 13:20:35 2019 +0200
+++ b/www/jqwidgets/jqx-all.js	Fri May 01 16:37:31 2020 +0200
@@ -1,18 +1,18 @@
 /*
-jQWidgets v8.1.4 (2019-July)
-Copyright (c) 2011-2019 jQWidgets.
+jQWidgets v9.0.0 (2020-Jan)
+Copyright (c) 2011-2020 jQWidgets.
 License: https://jqwidgets.com/license/
 */
 /* eslint-disable */
 
-var oldBrowser=document.all&&!document.addEventListener;if(!oldBrowser){(function(bd,G){var q,an,ak=bd.document,bo=bd.location,bt=bd.navigator,ax=bd.JQXLite,X=bd.$,aR=Array.prototype.push,aD=Array.prototype.slice,aA=Array.prototype.indexOf,y=Object.prototype.toString,b=Object.prototype.hasOwnProperty,aw=String.prototype.trim,C=function(bu,bv){return new C.fn.init(bu,bv,q)},aE=/[\-+]?(?:\d*\.|)\d+(?:[eE][\-+]?\d+|)/.source,at=/\S/,a8=/\s+/,S=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,aF=/^(?:[^#<]*(<[\w\W]+>)[^>]*$|#([\w\-]*)$)/,e=/^<(\w+)\s*\/?>(?:<\/\1>|)$/,j=/^[\],:{}\s]*$/,t=/(?:^|:|,)(?:\s*\[)+/g,a5=/\\(?:["\\\/bfnrt]|u[\da-fA-F]{4})/g,K=/"[^"\\\r\n]*"|true|false|null|-?(?:\d\d*\.|)\d+(?:[eE][\-+]?\d+|)/g,au=/^-ms-/,aS=/-([\da-z])/gi,m=function(bu,bv){return(bv+"").toUpperCase()},a4=function(){if(ak.addEventListener){ak.removeEventListener("DOMContentLoaded",a4,false);C.ready()}else{if(ak.readyState==="complete"){ak.detachEvent("onreadystatechange",a4);C.ready()}}},a0={};C.fn=C.prototype={constructor:C,init:function(bu,bx,by){var bw,bz,bv,bA;if(!bu){return this}if(bu.nodeType){this.context=this[0]=bu;this.length=1;return this}if(typeof bu==="string"){if(bu.charAt(0)==="<"&&bu.charAt(bu.length-1)===">"&&bu.length>=3){bw=[null,bu,null]}else{bw=aF.exec(bu)}if(bw&&(bw[1]||!bx)){if(bw[1]){bx=bx instanceof C?bx[0]:bx;bA=(bx&&bx.nodeType?bx.ownerDocument||bx:ak);bu=C.parseHTML(bw[1],bA,true);if(e.test(bw[1])&&C.isPlainObject(bx)){this.attr.call(bu,bx,true)}return C.merge(this,bu)}else{bz=ak.getElementById(bw[2]);if(bz&&bz.parentNode){if(bz.id!==bw[2]){return by.find(bu)}this.length=1;this[0]=bz}this.context=ak;this.selector=bu;return this}}else{if(!bx||bx.jqx){return(bx||by).find(bu)}else{return this.constructor(bx).find(bu)}}}else{if(C.isFunction(bu)){return by.ready(bu)}}if(bu.selector!==G){this.selector=bu.selector;this.context=bu.context}return C.makeArray(bu,this)},selector:"",jqx:"4.5.0",length:0,size:function(){return this.length},toArray:function(){return aD.call(this)},get:function(bu){return bu==null?this.toArray():(bu<0?this[this.length+bu]:this[bu])},pushStack:function(bv,bx,bu){var bw=C.merge(this.constructor(),bv);bw.prevObject=this;bw.context=this.context;if(bx==="find"){bw.selector=this.selector+(this.selector?" ":"")+bu}else{if(bx){bw.selector=this.selector+"."+bx+"("+bu+")"}}return bw},each:function(bv,bu){return C.each(this,bv,bu)},ready:function(bu){C.ready.promise().done(bu);return this},eq:function(bu){bu=+bu;return bu===-1?this.slice(bu):this.slice(bu,bu+1)},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},slice:function(){return this.pushStack(aD.apply(this,arguments),"slice",aD.call(arguments).join(","))},map:function(bu){return this.pushStack(C.map(this,function(bw,bv){return bu.call(bw,bv,bw)}))},end:function(){return this.prevObject||this.constructor(null)},push:aR,sort:[].sort,splice:[].splice};C.fn.init.prototype=C.fn;C.extend=C.fn.extend=function(){var bD,bw,bu,bv,bA,bB,bz=arguments[0]||{},by=1,bx=arguments.length,bC=false;if(typeof bz==="boolean"){bC=bz;bz=arguments[1]||{};by=2}if(typeof bz!=="object"&&!C.isFunction(bz)){bz={}}if(bx===by){bz=this;--by}for(;by<bx;by++){if((bD=arguments[by])!=null){for(bw in bD){bu=bz[bw];bv=bD[bw];if(bz===bv){continue}if(bC&&bv&&(C.isPlainObject(bv)||(bA=C.isArray(bv)))){if(bA){bA=false;bB=bu&&C.isArray(bu)?bu:[]}else{bB=bu&&C.isPlainObject(bu)?bu:{}}bz[bw]=C.extend(bC,bB,bv)}else{if(bv!==G){bz[bw]=bv}}}}}return bz};C.extend({noConflict:function(bu){if(bd.$===C){bd.$=X}if(bu&&bd.JQXLite===C){bd.JQXLite=ax}return C},isReady:false,readyWait:1,holdReady:function(bu){if(bu){C.readyWait++}else{C.ready(true)}},ready:function(bu){if(bu===true?--C.readyWait:C.isReady){return}if(!ak.body){return setTimeout(C.ready,1)}C.isReady=true;if(bu!==true&&--C.readyWait>0){return}an.resolveWith(ak,[C]);if(C.fn.trigger){C(ak).trigger("ready").off("ready")}},isFunction:function(bu){return C.type(bu)==="function"},isArray:Array.isArray||function(bu){return C.type(bu)==="array"},isWindow:function(bu){return bu!=null&&bu==bu.window},isNumeric:function(bu){return !isNaN(parseFloat(bu))&&isFinite(bu)},type:function(bu){return bu==null?String(bu):a0[y.call(bu)]||"object"},isPlainObject:function(bw){if(!bw||C.type(bw)!=="object"||bw.nodeType||C.isWindow(bw)){return false}try{if(bw.constructor&&!b.call(bw,"constructor")&&!b.call(bw.constructor.prototype,"isPrototypeOf")){return false}}catch(bv){return false}var bu;for(bu in bw){}return bu===G||b.call(bw,bu)},isEmptyObject:function(bv){var bu;for(bu in bv){return false}return true},error:function(bu){throw new Error(bu)},parseHTML:function(bx,bw,bu){var bv;if(!bx||typeof bx!=="string"){return null}if(typeof bw==="boolean"){bu=bw;bw=0}bw=bw||ak;if((bv=e.exec(bx))){return[bw.createElement(bv[1])]}bv=C.buildFragment([bx],bw,bu?null:[]);return C.merge([],(bv.cacheable?C.clone(bv.fragment):bv.fragment).childNodes)},parseJSON:function(bu){if(!bu||typeof bu!=="string"){return null}bu=C.trim(bu);if(bd.JSON&&bd.JSON.parse){return bd.JSON.parse(bu)}if(j.test(bu.replace(a5,"@").replace(K,"]").replace(t,""))){return(new Function("return "+bu))()}C.error("Invalid JSON: "+bu)},parseXML:function(bw){var bu,bv;if(!bw||typeof bw!=="string"){return null}try{if(bd.DOMParser){bv=new DOMParser();bu=bv.parseFromString(bw,"text/xml")}else{bu=new ActiveXObject("Microsoft.XMLDOM");bu.async="false";bu.loadXML(bw)}}catch(bx){bu=G}if(!bu||!bu.documentElement||bu.getElementsByTagName("parsererror").length){C.error("Invalid XML: "+bw)}return bu},noop:function(){},globalEval:function(bu){if(bu&&at.test(bu)){(bd.execScript||function(bv){bd["eval"].call(bd,bv)})(bu)}},camelCase:function(bu){return bu.replace(au,"ms-").replace(aS,m)},nodeName:function(bv,bu){return bv.nodeName&&bv.nodeName.toLowerCase()===bu.toLowerCase()},each:function(bz,bA,bw){var bv,bx=0,by=bz.length,bu=by===G||C.isFunction(bz);if(bw){if(bu){for(bv in bz){if(bA.apply(bz[bv],bw)===false){break}}}else{for(;bx<by;){if(bA.apply(bz[bx++],bw)===false){break}}}}else{if(bu){for(bv in bz){if(bA.call(bz[bv],bv,bz[bv])===false){break}}}else{for(;bx<by;){if(bA.call(bz[bx],bx,bz[bx++])===false){break}}}}return bz},trim:aw&&!aw.call("\uFEFF\xA0")?function(bu){return bu==null?"":aw.call(bu)}:function(bu){return bu==null?"":(bu+"").replace(S,"")},makeArray:function(bu,bw){var bx,bv=bw||[];if(bu!=null){bx=C.type(bu);if(bu.length==null||bx==="string"||bx==="function"||bx==="regexp"||C.isWindow(bu)){aR.call(bv,bu)}else{C.merge(bv,bu)}}return bv},inArray:function(bx,bv,bw){var bu;if(bv){if(aA){return aA.call(bv,bx,bw)}bu=bv.length;bw=bw?bw<0?Math.max(0,bu+bw):bw:0;for(;bw<bu;bw++){if(bw in bv&&bv[bw]===bx){return bw}}}return -1},merge:function(by,bw){var bu=bw.length,bx=by.length,bv=0;if(typeof bu==="number"){for(;bv<bu;bv++){by[bx++]=bw[bv]}}else{while(bw[bv]!==G){by[bx++]=bw[bv++]}}by.length=bx;return by},grep:function(bv,bA,bu){var bz,bw=[],bx=0,by=bv.length;bu=!!bu;for(;bx<by;bx++){bz=!!bA(bv[bx],bx);if(bu!==bz){bw.push(bv[bx])}}return bw},map:function(bu,bB,bC){var bz,bA,by=[],bw=0,bv=bu.length,bx=bu instanceof C||bv!==G&&typeof bv==="number"&&((bv>0&&bu[0]&&bu[bv-1])||bv===0||C.isArray(bu));if(bx){for(;bw<bv;bw++){bz=bB(bu[bw],bw,bC);if(bz!=null){by[by.length]=bz}}}else{for(bA in bu){bz=bB(bu[bA],bA,bC);if(bz!=null){by[by.length]=bz}}}return by.concat.apply([],by)},guid:1,proxy:function(by,bx){var bw,bu,bv;if(typeof bx==="string"){bw=by[bx];bx=by;by=bw}if(!C.isFunction(by)){return G}bu=aD.call(arguments,2);bv=function(){return by.apply(bx,bu.concat(aD.call(arguments)))};bv.guid=by.guid=by.guid||C.guid++;return bv},access:function(bu,bA,bD,bB,by,bE,bC){var bw,bz=bD==null,bx=0,bv=bu.length;if(bD&&typeof bD==="object"){for(bx in bD){C.access(bu,bA,bx,bD[bx],1,bE,bB)}by=1}else{if(bB!==G){bw=bC===G&&C.isFunction(bB);if(bz){if(bw){bw=bA;bA=function(bG,bF,bH){return bw.call(C(bG),bH)}}else{bA.call(bu,bB);bA=null}}if(bA){for(;bx<bv;bx++){bA(bu[bx],bD,bw?bB.call(bu[bx],bx,bA(bu[bx],bD)):bB,bC)}}by=1}}return by?bu:bz?bA.call(bu):bv?bA(bu[0],bD):bE},now:function(){return(new Date()).getTime()}});C.ready.promise=function(bx){if(!an){an=C.Deferred();if(ak.readyState==="complete"){setTimeout(C.ready,1)}else{if(ak.addEventListener){ak.addEventListener("DOMContentLoaded",a4,false);bd.addEventListener("load",C.ready,false)}else{ak.attachEvent("onreadystatechange",a4);bd.attachEvent("onload",C.ready);var bw=false;try{bw=bd.frameElement==null&&ak.documentElement}catch(bv){}if(bw&&bw.doScroll){(function bu(){if(!C.isReady){try{bw.doScroll("left")}catch(by){return setTimeout(bu,50)}C.ready()}})()}}}}return an.promise(bx)};C.each("Boolean Number String Function Array Date RegExp Object".split(" "),function(bv,bu){a0["[object "+bu+"]"]=bu.toLowerCase()});q=C(ak);var aX={};function B(bv){var bu=aX[bv]={};C.each(bv.split(a8),function(bx,bw){bu[bw]=true});return bu}C.Callbacks=function(bE){bE=typeof bE==="string"?(aX[bE]||B(bE)):C.extend({},bE);var bx,bu,by,bw,bz,bA,bB=[],bC=!bE.once&&[],bv=function(bF){bx=bE.memory&&bF;bu=true;bA=bw||0;bw=0;bz=bB.length;by=true;for(;bB&&bA<bz;bA++){if(bB[bA].apply(bF[0],bF[1])===false&&bE.stopOnFalse){bx=false;break}}by=false;if(bB){if(bC){if(bC.length){bv(bC.shift())}}else{if(bx){bB=[]}else{bD.disable()}}}},bD={add:function(){if(bB){var bG=bB.length;(function bF(bH){C.each(bH,function(bJ,bI){var bK=C.type(bI);if(bK==="function"){if(!bE.unique||!bD.has(bI)){bB.push(bI)}}else{if(bI&&bI.length&&bK!=="string"){bF(bI)}}})})(arguments);if(by){bz=bB.length}else{if(bx){bw=bG;bv(bx)}}}return this},remove:function(){if(bB){C.each(arguments,function(bH,bF){var bG;while((bG=C.inArray(bF,bB,bG))>-1){bB.splice(bG,1);if(by){if(bG<=bz){bz--}if(bG<=bA){bA--}}}})}return this},has:function(bF){return C.inArray(bF,bB)>-1},empty:function(){bB=[];return this},disable:function(){bB=bC=bx=G;return this},disabled:function(){return !bB},lock:function(){bC=G;if(!bx){bD.disable()}return this},locked:function(){return !bC},fireWith:function(bG,bF){bF=bF||[];bF=[bG,bF.slice?bF.slice():bF];if(bB&&(!bu||bC)){if(by){bC.push(bF)}else{bv(bF)}}return this},fire:function(){bD.fireWith(this,arguments);return this},fired:function(){return !!bu}};return bD};C.extend({Deferred:function(bw){var bv=[["resolve","done",C.Callbacks("once memory"),"resolved"],["reject","fail",C.Callbacks("once memory"),"rejected"],["notify","progress",C.Callbacks("memory")]],bx="pending",by={state:function(){return bx},always:function(){bu.done(arguments).fail(arguments);return this},then:function(){var bz=arguments;return C.Deferred(function(bA){C.each(bv,function(bC,bB){var bE=bB[0],bD=bz[bC];bu[bB[1]](C.isFunction(bD)?function(){var bF=bD.apply(this,arguments);if(bF&&C.isFunction(bF.promise)){bF.promise().done(bA.resolve).fail(bA.reject).progress(bA.notify)}else{bA[bE+"With"](this===bu?bA:this,[bF])}}:bA[bE])});bz=null}).promise()},promise:function(bz){return bz!=null?C.extend(bz,by):by}},bu={};by.pipe=by.then;C.each(bv,function(bA,bz){var bC=bz[2],bB=bz[3];by[bz[1]]=bC.add;if(bB){bC.add(function(){bx=bB},bv[bA^1][2].disable,bv[2][2].lock)}bu[bz[0]]=bC.fire;bu[bz[0]+"With"]=bC.fireWith});by.promise(bu);if(bw){bw.call(bu,bu)}return bu},when:function(by){var bw=0,bA=aD.call(arguments),bu=bA.length,bv=bu!==1||(by&&C.isFunction(by.promise))?bu:0,bD=bv===1?by:C.Deferred(),bx=function(bF,bG,bE){return function(bH){bG[bF]=this;bE[bF]=arguments.length>1?aD.call(arguments):bH;if(bE===bC){bD.notifyWith(bG,bE)}else{if(!(--bv)){bD.resolveWith(bG,bE)}}}},bC,bz,bB;if(bu>1){bC=new Array(bu);bz=new Array(bu);bB=new Array(bu);for(;bw<bu;bw++){if(bA[bw]&&C.isFunction(bA[bw].promise)){bA[bw].promise().done(bx(bw,bB,bA)).fail(bD.reject).progress(bx(bw,bz,bC))}else{--bv}}}if(!bv){bD.resolveWith(bB,bA)}return bD.promise()}});C.support=(function(){var bG,bF,bD,bE,bx,bC,bB,bz,by,bw,bu,bv=ak.createElement("div");bv.setAttribute("className","t");bv.innerHTML="  <link/><table></table><a href='/a'>a</a><input type='checkbox'/>";bF=bv.getElementsByTagName("*");bD=bv.getElementsByTagName("a")[0];if(!bF||!bD||!bF.length){return{}}bE=ak.createElement("select");bx=bE.appendChild(ak.createElement("option"));bC=bv.getElementsByTagName("input")[0];bD.style.cssText="top:1px;float:left;opacity:.5";bG={leadingWhitespace:(bv.firstChild.nodeType===3),tbody:!bv.getElementsByTagName("tbody").length,htmlSerialize:!!bv.getElementsByTagName("link").length,style:/top/.test(bD.getAttribute("style")),hrefNormalized:(bD.getAttribute("href")==="/a"),opacity:/^0.5/.test(bD.style.opacity),cssFloat:!!bD.style.cssFloat,checkOn:(bC.value==="on"),optSelected:bx.selected,getSetAttribute:bv.className!=="t",enctype:!!ak.createElement("form").enctype,html5Clone:ak.createElement("nav").cloneNode(true).outerHTML!=="<:nav></:nav>",boxModel:(ak.compatMode==="CSS1Compat"),submitBubbles:true,changeBubbles:true,focusinBubbles:false,deleteExpando:true,noCloneEvent:true,inlineBlockNeedsLayout:false,shrinkWrapBlocks:false,reliableMarginRight:true,boxSizingReliable:true,pixelPosition:false};bC.checked=true;bG.noCloneChecked=bC.cloneNode(true).checked;bE.disabled=true;bG.optDisabled=!bx.disabled;try{delete bv.test}catch(bA){bG.deleteExpando=false}if(!bv.addEventListener&&bv.attachEvent&&bv.fireEvent){bv.attachEvent("onclick",bu=function(){bG.noCloneEvent=false});bv.cloneNode(true).fireEvent("onclick");bv.detachEvent("onclick",bu)}bC=ak.createElement("input");bC.value="t";bC.setAttribute("type","radio");bG.radioValue=bC.value==="t";bC.setAttribute("checked","checked");bC.setAttribute("name","t");bv.appendChild(bC);bB=ak.createDocumentFragment();bB.appendChild(bv.lastChild);bG.checkClone=bB.cloneNode(true).cloneNode(true).lastChild.checked;bG.appendChecked=bC.checked;bB.removeChild(bC);bB.appendChild(bv);if(bv.attachEvent){for(by in {submit:true,change:true,focusin:true}){bz="on"+by;bw=(bz in bv);if(!bw){bv.setAttribute(bz,"return;");bw=(typeof bv[bz]==="function")}bG[by+"Bubbles"]=bw}}C(function(){var bI,bM,bK,bL,bJ="padding:0;margin:0;border:0;display:block;overflow:hidden;",bH=ak.getElementsByTagName("body")[0];if(!bH){return}bI=ak.createElement("div");bI.style.cssText="visibility:hidden;border:0;width:0;height:0;position:static;top:0;margin-top:1px";bH.insertBefore(bI,bH.firstChild);bM=ak.createElement("div");bI.appendChild(bM);bM.innerHTML="<table><tr><td></td><td>t</td></tr></table>";bK=bM.getElementsByTagName("td");bK[0].style.cssText="padding:0;margin:0;border:0;display:none";bw=(bK[0].offsetHeight===0);bK[0].style.display="";bK[1].style.display="none";bG.reliableHiddenOffsets=bw&&(bK[0].offsetHeight===0);bM.innerHTML="";bM.style.cssText="box-sizing:border-box;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;padding:1px;border:1px;display:block;width:4px;margin-top:1%;position:absolute;top:1%;";bG.boxSizing=(bM.offsetWidth===4);bG.doesNotIncludeMarginInBodyOffset=(bH.offsetTop!==1);if(bd.getComputedStyle){bG.pixelPosition=(bd.getComputedStyle(bM,null)||{}).top!=="1%";bG.boxSizingReliable=(bd.getComputedStyle(bM,null)||{width:"4px"}).width==="4px";bL=ak.createElement("div");bL.style.cssText=bM.style.cssText=bJ;bL.style.marginRight=bL.style.width="0";bM.style.width="1px";bM.appendChild(bL);bG.reliableMarginRight=!parseFloat((bd.getComputedStyle(bL,null)||{}).marginRight)}if(typeof bM.style.zoom!=="undefined"){bM.innerHTML="";bM.style.cssText=bJ+"width:1px;padding:1px;display:inline;zoom:1";bG.inlineBlockNeedsLayout=(bM.offsetWidth===3);bM.style.display="block";bM.style.overflow="visible";bM.innerHTML="<div></div>";bM.firstChild.style.width="5px";bG.shrinkWrapBlocks=(bM.offsetWidth!==3);bI.style.zoom=1}bH.removeChild(bI);bI=bM=bK=bL=null});bB.removeChild(bv);bF=bD=bE=bx=bC=bB=bv=null;return bG})();var aK=/(?:\{[\s\S]*\}|\[[\s\S]*\])$/,aq=/([A-Z])/g;C.extend({cache:{},deletedIds:[],uuid:0,expando:"JQXLite"+(C.fn.jqx+Math.random()).replace(/\D/g,""),noData:{embed:true,object:"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000",applet:true},hasData:function(bu){bu=bu.nodeType?C.cache[bu[C.expando]]:bu[C.expando];return !!bu&&!M(bu)},data:function(bx,bv,bz,by){if(!C.acceptData(bx)){return}var bA,bC,bD=C.expando,bB=typeof bv==="string",bE=bx.nodeType,bu=bE?C.cache:bx,bw=bE?bx[bD]:bx[bD]&&bD;if((!bw||!bu[bw]||(!by&&!bu[bw].data))&&bB&&bz===G){return}if(!bw){if(bE){bx[bD]=bw=C.deletedIds.pop()||C.guid++}else{bw=bD}}if(!bu[bw]){bu[bw]={};if(!bE){bu[bw].toJSON=C.noop}}if(typeof bv==="object"||typeof bv==="function"){if(by){bu[bw]=C.extend(bu[bw],bv)}else{bu[bw].data=C.extend(bu[bw].data,bv)}}bA=bu[bw];if(!by){if(!bA.data){bA.data={}}bA=bA.data}if(bz!==G){bA[C.camelCase(bv)]=bz}if(bB){bC=bA[bv];if(bC==null){bC=bA[C.camelCase(bv)]}}else{bC=bA}return bC},removeData:function(bx,bv,by){if(!C.acceptData(bx)){return}var bB,bA,bz,bC=bx.nodeType,bu=bC?C.cache:bx,bw=bC?bx[C.expando]:C.expando;if(!bu[bw]){return}if(bv){bB=by?bu[bw]:bu[bw].data;if(bB){if(!C.isArray(bv)){if(bv in bB){bv=[bv]}else{bv=C.camelCase(bv);if(bv in bB){bv=[bv]}else{bv=bv.split(" ")}}}for(bA=0,bz=bv.length;bA<bz;bA++){delete bB[bv[bA]]}if(!(by?M:C.isEmptyObject)(bB)){return}}}if(!by){delete bu[bw].data;if(!M(bu[bw])){return}}if(bC){C.cleanData([bx],true)}else{if(C.support.deleteExpando||bu!=bu.window){delete bu[bw]}else{bu[bw]=null}}},_data:function(bv,bu,bw){return C.data(bv,bu,bw,true)},acceptData:function(bv){var bu=bv.nodeName&&C.noData[bv.nodeName.toLowerCase()];return !bu||bu!==true&&bv.getAttribute("classid")===bu}});C.fn.extend({data:function(bD,bC){var by,bv,bB,bu,bx,bw=this[0],bA=0,bz=null;if(bD===G){if(this.length){bz=C.data(bw);if(bw.nodeType===1&&!C._data(bw,"parsedAttrs")){bB=bw.attributes;for(bx=bB.length;bA<bx;bA++){bu=bB[bA].name;if(!bu.indexOf("data-")){bu=C.camelCase(bu.substring(5));a9(bw,bu,bz[bu])}}C._data(bw,"parsedAttrs",true)}}return bz}if(typeof bD==="object"){return this.each(function(){C.data(this,bD)})}by=bD.split(".",2);by[1]=by[1]?"."+by[1]:"";bv=by[1]+"!";return C.access(this,function(bE){if(bE===G){bz=this.triggerHandler("getData"+bv,[by[0]]);if(bz===G&&bw){bz=C.data(bw,bD);bz=a9(bw,bD,bz)}return bz===G&&by[1]?this.data(by[0]):bz}by[1]=bE;this.each(function(){var bF=C(this);bF.triggerHandler("setData"+bv,by);C.data(this,bD,bE);bF.triggerHandler("changeData"+bv,by)})},null,bC,arguments.length>1,null,false)},removeData:function(bu){return this.each(function(){C.removeData(this,bu)})}});function a9(bw,bv,bx){if(bx===G&&bw.nodeType===1){var bu="data-"+bv.replace(aq,"-$1").toLowerCase();bx=bw.getAttribute(bu);if(typeof bx==="string"){try{bx=bx==="true"?true:bx==="false"?false:bx==="null"?null:+bx+""===bx?+bx:aK.test(bx)?C.parseJSON(bx):bx}catch(by){}C.data(bw,bv,bx)}else{bx=G}}return bx}function M(bv){var bu;for(bu in bv){if(bu==="data"&&C.isEmptyObject(bv[bu])){continue}if(bu!=="toJSON"){return false}}return true}C.extend({queue:function(bw,bv,bx){var bu;if(bw){bv=(bv||"fx")+"queue";bu=C._data(bw,bv);if(bx){if(!bu||C.isArray(bx)){bu=C._data(bw,bv,C.makeArray(bx))}else{bu.push(bx)}}return bu||[]}},dequeue:function(bz,by){by=by||"fx";var bv=C.queue(bz,by),bA=bv.length,bx=bv.shift(),bu=C._queueHooks(bz,by),bw=function(){C.dequeue(bz,by)};if(bx==="inprogress"){bx=bv.shift();bA--}if(bx){if(by==="fx"){bv.unshift("inprogress")}delete bu.stop;bx.call(bz,bw,bu)}if(!bA&&bu){bu.empty.fire()}},_queueHooks:function(bw,bv){var bu=bv+"queueHooks";return C._data(bw,bu)||C._data(bw,bu,{empty:C.Callbacks("once memory").add(function(){C.removeData(bw,bv+"queue",true);C.removeData(bw,bu,true)})})}});C.fn.extend({queue:function(bu,bv){var bw=2;if(typeof bu!=="string"){bv=bu;bu="fx";bw--}if(arguments.length<bw){return C.queue(this[0],bu)}return bv===G?this:this.each(function(){var bx=C.queue(this,bu,bv);C._queueHooks(this,bu);if(bu==="fx"&&bx[0]!=="inprogress"){C.dequeue(this,bu)}})},dequeue:function(bu){return this.each(function(){C.dequeue(this,bu)})},delay:function(bv,bu){bv=C.fx?C.fx.speeds[bv]||bv:bv;bu=bu||"fx";return this.queue(bu,function(bx,bw){var by=setTimeout(bx,bv);bw.stop=function(){clearTimeout(by)}})},clearQueue:function(bu){return this.queue(bu||"fx",[])},promise:function(bw,bA){var bv,bx=1,bB=C.Deferred(),bz=this,bu=this.length,by=function(){if(!(--bx)){bB.resolveWith(bz,[bz])}};if(typeof bw!=="string"){bA=bw;bw=G}bw=bw||"fx";while(bu--){bv=C._data(bz[bu],bw+"queueHooks");if(bv&&bv.empty){bx++;bv.empty.add(by)}}by();return bB.promise(bA)}});var bh,aT,ay,aI=/[\t\r\n]/g,aP=/\r/g,d=/^(?:button|input)$/i,z=/^(?:button|input|object|select|textarea)$/i,h=/^a(?:rea|)$/i,ae=/^(?:autofocus|autoplay|async|checked|controls|defer|disabled|hidden|loop|multiple|open|readonly|required|scoped|selected)$/i,A=C.support.getSetAttribute;C.fn.extend({attr:function(bu,bv){return C.access(this,C.attr,bu,bv,arguments.length>1)},removeAttr:function(bu){return this.each(function(){C.removeAttr(this,bu)})},prop:function(bu,bv){return C.access(this,C.prop,bu,bv,arguments.length>1)},removeProp:function(bu){bu=C.propFix[bu]||bu;return this.each(function(){try{this[bu]=G;delete this[bu]}catch(bv){}})},addClass:function(by){var bA,bw,bv,bx,bz,bB,bu;if(C.isFunction(by)){return this.each(function(bC){C(this).addClass(by.call(this,bC,this.className))})}if(by&&typeof by==="string"){bA=by.split(a8);for(bw=0,bv=this.length;bw<bv;bw++){bx=this[bw];if(bx.nodeType===1){if(!bx.className&&bA.length===1){bx.className=by}else{bz=" "+bx.className+" ";for(bB=0,bu=bA.length;bB<bu;bB++){if(bz.indexOf(" "+bA[bB]+" ")<0){bz+=bA[bB]+" "}}bx.className=C.trim(bz)}}}}return this},removeClass:function(bA){var bx,by,bz,bB,bv,bw,bu;if(C.isFunction(bA)){return this.each(function(bC){C(this).removeClass(bA.call(this,bC,this.className))})}if((bA&&typeof bA==="string")||bA===G){bx=(bA||"").split(a8);for(bw=0,bu=this.length;bw<bu;bw++){bz=this[bw];if(bz.nodeType===1&&bz.className){by=(" "+bz.className+" ").replace(aI," ");for(bB=0,bv=bx.length;bB<bv;bB++){while(by.indexOf(" "+bx[bB]+" ")>=0){by=by.replace(" "+bx[bB]+" "," ")}}bz.className=bA?C.trim(by):""}}}return this},toggleClass:function(bx,bv){var bw=typeof bx,bu=typeof bv==="boolean";if(C.isFunction(bx)){return this.each(function(by){C(this).toggleClass(bx.call(this,by,this.className,bv),bv)})}return this.each(function(){if(bw==="string"){var bA,bz=0,by=C(this),bB=bv,bC=bx.split(a8);while((bA=bC[bz++])){bB=bu?bB:!by.hasClass(bA);by[bB?"addClass":"removeClass"](bA)}}else{if(bw==="undefined"||bw==="boolean"){if(this.className){C._data(this,"__className__",this.className)}this.className=this.className||bx===false?"":C._data(this,"__className__")||""}}})},hasClass:function(bu){var bx=" "+bu+" ",bw=0,bv=this.length;for(;bw<bv;bw++){if(this[bw].nodeType===1&&(" "+this[bw].className+" ").replace(aI," ").indexOf(bx)>=0){return true}}return false},val:function(bx){var bu,bv,by,bw=this[0];if(!arguments.length){if(bw){bu=C.valHooks[bw.type]||C.valHooks[bw.nodeName.toLowerCase()];if(bu&&"get" in bu&&(bv=bu.get(bw,"value"))!==G){return bv}bv=bw.value;return typeof bv==="string"?bv.replace(aP,""):bv==null?"":bv}return}by=C.isFunction(bx);return this.each(function(bA){var bB,bz=C(this);if(this.nodeType!==1){return}if(by){bB=bx.call(this,bA,bz.val())}else{bB=bx}if(bB==null){bB=""}else{if(typeof bB==="number"){bB+=""}else{if(C.isArray(bB)){bB=C.map(bB,function(bC){return bC==null?"":bC+""})}}}bu=C.valHooks[this.type]||C.valHooks[this.nodeName.toLowerCase()];if(!bu||!("set" in bu)||bu.set(this,bB,"value")===G){this.value=bB}})}});C.extend({valHooks:{option:{get:function(bu){var bv=bu.attributes.value;return !bv||bv.specified?bu.value:bu.text}},select:{get:function(bu){var bA,bw,bC=bu.options,by=bu.selectedIndex,bx=bu.type==="select-one"||by<0,bB=bx?null:[],bz=bx?by+1:bC.length,bv=by<0?bz:bx?by:0;for(;bv<bz;bv++){bw=bC[bv];if((bw.selected||bv===by)&&(C.support.optDisabled?!bw.disabled:bw.getAttribute("disabled")===null)&&(!bw.parentNode.disabled||!C.nodeName(bw.parentNode,"optgroup"))){bA=C(bw).val();if(bx){return bA}bB.push(bA)}}return bB},set:function(bv,bw){var bu=C.makeArray(bw);C(bv).find("option").each(function(){this.selected=C.inArray(C(this).val(),bu)>=0});if(!bu.length){bv.selectedIndex=-1}return bu}}},attrFn:{},attr:function(bA,bx,bB,bz){var bw,bu,by,bv=bA.nodeType;if(!bA||bv===3||bv===8||bv===2){return}if(bz&&C.isFunction(C.fn[bx])){return C(bA)[bx](bB)}if(typeof bA.getAttribute==="undefined"){return C.prop(bA,bx,bB)}by=bv!==1||!C.isXMLDoc(bA);if(by){bx=bx.toLowerCase();bu=C.attrHooks[bx]||(ae.test(bx)?aT:bh)}if(bB!==G){if(bB===null){C.removeAttr(bA,bx);return}else{if(bu&&"set" in bu&&by&&(bw=bu.set(bA,bB,bx))!==G){return bw}else{bA.setAttribute(bx,bB+"");return bB}}}else{if(bu&&"get" in bu&&by&&(bw=bu.get(bA,bx))!==null){return bw}else{bw=bA.getAttribute(bx);return bw===null?G:bw}}},removeAttr:function(bx,bz){var by,bA,bv,bu,bw=0;if(bz&&bx.nodeType===1){bA=bz.split(a8);for(;bw<bA.length;bw++){bv=bA[bw];if(bv){by=C.propFix[bv]||bv;bu=ae.test(bv);if(!bu){C.attr(bx,bv,"")}bx.removeAttribute(A?bv:by);if(bu&&by in bx){bx[by]=false}}}}},attrHooks:{type:{set:function(bu,bv){if(d.test(bu.nodeName)&&bu.parentNode){C.error("type property can't be changed")}else{if(!C.support.radioValue&&bv==="radio"&&C.nodeName(bu,"input")){var bw=bu.value;bu.setAttribute("type",bv);if(bw){bu.value=bw}return bv}}}},value:{get:function(bv,bu){if(bh&&C.nodeName(bv,"button")){return bh.get(bv,bu)}return bu in bv?bv.value:null},set:function(bv,bw,bu){if(bh&&C.nodeName(bv,"button")){return bh.set(bv,bw,bu)}bv.value=bw}}},propFix:{tabindex:"tabIndex",readonly:"readOnly","for":"htmlFor","class":"className",maxlength:"maxLength",cellspacing:"cellSpacing",cellpadding:"cellPadding",rowspan:"rowSpan",colspan:"colSpan",usemap:"useMap",frameborder:"frameBorder",contenteditable:"contentEditable"},prop:function(bz,bx,bA){var bw,bu,by,bv=bz.nodeType;if(!bz||bv===3||bv===8||bv===2){return}by=bv!==1||!C.isXMLDoc(bz);if(by){bx=C.propFix[bx]||bx;bu=C.propHooks[bx]}if(bA!==G){if(bu&&"set" in bu&&(bw=bu.set(bz,bA,bx))!==G){return bw}else{return(bz[bx]=bA)}}else{if(bu&&"get" in bu&&(bw=bu.get(bz,bx))!==null){return bw}else{return bz[bx]}}},propHooks:{tabIndex:{get:function(bv){var bu=bv.getAttributeNode("tabindex");return bu&&bu.specified?parseInt(bu.value,10):z.test(bv.nodeName)||h.test(bv.nodeName)&&bv.href?0:G}}}});aT={get:function(bv,bu){var bx,bw=C.prop(bv,bu);return bw===true||typeof bw!=="boolean"&&(bx=bv.getAttributeNode(bu))&&bx.nodeValue!==false?bu.toLowerCase():G},set:function(bv,bx,bu){var bw;if(bx===false){C.removeAttr(bv,bu)}else{bw=C.propFix[bu]||bu;if(bw in bv){bv[bw]=true}bv.setAttribute(bu,bu.toLowerCase())}return bu}};if(!C.support.enctype){C.propFix.enctype="encoding"}var bf=/^(?:textarea|input|select)$/i,n=/^([^\.]*|)(?:\.(.+)|)$/,F=/(?:^|\s)hover(\.\S+|)\b/,aH=/^key/,bi=/^(?:mouse|contextmenu)|click/,N=/^(?:focusinfocus|focusoutblur)$/,bs=function(bu){return C.event.special.hover?bu:bu.replace(F,"mouseenter$1 mouseleave$1")};C.event={add:function(bx,bB,bI,bz,by){var bC,bA,bJ,bH,bG,bE,bu,bF,bv,bw,bD;if(bx.nodeType===3||bx.nodeType===8||!bB||!bI||!(bC=C._data(bx))){return}if(bI.handler){bv=bI;bI=bv.handler;by=bv.selector}if(!bI.guid){bI.guid=C.guid++}bJ=bC.events;if(!bJ){bC.events=bJ={}}bA=bC.handle;if(!bA){bC.handle=bA=function(bK){return typeof C!=="undefined"&&(!bK||C.event.triggered!==bK.type)?C.event.dispatch.apply(bA.elem,arguments):G};bA.elem=bx}bB=C.trim(bs(bB)).split(" ");for(bH=0;bH<bB.length;bH++){bG=n.exec(bB[bH])||[];bE=bG[1];bu=(bG[2]||"").split(".").sort();bD=C.event.special[bE]||{};bE=(by?bD.delegateType:bD.bindType)||bE;bD=C.event.special[bE]||{};bF=C.extend({type:bE,origType:bG[1],data:bz,handler:bI,guid:bI.guid,selector:by,needsContext:by&&C.expr.match.needsContext.test(by),namespace:bu.join(".")},bv);bw=bJ[bE];if(!bw){bw=bJ[bE]=[];bw.delegateCount=0;if(!bD.setup||bD.setup.call(bx,bz,bu,bA)===false){if(bx.addEventListener){bx.addEventListener(bE,bA,false)}else{if(bx.attachEvent){bx.attachEvent("on"+bE,bA)}}}}if(bD.add){bD.add.call(bx,bF);if(!bF.handler.guid){bF.handler.guid=bI.guid}}if(by){bw.splice(bw.delegateCount++,0,bF)}else{bw.push(bF)}C.event.global[bE]=true}bx=null},global:{},remove:function(bx,bC,bI,by,bB){var bJ,bK,bF,bw,bv,bz,bA,bH,bE,bu,bG,bD=C.hasData(bx)&&C._data(bx);if(!bD||!(bH=bD.events)){return}bC=C.trim(bs(bC||"")).split(" ");for(bJ=0;bJ<bC.length;bJ++){bK=n.exec(bC[bJ])||[];bF=bw=bK[1];bv=bK[2];if(!bF){for(bF in bH){C.event.remove(bx,bF+bC[bJ],bI,by,true)}continue}bE=C.event.special[bF]||{};bF=(by?bE.delegateType:bE.bindType)||bF;bu=bH[bF]||[];bz=bu.length;bv=bv?new RegExp("(^|\\.)"+bv.split(".").sort().join("\\.(?:.*\\.|)")+"(\\.|$)"):null;for(bA=0;bA<bu.length;bA++){bG=bu[bA];if((bB||bw===bG.origType)&&(!bI||bI.guid===bG.guid)&&(!bv||bv.test(bG.namespace))&&(!by||by===bG.selector||by==="**"&&bG.selector)){bu.splice(bA--,1);if(bG.selector){bu.delegateCount--}if(bE.remove){bE.remove.call(bx,bG)}}}if(bu.length===0&&bz!==bu.length){if(!bE.teardown||bE.teardown.call(bx,bv,bD.handle)===false){C.removeEvent(bx,bF,bD.handle)}delete bH[bF]}}if(C.isEmptyObject(bH)){delete bD.handle;C.removeData(bx,"events",true)}},customEvent:{getData:true,setData:true,changeData:true},trigger:function(bv,bC,bA,bJ){if(bA&&(bA.nodeType===3||bA.nodeType===8)){return}var bu,bx,bD,bH,bz,by,bF,bE,bB,bI,bG=bv.type||bv,bw=[];if(N.test(bG+C.event.triggered)){return}if(bG.indexOf("!")>=0){bG=bG.slice(0,-1);bx=true}if(bG.indexOf(".")>=0){bw=bG.split(".");bG=bw.shift();bw.sort()}if((!bA||C.event.customEvent[bG])&&!C.event.global[bG]){return}bv=typeof bv==="object"?bv[C.expando]?bv:new C.Event(bG,bv):new C.Event(bG);bv.type=bG;bv.isTrigger=true;bv.exclusive=bx;bv.namespace=bw.join(".");bv.namespace_re=bv.namespace?new RegExp("(^|\\.)"+bw.join("\\.(?:.*\\.|)")+"(\\.|$)"):null;by=bG.indexOf(":")<0?"on"+bG:"";if(!bA){bu=C.cache;for(bD in bu){if(bu[bD].events&&bu[bD].events[bG]){C.event.trigger(bv,bC,bu[bD].handle.elem,true)}}return}bv.result=G;if(!bv.target){bv.target=bA}bC=bC!=null?C.makeArray(bC):[];bC.unshift(bv);bF=C.event.special[bG]||{};if(bF.trigger&&bF.trigger.apply(bA,bC)===false){return}bB=[[bA,bF.bindType||bG]];if(!bJ&&!bF.noBubble&&!C.isWindow(bA)){bI=bF.delegateType||bG;bH=N.test(bI+bG)?bA:bA.parentNode;for(bz=bA;bH;bH=bH.parentNode){bB.push([bH,bI]);bz=bH}if(bz===(bA.ownerDocument||ak)){bB.push([bz.defaultView||bz.parentWindow||bd,bI])}}for(bD=0;bD<bB.length&&!bv.isPropagationStopped();bD++){bH=bB[bD][0];bv.type=bB[bD][1];bE=(C._data(bH,"events")||{})[bv.type]&&C._data(bH,"handle");if(bE){bE.apply(bH,bC)}bE=by&&bH[by];if(bE&&C.acceptData(bH)&&bE.apply&&bE.apply(bH,bC)===false){bv.preventDefault()}}bv.type=bG;if(!bJ&&!bv.isDefaultPrevented()){if((!bF._default||bF._default.apply(bA.ownerDocument,bC)===false)&&!(bG==="click"&&C.nodeName(bA,"a"))&&C.acceptData(bA)){if(by&&bA[bG]&&((bG!=="focus"&&bG!=="blur")||bv.target.offsetWidth!==0)&&!C.isWindow(bA)){bz=bA[by];if(bz){bA[by]=null}C.event.triggered=bG;bA[bG]();C.event.triggered=G;if(bz){bA[by]=bz}}}}return bv.result},dispatch:function(bu){bu=C.event.fix(bu||bd.event);var bB,bA,bK,bE,bD,bv,bC,bI,bx,bJ,by=((C._data(this,"events")||{})[bu.type]||[]),bz=by.delegateCount,bG=aD.call(arguments),bw=!bu.exclusive&&!bu.namespace,bF=C.event.special[bu.type]||{},bH=[];bG[0]=bu;bu.delegateTarget=this;if(bF.preDispatch&&bF.preDispatch.call(this,bu)===false){return}if(bz&&!(bu.button&&bu.type==="click")){for(bK=bu.target;bK!=this;bK=bK.parentNode||this){if(bK.disabled!==true||bu.type!=="click"){bD={};bC=[];for(bB=0;bB<bz;bB++){bI=by[bB];bx=bI.selector;if(bD[bx]===G){bD[bx]=bI.needsContext?C(bx,this).index(bK)>=0:C.find(bx,this,null,[bK]).length}if(bD[bx]){bC.push(bI)}}if(bC.length){bH.push({elem:bK,matches:bC})}}}}if(by.length>bz){bH.push({elem:this,matches:by.slice(bz)})}for(bB=0;bB<bH.length&&!bu.isPropagationStopped();bB++){bv=bH[bB];bu.currentTarget=bv.elem;for(bA=0;bA<bv.matches.length&&!bu.isImmediatePropagationStopped();bA++){bI=bv.matches[bA];if(bw||(!bu.namespace&&!bI.namespace)||bu.namespace_re&&bu.namespace_re.test(bI.namespace)){bu.data=bI.data;bu.handleObj=bI;bE=((C.event.special[bI.origType]||{}).handle||bI.handler).apply(bv.elem,bG);if(bE!==G){bu.result=bE;if(bE===false){bu.preventDefault();bu.stopPropagation()}}}}}if(bF.postDispatch){bF.postDispatch.call(this,bu)}return bu.result},props:"attrChange attrName relatedNode srcElement altKey bubbles cancelable ctrlKey currentTarget eventPhase metaKey relatedTarget shiftKey target timeStamp view which".split(" "),fixHooks:{},keyHooks:{props:"char charCode key keyCode".split(" "),filter:function(bv,bu){if(bv.which==null){bv.which=bu.charCode!=null?bu.charCode:bu.keyCode}return bv}},mouseHooks:{props:"button buttons clientX clientY fromElement offsetX offsetY pageX pageY screenX screenY toElement".split(" "),filter:function(bx,bw){var by,bz,bu,bv=bw.button,bA=bw.fromElement;if(bx.pageX==null&&bw.clientX!=null){by=bx.target.ownerDocument||ak;bz=by.documentElement;bu=by.body;bx.pageX=bw.clientX+(bz&&bz.scrollLeft||bu&&bu.scrollLeft||0)-(bz&&bz.clientLeft||bu&&bu.clientLeft||0);bx.pageY=bw.clientY+(bz&&bz.scrollTop||bu&&bu.scrollTop||0)-(bz&&bz.clientTop||bu&&bu.clientTop||0)}if(!bx.relatedTarget&&bA){bx.relatedTarget=bA===bx.target?bw.toElement:bA}if(!bx.which&&bv!==G){bx.which=(bv&1?1:(bv&2?3:(bv&4?2:0)))}return bx}},fix:function(bw){if(bw[C.expando]){return bw}var bv,bz,bu=bw,bx=C.event.fixHooks[bw.type]||{},by=bx.props?this.props.concat(bx.props):this.props;bw=C.Event(bu);for(bv=by.length;bv;){bz=by[--bv];bw[bz]=bu[bz]}if(!bw.target){bw.target=bu.srcElement||ak}if(bw.target.nodeType===3){bw.target=bw.target.parentNode}bw.metaKey=!!bw.metaKey;return bx.filter?bx.filter(bw,bu):bw},special:{load:{noBubble:true},focus:{delegateType:"focusin"},blur:{delegateType:"focusout"},beforeunload:{setup:function(bw,bv,bu){if(C.isWindow(this)){this.onbeforeunload=bu}},teardown:function(bv,bu){if(this.onbeforeunload===bu){this.onbeforeunload=null}}}},simulate:function(bv,bx,bw,bu){var by=C.extend(new C.Event(),bw,{type:bv,isSimulated:true,originalEvent:{}});if(bu){C.event.trigger(by,null,bx)}else{C.event.dispatch.call(bx,by)}if(by.isDefaultPrevented()){bw.preventDefault()}}};C.event.handle=C.event.dispatch;C.removeEvent=ak.removeEventListener?function(bv,bu,bw){if(bv.removeEventListener){bv.removeEventListener(bu,bw,false)}}:function(bw,bv,bx){var bu="on"+bv;if(bw.detachEvent){if(typeof bw[bu]==="undefined"){bw[bu]=null}bw.detachEvent(bu,bx)}};C.Event=function(bv,bu){if(!(this instanceof C.Event)){return new C.Event(bv,bu)}if(bv&&bv.type){this.originalEvent=bv;this.type=bv.type;this.isDefaultPrevented=(bv.defaultPrevented||bv.returnValue===false||bv.getPreventDefault&&bv.getPreventDefault())?f:bn}else{this.type=bv}if(bu){C.extend(this,bu)}this.timeStamp=bv&&bv.timeStamp||C.now();this[C.expando]=true};function bn(){return false}function f(){return true}C.Event.prototype={preventDefault:function(){this.isDefaultPrevented=f;var bu=this.originalEvent;if(!bu){return}if(bu.preventDefault){bu.preventDefault()}else{bu.returnValue=false}},stopPropagation:function(){this.isPropagationStopped=f;var bu=this.originalEvent;if(!bu){return}if(bu.stopPropagation){bu.stopPropagation()}bu.cancelBubble=true},stopImmediatePropagation:function(){this.isImmediatePropagationStopped=f;this.stopPropagation()},isDefaultPrevented:bn,isPropagationStopped:bn,isImmediatePropagationStopped:bn};C.each({mouseenter:"mouseover",mouseleave:"mouseout"},function(bv,bu){C.event.special[bv]={delegateType:bu,bindType:bu,handle:function(bz){var bx,bB=this,bA=bz.relatedTarget,by=bz.handleObj,bw=by.selector;if(!bA||(bA!==bB&&!C.contains(bB,bA))){bz.type=by.origType;bx=by.handler.apply(this,arguments);bz.type=bu}return bx}}});C.fn.extend({on:function(bw,bu,bz,by,bv){var bA,bx;if(typeof bw==="object"){if(typeof bu!=="string"){bz=bz||bu;bu=G}for(bx in bw){this.on(bx,bu,bz,bw[bx],bv)}return this}if(bz==null&&by==null){by=bu;bz=bu=G}else{if(by==null){if(typeof bu==="string"){by=bz;bz=G}else{by=bz;bz=bu;bu=G}}}if(by===false){by=bn}else{if(!by){return this}}if(bv===1){bA=by;by=function(bB){C().off(bB);return bA.apply(this,arguments)};by.guid=bA.guid||(bA.guid=C.guid++)}return this.each(function(){C.event.add(this,bw,by,bz,bu)})},off:function(bw,bu,by){var bv,bx;if(bw&&bw.preventDefault&&bw.handleObj){bv=bw.handleObj;C(bw.delegateTarget).off(bv.namespace?bv.origType+"."+bv.namespace:bv.origType,bv.selector,bv.handler);return this}if(typeof bw==="object"){for(bx in bw){this.off(bx,bu,bw[bx])}return this}if(bu===false||typeof bu==="function"){by=bu;bu=G}if(by===false){by=bn}return this.each(function(){C.event.remove(this,bw,by,bu)})},delegate:function(bu,bv,bx,bw){return this.on(bv,bu,bx,bw)},undelegate:function(bu,bv,bw){return arguments.length===1?this.off(bu,"**"):this.off(bv,bu||"**",bw)},trigger:function(bu,bv){return this.each(function(){C.event.trigger(bu,bv,this)})},triggerHandler:function(bu,bv){if(this[0]){return C.event.trigger(bu,bv,this[0],true)}},toggle:function(bx){var bv=arguments,bu=bx.guid||C.guid++,bw=0,by=function(bz){var bA=(C._data(this,"lastToggle"+bx.guid)||0)%bw;C._data(this,"lastToggle"+bx.guid,bA+1);bz.preventDefault();return bv[bA].apply(this,arguments)||false};by.guid=bu;while(bw<bv.length){bv[bw++].guid=bu}return this.click(by)},hover:function(bu,bv){return this.mouseenter(bu).mouseleave(bv||bu)}});C.each(("blur focus focusin focusout load resize scroll unload click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup error contextmenu").split(" "),function(bv,bu){C.fn[bu]=function(bx,bw){if(bw==null){bw=bx;bx=null}return arguments.length>0?this.on(bu,null,bx,bw):this.trigger(bu)};if(aH.test(bu)){C.event.fixHooks[bu]=C.event.keyHooks}if(bi.test(bu)){C.event.fixHooks[bu]=C.event.mouseHooks}});
+var oldBrowser=document.all&&!document.addEventListener;if(!oldBrowser){(function(bd,G){var q,an,ak=bd.document,bo=bd.location,bt=bd.navigator,ax=bd.JQXLite,X=bd.$,aR=Array.prototype.push,aD=Array.prototype.slice,aA=Array.prototype.indexOf,y=Object.prototype.toString,b=Object.prototype.hasOwnProperty,aw=String.prototype.trim,C=function(bu,bv){return new C.fn.init(bu,bv,q)},aE=/[\-+]?(?:\d*\.|)\d+(?:[eE][\-+]?\d+|)/.source,at=/\S/,a8=/\s+/,S=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,aF=/^(?:[^#<]*(<[\w\W]+>)[^>]*$|#([\w\-]*)$)/,e=/^<(\w+)\s*\/?>(?:<\/\1>|)$/,j=/^[\],:{}\s]*$/,t=/(?:^|:|,)(?:\s*\[)+/g,a5=/\\(?:["\\\/bfnrt]|u[\da-fA-F]{4})/g,K=/"[^"\\\r\n]*"|true|false|null|-?(?:\d\d*\.|)\d+(?:[eE][\-+]?\d+|)/g,au=/^-ms-/,aS=/-([\da-z])/gi,m=function(bu,bv){return(bv+"").toUpperCase()},a4=function(){if(ak.addEventListener){ak.removeEventListener("DOMContentLoaded",a4,false);C.ready()}else{if(ak.readyState==="complete"){ak.detachEvent("onreadystatechange",a4);C.ready()}}},a0={};C.fn=C.prototype={constructor:C,init:function(bu,bx,by){var bw,bz,bv,bA;if(!bu){return this}if(bu.nodeType){this.context=this[0]=bu;this.length=1;return this}if(typeof bu==="string"){if(bu.charAt(0)==="<"&&bu.charAt(bu.length-1)===">"&&bu.length>=3){bw=[null,bu,null]}else{bw=aF.exec(bu)}if(bw&&(bw[1]||!bx)){if(bw[1]){bx=bx instanceof C?bx[0]:bx;bA=(bx&&bx.nodeType?bx.ownerDocument||bx:ak);bu=C.parseHTML(bw[1],bA,true);if(e.test(bw[1])&&C.isPlainObject(bx)){this.attr.call(bu,bx,true)}return C.merge(this,bu)}else{bz=ak.getElementById(bw[2]);if(bz&&bz.parentNode){if(bz.id!==bw[2]){return by.find(bu)}this.length=1;this[0]=bz}this.context=ak;this.selector=bu;return this}}else{if(!bx||bx.jqx){return(bx||by).find(bu)}else{return this.constructor(bx).find(bu)}}}else{if(C.isFunction(bu)){return by.ready(bu)}}if(bu.selector!==G){this.selector=bu.selector;this.context=bu.context}return C.makeArray(bu,this)},selector:"",jqx:"4.5.0",length:0,size:function(){return this.length},toArray:function(){return aD.call(this)},get:function(bu){return bu==null?this.toArray():(bu<0?this[this.length+bu]:this[bu])},pushStack:function(bv,bx,bu){var bw=C.merge(this.constructor(),bv);bw.prevObject=this;bw.context=this.context;if(bx==="find"){bw.selector=this.selector+(this.selector?" ":"")+bu}else{if(bx){bw.selector=this.selector+"."+bx+"("+bu+")"}}return bw},each:function(bv,bu){return C.each(this,bv,bu)},ready:function(bu){C.ready.promise().done(bu);return this},eq:function(bu){bu=+bu;return bu===-1?this.slice(bu):this.slice(bu,bu+1)},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},slice:function(){return this.pushStack(aD.apply(this,arguments),"slice",aD.call(arguments).join(","))},map:function(bu){return this.pushStack(C.map(this,function(bw,bv){return bu.call(bw,bv,bw)}))},end:function(){return this.prevObject||this.constructor(null)},push:aR,sort:[].sort,splice:[].splice};C.fn.init.prototype=C.fn;C.extend=C.fn.extend=function(){var bD,bw,bu,bv,bA,bB,bz=arguments[0]||{},by=1,bx=arguments.length,bC=false;if(typeof bz==="boolean"){bC=bz;bz=arguments[1]||{};by=2}if(typeof bz!=="object"&&!C.isFunction(bz)){bz={}}if(bx===by){bz=this;--by}for(;by<bx;by++){if((bD=arguments[by])!=null){for(bw in bD){bu=bz[bw];bv=bD[bw];if(bz===bv){continue}if(bC&&bv&&(C.isPlainObject(bv)||(bA=C.isArray(bv)))){if(bA){bA=false;bB=bu&&C.isArray(bu)?bu:[]}else{bB=bu&&C.isPlainObject(bu)?bu:{}}bz[bw]=C.extend(bC,bB,bv)}else{if(bv!==G){bz[bw]=bv}}}}}return bz};C.extend({noConflict:function(bu){if(bd.$===C){bd.$=X}if(bu&&bd.JQXLite===C){bd.JQXLite=ax}return C},isReady:false,readyWait:1,holdReady:function(bu){if(bu){C.readyWait++}else{C.ready(true)}},ready:function(bu){if(bu===true?--C.readyWait:C.isReady){return}if(!ak.body){return setTimeout(C.ready,1)}C.isReady=true;if(bu!==true&&--C.readyWait>0){return}an.resolveWith(ak,[C]);if(C.fn.trigger){C(ak).trigger("ready").off("ready")}},isFunction:function(bu){return C.type(bu)==="function"},isArray:Array.isArray||function(bu){return C.type(bu)==="array"},isWindow:function(bu){return bu!=null&&bu==bu.window},isNumeric:function(bu){return !isNaN(parseFloat(bu))&&isFinite(bu)},type:function(bu){return bu==null?String(bu):a0[y.call(bu)]||"object"},isPlainObject:function(bw){if(!bw||C.type(bw)!=="object"||bw.nodeType||C.isWindow(bw)){return false}try{if(bw.constructor&&!b.call(bw,"constructor")&&!b.call(bw.constructor.prototype,"isPrototypeOf")){return false}}catch(bv){return false}var bu;for(bu in bw){}return bu===G||b.call(bw,bu)},isEmptyObject:function(bv){var bu;for(bu in bv){return false}return true},error:function(bu){throw new Error(bu)},parseHTML:function(bx,bw,bu){var bv;if(!bx||typeof bx!=="string"){return null}if(typeof bw==="boolean"){bu=bw;bw=0}bw=bw||ak;if((bv=e.exec(bx))){return[bw.createElement(bv[1])]}bv=C.buildFragment([bx],bw,bu?null:[]);return C.merge([],(bv.cacheable?C.clone(bv.fragment):bv.fragment).childNodes)},parseJSON:function(bu){if(!bu||typeof bu!=="string"){return null}bu=C.trim(bu);if(bd.JSON&&bd.JSON.parse){return bd.JSON.parse(bu)}if(j.test(bu.replace(a5,"@").replace(K,"]").replace(t,""))){return(new Function("return "+bu))()}C.error("Invalid JSON: "+bu)},parseXML:function(bw){var bu,bv;if(!bw||typeof bw!=="string"){return null}try{if(bd.DOMParser){bv=new DOMParser();bu=bv.parseFromString(bw,"text/xml")}else{bu=new ActiveXObject("Microsoft.XMLDOM");bu.async="false";bu.loadXML(bw)}}catch(bx){bu=G}if(!bu||!bu.documentElement||bu.getElementsByTagName("parsererror").length){C.error("Invalid XML: "+bw)}return bu},noop:function(){},globalEval:function(bu){if(bu&&at.test(bu)){(bd.execScript||function(bv){bd["eval"].call(bd,bv)})(bu)}},camelCase:function(bu){return bu.replace(au,"ms-").replace(aS,m)},nodeName:function(bv,bu){return bv.nodeName&&bv.nodeName.toLowerCase()===bu.toLowerCase()},each:function(bz,bA,bw){var bv,bx=0,by=bz.length,bu=by===G||C.isFunction(bz);if(bw){if(bu){for(bv in bz){if(bA.apply(bz[bv],bw)===false){break}}}else{for(;bx<by;){if(bA.apply(bz[bx++],bw)===false){break}}}}else{if(bu){for(bv in bz){if(bA.call(bz[bv],bv,bz[bv])===false){break}}}else{for(;bx<by;){if(bA.call(bz[bx],bx,bz[bx++])===false){break}}}}return bz},trim:aw&&!aw.call("\uFEFF\xA0")?function(bu){return bu==null?"":aw.call(bu)}:function(bu){return bu==null?"":(bu+"").replace(S,"")},makeArray:function(bu,bw){var bx,bv=bw||[];if(bu!=null){bx=C.type(bu);if(bu.length==null||bx==="string"||bx==="function"||bx==="regexp"||C.isWindow(bu)){aR.call(bv,bu)}else{C.merge(bv,bu)}}return bv},inArray:function(bx,bv,bw){var bu;if(bv){if(aA){return aA.call(bv,bx,bw)}bu=bv.length;bw=bw?bw<0?Math.max(0,bu+bw):bw:0;for(;bw<bu;bw++){if(bw in bv&&bv[bw]===bx){return bw}}}return -1},merge:function(by,bw){var bu=bw.length,bx=by.length,bv=0;if(typeof bu==="number"){for(;bv<bu;bv++){by[bx++]=bw[bv]}}else{while(bw[bv]!==G){by[bx++]=bw[bv++]}}by.length=bx;return by},grep:function(bv,bA,bu){var bz,bw=[],bx=0,by=bv.length;bu=!!bu;for(;bx<by;bx++){bz=!!bA(bv[bx],bx);if(bu!==bz){bw.push(bv[bx])}}return bw},map:function(bu,bB,bC){var bz,bA,by=[],bw=0,bv=bu.length,bx=bu instanceof C||bv!==G&&typeof bv==="number"&&((bv>0&&bu[0]&&bu[bv-1])||bv===0||C.isArray(bu));if(bx){for(;bw<bv;bw++){bz=bB(bu[bw],bw,bC);if(bz!=null){by[by.length]=bz}}}else{for(bA in bu){bz=bB(bu[bA],bA,bC);if(bz!=null){by[by.length]=bz}}}return by.concat.apply([],by)},guid:1,proxy:function(by,bx){var bw,bu,bv;if(typeof bx==="string"){bw=by[bx];bx=by;by=bw}if(!C.isFunction(by)){return G}bu=aD.call(arguments,2);bv=function(){return by.apply(bx,bu.concat(aD.call(arguments)))};bv.guid=by.guid=by.guid||C.guid++;return bv},access:function(bu,bA,bD,bB,by,bE,bC){var bw,bz=bD==null,bx=0,bv=bu.length;if(bD&&typeof bD==="object"){for(bx in bD){C.access(bu,bA,bx,bD[bx],1,bE,bB)}by=1}else{if(bB!==G){bw=bC===G&&C.isFunction(bB);if(bz){if(bw){bw=bA;bA=function(bG,bF,bH){return bw.call(C(bG),bH)}}else{bA.call(bu,bB);bA=null}}if(bA){for(;bx<bv;bx++){bA(bu[bx],bD,bw?bB.call(bu[bx],bx,bA(bu[bx],bD)):bB,bC)}}by=1}}return by?bu:bz?bA.call(bu):bv?bA(bu[0],bD):bE},now:function(){return(new Date()).getTime()}});C.ready.promise=function(bx){if(!an){an=C.Deferred();if(ak.readyState==="complete"){setTimeout(C.ready,1)}else{if(ak.addEventListener){ak.addEventListener("DOMContentLoaded",a4,false);bd.addEventListener("load",C.ready,false)}else{ak.attachEvent("onreadystatechange",a4);bd.attachEvent("onload",C.ready);var bw=false;try{bw=bd.frameElement==null&&ak.documentElement}catch(bv){}if(bw&&bw.doScroll){(function bu(){if(!C.isReady){try{bw.doScroll("left")}catch(by){return setTimeout(bu,50)}C.ready()}})()}}}}return an.promise(bx)};C.each("Boolean Number String Function Array Date RegExp Object".split(" "),function(bv,bu){a0["[object "+bu+"]"]=bu.toLowerCase()});q=C(ak);var aX={};function B(bv){var bu=aX[bv]={};C.each(bv.split(a8),function(bx,bw){bu[bw]=true});return bu}C.Callbacks=function(bE){bE=typeof bE==="string"?(aX[bE]||B(bE)):C.extend({},bE);var bx,bu,by,bw,bz,bA,bB=[],bC=!bE.once&&[],bv=function(bF){bx=bE.memory&&bF;bu=true;bA=bw||0;bw=0;bz=bB.length;by=true;for(;bB&&bA<bz;bA++){if(bB[bA].apply(bF[0],bF[1])===false&&bE.stopOnFalse){bx=false;break}}by=false;if(bB){if(bC){if(bC.length){bv(bC.shift())}}else{if(bx){bB=[]}else{bD.disable()}}}},bD={add:function(){if(bB){var bG=bB.length;(function bF(bH){C.each(bH,function(bJ,bI){var bK=C.type(bI);if(bK==="function"){if(!bE.unique||!bD.has(bI)){bB.push(bI)}}else{if(bI&&bI.length&&bK!=="string"){bF(bI)}}})})(arguments);if(by){bz=bB.length}else{if(bx){bw=bG;bv(bx)}}}return this},remove:function(){if(bB){C.each(arguments,function(bH,bF){var bG;while((bG=C.inArray(bF,bB,bG))>-1){bB.splice(bG,1);if(by){if(bG<=bz){bz--}if(bG<=bA){bA--}}}})}return this},has:function(bF){return C.inArray(bF,bB)>-1},empty:function(){bB=[];return this},disable:function(){bB=bC=bx=G;return this},disabled:function(){return !bB},lock:function(){bC=G;if(!bx){bD.disable()}return this},locked:function(){return !bC},fireWith:function(bG,bF){bF=bF||[];bF=[bG,bF.slice?bF.slice():bF];if(bB&&(!bu||bC)){if(by){bC.push(bF)}else{bv(bF)}}return this},fire:function(){bD.fireWith(this,arguments);return this},fired:function(){return !!bu}};return bD};C.extend({Deferred:function(bw){var bv=[["resolve","done",C.Callbacks("once memory"),"resolved"],["reject","fail",C.Callbacks("once memory"),"rejected"],["notify","progress",C.Callbacks("memory")]],bx="pending",by={state:function(){return bx},always:function(){bu.done(arguments).fail(arguments);return this},then:function(){var bz=arguments;return C.Deferred(function(bA){C.each(bv,function(bC,bB){var bE=bB[0],bD=bz[bC];bu[bB[1]](C.isFunction(bD)?function(){var bF=bD.apply(this,arguments);if(bF&&C.isFunction(bF.promise)){bF.promise().done(bA.resolve).fail(bA.reject).progress(bA.notify)}else{bA[bE+"With"](this===bu?bA:this,[bF])}}:bA[bE])});bz=null}).promise()},promise:function(bz){return bz!=null?C.extend(bz,by):by}},bu={};by.pipe=by.then;C.each(bv,function(bA,bz){var bC=bz[2],bB=bz[3];by[bz[1]]=bC.add;if(bB){bC.add(function(){bx=bB},bv[bA^1][2].disable,bv[2][2].lock)}bu[bz[0]]=bC.fire;bu[bz[0]+"With"]=bC.fireWith});by.promise(bu);if(bw){bw.call(bu,bu)}return bu},when:function(by){var bw=0,bA=aD.call(arguments),bu=bA.length,bv=bu!==1||(by&&C.isFunction(by.promise))?bu:0,bD=bv===1?by:C.Deferred(),bx=function(bF,bG,bE){return function(bH){bG[bF]=this;bE[bF]=arguments.length>1?aD.call(arguments):bH;if(bE===bC){bD.notifyWith(bG,bE)}else{if(!(--bv)){bD.resolveWith(bG,bE)}}}},bC,bz,bB;if(bu>1){bC=new Array(bu);bz=new Array(bu);bB=new Array(bu);for(;bw<bu;bw++){if(bA[bw]&&C.isFunction(bA[bw].promise)){bA[bw].promise().done(bx(bw,bB,bA)).fail(bD.reject).progress(bx(bw,bz,bC))}else{--bv}}}if(!bv){bD.resolveWith(bB,bA)}return bD.promise()}});C.support=(function(){var bG,bF,bD,bE,bx,bC,bB,bz,by,bw,bu,bv=ak.createElement("div");bv.setAttribute("className","t");bv.innerHTML="  <link/><table></table><a href='/a'>a</a><input type='checkbox'/>";bF=bv.getElementsByTagName("*");bD=bv.getElementsByTagName("a")[0];if(!bF||!bD||!bF.length){return{}}bE=ak.createElement("select");bx=bE.appendChild(ak.createElement("option"));bC=bv.getElementsByTagName("input")[0];bD.style.cssText="top:1px;float:left;opacity:.5";bG={leadingWhitespace:(bv.firstChild.nodeType===3),tbody:!bv.getElementsByTagName("tbody").length,htmlSerialize:!!bv.getElementsByTagName("link").length,style:/top/.test(bD.getAttribute("style")),hrefNormalized:(bD.getAttribute("href")==="/a"),opacity:/^0.5/.test(bD.style.opacity),cssFloat:!!bD.style.cssFloat,checkOn:(bC.value==="on"),optSelected:bx.selected,getSetAttribute:bv.className!=="t",enctype:!!ak.createElement("form").enctype,html5Clone:ak.createElement("nav").cloneNode(true).outerHTML!=="<:nav></:nav>",boxModel:(ak.compatMode==="CSS1Compat"),submitBubbles:true,changeBubbles:true,focusinBubbles:false,deleteExpando:true,noCloneEvent:true,inlineBlockNeedsLayout:false,shrinkWrapBlocks:false,reliableMarginRight:true,boxSizingReliable:true,pixelPosition:false};bC.checked=true;bG.noCloneChecked=bC.cloneNode(true).checked;bE.disabled=true;bG.optDisabled=!bx.disabled;try{delete bv.test}catch(bA){bG.deleteExpando=false}if(!bv.addEventListener&&bv.attachEvent&&bv.fireEvent){bv.attachEvent("onclick",bu=function(){bG.noCloneEvent=false});bv.cloneNode(true).fireEvent("onclick");bv.detachEvent("onclick",bu)}bC=ak.createElement("input");bC.value="t";bC.setAttribute("type","radio");bG.radioValue=bC.value==="t";bC.setAttribute("checked","checked");bC.setAttribute("name","t");bv.appendChild(bC);bB=ak.createDocumentFragment();bB.appendChild(bv.lastChild);bG.checkClone=bB.cloneNode(true).cloneNode(true).lastChild.checked;bG.appendChecked=bC.checked;bB.removeChild(bC);bB.appendChild(bv);if(bv.attachEvent){for(by in {submit:true,change:true,focusin:true}){bz="on"+by;bw=(bz in bv);if(!bw){bv.setAttribute(bz,"return;");bw=(typeof bv[bz]==="function")}bG[by+"Bubbles"]=bw}}C(function(){var bI,bM,bK,bL,bJ="padding:0;margin:0;border:0;display:block;overflow:hidden;",bH=ak.getElementsByTagName("body")[0];if(!bH){return}bI=ak.createElement("div");bI.style.cssText="visibility:hidden;border:0;width:0;height:0;position:static;top:0;margin-top:1px";bH.insertBefore(bI,bH.firstChild);bM=ak.createElement("div");bI.appendChild(bM);bM.innerHTML="<table><tr><td></td><td>t</td></tr></table>";bK=bM.getElementsByTagName("td");bK[0].style.cssText="padding:0;margin:0;border:0;display:none";bw=(bK[0].offsetHeight===0);bK[0].style.display="";bK[1].style.display="none";bG.reliableHiddenOffsets=bw&&(bK[0].offsetHeight===0);bM.innerHTML="";bM.style.cssText="box-sizing:border-box;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;padding:1px;border:1px;display:block;width:4px;margin-top:1%;position:absolute;top:1%;";bG.boxSizing=(bM.offsetWidth===4);bG.doesNotIncludeMarginInBodyOffset=(bH.offsetTop!==1);if(bd.getComputedStyle){bG.pixelPosition=(bd.getComputedStyle(bM,null)||{}).top!=="1%";bG.boxSizingReliable=(bd.getComputedStyle(bM,null)||{width:"4px"}).width==="4px";bL=ak.createElement("div");bL.style.cssText=bM.style.cssText=bJ;bL.style.marginRight=bL.style.width="0";bM.style.width="1px";bM.appendChild(bL);bG.reliableMarginRight=!parseFloat((bd.getComputedStyle(bL,null)||{}).marginRight)}if(typeof bM.style.zoom!=="undefined"){bM.innerHTML="";bM.style.cssText=bJ+"width:1px;padding:1px;display:inline;zoom:1";bG.inlineBlockNeedsLayout=(bM.offsetWidth===3);bM.style.display="block";bM.style.overflow="visible";bM.innerHTML="<div></div>";bM.firstChild.style.width="5px";bG.shrinkWrapBlocks=(bM.offsetWidth!==3);bI.style.zoom=1}bH.removeChild(bI);bI=bM=bK=bL=null});bB.removeChild(bv);bF=bD=bE=bx=bC=bB=bv=null;return bG})();var aK=/(?:\{[\s\S]*\}|\[[\s\S]*\])$/,aq=/([A-Z])/g;C.extend({cache:{},deletedIds:[],uuid:0,expando:"JQXLite"+(C.fn.jqx+Math.random()).replace(/\D/g,""),noData:{embed:true,object:"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000",applet:true},hasData:function(bu){bu=bu.nodeType?C.cache[bu[C.expando]]:bu[C.expando];return !!bu&&!M(bu)},data:function(bx,bv,bz,by){if(!C.acceptData(bx)){return}var bA,bC,bD=C.expando,bB=typeof bv==="string",bE=bx.nodeType,bu=bE?C.cache:bx,bw=bE?bx[bD]:bx[bD]&&bD;if((!bw||!bu[bw]||(!by&&!bu[bw].data))&&bB&&bz===G){return}if(!bw){if(bE){bx[bD]=bw=C.deletedIds.pop()||C.guid++}else{bw=bD}}if(!bu[bw]){bu[bw]={};if(!bE){bu[bw].toJSON=C.noop}}if(typeof bv==="object"||typeof bv==="function"){if(by){bu[bw]=C.extend(bu[bw],bv)}else{bu[bw].data=C.extend(bu[bw].data,bv)}}bA=bu[bw];if(!by){if(!bA.data){bA.data={}}bA=bA.data}if(bz!==G){bA[C.camelCase(bv)]=bz}if(bB){bC=bA[bv];if(bC==null){bC=bA[C.camelCase(bv)]}}else{bC=bA}return bC},removeData:function(bx,bv,by){if(!C.acceptData(bx)){return}var bB,bA,bz,bC=bx.nodeType,bu=bC?C.cache:bx,bw=bC?bx[C.expando]:C.expando;if(!bu[bw]){return}if(bv){bB=by?bu[bw]:bu[bw].data;if(bB){if(!C.isArray(bv)){if(bv in bB){bv=[bv]}else{bv=C.camelCase(bv);if(bv in bB){bv=[bv]}else{bv=bv.split(" ")}}}for(bA=0,bz=bv.length;bA<bz;bA++){delete bB[bv[bA]]}if(!(by?M:C.isEmptyObject)(bB)){return}}}if(!by){delete bu[bw].data;if(!M(bu[bw])){return}}if(bC){C.cleanData([bx],true)}else{if(C.support.deleteExpando||bu!=bu.window){delete bu[bw]}else{bu[bw]=null}}},_data:function(bv,bu,bw){return C.data(bv,bu,bw,true)},acceptData:function(bv){var bu=bv.nodeName&&C.noData[bv.nodeName.toLowerCase()];return !bu||bu!==true&&bv.getAttribute("classid")===bu}});C.fn.extend({data:function(bD,bC){var by,bv,bB,bu,bx,bw=this[0],bA=0,bz=null;if(bD===G){if(this.length){bz=C.data(bw);if(bw.nodeType===1&&!C._data(bw,"parsedAttrs")){bB=bw.attributes;for(bx=bB.length;bA<bx;bA++){bu=bB[bA].name;if(!bu.indexOf("data-")){bu=C.camelCase(bu.substring(5));a9(bw,bu,bz[bu])}}C._data(bw,"parsedAttrs",true)}}return bz}if(typeof bD==="object"){return this.each(function(){C.data(this,bD)})}by=bD.split(".",2);by[1]=by[1]?"."+by[1]:"";bv=by[1]+"!";return C.access(this,function(bE){if(bE===G){bz=this.triggerHandler("getData"+bv,[by[0]]);if(bz===G&&bw){bz=C.data(bw,bD);bz=a9(bw,bD,bz)}return bz===G&&by[1]?this.data(by[0]):bz}by[1]=bE;this.each(function(){var bF=C(this);bF.triggerHandler("setData"+bv,by);C.data(this,bD,bE);bF.triggerHandler("changeData"+bv,by)})},null,bC,arguments.length>1,null,false)},removeData:function(bu){return this.each(function(){C.removeData(this,bu)})}});function a9(bw,bv,bx){if(bx===G&&bw.nodeType===1){var bu="data-"+bv.replace(aq,"-$1").toLowerCase();bx=bw.getAttribute(bu);if(typeof bx==="string"){try{bx=bx==="true"?true:bx==="false"?false:bx==="null"?null:+bx+""===bx?+bx:aK.test(bx)?C.parseJSON(bx):bx}catch(by){}C.data(bw,bv,bx)}else{bx=G}}return bx}function M(bv){var bu;for(bu in bv){if(bu==="data"&&C.isEmptyObject(bv[bu])){continue}if(bu!=="toJSON"){return false}}return true}C.extend({queue:function(bw,bv,bx){var bu;if(bw){bv=(bv||"fx")+"queue";bu=C._data(bw,bv);if(bx){if(!bu||C.isArray(bx)){bu=C._data(bw,bv,C.makeArray(bx))}else{bu.push(bx)}}return bu||[]}},dequeue:function(bz,by){by=by||"fx";var bv=C.queue(bz,by),bA=bv.length,bx=bv.shift(),bu=C._queueHooks(bz,by),bw=function(){C.dequeue(bz,by)};if(bx==="inprogress"){bx=bv.shift();bA--}if(bx){if(by==="fx"){bv.unshift("inprogress")}delete bu.stop;bx.call(bz,bw,bu)}if(!bA&&bu){bu.empty.fire()}},_queueHooks:function(bw,bv){var bu=bv+"queueHooks";return C._data(bw,bu)||C._data(bw,bu,{empty:C.Callbacks("once memory").add(function(){C.removeData(bw,bv+"queue",true);C.removeData(bw,bu,true)})})}});C.fn.extend({queue:function(bu,bv){var bw=2;if(typeof bu!=="string"){bv=bu;bu="fx";bw--}if(arguments.length<bw){return C.queue(this[0],bu)}return bv===G?this:this.each(function(){var bx=C.queue(this,bu,bv);C._queueHooks(this,bu);if(bu==="fx"&&bx[0]!=="inprogress"){C.dequeue(this,bu)}})},dequeue:function(bu){return this.each(function(){C.dequeue(this,bu)})},delay:function(bv,bu){bv=C.fx?C.fx.speeds[bv]||bv:bv;bu=bu||"fx";return this.queue(bu,function(bx,bw){var by=setTimeout(bx,bv);bw.stop=function(){clearTimeout(by)}})},clearQueue:function(bu){return this.queue(bu||"fx",[])},promise:function(bw,bA){var bv,bx=1,bB=C.Deferred(),bz=this,bu=this.length,by=function(){if(!(--bx)){bB.resolveWith(bz,[bz])}};if(typeof bw!=="string"){bA=bw;bw=G}bw=bw||"fx";while(bu--){bv=C._data(bz[bu],bw+"queueHooks");if(bv&&bv.empty){bx++;bv.empty.add(by)}}by();return bB.promise(bA)}});var bh,aT,ay,aI=/[\t\r\n]/g,aP=/\r/g,d=/^(?:button|input)$/i,z=/^(?:button|input|object|select|textarea)$/i,h=/^a(?:rea|)$/i,ae=/^(?:autofocus|autoplay|async|checked|controls|defer|disabled|hidden|loop|multiple|open|readonly|required|scoped|selected)$/i,A=C.support.getSetAttribute;C.fn.extend({attr:function(bu,bv){return C.access(this,C.attr,bu,bv,arguments.length>1)},removeAttr:function(bu){return this.each(function(){C.removeAttr(this,bu)})},prop:function(bu,bv){return C.access(this,C.prop,bu,bv,arguments.length>1)},removeProp:function(bu){bu=C.propFix[bu]||bu;return this.each(function(){try{this[bu]=G;delete this[bu]}catch(bv){}})},addClass:function(by){var bA,bw,bv,bx,bz,bB,bu;if(C.isFunction(by)){return this.each(function(bC){C(this).addClass(by.call(this,bC,this.className))})}if(by&&typeof by==="string"){bA=by.split(a8);for(bw=0,bv=this.length;bw<bv;bw++){bx=this[bw];if(bx.nodeType===1){if(!bx.className&&bA.length===1){bx.className=by}else{bz=" "+bx.className+" ";for(bB=0,bu=bA.length;bB<bu;bB++){if(bz.indexOf(" "+bA[bB]+" ")<0){bz+=bA[bB]+" "}}bx.className=C.trim(bz)}}}}return this},removeClass:function(bA){var bx,by,bz,bB,bv,bw,bu;if(C.isFunction(bA)){return this.each(function(bC){C(this).removeClass(bA.call(this,bC,this.className))})}if((bA&&typeof bA==="string")||bA===G){bx=(bA||"").split(a8);for(bw=0,bu=this.length;bw<bu;bw++){bz=this[bw];if(bz.nodeType===1&&bz.className){by=(" "+bz.className+" ").replace(aI," ");for(bB=0,bv=bx.length;bB<bv;bB++){while(by.indexOf(" "+bx[bB]+" ")>=0){by=by.replace(" "+bx[bB]+" "," ")}}bz.className=bA?C.trim(by):""}}}return this},toggleClass:function(bx,bv){var bw=typeof bx,bu=typeof bv==="boolean";if(C.isFunction(bx)){return this.each(function(by){C(this).toggleClass(bx.call(this,by,this.className,bv),bv)})}return this.each(function(){if(bw==="string"){var bA,bz=0,by=C(this),bB=bv,bC=bx.split(a8);while((bA=bC[bz++])){bB=bu?bB:!by.hasClass(bA);by[bB?"addClass":"removeClass"](bA)}}else{if(bw==="undefined"||bw==="boolean"){if(this.className){C._data(this,"__className__",this.className)}this.className=this.className||bx===false?"":C._data(this,"__className__")||""}}})},hasClass:function(bu){var bx=" "+bu+" ",bw=0,bv=this.length;for(;bw<bv;bw++){if(this[bw].nodeType===1&&(" "+this[bw].className+" ").replace(aI," ").indexOf(bx)>=0){return true}}return false},val:function(bx){var bu,bv,by,bw=this[0];if(!arguments.length){if(bw){bu=C.valHooks[bw.type]||C.valHooks[bw.nodeName.toLowerCase()];if(bu&&"get" in bu&&(bv=bu.get(bw,"value"))!==G){return bv}bv=bw.value;return typeof bv==="string"?bv.replace(aP,""):bv==null?"":bv}return}by=C.isFunction(bx);return this.each(function(bA){var bB,bz=C(this);if(this.nodeType!==1){return}if(by){bB=bx.call(this,bA,bz.val())}else{bB=bx}if(bB==null){bB=""}else{if(typeof bB==="number"){bB+=""}else{if(C.isArray(bB)){bB=C.map(bB,function(bC){return bC==null?"":bC+""})}}}bu=C.valHooks[this.type]||C.valHooks[this.nodeName.toLowerCase()];if(!bu||!("set" in bu)||bu.set(this,bB,"value")===G){this.value=bB}})}});C.extend({valHooks:{option:{get:function(bu){var bv=bu.attributes.value;return !bv||bv.specified?bu.value:bu.text}},select:{get:function(bu){var bA,bw,bC=bu.options,by=bu.selectedIndex,bx=bu.type==="select-one"||by<0,bB=bx?null:[],bz=bx?by+1:bC.length,bv=by<0?bz:bx?by:0;for(;bv<bz;bv++){bw=bC[bv];if((bw.selected||bv===by)&&(C.support.optDisabled?!bw.disabled:bw.getAttribute("disabled")===null)&&(!bw.parentNode.disabled||!C.nodeName(bw.parentNode,"optgroup"))){bA=C(bw).val();if(bx){return bA}bB.push(bA)}}return bB},set:function(bv,bw){var bu=C.makeArray(bw);C(bv).find("option").each(function(){this.selected=C.inArray(C(this).val(),bu)>=0});if(!bu.length){bv.selectedIndex=-1}return bu}}},attrFn:{},attr:function(bA,bx,bB,bz){var bw,bu,by,bv=bA.nodeType;if(!bA||bv===3||bv===8||bv===2){return}if(bz&&C.isFunction(C.fn[bx])){return C(bA)[bx](bB)}if(typeof bA.getAttribute==="undefined"){return C.prop(bA,bx,bB)}by=bv!==1||!C.isXMLDoc(bA);if(by){bx=bx.toLowerCase();bu=C.attrHooks[bx]||(ae.test(bx)?aT:bh)}if(bB!==G){if(bB===null){C.removeAttr(bA,bx);return}else{if(bu&&"set" in bu&&by&&(bw=bu.set(bA,bB,bx))!==G){return bw}else{bA.setAttribute(bx,bB+"");return bB}}}else{if(bu&&"get" in bu&&by&&(bw=bu.get(bA,bx))!==null){return bw}else{bw=bA.getAttribute(bx);return bw===null?G:bw}}},removeAttr:function(bx,bz){var by,bA,bv,bu,bw=0;if(bz&&bx.nodeType===1){bA=bz.split(a8);for(;bw<bA.length;bw++){bv=bA[bw];if(bv){by=C.propFix[bv]||bv;bu=ae.test(bv);if(!bu){C.attr(bx,bv,"")}bx.removeAttribute(A?bv:by);if(bu&&by in bx){bx[by]=false}}}}},attrHooks:{type:{set:function(bu,bv){if(d.test(bu.nodeName)&&bu.parentNode){C.error("type property can't be changed")}else{if(!C.support.radioValue&&bv==="radio"&&C.nodeName(bu,"input")){var bw=bu.value;bu.setAttribute("type",bv);if(bw){bu.value=bw}return bv}}}},value:{get:function(bv,bu){if(bh&&C.nodeName(bv,"button")){return bh.get(bv,bu)}return bu in bv?bv.value:null},set:function(bv,bw,bu){if(bh&&C.nodeName(bv,"button")){return bh.set(bv,bw,bu)}bv.value=bw}}},propFix:{tabindex:"tabIndex",readonly:"readOnly","for":"htmlFor","class":"className",maxlength:"maxLength",cellspacing:"cellSpacing",cellpadding:"cellPadding",rowspan:"rowSpan",colspan:"colSpan",usemap:"useMap",frameborder:"frameBorder",contenteditable:"contentEditable"},prop:function(bz,bx,bA){var bw,bu,by,bv=bz.nodeType;if(!bz||bv===3||bv===8||bv===2){return}by=bv!==1||!C.isXMLDoc(bz);if(by){bx=C.propFix[bx]||bx;bu=C.propHooks[bx]}if(bA!==G){if(bu&&"set" in bu&&(bw=bu.set(bz,bA,bx))!==G){return bw}else{return(bz[bx]=bA)}}else{if(bu&&"get" in bu&&(bw=bu.get(bz,bx))!==null){return bw}else{return bz[bx]}}},propHooks:{tabIndex:{get:function(bv){var bu=bv.getAttributeNode("tabindex");return bu&&bu.specified?parseInt(bu.value,10):z.test(bv.nodeName)||h.test(bv.nodeName)&&bv.href?0:G}}}});aT={get:function(bv,bu){var bx,bw=C.prop(bv,bu);return bw===true||typeof bw!=="boolean"&&(bx=bv.getAttributeNode(bu))&&bx.nodeValue!==false?bu.toLowerCase():G},set:function(bv,bx,bu){var bw;if(bx===false){C.removeAttr(bv,bu)}else{bw=C.propFix[bu]||bu;if(bw in bv){bv[bw]=true}bv.setAttribute(bu,bu.toLowerCase())}return bu}};if(!C.support.enctype){C.propFix.enctype="encoding"}var bf=/^(?:textarea|input|select)$/i,n=/^([^\.]*|)(?:\.(.+)|)$/,F=/(?:^|\s)hover(\.\S+|)\b/,aH=/^key/,bi=/^(?:mouse|contextmenu)|click/,N=/^(?:focusinfocus|focusoutblur)$/,bs=function(bu){return C.event.special.hover?bu:bu.replace(F,"mouseenter$1 mouseleave$1")};C.event={add:function(bx,bB,bI,bz,by){var bC,bA,bJ,bH,bG,bE,bu,bF,bv,bw,bD;if(bx.nodeType===3||bx.nodeType===8||!bB||!bI||!(bC=C._data(bx))){return}if(bI.handler){bv=bI;bI=bv.handler;by=bv.selector}if(!bI.guid){bI.guid=C.guid++}bJ=bC.events;if(!bJ){bC.events=bJ={}}bA=bC.handle;if(!bA){bC.handle=bA=function(bK){return typeof C!=="undefined"&&(!bK||C.event.triggered!==bK.type)?C.event.dispatch.apply(bA.elem,arguments):G};bA.elem=bx}bB=C.trim(bs(bB)).split(" ");for(bH=0;bH<bB.length;bH++){bG=n.exec(bB[bH])||[];bE=bG[1];bu=(bG[2]||"").split(".").sort();bD=C.event.special[bE]||{};bE=(by?bD.delegateType:bD.bindType)||bE;bD=C.event.special[bE]||{};bF=C.extend({type:bE,origType:bG[1],data:bz,handler:bI,guid:bI.guid,selector:by,needsContext:by&&C.expr.match.needsContext.test(by),namespace:bu.join(".")},bv);bw=bJ[bE];if(!bw){bw=bJ[bE]=[];bw.delegateCount=0;if(!bD.setup||bD.setup.call(bx,bz,bu,bA)===false){if(bx.addEventListener){if(bz&&bz.passive!==G){bx.addEventListener(bE,bA,bz)}else{bx.addEventListener(bE,bA,false)}}else{if(bx.attachEvent){bx.attachEvent("on"+bE,bA)}}}}if(bD.add){bD.add.call(bx,bF);if(!bF.handler.guid){bF.handler.guid=bI.guid}}if(by){bw.splice(bw.delegateCount++,0,bF)}else{bw.push(bF)}C.event.global[bE]=true}bx=null},global:{},remove:function(bx,bC,bI,by,bB){var bJ,bK,bF,bw,bv,bz,bA,bH,bE,bu,bG,bD=C.hasData(bx)&&C._data(bx);if(!bD||!(bH=bD.events)){return}bC=C.trim(bs(bC||"")).split(" ");for(bJ=0;bJ<bC.length;bJ++){bK=n.exec(bC[bJ])||[];bF=bw=bK[1];bv=bK[2];if(!bF){for(bF in bH){C.event.remove(bx,bF+bC[bJ],bI,by,true)}continue}bE=C.event.special[bF]||{};bF=(by?bE.delegateType:bE.bindType)||bF;bu=bH[bF]||[];bz=bu.length;bv=bv?new RegExp("(^|\\.)"+bv.split(".").sort().join("\\.(?:.*\\.|)")+"(\\.|$)"):null;for(bA=0;bA<bu.length;bA++){bG=bu[bA];if((bB||bw===bG.origType)&&(!bI||bI.guid===bG.guid)&&(!bv||bv.test(bG.namespace))&&(!by||by===bG.selector||by==="**"&&bG.selector)){bu.splice(bA--,1);if(bG.selector){bu.delegateCount--}if(bE.remove){bE.remove.call(bx,bG)}}}if(bu.length===0&&bz!==bu.length){if(!bE.teardown||bE.teardown.call(bx,bv,bD.handle)===false){C.removeEvent(bx,bF,bD.handle)}delete bH[bF]}}if(C.isEmptyObject(bH)){delete bD.handle;C.removeData(bx,"events",true)}},customEvent:{getData:true,setData:true,changeData:true},trigger:function(bv,bC,bA,bJ){if(bA&&(bA.nodeType===3||bA.nodeType===8)){return}var bu,bx,bD,bH,bz,by,bF,bE,bB,bI,bG=bv.type||bv,bw=[];if(N.test(bG+C.event.triggered)){return}if(bG.indexOf("!")>=0){bG=bG.slice(0,-1);bx=true}if(bG.indexOf(".")>=0){bw=bG.split(".");bG=bw.shift();bw.sort()}if((!bA||C.event.customEvent[bG])&&!C.event.global[bG]){return}bv=typeof bv==="object"?bv[C.expando]?bv:new C.Event(bG,bv):new C.Event(bG);bv.type=bG;bv.isTrigger=true;bv.exclusive=bx;bv.namespace=bw.join(".");bv.namespace_re=bv.namespace?new RegExp("(^|\\.)"+bw.join("\\.(?:.*\\.|)")+"(\\.|$)"):null;by=bG.indexOf(":")<0?"on"+bG:"";if(!bA){bu=C.cache;for(bD in bu){if(bu[bD].events&&bu[bD].events[bG]){C.event.trigger(bv,bC,bu[bD].handle.elem,true)}}return}bv.result=G;if(!bv.target){bv.target=bA}bC=bC!=null?C.makeArray(bC):[];bC.unshift(bv);bF=C.event.special[bG]||{};if(bF.trigger&&bF.trigger.apply(bA,bC)===false){return}bB=[[bA,bF.bindType||bG]];if(!bJ&&!bF.noBubble&&!C.isWindow(bA)){bI=bF.delegateType||bG;bH=N.test(bI+bG)?bA:bA.parentNode;for(bz=bA;bH;bH=bH.parentNode){bB.push([bH,bI]);bz=bH}if(bz===(bA.ownerDocument||ak)){bB.push([bz.defaultView||bz.parentWindow||bd,bI])}}for(bD=0;bD<bB.length&&!bv.isPropagationStopped();bD++){bH=bB[bD][0];bv.type=bB[bD][1];bE=(C._data(bH,"events")||{})[bv.type]&&C._data(bH,"handle");if(bE){bE.apply(bH,bC)}bE=by&&bH[by];if(bE&&C.acceptData(bH)&&bE.apply&&bE.apply(bH,bC)===false){bv.preventDefault()}}bv.type=bG;if(!bJ&&!bv.isDefaultPrevented()){if((!bF._default||bF._default.apply(bA.ownerDocument,bC)===false)&&!(bG==="click"&&C.nodeName(bA,"a"))&&C.acceptData(bA)){if(by&&bA[bG]&&((bG!=="focus"&&bG!=="blur")||bv.target.offsetWidth!==0)&&!C.isWindow(bA)){bz=bA[by];if(bz){bA[by]=null}C.event.triggered=bG;bA[bG]();C.event.triggered=G;if(bz){bA[by]=bz}}}}return bv.result},dispatch:function(bu){bu=C.event.fix(bu||bd.event);var bB,bA,bK,bE,bD,bv,bC,bI,bx,bJ,by=((C._data(this,"events")||{})[bu.type]||[]),bz=by.delegateCount,bG=aD.call(arguments),bw=!bu.exclusive&&!bu.namespace,bF=C.event.special[bu.type]||{},bH=[];bG[0]=bu;bu.delegateTarget=this;if(bF.preDispatch&&bF.preDispatch.call(this,bu)===false){return}if(bz&&!(bu.button&&bu.type==="click")){for(bK=bu.target;bK!=this;bK=bK.parentNode||this){if(bK.disabled!==true||bu.type!=="click"){bD={};bC=[];for(bB=0;bB<bz;bB++){bI=by[bB];bx=bI.selector;if(bD[bx]===G){bD[bx]=bI.needsContext?C(bx,this).index(bK)>=0:C.find(bx,this,null,[bK]).length}if(bD[bx]){bC.push(bI)}}if(bC.length){bH.push({elem:bK,matches:bC})}}}}if(by.length>bz){bH.push({elem:this,matches:by.slice(bz)})}for(bB=0;bB<bH.length&&!bu.isPropagationStopped();bB++){bv=bH[bB];bu.currentTarget=bv.elem;for(bA=0;bA<bv.matches.length&&!bu.isImmediatePropagationStopped();bA++){bI=bv.matches[bA];if(bw||(!bu.namespace&&!bI.namespace)||bu.namespace_re&&bu.namespace_re.test(bI.namespace)){bu.data=bI.data;bu.handleObj=bI;bE=((C.event.special[bI.origType]||{}).handle||bI.handler).apply(bv.elem,bG);if(bE!==G){bu.result=bE;if(bE===false){bu.preventDefault();bu.stopPropagation()}}}}}if(bF.postDispatch){bF.postDispatch.call(this,bu)}return bu.result},props:"attrChange attrName relatedNode srcElement altKey bubbles cancelable ctrlKey currentTarget eventPhase metaKey relatedTarget shiftKey target timeStamp view which".split(" "),fixHooks:{},keyHooks:{props:"char charCode key keyCode".split(" "),filter:function(bv,bu){if(bv.which==null){bv.which=bu.charCode!=null?bu.charCode:bu.keyCode}return bv}},mouseHooks:{props:"button buttons clientX clientY fromElement offsetX offsetY pageX pageY screenX screenY toElement".split(" "),filter:function(bx,bw){var by,bz,bu,bv=bw.button,bA=bw.fromElement;if(bx.pageX==null&&bw.clientX!=null){by=bx.target.ownerDocument||ak;bz=by.documentElement;bu=by.body;bx.pageX=bw.clientX+(bz&&bz.scrollLeft||bu&&bu.scrollLeft||0)-(bz&&bz.clientLeft||bu&&bu.clientLeft||0);bx.pageY=bw.clientY+(bz&&bz.scrollTop||bu&&bu.scrollTop||0)-(bz&&bz.clientTop||bu&&bu.clientTop||0)}if(!bx.relatedTarget&&bA){bx.relatedTarget=bA===bx.target?bw.toElement:bA}if(!bx.which&&bv!==G){bx.which=(bv&1?1:(bv&2?3:(bv&4?2:0)))}return bx}},fix:function(bw){if(bw[C.expando]){return bw}var bv,bz,bu=bw,bx=C.event.fixHooks[bw.type]||{},by=bx.props?this.props.concat(bx.props):this.props;bw=C.Event(bu);for(bv=by.length;bv;){bz=by[--bv];bw[bz]=bu[bz]}if(!bw.target){bw.target=bu.srcElement||ak}if(bw.target.nodeType===3){bw.target=bw.target.parentNode}bw.metaKey=!!bw.metaKey;return bx.filter?bx.filter(bw,bu):bw},special:{load:{noBubble:true},focus:{delegateType:"focusin"},blur:{delegateType:"focusout"},beforeunload:{setup:function(bw,bv,bu){if(C.isWindow(this)){this.onbeforeunload=bu}},teardown:function(bv,bu){if(this.onbeforeunload===bu){this.onbeforeunload=null}}}},simulate:function(bv,bx,bw,bu){var by=C.extend(new C.Event(),bw,{type:bv,isSimulated:true,originalEvent:{}});if(bu){C.event.trigger(by,null,bx)}else{C.event.dispatch.call(bx,by)}if(by.isDefaultPrevented()){bw.preventDefault()}}};C.event.handle=C.event.dispatch;C.removeEvent=ak.removeEventListener?function(bv,bu,bw){if(bv.removeEventListener){bv.removeEventListener(bu,bw,false)}}:function(bw,bv,bx){var bu="on"+bv;if(bw.detachEvent){if(typeof bw[bu]==="undefined"){bw[bu]=null}bw.detachEvent(bu,bx)}};C.Event=function(bv,bu){if(!(this instanceof C.Event)){return new C.Event(bv,bu)}if(bv&&bv.type){this.originalEvent=bv;this.type=bv.type;this.isDefaultPrevented=(bv.defaultPrevented||bv.returnValue===false||bv.getPreventDefault&&bv.getPreventDefault())?f:bn}else{this.type=bv}if(bu){C.extend(this,bu)}this.timeStamp=bv&&bv.timeStamp||C.now();this[C.expando]=true};function bn(){return false}function f(){return true}C.Event.prototype={preventDefault:function(){this.isDefaultPrevented=f;var bu=this.originalEvent;if(!bu){return}if(bu.preventDefault){bu.preventDefault()}else{bu.returnValue=false}},stopPropagation:function(){this.isPropagationStopped=f;var bu=this.originalEvent;if(!bu){return}if(bu.stopPropagation){bu.stopPropagation()}bu.cancelBubble=true},stopImmediatePropagation:function(){this.isImmediatePropagationStopped=f;this.stopPropagation()},isDefaultPrevented:bn,isPropagationStopped:bn,isImmediatePropagationStopped:bn};C.each({mouseenter:"mouseover",mouseleave:"mouseout"},function(bv,bu){C.event.special[bv]={delegateType:bu,bindType:bu,handle:function(bz){var bx,bB=this,bA=bz.relatedTarget,by=bz.handleObj,bw=by.selector;if(!bA||(bA!==bB&&!C.contains(bB,bA))){bz.type=by.origType;bx=by.handler.apply(this,arguments);bz.type=bu}return bx}}});C.fn.extend({on:function(bw,bu,bz,by,bv){var bA,bx;if(typeof bw==="object"){if(typeof bu!=="string"){bz=bz||bu;bu=G}for(bx in bw){this.on(bx,bu,bz,bw[bx],bv)}return this}if(bz==null&&by==null){by=bu;bz=bu=G}else{if(by==null){if(typeof bu==="string"){by=bz;bz=G}else{by=bz;bz=bu;bu=G}}}if(by===false){by=bn}else{if(!by){return this}}if(bv===1){bA=by;by=function(bB){C().off(bB);return bA.apply(this,arguments)};by.guid=bA.guid||(bA.guid=C.guid++)}return this.each(function(){C.event.add(this,bw,by,bz,bu)})},off:function(bw,bu,by){var bv,bx;if(bw&&bw.preventDefault&&bw.handleObj){bv=bw.handleObj;C(bw.delegateTarget).off(bv.namespace?bv.origType+"."+bv.namespace:bv.origType,bv.selector,bv.handler);return this}if(typeof bw==="object"){for(bx in bw){this.off(bx,bu,bw[bx])}return this}if(bu===false||typeof bu==="function"){by=bu;bu=G}if(by===false){by=bn}return this.each(function(){C.event.remove(this,bw,by,bu)})},delegate:function(bu,bv,bx,bw){return this.on(bv,bu,bx,bw)},undelegate:function(bu,bv,bw){return arguments.length===1?this.off(bu,"**"):this.off(bv,bu||"**",bw)},trigger:function(bu,bv){return this.each(function(){C.event.trigger(bu,bv,this)})},triggerHandler:function(bu,bv){if(this[0]){return C.event.trigger(bu,bv,this[0],true)}},toggle:function(bx){var bv=arguments,bu=bx.guid||C.guid++,bw=0,by=function(bz){var bA=(C._data(this,"lastToggle"+bx.guid)||0)%bw;C._data(this,"lastToggle"+bx.guid,bA+1);bz.preventDefault();return bv[bA].apply(this,arguments)||false};by.guid=bu;while(bw<bv.length){bv[bw++].guid=bu}return this.click(by)},hover:function(bu,bv){return this.mouseenter(bu).mouseleave(bv||bu)}});C.each(("blur focus focusin focusout load resize scroll unload click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup error contextmenu").split(" "),function(bv,bu){C.fn[bu]=function(bx,bw){if(bw==null){bw=bx;bx=null}return arguments.length>0?this.on(bu,null,bx,bw):this.trigger(bu)};if(aH.test(bu)){C.event.fixHooks[bu]=C.event.keyHooks}if(bi.test(bu)){C.event.fixHooks[bu]=C.event.mouseHooks}});
 /*!
          * Sizzle CSS Selector Engine
          * Copyright 2012 JQXLite Foundation and other contributors
          * Released under the MIT license
          * http://sizzlejs.com/
          */
-(function(cn,bM){var cs,bF,cg,bv,bR,b5,bI,bL,bH,ce,bE=true,bZ="undefined",cu=("sizcache"+Math.random()).replace(".",""),bz=String,bD=cn.document,bG=bD.documentElement,bW=0,bK=0,b9=[].pop,cr=[].push,bQ=[].slice,bT=[].indexOf||function(cE){var cD=0,cC=this.length;for(;cD<cC;cD++){if(this[cD]===cE){return cD}}return -1},cw=function(cC,cD){cC[cu]=cD==null||cD;return cC},cA=function(){var cC={},cD=[];return cw(function(cE,cF){if(cD.push(cE)>cg.cacheLength){delete cC[cD.shift()]}return(cC[cE+" "]=cF)},cC)},cp=cA(),cq=cA(),bS=cA(),b3="[\\x20\\t\\r\\n\\f]",bP="(?:\\\\.|[-\\w]|[^\\x00-\\xa0])+",bN=bP.replace("w","w#"),cz="([*^$|!~]?=)",ck="\\["+b3+"*("+bP+")"+b3+"*(?:"+cz+b3+"*(?:(['\"])((?:\\\\.|[^\\\\])*?)\\3|("+bN+")|)|)"+b3+"*\\]",cB=":("+bP+")(?:\\((?:(['\"])((?:\\\\.|[^\\\\])*?)\\2|([^()[\\]]*|(?:(?:"+ck+")|[^:]|\\\\.)*|.*))\\)|)",b4=":(even|odd|eq|gt|lt|nth|first|last)(?:\\("+b3+"*((?:-\\d)?\\d*)"+b3+"*\\)|)(?=[^-]|$)",co=new RegExp("^"+b3+"+|((?:^|[^\\\\])(?:\\\\.)*)"+b3+"+$","g"),bA=new RegExp("^"+b3+"*,"+b3+"*"),cc=new RegExp("^"+b3+"*([\\x20\\t\\r\\n\\f>+~])"+b3+"*"),ch=new RegExp(cB),cj=/^(?:#([\w\-]+)|(\w+)|\.([\w\-]+))$/,b8=/^:not/,cm=/[\x20\t\r\n\f]*[+~]/,cv=/:not\($/,bX=/h\d/i,ci=/input|select|textarea|button/i,bY=/\\(?!\\)/g,cb={ID:new RegExp("^#("+bP+")"),CLASS:new RegExp("^\\.("+bP+")"),NAME:new RegExp("^\\[name=['\"]?("+bP+")['\"]?\\]"),TAG:new RegExp("^("+bP.replace("w","w*")+")"),ATTR:new RegExp("^"+ck),PSEUDO:new RegExp("^"+cB),POS:new RegExp(b4,"i"),CHILD:new RegExp("^:(only|nth|first|last)-child(?:\\("+b3+"*(even|odd|(([+-]|)(\\d*)n|)"+b3+"*(?:([+-]|)"+b3+"*(\\d+)|))"+b3+"*\\)|)","i"),needsContext:new RegExp("^"+b3+"*[>+~]|"+b4,"i")},cf=function(cC){var cE=bD.createElement("div");try{return cC(cE)}catch(cD){return false}finally{cE=null}},bC=cf(function(cC){cC.appendChild(bD.createComment(""));return !cC.getElementsByTagName("*").length}),b7=cf(function(cC){cC.innerHTML="<a href='#'></a>";return cC.firstChild&&typeof cC.firstChild.getAttribute!==bZ&&cC.firstChild.getAttribute("href")==="#"}),bV=cf(function(cD){cD.innerHTML="<select></select>";var cC=typeof cD.lastChild.getAttribute("multiple");return cC!=="boolean"&&cC!=="string"}),b6=cf(function(cC){cC.innerHTML="<div class='hidden e'></div><div class='hidden'></div>";if(!cC.getElementsByClassName||!cC.getElementsByClassName("e").length){return false}cC.lastChild.className="e";return cC.getElementsByClassName("e").length===2}),bu=cf(function(cD){cD.id=cu+0;cD.innerHTML="<a name='"+cu+"'></a><div name='"+cu+"'></div>";bG.insertBefore(cD,bG.firstChild);var cC=bD.getElementsByName&&bD.getElementsByName(cu).length===2+bD.getElementsByName(cu+0).length;bF=!bD.getElementById(cu);bG.removeChild(cD);return cC});try{bQ.call(bG.childNodes,0)[0].nodeType}catch(cy){bQ=function(cD){var cE,cC=[];for(;(cE=this[cD]);cD++){cC.push(cE)}return cC}}function cl(cF,cC,cH,cK){cH=cH||[];cC=cC||bD;var cI,cD,cJ,cE,cG=cC.nodeType;if(!cF||typeof cF!=="string"){return cH}if(cG!==1&&cG!==9){return[]}cJ=bR(cC);if(!cJ&&!cK){if((cI=cj.exec(cF))){if((cE=cI[1])){if(cG===9){cD=cC.getElementById(cE);if(cD&&cD.parentNode){if(cD.id===cE){cH.push(cD);return cH}}else{return cH}}else{if(cC.ownerDocument&&(cD=cC.ownerDocument.getElementById(cE))&&b5(cC,cD)&&cD.id===cE){cH.push(cD);return cH}}}else{if(cI[2]){cr.apply(cH,bQ.call(cC.getElementsByTagName(cF),0));return cH}else{if((cE=cI[3])&&b6&&cC.getElementsByClassName){cr.apply(cH,bQ.call(cC.getElementsByClassName(cE),0));return cH}}}}}return ct(cF.replace(co,"$1"),cC,cH,cK,cJ)}cl.matches=function(cD,cC){return cl(cD,null,null,cC)};cl.matchesSelector=function(cC,cD){return cl(cD,null,null,[cC]).length>0};function cd(cC){return function(cE){var cD=cE.nodeName.toLowerCase();return cD==="input"&&cE.type===cC}}function by(cC){return function(cE){var cD=cE.nodeName.toLowerCase();return(cD==="input"||cD==="button")&&cE.type===cC}}function ca(cC){return cw(function(cD){cD=+cD;return cw(function(cE,cI){var cG,cF=cC([],cE.length,cD),cH=cF.length;while(cH--){if(cE[(cG=cF[cH])]){cE[cG]=!(cI[cG]=cE[cG])}}})})}bv=cl.getText=function(cG){var cF,cD="",cE=0,cC=cG.nodeType;if(cC){if(cC===1||cC===9||cC===11){if(typeof cG.textContent==="string"){return cG.textContent}else{for(cG=cG.firstChild;cG;cG=cG.nextSibling){cD+=bv(cG)}}}else{if(cC===3||cC===4){return cG.nodeValue}}}else{for(;(cF=cG[cE]);cE++){cD+=bv(cF)}}return cD};bR=cl.isXML=function(cC){var cD=cC&&(cC.ownerDocument||cC).documentElement;return cD?cD.nodeName!=="HTML":false};b5=cl.contains=bG.contains?function(cD,cC){var cF=cD.nodeType===9?cD.documentElement:cD,cE=cC&&cC.parentNode;return cD===cE||!!(cE&&cE.nodeType===1&&cF.contains&&cF.contains(cE))}:bG.compareDocumentPosition?function(cD,cC){return cC&&!!(cD.compareDocumentPosition(cC)&16)}:function(cD,cC){while((cC=cC.parentNode)){if(cC===cD){return true}}return false};cl.attr=function(cE,cD){var cF,cC=bR(cE);if(!cC){cD=cD.toLowerCase()}if((cF=cg.attrHandle[cD])){return cF(cE)}if(cC||bV){return cE.getAttribute(cD)}cF=cE.getAttributeNode(cD);return cF?typeof cE[cD]==="boolean"?cE[cD]?cD:null:cF.specified?cF.value:null:null};cg=cl.selectors={cacheLength:50,createPseudo:cw,match:cb,attrHandle:b7?{}:{href:function(cC){return cC.getAttribute("href",2)},type:function(cC){return cC.getAttribute("type")}},find:{ID:bF?function(cF,cE,cD){if(typeof cE.getElementById!==bZ&&!cD){var cC=cE.getElementById(cF);return cC&&cC.parentNode?[cC]:[]}}:function(cF,cE,cD){if(typeof cE.getElementById!==bZ&&!cD){var cC=cE.getElementById(cF);return cC?cC.id===cF||typeof cC.getAttributeNode!==bZ&&cC.getAttributeNode("id").value===cF?[cC]:bM:[]}},TAG:bC?function(cC,cD){if(typeof cD.getElementsByTagName!==bZ){return cD.getElementsByTagName(cC)}}:function(cC,cG){var cF=cG.getElementsByTagName(cC);if(cC==="*"){var cH,cE=[],cD=0;for(;(cH=cF[cD]);cD++){if(cH.nodeType===1){cE.push(cH)}}return cE}return cF},NAME:bu&&function(cC,cD){if(typeof cD.getElementsByName!==bZ){return cD.getElementsByName(name)}},CLASS:b6&&function(cE,cD,cC){if(typeof cD.getElementsByClassName!==bZ&&!cC){return cD.getElementsByClassName(cE)}}},relative:{">":{dir:"parentNode",first:true}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:true},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(cC){cC[1]=cC[1].replace(bY,"");cC[3]=(cC[4]||cC[5]||"").replace(bY,"");if(cC[2]==="~="){cC[3]=" "+cC[3]+" "}return cC.slice(0,4)},CHILD:function(cC){cC[1]=cC[1].toLowerCase();if(cC[1]==="nth"){if(!cC[2]){cl.error(cC[0])}cC[3]=+(cC[3]?cC[4]+(cC[5]||1):2*(cC[2]==="even"||cC[2]==="odd"));cC[4]=+((cC[6]+cC[7])||cC[2]==="odd")}else{if(cC[2]){cl.error(cC[0])}}return cC},PSEUDO:function(cD){var cE,cC;if(cb.CHILD.test(cD[0])){return null}if(cD[3]){cD[2]=cD[3]}else{if((cE=cD[4])){if(ch.test(cE)&&(cC=bw(cE,true))&&(cC=cE.indexOf(")",cE.length-cC)-cE.length)){cE=cE.slice(0,cC);cD[0]=cD[0].slice(0,cC)}cD[2]=cE}}return cD.slice(0,3)}},filter:{ID:bF?function(cC){cC=cC.replace(bY,"");return function(cD){return cD.getAttribute("id")===cC}}:function(cC){cC=cC.replace(bY,"");return function(cE){var cD=typeof cE.getAttributeNode!==bZ&&cE.getAttributeNode("id");return cD&&cD.value===cC}},TAG:function(cC){if(cC==="*"){return function(){return true}}cC=cC.replace(bY,"").toLowerCase();return function(cD){return cD.nodeName&&cD.nodeName.toLowerCase()===cC}},CLASS:function(cC){var cD=cp[cu][cC+" "];return cD||(cD=new RegExp("(^|"+b3+")"+cC+"("+b3+"|$)"))&&cp(cC,function(cE){return cD.test(cE.className||(typeof cE.getAttribute!==bZ&&cE.getAttribute("class"))||"")})},ATTR:function(cE,cD,cC){return function(cH,cG){var cF=cl.attr(cH,cE);if(cF==null){return cD==="!="}if(!cD){return true}cF+="";return cD==="="?cF===cC:cD==="!="?cF!==cC:cD==="^="?cC&&cF.indexOf(cC)===0:cD==="*="?cC&&cF.indexOf(cC)>-1:cD==="$="?cC&&cF.substr(cF.length-cC.length)===cC:cD==="~="?(" "+cF+" ").indexOf(cC)>-1:cD==="|="?cF===cC||cF.substr(0,cC.length+1)===cC+"-":false}},CHILD:function(cC,cE,cF,cD){if(cC==="nth"){return function(cI){var cH,cJ,cG=cI.parentNode;if(cF===1&&cD===0){return true}if(cG){cJ=0;for(cH=cG.firstChild;cH;cH=cH.nextSibling){if(cH.nodeType===1){cJ++;if(cI===cH){break}}}}cJ-=cD;return cJ===cF||(cJ%cF===0&&cJ/cF>=0)}}return function(cH){var cG=cH;switch(cC){case"only":case"first":while((cG=cG.previousSibling)){if(cG.nodeType===1){return false}}if(cC==="first"){return true}cG=cH;case"last":while((cG=cG.nextSibling)){if(cG.nodeType===1){return false}}return true}}},PSEUDO:function(cF,cE){var cC,cD=cg.pseudos[cF]||cg.setFilters[cF.toLowerCase()]||cl.error("unsupported pseudo: "+cF);if(cD[cu]){return cD(cE)}if(cD.length>1){cC=[cF,cF,"",cE];return cg.setFilters.hasOwnProperty(cF.toLowerCase())?cw(function(cI,cK){var cH,cG=cD(cI,cE),cJ=cG.length;while(cJ--){cH=bT.call(cI,cG[cJ]);cI[cH]=!(cK[cH]=cG[cJ])}}):function(cG){return cD(cG,0,cC)}}return cD}},pseudos:{not:cw(function(cC){var cD=[],cE=[],cF=bI(cC.replace(co,"$1"));return cF[cu]?cw(function(cH,cM,cK,cI){var cL,cG=cF(cH,null,cI,[]),cJ=cH.length;while(cJ--){if((cL=cG[cJ])){cH[cJ]=!(cM[cJ]=cL)}}}):function(cI,cH,cG){cD[0]=cI;cF(cD,null,cG,cE);return !cE.pop()}}),has:cw(function(cC){return function(cD){return cl(cC,cD).length>0}}),contains:cw(function(cC){return function(cD){return(cD.textContent||cD.innerText||bv(cD)).indexOf(cC)>-1}}),enabled:function(cC){return cC.disabled===false},disabled:function(cC){return cC.disabled===true},checked:function(cC){var cD=cC.nodeName.toLowerCase();return(cD==="input"&&!!cC.checked)||(cD==="option"&&!!cC.selected)},selected:function(cC){if(cC.parentNode){cC.parentNode.selectedIndex}return cC.selected===true},parent:function(cC){return !cg.pseudos.empty(cC)},empty:function(cD){var cC;cD=cD.firstChild;while(cD){if(cD.nodeName>"@"||(cC=cD.nodeType)===3||cC===4){return false}cD=cD.nextSibling}return true},header:function(cC){return bX.test(cC.nodeName)},text:function(cE){var cD,cC;return cE.nodeName.toLowerCase()==="input"&&(cD=cE.type)==="text"&&((cC=cE.getAttribute("type"))==null||cC.toLowerCase()===cD)},radio:cd("radio"),checkbox:cd("checkbox"),file:cd("file"),password:cd("password"),image:cd("image"),submit:by("submit"),reset:by("reset"),button:function(cD){var cC=cD.nodeName.toLowerCase();return cC==="input"&&cD.type==="button"||cC==="button"},input:function(cC){return ci.test(cC.nodeName)},focus:function(cC){var cD=cC.ownerDocument;return cC===cD.activeElement&&(!cD.hasFocus||cD.hasFocus())&&!!(cC.type||cC.href||~cC.tabIndex)},active:function(cC){return cC===cC.ownerDocument.activeElement},first:ca(function(){return[0]}),last:ca(function(cC,cD){return[cD-1]}),eq:ca(function(cC,cE,cD){return[cD<0?cD+cE:cD]}),even:ca(function(cC,cE){for(var cD=0;cD<cE;cD+=2){cC.push(cD)}return cC}),odd:ca(function(cC,cE){for(var cD=1;cD<cE;cD+=2){cC.push(cD)}return cC}),lt:ca(function(cC,cF,cE){for(var cD=cE<0?cE+cF:cE;--cD>=0;){cC.push(cD)}return cC}),gt:ca(function(cC,cF,cE){for(var cD=cE<0?cE+cF:cE;++cD<cF;){cC.push(cD)}return cC})}};function bx(cD,cC,cE){if(cD===cC){return cE}var cF=cD.nextSibling;while(cF){if(cF===cC){return -1}cF=cF.nextSibling}return 1}bL=bG.compareDocumentPosition?function(cD,cC){if(cD===cC){bH=true;return 0}return(!cD.compareDocumentPosition||!cC.compareDocumentPosition?cD.compareDocumentPosition:cD.compareDocumentPosition(cC)&4)?-1:1}:function(cK,cJ){if(cK===cJ){bH=true;return 0}else{if(cK.sourceIndex&&cJ.sourceIndex){return cK.sourceIndex-cJ.sourceIndex}}var cH,cD,cE=[],cC=[],cG=cK.parentNode,cI=cJ.parentNode,cL=cG;if(cG===cI){return bx(cK,cJ)}else{if(!cG){return -1}else{if(!cI){return 1}}}while(cL){cE.unshift(cL);cL=cL.parentNode}cL=cI;while(cL){cC.unshift(cL);cL=cL.parentNode}cH=cE.length;cD=cC.length;for(var cF=0;cF<cH&&cF<cD;cF++){if(cE[cF]!==cC[cF]){return bx(cE[cF],cC[cF])}}return cF===cH?bx(cK,cC[cF],-1):bx(cE[cF],cJ,1)};[0,0].sort(bL);bE=!bH;cl.uniqueSort=function(cE){var cF,cG=[],cD=1,cC=0;bH=bE;cE.sort(bL);if(bH){for(;(cF=cE[cD]);cD++){if(cF===cE[cD-1]){cC=cG.push(cD)}}while(cC--){cE.splice(cG[cC],1)}}return cE};cl.error=function(cC){throw new Error("Syntax error, unrecognized expression: "+cC)};function bw(cG,cL){var cD,cH,cJ,cK,cI,cE,cC,cF=cq[cu][cG+" "];if(cF){return cL?0:cF.slice(0)}cI=cG;cE=[];cC=cg.preFilter;while(cI){if(!cD||(cH=bA.exec(cI))){if(cH){cI=cI.slice(cH[0].length)||cI}cE.push(cJ=[])}cD=false;if((cH=cc.exec(cI))){cJ.push(cD=new bz(cH.shift()));cI=cI.slice(cD.length);cD.type=cH[0].replace(co," ")}for(cK in cg.filter){if((cH=cb[cK].exec(cI))&&(!cC[cK]||(cH=cC[cK](cH)))){cJ.push(cD=new bz(cH.shift()));cI=cI.slice(cD.length);cD.type=cK;cD.matches=cH}}if(!cD){break}}return cL?cI.length:cI?cl.error(cG):cq(cG,cE).slice(0)}function b1(cG,cE,cF){var cC=cE.dir,cH=cF&&cE.dir==="parentNode",cD=bK++;return cE.first?function(cK,cJ,cI){while((cK=cK[cC])){if(cH||cK.nodeType===1){return cG(cK,cJ,cI)}}}:function(cL,cK,cJ){if(!cJ){var cI,cM=bW+" "+cD+" ",cN=cM+cs;while((cL=cL[cC])){if(cH||cL.nodeType===1){if((cI=cL[cu])===cN){return cL.sizset}else{if(typeof cI==="string"&&cI.indexOf(cM)===0){if(cL.sizset){return cL}}else{cL[cu]=cN;if(cG(cL,cK,cJ)){cL.sizset=true;return cL}cL.sizset=false}}}}}else{while((cL=cL[cC])){if(cH||cL.nodeType===1){if(cG(cL,cK,cJ)){return cL}}}}}}function bJ(cC){return cC.length>1?function(cG,cF,cD){var cE=cC.length;while(cE--){if(!cC[cE](cG,cF,cD)){return false}}return true}:cC[0]}function b0(cC,cD,cE,cF,cI){var cG,cL=[],cH=0,cJ=cC.length,cK=cD!=null;for(;cH<cJ;cH++){if((cG=cC[cH])){if(!cE||cE(cG,cF,cI)){cL.push(cG);if(cK){cD.push(cH)}}}}return cL}function cx(cE,cD,cG,cF,cH,cC){if(cF&&!cF[cu]){cF=cx(cF)}if(cH&&!cH[cu]){cH=cx(cH,cC)}return cw(function(cS,cP,cK,cR){var cU,cQ,cM,cL=[],cT=[],cJ=cP.length,cI=cS||bU(cD||"*",cK.nodeType?[cK]:cK,[]),cN=cE&&(cS||!cD)?b0(cI,cL,cE,cK,cR):cI,cO=cG?cH||(cS?cE:cJ||cF)?[]:cP:cN;if(cG){cG(cN,cO,cK,cR)}if(cF){cU=b0(cO,cT);cF(cU,[],cK,cR);cQ=cU.length;while(cQ--){if((cM=cU[cQ])){cO[cT[cQ]]=!(cN[cT[cQ]]=cM)}}}if(cS){if(cH||cE){if(cH){cU=[];cQ=cO.length;while(cQ--){if((cM=cO[cQ])){cU.push((cN[cQ]=cM))}}cH(null,(cO=[]),cU,cR)}cQ=cO.length;while(cQ--){if((cM=cO[cQ])&&(cU=cH?bT.call(cS,cM):cL[cQ])>-1){cS[cU]=!(cP[cU]=cM)}}}}else{cO=b0(cO===cP?cO.splice(cJ,cO.length):cO);if(cH){cH(null,cP,cO,cR)}else{cr.apply(cP,cO)}}})}function b2(cI){var cD,cG,cE,cH=cI.length,cL=cg.relative[cI[0].type],cM=cL||cg.relative[" "],cF=cL?1:0,cJ=b1(function(cN){return cN===cD},cM,true),cK=b1(function(cN){return bT.call(cD,cN)>-1},cM,true),cC=[function(cP,cO,cN){return(!cL&&(cN||cO!==ce))||((cD=cO).nodeType?cJ(cP,cO,cN):cK(cP,cO,cN))}];for(;cF<cH;cF++){if((cG=cg.relative[cI[cF].type])){cC=[b1(bJ(cC),cG)]}else{cG=cg.filter[cI[cF].type].apply(null,cI[cF].matches);if(cG[cu]){cE=++cF;for(;cE<cH;cE++){if(cg.relative[cI[cE].type]){break}}return cx(cF>1&&bJ(cC),cF>1&&cI.slice(0,cF-1).join("").replace(co,"$1"),cG,cF<cE&&b2(cI.slice(cF,cE)),cE<cH&&b2((cI=cI.slice(cE))),cE<cH&&cI.join(""))}cC.push(cG)}}return bJ(cC)}function bB(cF,cE){var cC=cE.length>0,cG=cF.length>0,cD=function(cQ,cK,cP,cO,cW){var cL,cM,cR,cV=[],cU=0,cN="0",cH=cQ&&[],cS=cW!=null,cT=ce,cJ=cQ||cG&&cg.find.TAG("*",cW&&cK.parentNode||cK),cI=(bW+=cT==null?1:Math.E);if(cS){ce=cK!==bD&&cK;cs=cD.el}for(;(cL=cJ[cN])!=null;cN++){if(cG&&cL){for(cM=0;(cR=cF[cM]);cM++){if(cR(cL,cK,cP)){cO.push(cL);break}}if(cS){bW=cI;cs=++cD.el}}if(cC){if((cL=!cR&&cL)){cU--}if(cQ){cH.push(cL)}}}cU+=cN;if(cC&&cN!==cU){for(cM=0;(cR=cE[cM]);cM++){cR(cH,cV,cK,cP)}if(cQ){if(cU>0){while(cN--){if(!(cH[cN]||cV[cN])){cV[cN]=b9.call(cO)}}}cV=b0(cV)}cr.apply(cO,cV);if(cS&&!cQ&&cV.length>0&&(cU+cE.length)>1){cl.uniqueSort(cO)}}if(cS){bW=cI;ce=cT}return cH};cD.el=0;return cC?cw(cD):cD}bI=cl.compile=function(cC,cH){var cE,cD=[],cG=[],cF=bS[cu][cC+" "];if(!cF){if(!cH){cH=bw(cC)}cE=cH.length;while(cE--){cF=b2(cH[cE]);if(cF[cu]){cD.push(cF)}else{cG.push(cF)}}cF=bS(cC,bB(cG,cD))}return cF};function bU(cD,cG,cF){var cE=0,cC=cG.length;for(;cE<cC;cE++){cl(cD,cG[cE],cF)}return cF}function ct(cE,cC,cG,cK,cJ){var cH,cN,cD,cM,cL,cI=bw(cE),cF=cI.length;if(!cK){if(cI.length===1){cN=cI[0]=cI[0].slice(0);if(cN.length>2&&(cD=cN[0]).type==="ID"&&cC.nodeType===9&&!cJ&&cg.relative[cN[1].type]){cC=cg.find.ID(cD.matches[0].replace(bY,""),cC,cJ)[0];if(!cC){return cG}cE=cE.slice(cN.shift().length)}for(cH=cb.POS.test(cE)?-1:cN.length-1;cH>=0;cH--){cD=cN[cH];if(cg.relative[(cM=cD.type)]){break}if((cL=cg.find[cM])){if((cK=cL(cD.matches[0].replace(bY,""),cm.test(cN[0].type)&&cC.parentNode||cC,cJ))){cN.splice(cH,1);cE=cK.length&&cN.join("");if(!cE){cr.apply(cG,bQ.call(cK,0));return cG}break}}}}}bI(cE,cI)(cK,cC,cJ,cG,cm.test(cE));return cG}if(bD.querySelectorAll){(function(){var cH,cI=ct,cG=/'|\\/g,cE=/\=[\x20\t\r\n\f]*([^'"\]]*)[\x20\t\r\n\f]*\]/g,cD=[":focus"],cC=[":active"],cF=bG.matchesSelector||bG.mozMatchesSelector||bG.webkitMatchesSelector||bG.oMatchesSelector||bG.msMatchesSelector;cf(function(cJ){cJ.innerHTML="<select><option selected=''></option></select>";if(!cJ.querySelectorAll("[selected]").length){cD.push("\\["+b3+"*(?:checked|disabled|ismap|multiple|readonly|selected|value)")}if(!cJ.querySelectorAll(":checked").length){cD.push(":checked")}});cf(function(cJ){cJ.innerHTML="<p test=''></p>";if(cJ.querySelectorAll("[test^='']").length){cD.push("[*^$]="+b3+"*(?:\"\"|'')")}cJ.innerHTML="<input type='hidden'/>";if(!cJ.querySelectorAll(":enabled").length){cD.push(":enabled",":disabled")}});cD=new RegExp(cD.join("|"));ct=function(cP,cK,cR,cU,cT){if(!cU&&!cT&&!cD.test(cP)){var cN,cS,cM=true,cJ=cu,cL=cK,cQ=cK.nodeType===9&&cP;if(cK.nodeType===1&&cK.nodeName.toLowerCase()!=="object"){cN=bw(cP);if((cM=cK.getAttribute("id"))){cJ=cM.replace(cG,"\\$&")}else{cK.setAttribute("id",cJ)}cJ="[id='"+cJ+"'] ";cS=cN.length;while(cS--){cN[cS]=cJ+cN[cS].join("")}cL=cm.test(cP)&&cK.parentNode||cK;cQ=cN.join(",")}if(cQ){try{cr.apply(cR,bQ.call(cL.querySelectorAll(cQ),0));return cR}catch(cO){}finally{if(!cM){cK.removeAttribute("id")}}}}return cI(cP,cK,cR,cU,cT)};if(cF){cf(function(cK){cH=cF.call(cK,"div");try{cF.call(cK,"[test!='']:sizzle");cC.push("!=",cB)}catch(cJ){}});cC=new RegExp(cC.join("|"));cl.matchesSelector=function(cK,cM){cM=cM.replace(cE,"='$1']");if(!bR(cK)&&!cC.test(cM)&&!cD.test(cM)){try{var cJ=cF.call(cK,cM);if(cJ||cH||cK.document&&cK.document.nodeType!==11){return cJ}}catch(cL){}}return cl(cM,null,null,[cK]).length>0}}})()}cg.pseudos.nth=cg.pseudos.eq;function bO(){}cg.filters=bO.prototype=cg.pseudos;cg.setFilters=new bO();cl.attr=C.attr;C.find=cl;C.expr=cl.selectors;C.expr[":"]=C.expr.pseudos;C.unique=cl.uniqueSort;C.text=cl.getText;C.isXMLDoc=cl.isXML;C.contains=cl.contains})(bd);var U=/Until$/,ag=/^(?:parents|prev(?:Until|All))/,bq=/^.[^:#\[\.,]*$/,aQ=C.expr.match.needsContext,ao={children:true,contents:true,next:true,prev:true};C.fn.extend({find:function(bu){var by,bv,bA,bB,bz,bx,bw=this;if(typeof bu!=="string"){return C(bu).filter(function(){for(by=0,bv=bw.length;by<bv;by++){if(C.contains(bw[by],this)){return true}}})}bx=this.pushStack("","find",bu);for(by=0,bv=this.length;by<bv;by++){bA=bx.length;C.find(bu,this[by],bx);if(by>0){for(bB=bA;bB<bx.length;bB++){for(bz=0;bz<bA;bz++){if(bx[bz]===bx[bB]){bx.splice(bB--,1);break}}}}}return bx},has:function(bx){var bw,bv=C(bx,this),bu=bv.length;return this.filter(function(){for(bw=0;bw<bu;bw++){if(C.contains(this,bv[bw])){return true}}})},not:function(bu){return this.pushStack(az(this,bu,false),"not",bu)},filter:function(bu){return this.pushStack(az(this,bu,true),"filter",bu)},is:function(bu){return !!bu&&(typeof bu==="string"?aQ.test(bu)?C(bu,this.context).index(this[0])>=0:C.filter(bu,this).length>0:this.filter(bu).length>0)},closest:function(by,bx){var bz,bw=0,bu=this.length,bv=[],bA=aQ.test(by)||typeof by!=="string"?C(by,bx||this.context):0;for(;bw<bu;bw++){bz=this[bw];while(bz&&bz.ownerDocument&&bz!==bx&&bz.nodeType!==11){if(bA?bA.index(bz)>-1:C.find.matchesSelector(bz,by)){bv.push(bz);break}bz=bz.parentNode}}bv=bv.length>1?C.unique(bv):bv;return this.pushStack(bv,"closest",by)},index:function(bu){if(!bu){return(this[0]&&this[0].parentNode)?this.prevAll().length:-1}if(typeof bu==="string"){return C.inArray(this[0],C(bu))}return C.inArray(bu.jqx?bu[0]:bu,this)},add:function(bu,bv){var bx=typeof bu==="string"?C(bu,bv):C.makeArray(bu&&bu.nodeType?[bu]:bu),bw=C.merge(this.get(),bx);return this.pushStack(x(bx[0])||x(bw[0])?bw:C.unique(bw))},addBack:function(bu){return this.add(bu==null?this.prevObject:this.prevObject.filter(bu))}});C.fn.andSelf=C.fn.addBack;function x(bu){return !bu||!bu.parentNode||bu.parentNode.nodeType===11}function aB(bv,bu){do{bv=bv[bu]}while(bv&&bv.nodeType!==1);return bv}C.each({parent:function(bv){var bu=bv.parentNode;return bu&&bu.nodeType!==11?bu:null},parents:function(bu){return C.dir(bu,"parentNode")},parentsUntil:function(bv,bu,bw){return C.dir(bv,"parentNode",bw)},next:function(bu){return aB(bu,"nextSibling")},prev:function(bu){return aB(bu,"previousSibling")},nextAll:function(bu){return C.dir(bu,"nextSibling")},prevAll:function(bu){return C.dir(bu,"previousSibling")},nextUntil:function(bv,bu,bw){return C.dir(bv,"nextSibling",bw)},prevUntil:function(bv,bu,bw){return C.dir(bv,"previousSibling",bw)},siblings:function(bu){return C.sibling((bu.parentNode||{}).firstChild,bu)},children:function(bu){return C.sibling(bu.firstChild)},contents:function(bu){return C.nodeName(bu,"iframe")?bu.contentDocument||bu.contentWindow.document:C.merge([],bu.childNodes)}},function(bu,bv){C.fn[bu]=function(by,bw){var bx=C.map(this,bv,by);if(!U.test(bu)){bw=by}if(bw&&typeof bw==="string"){bx=C.filter(bw,bx)}bx=this.length>1&&!ao[bu]?C.unique(bx):bx;if(this.length>1&&ag.test(bu)){bx=bx.reverse()}return this.pushStack(bx,bu,aD.call(arguments).join(","))}});C.extend({filter:function(bw,bu,bv){if(bv){bw=":not("+bw+")"}return bu.length===1?C.find.matchesSelector(bu[0],bw)?[bu[0]]:[]:C.find.matches(bw,bu)},dir:function(bw,bv,by){var bu=[],bx=bw[bv];while(bx&&bx.nodeType!==9&&(by===G||bx.nodeType!==1||!C(bx).is(by))){if(bx.nodeType===1){bu.push(bx)}bx=bx[bv]}return bu},sibling:function(bw,bv){var bu=[];for(;bw;bw=bw.nextSibling){if(bw.nodeType===1&&bw!==bv){bu.push(bw)}}return bu}});function az(bx,bw,bu){bw=bw||0;if(C.isFunction(bw)){return C.grep(bx,function(bz,by){var bA=!!bw.call(bz,by,bz);return bA===bu})}else{if(bw.nodeType){return C.grep(bx,function(bz,by){return(bz===bw)===bu})}else{if(typeof bw==="string"){var bv=C.grep(bx,function(by){return by.nodeType===1});if(bq.test(bw)){return C.filter(bw,bv,!bu)}else{bw=C.filter(bw,bv)}}}}return C.grep(bx,function(bz,by){return(C.inArray(bz,bw)>=0)===bu})}function a(bu){var bw=aJ.split("|"),bv=bu.createDocumentFragment();if(bv.createElement){while(bw.length){bv.createElement(bw.pop())}}return bv}var aJ="abbr|article|aside|audio|bdi|canvas|data|datalist|details|figcaption|figure|footer|header|hgroup|mark|meter|nav|output|progress|section|summary|time|video",aa=/ JQXLite\d+="(?:null|\d+)"/g,ah=/^\s+/,L=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/gi,c=/<([\w:]+)/,v=/<tbody/i,P=/<|&#?\w+;/,W=/<(?:script|style|link)/i,I=/<(?:script|object|embed|option|style)/i,ac=new RegExp("<(?:"+aJ+")[\\s/>]","i"),R=/^(?:checkbox|radio)$/,o=/checked\s*(?:[^=]|=\s*.checked.)/i,bp=/\/(java|ecma)script/i,aG=/^\s*<!(?:\[CDATA\[|\-\-)|[\]\-]{2}>\s*$/g,am={option:[1,"<select multiple='multiple'>","</select>"],legend:[1,"<fieldset>","</fieldset>"],thead:[1,"<table>","</table>"],tr:[2,"<table><tbody>","</tbody></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],col:[2,"<table><tbody></tbody><colgroup>","</colgroup></table>"],area:[1,"<map>","</map>"],_default:[0,"",""]},T=a(ak),bg=T.appendChild(ak.createElement("div"));am.optgroup=am.option;am.tbody=am.tfoot=am.colgroup=am.caption=am.thead;am.th=am.td;if(!C.support.htmlSerialize){am._default=[1,"X<div>","</div>"]}C.fn.extend({text:function(bu){return C.access(this,function(bv){return bv===G?C.text(this):this.empty().append((this[0]&&this[0].ownerDocument||ak).createTextNode(bv))},null,bu,arguments.length)},wrapAll:function(bu){if(C.isFunction(bu)){return this.each(function(bw){C(this).wrapAll(bu.call(this,bw))})}if(this[0]){var bv=C(bu,this[0].ownerDocument).eq(0).clone(true);if(this[0].parentNode){bv.insertBefore(this[0])}bv.map(function(){var bw=this;while(bw.firstChild&&bw.firstChild.nodeType===1){bw=bw.firstChild}return bw}).append(this)}return this},wrapInner:function(bu){if(C.isFunction(bu)){return this.each(function(bv){C(this).wrapInner(bu.call(this,bv))})}return this.each(function(){var bv=C(this),bw=bv.contents();if(bw.length){bw.wrapAll(bu)}else{bv.append(bu)}})},wrap:function(bu){var bv=C.isFunction(bu);return this.each(function(bw){C(this).wrapAll(bv?bu.call(this,bw):bu)})},unwrap:function(){return this.parent().each(function(){if(!C.nodeName(this,"body")){C(this).replaceWith(this.childNodes)}}).end()},append:function(){return this.domManip(arguments,true,function(bu){if(this.nodeType===1||this.nodeType===11){this.appendChild(bu)}})},prepend:function(){return this.domManip(arguments,true,function(bu){if(this.nodeType===1||this.nodeType===11){this.insertBefore(bu,this.firstChild)}})},before:function(){if(!x(this[0])){return this.domManip(arguments,false,function(bv){this.parentNode.insertBefore(bv,this)})}if(arguments.length){var bu=C.clean(arguments);return this.pushStack(C.merge(bu,this),"before",this.selector)}},after:function(){if(!x(this[0])){return this.domManip(arguments,false,function(bv){this.parentNode.insertBefore(bv,this.nextSibling)})}if(arguments.length){var bu=C.clean(arguments);return this.pushStack(C.merge(this,bu),"after",this.selector)}},remove:function(bu,bx){var bw,bv=0;for(;(bw=this[bv])!=null;bv++){if(!bu||C.filter(bu,[bw]).length){if(!bx&&bw.nodeType===1){C.cleanData(bw.getElementsByTagName("*"));C.cleanData([bw])}if(bw.parentNode){bw.parentNode.removeChild(bw)}}}return this},empty:function(){var bv,bu=0;for(;(bv=this[bu])!=null;bu++){if(bv.nodeType===1){C.cleanData(bv.getElementsByTagName("*"))}while(bv.firstChild){bv.removeChild(bv.firstChild)}}return this},clone:function(bv,bu){bv=bv==null?false:bv;bu=bu==null?bv:bu;return this.map(function(){return C.clone(this,bv,bu)})},html:function(bu){return C.access(this,function(by){var bx=this[0]||{},bw=0,bv=this.length;if(by===G){return bx.nodeType===1?bx.innerHTML.replace(aa,""):G}if(typeof by==="string"&&!W.test(by)&&(C.support.htmlSerialize||!ac.test(by))&&(C.support.leadingWhitespace||!ah.test(by))&&!am[(c.exec(by)||["",""])[1].toLowerCase()]){by=by.replace(L,"<$1></$2>");try{for(;bw<bv;bw++){bx=this[bw]||{};if(bx.nodeType===1){C.cleanData(bx.getElementsByTagName("*"));bx.innerHTML=by}}bx=0}catch(bz){}}if(bx){this.empty().append(by)}},null,bu,arguments.length)},replaceWith:function(bu){if(!x(this[0])){if(C.isFunction(bu)){return this.each(function(bx){var bw=C(this),bv=bw.html();bw.replaceWith(bu.call(this,bx,bv))})}if(typeof bu!=="string"){bu=C(bu).detach()}return this.each(function(){var bw=this.nextSibling,bv=this.parentNode;C(this).remove();if(bw){C(bw).before(bu)}else{C(bv).append(bu)}})}return this.length?this.pushStack(C(C.isFunction(bu)?bu():bu),"replaceWith",bu):this},detach:function(bu){return this.remove(bu,true)},domManip:function(bA,bE,bD){bA=[].concat.apply([],bA);var bw,by,bz,bC,bx=0,bB=bA[0],bv=[],bu=this.length;if(!C.support.checkClone&&bu>1&&typeof bB==="string"&&o.test(bB)){return this.each(function(){C(this).domManip(bA,bE,bD)})}if(C.isFunction(bB)){return this.each(function(bG){var bF=C(this);bA[0]=bB.call(this,bG,bE?bF.html():G);bF.domManip(bA,bE,bD)})}if(this[0]){bw=C.buildFragment(bA,this,bv);bz=bw.fragment;by=bz.firstChild;if(bz.childNodes.length===1){bz=by}if(by){bE=bE&&C.nodeName(by,"tr");for(bC=bw.cacheable||bu-1;bx<bu;bx++){bD.call(bE&&C.nodeName(this[bx],"table")?a3(this[bx],"tbody"):this[bx],bx===bC?bz:C.clone(bz,true,true))}}bz=by=null;if(bv.length){C.each(bv,function(bF,bG){if(bG.src){if(C.ajax){C.ajax({url:bG.src,type:"GET",dataType:"script",async:false,global:false,"throws":true})}else{C.error("no ajax")}}else{C.globalEval((bG.text||bG.textContent||bG.innerHTML||"").replace(aG,""))}if(bG.parentNode){bG.parentNode.removeChild(bG)}})}}return this}});function a3(bv,bu){return bv.getElementsByTagName(bu)[0]||bv.appendChild(bv.ownerDocument.createElement(bu))}function r(bB,bv){if(bv.nodeType!==1||!C.hasData(bB)){return}var by,bx,bu,bA=C._data(bB),bz=C._data(bv,bA),bw=bA.events;if(bw){delete bz.handle;bz.events={};for(by in bw){for(bx=0,bu=bw[by].length;bx<bu;bx++){C.event.add(bv,by,bw[by][bx])}}}if(bz.data){bz.data=C.extend({},bz.data)}}function ab(bv,bu){var bw;if(bu.nodeType!==1){return}if(bu.clearAttributes){bu.clearAttributes()}if(bu.mergeAttributes){bu.mergeAttributes(bv)}bw=bu.nodeName.toLowerCase();if(bw==="object"){if(bu.parentNode){bu.outerHTML=bv.outerHTML}if(C.support.html5Clone&&(bv.innerHTML&&!C.trim(bu.innerHTML))){bu.innerHTML=bv.innerHTML}}else{if(bw==="input"&&R.test(bv.type)){bu.defaultChecked=bu.checked=bv.checked;if(bu.value!==bv.value){bu.value=bv.value}}else{if(bw==="option"){bu.selected=bv.defaultSelected}else{if(bw==="input"||bw==="textarea"){bu.defaultValue=bv.defaultValue}else{if(bw==="script"&&bu.text!==bv.text){bu.text=bv.text}}}}}bu.removeAttribute(C.expando)}C.buildFragment=function(bx,by,bv){var bw,bu,bz,bA=bx[0];by=by||ak;by=!by.nodeType&&by[0]||by;by=by.ownerDocument||by;if(bx.length===1&&typeof bA==="string"&&bA.length<512&&by===ak&&bA.charAt(0)==="<"&&!I.test(bA)&&(C.support.checkClone||!o.test(bA))&&(C.support.html5Clone||!ac.test(bA))){bu=true;bw=C.fragments[bA];bz=bw!==G}if(!bw){bw=by.createDocumentFragment();C.clean(bx,by,bw,bv);if(bu){C.fragments[bA]=bz&&bw}}return{fragment:bw,cacheable:bu}};C.fragments={};C.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(bu,bv){C.fn[bu]=function(bw){var by,bA=0,bz=[],bC=C(bw),bx=bC.length,bB=this.length===1&&this[0].parentNode;if((bB==null||bB&&bB.nodeType===11&&bB.childNodes.length===1)&&bx===1){bC[bv](this[0]);return this}else{for(;bA<bx;bA++){by=(bA>0?this.clone(true):this).get();C(bC[bA])[bv](by);bz=bz.concat(by)}return this.pushStack(bz,bu,bC.selector)}}});function bk(bu){if(typeof bu.getElementsByTagName!=="undefined"){return bu.getElementsByTagName("*")}else{if(typeof bu.querySelectorAll!=="undefined"){return bu.querySelectorAll("*")}else{return[]}}}function al(bu){if(R.test(bu.type)){bu.defaultChecked=bu.checked}}C.extend({clone:function(by,bA,bw){var bu,bv,bx,bz;if(C.support.html5Clone||C.isXMLDoc(by)||!ac.test("<"+by.nodeName+">")){bz=by.cloneNode(true)}else{bg.innerHTML=by.outerHTML;bg.removeChild(bz=bg.firstChild)}if((!C.support.noCloneEvent||!C.support.noCloneChecked)&&(by.nodeType===1||by.nodeType===11)&&!C.isXMLDoc(by)){ab(by,bz);bu=bk(by);bv=bk(bz);for(bx=0;bu[bx];++bx){if(bv[bx]){ab(bu[bx],bv[bx])}}}if(bA){r(by,bz);if(bw){bu=bk(by);bv=bk(bz);for(bx=0;bu[bx];++bx){r(bu[bx],bv[bx])}}}bu=bv=null;return bz},clean:function(bH,bw,bu,bx){var bE,bD,bG,bL,bA,bK,bB,by,bv,bF,bJ,bC,bz=bw===ak&&T,bI=[];if(!bw||typeof bw.createDocumentFragment==="undefined"){bw=ak}for(bE=0;(bG=bH[bE])!=null;bE++){if(typeof bG==="number"){bG+=""}if(!bG){continue}if(typeof bG==="string"){if(!P.test(bG)){bG=bw.createTextNode(bG)}else{bz=bz||a(bw);bB=bw.createElement("div");bz.appendChild(bB);bG=bG.replace(L,"<$1></$2>");bL=(c.exec(bG)||["",""])[1].toLowerCase();bA=am[bL]||am._default;bK=bA[0];bB.innerHTML=bA[1]+bG+bA[2];while(bK--){bB=bB.lastChild}if(!C.support.tbody){by=v.test(bG);bv=bL==="table"&&!by?bB.firstChild&&bB.firstChild.childNodes:bA[1]==="<table>"&&!by?bB.childNodes:[];for(bD=bv.length-1;bD>=0;--bD){if(C.nodeName(bv[bD],"tbody")&&!bv[bD].childNodes.length){bv[bD].parentNode.removeChild(bv[bD])}}}if(!C.support.leadingWhitespace&&ah.test(bG)){bB.insertBefore(bw.createTextNode(ah.exec(bG)[0]),bB.firstChild)}bG=bB.childNodes;bB.parentNode.removeChild(bB)}}if(bG.nodeType){bI.push(bG)}else{C.merge(bI,bG)}}if(bB){bG=bB=bz=null}if(!C.support.appendChecked){for(bE=0;(bG=bI[bE])!=null;bE++){if(C.nodeName(bG,"input")){al(bG)}else{if(typeof bG.getElementsByTagName!=="undefined"){C.grep(bG.getElementsByTagName("input"),al)}}}}if(bu){bJ=function(bM){if(!bM.type||bp.test(bM.type)){return bx?bx.push(bM.parentNode?bM.parentNode.removeChild(bM):bM):bu.appendChild(bM)}};for(bE=0;(bG=bI[bE])!=null;bE++){if(!(C.nodeName(bG,"script")&&bJ(bG))){bu.appendChild(bG);if(typeof bG.getElementsByTagName!=="undefined"){bC=C.grep(C.merge([],bG.getElementsByTagName("script")),bJ);bI.splice.apply(bI,[bE+1,0].concat(bC));bE+=bC.length}}}}return bI},cleanData:function(bv,bD){var by,bw,bx,bC,bz=0,bE=C.expando,bu=C.cache,bA=C.support.deleteExpando,bB=C.event.special;for(;(bx=bv[bz])!=null;bz++){if(bD||C.acceptData(bx)){bw=bx[bE];by=bw&&bu[bw];if(by){if(by.events){for(bC in by.events){if(bB[bC]){C.event.remove(bx,bC)}else{C.removeEvent(bx,bC,by.handle)}}}if(bu[bw]){delete bu[bw];if(bA){delete bx[bE]}else{if(bx.removeAttribute){bx.removeAttribute(bE)}else{bx[bE]=null}}C.deletedIds.push(bw)}}}}}});(function(){var bu,bv;C.uaMatch=function(bx){bx=bx.toLowerCase();var bw=/(chrome)[ \/]([\w.]+)/.exec(bx)||/(webkit)[ \/]([\w.]+)/.exec(bx)||/(opera)(?:.*version|)[ \/]([\w.]+)/.exec(bx)||/(msie) ([\w.]+)/.exec(bx)||bx.indexOf("compatible")<0&&/(mozilla)(?:.*? rv:([\w.]+)|)/.exec(bx)||[];return{browser:bw[1]||"",version:bw[2]||"0"}};bu=C.uaMatch(bt.userAgent);bv={};if(bu.browser){bv[bu.browser]=true;bv.version=bu.version}if(bv.chrome){bv.webkit=true}else{if(bv.webkit){bv.safari=true}}C.browser=bv;C.sub=function(){function bx(bz,bA){return new bx.fn.init(bz,bA)}C.extend(true,bx,this);bx.superclass=this;bx.fn=bx.prototype=this();bx.fn.constructor=bx;bx.sub=this.sub;bx.fn.init=function by(bz,bA){if(bA&&bA instanceof C&&!(bA instanceof bx)){bA=bx(bA)}return C.fn.init.call(this,bz,bA,bw)};bx.fn.init.prototype=bx.fn;var bw=bx(ak);return bx}})();var Q,bc,l,ad=/alpha\([^)]*\)/i,aj=/opacity=([^)]*)/,w=/^(top|right|bottom|left)$/,ai=/^(none|table(?!-c[ea]).+)/,av=/^margin/,i=new RegExp("^("+aE+")(.*)$","i"),aV=new RegExp("^("+aE+")(?!px)[a-z%]+$","i"),E=new RegExp("^([-+])=("+aE+")","i"),J={BODY:"block"},ba={position:"absolute",visibility:"hidden",display:"block"},aL={letterSpacing:0,fontWeight:400},D=["Top","Right","Bottom","Left"],O=["Webkit","O","Moz","ms"],be=C.fn.toggle;function a2(bx,bv){if(bv in bx){return bv}var by=bv.charAt(0).toUpperCase()+bv.slice(1),bu=bv,bw=O.length;while(bw--){bv=O[bw]+by;if(bv in bx){return bv}}return bu}function ap(bv,bu){bv=bu||bv;return C.css(bv,"display")==="none"||!C.contains(bv.ownerDocument,bv)}function bb(bz,bu){var by,bA,bv=[],bw=0,bx=bz.length;for(;bw<bx;bw++){by=bz[bw];if(!by.style){continue}bv[bw]=C._data(by,"olddisplay");if(bu){if(!bv[bw]&&by.style.display==="none"){by.style.display=""}if(by.style.display===""&&ap(by)){bv[bw]=C._data(by,"olddisplay",aN(by.nodeName))}}else{bA=Q(by,"display");if(!bv[bw]&&bA!=="none"){C._data(by,"olddisplay",bA)}}}for(bw=0;bw<bx;bw++){by=bz[bw];if(!by.style){continue}if(!bu||by.style.display==="none"||by.style.display===""){by.style.display=bu?bv[bw]||"":"none"}}return bz}C.fn.extend({css:function(bu,bv){return C.access(this,function(bx,bw,by){return by!==G?C.style(bx,bw,by):C.css(bx,bw)},bu,bv,arguments.length>1)},show:function(){return bb(this,true)},hide:function(){return bb(this)},toggle:function(bw,bv){var bu=typeof bw==="boolean";if(C.isFunction(bw)&&C.isFunction(bv)){return be.apply(this,arguments)}return this.each(function(){if(bu?bw:ap(this)){C(this).show()}else{C(this).hide()}})}});C.extend({cssHooks:{opacity:{get:function(bw,bv){if(bv){var bu=Q(bw,"opacity");return bu===""?"1":bu}}}},cssNumber:{fillOpacity:true,fontWeight:true,lineHeight:true,opacity:true,orphans:true,widows:true,zIndex:true,zoom:true},cssProps:{"float":C.support.cssFloat?"cssFloat":"styleFloat"},style:function(bw,bv,bC,bx){if(!bw||bw.nodeType===3||bw.nodeType===8||!bw.style){return}var bA,bB,bD,by=C.camelCase(bv),bu=bw.style;bv=C.cssProps[by]||(C.cssProps[by]=a2(bu,by));bD=C.cssHooks[bv]||C.cssHooks[by];if(bC!==G){bB=typeof bC;if(bB==="string"&&(bA=E.exec(bC))){bC=(bA[1]+1)*bA[2]+parseFloat(C.css(bw,bv));bB="number"}if(bC==null||bB==="number"&&isNaN(bC)){return}if(bB==="number"&&!C.cssNumber[by]){bC+="px"}if(!bD||!("set" in bD)||(bC=bD.set(bw,bC,bx))!==G){try{bu[bv]=bC}catch(bz){}}}else{if(bD&&"get" in bD&&(bA=bD.get(bw,false,bx))!==G){return bA}return bu[bv]}},css:function(bA,by,bz,bv){var bB,bx,bu,bw=C.camelCase(by);by=C.cssProps[bw]||(C.cssProps[bw]=a2(bA.style,bw));bu=C.cssHooks[by]||C.cssHooks[bw];if(bu&&"get" in bu){bB=bu.get(bA,true,bv)}if(bB===G){bB=Q(bA,by)}if(bB==="normal"&&by in aL){bB=aL[by]}if(bz||bv!==G){bx=parseFloat(bB);return bz||C.isNumeric(bx)?bx||0:bB}return bB},swap:function(by,bx,bz){var bw,bv,bu={};for(bv in bx){bu[bv]=by.style[bv];by.style[bv]=bx[bv]}bw=bz.call(by);for(bv in bx){by.style[bv]=bu[bv]}return bw}});if(bd.getComputedStyle){Q=function(bB,bv){var bu,by,bx,bA,bz=bd.getComputedStyle(bB,null),bw=bB.style;if(bz){bu=bz.getPropertyValue(bv)||bz[bv];if(bu===""&&!C.contains(bB.ownerDocument,bB)){bu=C.style(bB,bv)}if(aV.test(bu)&&av.test(bv)){by=bw.width;bx=bw.minWidth;bA=bw.maxWidth;bw.minWidth=bw.maxWidth=bw.width=bu;bu=bz.width;bw.width=by;bw.minWidth=bx;bw.maxWidth=bA}}return bu}}else{if(ak.documentElement.currentStyle){Q=function(by,bw){var bz,bu,bv=by.currentStyle&&by.currentStyle[bw],bx=by.style;if(bv==null&&bx&&bx[bw]){bv=bx[bw]}if(aV.test(bv)&&!w.test(bw)){bz=bx.left;bu=by.runtimeStyle&&by.runtimeStyle.left;if(bu){by.runtimeStyle.left=by.currentStyle.left}bx.left=bw==="fontSize"?"1em":bv;bv=bx.pixelLeft+"px";bx.left=bz;if(bu){by.runtimeStyle.left=bu}}return bv===""?"auto":bv}}}function aO(bu,bw,bx){var bv=i.exec(bw);return bv?Math.max(0,bv[1]-(bx||0))+(bv[2]||"px"):bw}function aZ(bx,bv,bu,bz){var bw=bu===(bz?"border":"content")?4:bv==="width"?1:0,by=0;for(;bw<4;bw+=2){if(bu==="margin"){by+=C.css(bx,bu+D[bw],true)}if(bz){if(bu==="content"){by-=parseFloat(Q(bx,"padding"+D[bw]))||0}if(bu!=="margin"){by-=parseFloat(Q(bx,"border"+D[bw]+"Width"))||0}}else{by+=parseFloat(Q(bx,"padding"+D[bw]))||0;if(bu!=="padding"){by+=parseFloat(Q(bx,"border"+D[bw]+"Width"))||0}}}return by}function Y(bx,bv,bu){var by=bv==="width"?bx.offsetWidth:bx.offsetHeight,bw=true,bz=C.support.boxSizing&&C.css(bx,"boxSizing")==="border-box";if(by<=0||by==null){by=Q(bx,bv);if(by<0||by==null){by=bx.style[bv]}if(aV.test(by)){return by}bw=bz&&(C.support.boxSizingReliable||by===bx.style[bv]);by=parseFloat(by)||0}return(by+aZ(bx,bv,bu||(bz?"border":"content"),bw))+"px"}function aN(bw){if(J[bw]){return J[bw]}var bu=C("<"+bw+">").appendTo(ak.body),bv=bu.css("display");bu.remove();if(bv==="none"||bv===""){bc=ak.body.appendChild(bc||C.extend(ak.createElement("iframe"),{frameBorder:0,width:0,height:0}));if(!l||!bc.createElement){l=(bc.contentWindow||bc.contentDocument).document;l.write("<!doctype html><html><body>");l.close()}bu=l.body.appendChild(l.createElement(bw));bv=Q(bu,"display");ak.body.removeChild(bc)}J[bw]=bv;return bv}C.each(["height","width"],function(bv,bu){C.cssHooks[bu]={get:function(by,bx,bw){if(bx){if(by.offsetWidth===0&&ai.test(Q(by,"display"))){return C.swap(by,ba,function(){return Y(by,bu,bw)})}else{return Y(by,bu,bw)}}},set:function(bx,by,bw){return aO(bx,by,bw?aZ(bx,bu,bw,C.support.boxSizing&&C.css(bx,"boxSizing")==="border-box"):0)}}});if(!C.support.opacity){C.cssHooks.opacity={get:function(bv,bu){return aj.test((bu&&bv.currentStyle?bv.currentStyle.filter:bv.style.filter)||"")?(0.01*parseFloat(RegExp.$1))+"":bu?"1":""},set:function(by,bz){var bx=by.style,bv=by.currentStyle,bu=C.isNumeric(bz)?"alpha(opacity="+bz*100+")":"",bw=bv&&bv.filter||bx.filter||"";bx.zoom=1;if(bz>=1&&C.trim(bw.replace(ad,""))===""&&bx.removeAttribute){bx.removeAttribute("filter");if(bv&&!bv.filter){return}}bx.filter=ad.test(bw)?bw.replace(ad,bu):bw+" "+bu}}}C(function(){if(!C.support.reliableMarginRight){C.cssHooks.marginRight={get:function(bv,bu){return C.swap(bv,{display:"inline-block"},function(){if(bu){return Q(bv,"marginRight")}})}}}if(!C.support.pixelPosition&&C.fn.position){C.each(["top","left"],function(bu,bv){C.cssHooks[bv]={get:function(by,bx){if(bx){var bw=Q(by,bv);return aV.test(bw)?C(by).position()[bv]+"px":bw}}}})}});if(C.expr&&C.expr.filters){C.expr.filters.hidden=function(bu){return(bu.offsetWidth===0&&bu.offsetHeight===0)||(!C.support.reliableHiddenOffsets&&((bu.style&&bu.style.display)||Q(bu,"display"))==="none")};C.expr.filters.visible=function(bu){return !C.expr.filters.hidden(bu)}}C.each({margin:"",padding:"",border:"Width"},function(bu,bv){C.cssHooks[bu+bv]={expand:function(by){var bx,bz=typeof by==="string"?by.split(" "):[by],bw={};for(bx=0;bx<4;bx++){bw[bu+D[bx]+bv]=bz[bx]||bz[bx-2]||bz[0]}return bw}};if(!av.test(bu)){C.cssHooks[bu+bv].set=aO}});var g=/%20/g,af=/\[\]$/,br=/\r?\n/g,aU=/^(?:color|date|datetime|datetime-local|email|hidden|month|number|password|range|search|tel|text|time|url|week)$/i,p=/^(?:select|textarea)/i;C.fn.extend({serialize:function(){return C.param(this.serializeArray())},serializeArray:function(){return this.map(function(){return this.elements?C.makeArray(this.elements):this}).filter(function(){return this.name&&!this.disabled&&(this.checked||p.test(this.nodeName)||aU.test(this.type))}).map(function(bu,bv){var bw=C(this).val();return bw==null?null:C.isArray(bw)?C.map(bw,function(by,bx){return{name:bv.name,value:by.replace(br,"\r\n")}}):{name:bv.name,value:bw.replace(br,"\r\n")}}).get()}});C.param=function(bu,bw){var bx,bv=[],by=function(bz,bA){bA=C.isFunction(bA)?bA():(bA==null?"":bA);bv[bv.length]=encodeURIComponent(bz)+"="+encodeURIComponent(bA)};if(bw===G){bw=C.ajaxSettings&&C.ajaxSettings.traditional}if(C.isArray(bu)||(bu.jqx&&!C.isPlainObject(bu))){C.each(bu,function(){by(this.name,this.value)})}else{for(bx in bu){s(bx,bu[bx],bw,by)}}return bv.join("&").replace(g,"+")};function s(bw,by,bv,bx){var bu;if(C.isArray(by)){C.each(by,function(bA,bz){if(bv||af.test(bw)){bx(bw,bz)}else{s(bw+"["+(typeof bz==="object"?bA:"")+"]",bz,bv,bx)}})}else{if(!bv&&C.type(by)==="object"){for(bu in by){s(bw+"["+bu+"]",by[bu],bv,bx)}}else{bx(bw,by)}}}if(C.support.ajax){C.ajaxTransport(function(bu){if(!bu.crossDomain||C.support.cors){var bv;return{send:function(bB,bw){var bz,by,bA=bu.xhr();if(bu.username){bA.open(bu.type,bu.url,bu.async,bu.username,bu.password)}else{bA.open(bu.type,bu.url,bu.async)}if(bu.xhrFields){for(by in bu.xhrFields){bA[by]=bu.xhrFields[by]}}if(bu.mimeType&&bA.overrideMimeType){bA.overrideMimeType(bu.mimeType)}if(!bu.crossDomain&&!bB["X-Requested-With"]){bB["X-Requested-With"]="XMLHttpRequest"}try{for(by in bB){bA.setRequestHeader(by,bB[by])}}catch(bx){}bA.send((bu.hasContent&&bu.data)||null);bv=function(bK,bE){var bF,bD,bC,bI,bH;try{if(bv&&(bE||bA.readyState===4)){bv=G;if(bz){bA.onreadystatechange=C.noop;if(xhrOnUnloadAbort){delete xhrCallbacks[bz]}}if(bE){if(bA.readyState!==4){bA.abort()}}else{bF=bA.status;bC=bA.getAllResponseHeaders();bI={};bH=bA.responseXML;if(bH&&bH.documentElement){bI.xml=bH}try{bI.text=bA.responseText}catch(bJ){}try{bD=bA.statusText}catch(bJ){bD=""}if(!bF&&bu.isLocal&&!bu.crossDomain){bF=bI.text?200:404}else{if(bF===1223){bF=204}}}}}catch(bG){if(!bE){bw(-1,bG)}}if(bI){bw(bF,bD,bI,bC)}};if(!bu.async){bv()}else{if(bA.readyState===4){setTimeout(bv,0)}else{bz=++xhrId;if(xhrOnUnloadAbort){if(!xhrCallbacks){xhrCallbacks={};C(bd).unload(xhrOnUnloadAbort)}xhrCallbacks[bz]=bv}bA.onreadystatechange=bv}}},abort:function(){if(bv){bv(0,1)}}}}})}var a6,a1,ar=/^(?:toggle|show|hide)$/,aM=new RegExp("^(?:([-+])=|)("+aE+")([a-z%]*)$","i"),a7=/queueHooks$/,k=[bm],H={"*":[function(bu,bB){var bx,bC,bD=this.createTween(bu,bB),by=aM.exec(bB),bz=bD.cur(),bv=+bz||0,bw=1,bA=20;if(by){bx=+by[2];bC=by[3]||(C.cssNumber[bu]?"":"px");if(bC!=="px"&&bv){bv=C.css(bD.elem,bu,true)||bx||1;do{bw=bw||".5";bv=bv/bw;C.style(bD.elem,bu,bv+bC)}while(bw!==(bw=bD.cur()/bz)&&bw!==1&&--bA)}bD.unit=bC;bD.start=bv;bD.end=by[1]?bv+(by[1]+1)*bx:bx}return bD}]};function bl(){setTimeout(function(){a6=G},0);return(a6=C.now())}function Z(bv,bu){C.each(bu,function(bA,by){var bz=(H[bA]||[]).concat(H["*"]),bw=0,bx=bz.length;for(;bw<bx;bw++){if(bz[bw].call(bv,bA,by)){return}}})}function bj(bw,bA,bD){var bE,bz=0,bu=0,bv=k.length,bC=C.Deferred().always(function(){delete by.elem}),by=function(){var bK=a6||bl(),bH=Math.max(0,bx.startTime+bx.duration-bK),bF=bH/bx.duration||0,bJ=1-bF,bG=0,bI=bx.tweens.length;for(;bG<bI;bG++){bx.tweens[bG].run(bJ)}bC.notifyWith(bw,[bx,bJ,bH]);if(bJ<1&&bI){return bH}else{bC.resolveWith(bw,[bx]);return false}},bx=bC.promise({elem:bw,props:C.extend({},bA),opts:C.extend(true,{specialEasing:{}},bD),originalProperties:bA,originalOptions:bD,startTime:a6||bl(),duration:bD.duration,tweens:[],createTween:function(bI,bF,bH){var bG=C.Tween(bw,bx.opts,bI,bF,bx.opts.specialEasing[bI]||bx.opts.easing);bx.tweens.push(bG);return bG},stop:function(bG){var bF=0,bH=bG?bx.tweens.length:0;for(;bF<bH;bF++){bx.tweens[bF].run(1)}if(bG){bC.resolveWith(bw,[bx,bG])}else{bC.rejectWith(bw,[bx,bG])}return this}}),bB=bx.props;aW(bB,bx.opts.specialEasing);for(;bz<bv;bz++){bE=k[bz].call(bx,bw,bB,bx.opts);if(bE){return bE}}Z(bx,bB);if(C.isFunction(bx.opts.start)){bx.opts.start.call(bw,bx)}C.fx.timer(C.extend(by,{anim:bx,queue:bx.opts.queue,elem:bw}));return bx.progress(bx.opts.progress).done(bx.opts.done,bx.opts.complete).fail(bx.opts.fail).always(bx.opts.always)}function aW(bx,bz){var bw,bv,bA,by,bu;for(bw in bx){bv=C.camelCase(bw);bA=bz[bv];by=bx[bw];if(C.isArray(by)){bA=by[1];by=bx[bw]=by[0]}if(bw!==bv){bx[bv]=by;delete bx[bw]}bu=C.cssHooks[bv];if(bu&&"expand" in bu){by=bu.expand(by);delete bx[bv];for(bw in by){if(!(bw in bx)){bx[bw]=by[bw];bz[bw]=bA}}}else{bz[bv]=bA}}}C.Animation=C.extend(bj,{tweener:function(bv,by){if(C.isFunction(bv)){by=bv;bv=["*"]}else{bv=bv.split(" ")}var bx,bu=0,bw=bv.length;for(;bu<bw;bu++){bx=bv[bu];H[bx]=H[bx]||[];H[bx].unshift(by)}},prefilter:function(bv,bu){if(bu){k.unshift(bv)}else{k.push(bv)}}});function bm(by,bE,bu){var bD,bw,bG,bx,bK,bA,bJ,bI,bH,bz=this,bv=by.style,bF={},bC=[],bB=by.nodeType&&ap(by);if(!bu.queue){bI=C._queueHooks(by,"fx");if(bI.unqueued==null){bI.unqueued=0;bH=bI.empty.fire;bI.empty.fire=function(){if(!bI.unqueued){bH()}}}bI.unqueued++;bz.always(function(){bz.always(function(){bI.unqueued--;if(!C.queue(by,"fx").length){bI.empty.fire()}})})}if(by.nodeType===1&&("height" in bE||"width" in bE)){bu.overflow=[bv.overflow,bv.overflowX,bv.overflowY];if(C.css(by,"display")==="inline"&&C.css(by,"float")==="none"){if(!C.support.inlineBlockNeedsLayout||aN(by.nodeName)==="inline"){bv.display="inline-block"}else{bv.zoom=1}}}if(bu.overflow){bv.overflow="hidden";if(!C.support.shrinkWrapBlocks){bz.done(function(){bv.overflow=bu.overflow[0];bv.overflowX=bu.overflow[1];bv.overflowY=bu.overflow[2]})}}for(bD in bE){bG=bE[bD];if(ar.exec(bG)){delete bE[bD];bA=bA||bG==="toggle";if(bG===(bB?"hide":"show")){continue}bC.push(bD)}}bx=bC.length;if(bx){bK=C._data(by,"fxshow")||C._data(by,"fxshow",{});if("hidden" in bK){bB=bK.hidden}if(bA){bK.hidden=!bB}if(bB){C(by).show()}else{bz.done(function(){C(by).hide()})}bz.done(function(){var bL;C.removeData(by,"fxshow",true);for(bL in bF){C.style(by,bL,bF[bL])}});for(bD=0;bD<bx;bD++){bw=bC[bD];bJ=bz.createTween(bw,bB?bK[bw]:0);bF[bw]=bK[bw]||C.style(by,bw);if(!(bw in bK)){bK[bw]=bJ.start;if(bB){bJ.end=bJ.start;bJ.start=bw==="width"||bw==="height"?1:0}}}}}function u(bw,bv,by,bu,bx){return new u.prototype.init(bw,bv,by,bu,bx)}C.Tween=u;u.prototype={constructor:u,init:function(bx,bv,bz,bu,by,bw){this.elem=bx;this.prop=bz;this.easing=by||"swing";this.options=bv;this.start=this.now=this.cur();this.end=bu;this.unit=bw||(C.cssNumber[bz]?"":"px")},cur:function(){var bu=u.propHooks[this.prop];return bu&&bu.get?bu.get(this):u.propHooks._default.get(this)},run:function(bw){var bv,bu=u.propHooks[this.prop];if(this.options.duration){this.pos=bv=C.easing[this.easing](bw,this.options.duration*bw,0,1,this.options.duration)}else{this.pos=bv=bw}this.now=(this.end-this.start)*bv+this.start;if(this.options.step){this.options.step.call(this.elem,this.now,this)}if(bu&&bu.set){bu.set(this)}else{u.propHooks._default.set(this)}return this}};u.prototype.init.prototype=u.prototype;u.propHooks={_default:{get:function(bv){var bu;if(bv.elem[bv.prop]!=null&&(!bv.elem.style||bv.elem.style[bv.prop]==null)){return bv.elem[bv.prop]}bu=C.css(bv.elem,bv.prop,false,"");return !bu||bu==="auto"?0:bu},set:function(bu){if(C.fx.step[bu.prop]){C.fx.step[bu.prop](bu)}else{if(bu.elem.style&&(bu.elem.style[C.cssProps[bu.prop]]!=null||C.cssHooks[bu.prop])){C.style(bu.elem,bu.prop,bu.now+bu.unit)}else{bu.elem[bu.prop]=bu.now}}}}};u.propHooks.scrollTop=u.propHooks.scrollLeft={set:function(bu){if(bu.elem.nodeType&&bu.elem.parentNode){bu.elem[bu.prop]=bu.now}}};C.each(["toggle","show","hide"],function(bv,bu){var bw=C.fn[bu];C.fn[bu]=function(bx,bz,by){return bx==null||typeof bx==="boolean"||(!bv&&C.isFunction(bx)&&C.isFunction(bz))?bw.apply(this,arguments):this.animate(aY(bu,true),bx,bz,by)}});C.fn.extend({fadeTo:function(bu,bx,bw,bv){return this.filter(ap).css("opacity",0).show().end().animate({opacity:bx},bu,bw,bv)},animate:function(bA,bx,bz,by){var bw=C.isEmptyObject(bA),bu=C.speed(bx,bz,by),bv=function(){var bB=bj(this,C.extend({},bA),bu);if(bw){bB.stop(true)}};return bw||bu.queue===false?this.each(bv):this.queue(bu.queue,bv)},stop:function(bw,bv,bu){var bx=function(by){var bz=by.stop;delete by.stop;bz(bu)};if(typeof bw!=="string"){bu=bv;bv=bw;bw=G}if(bv&&bw!==false){this.queue(bw||"fx",[])}return this.each(function(){var bB=true,by=bw!=null&&bw+"queueHooks",bA=C.timers,bz=C._data(this);if(by){if(bz[by]&&bz[by].stop){bx(bz[by])}}else{for(by in bz){if(bz[by]&&bz[by].stop&&a7.test(by)){bx(bz[by])}}}for(by=bA.length;by--;){if(bA[by].elem===this&&(bw==null||bA[by].queue===bw)){bA[by].anim.stop(bu);bB=false;bA.splice(by,1)}}if(bB||!bu){C.dequeue(this,bw)}})}});function aY(bw,by){var bx,bu={height:bw},bv=0;by=by?1:0;for(;bv<4;bv+=2-by){bx=D[bv];bu["margin"+bx]=bu["padding"+bx]=bw}if(by){bu.opacity=bu.width=bw}return bu}C.each({slideDown:aY("show"),slideUp:aY("hide"),slideToggle:aY("toggle"),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"},fadeToggle:{opacity:"toggle"}},function(bu,bv){C.fn[bu]=function(bw,by,bx){return this.animate(bv,bw,by,bx)}});C.speed=function(bw,bx,bv){var bu=bw&&typeof bw==="object"?C.extend({},bw):{complete:bv||!bv&&bx||C.isFunction(bw)&&bw,duration:bw,easing:bv&&bx||bx&&!C.isFunction(bx)&&bx};bu.duration=C.fx.off?0:typeof bu.duration==="number"?bu.duration:bu.duration in C.fx.speeds?C.fx.speeds[bu.duration]:C.fx.speeds._default;if(bu.queue==null||bu.queue===true){bu.queue="fx"}bu.old=bu.complete;bu.complete=function(){if(C.isFunction(bu.old)){bu.old.call(this)}if(bu.queue){C.dequeue(this,bu.queue)}};return bu};C.easing={linear:function(bu){return bu},swing:function(bu){return 0.5-Math.cos(bu*Math.PI)/2}};C.timers=[];C.fx=u.prototype.init;C.fx.tick=function(){var bw,bv=C.timers,bu=0;a6=C.now();for(;bu<bv.length;bu++){bw=bv[bu];if(!bw()&&bv[bu]===bw){bv.splice(bu--,1)}}if(!bv.length){C.fx.stop()}a6=G};C.fx.timer=function(bu){if(bu()&&C.timers.push(bu)&&!a1){a1=setInterval(C.fx.tick,C.fx.interval)}};C.fx.interval=13;C.fx.stop=function(){clearInterval(a1);a1=null};C.fx.speeds={slow:600,fast:200,_default:400};C.fx.step={};if(C.expr&&C.expr.filters){C.expr.filters.animated=function(bu){return C.grep(C.timers,function(bv){return bu===bv.elem}).length}}var V=/^(?:body|html)$/i;C.fn.offset=function(bE){if(arguments.length){return bE===G?this:this.each(function(bF){C.offset.setOffset(this,bE,bF)})}var bv,bA,bB,by,bC,bu,bx,bz={top:0,left:0},bw=this[0],bD=bw&&bw.ownerDocument;if(!bD){return}if((bA=bD.body)===bw){return C.offset.bodyOffset(bw)}bv=bD.documentElement;if(!C.contains(bv,bw)){return bz}if(typeof bw.getBoundingClientRect!=="undefined"){bz=bw.getBoundingClientRect()}bB=aC(bD);by=bv.clientTop||bA.clientTop||0;bC=bv.clientLeft||bA.clientLeft||0;bu=bB.pageYOffset||bv.scrollTop;bx=bB.pageXOffset||bv.scrollLeft;return{top:bz.top+bu-by,left:bz.left+bx-bC}};C.offset={bodyOffset:function(bu){var bw=bu.offsetTop,bv=bu.offsetLeft;if(C.support.doesNotIncludeMarginInBodyOffset){bw+=parseFloat(C.css(bu,"marginTop"))||0;bv+=parseFloat(C.css(bu,"marginLeft"))||0}return{top:bw,left:bv}},setOffset:function(bx,bG,bA){var bB=C.css(bx,"position");if(bB==="static"){bx.style.position="relative"}var bz=C(bx),bv=bz.offset(),bu=C.css(bx,"top"),bE=C.css(bx,"left"),bF=(bB==="absolute"||bB==="fixed")&&C.inArray("auto",[bu,bE])>-1,bD={},bC={},bw,by;if(bF){bC=bz.position();bw=bC.top;by=bC.left}else{bw=parseFloat(bu)||0;by=parseFloat(bE)||0}if(C.isFunction(bG)){bG=bG.call(bx,bA,bv)}if(bG.top!=null){bD.top=(bG.top-bv.top)+bw}if(bG.left!=null){bD.left=(bG.left-bv.left)+by}if("using" in bG){bG.using.call(bx,bD)}else{bz.css(bD)}}};C.fn.extend({isRendered:function(){var bv=this;var bu=this[0];if(bu.parentNode==null||(bu.offsetWidth===0||bu.offsetHeight===0)){return false}return true},getSizeFromStyle:function(){var by=this;var bx=null;var bu=null;var bw=this[0];var bv;if(bw.style.width){bx=bw.style.width}if(bw.style.height){bu=bw.style.height}if(bd.getComputedStyle){bv=getComputedStyle(bw,null)}else{bv=bw.currentStyle}if(bv){if(bv.width){bx=bv.width}if(bv.height){bu=bv.height}}if(bx==="0px"){bx=0}if(bu==="0px"){bu=0}if(bx===null){bx=0}if(bu===null){bu=0}return{width:bx,height:bu}},initAnimate:function(){},sizeStyleChanged:function(bx){var bw=this;var by;var bu=function(bz){var bA=by;if(bz&&bz[0]&&bz[0].attributeName==="style"&&bz[0].type==="attributes"){if(bA.element.offsetWidth!==bA.offsetWidth||bA.element.offsetHeight!==bA.offsetHeight){bA.offsetWidth=bA.element.offsetWidth;bA.offsetHeight=bA.element.offsetHeight;if(bw.isRendered()){bA.callback()}}}};by={element:bw[0],offsetWidth:bw[0].offsetWidth,offsetHeight:bw[0].offsetHeight,callback:bx};try{if(!bw.elementStyleObserver){bw.elementStyleObserver=new MutationObserver(bu);bw.elementStyleObserver.observe(bw[0],{attributes:true,childList:false,characterData:false})}}catch(bv){}},position:function(){if(!this[0]){return}var bw=this[0],bv=this.offsetParent(),bx=this.offset(),bu=V.test(bv[0].nodeName)?{top:0,left:0}:bv.offset();bx.top-=parseFloat(C.css(bw,"marginTop"))||0;bx.left-=parseFloat(C.css(bw,"marginLeft"))||0;bu.top+=parseFloat(C.css(bv[0],"borderTopWidth"))||0;bu.left+=parseFloat(C.css(bv[0],"borderLeftWidth"))||0;return{top:bx.top-bu.top,left:bx.left-bu.left}},offsetParent:function(){return this.map(function(){var bu=this.offsetParent||ak.body;while(bu&&(!V.test(bu.nodeName)&&C.css(bu,"position")==="static")){bu=bu.offsetParent}return bu||ak.body})}});C.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(bw,bv){var bu=/Y/.test(bv);C.fn[bw]=function(bx){return C.access(this,function(by,bB,bA){var bz=aC(by);if(bA===G){return bz?(bv in bz)?bz[bv]:bz.document.documentElement[bB]:by[bB]}if(bz){bz.scrollTo(!bu?bA:C(bz).scrollLeft(),bu?bA:C(bz).scrollTop())}else{by[bB]=bA}},bw,bx,arguments.length,null)}});function aC(bu){return C.isWindow(bu)?bu:bu.nodeType===9?bu.defaultView||bu.parentWindow:false}C.each({Height:"height",Width:"width"},function(bu,bv){C.each({padding:"inner"+bu,content:bv,"":"outer"+bu},function(bw,bx){C.fn[bx]=function(bB,bA){var bz=arguments.length&&(bw||typeof bB!=="boolean"),by=bw||(bB===true||bA===true?"margin":"border");return C.access(this,function(bD,bC,bE){var bF;if(C.isWindow(bD)){return bD.document.documentElement["client"+bu]}if(bD.nodeType===9){bF=bD.documentElement;return Math.max(bD.body["scroll"+bu],bF["scroll"+bu],bD.body["offset"+bu],bF["offset"+bu],bF["client"+bu])}return bE===G?C.css(bD,bC,bE,by):C.style(bD,bC,bE,by)},bv,bz?bB:G,bz,null)}})});bd.JQXLite=bd.jqxHelper=C;if(typeof define==="function"&&define.amd&&define.amd.JQXLite){define("jqx",[],function(){return C})}})(window)}(function(a){if(a.jQuery){a.minQuery=a.JQXLite=a.jQuery;return}if(!a.$){a.$=a.minQuery=a.JQXLite}else{a.minQuery=a.JQXLite=a.$}})(window);JQXLite.generateID=function(){var a=function(){return(((1+Math.random())*65536)|0).toString(16).substring(1)};var b="";do{b="jqx"+a()+a()+a()}while($("#"+b).length>0);return b};var jqxBaseFramework=window.jqxBaseFramework=window.minQuery||window.jQuery;(function(b){b.jqx=b.jqx||{};window.jqx=b.jqx;var a={createInstance:function(c,e,g){if(e=="jqxDataAdapter"){var f=g[0];var d=g[1]||{};return new b.jqx.dataAdapter(f,d)}b(c)[e](g||{});return b(c)[e]("getInstance")}};window.jqwidgets=a;b.jqx.define=function(c,d,e){c[d]=function(){if(this.baseType){this.base=new c[this.baseType]();this.base.defineInstance()}this.defineInstance();this.metaInfo()};c[d].prototype.defineInstance=function(){};c[d].prototype.metaInfo=function(){};c[d].prototype.base=null;c[d].prototype.baseType=undefined;if(e&&c[e]){c[d].prototype.baseType=e}};b.jqx.invoke=function(f,e){if(e.length==0){return}var g=typeof(e)==Array||e.length>0?e[0]:e;var d=typeof(e)==Array||e.length>1?Array.prototype.slice.call(e,1):b({}).toArray();while(f[g]==undefined&&f.base!=null){if(f[g]!=undefined&&b.isFunction(f[g])){return f[g].apply(f,d)}if(typeof g=="string"){var c=g.toLowerCase();if(f[c]!=undefined&&b.isFunction(f[c])){return f[c].apply(f,d)}}f=f.base}if(f[g]!=undefined&&b.isFunction(f[g])){return f[g].apply(f,d)}if(typeof g=="string"){var c=g.toLowerCase();if(f[c]!=undefined&&b.isFunction(f[c])){return f[c].apply(f,d)}}return};b.jqx.getByPriority=function(c){var e=undefined;for(var d=0;d<c.length&&e==undefined;d++){if(e==undefined&&c[d]!=undefined){e=c[d]}}return e};b.jqx.hasProperty=function(d,c){if(typeof(c)=="object"){for(var f in c){var e=d;while(e){if(e.hasOwnProperty(f)){return true}if(e.hasOwnProperty(f.toLowerCase())){return true}e=e.base}return false}}else{while(d){if(d.hasOwnProperty(c)){return true}if(d.hasOwnProperty(c.toLowerCase())){return true}d=d.base}}return false};b.jqx.hasFunction=function(f,e){if(e.length==0){return false}if(f==undefined){return false}var g=typeof(e)==Array||e.length>0?e[0]:e;var d=typeof(e)==Array||e.length>1?Array.prototype.slice.call(e,1):{};while(f[g]==undefined&&f.base!=null){if(f[g]&&b.isFunction(f[g])){return true}if(typeof g=="string"){var c=g.toLowerCase();if(f[c]&&b.isFunction(f[c])){return true}}f=f.base}if(f[g]&&b.isFunction(f[g])){return true}if(typeof g=="string"){var c=g.toLowerCase();if(f[c]&&b.isFunction(f[c])){return true}}return false};b.jqx.isPropertySetter=function(d,c){if(c.length==1&&typeof(c[0])=="object"){return true}if(c.length==2&&typeof(c[0])=="string"&&!b.jqx.hasFunction(d,c)){return true}return false};b.jqx.validatePropertySetter=function(g,e,c){if(!b.jqx.propertySetterValidation){return true}if(e.length==1&&typeof(e[0])=="object"){for(var f in e[0]){var h=g;while(!h.hasOwnProperty(f)&&h.base){h=h.base}if(!h||!h.hasOwnProperty(f)){if(!c){var d=h.hasOwnProperty(f.toString().toLowerCase());if(!d){throw"Invalid property: "+f}else{return true}}return false}}return true}if(e.length!=2){if(!c){throw"Invalid property: "+e.length>=0?e[0]:""}return false}while(!g.hasOwnProperty(e[0])&&g.base){g=g.base}if(!g||!g.hasOwnProperty(e[0])){if(!c){throw"Invalid property: "+e[0]}return false}return true};if(!Object.keys){Object.keys=(function(){var e=Object.prototype.hasOwnProperty,f=!({toString:null}).propertyIsEnumerable("toString"),d=["toString","toLocaleString","valueOf","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","constructor"],c=d.length;return function(j){if(typeof j!=="object"&&(typeof j!=="function"||j===null)){throw new TypeError("Object.keys called on non-object")}var g=[],k,h;for(k in j){if(e.call(j,k)){g.push(k)}}if(f){for(h=0;h<c;h++){if(e.call(j,d[h])){g.push(d[h])}}}return g}}())}b.jqx.set=function(f,i){var d=0;if(i.length==1&&typeof(i[0])=="object"){if(f.isInitialized&&Object.keys&&Object.keys(i[0]).length>1){var g=!f.base?f.element:f.base.element;var c=b.data(g,f.widgetName).initArgs;if(c&&JSON&&JSON.stringify&&i[0]&&c[0]){try{if(JSON.stringify(i[0])==JSON.stringify(c[0])){var h=true;b.each(i[0],function(l,m){if(f[l]!=m){h=false;return false}});if(h){return}}}catch(e){}}f.batchUpdate=i[0];var j={};var k={};b.each(i[0],function(l,m){var n=f;while(!n.hasOwnProperty(l)&&n.base!=null){n=n.base}if(n.hasOwnProperty(l)){if(f[l]!=m){j[l]=f[l];k[l]=m;d++}}else{if(n.hasOwnProperty(l.toLowerCase())){if(f[l.toLowerCase()]!=m){j[l.toLowerCase()]=f[l.toLowerCase()];k[l.toLowerCase()]=m;d++}}}});if(d<2){f.batchUpdate=null}}b.each(i[0],function(l,m){var n=f;while(!n.hasOwnProperty(l)&&n.base!=null){n=n.base}if(n.hasOwnProperty(l)){b.jqx.setvalueraiseevent(n,l,m)}else{if(n.hasOwnProperty(l.toLowerCase())){b.jqx.setvalueraiseevent(n,l.toLowerCase(),m)}else{if(b.jqx.propertySetterValidation){throw"jqxCore: invalid property '"+l+"'"}}}});if(f.batchUpdate!=null){f.batchUpdate=null;if(f.propertiesChangedHandler&&d>1){f.propertiesChangedHandler(f,j,k)}}}else{if(i.length==2){while(!f.hasOwnProperty(i[0])&&f.base){f=f.base}if(f.hasOwnProperty(i[0])){b.jqx.setvalueraiseevent(f,i[0],i[1])}else{if(f.hasOwnProperty(i[0].toLowerCase())){b.jqx.setvalueraiseevent(f,i[0].toLowerCase(),i[1])}else{if(b.jqx.propertySetterValidation){throw"jqxCore: invalid property '"+i[0]+"'"}}}}}};b.jqx.setvalueraiseevent=function(d,e,f){var c=d[e];d[e]=f;if(!d.isInitialized){return}if(d.propertyChangedHandler!=undefined){d.propertyChangedHandler(d,e,c,f)}if(d.propertyChangeMap!=undefined&&d.propertyChangeMap[e]!=undefined){d.propertyChangeMap[e](d,e,c,f)}};b.jqx.get=function(f,e){if(e==undefined||e==null){return undefined}if(f.propertyMap){var d=f.propertyMap(e);if(d!=null){return d}}if(f.hasOwnProperty(e)){return f[e]}if(f.hasOwnProperty(e.toLowerCase())){return f[e.toLowerCase()]}var c=undefined;if(typeof(e)==Array){if(e.length!=1){return undefined}c=e[0]}else{if(typeof(e)=="string"){c=e}}while(!f.hasOwnProperty(c)&&f.base){f=f.base}if(f){return f[c]}return undefined};b.jqx.serialize=function(f){var c="";if(b.isArray(f)){c="[";for(var e=0;e<f.length;e++){if(e>0){c+=", "}c+=b.jqx.serialize(f[e])}c+="]"}else{if(typeof(f)=="object"){c="{";var d=0;for(var e in f){if(d++>0){c+=", "}c+=e+": "+b.jqx.serialize(f[e])}c+="}"}else{c=f.toString()}}return c};b.jqx.propertySetterValidation=true;b.jqx.jqxWidgetProxy=function(h,d,c){var e=b(d);var g=b.data(d,h);if(g==undefined){return undefined}var f=g.instance;if(b.jqx.hasFunction(f,c)){return b.jqx.invoke(f,c)}if(b.jqx.isPropertySetter(f,c)){if(b.jqx.validatePropertySetter(f,c)){b.jqx.set(f,c);return undefined}}else{if(typeof(c)=="object"&&c.length==0){return}else{if(typeof(c)=="object"&&c.length==1&&b.jqx.hasProperty(f,c[0])){return b.jqx.get(f,c[0])}else{if(typeof(c)=="string"&&b.jqx.hasProperty(f,c[0])){return b.jqx.get(f,c)}}}}throw"jqxCore: Invalid parameter '"+b.jqx.serialize(c)+"' does not exist."};b.jqx.applyWidget=function(d,f,l,m){var h=false;try{h=window.MSApp!=undefined}catch(g){}var n=b(d);if(!m){m=new b.jqx["_"+f]()}else{m.host=n;m.element=d}if(d.id==""){d.id=b.jqx.utilities.createId()}var k={host:n,element:d,instance:m,initArgs:l};m.widgetName=f;b.data(d,f,k);b.data(d,"jqxWidget",k.instance);var j=new Array();var m=k.instance;while(m){m.isInitialized=false;j.push(m);m=m.base}j.reverse();j[0].theme=b.jqx.theme||"";b.jqx.jqxWidgetProxy(f,d,l);for(var c in j){m=j[c];if(c==0){m.host=n;m.element=d;m.WinJS=h}if(m!=undefined){if(m.definedInstance){m.definedInstance()}if(m.createInstance!=null){if(h){MSApp.execUnsafeLocalFunction(function(){m.createInstance(l)})}else{m.createInstance(l)}}}}for(var c in j){if(j[c]!=undefined){j[c].isInitialized=true}}if(h){MSApp.execUnsafeLocalFunction(function(){k.instance.refresh(true)})}else{k.instance.refresh(true)}};b.jqx.jqxWidget=function(c,d,g){var j=false;try{var l=Array.prototype.slice.call(g,0)}catch(i){var l=""}try{j=window.MSApp!=undefined}catch(i){}var h=c;var m="";if(d){m="_"+d}b.jqx.define(b.jqx,"_"+h,m);var k=new Array();if(!window[h]){var f=function(n){if(n==null){return""}var e=b.type(n);switch(e){case"string":case"number":case"date":case"boolean":case"bool":if(n===null){return""}return n.toString()}var o="";b.each(n,function(q,r){var t=r;if(q>0){o+=", "}o+="[";var p=0;if(b.type(t)=="object"){for(var s in t){if(p>0){o+=", "}o+="{"+s+":"+t[s]+"}";p++}}else{if(p>0){o+=", "}o+="{"+q+":"+t+"}";p++}o+="]"});return o};a[h]=window[h]=function(e,s){var n=[];if(!s){s={}}n.push(s);var o=e;if(b.type(o)==="object"&&e[0]){o=e[0].id;if(o===""){o=e[0].id=b.jqx.utilities.createId()}}else{if(b.type(e)==="object"&&e&&e.nodeName){o=e.id;if(o===""){o=e.id=b.jqx.utilities.createId()}}}if(window.jqxWidgets&&window.jqxWidgets[o]){if(s){b.each(window.jqxWidgets[o],function(t){var u=b(this.element).data();if(u&&u.jqxWidget){b(this.element)[h](s)}})}if(window.jqxWidgets[o].length==1){var q=b(window.jqxWidgets[o][0].widgetInstance.element).data();if(q&&q.jqxWidget){return window.jqxWidgets[o][0]}}var q=b(window.jqxWidgets[o][0].widgetInstance.element).data();if(q&&q.jqxWidget){return window.jqxWidgets[o]}}var p=b(e);if(p.length===0){p=b("<div></div>");if(h==="jqxInput"||h==="jqxPasswordInput"||h==="jqxMaskedInput"){p=b("<input/>")}if(h==="jqxTextArea"){p=b("<textarea></textarea>")}if(h==="jqxButton"||h==="jqxRepeatButton"||h==="jqxToggleButton"){p=b("<button/>")}if(h==="jqxSplitter"){p=b("<div><div>Panel 1</div><div>Panel 2</div></div>")}if(h==="jqxTabs"){p=b("<div><ul><li>Tab 1</li><li>Tab 2</li></ul><div>Content 1</div><div>Content 2</div></div>")}if(h==="jqxRibbon"){p=b("<div><ul><li>Tab 1</li><li>Tab 2</li></ul><div><div>Content 1</div><div>Content 2</div></div></div>")}if(h==="jqxDocking"){p=b("<div><div><div><div>Title 1</div><div>Content 1</div></div></div></div>")}if(h==="jqxWindow"){p=b("<div><div>Title 1</div><div>Content 1</div></div>")}}var r=[];b.each(p,function(w){var y=p[w];b.jqx.applyWidget(y,h,n,undefined);if(!k[h]){var u=b.data(y,"jqxWidget");var x=b.jqx["_"+h].prototype.defineInstance();var v={};if(b.jqx["_"+h].prototype.metaInfo){v=b.jqx["_"+h].prototype.metaInfo()}if(h=="jqxDockingLayout"){x=b.extend(x,b.jqx._jqxLayout.prototype.defineInstance())}if(h=="jqxToggleButton"||h=="jqxRepeatButton"){x=b.extend(x,b.jqx._jqxButton.prototype.defineInstance())}if(h=="jqxTreeGrid"){x=b.extend(x,b.jqx._jqxDataTable.prototype.defineInstance())}var t=function(A){var z=b.data(A,"jqxWidget");this.widgetInstance=z;var B=b.extend(this,z);B.on=B.addEventListener=function(D,E){B.addHandler(!B.base?B.host:B.base.host,D,E)};B.off=B.removeEventListener=function(D){B.removeHandler(!B.base?B.host:B.base.host,D)};for(var C in z){if(b.type(z[C])=="function"){B[C]=b.proxy(z[C],z)}}return B};k[h]=t;b.each(x,function(A,z){Object.defineProperty(t.prototype,A,{get:function(){if(this.widgetInstance){return this.widgetInstance[A]}return z},set:function(H){if(this.widgetInstance&&(this.widgetInstance[A]!=H||A==="width"||A==="height")){var F=this.widgetInstance[A];var E=H;var D=b.type(F);var B=b.type(E);var G=false;if(D!=B||A==="source"||A==="width"||A==="height"){G=true}if(G||(f(F)!=f(E))){var C={};C[A]=H;if(this.widgetInstance.host){this.widgetInstance.host[h](C)}else{this.widgetInstance.base.host[h](C)}this.widgetInstance[A]=H;if(this.widgetInstance.propertyUpdated){this.widgetInstance.propertyUpdated(A,F,H)}}}}})})}var u=new k[h](y);r.push(u);if(!window.jqxWidgets){window.jqxWidgets=new Array()}if(!window.jqxWidgets[o]){window.jqxWidgets[o]=new Array()}window.jqxWidgets[o].push(u)});if(r.length===1){return r[0]}return r}}b.fn[h]=function(){var e=Array.prototype.slice.call(arguments,0);if(e.length==0||(e.length==1&&typeof(e[0])=="object")){if(this.length==0){if(this.selector){throw new Error("Invalid Selector - "+this.selector+"! Please, check whether the used ID or CSS Class name is correct.")}else{throw new Error("Invalid Selector! Please, check whether the used ID or CSS Class name is correct.")}}return this.each(function(){var q=b(this);var p=this;var r=b.data(p,h);if(r==null){b.jqx.applyWidget(p,h,e,undefined)}else{b.jqx.jqxWidgetProxy(h,this,e)}})}else{if(this.length==0){if(this.selector){throw new Error("Invalid Selector - "+this.selector+"! Please, check whether the used ID or CSS Class name is correct.")}else{throw new Error("Invalid Selector! Please, check whether the used ID or CSS Class name is correct.")}}var o=null;var n=0;this.each(function(){var p=b.jqx.jqxWidgetProxy(h,this,e);if(n==0){o=p;n++}else{if(n==1){var q=[];q.push(o);o=q}o.push(p)}})}return o};try{b.extend(b.jqx["_"+h].prototype,Array.prototype.slice.call(g,0)[0])}catch(i){}b.extend(b.jqx["_"+h].prototype,{toThemeProperty:function(e,n){return b.jqx.toThemeProperty(this,e,n)},isMaterialized:function(){if(!this.theme){return false}if(this.theme.indexOf("material")>=0){return true}},isModern:function(){if(!this.theme){return false}if(this.theme.indexOf("light")>=0){return true}if(this.theme==="dark"){return true}},_addBarAndLabel:function(p){var o=this;var e=b("<label></label");e[0].innerHTML=this.placeHolder;e.addClass(o.toThemeProperty("jqx-input-label"));p.after(e);o.label=e;var n=b("<span></span>");p.after(n);n.addClass(o.toThemeProperty("jqx-input-bar"));o.bar=n;o.bar.css("top",this.host.height())}});b.jqx["_"+h].prototype.refresh=function(){if(this.base){this.base.refresh(true)}};b.jqx["_"+h].prototype.createInstance=function(){};b.jqx["_"+h].prototype.addEventHandler=function(n,e){if(this.base){this.base.host.on(n,e)}else{this.host.on(n,e)}};b.jqx["_"+h].prototype.removeEventHandler=function(n,e){if(this.base){this.base.host.off(n)}else{this.host.off(n)}};b.jqx["_"+h].prototype.applyTo=function(o,n){if(!(n instanceof Array)){var e=[];e.push(n);n=e}b.jqx.applyWidget(o,h,n,this)};b.jqx["_"+h].prototype.getInstance=function(){return this};b.jqx["_"+h].prototype.propertyChangeMap={};b.jqx["_"+h].prototype.addHandler=function(p,e,n,o){b.jqx.addHandler(b(p),e,n,o)};b.jqx["_"+h].prototype.removeHandler=function(o,e,n){b.jqx.removeHandler(b(o),e,n)};b.jqx["_"+h].prototype.setOptions=function(){if(!this.host||!this.host.length||this.host.length!=1){return}return b.jqx.jqxWidgetProxy(h,this.host[0],arguments)}};b.jqx.toThemeProperty=function(d,e,j){if(d.theme==""){return e}var h=e.split(" ");var c="";for(var g=0;g<h.length;g++){if(g>0){c+=" "}var f=h[g];if(j!=null&&j){c+=f+"-"+d.theme}else{c+=f+" "+f+"-"+d.theme}}return c};b.jqx.addHandler=function(h,j,f,g){var d=j.split(" ");for(var c=0;c<d.length;c++){var e=d[c];if(window.addEventListener){switch(e){case"mousewheel":if(b.jqx.browser.mozilla){h[0].addEventListener("DOMMouseScroll",f,false)}else{h[0].addEventListener("mousewheel",f,false)}continue;case"mousemove":if(!g){h[0].addEventListener("mousemove",f,false);continue}break}}if(g==undefined||g==null){if(h.on){h.on(e,f)}else{h.bind(e,f)}}else{if(h.on){h.on(e,g,f)}else{h.bind(e,g,f)}}}};b.jqx.removeHandler=function(g,h,f){if(!h){if(g.off){g.off()}else{g.unbind()}return}var d=h.split(" ");for(var c=0;c<d.length;c++){var e=d[c];if(window.removeEventListener){switch(e){case"mousewheel":if(b.jqx.browser.mozilla){g[0].removeEventListener("DOMMouseScroll",f,false)}else{g[0].removeEventListener("mousewheel",f,false)}continue;case"mousemove":if(f){g[0].removeEventListener("mousemove",f,false);continue}break}}if(e==undefined){if(g.off){g.off()}else{g.unbind()}continue}if(f==undefined){if(g.off){g.off(e)}else{g.unbind(e)}}else{if(g.off){g.off(e,f)}else{g.unbind(e,f)}}}};b.jqx.credits=b.jqx.credits||"";b.jqx.theme=b.jqx.theme||"";b.jqx.scrollAnimation=b.jqx.scrollAnimation||false;b.jqx.resizeDelay=b.jqx.resizeDelay||10;b.jqx.ready=function(){b(window).trigger("jqxReady")};b.jqx.init=function(){b.each(arguments[0],function(c,d){if(c=="theme"){b.jqx.theme=d}if(c=="scrollBarSize"){b.jqx.utilities.scrollBarSize=d}if(c=="touchScrollBarSize"){b.jqx.utilities.touchScrollBarSize=d}if(c=="scrollBarButtonsVisibility"){b.jqx.utilities.scrollBarButtonsVisibility=d}})};b.jqx.utilities=b.jqx.utilities||{};b.extend(b.jqx.utilities,{scrollBarSize:13,touchScrollBarSize:8,scrollBarButtonsVisibility:"visible",createId:function(){var c=function(){return(((1+Math.random())*65536)|0).toString(16).substring(1)};return"jqxWidget"+c()+c()+c()},setTheme:function(g,h,f){if(typeof f==="undefined"){return}if(!f[0].className.split){return}if(g===undefined){g=""}if(h===undefined){h=""}var j=f[0].className.split(" "),c=[],k=[],e=f.children();for(var d=0;d<j.length;d+=1){if(j[d].indexOf(g)>=0){if(g.length>0){c.push(j[d]);k.push(j[d].replace(g,h))}else{k.push(j[d].replace("-"+h,"")+"-"+h)}}}this._removeOldClasses(c,f);this._addNewClasses(k,f);for(var d=0;d<e.length;d+=1){this.setTheme(g,h,b(e[d]))}},_removeOldClasses:function(e,d){for(var c=0;c<e.length;c+=1){d.removeClass(e[c])}},_addNewClasses:function(e,d){for(var c=0;c<e.length;c+=1){d.addClass(e[c])}},getOffset:function(c){var e=b.jqx.mobile.getLeftPos(c[0]);var d=b.jqx.mobile.getTopPos(c[0]);return{top:d,left:e}},resize:function(h,t,q,p){if(p===undefined){p=true}var m=-1;var l=this;var e=function(v){if(!l.hiddenWidgets){return -1}var w=-1;for(var u=0;u<l.hiddenWidgets.length;u++){if(v.id){if(l.hiddenWidgets[u].id==v.id){w=u;break}}else{if(l.hiddenWidgets[u].id==v[0].id){w=u;break}}}return w};if(this.resizeHandlers){for(var j=0;j<this.resizeHandlers.length;j++){if(h.id){if(this.resizeHandlers[j].id==h.id){m=j;break}}else{if(this.resizeHandlers[j].id==h[0].id){m=j;break}}}if(q===true){if(m!=-1){this.resizeHandlers.splice(m,1);if(this.watchedElementData&&this.watchedElementData.length>0){this.watchedElementData.splice(m,1)}}if(this.resizeHandlers.length==0){var o=b(window);if(o.off){o.off("resize.jqx");o.off("orientationchange.jqx");o.off("orientationchanged.jqx")}else{o.unbind("resize.jqx");o.unbind("orientationchange.jqx");o.unbind("orientationchanged.jqx")}this.resizeHandlers=null}var c=e(h);if(c!=-1&&this.hiddenWidgets){this.hiddenWidgets.splice(c,1)}return}}else{if(q===true){var c=e(h);if(c!=-1&&this.hiddenWidgets){this.hiddenWidgets.splice(c,1)}return}}var l=this;var n=function(w,F){if(!l.resizeHandlers){return}var G=function(J){var i=-1;var K=J.parentNode;while(K){i++;K=K.parentNode}return i};var v=function(L,J){if(!L.widget||!J.widget){return 0}var K=G(L.widget[0]);var i=G(J.widget[0]);try{if(K<i){return -1}if(K>i){return 1}}catch(M){var N=M}return 0};var x=function(J){if(l.hiddenWidgets.length>0){l.hiddenWidgets.sort(v);var i=function(){var L=false;var N=new Array();for(var M=0;M<l.hiddenWidgets.length;M++){var K=l.hiddenWidgets[M];if(b.jqx.isHidden(K.widget)){L=true;N.push(K)}else{if(K.callback){K.callback(F)}}}l.hiddenWidgets=N;if(!L){clearInterval(l.__resizeInterval)}};if(J==false){i();if(l.__resizeInterval){clearInterval(l.__resizeInterval)}return}if(l.__resizeInterval){clearInterval(l.__resizeInterval)}l.__resizeInterval=setInterval(function(){i()},100)}};if(l.hiddenWidgets&&l.hiddenWidgets.length>0){x(false)}l.hiddenWidgets=new Array();l.resizeHandlers.sort(v);for(var C=0;C<l.resizeHandlers.length;C++){var I=l.resizeHandlers[C];var E=I.widget;var B=I.data;if(!B){continue}if(!B.jqxWidget){continue}var u=B.jqxWidget.width;var H=B.jqxWidget.height;if(B.jqxWidget.base){if(u==undefined){u=B.jqxWidget.base.width}if(H==undefined){H=B.jqxWidget.base.height}}if(u===undefined&&H===undefined){u=B.jqxWidget.element.style.width;H=B.jqxWidget.element.style.height}var D=false;if(u!=null&&u.toString().indexOf("%")!=-1){D=true}if(H!=null&&H.toString().indexOf("%")!=-1){D=true}if(b.jqx.isHidden(E)){if(e(E)===-1){if(D||w===true){if(I.data.nestedWidget!==true){l.hiddenWidgets.push(I)}}}}else{if(w===undefined||w!==true){if(D){I.callback(F);if(l.watchedElementData){for(var z=0;z<l.watchedElementData.length;z++){if(l.watchedElementData[z].element==B.jqxWidget.element){l.watchedElementData[z].offsetWidth=B.jqxWidget.element.offsetWidth;l.watchedElementData[z].offsetHeight=B.jqxWidget.element.offsetHeight;break}}}if(l.hiddenWidgets.indexOf(I)>=0){l.hiddenWidgets.splice(l.hiddenWidgets.indexOf(I),1)}}if(B.jqxWidget.element){var y=B.jqxWidget.element.className;if(y.indexOf("dropdownlist")>=0||y.indexOf("datetimeinput")>=0||y.indexOf("combobox")>=0||y.indexOf("menu")>=0){if(B.jqxWidget.isOpened){var A=B.jqxWidget.isOpened();if(A){if(F&&F=="resize"&&b.jqx.mobile.isTouchDevice()){continue}B.jqxWidget.close()}}}}}}}x()};if(!this.resizeHandlers){this.resizeHandlers=new Array();var o=b(window);if(o.on){this._resizeTimer=null;this._initResize=null;o.on("resize.jqx",function(i){if(l._resizeTimer!=undefined){clearTimeout(l._resizeTimer)}if(!l._initResize){l._initResize=true;n(null,"resize")}else{l._resizeTimer=setTimeout(function(){n(null,"resize")},b.jqx.resizeDelay)}});o.on("orientationchange.jqx",function(i){n(null,"orientationchange")});o.on("orientationchanged.jqx",function(i){n(null,"orientationchange")})}else{o.bind("resize.jqx",function(i){n(null,"orientationchange")});o.bind("orientationchange.jqx",function(i){n(null,"orientationchange")});o.bind("orientationchanged.jqx",function(i){n(null,"orientationchange")})}}var f=h.data();if(p){if(m===-1){this.resizeHandlers.push({id:h[0].id,widget:h,callback:t,data:f})}}try{var d=f.jqxWidget.width;var s=f.jqxWidget.height;if(f.jqxWidget.base){if(d==undefined){d=f.jqxWidget.base.width}if(s==undefined){s=f.jqxWidget.base.height}}if(d===undefined&&s===undefined){d=f.jqxWidget.element.style.width;s=f.jqxWidget.element.style.height}var k=false;if(d!=null&&d.toString().indexOf("%")!=-1){k=true}if(s!=null&&s.toString().indexOf("%")!=-1){k=true}if(k){if(!this.watchedElementData){this.watchedElementData=[]}var l=this;var g=function(i){if(l.watchedElementData.forEach){l.watchedElementData.forEach(function(u){if(u.element.offsetWidth!==u.offsetWidth||u.element.offsetHeight!==u.offsetHeight){u.offsetWidth=u.element.offsetWidth;u.offsetHeight=u.element.offsetHeight;if(u.timer){clearTimeout(u.timer)}u.timer=setTimeout(function(){if(!b.jqx.isHidden(b(u.element))){u.callback()}else{u.timer=setInterval(function(){if(!b.jqx.isHidden(b(u.element))){clearInterval(u.timer);u.callback()}},100)}})}})}};l.watchedElementData.push({element:h[0],offsetWidth:h[0].offsetWidth,offsetHeight:h[0].offsetHeight,callback:t});if(!l.observer){l.observer=new MutationObserver(g);l.observer.observe(document.body,{attributes:true,childList:true,characterData:true})}}}catch(r){}if(b.jqx.isHidden(h)&&p===true){n(true)}b.jqx.resize=function(){n(null,"resize")}},parseJSON:function(e){if(!e||typeof e!=="string"){return null}var c=/^[\],:{}\s]*$/,g=/(?:^|:|,)(?:\s*\[)+/g,d=/\\(?:["\\\/bfnrt]|u[\da-fA-F]{4})/g,f=/"[^"\\\r\n]*"|true|false|null|-?(?:\d\d*\.|)\d+(?:[eE][\-+]?\d+|)/g;e=b.trim(e);if(window.JSON&&window.JSON.parse){return window.JSON.parse(e)}if(c.test(e.replace(d,"@").replace(f,"]").replace(g,""))){return(new Function("return "+e))()}throw new Error("Invalid JSON: "+e)},html:function(d,e){if(!b(d).on){return b(d).html(e)}try{return b.access(d,function(s){var f=d[0]||{},m=0,j=d.length;if(s===undefined){return f.nodeType===1?f.innerHTML.replace(rinlinejQuery,""):undefined}var r=/<(?:script|style|link)/i,n="abbr|article|aside|audio|bdi|canvas|data|datalist|details|figcaption|figure|footer|header|hgroup|mark|meter|nav|output|progress|section|summary|time|video",h=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/gi,p=/<([\w:]+)/,g=/<(?:script|object|embed|option|style)/i,k=new RegExp("<(?:"+n+")[\\s/>]","i"),q=/^\s+/,t={option:[1,"<select multiple='multiple'>","</select>"],legend:[1,"<fieldset>","</fieldset>"],thead:[1,"<table>","</table>"],tr:[2,"<table><tbody>","</tbody></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],col:[2,"<table><tbody></tbody><colgroup>","</colgroup></table>"],area:[1,"<map>","</map>"],_default:[0,"",""]};if(typeof s==="string"&&!r.test(s)&&(b.support.htmlSerialize||!k.test(s))&&(b.support.leadingWhitespace||!q.test(s))&&!t[(p.exec(s)||["",""])[1].toLowerCase()]){s=s.replace(h,"<$1></$2>");try{for(;m<j;m++){f=this[m]||{};if(f.nodeType===1){b.cleanData(f.getElementsByTagName("*"));f.innerHTML=s}}f=0}catch(o){}}if(f){d.empty().append(s)}},null,e,arguments.length)}catch(c){return b(d).html(e)}},hasTransform:function(e){var d="";d=e.css("transform");if(d==""||d=="none"){d=e.parents().css("transform");if(d==""||d=="none"){var c=b.jqx.utilities.getBrowser();if(c.browser=="msie"){d=e.css("-ms-transform");if(d==""||d=="none"){d=e.parents().css("-ms-transform")}}else{if(c.browser=="chrome"){d=e.css("-webkit-transform");if(d==""||d=="none"){d=e.parents().css("-webkit-transform")}}else{if(c.browser=="opera"){d=e.css("-o-transform");if(d==""||d=="none"){d=e.parents().css("-o-transform")}}else{if(c.browser=="mozilla"){d=e.css("-moz-transform");if(d==""||d=="none"){d=e.parents().css("-moz-transform")}}}}}}else{return d!=""&&d!="none"}}if(d==""||d=="none"){d=b(document.body).css("transform")}return d!=""&&d!="none"&&d!=null},getBrowser:function(){var d=navigator.userAgent.toLowerCase();var c=/(chrome)[ \/]([\w.]+)/.exec(d)||/(webkit)[ \/]([\w.]+)/.exec(d)||/(opera)(?:.*version|)[ \/]([\w.]+)/.exec(d)||/(msie) ([\w.]+)/.exec(d)||d.indexOf("compatible")<0&&/(mozilla)(?:.*? rv:([\w.]+)|)/.exec(d)||[];var e={browser:c[1]||"",version:c[2]||"0"};if(d.indexOf("rv:11.0")>=0&&d.indexOf(".net4.0c")>=0){e.browser="msie";e.version="11";c[1]="msie"}if(d.indexOf("edge")>=0){e.browser="msie";e.version="12";c[1]="msie"}e[c[1]]=c[1];return e}});b.jqx.browser=b.jqx.utilities.getBrowser();b.jqx.isHidden=function(d){if(!d||!d[0]){return false}var c=d[0].offsetWidth,e=d[0].offsetHeight;if(c===0||e===0){return true}else{return false}};b.jqx.ariaEnabled=true;b.jqx.aria=function(d,f,e){if(!b.jqx.ariaEnabled){return}if(f==undefined){b.each(d.aria,function(h,i){var k=!d.base?d.host.attr(h):d.base.host.attr(h);if(k!=undefined&&!b.isFunction(k)){var j=k;switch(i.type){case"number":j=new Number(k);if(isNaN(j)){j=k}break;case"boolean":j=k=="true"?true:false;break;case"date":j=new Date(k);if(j=="Invalid Date"||isNaN(j)){j=k}break}d[i.name]=j}else{var k=d[i.name];if(b.isFunction(k)){k=d[i.name]()}if(k==undefined){k=""}try{!d.base?d.host.attr(h,k.toString()):d.base.host.attr(h,k.toString())}catch(g){}}})}else{try{if(d.host){if(!d.base){if(d.host){if(d.element.setAttribute){d.element.setAttribute(f,e.toString())}else{d.host.attr(f,e.toString())}}else{d.attr(f,e.toString())}}else{if(d.base.host){d.base.host.attr(f,e.toString())}else{d.attr(f,e.toString())}}}else{if(d.setAttribute){d.setAttribute(f,e.toString())}}}catch(c){}}};if(!Array.prototype.indexOf){Array.prototype.indexOf=function(d){var c=this.length;var e=Number(arguments[1])||0;e=(e<0)?Math.ceil(e):Math.floor(e);if(e<0){e+=c}for(;e<c;e++){if(e in this&&this[e]===d){return e}}return -1}}b.jqx.mobile=b.jqx.mobile||{};b.jqx.position=function(c){var f=parseInt(c.pageX);var e=parseInt(c.pageY);if(b.jqx.mobile.isTouchDevice()){var d=b.jqx.mobile.getTouches(c);var g=d[0];f=parseInt(g.pageX);e=parseInt(g.pageY)}return{left:f,top:e}};b.extend(b.jqx.mobile,{_touchListener:function(i,g){var c=function(j,l){var k=document.createEvent("MouseEvents");k.initMouseEvent(j,l.bubbles,l.cancelable,l.view,l.detail,l.screenX,l.screenY,l.clientX,l.clientY,l.ctrlKey,l.altKey,l.shiftKey,l.metaKey,l.button,l.relatedTarget);k._pageX=l.pageX;k._pageY=l.pageY;return k};var h={mousedown:"touchstart",mouseup:"touchend",mousemove:"touchmove"};var f=c(h[i.type],i);i.target.dispatchEvent(f);var d=i.target["on"+h[i.type]];if(typeof d==="function"){d(i)}},setMobileSimulator:function(d,f){if(this.isTouchDevice()){return}this.simulatetouches=true;if(f==false){this.simulatetouches=false}var e={mousedown:"touchstart",mouseup:"touchend",mousemove:"touchmove"};var c=this;if(window.addEventListener){var g=function(){for(var h in e){if(d.addEventListener){d.removeEventListener(h,c._touchListener);d.addEventListener(h,c._touchListener,false)}}};if(b.jqx.browser.msie){g()}else{g()}}},isTouchDevice:function(){if(this.touchDevice!=undefined){return this.touchDevice}var d="Browser CodeName: "+navigator.appCodeName+"";d+="Browser Name: "+navigator.appName+"";d+="Browser Version: "+navigator.appVersion+"";d+="Platform: "+navigator.platform+"";d+="User-agent header: "+navigator.userAgent+"";if(d.indexOf("Android")!=-1){return true}if(d.indexOf("IEMobile")!=-1){return true}if(d.indexOf("Windows Phone")!=-1){return true}if(d.indexOf("WPDesktop")!=-1){return true}if(d.indexOf("ZuneWP7")!=-1){return true}if(d.indexOf("BlackBerry")!=-1&&d.indexOf("Mobile Safari")!=-1){return true}if(d.indexOf("ipod")!=-1){return true}if(d.indexOf("nokia")!=-1||d.indexOf("Nokia")!=-1){return true}if(d.indexOf("Chrome/17")!=-1){return false}if(d.indexOf("CrOS")!=-1){return false}if(d.indexOf("Opera")!=-1&&d.indexOf("Mobi")==-1&&d.indexOf("Mini")==-1&&d.indexOf("Platform: Win")!=-1){return false}if(d.indexOf("HybridDeviceTouch")!=-1){return true}if(d.indexOf("HybridDeviceMouse")!=-1){return false}if(d.indexOf("Opera")!=-1&&d.indexOf("Mobi")!=-1&&d.indexOf("Opera Mobi")!=-1){return true}if(d.indexOf("Mozilla/5.0 (X11; Linux x86_64)")!=-1){return false}var f={ios:"i(?:Pad|Phone|Pod)(?:.*)CPU(?: iPhone)? OS ",android:"(Android |HTC_|Silk/)",blackberry:"BlackBerry(?:.*)Version/",rimTablet:"RIM Tablet OS ",webos:"(?:webOS|hpwOS)/",bada:"Bada/"};try{if(this.touchDevice!=undefined){return this.touchDevice}this.touchDevice=false;for(var h in f){if(f.hasOwnProperty(h)){var k=f[h];var g=d.match(new RegExp("(?:"+k+")([^\\s;]+)"));if(g){if(h.toString()=="blackberry"){this.touchDevice=false;return false}this.touchDevice=true;return true}}}var j=navigator.userAgent;if(navigator.platform.toLowerCase().indexOf("win")!=-1){if(j.indexOf("Windows Phone")>=0||j.indexOf("WPDesktop")>=0||j.indexOf("IEMobile")>=0||j.indexOf("ZuneWP7")>=0){this.touchDevice=true;return true}else{if(j.indexOf("Touch")>=0){var c=("MSPointerDown" in window)||("pointerdown" in window);if(c){this.touchDevice=true;return true}if(j.indexOf("ARM")>=0){this.touchDevice=true;return true}this.touchDevice=false;return false}}}if(navigator.platform.toLowerCase().indexOf("win")!=-1){this.touchDevice=false;return false}if(("ontouchstart" in window)||window.DocumentTouch&&document instanceof DocumentTouch){this.touchDevice=true}return this.touchDevice}catch(l){this.touchDevice=false;return false}},getLeftPos:function(c){var d=c.offsetLeft;while((c=c.offsetParent)!=null){if(c.tagName!="HTML"){d+=c.offsetLeft;if(document.all){d+=c.clientLeft}}}return d},getTopPos:function(d){var f=d.offsetTop;var c=b(d).coord();while((d=d.offsetParent)!=null){if(d.tagName!="HTML"){f+=(d.offsetTop-d.scrollTop);if(document.all){f+=d.clientTop}}}var e=navigator.userAgent.toLowerCase();var g=(e.indexOf("windows phone")!=-1||e.indexOf("WPDesktop")!=-1||e.indexOf("ZuneWP7")!=-1||e.indexOf("msie 9")!=-1||e.indexOf("msie 11")!=-1||e.indexOf("msie 10")!=-1)&&e.indexOf("touch")!=-1;if(g){return c.top}if(this.isSafariMobileBrowser()){if(this.isSafari4MobileBrowser()&&this.isIPadSafariMobileBrowser()){return f}if(e.indexOf("version/7")!=-1){return c.top}if(e.indexOf("version/6")!=-1||e.indexOf("version/5")!=-1){f=f+b(window).scrollTop()}if(/(Android.*Chrome\/[.0-9]* (!?Mobile))/.exec(navigator.userAgent)){return f+b(window).scrollTop()}if(/(Android.*Chrome\/[.0-9]* Mobile)/.exec(navigator.userAgent)){return f+b(window).scrollTop()}return c.top}return f},isChromeMobileBrowser:function(){var d=navigator.userAgent.toLowerCase();var c=d.indexOf("android")!=-1;return c},isOperaMiniMobileBrowser:function(){var d=navigator.userAgent.toLowerCase();var c=d.indexOf("opera mini")!=-1||d.indexOf("opera mobi")!=-1;return c},isOperaMiniBrowser:function(){var d=navigator.userAgent.toLowerCase();var c=d.indexOf("opera mini")!=-1;return c},isNewSafariMobileBrowser:function(){var d=navigator.userAgent.toLowerCase();var c=d.indexOf("ipad")!=-1||d.indexOf("iphone")!=-1||d.indexOf("ipod")!=-1;c=c&&(d.indexOf("version/5")!=-1);return c},isSafari4MobileBrowser:function(){var d=navigator.userAgent.toLowerCase();var c=d.indexOf("ipad")!=-1||d.indexOf("iphone")!=-1||d.indexOf("ipod")!=-1;c=c&&(d.indexOf("version/4")!=-1);return c},isWindowsPhone:function(){var d=navigator.userAgent.toLowerCase();var c=(d.indexOf("windows phone")!=-1||d.indexOf("WPDesktop")!=-1||d.indexOf("ZuneWP7")!=-1||d.indexOf("msie 9")!=-1||d.indexOf("msie 11")!=-1||d.indexOf("msie 10")!=-1&&d.indexOf("touch")!=-1);return c},isSafariMobileBrowser:function(){var d=navigator.userAgent.toLowerCase();if(/(Android.*Chrome\/[.0-9]* (!?Mobile))/.exec(navigator.userAgent)){return true}if(/(Android.*Chrome\/[.0-9]* Mobile)/.exec(navigator.userAgent)){return true}var c=d.indexOf("ipad")!=-1||d.indexOf("iphone")!=-1||d.indexOf("ipod")!=-1||d.indexOf("mobile safari")!=-1;return c},isIPadSafariMobileBrowser:function(){var d=navigator.userAgent.toLowerCase();var c=d.indexOf("ipad")!=-1;return c},isMobileBrowser:function(){var d=navigator.userAgent.toLowerCase();var c=d.indexOf("ipad")!=-1||d.indexOf("iphone")!=-1||d.indexOf("android")!=-1;return c},getTouches:function(c){if(c.originalEvent){if(c.originalEvent.touches&&c.originalEvent.touches.length){return c.originalEvent.touches}else{if(c.originalEvent.changedTouches&&c.originalEvent.changedTouches.length){return c.originalEvent.changedTouches}}}if(!c.touches){c.touches=new Array();c.touches[0]=c.originalEvent!=undefined?c.originalEvent:c;if(c.originalEvent!=undefined&&c.pageX){c.touches[0]=c}if(c.type=="mousemove"){c.touches[0]=c}}return c.touches},getTouchEventName:function(c){if(this.isWindowsPhone()){var d=navigator.userAgent.toLowerCase();if(d.indexOf("windows phone 7")!=-1){if(c.toLowerCase().indexOf("start")!=-1){return"MSPointerDown"}if(c.toLowerCase().indexOf("move")!=-1){return"MSPointerMove"}if(c.toLowerCase().indexOf("end")!=-1){return"MSPointerUp"}}if(c.toLowerCase().indexOf("start")!=-1){return"pointerdown"}if(c.toLowerCase().indexOf("move")!=-1){return"pointermove"}if(c.toLowerCase().indexOf("end")!=-1){return"pointerup"}}else{return c}},dispatchMouseEvent:function(c,g,f){if(this.simulatetouches){return}var d=document.createEvent("MouseEvent");d.initMouseEvent(c,true,true,g.view,1,g.screenX,g.screenY,g.clientX,g.clientY,false,false,false,false,0,null);if(f!=null){f.dispatchEvent(d)}},getRootNode:function(c){while(c.nodeType!==1){c=c.parentNode}return c},setTouchScroll:function(c,d){if(!this.enableScrolling){this.enableScrolling=[]}this.enableScrolling[d]=c},touchScroll:function(B,M,Z,H,x,n){if(B==null){return}var G=this;var f=0;var r=0;var g=0;var i=0;var t=0;var j=0;if(!this.scrolling){this.scrolling=[]}this.scrolling[H]=false;var k=false;var p=b(B);var R=["select","input","textarea"];var X=0;var J=0;if(!this.enableScrolling){this.enableScrolling=[]}this.enableScrolling[H]=true;var H=H;var w=this.getTouchEventName("touchstart")+".touchScroll";var D=this.getTouchEventName("touchend")+".touchScroll";var ab=this.getTouchEventName("touchmove")+".touchScroll";var l,W,z,ah,V,Y,aj,Q,aa,d,F,ad,af,O,e,v,u,S,c,E,ag,o;Q=M;var aj=0;var aa=0;var h=0;var T=0;var ai=0;var Y=x.jqxScrollBar("max");var o=325;function A(am){if(am.targetTouches&&(am.targetTouches.length>=1)){return am.targetTouches[0].clientY}else{if(am.originalEvent&&am.originalEvent.clientY!==undefined){return am.originalEvent.clientY}else{var al=G.getTouches(am);return al[0].clientY}}}function ae(am){if(am.targetTouches&&(am.targetTouches.length>=1)){return am.targetTouches[0].clientX}else{if(am.originalEvent&&am.originalEvent.clientX!==undefined){return am.originalEvent.clientX}else{var al=G.getTouches(am);return al[0].clientX}}}var I=function(){var ap,am,aq,ao;ap=Date.now();am=ap-v;v=ap;aq=aa-e;var an=h-ah;e=aa;ah=h;F=true;ao=1000*aq/(1+am);var al=1000*an/(1+am);af=0.8*ao+0.2*af;O=0.8*al+0.2*O};var C=false;var X=function(am){if(!G.enableScrolling[H]){return true}if(b.inArray(am.target.tagName.toLowerCase(),R)!==-1){return}aa=n.jqxScrollBar("value");h=x.jqxScrollBar("value");var an=G.getTouches(am);var ao=an[0];if(an.length==1){G.dispatchMouseEvent("mousedown",ao,G.getRootNode(ao.target))}Y=x.jqxScrollBar("max");Q=n.jqxScrollBar("max");function al(ap){C=false;F=true;d=A(ap);ag=ae(ap);af=S=O=0;e=aa;ah=h;v=Date.now();clearInterval(u);u=setInterval(I,100);T=aa;ai=h;if(aa>0&&aa<Q&&n[0].style.visibility!="hidden"){}}al(am);k=false;r=ao.pageY;t=ao.pageX;if(G.simulatetouches){if(ao._pageY!=undefined){r=ao._pageY;t=ao._pageX}}G.scrolling[H]=true;f=0;i=0;return true};if(p.on){p.on(w,X)}else{p.bind(w,X)}var ac=function(am,al){aa=(am>Q)?Q:(am<aj)?aj:am;Z(null,am,0,0,al);return(am>Q)?"max":(am<aj)?"min":"value"};var m=function(am,al){h=(am>Y)?Y:(am<aj)?aj:am;Z(am,null,0,0,al);return(am>Y)?"max":(am<aj)?"min":"value"};function U(){var al,am;if(S){al=Date.now()-v;am=-S*Math.exp(-al/o);if(am>0.5||am<-0.5){ac(c+am);requestAnimationFrame(U)}else{ac(c)}}}function N(){var al,am;if(S){al=Date.now()-v;am=-S*Math.exp(-al/o);if(am>0.5||am<-0.5){m(E+am);requestAnimationFrame(N)}else{m(E)}}}var y=function(al){if(!G.enableScrolling[H]){return true}if(!G.scrolling[H]){return true}if(C){al.preventDefault();al.stopPropagation()}var aq=G.getTouches(al);if(aq.length>1){return true}var am=aq[0].pageY;var ao=aq[0].pageX;if(G.simulatetouches){if(aq[0]._pageY!=undefined){am=aq[0]._pageY;ao=aq[0]._pageX}}var au=am-r;var av=ao-t;J=am;var at=ao;g=au-f;j=av-i;k=true;f=au;i=av;var an=x!=null?x[0].style.visibility!="hidden":true;var ar=n!=null?n[0].style.visibility!="hidden":true;function ap(ay){var aA,az,ax;if(F){aA=A(ay);ax=ae(ay);az=d-aA;V=ag-ax;var aw="value";if(az>2||az<-2){d=aA;aw=ac(aa+az,ay);I();if(aw=="min"&&T===0){return true}if(aw=="max"&&T===Q){return true}if(!ar){return true}ay.preventDefault();ay.stopPropagation();C=true;return false}else{if(V>2||V<-2){ag=ax;aw=m(h+V,ay);I();if(aw=="min"&&ai===0){return true}if(aw=="max"&&ai===Y){return true}if(!an){return true}C=true;ay.preventDefault();ay.stopPropagation();return false}}ay.preventDefault()}}if(an||ar){if((an)||(ar)){ap(al)}}};if(p.on){p.on(ab,y)}else{p.bind(ab,y)}var s=function(am){if(!G.enableScrolling[H]){return true}var an=G.getTouches(am)[0];if(!G.scrolling[H]){return true}F=false;clearInterval(u);if(af>10||af<-10){S=0.8*af;c=Math.round(aa+S);v=Date.now();requestAnimationFrame(U)}else{if(O>10||O<-10){S=0.8*O;E=Math.round(h+S);v=Date.now();requestAnimationFrame(N)}else{}}G.scrolling[H]=false;if(k){G.dispatchMouseEvent("mouseup",an,am.target)}else{var an=G.getTouches(am)[0],al=G.getRootNode(an.target);G.dispatchMouseEvent("mouseup",an,al);G.dispatchMouseEvent("click",an,al);return true}};if(this.simulatetouches){var q=b(window).on!=undefined||b(window).bind;var P=function(al){try{s(al)}catch(am){}G.scrolling[H]=false};b(window).on!=undefined?b(document).on("mouseup.touchScroll",P):b(document).bind("mouseup.touchScroll",P);if(window.frameElement){if(window.top!=null){var L=function(al){try{s(al)}catch(am){}G.scrolling[H]=false};if(window.top.document){b(window.top.document).on?b(window.top.document).on("mouseup",L):b(window.top.document).bind("mouseup",L)}}}var ak=b(document).on!=undefined||b(document).bind;var K=function(al){if(!G.scrolling[H]){return true}G.scrolling[H]=false;var an=G.getTouches(al)[0],am=G.getRootNode(an.target);G.dispatchMouseEvent("mouseup",an,am);G.dispatchMouseEvent("click",an,am)};b(document).on!=undefined?b(document).on("touchend",K):b(document).bind("touchend",K)}if(p.on){p.on("dragstart",function(al){al.preventDefault()});p.on("selectstart",function(al){al.preventDefault()})}p.on?p.on(D+" touchcancel.touchScroll",s):p.bind(D+" touchcancel.touchScroll",s)}});b.jqx.cookie=b.jqx.cookie||{};b.extend(b.jqx.cookie,{cookie:function(f,g,d){if(arguments.length>1&&String(g)!=="[object Object]"){d=b.extend({},d);if(g===null||g===undefined){d.expires=-1}if(typeof d.expires==="number"){var i=d.expires,e=d.expires=new Date();e.setDate(e.getDate()+i)}g=String(g);return(document.cookie=[encodeURIComponent(f),"=",d.raw?g:encodeURIComponent(g),d.expires?"; expires="+d.expires.toUTCString():"",d.path?"; path="+d.path:"",d.domain?"; domain="+d.domain:"",d.secure?"; secure":""].join(""))}d=g||{};var c,h=d.raw?function(j){return j}:decodeURIComponent;return(c=new RegExp("(?:^|; )"+encodeURIComponent(f)+"=([^;]*)").exec(document.cookie))?h(c[1]):null}});b.jqx.string=b.jqx.string||{};b.extend(b.jqx.string,{replace:function(g,e,f){if(e===f){return this}var c=g;var d=c.indexOf(e);while(d!=-1){c=c.replace(e,f);d=c.indexOf(e)}return c},contains:function(c,d){if(c==null||d==null){return false}return c.indexOf(d)!=-1},containsIgnoreCase:function(c,d){if(c==null||d==null){return false}return c.toString().toUpperCase().indexOf(d.toString().toUpperCase())!=-1},equals:function(c,d){if(c==null||d==null){return false}c=this.normalize(c);if(d.length==c.length){return c.slice(0,d.length)==d}return false},equalsIgnoreCase:function(c,d){if(c==null||d==null){return false}c=this.normalize(c);if(d.length==c.length){return c.toUpperCase().slice(0,d.length)==d.toUpperCase()}return false},startsWith:function(c,d){if(c==null||d==null){return false}return c.slice(0,d.length)==d},startsWithIgnoreCase:function(c,d){if(c==null||d==null){return false}return c.toUpperCase().slice(0,d.length)==d.toUpperCase()},normalize:function(c){if(c.charCodeAt(c.length-1)==65279){c=c.substring(0,c.length-1)}return c},endsWith:function(c,d){if(c==null||d==null){return false}c=this.normalize(c);return c.slice(-d.length)==d},endsWithIgnoreCase:function(c,d){if(c==null||d==null){return false}c=this.normalize(c);return c.toUpperCase().slice(-d.length)==d.toUpperCase()}});b.extend(b.easing,{easeOutBack:function(f,g,e,j,i,h){if(h==undefined){h=1.70158}return j*((g=g/i-1)*g*((h+1)*g+h)+1)+e},easeInQuad:function(f,g,e,i,h){return i*(g/=h)*g+e},easeInOutCirc:function(f,g,e,i,h){if((g/=h/2)<1){return -i/2*(Math.sqrt(1-g*g)-1)+e}return i/2*(Math.sqrt(1-(g-=2)*g)+1)+e},easeInOutSine:function(f,g,e,i,h){return -i/2*(Math.cos(Math.PI*g/h)-1)+e},easeInCubic:function(f,g,e,i,h){return i*(g/=h)*g*g+e},easeOutCubic:function(f,g,e,i,h){return i*((g=g/h-1)*g*g+1)+e},easeInOutCubic:function(f,g,e,i,h){if((g/=h/2)<1){return i/2*g*g*g+e}return i/2*((g-=2)*g*g+2)+e},easeInSine:function(f,g,e,i,h){return -i*Math.cos(g/h*(Math.PI/2))+i+e},easeOutSine:function(f,g,e,i,h){return i*Math.sin(g/h*(Math.PI/2))+e},easeInOutSine:function(f,g,e,i,h){return -i/2*(Math.cos(Math.PI*g/h)-1)+e}})})(jqxBaseFramework);(function(b){if(b.event&&b.event.special){b.extend(b.event.special,{close:{noBubble:true},open:{noBubble:true},cellclick:{noBubble:true},rowclick:{noBubble:true},tabclick:{noBubble:true},selected:{noBubble:true},expanded:{noBubble:true},collapsed:{noBubble:true},valuechanged:{noBubble:true},expandedItem:{noBubble:true},collapsedItem:{noBubble:true},expandingItem:{noBubble:true},collapsingItem:{noBubble:true}})}if(b.fn.extend){b.fn.extend({ischildof:function(g){if(!b(this).parents){var c=g.element.contains(this.element);return c}var e=b(this).parents().get();for(var d=0;d<e.length;d++){if(typeof g!="string"){var f=e[d];if(g!==undefined){if(f==g[0]){return true}}}else{if(g!==undefined){if(b(e[d]).is(g)){return true}}}}return false}})}b.fn.jqxProxy=function(){var e=b(this).data().jqxWidget;var c=Array.prototype.slice.call(arguments,0);var d=e.element;if(!d){d=e.base.element}return b.jqx.jqxWidgetProxy(e.widgetName,d,c)};var a=b.originalVal=b.fn.val;b.fn.val=function(d){if(typeof d=="undefined"){if(b(this).hasClass("jqx-widget")){var c=b(this).data().jqxWidget;if(c&&c.val){return c.val()}}if(this[0]&&this[0].tagName.toLowerCase().indexOf("angular")>=0){var c=b(this).find(".jqx-widget").data().jqxWidget;if(c&&c.val){return c.val()}}return a.call(this)}else{if(b(this).hasClass("jqx-widget")){var c=b(this).data().jqxWidget;if(c&&c.val){if(arguments.length!=2){return c.val(d)}else{return c.val(d,arguments[1])}}}if(this[0]&&this[0].tagName.toLowerCase().indexOf("angular")>=0){var c=b(this).find(".jqx-widget").data().jqxWidget;if(c&&c.val){if(arguments.length!=2){return c.val(d)}else{return c.val(d,arguments[1])}}}return a.call(this,d)}};if(b.fn.modal&&b.fn.modal.Constructor){b.fn.modal.Constructor.prototype.enforceFocus=function(){b(document).off("focusin.bs.modal").on("focusin.bs.modal",b.proxy(function(c){if(this.$element[0]!==c.target&&!this.$element.has(c.target).length){if(b(c.target).parents().hasClass("jqx-popup")){return true}this.$element.trigger("focus")}},this))}}b.fn.coord=function(n){var e,j,i={top:0,left:0},f=this[0],l=f&&f.ownerDocument;if(!l){return}e=l.documentElement;if(!b.contains(e,f)){return i}if(typeof f.getBoundingClientRect!==undefined){i=f.getBoundingClientRect()}var d=function(o){return b.isWindow(o)?o:o.nodeType===9?o.defaultView||o.parentWindow:false};j=d(l);var h=0;var c=0;var g=navigator.userAgent.toLowerCase();var m=g.indexOf("ipad")!=-1||g.indexOf("iphone")!=-1;if(m){h=2}if(true==n){if(document.body.style.position!="static"&&document.body.style.position!=""){var k=b(document.body).coord();h=-k.left;c=-k.top}}return{top:c+i.top+(j.pageYOffset||e.scrollTop)-(e.clientTop||0),left:h+i.left+(j.pageXOffset||e.scrollLeft)-(e.clientLeft||0)}};b.jqx.ripplers=[];b.jqx.ripple=function(f,e,o){if(!e){e=f}var h=b(f);var j=false;h.append("<span class='ink'></span>");var p=h.find(".ink");var c=false;for(var g=0;g<b.jqx.ripplers.length;g++){var k=b.jqx.ripplers[g];if(k.element[0]===f[0]){c=true;break}}if(!c){b.jqx.ripplers.push({ink:p,element:f,hostElement:e,hostElementType:o})}if(o==="checkbox"||o==="radiobutton"){var l=Math.max(h.outerWidth(),h.outerHeight());p.css({height:l,width:l});var n=h.width()/2-p.width()/2;var m=h.height()/2-p.height()/2;p.css({top:m+"px",left:n+"px"})}if(b.jqx.ripplers.length===1){b(document).on("mouseup",function(r){b.jqx.ripple.mouseCaptured=false;for(var q=0;q<b.jqx.ripplers.length;q++){var d=b.jqx.ripplers[q];d.ink.removeClass("active");d.element.removeClass("active");if(o!=="checkbox"&&o!=="radiobutton"){if(d.ink.hasClass("animate")){d.ink.removeClass("animate")}}}})}e.off("mousedown.ripple");e.on("mousedown.ripple",function(i){var d=b(f);b.jqx.ripple.mouseCaptured=true;setTimeout(function(){if(d.find(".ink").length==0){d.append("<span class='ink'></span>")}var r=d.find(".ink");r.removeClass("animate");if(!r.height()&&!r.width()){var s=Math.max(d.outerWidth(),d.outerHeight());r.css({height:s,width:s})}if(o==="checkbox"||o==="radiobutton"){if(o==="checkbox"){if(e.jqxCheckBox("disabled")){return}}if(o==="radiobutton"){if(e.jqxRadioButton("disabled")){return}}var q=d.width()/2-r.width()/2;var t=d.height()/2-r.height()/2;r.css({top:t+"px",left:q+"px"}).addClass("animate");r.on("animationend",function(){if(b.jqx.ripple.mouseCaptured){r.removeClass("animate");r.addClass("active");f.addClass("active")}});return}var q=i.pageX-d.offset().left-r.width()/2;var t=i.pageY-d.offset().top-r.height()/2;r.css({top:t+"px",left:q+"px"}).addClass("animate")})})}})(jqxBaseFramework);
+(function(cn,bM){var cs,bF,cg,bv,bR,b5,bI,bL,bH,ce,bE=true,bZ="undefined",cu=("sizcache"+Math.random()).replace(".",""),bz=String,bD=cn.document,bG=bD.documentElement,bW=0,bK=0,b9=[].pop,cr=[].push,bQ=[].slice,bT=[].indexOf||function(cE){var cD=0,cC=this.length;for(;cD<cC;cD++){if(this[cD]===cE){return cD}}return -1},cw=function(cC,cD){cC[cu]=cD==null||cD;return cC},cA=function(){var cC={},cD=[];return cw(function(cE,cF){if(cD.push(cE)>cg.cacheLength){delete cC[cD.shift()]}return(cC[cE+" "]=cF)},cC)},cp=cA(),cq=cA(),bS=cA(),b3="[\\x20\\t\\r\\n\\f]",bP="(?:\\\\.|[-\\w]|[^\\x00-\\xa0])+",bN=bP.replace("w","w#"),cz="([*^$|!~]?=)",ck="\\["+b3+"*("+bP+")"+b3+"*(?:"+cz+b3+"*(?:(['\"])((?:\\\\.|[^\\\\])*?)\\3|("+bN+")|)|)"+b3+"*\\]",cB=":("+bP+")(?:\\((?:(['\"])((?:\\\\.|[^\\\\])*?)\\2|([^()[\\]]*|(?:(?:"+ck+")|[^:]|\\\\.)*|.*))\\)|)",b4=":(even|odd|eq|gt|lt|nth|first|last)(?:\\("+b3+"*((?:-\\d)?\\d*)"+b3+"*\\)|)(?=[^-]|$)",co=new RegExp("^"+b3+"+|((?:^|[^\\\\])(?:\\\\.)*)"+b3+"+$","g"),bA=new RegExp("^"+b3+"*,"+b3+"*"),cc=new RegExp("^"+b3+"*([\\x20\\t\\r\\n\\f>+~])"+b3+"*"),ch=new RegExp(cB),cj=/^(?:#([\w\-]+)|(\w+)|\.([\w\-]+))$/,b8=/^:not/,cm=/[\x20\t\r\n\f]*[+~]/,cv=/:not\($/,bX=/h\d/i,ci=/input|select|textarea|button/i,bY=/\\(?!\\)/g,cb={ID:new RegExp("^#("+bP+")"),CLASS:new RegExp("^\\.("+bP+")"),NAME:new RegExp("^\\[name=['\"]?("+bP+")['\"]?\\]"),TAG:new RegExp("^("+bP.replace("w","w*")+")"),ATTR:new RegExp("^"+ck),PSEUDO:new RegExp("^"+cB),POS:new RegExp(b4,"i"),CHILD:new RegExp("^:(only|nth|first|last)-child(?:\\("+b3+"*(even|odd|(([+-]|)(\\d*)n|)"+b3+"*(?:([+-]|)"+b3+"*(\\d+)|))"+b3+"*\\)|)","i"),needsContext:new RegExp("^"+b3+"*[>+~]|"+b4,"i")},cf=function(cC){var cE=bD.createElement("div");try{return cC(cE)}catch(cD){return false}finally{cE=null}},bC=cf(function(cC){cC.appendChild(bD.createComment(""));return !cC.getElementsByTagName("*").length}),b7=cf(function(cC){cC.innerHTML="<a href='#'></a>";return cC.firstChild&&typeof cC.firstChild.getAttribute!==bZ&&cC.firstChild.getAttribute("href")==="#"}),bV=cf(function(cD){cD.innerHTML="<select></select>";var cC=typeof cD.lastChild.getAttribute("multiple");return cC!=="boolean"&&cC!=="string"}),b6=cf(function(cC){cC.innerHTML="<div class='hidden e'></div><div class='hidden'></div>";if(!cC.getElementsByClassName||!cC.getElementsByClassName("e").length){return false}cC.lastChild.className="e";return cC.getElementsByClassName("e").length===2}),bu=cf(function(cD){cD.id=cu+0;cD.innerHTML="<a name='"+cu+"'></a><div name='"+cu+"'></div>";bG.insertBefore(cD,bG.firstChild);var cC=bD.getElementsByName&&bD.getElementsByName(cu).length===2+bD.getElementsByName(cu+0).length;bF=!bD.getElementById(cu);bG.removeChild(cD);return cC});try{bQ.call(bG.childNodes,0)[0].nodeType}catch(cy){bQ=function(cD){var cE,cC=[];for(;(cE=this[cD]);cD++){cC.push(cE)}return cC}}function cl(cF,cC,cH,cK){cH=cH||[];cC=cC||bD;var cI,cD,cJ,cE,cG=cC.nodeType;if(!cF||typeof cF!=="string"){return cH}if(cG!==1&&cG!==9){return[]}cJ=bR(cC);if(!cJ&&!cK){if((cI=cj.exec(cF))){if((cE=cI[1])){if(cG===9){cD=cC.getElementById(cE);if(cD&&cD.parentNode){if(cD.id===cE){cH.push(cD);return cH}}else{return cH}}else{if(cC.ownerDocument&&(cD=cC.ownerDocument.getElementById(cE))&&b5(cC,cD)&&cD.id===cE){cH.push(cD);return cH}}}else{if(cI[2]){cr.apply(cH,bQ.call(cC.getElementsByTagName(cF),0));return cH}else{if((cE=cI[3])&&b6&&cC.getElementsByClassName){cr.apply(cH,bQ.call(cC.getElementsByClassName(cE),0));return cH}}}}}return ct(cF.replace(co,"$1"),cC,cH,cK,cJ)}cl.matches=function(cD,cC){return cl(cD,null,null,cC)};cl.matchesSelector=function(cC,cD){return cl(cD,null,null,[cC]).length>0};function cd(cC){return function(cE){var cD=cE.nodeName.toLowerCase();return cD==="input"&&cE.type===cC}}function by(cC){return function(cE){var cD=cE.nodeName.toLowerCase();return(cD==="input"||cD==="button")&&cE.type===cC}}function ca(cC){return cw(function(cD){cD=+cD;return cw(function(cE,cI){var cG,cF=cC([],cE.length,cD),cH=cF.length;while(cH--){if(cE[(cG=cF[cH])]){cE[cG]=!(cI[cG]=cE[cG])}}})})}bv=cl.getText=function(cG){var cF,cD="",cE=0,cC=cG.nodeType;if(cC){if(cC===1||cC===9||cC===11){if(typeof cG.textContent==="string"){return cG.textContent}else{for(cG=cG.firstChild;cG;cG=cG.nextSibling){cD+=bv(cG)}}}else{if(cC===3||cC===4){return cG.nodeValue}}}else{for(;(cF=cG[cE]);cE++){cD+=bv(cF)}}return cD};bR=cl.isXML=function(cC){var cD=cC&&(cC.ownerDocument||cC).documentElement;return cD?cD.nodeName!=="HTML":false};b5=cl.contains=bG.contains?function(cD,cC){var cF=cD.nodeType===9?cD.documentElement:cD,cE=cC&&cC.parentNode;return cD===cE||!!(cE&&cE.nodeType===1&&cF.contains&&cF.contains(cE))}:bG.compareDocumentPosition?function(cD,cC){return cC&&!!(cD.compareDocumentPosition(cC)&16)}:function(cD,cC){while((cC=cC.parentNode)){if(cC===cD){return true}}return false};cl.attr=function(cE,cD){var cF,cC=bR(cE);if(!cC){cD=cD.toLowerCase()}if((cF=cg.attrHandle[cD])){return cF(cE)}if(cC||bV){return cE.getAttribute(cD)}cF=cE.getAttributeNode(cD);return cF?typeof cE[cD]==="boolean"?cE[cD]?cD:null:cF.specified?cF.value:null:null};cg=cl.selectors={cacheLength:50,createPseudo:cw,match:cb,attrHandle:b7?{}:{href:function(cC){return cC.getAttribute("href",2)},type:function(cC){return cC.getAttribute("type")}},find:{ID:bF?function(cF,cE,cD){if(typeof cE.getElementById!==bZ&&!cD){var cC=cE.getElementById(cF);return cC&&cC.parentNode?[cC]:[]}}:function(cF,cE,cD){if(typeof cE.getElementById!==bZ&&!cD){var cC=cE.getElementById(cF);return cC?cC.id===cF||typeof cC.getAttributeNode!==bZ&&cC.getAttributeNode("id").value===cF?[cC]:bM:[]}},TAG:bC?function(cC,cD){if(typeof cD.getElementsByTagName!==bZ){return cD.getElementsByTagName(cC)}}:function(cC,cG){var cF=cG.getElementsByTagName(cC);if(cC==="*"){var cH,cE=[],cD=0;for(;(cH=cF[cD]);cD++){if(cH.nodeType===1){cE.push(cH)}}return cE}return cF},NAME:bu&&function(cC,cD){if(typeof cD.getElementsByName!==bZ){return cD.getElementsByName(name)}},CLASS:b6&&function(cE,cD,cC){if(typeof cD.getElementsByClassName!==bZ&&!cC){return cD.getElementsByClassName(cE)}}},relative:{">":{dir:"parentNode",first:true}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:true},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(cC){cC[1]=cC[1].replace(bY,"");cC[3]=(cC[4]||cC[5]||"").replace(bY,"");if(cC[2]==="~="){cC[3]=" "+cC[3]+" "}return cC.slice(0,4)},CHILD:function(cC){cC[1]=cC[1].toLowerCase();if(cC[1]==="nth"){if(!cC[2]){cl.error(cC[0])}cC[3]=+(cC[3]?cC[4]+(cC[5]||1):2*(cC[2]==="even"||cC[2]==="odd"));cC[4]=+((cC[6]+cC[7])||cC[2]==="odd")}else{if(cC[2]){cl.error(cC[0])}}return cC},PSEUDO:function(cD){var cE,cC;if(cb.CHILD.test(cD[0])){return null}if(cD[3]){cD[2]=cD[3]}else{if((cE=cD[4])){if(ch.test(cE)&&(cC=bw(cE,true))&&(cC=cE.indexOf(")",cE.length-cC)-cE.length)){cE=cE.slice(0,cC);cD[0]=cD[0].slice(0,cC)}cD[2]=cE}}return cD.slice(0,3)}},filter:{ID:bF?function(cC){cC=cC.replace(bY,"");return function(cD){return cD.getAttribute("id")===cC}}:function(cC){cC=cC.replace(bY,"");return function(cE){var cD=typeof cE.getAttributeNode!==bZ&&cE.getAttributeNode("id");return cD&&cD.value===cC}},TAG:function(cC){if(cC==="*"){return function(){return true}}cC=cC.replace(bY,"").toLowerCase();return function(cD){return cD.nodeName&&cD.nodeName.toLowerCase()===cC}},CLASS:function(cC){var cD=cp[cu][cC+" "];return cD||(cD=new RegExp("(^|"+b3+")"+cC+"("+b3+"|$)"))&&cp(cC,function(cE){return cD.test(cE.className||(typeof cE.getAttribute!==bZ&&cE.getAttribute("class"))||"")})},ATTR:function(cE,cD,cC){return function(cH,cG){var cF=cl.attr(cH,cE);if(cF==null){return cD==="!="}if(!cD){return true}cF+="";return cD==="="?cF===cC:cD==="!="?cF!==cC:cD==="^="?cC&&cF.indexOf(cC)===0:cD==="*="?cC&&cF.indexOf(cC)>-1:cD==="$="?cC&&cF.substr(cF.length-cC.length)===cC:cD==="~="?(" "+cF+" ").indexOf(cC)>-1:cD==="|="?cF===cC||cF.substr(0,cC.length+1)===cC+"-":false}},CHILD:function(cC,cE,cF,cD){if(cC==="nth"){return function(cI){var cH,cJ,cG=cI.parentNode;if(cF===1&&cD===0){return true}if(cG){cJ=0;for(cH=cG.firstChild;cH;cH=cH.nextSibling){if(cH.nodeType===1){cJ++;if(cI===cH){break}}}}cJ-=cD;return cJ===cF||(cJ%cF===0&&cJ/cF>=0)}}return function(cH){var cG=cH;switch(cC){case"only":case"first":while((cG=cG.previousSibling)){if(cG.nodeType===1){return false}}if(cC==="first"){return true}cG=cH;case"last":while((cG=cG.nextSibling)){if(cG.nodeType===1){return false}}return true}}},PSEUDO:function(cF,cE){var cC,cD=cg.pseudos[cF]||cg.setFilters[cF.toLowerCase()]||cl.error("unsupported pseudo: "+cF);if(cD[cu]){return cD(cE)}if(cD.length>1){cC=[cF,cF,"",cE];return cg.setFilters.hasOwnProperty(cF.toLowerCase())?cw(function(cI,cK){var cH,cG=cD(cI,cE),cJ=cG.length;while(cJ--){cH=bT.call(cI,cG[cJ]);cI[cH]=!(cK[cH]=cG[cJ])}}):function(cG){return cD(cG,0,cC)}}return cD}},pseudos:{not:cw(function(cC){var cD=[],cE=[],cF=bI(cC.replace(co,"$1"));return cF[cu]?cw(function(cH,cM,cK,cI){var cL,cG=cF(cH,null,cI,[]),cJ=cH.length;while(cJ--){if((cL=cG[cJ])){cH[cJ]=!(cM[cJ]=cL)}}}):function(cI,cH,cG){cD[0]=cI;cF(cD,null,cG,cE);return !cE.pop()}}),has:cw(function(cC){return function(cD){return cl(cC,cD).length>0}}),contains:cw(function(cC){return function(cD){return(cD.textContent||cD.innerText||bv(cD)).indexOf(cC)>-1}}),enabled:function(cC){return cC.disabled===false},disabled:function(cC){return cC.disabled===true},checked:function(cC){var cD=cC.nodeName.toLowerCase();return(cD==="input"&&!!cC.checked)||(cD==="option"&&!!cC.selected)},selected:function(cC){if(cC.parentNode){cC.parentNode.selectedIndex}return cC.selected===true},parent:function(cC){return !cg.pseudos.empty(cC)},empty:function(cD){var cC;cD=cD.firstChild;while(cD){if(cD.nodeName>"@"||(cC=cD.nodeType)===3||cC===4){return false}cD=cD.nextSibling}return true},header:function(cC){return bX.test(cC.nodeName)},text:function(cE){var cD,cC;return cE.nodeName.toLowerCase()==="input"&&(cD=cE.type)==="text"&&((cC=cE.getAttribute("type"))==null||cC.toLowerCase()===cD)},radio:cd("radio"),checkbox:cd("checkbox"),file:cd("file"),password:cd("password"),image:cd("image"),submit:by("submit"),reset:by("reset"),button:function(cD){var cC=cD.nodeName.toLowerCase();return cC==="input"&&cD.type==="button"||cC==="button"},input:function(cC){return ci.test(cC.nodeName)},focus:function(cC){var cD=cC.ownerDocument;return cC===cD.activeElement&&(!cD.hasFocus||cD.hasFocus())&&!!(cC.type||cC.href||~cC.tabIndex)},active:function(cC){return cC===cC.ownerDocument.activeElement},first:ca(function(){return[0]}),last:ca(function(cC,cD){return[cD-1]}),eq:ca(function(cC,cE,cD){return[cD<0?cD+cE:cD]}),even:ca(function(cC,cE){for(var cD=0;cD<cE;cD+=2){cC.push(cD)}return cC}),odd:ca(function(cC,cE){for(var cD=1;cD<cE;cD+=2){cC.push(cD)}return cC}),lt:ca(function(cC,cF,cE){for(var cD=cE<0?cE+cF:cE;--cD>=0;){cC.push(cD)}return cC}),gt:ca(function(cC,cF,cE){for(var cD=cE<0?cE+cF:cE;++cD<cF;){cC.push(cD)}return cC})}};function bx(cD,cC,cE){if(cD===cC){return cE}var cF=cD.nextSibling;while(cF){if(cF===cC){return -1}cF=cF.nextSibling}return 1}bL=bG.compareDocumentPosition?function(cD,cC){if(cD===cC){bH=true;return 0}return(!cD.compareDocumentPosition||!cC.compareDocumentPosition?cD.compareDocumentPosition:cD.compareDocumentPosition(cC)&4)?-1:1}:function(cK,cJ){if(cK===cJ){bH=true;return 0}else{if(cK.sourceIndex&&cJ.sourceIndex){return cK.sourceIndex-cJ.sourceIndex}}var cH,cD,cE=[],cC=[],cG=cK.parentNode,cI=cJ.parentNode,cL=cG;if(cG===cI){return bx(cK,cJ)}else{if(!cG){return -1}else{if(!cI){return 1}}}while(cL){cE.unshift(cL);cL=cL.parentNode}cL=cI;while(cL){cC.unshift(cL);cL=cL.parentNode}cH=cE.length;cD=cC.length;for(var cF=0;cF<cH&&cF<cD;cF++){if(cE[cF]!==cC[cF]){return bx(cE[cF],cC[cF])}}return cF===cH?bx(cK,cC[cF],-1):bx(cE[cF],cJ,1)};[0,0].sort(bL);bE=!bH;cl.uniqueSort=function(cE){var cF,cG=[],cD=1,cC=0;bH=bE;cE.sort(bL);if(bH){for(;(cF=cE[cD]);cD++){if(cF===cE[cD-1]){cC=cG.push(cD)}}while(cC--){cE.splice(cG[cC],1)}}return cE};cl.error=function(cC){throw new Error("Syntax error, unrecognized expression: "+cC)};function bw(cG,cL){var cD,cH,cJ,cK,cI,cE,cC,cF=cq[cu][cG+" "];if(cF){return cL?0:cF.slice(0)}cI=cG;cE=[];cC=cg.preFilter;while(cI){if(!cD||(cH=bA.exec(cI))){if(cH){cI=cI.slice(cH[0].length)||cI}cE.push(cJ=[])}cD=false;if((cH=cc.exec(cI))){cJ.push(cD=new bz(cH.shift()));cI=cI.slice(cD.length);cD.type=cH[0].replace(co," ")}for(cK in cg.filter){if((cH=cb[cK].exec(cI))&&(!cC[cK]||(cH=cC[cK](cH)))){cJ.push(cD=new bz(cH.shift()));cI=cI.slice(cD.length);cD.type=cK;cD.matches=cH}}if(!cD){break}}return cL?cI.length:cI?cl.error(cG):cq(cG,cE).slice(0)}function b1(cG,cE,cF){var cC=cE.dir,cH=cF&&cE.dir==="parentNode",cD=bK++;return cE.first?function(cK,cJ,cI){while((cK=cK[cC])){if(cH||cK.nodeType===1){return cG(cK,cJ,cI)}}}:function(cL,cK,cJ){if(!cJ){var cI,cM=bW+" "+cD+" ",cN=cM+cs;while((cL=cL[cC])){if(cH||cL.nodeType===1){if((cI=cL[cu])===cN){return cL.sizset}else{if(typeof cI==="string"&&cI.indexOf(cM)===0){if(cL.sizset){return cL}}else{cL[cu]=cN;if(cG(cL,cK,cJ)){cL.sizset=true;return cL}cL.sizset=false}}}}}else{while((cL=cL[cC])){if(cH||cL.nodeType===1){if(cG(cL,cK,cJ)){return cL}}}}}}function bJ(cC){return cC.length>1?function(cG,cF,cD){var cE=cC.length;while(cE--){if(!cC[cE](cG,cF,cD)){return false}}return true}:cC[0]}function b0(cC,cD,cE,cF,cI){var cG,cL=[],cH=0,cJ=cC.length,cK=cD!=null;for(;cH<cJ;cH++){if((cG=cC[cH])){if(!cE||cE(cG,cF,cI)){cL.push(cG);if(cK){cD.push(cH)}}}}return cL}function cx(cE,cD,cG,cF,cH,cC){if(cF&&!cF[cu]){cF=cx(cF)}if(cH&&!cH[cu]){cH=cx(cH,cC)}return cw(function(cS,cP,cK,cR){var cU,cQ,cM,cL=[],cT=[],cJ=cP.length,cI=cS||bU(cD||"*",cK.nodeType?[cK]:cK,[]),cN=cE&&(cS||!cD)?b0(cI,cL,cE,cK,cR):cI,cO=cG?cH||(cS?cE:cJ||cF)?[]:cP:cN;if(cG){cG(cN,cO,cK,cR)}if(cF){cU=b0(cO,cT);cF(cU,[],cK,cR);cQ=cU.length;while(cQ--){if((cM=cU[cQ])){cO[cT[cQ]]=!(cN[cT[cQ]]=cM)}}}if(cS){if(cH||cE){if(cH){cU=[];cQ=cO.length;while(cQ--){if((cM=cO[cQ])){cU.push((cN[cQ]=cM))}}cH(null,(cO=[]),cU,cR)}cQ=cO.length;while(cQ--){if((cM=cO[cQ])&&(cU=cH?bT.call(cS,cM):cL[cQ])>-1){cS[cU]=!(cP[cU]=cM)}}}}else{cO=b0(cO===cP?cO.splice(cJ,cO.length):cO);if(cH){cH(null,cP,cO,cR)}else{cr.apply(cP,cO)}}})}function b2(cI){var cD,cG,cE,cH=cI.length,cL=cg.relative[cI[0].type],cM=cL||cg.relative[" "],cF=cL?1:0,cJ=b1(function(cN){return cN===cD},cM,true),cK=b1(function(cN){return bT.call(cD,cN)>-1},cM,true),cC=[function(cP,cO,cN){return(!cL&&(cN||cO!==ce))||((cD=cO).nodeType?cJ(cP,cO,cN):cK(cP,cO,cN))}];for(;cF<cH;cF++){if((cG=cg.relative[cI[cF].type])){cC=[b1(bJ(cC),cG)]}else{cG=cg.filter[cI[cF].type].apply(null,cI[cF].matches);if(cG[cu]){cE=++cF;for(;cE<cH;cE++){if(cg.relative[cI[cE].type]){break}}return cx(cF>1&&bJ(cC),cF>1&&cI.slice(0,cF-1).join("").replace(co,"$1"),cG,cF<cE&&b2(cI.slice(cF,cE)),cE<cH&&b2((cI=cI.slice(cE))),cE<cH&&cI.join(""))}cC.push(cG)}}return bJ(cC)}function bB(cF,cE){var cC=cE.length>0,cG=cF.length>0,cD=function(cQ,cK,cP,cO,cW){var cL,cM,cR,cV=[],cU=0,cN="0",cH=cQ&&[],cS=cW!=null,cT=ce,cJ=cQ||cG&&cg.find.TAG("*",cW&&cK.parentNode||cK),cI=(bW+=cT==null?1:Math.E);if(cS){ce=cK!==bD&&cK;cs=cD.el}for(;(cL=cJ[cN])!=null;cN++){if(cG&&cL){for(cM=0;(cR=cF[cM]);cM++){if(cR(cL,cK,cP)){cO.push(cL);break}}if(cS){bW=cI;cs=++cD.el}}if(cC){if((cL=!cR&&cL)){cU--}if(cQ){cH.push(cL)}}}cU+=cN;if(cC&&cN!==cU){for(cM=0;(cR=cE[cM]);cM++){cR(cH,cV,cK,cP)}if(cQ){if(cU>0){while(cN--){if(!(cH[cN]||cV[cN])){cV[cN]=b9.call(cO)}}}cV=b0(cV)}cr.apply(cO,cV);if(cS&&!cQ&&cV.length>0&&(cU+cE.length)>1){cl.uniqueSort(cO)}}if(cS){bW=cI;ce=cT}return cH};cD.el=0;return cC?cw(cD):cD}bI=cl.compile=function(cC,cH){var cE,cD=[],cG=[],cF=bS[cu][cC+" "];if(!cF){if(!cH){cH=bw(cC)}cE=cH.length;while(cE--){cF=b2(cH[cE]);if(cF[cu]){cD.push(cF)}else{cG.push(cF)}}cF=bS(cC,bB(cG,cD))}return cF};function bU(cD,cG,cF){var cE=0,cC=cG.length;for(;cE<cC;cE++){cl(cD,cG[cE],cF)}return cF}function ct(cE,cC,cG,cK,cJ){var cH,cN,cD,cM,cL,cI=bw(cE),cF=cI.length;if(!cK){if(cI.length===1){cN=cI[0]=cI[0].slice(0);if(cN.length>2&&(cD=cN[0]).type==="ID"&&cC.nodeType===9&&!cJ&&cg.relative[cN[1].type]){cC=cg.find.ID(cD.matches[0].replace(bY,""),cC,cJ)[0];if(!cC){return cG}cE=cE.slice(cN.shift().length)}for(cH=cb.POS.test(cE)?-1:cN.length-1;cH>=0;cH--){cD=cN[cH];if(cg.relative[(cM=cD.type)]){break}if((cL=cg.find[cM])){if((cK=cL(cD.matches[0].replace(bY,""),cm.test(cN[0].type)&&cC.parentNode||cC,cJ))){cN.splice(cH,1);cE=cK.length&&cN.join("");if(!cE){cr.apply(cG,bQ.call(cK,0));return cG}break}}}}}bI(cE,cI)(cK,cC,cJ,cG,cm.test(cE));return cG}if(bD.querySelectorAll){(function(){var cH,cI=ct,cG=/'|\\/g,cE=/\=[\x20\t\r\n\f]*([^'"\]]*)[\x20\t\r\n\f]*\]/g,cD=[":focus"],cC=[":active"],cF=bG.matchesSelector||bG.mozMatchesSelector||bG.webkitMatchesSelector||bG.oMatchesSelector||bG.msMatchesSelector;cf(function(cJ){cJ.innerHTML="<select><option selected=''></option></select>";if(!cJ.querySelectorAll("[selected]").length){cD.push("\\["+b3+"*(?:checked|disabled|ismap|multiple|readonly|selected|value)")}if(!cJ.querySelectorAll(":checked").length){cD.push(":checked")}});cf(function(cJ){cJ.innerHTML="<p test=''></p>";if(cJ.querySelectorAll("[test^='']").length){cD.push("[*^$]="+b3+"*(?:\"\"|'')")}cJ.innerHTML="<input type='hidden'/>";if(!cJ.querySelectorAll(":enabled").length){cD.push(":enabled",":disabled")}});cD=new RegExp(cD.join("|"));ct=function(cP,cK,cR,cU,cT){if(!cU&&!cT&&!cD.test(cP)){var cN,cS,cM=true,cJ=cu,cL=cK,cQ=cK.nodeType===9&&cP;if(cK.nodeType===1&&cK.nodeName.toLowerCase()!=="object"){cN=bw(cP);if((cM=cK.getAttribute("id"))){cJ=cM.replace(cG,"\\$&")}else{cK.setAttribute("id",cJ)}cJ="[id='"+cJ+"'] ";cS=cN.length;while(cS--){cN[cS]=cJ+cN[cS].join("")}cL=cm.test(cP)&&cK.parentNode||cK;cQ=cN.join(",")}if(cQ){try{cr.apply(cR,bQ.call(cL.querySelectorAll(cQ),0));return cR}catch(cO){}finally{if(!cM){cK.removeAttribute("id")}}}}return cI(cP,cK,cR,cU,cT)};if(cF){cf(function(cK){cH=cF.call(cK,"div");try{cF.call(cK,"[test!='']:sizzle");cC.push("!=",cB)}catch(cJ){}});cC=new RegExp(cC.join("|"));cl.matchesSelector=function(cK,cM){cM=cM.replace(cE,"='$1']");if(!bR(cK)&&!cC.test(cM)&&!cD.test(cM)){try{var cJ=cF.call(cK,cM);if(cJ||cH||cK.document&&cK.document.nodeType!==11){return cJ}}catch(cL){}}return cl(cM,null,null,[cK]).length>0}}})()}cg.pseudos.nth=cg.pseudos.eq;function bO(){}cg.filters=bO.prototype=cg.pseudos;cg.setFilters=new bO();cl.attr=C.attr;C.find=cl;C.expr=cl.selectors;C.expr[":"]=C.expr.pseudos;C.unique=cl.uniqueSort;C.text=cl.getText;C.isXMLDoc=cl.isXML;C.contains=cl.contains})(bd);var U=/Until$/,ag=/^(?:parents|prev(?:Until|All))/,bq=/^.[^:#\[\.,]*$/,aQ=C.expr.match.needsContext,ao={children:true,contents:true,next:true,prev:true};C.fn.extend({find:function(bu){var by,bv,bA,bB,bz,bx,bw=this;if(typeof bu!=="string"){return C(bu).filter(function(){for(by=0,bv=bw.length;by<bv;by++){if(C.contains(bw[by],this)){return true}}})}bx=this.pushStack("","find",bu);for(by=0,bv=this.length;by<bv;by++){bA=bx.length;C.find(bu,this[by],bx);if(by>0){for(bB=bA;bB<bx.length;bB++){for(bz=0;bz<bA;bz++){if(bx[bz]===bx[bB]){bx.splice(bB--,1);break}}}}}return bx},has:function(bx){var bw,bv=C(bx,this),bu=bv.length;return this.filter(function(){for(bw=0;bw<bu;bw++){if(C.contains(this,bv[bw])){return true}}})},not:function(bu){return this.pushStack(az(this,bu,false),"not",bu)},filter:function(bu){return this.pushStack(az(this,bu,true),"filter",bu)},is:function(bu){return !!bu&&(typeof bu==="string"?aQ.test(bu)?C(bu,this.context).index(this[0])>=0:C.filter(bu,this).length>0:this.filter(bu).length>0)},closest:function(by,bx){var bz,bw=0,bu=this.length,bv=[],bA=aQ.test(by)||typeof by!=="string"?C(by,bx||this.context):0;for(;bw<bu;bw++){bz=this[bw];while(bz&&bz.ownerDocument&&bz!==bx&&bz.nodeType!==11){if(bA?bA.index(bz)>-1:C.find.matchesSelector(bz,by)){bv.push(bz);break}bz=bz.parentNode}}bv=bv.length>1?C.unique(bv):bv;return this.pushStack(bv,"closest",by)},index:function(bu){if(!bu){return(this[0]&&this[0].parentNode)?this.prevAll().length:-1}if(typeof bu==="string"){return C.inArray(this[0],C(bu))}return C.inArray(bu.jqx?bu[0]:bu,this)},add:function(bu,bv){var bx=typeof bu==="string"?C(bu,bv):C.makeArray(bu&&bu.nodeType?[bu]:bu),bw=C.merge(this.get(),bx);return this.pushStack(x(bx[0])||x(bw[0])?bw:C.unique(bw))},addBack:function(bu){return this.add(bu==null?this.prevObject:this.prevObject.filter(bu))}});C.fn.andSelf=C.fn.addBack;function x(bu){return !bu||!bu.parentNode||bu.parentNode.nodeType===11}function aB(bv,bu){do{bv=bv[bu]}while(bv&&bv.nodeType!==1);return bv}C.each({parent:function(bv){var bu=bv.parentNode;return bu&&bu.nodeType!==11?bu:null},parents:function(bu){return C.dir(bu,"parentNode")},parentsUntil:function(bv,bu,bw){return C.dir(bv,"parentNode",bw)},next:function(bu){return aB(bu,"nextSibling")},prev:function(bu){return aB(bu,"previousSibling")},nextAll:function(bu){return C.dir(bu,"nextSibling")},prevAll:function(bu){return C.dir(bu,"previousSibling")},nextUntil:function(bv,bu,bw){return C.dir(bv,"nextSibling",bw)},prevUntil:function(bv,bu,bw){return C.dir(bv,"previousSibling",bw)},siblings:function(bu){return C.sibling((bu.parentNode||{}).firstChild,bu)},children:function(bu){return C.sibling(bu.firstChild)},contents:function(bu){return C.nodeName(bu,"iframe")?bu.contentDocument||bu.contentWindow.document:C.merge([],bu.childNodes)}},function(bu,bv){C.fn[bu]=function(by,bw){var bx=C.map(this,bv,by);if(!U.test(bu)){bw=by}if(bw&&typeof bw==="string"){bx=C.filter(bw,bx)}bx=this.length>1&&!ao[bu]?C.unique(bx):bx;if(this.length>1&&ag.test(bu)){bx=bx.reverse()}return this.pushStack(bx,bu,aD.call(arguments).join(","))}});C.extend({filter:function(bw,bu,bv){if(bv){bw=":not("+bw+")"}return bu.length===1?C.find.matchesSelector(bu[0],bw)?[bu[0]]:[]:C.find.matches(bw,bu)},dir:function(bw,bv,by){var bu=[],bx=bw[bv];while(bx&&bx.nodeType!==9&&(by===G||bx.nodeType!==1||!C(bx).is(by))){if(bx.nodeType===1){bu.push(bx)}bx=bx[bv]}return bu},sibling:function(bw,bv){var bu=[];for(;bw;bw=bw.nextSibling){if(bw.nodeType===1&&bw!==bv){bu.push(bw)}}return bu}});function az(bx,bw,bu){bw=bw||0;if(C.isFunction(bw)){return C.grep(bx,function(bz,by){var bA=!!bw.call(bz,by,bz);return bA===bu})}else{if(bw.nodeType){return C.grep(bx,function(bz,by){return(bz===bw)===bu})}else{if(typeof bw==="string"){var bv=C.grep(bx,function(by){return by.nodeType===1});if(bq.test(bw)){return C.filter(bw,bv,!bu)}else{bw=C.filter(bw,bv)}}}}return C.grep(bx,function(bz,by){return(C.inArray(bz,bw)>=0)===bu})}function a(bu){var bw=aJ.split("|"),bv=bu.createDocumentFragment();if(bv.createElement){while(bw.length){bv.createElement(bw.pop())}}return bv}var aJ="abbr|article|aside|audio|bdi|canvas|data|datalist|details|figcaption|figure|footer|header|hgroup|mark|meter|nav|output|progress|section|summary|time|video",aa=/ JQXLite\d+="(?:null|\d+)"/g,ah=/^\s+/,L=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/gi,c=/<([\w:]+)/,v=/<tbody/i,P=/<|&#?\w+;/,W=/<(?:script|style|link)/i,I=/<(?:script|object|embed|option|style)/i,ac=new RegExp("<(?:"+aJ+")[\\s/>]","i"),R=/^(?:checkbox|radio)$/,o=/checked\s*(?:[^=]|=\s*.checked.)/i,bp=/\/(java|ecma)script/i,aG=/^\s*<!(?:\[CDATA\[|\-\-)|[\]\-]{2}>\s*$/g,am={option:[1,"<select multiple='multiple'>","</select>"],legend:[1,"<fieldset>","</fieldset>"],thead:[1,"<table>","</table>"],tr:[2,"<table><tbody>","</tbody></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],col:[2,"<table><tbody></tbody><colgroup>","</colgroup></table>"],area:[1,"<map>","</map>"],_default:[0,"",""]},T=a(ak),bg=T.appendChild(ak.createElement("div"));am.optgroup=am.option;am.tbody=am.tfoot=am.colgroup=am.caption=am.thead;am.th=am.td;if(!C.support.htmlSerialize){am._default=[1,"X<div>","</div>"]}C.fn.extend({text:function(bu){return C.access(this,function(bv){return bv===G?C.text(this):this.empty().append((this[0]&&this[0].ownerDocument||ak).createTextNode(bv))},null,bu,arguments.length)},wrapAll:function(bu){if(C.isFunction(bu)){return this.each(function(bw){C(this).wrapAll(bu.call(this,bw))})}if(this[0]){var bv=C(bu,this[0].ownerDocument).eq(0).clone(true);if(this[0].parentNode){bv.insertBefore(this[0])}bv.map(function(){var bw=this;while(bw.firstChild&&bw.firstChild.nodeType===1){bw=bw.firstChild}return bw}).append(this)}return this},wrapInner:function(bu){if(C.isFunction(bu)){return this.each(function(bv){C(this).wrapInner(bu.call(this,bv))})}return this.each(function(){var bv=C(this),bw=bv.contents();if(bw.length){bw.wrapAll(bu)}else{bv.append(bu)}})},wrap:function(bu){var bv=C.isFunction(bu);return this.each(function(bw){C(this).wrapAll(bv?bu.call(this,bw):bu)})},unwrap:function(){return this.parent().each(function(){if(!C.nodeName(this,"body")){C(this).replaceWith(this.childNodes)}}).end()},append:function(){return this.domManip(arguments,true,function(bu){if(this.nodeType===1||this.nodeType===11){this.appendChild(bu)}})},prepend:function(){return this.domManip(arguments,true,function(bu){if(this.nodeType===1||this.nodeType===11){this.insertBefore(bu,this.firstChild)}})},before:function(){if(!x(this[0])){return this.domManip(arguments,false,function(bv){this.parentNode.insertBefore(bv,this)})}if(arguments.length){var bu=C.clean(arguments);return this.pushStack(C.merge(bu,this),"before",this.selector)}},after:function(){if(!x(this[0])){return this.domManip(arguments,false,function(bv){this.parentNode.insertBefore(bv,this.nextSibling)})}if(arguments.length){var bu=C.clean(arguments);return this.pushStack(C.merge(this,bu),"after",this.selector)}},remove:function(bu,bx){var bw,bv=0;for(;(bw=this[bv])!=null;bv++){if(!bu||C.filter(bu,[bw]).length){if(!bx&&bw.nodeType===1){C.cleanData(bw.getElementsByTagName("*"));C.cleanData([bw])}if(bw.parentNode){bw.parentNode.removeChild(bw)}}}return this},empty:function(){var bv,bu=0;for(;(bv=this[bu])!=null;bu++){if(bv.nodeType===1){C.cleanData(bv.getElementsByTagName("*"))}while(bv.firstChild){bv.removeChild(bv.firstChild)}}return this},clone:function(bv,bu){bv=bv==null?false:bv;bu=bu==null?bv:bu;return this.map(function(){return C.clone(this,bv,bu)})},html:function(bu){return C.access(this,function(by){var bx=this[0]||{},bw=0,bv=this.length;if(by===G){return bx.nodeType===1?bx.innerHTML.replace(aa,""):G}if(typeof by==="string"&&!W.test(by)&&(C.support.htmlSerialize||!ac.test(by))&&(C.support.leadingWhitespace||!ah.test(by))&&!am[(c.exec(by)||["",""])[1].toLowerCase()]){by=by.replace(L,"<$1></$2>");try{for(;bw<bv;bw++){bx=this[bw]||{};if(bx.nodeType===1){C.cleanData(bx.getElementsByTagName("*"));bx.innerHTML=by}}bx=0}catch(bz){}}if(bx){this.empty().append(by)}},null,bu,arguments.length)},replaceWith:function(bu){if(!x(this[0])){if(C.isFunction(bu)){return this.each(function(bx){var bw=C(this),bv=bw.html();bw.replaceWith(bu.call(this,bx,bv))})}if(typeof bu!=="string"){bu=C(bu).detach()}return this.each(function(){var bw=this.nextSibling,bv=this.parentNode;C(this).remove();if(bw){C(bw).before(bu)}else{C(bv).append(bu)}})}return this.length?this.pushStack(C(C.isFunction(bu)?bu():bu),"replaceWith",bu):this},detach:function(bu){return this.remove(bu,true)},domManip:function(bA,bE,bD){bA=[].concat.apply([],bA);var bw,by,bz,bC,bx=0,bB=bA[0],bv=[],bu=this.length;if(!C.support.checkClone&&bu>1&&typeof bB==="string"&&o.test(bB)){return this.each(function(){C(this).domManip(bA,bE,bD)})}if(C.isFunction(bB)){return this.each(function(bG){var bF=C(this);bA[0]=bB.call(this,bG,bE?bF.html():G);bF.domManip(bA,bE,bD)})}if(this[0]){bw=C.buildFragment(bA,this,bv);bz=bw.fragment;by=bz.firstChild;if(bz.childNodes.length===1){bz=by}if(by){bE=bE&&C.nodeName(by,"tr");for(bC=bw.cacheable||bu-1;bx<bu;bx++){bD.call(bE&&C.nodeName(this[bx],"table")?a3(this[bx],"tbody"):this[bx],bx===bC?bz:C.clone(bz,true,true))}}bz=by=null;if(bv.length){C.each(bv,function(bF,bG){if(bG.src){if(C.ajax){C.ajax({url:bG.src,type:"GET",dataType:"script",async:false,global:false,"throws":true})}else{C.error("no ajax")}}else{C.globalEval((bG.text||bG.textContent||bG.innerHTML||"").replace(aG,""))}if(bG.parentNode){bG.parentNode.removeChild(bG)}})}}return this}});function a3(bv,bu){return bv.getElementsByTagName(bu)[0]||bv.appendChild(bv.ownerDocument.createElement(bu))}function r(bB,bv){if(bv.nodeType!==1||!C.hasData(bB)){return}var by,bx,bu,bA=C._data(bB),bz=C._data(bv,bA),bw=bA.events;if(bw){delete bz.handle;bz.events={};for(by in bw){for(bx=0,bu=bw[by].length;bx<bu;bx++){C.event.add(bv,by,bw[by][bx])}}}if(bz.data){bz.data=C.extend({},bz.data)}}function ab(bv,bu){var bw;if(bu.nodeType!==1){return}if(bu.clearAttributes){bu.clearAttributes()}if(bu.mergeAttributes){bu.mergeAttributes(bv)}bw=bu.nodeName.toLowerCase();if(bw==="object"){if(bu.parentNode){bu.outerHTML=bv.outerHTML}if(C.support.html5Clone&&(bv.innerHTML&&!C.trim(bu.innerHTML))){bu.innerHTML=bv.innerHTML}}else{if(bw==="input"&&R.test(bv.type)){bu.defaultChecked=bu.checked=bv.checked;if(bu.value!==bv.value){bu.value=bv.value}}else{if(bw==="option"){bu.selected=bv.defaultSelected}else{if(bw==="input"||bw==="textarea"){bu.defaultValue=bv.defaultValue}else{if(bw==="script"&&bu.text!==bv.text){bu.text=bv.text}}}}}bu.removeAttribute(C.expando)}C.buildFragment=function(bx,by,bv){var bw,bu,bz,bA=bx[0];by=by||ak;by=!by.nodeType&&by[0]||by;by=by.ownerDocument||by;if(bx.length===1&&typeof bA==="string"&&bA.length<512&&by===ak&&bA.charAt(0)==="<"&&!I.test(bA)&&(C.support.checkClone||!o.test(bA))&&(C.support.html5Clone||!ac.test(bA))){bu=true;bw=C.fragments[bA];bz=bw!==G}if(!bw){bw=by.createDocumentFragment();C.clean(bx,by,bw,bv);if(bu){C.fragments[bA]=bz&&bw}}return{fragment:bw,cacheable:bu}};C.fragments={};C.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(bu,bv){C.fn[bu]=function(bw){var by,bA=0,bz=[],bC=C(bw),bx=bC.length,bB=this.length===1&&this[0].parentNode;if((bB==null||bB&&bB.nodeType===11&&bB.childNodes.length===1)&&bx===1){bC[bv](this[0]);return this}else{for(;bA<bx;bA++){by=(bA>0?this.clone(true):this).get();C(bC[bA])[bv](by);bz=bz.concat(by)}return this.pushStack(bz,bu,bC.selector)}}});function bk(bu){if(typeof bu.getElementsByTagName!=="undefined"){return bu.getElementsByTagName("*")}else{if(typeof bu.querySelectorAll!=="undefined"){return bu.querySelectorAll("*")}else{return[]}}}function al(bu){if(R.test(bu.type)){bu.defaultChecked=bu.checked}}C.extend({clone:function(by,bA,bw){var bu,bv,bx,bz;if(C.support.html5Clone||C.isXMLDoc(by)||!ac.test("<"+by.nodeName+">")){bz=by.cloneNode(true)}else{bg.innerHTML=by.outerHTML;bg.removeChild(bz=bg.firstChild)}if((!C.support.noCloneEvent||!C.support.noCloneChecked)&&(by.nodeType===1||by.nodeType===11)&&!C.isXMLDoc(by)){ab(by,bz);bu=bk(by);bv=bk(bz);for(bx=0;bu[bx];++bx){if(bv[bx]){ab(bu[bx],bv[bx])}}}if(bA){r(by,bz);if(bw){bu=bk(by);bv=bk(bz);for(bx=0;bu[bx];++bx){r(bu[bx],bv[bx])}}}bu=bv=null;return bz},clean:function(bH,bw,bu,bx){var bE,bD,bG,bL,bA,bK,bB,by,bv,bF,bJ,bC,bz=bw===ak&&T,bI=[];if(!bw||typeof bw.createDocumentFragment==="undefined"){bw=ak}for(bE=0;(bG=bH[bE])!=null;bE++){if(typeof bG==="number"){bG+=""}if(!bG){continue}if(typeof bG==="string"){if(!P.test(bG)){bG=bw.createTextNode(bG)}else{bz=bz||a(bw);bB=bw.createElement("div");bz.appendChild(bB);bG=bG.replace(L,"<$1></$2>");bL=(c.exec(bG)||["",""])[1].toLowerCase();bA=am[bL]||am._default;bK=bA[0];bB.innerHTML=bA[1]+bG+bA[2];while(bK--){bB=bB.lastChild}if(!C.support.tbody){by=v.test(bG);bv=bL==="table"&&!by?bB.firstChild&&bB.firstChild.childNodes:bA[1]==="<table>"&&!by?bB.childNodes:[];for(bD=bv.length-1;bD>=0;--bD){if(C.nodeName(bv[bD],"tbody")&&!bv[bD].childNodes.length){bv[bD].parentNode.removeChild(bv[bD])}}}if(!C.support.leadingWhitespace&&ah.test(bG)){bB.insertBefore(bw.createTextNode(ah.exec(bG)[0]),bB.firstChild)}bG=bB.childNodes;bB.parentNode.removeChild(bB)}}if(bG.nodeType){bI.push(bG)}else{C.merge(bI,bG)}}if(bB){bG=bB=bz=null}if(!C.support.appendChecked){for(bE=0;(bG=bI[bE])!=null;bE++){if(C.nodeName(bG,"input")){al(bG)}else{if(typeof bG.getElementsByTagName!=="undefined"){C.grep(bG.getElementsByTagName("input"),al)}}}}if(bu){bJ=function(bM){if(!bM.type||bp.test(bM.type)){return bx?bx.push(bM.parentNode?bM.parentNode.removeChild(bM):bM):bu.appendChild(bM)}};for(bE=0;(bG=bI[bE])!=null;bE++){if(!(C.nodeName(bG,"script")&&bJ(bG))){bu.appendChild(bG);if(typeof bG.getElementsByTagName!=="undefined"){bC=C.grep(C.merge([],bG.getElementsByTagName("script")),bJ);bI.splice.apply(bI,[bE+1,0].concat(bC));bE+=bC.length}}}}return bI},cleanData:function(bv,bD){var by,bw,bx,bC,bz=0,bE=C.expando,bu=C.cache,bA=C.support.deleteExpando,bB=C.event.special;for(;(bx=bv[bz])!=null;bz++){if(bD||C.acceptData(bx)){bw=bx[bE];by=bw&&bu[bw];if(by){if(by.events){for(bC in by.events){if(bB[bC]){C.event.remove(bx,bC)}else{C.removeEvent(bx,bC,by.handle)}}}if(bu[bw]){delete bu[bw];if(bA){delete bx[bE]}else{if(bx.removeAttribute){bx.removeAttribute(bE)}else{bx[bE]=null}}C.deletedIds.push(bw)}}}}}});(function(){var bu,bv;C.uaMatch=function(bx){bx=bx.toLowerCase();var bw=/(chrome)[ \/]([\w.]+)/.exec(bx)||/(webkit)[ \/]([\w.]+)/.exec(bx)||/(opera)(?:.*version|)[ \/]([\w.]+)/.exec(bx)||/(msie) ([\w.]+)/.exec(bx)||bx.indexOf("compatible")<0&&/(mozilla)(?:.*? rv:([\w.]+)|)/.exec(bx)||[];return{browser:bw[1]||"",version:bw[2]||"0"}};bu=C.uaMatch(bt.userAgent);bv={};if(bu.browser){bv[bu.browser]=true;bv.version=bu.version}if(bv.chrome){bv.webkit=true}else{if(bv.webkit){bv.safari=true}}C.browser=bv;C.sub=function(){function bx(bz,bA){return new bx.fn.init(bz,bA)}C.extend(true,bx,this);bx.superclass=this;bx.fn=bx.prototype=this();bx.fn.constructor=bx;bx.sub=this.sub;bx.fn.init=function by(bz,bA){if(bA&&bA instanceof C&&!(bA instanceof bx)){bA=bx(bA)}return C.fn.init.call(this,bz,bA,bw)};bx.fn.init.prototype=bx.fn;var bw=bx(ak);return bx}})();var Q,bc,l,ad=/alpha\([^)]*\)/i,aj=/opacity=([^)]*)/,w=/^(top|right|bottom|left)$/,ai=/^(none|table(?!-c[ea]).+)/,av=/^margin/,i=new RegExp("^("+aE+")(.*)$","i"),aV=new RegExp("^("+aE+")(?!px)[a-z%]+$","i"),E=new RegExp("^([-+])=("+aE+")","i"),J={BODY:"block"},ba={position:"absolute",visibility:"hidden",display:"block"},aL={letterSpacing:0,fontWeight:400},D=["Top","Right","Bottom","Left"],O=["Webkit","O","Moz","ms"],be=C.fn.toggle;function a2(bx,bv){if(bv in bx){return bv}var by=bv.charAt(0).toUpperCase()+bv.slice(1),bu=bv,bw=O.length;while(bw--){bv=O[bw]+by;if(bv in bx){return bv}}return bu}function ap(bv,bu){bv=bu||bv;return C.css(bv,"display")==="none"||!C.contains(bv.ownerDocument,bv)}function bb(bz,bu){var by,bA,bv=[],bw=0,bx=bz.length;for(;bw<bx;bw++){by=bz[bw];if(!by.style){continue}bv[bw]=C._data(by,"olddisplay");if(bu){if(!bv[bw]&&by.style.display==="none"){by.style.display=""}if(by.style.display===""&&ap(by)){bv[bw]=C._data(by,"olddisplay",aN(by.nodeName))}}else{bA=Q(by,"display");if(!bv[bw]&&bA!=="none"){C._data(by,"olddisplay",bA)}}}for(bw=0;bw<bx;bw++){by=bz[bw];if(!by.style){continue}if(!bu||by.style.display==="none"||by.style.display===""){by.style.display=bu?bv[bw]||"":"none"}}return bz}C.fn.extend({css:function(bu,bv){return C.access(this,function(bx,bw,by){return by!==G?C.style(bx,bw,by):C.css(bx,bw)},bu,bv,arguments.length>1)},show:function(){return bb(this,true)},hide:function(){return bb(this)},toggle:function(bw,bv){var bu=typeof bw==="boolean";if(C.isFunction(bw)&&C.isFunction(bv)){return be.apply(this,arguments)}return this.each(function(){if(bu?bw:ap(this)){C(this).show()}else{C(this).hide()}})}});C.extend({cssHooks:{opacity:{get:function(bw,bv){if(bv){var bu=Q(bw,"opacity");return bu===""?"1":bu}}}},cssNumber:{fillOpacity:true,fontWeight:true,lineHeight:true,opacity:true,orphans:true,widows:true,zIndex:true,zoom:true},cssProps:{"float":C.support.cssFloat?"cssFloat":"styleFloat"},style:function(bw,bv,bC,bx){if(!bw||bw.nodeType===3||bw.nodeType===8||!bw.style){return}var bA,bB,bD,by=C.camelCase(bv),bu=bw.style;bv=C.cssProps[by]||(C.cssProps[by]=a2(bu,by));bD=C.cssHooks[bv]||C.cssHooks[by];if(bC!==G){bB=typeof bC;if(bB==="string"&&(bA=E.exec(bC))){bC=(bA[1]+1)*bA[2]+parseFloat(C.css(bw,bv));bB="number"}if(bC==null||bB==="number"&&isNaN(bC)){return}if(bB==="number"&&!C.cssNumber[by]){bC+="px"}if(!bD||!("set" in bD)||(bC=bD.set(bw,bC,bx))!==G){try{bu[bv]=bC}catch(bz){}}}else{if(bD&&"get" in bD&&(bA=bD.get(bw,false,bx))!==G){return bA}return bu[bv]}},css:function(bA,by,bz,bv){var bB,bx,bu,bw=C.camelCase(by);by=C.cssProps[bw]||(C.cssProps[bw]=a2(bA.style,bw));bu=C.cssHooks[by]||C.cssHooks[bw];if(bu&&"get" in bu){bB=bu.get(bA,true,bv)}if(bB===G){bB=Q(bA,by)}if(bB==="normal"&&by in aL){bB=aL[by]}if(bz||bv!==G){bx=parseFloat(bB);return bz||C.isNumeric(bx)?bx||0:bB}return bB},swap:function(by,bx,bz){var bw,bv,bu={};for(bv in bx){bu[bv]=by.style[bv];by.style[bv]=bx[bv]}bw=bz.call(by);for(bv in bx){by.style[bv]=bu[bv]}return bw}});if(bd.getComputedStyle){Q=function(bB,bv){var bu,by,bx,bA,bz=bd.getComputedStyle(bB,null),bw=bB.style;if(bz){bu=bz.getPropertyValue(bv)||bz[bv];if(bu===""&&!C.contains(bB.ownerDocument,bB)){bu=C.style(bB,bv)}if(aV.test(bu)&&av.test(bv)){by=bw.width;bx=bw.minWidth;bA=bw.maxWidth;bw.minWidth=bw.maxWidth=bw.width=bu;bu=bz.width;bw.width=by;bw.minWidth=bx;bw.maxWidth=bA}}return bu}}else{if(ak.documentElement.currentStyle){Q=function(by,bw){var bz,bu,bv=by.currentStyle&&by.currentStyle[bw],bx=by.style;if(bv==null&&bx&&bx[bw]){bv=bx[bw]}if(aV.test(bv)&&!w.test(bw)){bz=bx.left;bu=by.runtimeStyle&&by.runtimeStyle.left;if(bu){by.runtimeStyle.left=by.currentStyle.left}bx.left=bw==="fontSize"?"1em":bv;bv=bx.pixelLeft+"px";bx.left=bz;if(bu){by.runtimeStyle.left=bu}}return bv===""?"auto":bv}}}function aO(bu,bw,bx){var bv=i.exec(bw);return bv?Math.max(0,bv[1]-(bx||0))+(bv[2]||"px"):bw}function aZ(bx,bv,bu,bz){var bw=bu===(bz?"border":"content")?4:bv==="width"?1:0,by=0;for(;bw<4;bw+=2){if(bu==="margin"){by+=C.css(bx,bu+D[bw],true)}if(bz){if(bu==="content"){by-=parseFloat(Q(bx,"padding"+D[bw]))||0}if(bu!=="margin"){by-=parseFloat(Q(bx,"border"+D[bw]+"Width"))||0}}else{by+=parseFloat(Q(bx,"padding"+D[bw]))||0;if(bu!=="padding"){by+=parseFloat(Q(bx,"border"+D[bw]+"Width"))||0}}}return by}function Y(bx,bv,bu){var by=bv==="width"?bx.offsetWidth:bx.offsetHeight,bw=true,bz=C.support.boxSizing&&C.css(bx,"boxSizing")==="border-box";if(by<=0||by==null){by=Q(bx,bv);if(by<0||by==null){by=bx.style[bv]}if(aV.test(by)){return by}bw=bz&&(C.support.boxSizingReliable||by===bx.style[bv]);by=parseFloat(by)||0}return(by+aZ(bx,bv,bu||(bz?"border":"content"),bw))+"px"}function aN(bw){if(J[bw]){return J[bw]}var bu=C("<"+bw+">").appendTo(ak.body),bv=bu.css("display");bu.remove();if(bv==="none"||bv===""){bc=ak.body.appendChild(bc||C.extend(ak.createElement("iframe"),{frameBorder:0,width:0,height:0}));if(!l||!bc.createElement){l=(bc.contentWindow||bc.contentDocument).document;l.write("<!doctype html><html><body>");l.close()}bu=l.body.appendChild(l.createElement(bw));bv=Q(bu,"display");ak.body.removeChild(bc)}J[bw]=bv;return bv}C.each(["height","width"],function(bv,bu){C.cssHooks[bu]={get:function(by,bx,bw){if(bx){if(by.offsetWidth===0&&ai.test(Q(by,"display"))){return C.swap(by,ba,function(){return Y(by,bu,bw)})}else{return Y(by,bu,bw)}}},set:function(bx,by,bw){return aO(bx,by,bw?aZ(bx,bu,bw,C.support.boxSizing&&C.css(bx,"boxSizing")==="border-box"):0)}}});if(!C.support.opacity){C.cssHooks.opacity={get:function(bv,bu){return aj.test((bu&&bv.currentStyle?bv.currentStyle.filter:bv.style.filter)||"")?(0.01*parseFloat(RegExp.$1))+"":bu?"1":""},set:function(by,bz){var bx=by.style,bv=by.currentStyle,bu=C.isNumeric(bz)?"alpha(opacity="+bz*100+")":"",bw=bv&&bv.filter||bx.filter||"";bx.zoom=1;if(bz>=1&&C.trim(bw.replace(ad,""))===""&&bx.removeAttribute){bx.removeAttribute("filter");if(bv&&!bv.filter){return}}bx.filter=ad.test(bw)?bw.replace(ad,bu):bw+" "+bu}}}C(function(){if(!C.support.reliableMarginRight){C.cssHooks.marginRight={get:function(bv,bu){return C.swap(bv,{display:"inline-block"},function(){if(bu){return Q(bv,"marginRight")}})}}}if(!C.support.pixelPosition&&C.fn.position){C.each(["top","left"],function(bu,bv){C.cssHooks[bv]={get:function(by,bx){if(bx){var bw=Q(by,bv);return aV.test(bw)?C(by).position()[bv]+"px":bw}}}})}});if(C.expr&&C.expr.filters){C.expr.filters.hidden=function(bu){return(bu.offsetWidth===0&&bu.offsetHeight===0)||(!C.support.reliableHiddenOffsets&&((bu.style&&bu.style.display)||Q(bu,"display"))==="none")};C.expr.filters.visible=function(bu){return !C.expr.filters.hidden(bu)}}C.each({margin:"",padding:"",border:"Width"},function(bu,bv){C.cssHooks[bu+bv]={expand:function(by){var bx,bz=typeof by==="string"?by.split(" "):[by],bw={};for(bx=0;bx<4;bx++){bw[bu+D[bx]+bv]=bz[bx]||bz[bx-2]||bz[0]}return bw}};if(!av.test(bu)){C.cssHooks[bu+bv].set=aO}});var g=/%20/g,af=/\[\]$/,br=/\r?\n/g,aU=/^(?:color|date|datetime|datetime-local|email|hidden|month|number|password|range|search|tel|text|time|url|week)$/i,p=/^(?:select|textarea)/i;C.fn.extend({serialize:function(){return C.param(this.serializeArray())},serializeArray:function(){return this.map(function(){return this.elements?C.makeArray(this.elements):this}).filter(function(){return this.name&&!this.disabled&&(this.checked||p.test(this.nodeName)||aU.test(this.type))}).map(function(bu,bv){var bw=C(this).val();return bw==null?null:C.isArray(bw)?C.map(bw,function(by,bx){return{name:bv.name,value:by.replace(br,"\r\n")}}):{name:bv.name,value:bw.replace(br,"\r\n")}}).get()}});C.param=function(bu,bw){var bx,bv=[],by=function(bz,bA){bA=C.isFunction(bA)?bA():(bA==null?"":bA);bv[bv.length]=encodeURIComponent(bz)+"="+encodeURIComponent(bA)};if(bw===G){bw=C.ajaxSettings&&C.ajaxSettings.traditional}if(C.isArray(bu)||(bu.jqx&&!C.isPlainObject(bu))){C.each(bu,function(){by(this.name,this.value)})}else{for(bx in bu){s(bx,bu[bx],bw,by)}}return bv.join("&").replace(g,"+")};function s(bw,by,bv,bx){var bu;if(C.isArray(by)){C.each(by,function(bA,bz){if(bv||af.test(bw)){bx(bw,bz)}else{s(bw+"["+(typeof bz==="object"?bA:"")+"]",bz,bv,bx)}})}else{if(!bv&&C.type(by)==="object"){for(bu in by){s(bw+"["+bu+"]",by[bu],bv,bx)}}else{bx(bw,by)}}}if(C.support.ajax){C.ajaxTransport(function(bu){if(!bu.crossDomain||C.support.cors){var bv;return{send:function(bB,bw){var bz,by,bA=bu.xhr();if(bu.username){bA.open(bu.type,bu.url,bu.async,bu.username,bu.password)}else{bA.open(bu.type,bu.url,bu.async)}if(bu.xhrFields){for(by in bu.xhrFields){bA[by]=bu.xhrFields[by]}}if(bu.mimeType&&bA.overrideMimeType){bA.overrideMimeType(bu.mimeType)}if(!bu.crossDomain&&!bB["X-Requested-With"]){bB["X-Requested-With"]="XMLHttpRequest"}try{for(by in bB){bA.setRequestHeader(by,bB[by])}}catch(bx){}bA.send((bu.hasContent&&bu.data)||null);bv=function(bK,bE){var bF,bD,bC,bI,bH;try{if(bv&&(bE||bA.readyState===4)){bv=G;if(bz){bA.onreadystatechange=C.noop;if(xhrOnUnloadAbort){delete xhrCallbacks[bz]}}if(bE){if(bA.readyState!==4){bA.abort()}}else{bF=bA.status;bC=bA.getAllResponseHeaders();bI={};bH=bA.responseXML;if(bH&&bH.documentElement){bI.xml=bH}try{bI.text=bA.responseText}catch(bJ){}try{bD=bA.statusText}catch(bJ){bD=""}if(!bF&&bu.isLocal&&!bu.crossDomain){bF=bI.text?200:404}else{if(bF===1223){bF=204}}}}}catch(bG){if(!bE){bw(-1,bG)}}if(bI){bw(bF,bD,bI,bC)}};if(!bu.async){bv()}else{if(bA.readyState===4){setTimeout(bv,0)}else{bz=++xhrId;if(xhrOnUnloadAbort){if(!xhrCallbacks){xhrCallbacks={};C(bd).unload(xhrOnUnloadAbort)}xhrCallbacks[bz]=bv}bA.onreadystatechange=bv}}},abort:function(){if(bv){bv(0,1)}}}}})}var a6,a1,ar=/^(?:toggle|show|hide)$/,aM=new RegExp("^(?:([-+])=|)("+aE+")([a-z%]*)$","i"),a7=/queueHooks$/,k=[bm],H={"*":[function(bu,bB){var bx,bC,bD=this.createTween(bu,bB),by=aM.exec(bB),bz=bD.cur(),bv=+bz||0,bw=1,bA=20;if(by){bx=+by[2];bC=by[3]||(C.cssNumber[bu]?"":"px");if(bC!=="px"&&bv){bv=C.css(bD.elem,bu,true)||bx||1;do{bw=bw||".5";bv=bv/bw;C.style(bD.elem,bu,bv+bC)}while(bw!==(bw=bD.cur()/bz)&&bw!==1&&--bA)}bD.unit=bC;bD.start=bv;bD.end=by[1]?bv+(by[1]+1)*bx:bx}return bD}]};function bl(){setTimeout(function(){a6=G},0);return(a6=C.now())}function Z(bv,bu){C.each(bu,function(bA,by){var bz=(H[bA]||[]).concat(H["*"]),bw=0,bx=bz.length;for(;bw<bx;bw++){if(bz[bw].call(bv,bA,by)){return}}})}function bj(bw,bA,bD){var bE,bz=0,bu=0,bv=k.length,bC=C.Deferred().always(function(){delete by.elem}),by=function(){var bK=a6||bl(),bH=Math.max(0,bx.startTime+bx.duration-bK),bF=bH/bx.duration||0,bJ=1-bF,bG=0,bI=bx.tweens.length;for(;bG<bI;bG++){bx.tweens[bG].run(bJ)}bC.notifyWith(bw,[bx,bJ,bH]);if(bJ<1&&bI){return bH}else{bC.resolveWith(bw,[bx]);return false}},bx=bC.promise({elem:bw,props:C.extend({},bA),opts:C.extend(true,{specialEasing:{}},bD),originalProperties:bA,originalOptions:bD,startTime:a6||bl(),duration:bD.duration,tweens:[],createTween:function(bI,bF,bH){var bG=C.Tween(bw,bx.opts,bI,bF,bx.opts.specialEasing[bI]||bx.opts.easing);bx.tweens.push(bG);return bG},stop:function(bG){var bF=0,bH=bG?bx.tweens.length:0;for(;bF<bH;bF++){bx.tweens[bF].run(1)}if(bG){bC.resolveWith(bw,[bx,bG])}else{bC.rejectWith(bw,[bx,bG])}return this}}),bB=bx.props;aW(bB,bx.opts.specialEasing);for(;bz<bv;bz++){bE=k[bz].call(bx,bw,bB,bx.opts);if(bE){return bE}}Z(bx,bB);if(C.isFunction(bx.opts.start)){bx.opts.start.call(bw,bx)}C.fx.timer(C.extend(by,{anim:bx,queue:bx.opts.queue,elem:bw}));return bx.progress(bx.opts.progress).done(bx.opts.done,bx.opts.complete).fail(bx.opts.fail).always(bx.opts.always)}function aW(bx,bz){var bw,bv,bA,by,bu;for(bw in bx){bv=C.camelCase(bw);bA=bz[bv];by=bx[bw];if(C.isArray(by)){bA=by[1];by=bx[bw]=by[0]}if(bw!==bv){bx[bv]=by;delete bx[bw]}bu=C.cssHooks[bv];if(bu&&"expand" in bu){by=bu.expand(by);delete bx[bv];for(bw in by){if(!(bw in bx)){bx[bw]=by[bw];bz[bw]=bA}}}else{bz[bv]=bA}}}C.Animation=C.extend(bj,{tweener:function(bv,by){if(C.isFunction(bv)){by=bv;bv=["*"]}else{bv=bv.split(" ")}var bx,bu=0,bw=bv.length;for(;bu<bw;bu++){bx=bv[bu];H[bx]=H[bx]||[];H[bx].unshift(by)}},prefilter:function(bv,bu){if(bu){k.unshift(bv)}else{k.push(bv)}}});function bm(by,bE,bu){var bD,bw,bG,bx,bK,bA,bJ,bI,bH,bz=this,bv=by.style,bF={},bC=[],bB=by.nodeType&&ap(by);if(!bu.queue){bI=C._queueHooks(by,"fx");if(bI.unqueued==null){bI.unqueued=0;bH=bI.empty.fire;bI.empty.fire=function(){if(!bI.unqueued){bH()}}}bI.unqueued++;bz.always(function(){bz.always(function(){bI.unqueued--;if(!C.queue(by,"fx").length){bI.empty.fire()}})})}if(by.nodeType===1&&("height" in bE||"width" in bE)){bu.overflow=[bv.overflow,bv.overflowX,bv.overflowY];if(C.css(by,"display")==="inline"&&C.css(by,"float")==="none"){if(!C.support.inlineBlockNeedsLayout||aN(by.nodeName)==="inline"){bv.display="inline-block"}else{bv.zoom=1}}}if(bu.overflow){bv.overflow="hidden";if(!C.support.shrinkWrapBlocks){bz.done(function(){bv.overflow=bu.overflow[0];bv.overflowX=bu.overflow[1];bv.overflowY=bu.overflow[2]})}}for(bD in bE){bG=bE[bD];if(ar.exec(bG)){delete bE[bD];bA=bA||bG==="toggle";if(bG===(bB?"hide":"show")){continue}bC.push(bD)}}bx=bC.length;if(bx){bK=C._data(by,"fxshow")||C._data(by,"fxshow",{});if("hidden" in bK){bB=bK.hidden}if(bA){bK.hidden=!bB}if(bB){C(by).show()}else{bz.done(function(){C(by).hide()})}bz.done(function(){var bL;C.removeData(by,"fxshow",true);for(bL in bF){C.style(by,bL,bF[bL])}});for(bD=0;bD<bx;bD++){bw=bC[bD];bJ=bz.createTween(bw,bB?bK[bw]:0);bF[bw]=bK[bw]||C.style(by,bw);if(!(bw in bK)){bK[bw]=bJ.start;if(bB){bJ.end=bJ.start;bJ.start=bw==="width"||bw==="height"?1:0}}}}}function u(bw,bv,by,bu,bx){return new u.prototype.init(bw,bv,by,bu,bx)}C.Tween=u;u.prototype={constructor:u,init:function(bx,bv,bz,bu,by,bw){this.elem=bx;this.prop=bz;this.easing=by||"swing";this.options=bv;this.start=this.now=this.cur();this.end=bu;this.unit=bw||(C.cssNumber[bz]?"":"px")},cur:function(){var bu=u.propHooks[this.prop];return bu&&bu.get?bu.get(this):u.propHooks._default.get(this)},run:function(bw){var bv,bu=u.propHooks[this.prop];if(this.options.duration){this.pos=bv=C.easing[this.easing](bw,this.options.duration*bw,0,1,this.options.duration)}else{this.pos=bv=bw}this.now=(this.end-this.start)*bv+this.start;if(this.options.step){this.options.step.call(this.elem,this.now,this)}if(bu&&bu.set){bu.set(this)}else{u.propHooks._default.set(this)}return this}};u.prototype.init.prototype=u.prototype;u.propHooks={_default:{get:function(bv){var bu;if(bv.elem[bv.prop]!=null&&(!bv.elem.style||bv.elem.style[bv.prop]==null)){return bv.elem[bv.prop]}bu=C.css(bv.elem,bv.prop,false,"");return !bu||bu==="auto"?0:bu},set:function(bu){if(C.fx.step[bu.prop]){C.fx.step[bu.prop](bu)}else{if(bu.elem.style&&(bu.elem.style[C.cssProps[bu.prop]]!=null||C.cssHooks[bu.prop])){C.style(bu.elem,bu.prop,bu.now+bu.unit)}else{bu.elem[bu.prop]=bu.now}}}}};u.propHooks.scrollTop=u.propHooks.scrollLeft={set:function(bu){if(bu.elem.nodeType&&bu.elem.parentNode){bu.elem[bu.prop]=bu.now}}};C.each(["toggle","show","hide"],function(bv,bu){var bw=C.fn[bu];C.fn[bu]=function(bx,bz,by){return bx==null||typeof bx==="boolean"||(!bv&&C.isFunction(bx)&&C.isFunction(bz))?bw.apply(this,arguments):this.animate(aY(bu,true),bx,bz,by)}});C.fn.extend({fadeTo:function(bu,bx,bw,bv){return this.filter(ap).css("opacity",0).show().end().animate({opacity:bx},bu,bw,bv)},animate:function(bA,bx,bz,by){var bw=C.isEmptyObject(bA),bu=C.speed(bx,bz,by),bv=function(){var bB=bj(this,C.extend({},bA),bu);if(bw){bB.stop(true)}};return bw||bu.queue===false?this.each(bv):this.queue(bu.queue,bv)},stop:function(bw,bv,bu){var bx=function(by){var bz=by.stop;delete by.stop;bz(bu)};if(typeof bw!=="string"){bu=bv;bv=bw;bw=G}if(bv&&bw!==false){this.queue(bw||"fx",[])}return this.each(function(){var bB=true,by=bw!=null&&bw+"queueHooks",bA=C.timers,bz=C._data(this);if(by){if(bz[by]&&bz[by].stop){bx(bz[by])}}else{for(by in bz){if(bz[by]&&bz[by].stop&&a7.test(by)){bx(bz[by])}}}for(by=bA.length;by--;){if(bA[by].elem===this&&(bw==null||bA[by].queue===bw)){bA[by].anim.stop(bu);bB=false;bA.splice(by,1)}}if(bB||!bu){C.dequeue(this,bw)}})}});function aY(bw,by){var bx,bu={height:bw},bv=0;by=by?1:0;for(;bv<4;bv+=2-by){bx=D[bv];bu["margin"+bx]=bu["padding"+bx]=bw}if(by){bu.opacity=bu.width=bw}return bu}C.each({slideDown:aY("show"),slideUp:aY("hide"),slideToggle:aY("toggle"),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"},fadeToggle:{opacity:"toggle"}},function(bu,bv){C.fn[bu]=function(bw,by,bx){return this.animate(bv,bw,by,bx)}});C.speed=function(bw,bx,bv){var bu=bw&&typeof bw==="object"?C.extend({},bw):{complete:bv||!bv&&bx||C.isFunction(bw)&&bw,duration:bw,easing:bv&&bx||bx&&!C.isFunction(bx)&&bx};bu.duration=C.fx.off?0:typeof bu.duration==="number"?bu.duration:bu.duration in C.fx.speeds?C.fx.speeds[bu.duration]:C.fx.speeds._default;if(bu.queue==null||bu.queue===true){bu.queue="fx"}bu.old=bu.complete;bu.complete=function(){if(C.isFunction(bu.old)){bu.old.call(this)}if(bu.queue){C.dequeue(this,bu.queue)}};return bu};C.easing={linear:function(bu){return bu},swing:function(bu){return 0.5-Math.cos(bu*Math.PI)/2}};C.timers=[];C.fx=u.prototype.init;C.fx.tick=function(){var bw,bv=C.timers,bu=0;a6=C.now();for(;bu<bv.length;bu++){bw=bv[bu];if(!bw()&&bv[bu]===bw){bv.splice(bu--,1)}}if(!bv.length){C.fx.stop()}a6=G};C.fx.timer=function(bu){if(bu()&&C.timers.push(bu)&&!a1){a1=setInterval(C.fx.tick,C.fx.interval)}};C.fx.interval=13;C.fx.stop=function(){clearInterval(a1);a1=null};C.fx.speeds={slow:600,fast:200,_default:400};C.fx.step={};if(C.expr&&C.expr.filters){C.expr.filters.animated=function(bu){return C.grep(C.timers,function(bv){return bu===bv.elem}).length}}var V=/^(?:body|html)$/i;C.fn.offset=function(bE){if(arguments.length){return bE===G?this:this.each(function(bF){C.offset.setOffset(this,bE,bF)})}var bv,bA,bB,by,bC,bu,bx,bz={top:0,left:0},bw=this[0],bD=bw&&bw.ownerDocument;if(!bD){return}if((bA=bD.body)===bw){return C.offset.bodyOffset(bw)}bv=bD.documentElement;if(!C.contains(bv,bw)){return bz}if(typeof bw.getBoundingClientRect!=="undefined"){bz=bw.getBoundingClientRect()}bB=aC(bD);by=bv.clientTop||bA.clientTop||0;bC=bv.clientLeft||bA.clientLeft||0;bu=bB.pageYOffset||bv.scrollTop;bx=bB.pageXOffset||bv.scrollLeft;return{top:bz.top+bu-by,left:bz.left+bx-bC}};C.offset={bodyOffset:function(bu){var bw=bu.offsetTop,bv=bu.offsetLeft;if(C.support.doesNotIncludeMarginInBodyOffset){bw+=parseFloat(C.css(bu,"marginTop"))||0;bv+=parseFloat(C.css(bu,"marginLeft"))||0}return{top:bw,left:bv}},setOffset:function(bx,bG,bA){var bB=C.css(bx,"position");if(bB==="static"){bx.style.position="relative"}var bz=C(bx),bv=bz.offset(),bu=C.css(bx,"top"),bE=C.css(bx,"left"),bF=(bB==="absolute"||bB==="fixed")&&C.inArray("auto",[bu,bE])>-1,bD={},bC={},bw,by;if(bF){bC=bz.position();bw=bC.top;by=bC.left}else{bw=parseFloat(bu)||0;by=parseFloat(bE)||0}if(C.isFunction(bG)){bG=bG.call(bx,bA,bv)}if(bG.top!=null){bD.top=(bG.top-bv.top)+bw}if(bG.left!=null){bD.left=(bG.left-bv.left)+by}if("using" in bG){bG.using.call(bx,bD)}else{bz.css(bD)}}};C.fn.extend({isRendered:function(){var bv=this;var bu=this[0];if(bu.parentNode==null||(bu.offsetWidth===0||bu.offsetHeight===0)){return false}return true},getSizeFromStyle:function(){var by=this;var bx=null;var bu=null;var bw=this[0];var bv;if(bw.style.width){bx=bw.style.width}if(bw.style.height){bu=bw.style.height}if(bd.getComputedStyle){bv=getComputedStyle(bw,null)}else{bv=bw.currentStyle}if(bv){if(bv.width){bx=bv.width}if(bv.height){bu=bv.height}}if(bx==="0px"){bx=0}if(bu==="0px"){bu=0}if(bx===null){bx=0}if(bu===null){bu=0}return{width:bx,height:bu}},initAnimate:function(){},sizeStyleChanged:function(bx){var bw=this;var by;var bu=function(bz){var bA=by;if(bz&&bz[0]&&bz[0].attributeName==="style"&&bz[0].type==="attributes"){if(bA.element.offsetWidth!==bA.offsetWidth||bA.element.offsetHeight!==bA.offsetHeight){bA.offsetWidth=bA.element.offsetWidth;bA.offsetHeight=bA.element.offsetHeight;if(bw.isRendered()){bA.callback()}}}};by={element:bw[0],offsetWidth:bw[0].offsetWidth,offsetHeight:bw[0].offsetHeight,callback:bx};try{if(!bw.elementStyleObserver){bw.elementStyleObserver=new MutationObserver(bu);bw.elementStyleObserver.observe(bw[0],{attributes:true,childList:false,characterData:false})}}catch(bv){}},position:function(){if(!this[0]){return}var bw=this[0],bv=this.offsetParent(),bx=this.offset(),bu=V.test(bv[0].nodeName)?{top:0,left:0}:bv.offset();bx.top-=parseFloat(C.css(bw,"marginTop"))||0;bx.left-=parseFloat(C.css(bw,"marginLeft"))||0;bu.top+=parseFloat(C.css(bv[0],"borderTopWidth"))||0;bu.left+=parseFloat(C.css(bv[0],"borderLeftWidth"))||0;return{top:bx.top-bu.top,left:bx.left-bu.left}},offsetParent:function(){return this.map(function(){var bu=this.offsetParent||ak.body;while(bu&&(!V.test(bu.nodeName)&&C.css(bu,"position")==="static")){bu=bu.offsetParent}return bu||ak.body})}});C.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(bw,bv){var bu=/Y/.test(bv);C.fn[bw]=function(bx){return C.access(this,function(by,bB,bA){var bz=aC(by);if(bA===G){return bz?(bv in bz)?bz[bv]:bz.document.documentElement[bB]:by[bB]}if(bz){bz.scrollTo(!bu?bA:C(bz).scrollLeft(),bu?bA:C(bz).scrollTop())}else{by[bB]=bA}},bw,bx,arguments.length,null)}});function aC(bu){return C.isWindow(bu)?bu:bu.nodeType===9?bu.defaultView||bu.parentWindow:false}C.each({Height:"height",Width:"width"},function(bu,bv){C.each({padding:"inner"+bu,content:bv,"":"outer"+bu},function(bw,bx){C.fn[bx]=function(bB,bA){var bz=arguments.length&&(bw||typeof bB!=="boolean"),by=bw||(bB===true||bA===true?"margin":"border");return C.access(this,function(bD,bC,bE){var bF;if(C.isWindow(bD)){return bD.document.documentElement["client"+bu]}if(bD.nodeType===9){bF=bD.documentElement;return Math.max(bD.body["scroll"+bu],bF["scroll"+bu],bD.body["offset"+bu],bF["offset"+bu],bF["client"+bu])}return bE===G?C.css(bD,bC,bE,by):C.style(bD,bC,bE,by)},bv,bz?bB:G,bz,null)}})});bd.JQXLite=bd.jqxHelper=C;if(typeof define==="function"&&define.amd&&define.amd.JQXLite){define("jqx",[],function(){return C})}})(window)}(function(a){if(a.jQuery){a.minQuery=a.JQXLite=a.jQuery;return}if(!a.$){a.$=a.minQuery=a.JQXLite}else{a.minQuery=a.JQXLite=a.$}})(window);JQXLite.generateID=function(){var a=function(){return(((1+Math.random())*65536)|0).toString(16).substring(1)};var b="";do{b="jqx"+a()+a()+a()}while($("#"+b).length>0);return b};var jqxBaseFramework=window.jqxBaseFramework=window.minQuery||window.jQuery;(function(b){b.jqx=b.jqx||{};window.jqx=b.jqx;var a={createInstance:function(c,e,g){if(e=="jqxDataAdapter"){var f=g[0];var d=g[1]||{};return new b.jqx.dataAdapter(f,d)}b(c)[e](g||{});return b(c)[e]("getInstance")}};window.jqwidgets=a;b.jqx.define=function(c,d,e){c[d]=function(){if(this.baseType){this.base=new c[this.baseType]();this.base.defineInstance()}this.defineInstance();this.metaInfo()};c[d].prototype.defineInstance=function(){};c[d].prototype.metaInfo=function(){};c[d].prototype.base=null;c[d].prototype.baseType=undefined;if(e&&c[e]){c[d].prototype.baseType=e}};b.jqx.invoke=function(f,e){if(e.length==0){return}var g=typeof(e)==Array||e.length>0?e[0]:e;var d=typeof(e)==Array||e.length>1?Array.prototype.slice.call(e,1):b({}).toArray();while(f[g]==undefined&&f.base!=null){if(f[g]!=undefined&&b.isFunction(f[g])){return f[g].apply(f,d)}if(typeof g=="string"){var c=g.toLowerCase();if(f[c]!=undefined&&b.isFunction(f[c])){return f[c].apply(f,d)}}f=f.base}if(f[g]!=undefined&&b.isFunction(f[g])){return f[g].apply(f,d)}if(typeof g=="string"){var c=g.toLowerCase();if(f[c]!=undefined&&b.isFunction(f[c])){return f[c].apply(f,d)}}return};b.jqx.getByPriority=function(c){var e=undefined;for(var d=0;d<c.length&&e==undefined;d++){if(e==undefined&&c[d]!=undefined){e=c[d]}}return e};b.jqx.hasProperty=function(d,c){if(typeof(c)=="object"){for(var f in c){var e=d;while(e){if(e.hasOwnProperty(f)){return true}if(e.hasOwnProperty(f.toLowerCase())){return true}e=e.base}return false}}else{while(d){if(d.hasOwnProperty(c)){return true}if(d.hasOwnProperty(c.toLowerCase())){return true}d=d.base}}return false};b.jqx.hasFunction=function(f,e){if(e.length==0){return false}if(f==undefined){return false}var g=typeof(e)==Array||e.length>0?e[0]:e;var d=typeof(e)==Array||e.length>1?Array.prototype.slice.call(e,1):{};while(f[g]==undefined&&f.base!=null){if(f[g]&&b.isFunction(f[g])){return true}if(typeof g=="string"){var c=g.toLowerCase();if(f[c]&&b.isFunction(f[c])){return true}}f=f.base}if(f[g]&&b.isFunction(f[g])){return true}if(typeof g=="string"){var c=g.toLowerCase();if(f[c]&&b.isFunction(f[c])){return true}}return false};b.jqx.isPropertySetter=function(d,c){if(c.length==1&&typeof(c[0])=="object"){return true}if(c.length==2&&typeof(c[0])=="string"&&!b.jqx.hasFunction(d,c)){return true}return false};b.jqx.validatePropertySetter=function(g,e,c){if(!b.jqx.propertySetterValidation){return true}if(e.length==1&&typeof(e[0])=="object"){for(var f in e[0]){var h=g;while(!h.hasOwnProperty(f)&&h.base){h=h.base}if(!h||!h.hasOwnProperty(f)){if(!c){var d=h.hasOwnProperty(f.toString().toLowerCase());if(!d){throw"Invalid property: "+f}else{return true}}return false}}return true}if(e.length!=2){if(!c){throw"Invalid property: "+e.length>=0?e[0]:""}return false}while(!g.hasOwnProperty(e[0])&&g.base){g=g.base}if(!g||!g.hasOwnProperty(e[0])){if(!c){throw"Invalid property: "+e[0]}return false}return true};if(!Object.keys){Object.keys=(function(){var e=Object.prototype.hasOwnProperty,f=!({toString:null}).propertyIsEnumerable("toString"),d=["toString","toLocaleString","valueOf","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","constructor"],c=d.length;return function(j){if(typeof j!=="object"&&(typeof j!=="function"||j===null)){throw new TypeError("Object.keys called on non-object")}var g=[],k,h;for(k in j){if(e.call(j,k)){g.push(k)}}if(f){for(h=0;h<c;h++){if(e.call(j,d[h])){g.push(d[h])}}}return g}}())}b.jqx.set=function(f,i){var d=0;if(i.length==1&&typeof(i[0])=="object"){if(f.isInitialized&&Object.keys&&Object.keys(i[0]).length>1){var g=!f.base?f.element:f.base.element;var c=b.data(g,f.widgetName).initArgs;if(c&&JSON&&JSON.stringify&&i[0]&&c[0]){try{if(JSON.stringify(i[0])==JSON.stringify(c[0])){var h=true;b.each(i[0],function(l,m){if(f[l]!=m){h=false;return false}});if(h){return}}}catch(e){}}f.batchUpdate=i[0];var j={};var k={};b.each(i[0],function(l,m){var n=f;while(!n.hasOwnProperty(l)&&n.base!=null){n=n.base}if(n.hasOwnProperty(l)){if(f[l]!=m){j[l]=f[l];k[l]=m;d++}}else{if(n.hasOwnProperty(l.toLowerCase())){if(f[l.toLowerCase()]!=m){j[l.toLowerCase()]=f[l.toLowerCase()];k[l.toLowerCase()]=m;d++}}}});if(d<2){f.batchUpdate=null}}b.each(i[0],function(l,m){var n=f;while(!n.hasOwnProperty(l)&&n.base!=null){n=n.base}if(n.hasOwnProperty(l)){b.jqx.setvalueraiseevent(n,l,m)}else{if(n.hasOwnProperty(l.toLowerCase())){b.jqx.setvalueraiseevent(n,l.toLowerCase(),m)}else{if(b.jqx.propertySetterValidation){throw"jqxCore: invalid property '"+l+"'"}}}});if(f.batchUpdate!=null){f.batchUpdate=null;if(f.propertiesChangedHandler&&d>1){f.propertiesChangedHandler(f,j,k)}}}else{if(i.length==2){while(!f.hasOwnProperty(i[0])&&f.base){f=f.base}if(f.hasOwnProperty(i[0])){b.jqx.setvalueraiseevent(f,i[0],i[1])}else{if(f.hasOwnProperty(i[0].toLowerCase())){b.jqx.setvalueraiseevent(f,i[0].toLowerCase(),i[1])}else{if(b.jqx.propertySetterValidation){throw"jqxCore: invalid property '"+i[0]+"'"}}}}}};b.jqx.setvalueraiseevent=function(d,e,f){var c=d[e];d[e]=f;if(!d.isInitialized){return}if(d.propertyChangedHandler!=undefined){d.propertyChangedHandler(d,e,c,f)}if(d.propertyChangeMap!=undefined&&d.propertyChangeMap[e]!=undefined){d.propertyChangeMap[e](d,e,c,f)}};b.jqx.get=function(f,e){if(e==undefined||e==null){return undefined}if(f.propertyMap){var d=f.propertyMap(e);if(d!=null){return d}}if(f.hasOwnProperty(e)){return f[e]}if(f.hasOwnProperty(e.toLowerCase())){return f[e.toLowerCase()]}var c=undefined;if(typeof(e)==Array){if(e.length!=1){return undefined}c=e[0]}else{if(typeof(e)=="string"){c=e}}while(!f.hasOwnProperty(c)&&f.base){f=f.base}if(f){return f[c]}return undefined};b.jqx.serialize=function(f){var c="";if(b.isArray(f)){c="[";for(var e=0;e<f.length;e++){if(e>0){c+=", "}c+=b.jqx.serialize(f[e])}c+="]"}else{if(typeof(f)=="object"){c="{";var d=0;for(var e in f){if(d++>0){c+=", "}c+=e+": "+b.jqx.serialize(f[e])}c+="}"}else{c=f.toString()}}return c};b.jqx.propertySetterValidation=true;b.jqx.jqxWidgetProxy=function(h,d,c){var e=b(d);var g=b.data(d,h);if(g==undefined){return undefined}var f=g.instance;if(b.jqx.hasFunction(f,c)){return b.jqx.invoke(f,c)}if(b.jqx.isPropertySetter(f,c)){if(b.jqx.validatePropertySetter(f,c)){b.jqx.set(f,c);return undefined}}else{if(typeof(c)=="object"&&c.length==0){return}else{if(typeof(c)=="object"&&c.length==1&&b.jqx.hasProperty(f,c[0])){return b.jqx.get(f,c[0])}else{if(typeof(c)=="string"&&b.jqx.hasProperty(f,c[0])){return b.jqx.get(f,c)}}}}throw"jqxCore: Invalid parameter '"+b.jqx.serialize(c)+"' does not exist."};b.jqx.applyWidget=function(d,f,l,m){var h=false;try{h=window.MSApp!=undefined}catch(g){}var n=b(d);if(!m){m=new b.jqx["_"+f]()}else{m.host=n;m.element=d}if(d.id==""){d.id=b.jqx.utilities.createId()}var k={host:n,element:d,instance:m,initArgs:l};m.widgetName=f;b.data(d,f,k);b.data(d,"jqxWidget",k.instance);var j=new Array();var m=k.instance;while(m){m.isInitialized=false;j.push(m);m=m.base}j.reverse();j[0].theme=b.jqx.theme||"";b.jqx.jqxWidgetProxy(f,d,l);for(var c in j){m=j[c];if(c==0){m.host=n;m.element=d;m.WinJS=h}if(m!=undefined){if(m.definedInstance){m.definedInstance()}if(m.createInstance!=null){if(h){MSApp.execUnsafeLocalFunction(function(){m.createInstance(l)})}else{m.createInstance(l)}}}}for(var c in j){if(j[c]!=undefined){j[c].isInitialized=true}}if(h){MSApp.execUnsafeLocalFunction(function(){k.instance.refresh(true)})}else{k.instance.refresh(true)}};b.jqx.jqxWidget=function(c,d,g){var j=false;try{var l=Array.prototype.slice.call(g,0)}catch(i){var l=""}try{j=window.MSApp!=undefined}catch(i){}var h=c;var m="";if(d){m="_"+d}b.jqx.define(b.jqx,"_"+h,m);var k=new Array();if(!window[h]){var f=function(n){if(n==null){return""}var e=b.type(n);switch(e){case"string":case"number":case"date":case"boolean":case"bool":if(n===null){return""}return n.toString()}var o="";b.each(n,function(q,r){var t=r;if(q>0){o+=", "}o+="[";var p=0;if(b.type(t)=="object"){for(var s in t){if(p>0){o+=", "}o+="{"+s+":"+t[s]+"}";p++}}else{if(p>0){o+=", "}o+="{"+q+":"+t+"}";p++}o+="]"});return o};a[h]=window[h]=function(e,s){var n=[];if(!s){s={}}n.push(s);var o=e;if(b.type(o)==="object"&&e[0]){o=e[0].id;if(o===""){o=e[0].id=b.jqx.utilities.createId()}}else{if(b.type(e)==="object"&&e&&e.nodeName){o=e.id;if(o===""){o=e.id=b.jqx.utilities.createId()}}}if(window.jqxWidgets&&window.jqxWidgets[o]){if(s){b.each(window.jqxWidgets[o],function(t){var u=b(this.element).data();if(u&&u.jqxWidget){b(this.element)[h](s)}})}if(window.jqxWidgets[o].length==1){var q=b(window.jqxWidgets[o][0].widgetInstance.element).data();if(q&&q.jqxWidget){return window.jqxWidgets[o][0]}}var q=b(window.jqxWidgets[o][0].widgetInstance.element).data();if(q&&q.jqxWidget){return window.jqxWidgets[o]}}var p=b(e);if(p.length===0){p=b("<div></div>");if(h==="jqxInput"||h==="jqxPasswordInput"||h==="jqxMaskedInput"){p=b("<input/>")}if(h==="jqxTextArea"){p=b("<textarea></textarea>")}if(h==="jqxButton"||h==="jqxRepeatButton"||h==="jqxToggleButton"){p=b("<button/>")}if(h==="jqxSplitter"){p=b("<div><div>Panel 1</div><div>Panel 2</div></div>")}if(h==="jqxTabs"){p=b("<div><ul><li>Tab 1</li><li>Tab 2</li></ul><div>Content 1</div><div>Content 2</div></div>")}if(h==="jqxRibbon"){p=b("<div><ul><li>Tab 1</li><li>Tab 2</li></ul><div><div>Content 1</div><div>Content 2</div></div></div>")}if(h==="jqxDocking"){p=b("<div><div><div><div>Title 1</div><div>Content 1</div></div></div></div>")}if(h==="jqxWindow"){p=b("<div><div>Title 1</div><div>Content 1</div></div>")}}var r=[];b.each(p,function(w){var y=p[w];b.jqx.applyWidget(y,h,n,undefined);if(!k[h]){var u=b.data(y,"jqxWidget");var x=b.jqx["_"+h].prototype.defineInstance();var v={};if(b.jqx["_"+h].prototype.metaInfo){v=b.jqx["_"+h].prototype.metaInfo()}if(h=="jqxDockingLayout"){x=b.extend(x,b.jqx._jqxLayout.prototype.defineInstance())}if(h=="jqxToggleButton"||h=="jqxRepeatButton"){x=b.extend(x,b.jqx._jqxButton.prototype.defineInstance())}if(h=="jqxTreeGrid"){x=b.extend(x,b.jqx._jqxDataTable.prototype.defineInstance())}var t=function(A){var z=b.data(A,"jqxWidget");this.widgetInstance=z;var B=b.extend(this,z);B.on=B.addEventListener=function(D,E){B.addHandler(!B.base?B.host:B.base.host,D,E)};B.off=B.removeEventListener=function(D){B.removeHandler(!B.base?B.host:B.base.host,D)};for(var C in z){if(b.type(z[C])=="function"){B[C]=b.proxy(z[C],z)}}return B};k[h]=t;b.each(x,function(A,z){Object.defineProperty(t.prototype,A,{get:function(){if(this.widgetInstance){return this.widgetInstance[A]}return z},set:function(H){if(this.widgetInstance&&(this.widgetInstance[A]!=H||A==="width"||A==="height")){var F=this.widgetInstance[A];var E=H;var D=b.type(F);var B=b.type(E);var G=false;if(D!=B||A==="source"||A==="width"||A==="height"){G=true}if(G||(f(F)!=f(E))){var C={};C[A]=H;if(this.widgetInstance.host){this.widgetInstance.host[h](C)}else{this.widgetInstance.base.host[h](C)}this.widgetInstance[A]=H;if(this.widgetInstance.propertyUpdated){this.widgetInstance.propertyUpdated(A,F,H)}}}}})})}var u=new k[h](y);r.push(u);if(!window.jqxWidgets){window.jqxWidgets=new Array()}if(!window.jqxWidgets[o]){window.jqxWidgets[o]=new Array()}window.jqxWidgets[o].push(u)});if(r.length===1){return r[0]}return r}}b.fn[h]=function(){var e=Array.prototype.slice.call(arguments,0);if(e.length==0||(e.length==1&&typeof(e[0])=="object")){if(this.length==0){if(this.selector){throw new Error("Invalid Selector - "+this.selector+"! Please, check whether the used ID or CSS Class name is correct.")}else{throw new Error("Invalid Selector! Please, check whether the used ID or CSS Class name is correct.")}}return this.each(function(){var q=b(this);var p=this;var r=b.data(p,h);if(r==null){b.jqx.applyWidget(p,h,e,undefined)}else{b.jqx.jqxWidgetProxy(h,this,e)}})}else{if(this.length==0){if(this.selector){throw new Error("Invalid Selector - "+this.selector+"! Please, check whether the used ID or CSS Class name is correct.")}else{throw new Error("Invalid Selector! Please, check whether the used ID or CSS Class name is correct.")}}var o=null;var n=0;this.each(function(){var p=b.jqx.jqxWidgetProxy(h,this,e);if(n==0){o=p;n++}else{if(n==1){var q=[];q.push(o);o=q}o.push(p)}})}return o};try{b.extend(b.jqx["_"+h].prototype,Array.prototype.slice.call(g,0)[0])}catch(i){}b.extend(b.jqx["_"+h].prototype,{toThemeProperty:function(e,n){return b.jqx.toThemeProperty(this,e,n)},isMaterialized:function(){if(!this.theme){return false}if(this.theme.indexOf("material")>=0){return true}},isModern:function(){if(!this.theme){return false}if(this.theme.indexOf("light")>=0){return true}if(this.theme==="dark"){return true}},_addBarAndLabel:function(p){var o=this;var e=b("<label></label");e[0].innerHTML=this.placeHolder;e.addClass(o.toThemeProperty("jqx-input-label"));p.after(e);o.label=e;var n=b("<span></span>");p.after(n);n.addClass(o.toThemeProperty("jqx-input-bar"));o.bar=n;o.bar.css("top",this.host.height())}});b.jqx["_"+h].prototype.refresh=function(){if(this.base){this.base.refresh(true)}};b.jqx["_"+h].prototype.createInstance=function(){};b.jqx["_"+h].prototype.addEventHandler=function(n,e){if(this.base){this.base.host.on(n,e)}else{this.host.on(n,e)}};b.jqx["_"+h].prototype.removeEventHandler=function(n,e){if(this.base){this.base.host.off(n)}else{this.host.off(n)}};b.jqx["_"+h].prototype.applyTo=function(o,n){if(!(n instanceof Array)){var e=[];e.push(n);n=e}b.jqx.applyWidget(o,h,n,this)};b.jqx["_"+h].prototype.getInstance=function(){return this};b.jqx["_"+h].prototype.propertyChangeMap={};b.jqx["_"+h].prototype.addHandler=function(p,e,n,o){b.jqx.addHandler(b(p),e,n,o)};b.jqx["_"+h].prototype.removeHandler=function(o,e,n){b.jqx.removeHandler(b(o),e,n)};b.jqx["_"+h].prototype.setOptions=function(){if(!this.host||!this.host.length||this.host.length!=1){return}return b.jqx.jqxWidgetProxy(h,this.host[0],arguments)}};b.jqx.toThemeProperty=function(d,e,j){if(d.theme==""){return e}var h=e.split(" ");var c="";for(var g=0;g<h.length;g++){if(g>0){c+=" "}var f=h[g];if(j!=null&&j){c+=f+"-"+d.theme}else{c+=f+" "+f+"-"+d.theme}}return c};b.jqx.addHandler=function(h,j,f,g){var d=j.split(" ");for(var c=0;c<d.length;c++){var e=d[c];if(window.addEventListener){switch(e){case"mousewheel":if(b.jqx.browser.mozilla){h[0].addEventListener("DOMMouseScroll",f,false)}else{h[0].addEventListener("mousewheel",f,false)}continue;case"mousemove":if(!g){h[0].addEventListener("mousemove",f,false);continue}break;case"touchmove":if(!g){h[0].addEventListener("touchmove",f,false);continue}else{if(g&&g.passive){h[0].addEventListener("touchmove",f,g);continue}}break}}if(g==undefined||g==null){if(h.on){h.on(e,f)}else{h.bind(e,f)}}else{if(h.on){h.on(e,g,f)}else{h.bind(e,g,f)}}}};b.jqx.removeHandler=function(g,h,f){if(!h){if(g.off){g.off()}else{g.unbind()}return}var d=h.split(" ");for(var c=0;c<d.length;c++){var e=d[c];if(window.removeEventListener){switch(e){case"mousewheel":if(b.jqx.browser.mozilla){g[0].removeEventListener("DOMMouseScroll",f,false)}else{g[0].removeEventListener("mousewheel",f,false)}continue;case"mousemove":if(f){g[0].removeEventListener("mousemove",f,false);continue}break;case"touchmove":if(f){g[0].removeEventListener("touchmove",f,false);continue}break}}if(e==undefined){if(g.off){g.off()}else{g.unbind()}continue}if(f==undefined){if(g.off){g.off(e)}else{g.unbind(e)}}else{if(g.off){g.off(e,f)}else{g.unbind(e,f)}}}};b.jqx.credits=b.jqx.credits||"";b.jqx.theme=b.jqx.theme||"";b.jqx.scrollAnimation=b.jqx.scrollAnimation||false;b.jqx.resizeDelay=b.jqx.resizeDelay||10;b.jqx.ready=function(){b(window).trigger("jqxReady")};b.jqx.init=function(){b.each(arguments[0],function(c,d){if(c=="theme"){b.jqx.theme=d}if(c=="scrollBarSize"){b.jqx.utilities.scrollBarSize=d}if(c=="touchScrollBarSize"){b.jqx.utilities.touchScrollBarSize=d}if(c=="scrollBarButtonsVisibility"){b.jqx.utilities.scrollBarButtonsVisibility=d}})};b.jqx.utilities=b.jqx.utilities||{};b.extend(b.jqx.utilities,{scrollBarSize:13,touchScrollBarSize:8,scrollBarButtonsVisibility:"visible",createId:function(){var c=function(){return(((1+Math.random())*65536)|0).toString(16).substring(1)};return"jqxWidget"+c()+c()+c()},setTheme:function(g,h,f){if(typeof f==="undefined"){return}if(!f[0].className.split){return}if(g===undefined){g=""}if(h===undefined){h=""}var j=f[0].className.split(" "),c=[],k=[],e=f.children();for(var d=0;d<j.length;d+=1){if(j[d].indexOf(g)>=0){if(g.length>0){c.push(j[d]);k.push(j[d].replace(g,h))}else{k.push(j[d].replace("-"+h,"")+"-"+h)}}}this._removeOldClasses(c,f);this._addNewClasses(k,f);for(var d=0;d<e.length;d+=1){this.setTheme(g,h,b(e[d]))}},_removeOldClasses:function(e,d){for(var c=0;c<e.length;c+=1){d.removeClass(e[c])}},_addNewClasses:function(e,d){for(var c=0;c<e.length;c+=1){d.addClass(e[c])}},getOffset:function(c){var e=b.jqx.mobile.getLeftPos(c[0]);var d=b.jqx.mobile.getTopPos(c[0]);return{top:d,left:e}},resize:function(h,t,q,p){if(p===undefined){p=true}var m=-1;var l=this;var e=function(v){if(!l.hiddenWidgets){return -1}var w=-1;for(var u=0;u<l.hiddenWidgets.length;u++){if(v.id){if(l.hiddenWidgets[u].id==v.id){w=u;break}}else{if(l.hiddenWidgets[u].id==v[0].id){w=u;break}}}return w};if(this.resizeHandlers){for(var j=0;j<this.resizeHandlers.length;j++){if(h.id){if(this.resizeHandlers[j].id==h.id){m=j;break}}else{if(this.resizeHandlers[j].id==h[0].id){m=j;break}}}if(q===true){if(m!=-1){this.resizeHandlers.splice(m,1);if(this.watchedElementData&&this.watchedElementData.length>0){this.watchedElementData.splice(m,1)}}if(this.resizeHandlers.length==0){var o=b(window);if(o.off){o.off("resize.jqx");o.off("orientationchange.jqx");o.off("orientationchanged.jqx")}else{o.unbind("resize.jqx");o.unbind("orientationchange.jqx");o.unbind("orientationchanged.jqx")}this.resizeHandlers=null}var c=e(h);if(c!=-1&&this.hiddenWidgets){this.hiddenWidgets.splice(c,1)}return}}else{if(q===true){var c=e(h);if(c!=-1&&this.hiddenWidgets){this.hiddenWidgets.splice(c,1)}return}}var l=this;var n=function(w,F){if(!l.resizeHandlers){return}var G=function(J){var i=-1;var K=J.parentNode;while(K){i++;K=K.parentNode}return i};var v=function(L,J){if(!L.widget||!J.widget){return 0}var K=G(L.widget[0]);var i=G(J.widget[0]);try{if(K<i){return -1}if(K>i){return 1}}catch(M){var N=M}return 0};var x=function(J){if(l.hiddenWidgets.length>0){l.hiddenWidgets.sort(v);var i=function(){var L=false;var N=new Array();for(var M=0;M<l.hiddenWidgets.length;M++){var K=l.hiddenWidgets[M];if(b.jqx.isHidden(K.widget)){L=true;N.push(K)}else{if(K.callback){K.callback(F)}}}l.hiddenWidgets=N;if(!L){clearInterval(l.__resizeInterval)}};if(J==false){i();if(l.__resizeInterval){clearInterval(l.__resizeInterval)}return}if(l.__resizeInterval){clearInterval(l.__resizeInterval)}l.__resizeInterval=setInterval(function(){i()},100)}};if(l.hiddenWidgets&&l.hiddenWidgets.length>0){x(false)}l.hiddenWidgets=new Array();l.resizeHandlers.sort(v);for(var C=0;C<l.resizeHandlers.length;C++){var I=l.resizeHandlers[C];var E=I.widget;var B=I.data;if(!B){continue}if(!B.jqxWidget){continue}var u=B.jqxWidget.width;var H=B.jqxWidget.height;if(B.jqxWidget.base){if(u==undefined){u=B.jqxWidget.base.width}if(H==undefined){H=B.jqxWidget.base.height}}if(u===undefined&&H===undefined){u=B.jqxWidget.element.style.width;H=B.jqxWidget.element.style.height}var D=false;if(u!=null&&u.toString().indexOf("%")!=-1){D=true}if(H!=null&&H.toString().indexOf("%")!=-1){D=true}if(b.jqx.isHidden(E)){if(e(E)===-1){if(D||w===true){if(I.data.nestedWidget!==true){l.hiddenWidgets.push(I)}}}}else{if(w===undefined||w!==true){if(D){I.callback(F);if(l.watchedElementData){for(var z=0;z<l.watchedElementData.length;z++){if(l.watchedElementData[z].element==B.jqxWidget.element){l.watchedElementData[z].offsetWidth=B.jqxWidget.element.offsetWidth;l.watchedElementData[z].offsetHeight=B.jqxWidget.element.offsetHeight;break}}}if(l.hiddenWidgets.indexOf(I)>=0){l.hiddenWidgets.splice(l.hiddenWidgets.indexOf(I),1)}}if(B.jqxWidget.element){var y=B.jqxWidget.element.className;if(y.indexOf("dropdownlist")>=0||y.indexOf("datetimeinput")>=0||y.indexOf("combobox")>=0||y.indexOf("menu")>=0){if(B.jqxWidget.isOpened){var A=B.jqxWidget.isOpened();if(A){if(F&&F=="resize"&&b.jqx.mobile.isTouchDevice()){continue}B.jqxWidget.close()}}}}}}}x()};if(!this.resizeHandlers){this.resizeHandlers=new Array();var o=b(window);if(o.on){this._resizeTimer=null;this._initResize=null;o.on("resize.jqx",function(i){if(l._resizeTimer!=undefined){clearTimeout(l._resizeTimer)}if(!l._initResize){l._initResize=true;n(null,"resize")}else{l._resizeTimer=setTimeout(function(){n(null,"resize")},b.jqx.resizeDelay)}});o.on("orientationchange.jqx",function(i){n(null,"orientationchange")});o.on("orientationchanged.jqx",function(i){n(null,"orientationchange")})}else{o.bind("resize.jqx",function(i){n(null,"orientationchange")});o.bind("orientationchange.jqx",function(i){n(null,"orientationchange")});o.bind("orientationchanged.jqx",function(i){n(null,"orientationchange")})}}var f=h.data();if(p){if(m===-1){this.resizeHandlers.push({id:h[0].id,widget:h,callback:t,data:f})}}try{var d=f.jqxWidget.width;var s=f.jqxWidget.height;if(f.jqxWidget.base){if(d==undefined){d=f.jqxWidget.base.width}if(s==undefined){s=f.jqxWidget.base.height}}if(d===undefined&&s===undefined){d=f.jqxWidget.element.style.width;s=f.jqxWidget.element.style.height}var k=false;if(d!=null&&d.toString().indexOf("%")!=-1){k=true}if(s!=null&&s.toString().indexOf("%")!=-1){k=true}if(k){if(!this.watchedElementData){this.watchedElementData=[]}var l=this;var g=function(i){if(l.watchedElementData.forEach){l.watchedElementData.forEach(function(u){if(u.element.offsetWidth!==u.offsetWidth||u.element.offsetHeight!==u.offsetHeight){u.offsetWidth=u.element.offsetWidth;u.offsetHeight=u.element.offsetHeight;if(u.timer){clearTimeout(u.timer)}u.timer=setTimeout(function(){if(!b.jqx.isHidden(b(u.element))){u.callback()}else{u.timer=setInterval(function(){if(!b.jqx.isHidden(b(u.element))){clearInterval(u.timer);u.callback()}},100)}})}})}};l.watchedElementData.push({element:h[0],offsetWidth:h[0].offsetWidth,offsetHeight:h[0].offsetHeight,callback:t});if(!l.observer){l.observer=new MutationObserver(g);l.observer.observe(document.body,{attributes:true,childList:true,characterData:true})}}}catch(r){}if(b.jqx.isHidden(h)&&p===true){n(true)}b.jqx.resize=function(){n(null,"resize")}},parseJSON:function(e){if(!e||typeof e!=="string"){return null}var c=/^[\],:{}\s]*$/,g=/(?:^|:|,)(?:\s*\[)+/g,d=/\\(?:["\\\/bfnrt]|u[\da-fA-F]{4})/g,f=/"[^"\\\r\n]*"|true|false|null|-?(?:\d\d*\.|)\d+(?:[eE][\-+]?\d+|)/g;e=b.trim(e);if(window.JSON&&window.JSON.parse){return window.JSON.parse(e)}if(c.test(e.replace(d,"@").replace(f,"]").replace(g,""))){return(new Function("return "+e))()}throw new Error("Invalid JSON: "+e)},html:function(d,e){if(!b(d).on){return b(d).html(e)}try{return b.access(d,function(s){var f=d[0]||{},m=0,j=d.length;if(s===undefined){return f.nodeType===1?f.innerHTML.replace(rinlinejQuery,""):undefined}var r=/<(?:script|style|link)/i,n="abbr|article|aside|audio|bdi|canvas|data|datalist|details|figcaption|figure|footer|header|hgroup|mark|meter|nav|output|progress|section|summary|time|video",h=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/gi,p=/<([\w:]+)/,g=/<(?:script|object|embed|option|style)/i,k=new RegExp("<(?:"+n+")[\\s/>]","i"),q=/^\s+/,t={option:[1,"<select multiple='multiple'>","</select>"],legend:[1,"<fieldset>","</fieldset>"],thead:[1,"<table>","</table>"],tr:[2,"<table><tbody>","</tbody></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],col:[2,"<table><tbody></tbody><colgroup>","</colgroup></table>"],area:[1,"<map>","</map>"],_default:[0,"",""]};if(typeof s==="string"&&!r.test(s)&&(b.support.htmlSerialize||!k.test(s))&&(b.support.leadingWhitespace||!q.test(s))&&!t[(p.exec(s)||["",""])[1].toLowerCase()]){s=s.replace(h,"<$1></$2>");try{for(;m<j;m++){f=this[m]||{};if(f.nodeType===1){b.cleanData(f.getElementsByTagName("*"));f.innerHTML=s}}f=0}catch(o){}}if(f){d.empty().append(s)}},null,e,arguments.length)}catch(c){return b(d).html(e)}},hasTransform:function(e){var d="";d=e.css("transform");if(d==""||d=="none"){d=e.parents().css("transform");if(d==""||d=="none"){var c=b.jqx.utilities.getBrowser();if(c.browser=="msie"){d=e.css("-ms-transform");if(d==""||d=="none"){d=e.parents().css("-ms-transform")}}else{if(c.browser=="chrome"){d=e.css("-webkit-transform");if(d==""||d=="none"){d=e.parents().css("-webkit-transform")}}else{if(c.browser=="opera"){d=e.css("-o-transform");if(d==""||d=="none"){d=e.parents().css("-o-transform")}}else{if(c.browser=="mozilla"){d=e.css("-moz-transform");if(d==""||d=="none"){d=e.parents().css("-moz-transform")}}}}}}else{return d!=""&&d!="none"}}if(d==""||d=="none"){d=b(document.body).css("transform")}return d!=""&&d!="none"&&d!=null},getBrowser:function(){var d=navigator.userAgent.toLowerCase();var c=/(chrome)[ \/]([\w.]+)/.exec(d)||/(webkit)[ \/]([\w.]+)/.exec(d)||/(opera)(?:.*version|)[ \/]([\w.]+)/.exec(d)||/(msie) ([\w.]+)/.exec(d)||d.indexOf("compatible")<0&&/(mozilla)(?:.*? rv:([\w.]+)|)/.exec(d)||[];var e={browser:c[1]||"",version:c[2]||"0"};if(d.indexOf("rv:11.0")>=0&&d.indexOf(".net4.0c")>=0){e.browser="msie";e.version="11";c[1]="msie"}if(d.indexOf("edge")>=0){e.browser="msie";e.version="12";c[1]="msie"}e[c[1]]=c[1];return e}});b.jqx.browser=b.jqx.utilities.getBrowser();b.jqx.isHidden=function(d){if(!d||!d[0]){return false}var c=d[0].offsetWidth,e=d[0].offsetHeight;if(c===0||e===0){return true}else{return false}};b.jqx.ariaEnabled=true;b.jqx.aria=function(d,f,e){if(!b.jqx.ariaEnabled){return}if(f==undefined){b.each(d.aria,function(h,i){var k=!d.base?d.host.attr(h):d.base.host.attr(h);if(k!=undefined&&!b.isFunction(k)){var j=k;switch(i.type){case"number":j=new Number(k);if(isNaN(j)){j=k}break;case"boolean":j=k=="true"?true:false;break;case"date":j=new Date(k);if(j=="Invalid Date"||isNaN(j)){j=k}break}d[i.name]=j}else{var k=d[i.name];if(b.isFunction(k)){k=d[i.name]()}if(k==undefined){k=""}try{!d.base?d.host.attr(h,k.toString()):d.base.host.attr(h,k.toString())}catch(g){}}})}else{try{if(d.host){if(!d.base){if(d.host){if(d.element.setAttribute){d.element.setAttribute(f,e.toString())}else{d.host.attr(f,e.toString())}}else{d.attr(f,e.toString())}}else{if(d.base.host){d.base.host.attr(f,e.toString())}else{d.attr(f,e.toString())}}}else{if(d.setAttribute){d.setAttribute(f,e.toString())}}}catch(c){}}};if(!Array.prototype.indexOf){Array.prototype.indexOf=function(d){var c=this.length;var e=Number(arguments[1])||0;e=(e<0)?Math.ceil(e):Math.floor(e);if(e<0){e+=c}for(;e<c;e++){if(e in this&&this[e]===d){return e}}return -1}}b.jqx.mobile=b.jqx.mobile||{};b.jqx.position=function(c){var f=parseInt(c.pageX);var e=parseInt(c.pageY);if(b.jqx.mobile.isTouchDevice()){var d=b.jqx.mobile.getTouches(c);var g=d[0];f=parseInt(g.pageX);e=parseInt(g.pageY)}return{left:f,top:e}};b.extend(b.jqx.mobile,{_touchListener:function(i,g){var c=function(j,l){var k=document.createEvent("MouseEvents");k.initMouseEvent(j,l.bubbles,l.cancelable,l.view,l.detail,l.screenX,l.screenY,l.clientX,l.clientY,l.ctrlKey,l.altKey,l.shiftKey,l.metaKey,l.button,l.relatedTarget);k._pageX=l.pageX;k._pageY=l.pageY;return k};var h={mousedown:"touchstart",mouseup:"touchend",mousemove:"touchmove"};var f=c(h[i.type],i);i.target.dispatchEvent(f);var d=i.target["on"+h[i.type]];if(typeof d==="function"){d(i)}},setMobileSimulator:function(d,f){if(this.isTouchDevice()){return}this.simulatetouches=true;if(f==false){this.simulatetouches=false}var e={mousedown:"touchstart",mouseup:"touchend",mousemove:"touchmove"};var c=this;if(window.addEventListener){var g=function(){for(var h in e){if(d.addEventListener){d.removeEventListener(h,c._touchListener);d.addEventListener(h,c._touchListener,false)}}};if(b.jqx.browser.msie){g()}else{g()}}},isTouchDevice:function(){if(this.touchDevice!=undefined){return this.touchDevice}var d="Browser CodeName: "+navigator.appCodeName+"";d+="Browser Name: "+navigator.appName+"";d+="Browser Version: "+navigator.appVersion+"";d+="Platform: "+navigator.platform+"";d+="User-agent header: "+navigator.userAgent+"";if(d.indexOf("Android")!=-1){return true}if(d.indexOf("IEMobile")!=-1){return true}if(d.indexOf("Windows Phone")!=-1){return true}if(d.indexOf("WPDesktop")!=-1){return true}if(d.indexOf("ZuneWP7")!=-1){return true}if(d.indexOf("BlackBerry")!=-1&&d.indexOf("Mobile Safari")!=-1){return true}if(d.indexOf("ipod")!=-1){return true}if(d.indexOf("nokia")!=-1||d.indexOf("Nokia")!=-1){return true}if(d.indexOf("Chrome/17")!=-1){return false}if(d.indexOf("CrOS")!=-1){return false}if(d.indexOf("Opera")!=-1&&d.indexOf("Mobi")==-1&&d.indexOf("Mini")==-1&&d.indexOf("Platform: Win")!=-1){return false}if(d.indexOf("HybridDeviceTouch")!=-1){return true}if(d.indexOf("HybridDeviceMouse")!=-1){return false}if(d.indexOf("Opera")!=-1&&d.indexOf("Mobi")!=-1&&d.indexOf("Opera Mobi")!=-1){return true}if(d.indexOf("Mozilla/5.0 (X11; Linux x86_64)")!=-1){return false}var f={ios:"i(?:Pad|Phone|Pod)(?:.*)CPU(?: iPhone)? OS ",android:"(Android |HTC_|Silk/)",blackberry:"BlackBerry(?:.*)Version/",rimTablet:"RIM Tablet OS ",webos:"(?:webOS|hpwOS)/",bada:"Bada/"};try{if(this.touchDevice!=undefined){return this.touchDevice}this.touchDevice=false;for(var h in f){if(f.hasOwnProperty(h)){var k=f[h];var g=d.match(new RegExp("(?:"+k+")([^\\s;]+)"));if(g){if(h.toString()=="blackberry"){this.touchDevice=false;return false}this.touchDevice=true;return true}}}var j=navigator.userAgent;if(navigator.platform.toLowerCase().indexOf("win")!=-1){if(j.indexOf("Windows Phone")>=0||j.indexOf("WPDesktop")>=0||j.indexOf("IEMobile")>=0||j.indexOf("ZuneWP7")>=0){this.touchDevice=true;return true}else{if(j.indexOf("Touch")>=0){var c=("MSPointerDown" in window)||("pointerdown" in window);if(c){this.touchDevice=true;return true}if(j.indexOf("ARM")>=0){this.touchDevice=true;return true}this.touchDevice=false;return false}}}if(navigator.platform.toLowerCase().indexOf("win")!=-1){this.touchDevice=false;return false}if(("ontouchstart" in window)||window.DocumentTouch&&document instanceof DocumentTouch){this.touchDevice=true}return this.touchDevice}catch(l){this.touchDevice=false;return false}},getLeftPos:function(c){var d=c.offsetLeft;while((c=c.offsetParent)!=null){if(c.tagName!="HTML"){d+=c.offsetLeft;if(document.all){d+=c.clientLeft}}}return d},getTopPos:function(d){var f=d.offsetTop;var c=b(d).coord();while((d=d.offsetParent)!=null){if(d.tagName!="HTML"){f+=(d.offsetTop-d.scrollTop);if(document.all){f+=d.clientTop}}}var e=navigator.userAgent.toLowerCase();var g=(e.indexOf("windows phone")!=-1||e.indexOf("WPDesktop")!=-1||e.indexOf("ZuneWP7")!=-1||e.indexOf("msie 9")!=-1||e.indexOf("msie 11")!=-1||e.indexOf("msie 10")!=-1)&&e.indexOf("touch")!=-1;if(g){return c.top}if(this.isSafariMobileBrowser()){if(this.isSafari4MobileBrowser()&&this.isIPadSafariMobileBrowser()){return f}if(e.indexOf("version/7")!=-1){return c.top}if(e.indexOf("version/6")!=-1||e.indexOf("version/5")!=-1){f=f+b(window).scrollTop()}if(/(Android.*Chrome\/[.0-9]* (!?Mobile))/.exec(navigator.userAgent)){return f+b(window).scrollTop()}if(/(Android.*Chrome\/[.0-9]* Mobile)/.exec(navigator.userAgent)){return f+b(window).scrollTop()}return c.top}return f},isChromeMobileBrowser:function(){var d=navigator.userAgent.toLowerCase();var c=d.indexOf("android")!=-1;return c},isOperaMiniMobileBrowser:function(){var d=navigator.userAgent.toLowerCase();var c=d.indexOf("opera mini")!=-1||d.indexOf("opera mobi")!=-1;return c},isOperaMiniBrowser:function(){var d=navigator.userAgent.toLowerCase();var c=d.indexOf("opera mini")!=-1;return c},isNewSafariMobileBrowser:function(){var d=navigator.userAgent.toLowerCase();var c=d.indexOf("ipad")!=-1||d.indexOf("iphone")!=-1||d.indexOf("ipod")!=-1;c=c&&(d.indexOf("version/5")!=-1);return c},isSafari4MobileBrowser:function(){var d=navigator.userAgent.toLowerCase();var c=d.indexOf("ipad")!=-1||d.indexOf("iphone")!=-1||d.indexOf("ipod")!=-1;c=c&&(d.indexOf("version/4")!=-1);return c},isWindowsPhone:function(){var d=navigator.userAgent.toLowerCase();var c=(d.indexOf("windows phone")!=-1||d.indexOf("WPDesktop")!=-1||d.indexOf("ZuneWP7")!=-1||d.indexOf("msie 9")!=-1||d.indexOf("msie 11")!=-1||d.indexOf("msie 10")!=-1&&d.indexOf("touch")!=-1);return c},isSafariMobileBrowser:function(){var d=navigator.userAgent.toLowerCase();if(/(Android.*Chrome\/[.0-9]* (!?Mobile))/.exec(navigator.userAgent)){return true}if(/(Android.*Chrome\/[.0-9]* Mobile)/.exec(navigator.userAgent)){return true}var c=d.indexOf("ipad")!=-1||d.indexOf("iphone")!=-1||d.indexOf("ipod")!=-1||d.indexOf("mobile safari")!=-1;return c},isIPadSafariMobileBrowser:function(){var d=navigator.userAgent.toLowerCase();var c=d.indexOf("ipad")!=-1;return c},isMobileBrowser:function(){var d=navigator.userAgent.toLowerCase();var c=d.indexOf("ipad")!=-1||d.indexOf("iphone")!=-1||d.indexOf("android")!=-1;return c},getTouches:function(c){if(c.originalEvent){if(c.originalEvent.touches&&c.originalEvent.touches.length){return c.originalEvent.touches}else{if(c.originalEvent.changedTouches&&c.originalEvent.changedTouches.length){return c.originalEvent.changedTouches}}}if(!c.touches){c.touches=new Array();c.touches[0]=c.originalEvent!=undefined?c.originalEvent:c;if(c.originalEvent!=undefined&&c.pageX){c.touches[0]=c}if(c.type=="mousemove"){c.touches[0]=c}}return c.touches},getTouchEventName:function(c){if(this.isWindowsPhone()){var d=navigator.userAgent.toLowerCase();if(d.indexOf("windows phone 7")!=-1){if(c.toLowerCase().indexOf("start")!=-1){return"MSPointerDown"}if(c.toLowerCase().indexOf("move")!=-1){return"MSPointerMove"}if(c.toLowerCase().indexOf("end")!=-1){return"MSPointerUp"}}if(c.toLowerCase().indexOf("start")!=-1){return"pointerdown"}if(c.toLowerCase().indexOf("move")!=-1){return"pointermove"}if(c.toLowerCase().indexOf("end")!=-1){return"pointerup"}}else{return c}},dispatchMouseEvent:function(c,g,f){if(this.simulatetouches){return}var d=document.createEvent("MouseEvent");d.initMouseEvent(c,true,true,g.view,1,g.screenX,g.screenY,g.clientX,g.clientY,false,false,false,false,0,null);if(f!=null){f.dispatchEvent(d)}},getRootNode:function(c){while(c.nodeType!==1){c=c.parentNode}return c},setTouchScroll:function(c,d){if(!this.enableScrolling){this.enableScrolling=[]}this.enableScrolling[d]=c},touchScroll:function(B,M,Z,H,x,n){if(B==null){return}var G=this;var f=0;var r=0;var g=0;var i=0;var t=0;var j=0;if(!this.scrolling){this.scrolling=[]}this.scrolling[H]=false;var k=false;var p=b(B);var R=["select","input","textarea"];var X=0;var J=0;if(!this.enableScrolling){this.enableScrolling=[]}this.enableScrolling[H]=true;var H=H;var w=this.getTouchEventName("touchstart")+".touchScroll";var D=this.getTouchEventName("touchend")+".touchScroll";var ab=this.getTouchEventName("touchmove")+".touchScroll";var l,W,z,ah,V,Y,aj,Q,aa,d,F,ad,af,O,e,v,u,S,c,E,ag,o;Q=M;var aj=0;var aa=0;var h=0;var T=0;var ai=0;var Y=x.jqxScrollBar("max");var o=325;function A(am){if(am.targetTouches&&(am.targetTouches.length>=1)){return am.targetTouches[0].clientY}else{if(am.originalEvent&&am.originalEvent.clientY!==undefined){return am.originalEvent.clientY}else{var al=G.getTouches(am);return al[0].clientY}}}function ae(am){if(am.targetTouches&&(am.targetTouches.length>=1)){return am.targetTouches[0].clientX}else{if(am.originalEvent&&am.originalEvent.clientX!==undefined){return am.originalEvent.clientX}else{var al=G.getTouches(am);return al[0].clientX}}}var I=function(){var ap,am,aq,ao;ap=Date.now();am=ap-v;v=ap;aq=aa-e;var an=h-ah;e=aa;ah=h;F=true;ao=1000*aq/(1+am);var al=1000*an/(1+am);af=0.8*ao+0.2*af;O=0.8*al+0.2*O};var C=false;var X=function(am){if(!G.enableScrolling[H]){return true}if(b.inArray(am.target.tagName.toLowerCase(),R)!==-1){return}aa=n.jqxScrollBar("value");h=x.jqxScrollBar("value");var an=G.getTouches(am);var ao=an[0];if(an.length==1){G.dispatchMouseEvent("mousedown",ao,G.getRootNode(ao.target))}Y=x.jqxScrollBar("max");Q=n.jqxScrollBar("max");function al(ap){C=false;F=true;d=A(ap);ag=ae(ap);af=S=O=0;e=aa;ah=h;v=Date.now();clearInterval(u);u=setInterval(I,100);T=aa;ai=h;if(aa>0&&aa<Q&&n[0].style.visibility!="hidden"){}}al(am);k=false;r=ao.pageY;t=ao.pageX;if(G.simulatetouches){if(ao._pageY!=undefined){r=ao._pageY;t=ao._pageX}}G.scrolling[H]=true;f=0;i=0;return true};if(p.on){p.on(w,X)}else{p.bind(w,X)}var ac=function(am,al){aa=(am>Q)?Q:(am<aj)?aj:am;Z(null,am,0,0,al);return(am>Q)?"max":(am<aj)?"min":"value"};var m=function(am,al){h=(am>Y)?Y:(am<aj)?aj:am;Z(am,null,0,0,al);return(am>Y)?"max":(am<aj)?"min":"value"};function U(){var al,am;if(S){al=Date.now()-v;am=-S*Math.exp(-al/o);if(am>0.5||am<-0.5){ac(c+am);requestAnimationFrame(U)}else{ac(c)}}}function N(){var al,am;if(S){al=Date.now()-v;am=-S*Math.exp(-al/o);if(am>0.5||am<-0.5){m(E+am);requestAnimationFrame(N)}else{m(E)}}}var y=function(al){if(!G.enableScrolling[H]){return true}if(!G.scrolling[H]){return true}if(C){al.preventDefault();al.stopPropagation()}var aq=G.getTouches(al);if(aq.length>1){return true}var am=aq[0].pageY;var ao=aq[0].pageX;if(G.simulatetouches){if(aq[0]._pageY!=undefined){am=aq[0]._pageY;ao=aq[0]._pageX}}var au=am-r;var av=ao-t;J=am;var at=ao;g=au-f;j=av-i;k=true;f=au;i=av;var an=x!=null?x[0].style.visibility!="hidden":true;var ar=n!=null?n[0].style.visibility!="hidden":true;function ap(ay){var aA,az,ax;if(F){aA=A(ay);ax=ae(ay);az=d-aA;V=ag-ax;var aw="value";if(az>2||az<-2){d=aA;aw=ac(aa+az,ay);I();if(aw=="min"&&T===0){return true}if(aw=="max"&&T===Q){return true}if(!ar){return true}ay.preventDefault();ay.stopPropagation();C=true;return false}else{if(V>2||V<-2){ag=ax;aw=m(h+V,ay);I();if(aw=="min"&&ai===0){return true}if(aw=="max"&&ai===Y){return true}if(!an){return true}C=true;ay.preventDefault();ay.stopPropagation();return false}}ay.preventDefault()}}if(an||ar){if((an)||(ar)){ap(al)}}};if(p.on){p.on(ab,y)}else{p.bind(ab,y)}var s=function(am){if(!G.enableScrolling[H]){return true}var an=G.getTouches(am)[0];if(!G.scrolling[H]){return true}F=false;clearInterval(u);if(af>10||af<-10){S=0.8*af;c=Math.round(aa+S);v=Date.now();requestAnimationFrame(U)}else{if(O>10||O<-10){S=0.8*O;E=Math.round(h+S);v=Date.now();requestAnimationFrame(N)}else{}}G.scrolling[H]=false;if(k){G.dispatchMouseEvent("mouseup",an,am.target)}else{var an=G.getTouches(am)[0],al=G.getRootNode(an.target);G.dispatchMouseEvent("mouseup",an,al);G.dispatchMouseEvent("click",an,al);return true}};if(this.simulatetouches){var q=b(window).on!=undefined||b(window).bind;var P=function(al){try{s(al)}catch(am){}G.scrolling[H]=false};b(window).on!=undefined?b(document).on("mouseup.touchScroll",P):b(document).bind("mouseup.touchScroll",P);if(window.frameElement){if(window.top!=null){var L=function(al){try{s(al)}catch(am){}G.scrolling[H]=false};if(window.top.document){b(window.top.document).on?b(window.top.document).on("mouseup",L):b(window.top.document).bind("mouseup",L)}}}var ak=b(document).on!=undefined||b(document).bind;var K=function(al){if(!G.scrolling[H]){return true}G.scrolling[H]=false;var an=G.getTouches(al)[0],am=G.getRootNode(an.target);G.dispatchMouseEvent("mouseup",an,am);G.dispatchMouseEvent("click",an,am)};b(document).on!=undefined?b(document).on("touchend",K):b(document).bind("touchend",K)}if(p.on){p.on("dragstart",function(al){al.preventDefault()});p.on("selectstart",function(al){al.preventDefault()})}p.on?p.on(D+" touchcancel.touchScroll",s):p.bind(D+" touchcancel.touchScroll",s)}});b.jqx.cookie=b.jqx.cookie||{};b.extend(b.jqx.cookie,{cookie:function(f,g,d){if(arguments.length>1&&String(g)!=="[object Object]"){d=b.extend({},d);if(g===null||g===undefined){d.expires=-1}if(typeof d.expires==="number"){var i=d.expires,e=d.expires=new Date();e.setDate(e.getDate()+i)}g=String(g);return(document.cookie=[encodeURIComponent(f),"=",d.raw?g:encodeURIComponent(g),d.expires?"; expires="+d.expires.toUTCString():"",d.path?"; path="+d.path:"",d.domain?"; domain="+d.domain:"",d.secure?"; secure":""].join(""))}d=g||{};var c,h=d.raw?function(j){return j}:decodeURIComponent;return(c=new RegExp("(?:^|; )"+encodeURIComponent(f)+"=([^;]*)").exec(document.cookie))?h(c[1]):null}});b.jqx.string=b.jqx.string||{};b.extend(b.jqx.string,{replace:function(g,e,f){if(e===f){return this}var c=g;var d=c.indexOf(e);while(d!=-1){c=c.replace(e,f);d=c.indexOf(e)}return c},contains:function(c,d){if(c==null||d==null){return false}return c.indexOf(d)!=-1},containsIgnoreCase:function(c,d){if(c==null||d==null){return false}return c.toString().toUpperCase().indexOf(d.toString().toUpperCase())!=-1},equals:function(c,d){if(c==null||d==null){return false}c=this.normalize(c);if(d.length==c.length){return c.slice(0,d.length)==d}return false},equalsIgnoreCase:function(c,d){if(c==null||d==null){return false}c=this.normalize(c);if(d.length==c.length){return c.toUpperCase().slice(0,d.length)==d.toUpperCase()}return false},startsWith:function(c,d){if(c==null||d==null){return false}return c.slice(0,d.length)==d},startsWithIgnoreCase:function(c,d){if(c==null||d==null){return false}return c.toUpperCase().slice(0,d.length)==d.toUpperCase()},normalize:function(c){if(c.charCodeAt(c.length-1)==65279){c=c.substring(0,c.length-1)}return c},endsWith:function(c,d){if(c==null||d==null){return false}c=this.normalize(c);return c.slice(-d.length)==d},endsWithIgnoreCase:function(c,d){if(c==null||d==null){return false}c=this.normalize(c);return c.toUpperCase().slice(-d.length)==d.toUpperCase()}});b.extend(b.easing,{easeOutBack:function(f,g,e,j,i,h){if(h==undefined){h=1.70158}return j*((g=g/i-1)*g*((h+1)*g+h)+1)+e},easeInQuad:function(f,g,e,i,h){return i*(g/=h)*g+e},easeInOutCirc:function(f,g,e,i,h){if((g/=h/2)<1){return -i/2*(Math.sqrt(1-g*g)-1)+e}return i/2*(Math.sqrt(1-(g-=2)*g)+1)+e},easeInOutSine:function(f,g,e,i,h){return -i/2*(Math.cos(Math.PI*g/h)-1)+e},easeInCubic:function(f,g,e,i,h){return i*(g/=h)*g*g+e},easeOutCubic:function(f,g,e,i,h){return i*((g=g/h-1)*g*g+1)+e},easeInOutCubic:function(f,g,e,i,h){if((g/=h/2)<1){return i/2*g*g*g+e}return i/2*((g-=2)*g*g+2)+e},easeInSine:function(f,g,e,i,h){return -i*Math.cos(g/h*(Math.PI/2))+i+e},easeOutSine:function(f,g,e,i,h){return i*Math.sin(g/h*(Math.PI/2))+e},easeInOutSine:function(f,g,e,i,h){return -i/2*(Math.cos(Math.PI*g/h)-1)+e}})})(jqxBaseFramework);(function(b){if(b.event&&b.event.special){b.extend(b.event.special,{close:{noBubble:true},open:{noBubble:true},cellclick:{noBubble:true},rowclick:{noBubble:true},tabclick:{noBubble:true},selected:{noBubble:true},expanded:{noBubble:true},collapsed:{noBubble:true},valuechanged:{noBubble:true},expandedItem:{noBubble:true},collapsedItem:{noBubble:true},expandingItem:{noBubble:true},collapsingItem:{noBubble:true}})}if(b.fn.extend){b.fn.extend({ischildof:function(g){if(!b(this).parents){var c=g.element.contains(this.element);return c}var e=b(this).parents().get();for(var d=0;d<e.length;d++){if(typeof g!="string"){var f=e[d];if(g!==undefined){if(f==g[0]){return true}}}else{if(g!==undefined){if(b(e[d]).is(g)){return true}}}}return false}})}b.fn.jqxProxy=function(){var e=b(this).data().jqxWidget;var c=Array.prototype.slice.call(arguments,0);var d=e.element;if(!d){d=e.base.element}return b.jqx.jqxWidgetProxy(e.widgetName,d,c)};var a=b.originalVal=b.fn.val;b.fn.val=function(d){if(typeof d=="undefined"){if(b(this).hasClass("jqx-widget")){var c=b(this).data().jqxWidget;if(c&&c.val){return c.val()}}if(this[0]&&this[0].tagName.toLowerCase().indexOf("angular")>=0){var c=b(this).find(".jqx-widget").data().jqxWidget;if(c&&c.val){return c.val()}}return a.call(this)}else{if(b(this).hasClass("jqx-widget")){var c=b(this).data().jqxWidget;if(c&&c.val){if(arguments.length!=2){return c.val(d)}else{return c.val(d,arguments[1])}}}if(this[0]&&this[0].tagName.toLowerCase().indexOf("angular")>=0){var c=b(this).find(".jqx-widget").data().jqxWidget;if(c&&c.val){if(arguments.length!=2){return c.val(d)}else{return c.val(d,arguments[1])}}}return a.call(this,d)}};if(b.fn.modal&&b.fn.modal.Constructor){b.fn.modal.Constructor.prototype.enforceFocus=function(){b(document).off("focusin.bs.modal").on("focusin.bs.modal",b.proxy(function(c){if(this.$element[0]!==c.target&&!this.$element.has(c.target).length){if(b(c.target).parents().hasClass("jqx-popup")){return true}this.$element.trigger("focus")}},this))}}b.fn.coord=function(n){var e,j,i={top:0,left:0},f=this[0],l=f&&f.ownerDocument;if(!l){return}e=l.documentElement;if(!b.contains(e,f)){return i}if(typeof f.getBoundingClientRect!==undefined){i=f.getBoundingClientRect()}var d=function(o){return b.isWindow(o)?o:o.nodeType===9?o.defaultView||o.parentWindow:false};j=d(l);var h=0;var c=0;var g=navigator.userAgent.toLowerCase();var m=g.indexOf("ipad")!=-1||g.indexOf("iphone")!=-1;if(m){h=2}if(true==n){if(document.body.style.position!="static"&&document.body.style.position!=""){var k=b(document.body).coord();h=-k.left;c=-k.top}}return{top:c+i.top+(j.pageYOffset||e.scrollTop)-(e.clientTop||0),left:h+i.left+(j.pageXOffset||e.scrollLeft)-(e.clientLeft||0)}};b.jqx.ripplers=[];b.jqx.ripple=function(f,e,o){if(!e){e=f}var h=b(f);var j=false;h.append("<span class='ink'></span>");var p=h.find(".ink");var c=false;for(var g=0;g<b.jqx.ripplers.length;g++){var k=b.jqx.ripplers[g];if(k.element[0]===f[0]){c=true;break}}if(!c){b.jqx.ripplers.push({ink:p,element:f,hostElement:e,hostElementType:o})}if(o==="checkbox"||o==="radiobutton"){var l=Math.max(h.outerWidth(),h.outerHeight());p.css({height:l,width:l});var n=h.width()/2-p.width()/2;var m=h.height()/2-p.height()/2;p.css({top:m+"px",left:n+"px"})}if(b.jqx.ripplers.length===1){b(document).on("mouseup",function(r){b.jqx.ripple.mouseCaptured=false;for(var q=0;q<b.jqx.ripplers.length;q++){var d=b.jqx.ripplers[q];d.ink.removeClass("active");d.element.removeClass("active");if(o!=="checkbox"&&o!=="radiobutton"){if(d.ink.hasClass("animate")){d.ink.removeClass("animate")}}}})}e.off("mousedown.ripple");e.on("mousedown.ripple",function(i){var d=b(f);b.jqx.ripple.mouseCaptured=true;setTimeout(function(){if(d.find(".ink").length==0){d.append("<span class='ink'></span>")}var r=d.find(".ink");r.removeClass("animate");if(!r.height()&&!r.width()){var s=Math.max(d.outerWidth(),d.outerHeight());r.css({height:s,width:s})}if(o==="checkbox"||o==="radiobutton"){if(o==="checkbox"){if(e.jqxCheckBox("disabled")){return}}if(o==="radiobutton"){if(e.jqxRadioButton("disabled")){return}}var q=d.width()/2-r.width()/2;var t=d.height()/2-r.height()/2;r.css({top:t+"px",left:q+"px"}).addClass("animate");r.on("animationend",function(){if(b.jqx.ripple.mouseCaptured){r.removeClass("animate");r.addClass("active");f.addClass("active")}});return}var q=i.pageX-d.offset().left-r.width()/2;var t=i.pageY-d.offset().top-r.height()/2;r.css({top:t+"px",left:q+"px"}).addClass("animate")})})}})(jqxBaseFramework);
 
 (function(i){i.jqx.observableArray=function(e,J){if(typeof(e)=="string"){e=i.parseJSON(e)}if(!Object.defineProperty||!(function(){try{Object.defineProperty({},"x",{});return true}catch(M){return false}}())){var L=Object.defineProperty;Object.defineProperty=function(O,P,N){if(L){try{return L(O,P,N)}catch(M){}}if(O!==Object(O)){throw TypeError("Object.defineProperty called on non-object")}if(Object.prototype.__defineGetter__&&("get" in N)){Object.prototype.__defineGetter__.call(O,P,N.get)}if(Object.prototype.__defineSetter__&&("set" in N)){Object.prototype.__defineSetter__.call(O,P,N.set)}if("value" in N){O[P]=N.value}else{if(!O[P]){O[P]=N}}return O}}if(!Array.prototype.forEach){Array.prototype.forEach=function(N){if(this===void 0||this===null){throw TypeError()}var Q=Object(this);var M=Q.length>>>0;if(typeof N!=="function"){throw TypeError()}var P=arguments[1],O;for(O=0;O<M;O++){if(O in Q){N.call(P,Q[O],O,Q)}}}}if(typeof Object.getOwnPropertyNames!=="function"){Object.getOwnPropertyNames=function(O){if(O!==Object(O)){throw TypeError("Object.getOwnPropertyNames called on non-object")}var M=[],N;for(N in O){if(Object.prototype.hasOwnProperty.call(O,N)){M.push(N)}}return M}}var I=this,H,K=[];I.notifier=null;I.name="observableArray";I.observing=true;I.changes=new Array();var J=J;I.observe=function(){I.observing=true;if(arguments.length==1){J=arguments[0]}};I.unobserve=function(){I.observing=false};I.toArray=function(){return K.slice(0)};I.toJSON=function(X,O){var U=K;if(O){U=O}var T=/[\\\"\x00-\x1f\x7f-\x9f\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g,W={"\b":"\\b","\t":"\\t","\n":"\\n","\f":"\\f","\r":"\\r",'"':'\\"',"\\":"\\\\"};function M(Z){return'"'+Z.replace(T,function(aa){var ab=W[aa];return typeof ab==="string"?ab:"\\u"+("0000"+aa.charCodeAt(0).toString(16)).slice(-4)})+'"'}function N(Z){return Z<10?"0"+Z:Z}function P(aa){var Z;if(isFinite(aa.valueOf())){Z=aa.getUTCFullYear()+"-"+N(aa.getUTCMonth()+1)+"-"+N(aa.getUTCDate())+"T"+N(aa.getUTCHours())+":"+N(aa.getUTCMinutes())+":"+N(aa.getUTCSeconds())+'Z"'}else{Z="null"}return Z}function Q(ac){var Z=ac.length,aa=[],ab;for(ab=0;ab<Z;ab++){aa.push(R(ab,ac)||"null")}return"["+aa.join(",")+"]"}function Y(ac){var aa=[],ab,Z;for(ab in ac){if(Object.prototype.hasOwnProperty.call(ac,ab)){if(ab!=""&&X&&X.indexOf(ab)===-1){continue}Z=R(ab,ac);if(Z){aa.push(M(ab)+":"+Z)}}}return"{"+aa.join(",")+"}"}function S(Z){switch(Object.prototype.toString.call(Z)){case"[object Date]":return P(Z);case"[object Array]":return Q(Z)}return Y(Z)}function V(aa,Z){switch(Z){case"string":return M(aa);case"number":case"float":case"integer":case"int":return isFinite(aa)?aa:"null";case"boolean":return aa}return"null"}function R(aa,Z){var ac=Z[aa],ab=typeof ac;if(ac&&typeof ac==="object"&&typeof ac.toJSON==="function"){ac=ac.toJSON(aa);ab=typeof ac}if(/(number|float|int|integer|string|boolean)/.test(ab)||(!ac&&ab==="object")){return V(ac,ab)}else{return S(ac)}}if(!X&&window.JSON&&typeof window.JSON.stringify==="function"){return window.JSON.stringify(U)}return R("",{"":U})};I.defineIndexProperty=function(O){if(!(O in I)){var M=function(V,S,U,R){var T=V[S];var Q=T;var P=function(){return Q};var W=function(ab){T=ab;if(Q!==T){var aa=Q;Q=T;if(typeof H==="function"){var Y=K.indexOf(R);var Z="";var X=function(ad,ac){Object.getOwnPropertyNames(ad).forEach(function(ae){var af=i.type(ad[ae]);if(af=="array"||af=="object"){X(ad[ae],ac+"."+ae)}else{if(S===ae){Z=ac+"."+ae}}})};X(R,Y);H({object:I,type:"update",path:Z,index:Y,name:S,newValue:T,oldValue:aa})}}Q=T;return T};if(V[S]!=undefined&&S!="length"){if(Object.defineProperty){Object.defineProperty(V,S,{get:P,set:W})}else{if(Object.prototype.__defineGetter__&&Object.prototype.__defineSetter__){Object.prototype.__defineGetter__.call(V,S,P);Object.prototype.__defineSetter__.call(V,S,W)}}}};var N=function(S,R,P){var Q=i.type(S);if(/(number|float|int|integer|string|boolean)/.test(Q)){return}if(S===undefined){return}Object.getOwnPropertyNames(S).forEach(function(T){var U=i.type(S[T]);if(U=="array"||U=="object"){M(S,T,R+"."+T,P);N(S[T],R+"."+T,P)}else{M(S,T,R+"."+T,P)}})};Object.defineProperty(I,O,{configurable:true,enumerable:true,get:function(){return K[O]},set:function(Q){var P=K[O];if(I.toJSON(null,P)!=I.toJSON(null,Q)){K[O]=Q;if(typeof H==="function"){H({object:I,type:"update",path:O.toString(),index:O,name:"index",newValue:Q,oldValue:P})}N(Q,O,Q)}}});N(I[O],O,I[O])}};I.push=function(){var M;for(var N=0,O=arguments.length;N<O;N++){M=K.length;K.push(arguments[N]);I.defineIndexProperty(M);if(typeof H==="function"){H({object:I,type:"add",name:"length",index:M,newValue:K.length,oldValue:M})}}return K.length};I.pop=function(){if(~K.length){var M=K.length-1,N=K.pop();delete I[M];if(typeof H==="function"){H({object:I,type:"delete",name:"length",index:M,newValue:K.length,oldValue:M})}return N}};I.unshift=function(){var M=K.length;for(var N=0,O=arguments.length;N<O;N++){K.splice(N,0,arguments[N]);I.defineIndexProperty(K.length-1)}if(typeof H==="function"){H({object:I,type:"add",index:0,name:"length",newValue:K.length,oldValue:M})}return K.length};I.shift=function(){var M=K.length;if(~K.length){var N=K.shift();K.length===0&&delete I[M];if(typeof H==="function"){H({object:I,type:"delete",index:M,name:"length",newValue:K.length,oldValue:M})}return N}};I.slice=function(Q,N,P){var M=K.slice(Q,N);var O=new i.jqx.observableArray(M,P);return O};I.splice=function(Q,R,M){var P=[],U,T;Q=!~Q?K.length-Q:Q;R=(R==null?K.length-Q:R)||0;while(R--){U=K.splice(Q,1)[0];P.push(U);delete I[K.length];if(typeof H==="function"){H({object:I,type:"delete",index:Q,name:"length",newValue:-1,oldValue:Q})}}for(var N=2,S=arguments.length;N<S;N++){K.splice(Q,0,arguments[N]);this.defineIndexProperty(K.length-1);if(typeof H==="function"){H({object:I,type:"add",index:Q,name:"length",newValue:K.length-1,oldValue:Q})}Q++}var O=new i.jqx.observableArray(P,M);return O};Object.defineProperty(I,"length",{configurable:false,enumerable:true,get:function(){return K.length},set:function(M){var N=Number(M);if(N%1===0&&N>=0){if(N<K.length){I.splice(N)}else{if(N>K.length){I.push.apply(I,new Array(N-K.length))}}}else{throw new RangeError("Invalid array length")}return M}});i.jqx.observableArray.prototype.fromArray=function(O,N){var M=new i.jqx.observableArray(O,N);return M};i.jqx.observableArray.prototype.clone=function(){var M=new i.jqx.observableArray(K,J);M.observing=I.observing;M.changes=I.changes;M.notifier=I.notifier;return M};I.remove=function(N){if(N<0||N>=I.length){throw new Error("Invalid index : "+N)}if(I.hasOwnProperty(N)){var M=I[N];I[N]=undefined;K[N]=undefined;if(typeof H==="function"){H({object:I,type:"delete",index:N,name:"index",newValue:undefined,oldValue:M})}return true}return false};I.concat=function(N,P){var M=K.concat(N);var O=new i.jqx.observableArray(M,P);return O};Object.getOwnPropertyNames(Array.prototype).forEach(function(M){if(!(M in I)){var N=function(){var Q=I.observing;I.observing=false;var P=K[M];var O=P.apply(K,arguments);I.observing=Q;return O};Object.defineProperty(I,M,{configurable:false,enumerable:true,writeable:false,value:N})}});I.set=function(N,P){if(i.type(N)=="string"&&N.split(".").length>1){var M=N.split(".");var Q=I;for(var O=0;O<M.length;O++){if(O===0){if(M[O]>=I.length){throw new Error("Invalid Index: "+N)}}if(O<M.length-1){Q=Q[M[O]]}else{Q[M[O]]=P}}return true}if(N>=I.length){I.push(P)}else{I[N]=P}return true};I.get=function(M){return I[M]};if(e instanceof Array){I.push.apply(I,e)}H=function(){if(!I.observing){return}if(arguments&&arguments[0]){I.changes.push(arguments[0])}if(J){J.apply(I,arguments)}if(I.notifier){I.notifier.apply(I,arguments)}};return I};i.jqx.formatDate=function(H,J,I){var e=i.jqx.dataFormat.formatdate(H,J,I);return e};i.jqx.formatNumber=function(H,J,I){var e=i.jqx.dataFormat.formatnumber(H,J,I);return e};i.jqx.dataAdapter=function(J,e){if(J!=undefined){if(J.dataFields!==undefined){J.datafields=J.dataFields}if(J.dataType!==undefined){J.datatype=J.dataType}if(J.localData!==undefined){J.localdata=J.localData}if(J.sortColumn!==undefined){J.sortcolumn=J.sortColumn}if(J.sortDirection!==undefined){J.sortdirection=J.sortDirection}if(J.sortColumns!==undefined){J.sortcolumns=J.sortColumns}if(J.sortDirections!==undefined){J.sortdirections=J.sortDirections}if(J.sortOrder!==undefined){J.sortdirection=J.sortOrder}if(J.formatData!==undefined){J.formatdata=J.formatData}if(J.processData!==undefined){J.processdata=J.processData}if(J.pageSize!==undefined){J.pagesize=J.pageSize}if(J.pageNum!==undefined){J.pagenum=J.pageNum}if(J.updateRow!==undefined){J.updaterow=J.updateRow}if(J.addRow!==undefined){J.addrow=J.addRow}if(J.deleteRow!==undefined){J.deleterow=J.deleteRow}if(J.contentType!==undefined){J.contenttype=J.contentType}if(J.totalRecords!=undefined){J.totalrecords=J.totalRecords}if(J.loadError!=undefined){J.loadError=J.loadError}if(J.sortComparer!=undefined){J.sortcomparer=J.sortComparer}}this._source=J;this._options=e||{};if(J.beforeLoadComplete!=undefined){this._options.beforeLoadComplete=this._source.beforeLoadComplete}if(J.downloadComplete!=undefined){this._options.downloadComplete=this._source.downloadComplete}if(J.loadComplete!=undefined){this._options.loadComplete=this._source.loadComplete}if(J.autoBind!=undefined){this._options.downloadComplete=this._source.autoBind}if(J.formatData!=undefined){this._options.formatData=this._source.formatData}if(J.loadError!=undefined){this._options.loadError=this._source.loadError}if(J.beforeSend!=undefined){this._options.beforeSend=this._source.beforeSend}if(J.contentType!=undefined){this._options.contentType=this._source.contentType}if(J.async!=undefined){this._options.async=this._source.async}if(J.loadServerData!=undefined){this._options.loadServerData=this._source.loadServerData}if(J.uniqueDataFields!=undefined){this._options.uniqueDataFields=this._source.uniqueDataFields}this.records=new Array();this._downloadComplete=new Array();this._bindingUpdate=new Array();if(J!=undefined&&J.localdata!=null&&typeof J.localdata=="function"){var I=J.localdata();if(I!=null){J._localdata=J.localdata;var H=this;if(J._localdata.subscribe){H._oldlocaldata=[];J._localdata.subscribe(function(K){var L=function(M){if(i.isArray(M)){return i.makeArray(L(i(M)))}return i.extend(true,{},M)};if(H.suspendKO==false||H.suspendKO==undefined||H._oldlocaldata.length==0){H._oldlocaldata=L(K)}},J._localdata,"beforeChange");J._localdata.subscribe(function(L){if(H.suspendKO==false||H.suspendKO==undefined){var K="";H._oldrecords=H.records;if(H._oldlocaldata.length==0){J.localdata=J._localdata()}if(H._oldlocaldata.length==0){K="change"}else{if(L){if(H._oldlocaldata.length==L.length){K="update"}if(H._oldlocaldata.length>L.length){K="remove"}if(H._oldlocaldata.length<L.length){K="add"}}}H.dataBind(null,K)}},J._localdata,"change");H._knockoutdatasource=true}J.localdata=I}}if(this._options.autoBind==true){this.dataBind()}};i.jqx.dataAdapter.prototype={getrecords:function(){return this.records},beginUpdate:function(){this.isUpdating=true},endUpdate:function(e){this.isUpdating=false;if(e!=false){if(this._changedrecords&&this._changedrecords.length>0){this.callBindingUpdate("update");this._changedrecords=[]}else{this.dataBind(null,"")}}},formatDate:function(H,J,I){var e=i.jqx.dataFormat.formatdate(H,J,I);return e},formatNumber:function(H,J,I){var e=i.jqx.dataFormat.formatnumber(H,J,I);return e},dataBind:function(R,aa){if(this.isUpdating==true){return}var W=this._source;if(!W){return}if(W.generatedfields){W.datafields=null;W.generatedfields=null}i.jqx.dataFormat.datescache=new Array();if(W.dataFields!=null){W.datafields=W.dataFields}if(W.recordstartindex==undefined){W.recordstartindex=0}if(W.recordendindex==undefined){W.recordendindex=0}if(W.loadallrecords==undefined){W.loadallrecords=true}if(W.root==undefined){W.root=""}if(W.record==undefined){W.record=""}if(W.sort!=undefined){this.sort=W.sort}if(W.filter!=undefined){this.filter=W.filter}else{this.filter=null}if(W.sortcolumn!=undefined){this.sortcolumn=W.sortcolumn}if(W.sortdirection!=undefined){this.sortdirection=W.sortdirection}if(W.sortcolumns!=undefined){this.sortcolumns=W.sortcolumns}if(W.sortdirections!=undefined){this.sortdirections=W.sortdirections}if(W.sortcomparer!=undefined){this.sortcomparer=W.sortcomparer}this.records=new Array();var K=this._options||{};this.virtualmode=K.virtualmode!=undefined?K.virtualmode:false;this.totalrecords=K.totalrecords!=undefined?K.totalrecords:0;this.pageable=K.pageable!=undefined?K.pageable:false;this.pagesize=K.pagesize!=undefined?K.pagesize:0;this.pagenum=K.pagenum!=undefined?K.pagenum:0;this.cachedrecords=K.cachedrecords!=undefined?K.cachedrecords:new Array();this.originaldata=new Array();this.recordids=new Array();this.updaterow=K.updaterow!=undefined?K.updaterow:null;this.addrow=K.addrow!=undefined?K.addrow:null;this.deleterow=K.deleterow!=undefined?K.deleterow:null;this.cache=K.cache!=undefined?K.cache:false;this.unboundmode=false;if(W.formatdata!=undefined){K.formatData=W.formatdata}if(W.data!=undefined){if(K.data==undefined){K.data={}}i.extend(K.data,W.data)}if(W.mapChar!=undefined){W.mapchar=W.mapChar}if(W.mapchar!=undefined){this.mapChar=W.mapchar?W.mapchar:">"}else{this.mapChar=K.mapChar?K.mapChar:">"}if(K.unboundmode||W.unboundmode){this.unboundmode=K.unboundmode||W.unboundmode}if(W.cache!=undefined){this.cache=W.cache}if(this.koSubscriptions){for(var ac=0;ac<this.koSubscriptions.length;ac++){this.koSubscriptions[ac].dispose()}}this.koSubscriptions=new Array();if(this.pagenum<0){this.pagenum=0}var ah=this;var Q=W.datatype;if(W.datatype==="csv"||W.datatype==="tab"||W.datatype==="tsv"||W.datatype=="text"){Q="text"}var N=K.async!=undefined?K.async:true;if(W.async!=undefined){N=W.async}switch(Q){case"local":case"array":case"observablearray":case"observableArray":default:if(W.localdata==undefined&&W.length){W.localdata=new Array();for(var Z=0;Z<W.length;Z++){W.localdata[W.localdata.length]=W[Z];W[Z].uid=Z}}if(W.beforeprocessing&&i.isFunction(W.beforeprocessing)){W.beforeprocessing(W.localdata)}var M=W.localdata.length;this.totalrecords=this.virtualmode?(W.totalrecords||M):M;if(this.unboundmode){this.totalrecords=this.unboundmode?(W.totalrecords||M):M;var ad=W.datafields?W.datafields.length:0;if(ad>0){for(var Z=0;Z<this.totalrecords;Z++){var I={};for(var Y=0;Y<ad;Y++){I[W.datafields[Y].name]=""}I.uid=Z;W.localdata[W.localdata.length]=I}}}if(this.totalrecords==undefined){this.totalrecords=0}var ad=W.datafields?W.datafields.length:0;var H=function(ao,aq){var ap={};for(var am=0;am<aq;am++){var al=W.datafields?W.datafields[am]:{};var ar="";if(undefined==al||al==null){continue}if(al.map){if(i.isFunction(al.map)){ar=al.map(ao)}else{var aj=al.map.split(ah.mapChar);if(aj.length>0){var an=ao;for(var ak=0;ak<aj.length;ak++){if(!an){continue}an=an[aj[ak]]}ar=an}else{ar=ao[al.map]}}if(ar!=undefined&&ar!=null){ar=ar.toString()}else{if(ar==undefined&&ar!=null){ar=""}}}var at=false;if(ar==""){at=true;ar=ao[al.name];if(ar!=undefined&&ar!=null){if(W._localdata&&ar.subscribe){ar=ar()}else{if(al.type!="array"){if(al.type==="date"){if(ar&&ar instanceof Date){ar=ar}}else{ar=ar.toString()}}}}}if(ar=="[object Object]"&&al.map&&at){ar=""}ar=ah.getvaluebytype(ar,al);if(al.displayname!=undefined){ap[al.displayname]=ar}else{ap[al.name]=ar}}return ap};if(W._localdata){this._changedrecords=[];this.records=new Array();var ag=W._localdata();i.each(ag,function(am,ap){if(typeof ap==="string"){ah.records.push(ap)}else{var ak={};var ao=0;var an=this;i.each(this,function(ay,aD){var at=null;var aE="string";var aC=ay;if(ad>0){var aG=false;var aB=false;for(var ax=0;ax<ad;ax++){var aw=W.datafields[ax];if(aw!=undefined&&(aw.name==ay)){aG=true;at=aw.map;aE=aw.type;aC=aw.name;break}else{if(aw!=undefined&&aw.map&&(aw.map.indexOf(ay)>=0)){aG=true;at=aw.map;aE=aw.type;aC=aw.name;aB=true;var aF=an[ay];if(at!=null){var ar=at.split(ah.mapChar);if(ar.length>0){var az=an;for(var au=0;au<ar.length;au++){az=az[ar[au]]}aF=az}else{aF=an[at]}}if(aE!="string"){aF=ah.getvaluebytype(aF,{type:aE})}ak[aC]=aF;if(ak[aC]!=undefined){ao+=ak[aC].toString().length+ak[aC].toString().substr(0,1)}}}}if(!aG){return true}if(aB){return true}}var av=i.isFunction(an[ay]);if(av){var aF=an[ay]();if(aE!="string"){aF=ah.getvaluebytype(aF,{type:aE})}ak[ay]=aF;if(an[ay].subscribe){var aA=am;ah.koSubscriptions[ah.koSubscriptions.length]=an[ay].subscribe(function(aI){var aH=aA;ak[ay]=aI;var aJ={index:aH,oldrecord:ak,record:ak};ah._changedrecords.push(aJ);if(ah.isUpdating){return}ah.callBindingUpdate("update");ah._changedrecords=[];return false})}}else{var aF=an[ay];if(at!=null){var ar=at.split(ah.mapChar);if(ar.length>0){var az=an;for(var au=0;au<ar.length;au++){az=az[ar[au]]}aF=az}else{aF=an[at]}}if(aE!="string"){aF=ah.getvaluebytype(aF,{type:aE})}ak[aC]=aF;if(ak[aC]!=undefined){ao+=ak[aC].toString().length+ak[aC].toString().substr(0,1)}}});var al=ah.getid(W.id,an,am);ak.uid=al;ah.records.push(ak);ak._koindex=ao;if(ah._oldrecords){var aj=ah.records.length-1;if(aa=="update"){if(ah._oldrecords[aj]._koindex!=ao){var aq={index:aj,oldrecord:ah._oldrecords[aj],record:ak};ah._changedrecords.push(aq)}}}}});if(aa=="add"){var M=ah.records.length;for(var Z=0;Z<M;Z++){var I=ah.records[Z];var L=false;for(var U=0;U<ah._oldrecords.length;U++){if(ah._oldrecords[U]._koindex===I._koindex){L=true;break}}if(!L){ah._changedrecords.push({index:Z,oldrecord:null,record:I,position:(Z!=0?"last":"first")})}}}else{if(aa=="remove"){var M=ah._oldrecords.length;for(var Z=0;Z<M;Z++){var P=ah._oldrecords[Z];if(!ah.records[Z]){ah._changedrecords.push({index:Z,oldrecord:P,record:null})}else{if(ah.records[Z]._koindex!=P._koindex){ah._changedrecords.push({index:Z,oldrecord:P,record:null})}}}}}}else{if(!i.isArray(W.localdata)){this.records=new Array();var V=0;var T=new Array();i.each(W.localdata,function(al){var ak=ah.getid(W.id,this,al);if(ad==0){if(!(typeof this==="string"||this instanceof String)){for(var an in this){V++;var ao=i.type(this[an]);T.push({name:an,type:ao})}ad=V;W.datafields=T;W.generatedfields=T}}if(ad>0){var aj=this;var am=H(aj,ad);am.uid=ak;ah.records[ah.records.length]=am}else{this.uid=ak;ah.records[ah.records.length]=this}})}else{if(ad==0){var V=0;var T=new Array();i.each(W.localdata,function(al,an){var aj=new Object(this);if(typeof an==="string"){ah.records=W.localdata;return false}else{var ak=ah.getid(W.id,aj,al);if(typeof(ak)==="object"){ak=al}aj.uid=ak;if(al==0){for(var ao in this){V++;var ap=i.type(this[ao]);T.push({name:ao,type:ap})}ad=V;W.datafields=T;W.generatedfields=T}if(ad>0){var am=H(aj,ad);am.uid=ak;ah.records[ah.records.length]=am}else{ah.records[ah.records.length]=aj}}})}else{i.each(W.localdata,function(al){var aj=this;var am=H(aj,ad);var ak=ah.getid(W.id,am,al);if(typeof(ak)==="object"){ak=al}var aj=new Object(am);aj.uid=ak;ah.records[ah.records.length]=aj})}}}this.originaldata=W.localdata;this.cachedrecords=this.records;this.addForeignValues(W);if(K.uniqueDataFields){var S=this.getUniqueRecords(this.records,K.uniqueDataFields);this.records=S;this.cachedrecords=S}if(K.beforeLoadComplete){var ae=K.beforeLoadComplete(ah.records,this.originaldata);if(ae!=undefined){ah.records=ae;ah.cachedrecords=ae}}if(K.autoSort&&K.autoSortField){var O=Object.prototype.toString;Object.prototype.toString=(typeof field=="function")?field:function(){return this[K.autoSortField]};ah.records.sort(function(ak,aj){if(ak===undefined){ak=null}if(aj===undefined){aj=null}if(ak===null&&aj===null){return 0}if(ak===null&&aj!==null){return 1}if(ak!==null&&aj===null){return -1}ak=ak.toString();aj=aj.toString();if(ak===null&&aj===null){return 0}if(ak===null&&aj!==null){return 1}if(ak!==null&&aj===null){return -1}if(i.jqx.dataFormat.isNumber(ak)&&i.jqx.dataFormat.isNumber(aj)){if(ak<aj){return -1}if(ak>aj){return 1}return 0}else{if(i.jqx.dataFormat.isDate(ak)&&i.jqx.dataFormat.isDate(aj)){if(ak<aj){return -1}if(ak>aj){return 1}return 0}else{if(!i.jqx.dataFormat.isNumber(ak)&&!i.jqx.dataFormat.isNumber(aj)){ak=String(ak).toLowerCase();aj=String(aj).toLowerCase()}}}try{if(ak<aj){return -1}if(ak>aj){return 1}}catch(al){var am=al}return 0});Object.prototype.toString=O}ah.loadedData=W.localdata;ah.buildHierarchy();if(i.isFunction(K.loadComplete)){K.loadComplete(W.localdata,ah.records)}break;case"json":case"jsonp":case"xml":case"xhtml":case"script":case"text":case"ics":if(W.localdata!=null&&!W.url){if(i.isFunction(W.beforeprocessing)){W.beforeprocessing(W.localdata)}if(W.datatype==="xml"){ah.loadxml(W.localdata,W.localdata,W)}else{if(Q==="text"){ah.loadtext(W.localdata,W)}else{if(Q==="ics"){ah.loadics(W.localdata,W)}else{ah.loadjson(W.localdata,W.localdata,W)}}}ah.addForeignValues(W);if(K.uniqueDataFields){var S=ah.getUniqueRecords(ah.records,K.uniqueDataFields);ah.records=S;ah.cachedrecords=S}if(K.beforeLoadComplete){var ae=K.beforeLoadComplete(ah.records,this.originaldata);if(ae!=undefined){ah.records=ae;ah.cachedrecords=ae}}ah.loadedData=W.localdata;ah.buildHierarchy.call(ah);if(i.isFunction(K.loadComplete)){K.loadComplete(W.localdata,ah.records)}ah.callBindingUpdate(aa);return}var af=K.data!=undefined?K.data:{};if(W.processdata){W.processdata(af)}if(i.isFunction(K.processData)){K.processData(af)}if(i.isFunction(K.formatData)){var e=K.formatData(af);if(e!=undefined){af=e}}var ab="application/x-www-form-urlencoded";if(K.contentType){ab=K.contentType}var J="GET";if(W.type){J=W.type}if(K.type){J=K.type}var X=Q;if(Q=="ics"){X="text"}if(W.url&&W.url.length>0){if(i.isFunction(K.loadServerData)){ah._requestData(af,W,K)}else{this.xhr=i.jqx.data.ajax({dataType:X,cache:this.cache,type:J,url:W.url,async:N,timeout:W.timeout,contentType:ab,data:af,success:function(am,aj,ap){if(i.isFunction(W.beforeprocessing)){var ao=W.beforeprocessing(am,aj,ap);if(ao!=undefined){am=ao}}if(i.isFunction(K.downloadComplete)){var ao=K.downloadComplete(am,aj,ap);if(ao!=undefined){am=ao}}if(am==null){ah.records=new Array();ah.cachedrecords=new Array();ah.originaldata=new Array();ah.callDownloadComplete();if(i.isFunction(K.loadComplete)){K.loadComplete(new Array())}return}var ak=am;if(am.records){ak=am.records}if(am.totalrecords!=undefined){W.totalrecords=am.totalrecords}else{if(am.totalRecords!=undefined){W.totalrecords=am.totalRecords}}if(W.datatype==="xml"){ah.loadxml(null,ak,W)}else{if(Q==="text"){ah.loadtext(ak,W)}else{if(Q==="ics"){ah.loadics(ak,W)}else{ah.loadjson(null,ak,W)}}}ah.addForeignValues(W);if(K.uniqueDataFields){var al=ah.getUniqueRecords(ah.records,K.uniqueDataFields);ah.records=al;ah.cachedrecords=al}if(K.beforeLoadComplete){var an=K.beforeLoadComplete(ah.records,am);if(an!=undefined){ah.records=an;ah.cachedrecords=an}}ah.loadedData=am;ah.buildHierarchy.call(ah);ah.callDownloadComplete();if(i.isFunction(K.loadComplete)){K.loadComplete(am,aj,ap,ah.records)}},error:function(al,aj,ak){if(i.isFunction(W.loaderror)){W.loaderror(al,aj,ak)}if(i.isFunction(K.loadError)){K.loadError(al,aj,ak)}al=null;ah.callDownloadComplete()},beforeSend:function(ak,aj){if(i.isFunction(K.beforeSend)){K.beforeSend(ak,aj)}if(i.isFunction(W.beforesend)){W.beforesend(ak,aj)}}})}}else{ah.buildHierarchy(new Array());ah.callDownloadComplete();if(i.isFunction(K.loadComplete)){if(!ai){var ai={}}K.loadComplete(ai)}}break}this.callBindingUpdate(aa)},buildHierarchy:function(K){var e=this._source;var P=new Array();if(!e.datafields){return}if(e.hierarchy&&!e.hierarchy.reservedNames){e.hierarchy.reservedNames={leaf:"leaf",parent:"parent",expanded:"expanded",checked:"checked",selected:"selected",level:"level",icon:"icon",data:"data"}}else{if(e.hierarchy){var O=e.hierarchy.reservedNames;if(!O.leaf){O.leaf="leaf"}if(!O.parent){O.parent="parent"}if(!O.expanded){O.expanded="expanded"}if(!O.checked){O.checked="checked"}if(!O.selected){O.selected="selected"}if(!O.level){O.level="level"}if(!O.data){O.data="data"}}}if(!e.hierarchy){return}var N=this;var O=e.hierarchy.reservedNames;if(e.hierarchy.root){if(e.dataType=="xml"){var P=this.getRecordsHierarchy("uid","parentuid","records",null,K);this.hierarchy=P;return P}else{this.hierarchy=this.records;var R=e.hierarchy.root;for(var L=0;L<this.records.length;L++){var M=this.records[L];if(!M){continue}var H=function(S){if(e.hierarchy.record){S.records=S[R][e.hierarchy.record]}else{var U=R.split(N.mapChar);var T=null;if(U.length>1){var W=S;for(var V=0;V<U.length;V++){if(W!=undefined){W=W[U[V]]}}T=W}else{T=S[R]}S.records=T}if(S.records==null||(S.records&&S.records.length==0)){S[O.leaf]=true}};H(M);M[O.level]=0;var I=this.getid(e.id,M,L);M.uid=I;M[O.parent]=null;M[O.data]=M;if(M[O.expanded]===undefined){M[O.expanded]=false}var Q=function(W,U){if(!U){W.records=new Array();return}for(var V=0;V<U.length;V++){var S=U[V];if(!S){continue}H(S);S[O.level]=W[O.level]+1;S[O.parent]=W;S[O.data]=S;var T=N.getid(e.id,S,V);if(T==V&&e.id==null){S.uid=W.uid+"_"+T}else{S.uid=T}if(S[O.expanded]===undefined){S[O.expanded]=false}Q(S,S.records)}};Q(M,M.records)}}return this.hierarchy}if(e.hierarchy.keyDataField&&e.hierarchy.parentDataField){var P=this.getRecordsHierarchy(e.hierarchy.keyDataField.name,e.hierarchy.parentDataField.name,"records",null,K);this.hierarchy=P;return P}if(e.hierarchy.groupingDataFields){var J=new Array();for(var L=0;L<e.hierarchy.groupingDataFields.length;L++){J.push(e.hierarchy.groupingDataFields[L].name)}var P=this.getGroupedRecords(J,"records","label",null,"data",null,"parent",K);this.hierarchy=P;return P}},addRecord:function(H,e,M,I){var J=this;var N=function(){return{leaf:"leaf",parent:"parent",expanded:"expanded",checked:"checked",selected:"selected",level:"level",icon:"icon",data:"data"}};if(H!=undefined){if(M!=undefined){if(this.hierarchy.length>0){var K=function(O){if(O){for(var P=0;P<O.length;P++){var Q=O[P];if(Q.uid==M){var R=(J._source&&J._source.hierarchy)?J._source.hierarchy.reservedNames:null;if(R==null){R=N()}H[R.parent]=Q;H[R.level]=Q[R.level]+1;if(!Q.records){Q.records=new Array();Q[R.leaf]=false}else{Q[R.leaf]=false}if(e=="last"){Q.records.push(H)}else{if(typeof e==="number"&&isFinite(e)){Q.records.splice(e,0,H)}else{Q.records.splice(0,0,H)}}return true}if(Q.records){K(Q.records)}}}};K(this.hierarchy)}}else{if(this.hierarchy&&this.hierarchy.length>=0&&(this._source.hierarchy||I)){var L=(J._source&&J._source.hierarchy)?J._source.hierarchy.reservedNames:null;if(L==null){L=N()}H[L.level]=0;if(e=="last"){this.hierarchy.push(H)}else{if(typeof e==="number"&&isFinite(e)){this.hierarchy.splice(e,0,H)}else{this.hierarchy.splice(0,0,H)}}}else{if(e=="last"){this.records.push(H)}else{if(typeof e==="number"&&isFinite(e)){this.records.splice(e,0,H)}else{this.records.splice(0,0,H)}}}return true}}return false},deleteRecord:function(H){var J=this;if(this.hierarchy.length>0){var K=function(L){if(L){for(var O=0;O<L.length;O++){var P=L[O];if(P.uid==H){L.splice(O,1);if(J.recordids[H]){delete J.recordids[H]}var N=function(T){for(var Q=0;Q<T.length;Q++){var S=T[Q].uid;for(var R=0;R<J.records.length;R++){var U=J.records[R];if(U.uid==S){J.records.splice(R,1);break}}if(T[Q].records){N(T[Q].records)}}};if(P.records){N(P.records)}for(var M=0;M<J.records.length;M++){var P=J.records[M];if(P.uid==H){J.records.splice(M,1);break}}return true}if(P.records){K(P.records)}}}};K(this.hierarchy)}else{for(var e=0;e<this.records.length;e++){var I=this.records[e];if(I.uid==H){this.records.splice(e,1);return true}}}return false},addForeignValues:function(H){var Q=this;var V=H.datafields?H.datafields.length:0;for(var N=0;N<V;N++){var L=H.datafields[N];if(L!=undefined){if(L.values!=undefined){if(L.value==undefined){L.value=L.name}if(L.values.value==undefined){L.values.value=L.value}var T=new Array();var K,M;if(Q.pageable&&Q.virtualmode){K=Q.pagenum*Q.pagesize;M=K+Q.pagesize;if(M>Q.totalrecords){M=Q.totalrecords}}else{if(Q.virtualmode){K=H.recordstartindex;M=H.recordendindex;if(M>Q.totalrecords){M=Q.totalrecords}}else{K=0;M=Q.records.length}}for(var O=K;O<M;O++){var P=Q.records[O];var I=L.name;var U=P[L.value];if(T[U]!=undefined){P[I]=T[U]}else{for(var J=0;J<L.values.source.length;J++){var S=L.values.source[J];var e=S[L.values.value];if(e==undefined){e=S.uid}if(e==U){var R=S[L.values.name];P[I]=R;T[U]=R;break}}}}}else{if(L.value!=undefined){for(var O=0;O<Q.records.length;O++){var P=Q.records[O];P[L.name]=P[L.value]}}}}}},abort:function(){if(this.xhr&&this.xhr.readyState!=4){this.xhr.abort();this.callDownloadComplete()}},_requestData:function(H,J,e){var I=this;var K=function(P){if(P.totalrecords){J.totalrecords=P.totalrecords;I.totalrecords=P.totalrecords}if(P.records){I.records=P.records;I.cachedrecords=P.records}I.addForeignValues(J);if(e.uniqueDataFields){var N=I.getUniqueRecords(I.records,e.uniqueDataFields);I.records=N;I.cachedrecords=N}if(e.beforeLoadComplete){var O=e.beforeLoadComplete(I.records,P);if(O!=undefined){I.records=O;I.cachedrecords=O}}for(var M=0;M<I.records.length;M++){var L=I.records[M];if(undefined==L){continue}if(undefined==L.uid){L.uid=I.getid(J.id,L,M)}}I.buildHierarchy.call(I);if(i.isFunction(e.loadComplete)){e.loadComplete(P)}I.callDownloadComplete()};e.loadServerData(H,J,K)},getUniqueRecords:function(I,L){if(I&&L){var e=I.length;var Q=L.length;var N=new Array();var O=new Array();for(var P=0;P<e;P++){var M=I[P];var J="";if(M==undefined){continue}for(var K=0;K<Q;K++){var H=L[K];J+=M[H]+"_"}if(!O[J]){N[N.length]=M}O[J]=true}}return N},getAggregatedData:function(S,P,M,H){var L=M;if(!L){L=this.records}var Q={};var K=new Array();var J=L.length;if(J==0){return}if(J==undefined){return}for(var O=0;O<J;O++){var R=L[O];for(var N=0;N<S.length;N++){var I=S[N];var U=R[I.name];if(I.aggregates){Q[I.name]=Q[I.name]||{};K[I.name]=K[I.name]||0;K[I.name]++;var e=function(W){for(var Y in W){var X=Q[I.name][Y];if(X==null){Q[I.name][Y]=0;X=0}if(i.isFunction(W[Y])){X=W[Y](X,U,I.name,R,H)}Q[I.name][Y]=X}};var T=parseFloat(U);if(isNaN(T)){T=false}else{T=true}if(T){U=parseFloat(U)}if(typeof U==="number"&&isFinite(U)){i.each(I.aggregates,function(){var W=Q[I.name][this];if(W==null){W=0;if(this=="min"){W=9999999999999}if(this=="max"){W=-9999999999999}}if(this=="sum"||this=="avg"||this=="stdev"||this=="stdevp"||this=="var"||this=="varp"){W+=parseFloat(U)}else{if(this=="product"){if(O==0){W=parseFloat(U)}else{W*=parseFloat(U)}}else{if(this=="min"){W=Math.min(W,parseFloat(U))}else{if(this=="max"){W=Math.max(W,parseFloat(U))}else{if(this=="count"){W++}else{if(typeof(this)=="object"){e(this);return}}}}}}Q[I.name][this]=W})}else{i.each(I.aggregates,function(){if(this=="min"||this=="max"||this=="count"||this=="product"||this=="sum"||this=="avg"||this=="stdev"||this=="stdevp"||this=="var"||this=="varp"){if(U===null){return true}var W=Q[I.name][this];if(W==null){W=0}Q[I.name][this]=W;return true}if(typeof(this)=="object"){e(this)}})}}}}for(var N=0;N<S.length;N++){var I=S[N];if(!Q[I.name]){Q[I.name]={};i.each(I.aggregates,function(W){Q[I.name][this]=0})}if(Q[I.name]["avg"]!=undefined){var U=Q[I.name]["avg"];var V=K[I.name];if(V===0||V==undefined){Q[I.name]["avg"]=0}else{Q[I.name]["avg"]=U/V}}else{if(Q[I.name]["count"]!=undefined){Q[I.name]["count"]=J}}if(Q[I.name]["stdev"]||Q[I.name]["stdevp"]||Q[I.name]["var"]||Q[I.name]["varp"]){i.each(I.aggregates,function(ac){if(this=="stdev"||this=="var"||this=="varp"||this=="stdevp"){var ad=Q[I.name][this];var ab=J;var W=(ad/J);var Y=0;for(var Z=0;Z<J;Z++){var aa=L[Z];var ae=aa[I.name];Y+=(ae-W)*(ae-W)}var X=(this=="stdevp"||this=="varp")?ab:ab-1;if(X==0){X=1}if(this=="var"||this=="varp"){Q[I.name][this]=Y/X}else{if(this=="stdevp"||this=="stdev"){Q[I.name][this]=Math.sqrt(Y/X)}}}})}if(I.formatStrings){i.each(I.aggregates,function(X){var W=I.formatStrings[X];if(W){if(this=="min"||this=="max"||this=="count"||this=="product"||this=="sum"||this=="avg"||this=="stdev"||this=="stdevp"||this=="var"||this=="varp"){var Y=Q[I.name][this];Q[I.name][this]=i.jqx.dataFormat.formatnumber(Y,W,P)}else{if(typeof this=="object"){for(var Z in this){var Y=Q[I.name][Z];Q[I.name][Z]=i.jqx.dataFormat.formatnumber(Y,W,P)}}}}})}}return Q},bindDownloadComplete:function(H,e){this._downloadComplete[this._downloadComplete.length]={id:H,func:e}},unbindDownloadComplete:function(H){for(var e=0;e<this._downloadComplete.length;e++){if(this._downloadComplete[e].id==H){this._downloadComplete[e].func=null;this._downloadComplete.splice(e,1);break}}},callDownloadComplete:function(){for(var e=0;e<this._downloadComplete.length;e++){var H=this._downloadComplete[e];if(H.func!=null){H.func()}}},setSource:function(e){this._source=e},generatekey:function(){var e=function(){return(((1+Math.random())*65536)|0).toString(16).substring(1)};return(e()+e()+"-"+e()+"-"+e()+"-"+e()+"-"+e()+e()+e())},getGroupedRecords:function(ak,an,W,af,al,ac,ae,ao,K){var ah=0;var aa=this;if(!K){K=0}var I=new Array();for(var N=0;N<ak.length;N++){I[N]=aa.generatekey()}if(!an){an="items"}if(!W){W="group"}if(!al){al="record"}if(!ae){ae="parentItem"}if(undefined===ac){ac="value"}var S=new Array();var L=0;var J=new Array();var R=ak.length;var am=new Array();if(!ao){var ao=this.records}var P=ao.length;var ag=function(ap){var aq=ap;if(af){i.each(af,function(){if(this.name&&this.map){aq[this.map]=aq[this.name]}})}return aq};for(var V=0;V<P;V++){var aj=ag(ao[V]);var ab=aj[aa.uniqueId];var H=new Array();var X=0;for(N=0;N<R;N++){var Q=ak[N];var ad=aj[Q];if(null==ad){continue}H[X++]={value:ad,hash:I[N]}}if(H.length!=R){break}var Y=null;var T="";var e=-1;for(var Z=0;Z<H.length;Z++){e++;var ai=H[Z].value;var M=H[Z].hash;T=T+"_"+M+"_"+ai;if(J[T]!=undefined&&J[T]!=null){Y=J[T];continue}if(Y==null){Y={level:0};Y[ae]=null;Y[W]=ai;Y[al]=aj;if(aj.expanded!==undefined){Y.expanded=aj.expanded}else{Y.expanded=false}if(ac){Y[ac]=aj[ac]}Y[an]=new Array();var O=S.length+K;if(!this._source.id||typeof aj.uid==="number"||isFinite(aj.uid)){O="Row"+O}Y.uid=O;S[L++]=Y}else{var U={level:Y.level+1};U[ae]=Y;U[W]=ai;U[an]=new Array();U[al]=aj;if(aj.expanded!==undefined){U.expanded=aj.expanded}else{U.expanded=false}if(ac){U[ac]=aj[ac]}U.uid=Y.uid+"_"+Y[an].length;Y[an][Y[an].length]=U;Y=U}J[T]=Y}if(aj){aj.leaf=true}if(Y!=null){if(this._source.id==null){if(undefined==aj.uid){aj.uid=Y.uid+"_"+Y[an].length}else{if(aj.uid.toString().indexOf(Y.uid)==-1){aj.uid=Y.uid+"_"+aj.uid}}}aj[ae]=Y;aj.level=Y.level+1;Y[an][Y[an].length]=aj}else{if(undefined==aj.uid){aj.uid=this.generatekey()}}}return S},getRecordsHierarchy:function(L,J,aa,U,H){var e=new Array();var I=this.records;if(H){I=H}if(this.records.length==0){return null}var Y=aa!=null?aa:"items";var R=[];var ab=I;var O=ab.length;var P=(this._source&&this._source.hierarchy)?this._source.hierarchy.reservedNames:null;var W=function(ac){var ad=ac;if(U){i.each(U,function(){if(this.name&&this.map){ad[this.map]=ad[this.name]}})}return ad};for(var X=0;X<O;X++){var Z=i.extend({},ab[X]);var T=Z[J];var S=Z[L];R[S]={parentid:T,item:Z}}for(var X=0;X<O;X++){var Z=i.extend({},ab[X]);var T=Z[J];var S=Z[L];if(R[T]!=undefined){var Z={parentid:T,item:R[S].item};var Q=R[T].item;if(!Q[Y]){Q[Y]=[]}var M=Q[Y].length;var K=Z.item;if(!P){if(K.parent==undefined){K.parent=Q}}else{if(K[P.parent]==undefined){K[P.parent]=Q}}var N=W(K);Q[Y][M]=N;R[T].item=Q;R[S]=Z}else{var K=R[S].item;if(!P){if(K.parent==undefined){K.parent=null}}else{if(K[P.parent]==undefined){K[P.parent]=null}}var N=W(K);if(!P){N.level=0}else{N[P.level]=0}e[e.length]=N}}if(e.length!=0){var V=function(af,ac){for(var ad=0;ad<ac.length;ad++){if(!P){ac[ad].level=af}else{ac[ad][P.level]=af}var ae=ac[ad][Y];if(ae){if(ae.length>0){V(af+1,ae)}else{if(!P){ac[ad].leaf=true}else{ac[ad][P.leaf]=true}}}else{if(!P){ac[ad].leaf=true}else{ac[ad][P.leaf]=true}}}};V(0,e)}return e},bindBindingUpdate:function(H,e){this._bindingUpdate[this._bindingUpdate.length]={id:H,func:e}},unbindBindingUpdate:function(H){for(var e=0;e<this._bindingUpdate.length;e++){if(this._bindingUpdate[e].id==H){this._bindingUpdate[e].func=null;this._bindingUpdate.splice(e,1);break}}},callBindingUpdate:function(e){for(var I=0;I<this._bindingUpdate.length;I++){var H=this._bindingUpdate[I];if(H.func!=null){H.func(e)}}},getid:function(N,H,K){if(N!=null&&N.name!=undefined){if(N.name){var e=i(H).attr(N.name);if(e!=null&&e.toString().length>0){return e}else{if(N.map){try{var e=i(H).attr(N.map);if(e!=null&&e.toString().length>0){return e}else{if(i(N.map,H).length>0){return i(N.map,H).text()}else{if(i(N.name,H).length>0){return i(N.name,H).text()}}}}catch(J){return K}}}return}}if(i(N,H).length>0){return i(N,H).text()}if(N){if(N.toString().length>0){var e=i(H).attr(N);if(e!=null&&e.toString().length>0){return i.trim(e).split(" ").join("").replace(/([ #;?%&,.+*~\':"!^$[\]()=>|\/\\@])/g,"")}else{var I=N.split(this.mapChar);if(I.length>1){var M=H;for(var L=0;L<I.length;L++){if(M!=undefined){M=M[I[L]]}}if(M!=undefined){return M}}else{if(H[N]!=undefined){return H[N]}}}}}return K},loadjson:function(af,ag,S){if(typeof(af)=="string"){af=i.parseJSON(af)}if(S.root==undefined){S.root=""}if(S.record==undefined){S.record=""}var af=af||ag;if(!af){af=[]}var ae=this;if(S.root!=""){var K=S.root.split(ae.mapChar);if(K.length>1){var ab=af;for(var R=0;R<K.length;R++){if(ab!=undefined){ab=ab[K[R]]}}af=ab}else{if(af[S.root]!==undefined){af=af[S.root]}else{if(af[0]&&af[0][S.root]!==undefined){af=af[0][S.root]}else{i.each(af,function(ai){var ah=this;if(this==S.root){af=this;return false}else{if(this[S.root]!=undefined){af=this[S.root]}}})}}if(!af){var K=S.root.split(ae.mapChar);if(K.length>0){var ab=af;for(var R=0;R<K.length;R++){if(ab!=undefined){ab=ab[K[R]]}}af=ab}}}}else{if(!af.length){for(var O in af){if(i.isArray(af[O])){af=af[O];break}}}}if(af!=null&&af.length==undefined){af=i.makeArray(af)}if(af==null||af==undefined||af=="undefined"||af.length==undefined){throw new Error("jqxDataAdapter: JSON Parse error! Invalid JSON. Please, check your JSON or your jqxDataAdapter initialization!");return}if(af.length==0){this.totalrecords=0;return}var J=af.length;this.totalrecords=this.virtualmode?(S.totalrecords||J):J;this.records=new Array();this.originaldata=new Array();var X=this.records;var U=!this.pageable?S.recordstartindex:this.pagesize*this.pagenum;this.recordids=new Array();if(S.loadallrecords){U=0;J=this.totalrecords}var Q=0;if(this.virtualmode){U=!this.pageable?S.recordstartindex:this.pagesize*this.pagenum;Q=U;U=0;J=this.totalrecords}var Z=S.datafields?S.datafields.length:0;if(Z==0){var e=af[0];var ac=new Array();for(var O in e){var H=O;ac[ac.length]={name:H}}S.datafields=ac;S.generatedfields=S.datafields;Z=ac.length}var M=U;for(var W=U;W<J;W++){var I=af[W];if(I==undefined){break}if(S.record&&S.record!=""){I=I[S.record];if(I==undefined){continue}}var ad=this.getid(S.id,I,W);if(typeof(ad)==="object"){ad=W}if(!this.recordids[ad]){this.recordids[ad]=I;var L={};for(var V=0;V<Z;V++){var N=S.datafields[V];var T="";if(undefined==N||N==null){continue}if(N.map){if(i.isFunction(N.map)){T=N.map(I)}else{var K=N.map.split(ae.mapChar);if(K.length>0){var aa=I;for(var R=0;R<K.length;R++){if(aa!=undefined){aa=aa[K[R]]}}T=aa}else{T=I[N.map]}}if(T!=undefined&&T!=null){T=this.getvaluebytype(T,N)}else{if(T==undefined&&T!=null){T=""}}}if(T==""&&!N.map){T=I[N.name];if(T==undefined&&T!=null){T=""}if(N.value!=undefined){if(T!=undefined){var Y=T[N.value];if(Y!=undefined){T=Y}}}}T=this.getvaluebytype(T,N);if(N.displayname!=undefined){L[N.displayname]=T}else{L[N.name]=T}if(N.type==="array"){var P=function(ak){if(!ak){return}for(var aq=0;aq<ak.length;aq++){var an=ak[aq];if(!an){continue}for(var ao=0;ao<Z;ao++){var aj=S.datafields[ao];var ap="";if(undefined==aj||aj==null){continue}if(aj.map){if(i.isFunction(aj.map)){ap=aj.map(an)}else{var ah=aj.map.split(ae.mapChar);if(ah.length>0){var am=an;for(var ai=0;ai<ah.length;ai++){if(am!=undefined){am=am[ah[ai]]}}ap=am}else{ap=an[aj.map]}}if(ap!=undefined&&ap!=null){ap=this.getvaluebytype(ap,aj)}else{if(ap==undefined&&ap!=null){ap=""}}}if(ap==""&&!aj.map){ap=an[aj.name];if(ap==undefined&&ap!=null){ap=""}if(aj.value!=undefined){if(ap!=undefined){var al=ap[aj.value];if(al!=undefined){ap=al}}}}ap=this.getvaluebytype(ap,aj);if(aj.displayname!=undefined){an[aj.displayname]=ap}else{an[aj.name]=ap}if(aj.type==="array"){P.call(this,ap)}}}};P.call(this,T)}}if(S.recordendindex<=0||U<S.recordendindex){X[Q+M]=new Object(L);X[Q+M].uid=ad;this.originaldata[Q+M]=new Object(X[W]);M++}}}this.records=X;this.cachedrecords=this.records},loadxml:function(K,aj,V){if(typeof(K)=="string"){K=aj=i(i.parseXML(K));K=null}if(V.root==undefined){V.root=""}if(V.record==undefined){V.record=""}var K;if(i.jqx.browser.msie&&aj){if(aj.xml!=undefined){K=i(V.root+" "+V.record,i.parseXML(aj.xml))}else{K=K||i(V.root+" "+V.record,aj)}}else{K=K||i(V.root+" "+V.record,aj)}if(!K){K=[]}var J=K.length;if(K.length==0){return}this.totalrecords=this.virtualmode?(V.totalrecords||J):J;this.records=new Array();this.originaldata=new Array();var ab=this.records;var Y=!this.pageable?V.recordstartindex:this.pagesize*this.pagenum;this.recordids=new Array();if(V.loadallrecords){Y=0;J=this.totalrecords}var T=0;if(this.virtualmode){Y=!this.pageable?V.recordstartindex:this.pagesize*this.pagenum;T=Y;Y=0;J=this.totalrecords}var ad=V.datafields?V.datafields.length:0;if(ad==0){var e=K[0];var ag=new Array();for(var S in e){var H=S;ag[ag.length]={name:H}}V.datafields=ag;V.generatedfields=V.datafields;ad=ag.length}var U=Y;var af=false;for(var aa=Y;aa<J;aa++){var I=K[aa];if(I==undefined){break}var ai=this.getid(V.id,I,aa);if(!this.recordids[ai]){this.recordids[ai]=I;var L={};var P=false;if(V.hierarchy&&V.hierarchy.root){P=true}for(var Z=0;Z<ad;Z++){var Q=V.datafields[Z];var X="";if(undefined==Q||Q==null){continue}if(Q.map){if(i.isFunction(Q.map)){X=Q.map(I)}else{var M=Q.map.indexOf("[");if(M<0){X=i(Q.map,I);if(X.length==1){X=X.text()}else{af=true;var ah=new Array();for(var ac=0;ac<X.length;ac++){ah.push(i(X[ac]).text())}X=ah;if(P&&ah.length>0){X=ah[0]}}}else{var ae=Q.map.substring(0,M-1);var O=Q.map.indexOf("]");var R=Q.map.substring(M+1,O);X=i(ae,I).attr(R);if(X==undefined){X=i(I).attr(R)}if(X==undefined){X=""}}if(X==""){X=i(I).attr(Q.map);if(X==undefined){X=""}}}}if(X==""){X=i(Q.name,I);if(X.length==1){X=X.text()}else{var ah=new Array();for(var ac=0;ac<X.length;ac++){ah.push(i(X[ac]).text())}X=ah;if(P&&ah.length>0){X=ah[0]}}if(X==""){X=i(I).attr(Q.name);if(X==undefined){X=""}}if(X==""){if(I.nodeName&&I.nodeName==Q.name&&I.firstChild){X=i(I.firstChild).text()}}}var W=X;X=this.getvaluebytype(X,Q);if(Q.displayname!=undefined){L[Q.displayname]=X}else{L[Q.name]=X}}if(V.recordendindex<=0||Y<V.recordendindex){ab[T+U]=i.extend({},L);ab[T+U].uid=ai;this.originaldata[T+U]=i.extend({},ab[aa]);U++}}}if(V.hierarchy&&V.hierarchy.root){for(var aa=Y;aa<J;aa++){var I=K[aa];var N=ab[aa];if(i(I).parent().length>0){var ai=this.getid(V.id,i(I).parents(V.hierarchy.record+":first"));N.parentuid=ai}else{N.parentuid=null}}}this.records=ab;this.cachedrecords=this.records},loadics:function(N,H){if(N==null){return}var S=H.rowDelimiter||this.rowDelimiter||"\n";var R=N.split(S);var K=R.length;var Q=N.split("\r");if(K==1&&Q.length>1){R=Q;K=R.length}this.records=new Array();this.originaldata=new Array();var L=this.records;this.recordids=new Array();var I=0;var P=function(V){var T=/^(\d{4})(\d{2})(\d{2})(T(\d{2})(\d{2})(\d{2})Z)?$/;var U=T.exec(V);if(!U){throw new Error("Invalid UNTIL value: "+V)}return new Date(Date.UTC(U[1],U[2]-1,U[3],U[5]||0,U[6]||0,U[7]||0))};for(var M=0;M<K;M++){var O=R[M];if(O=="BEGIN:VEVENT"){var e={};continue}if(O.indexOf("SUMMARY")>=0){e.SUMMARY=O.substring(O.indexOf("SUMMARY")+8);continue}if(O.indexOf("LOCATION")>=0){e.LOCATION=O.substring(O.indexOf("LOCATION")+9);continue}if(O.indexOf("DESCRIPTION")>=0){e.DESCRIPTION=O.substring(O.indexOf("DESCRIPTION")+12);continue}if(O.indexOf("RRULE")>=0){e.RRULE=O.substring(O.indexOf("RRULE")+6);continue}if(O.indexOf("EXDATE")>=0){var J=O.substring(O.indexOf("EXDATE")+7);e.EXDATE=J;continue}if(O.indexOf("DTEND")>=0){e.DTEND=P(O.substring(O.indexOf("DTEND")+6));continue}if(O.indexOf("DTSTART")>=0){e.DTSTART=P(O.substring(O.indexOf("DTSTART")+8));continue}if(O.indexOf("UID")>=0){e.uid=e.UID=O.substring(O.indexOf("UID")+4);continue}if(O.indexOf("STATUS")>=0){e.STATUS=O.substring(O.indexOf("STATUS")+7);continue}if(O=="END:VEVENT"){L.push(e);continue}}this.records=L;this.cachedrecords=this.records},loadtext:function(Y,P){if(Y==null){return}var e=P.rowDelimiter||this.rowDelimiter||"\n";var L=Y.split(e);var J=L.length;var X=Y.split("\r");if(J==1&&X.length>1){L=X;J=L.length}this.totalrecords=this.virtualmode?(P.totalrecords||J):J;this.records=new Array();this.originaldata=new Array();var U=this.records;var R=!this.pageable?P.recordstartindex:this.pagesize*this.pagenum;this.recordids=new Array();if(P.loadallrecords){R=0;J=this.totalrecords}var N=0;if(this.virtualmode){R=!this.pageable?P.recordstartindex:this.pagesize*this.pagenum;N=R;R=0;J=this.totalrecords}var V=P.datafields.length;var O=P.columnDelimiter||this.columnDelimiter;if(!O){O=(P.datatype==="tab"||P.datatype==="tsv")?"\t":","}for(var T=R;T<J;T++){var I=L[T];var W=null;if(!this.recordids[W]){if(P.id==null){W=T;this.recordids[W]=I}var K={};var H=L[T].split(O);for(var S=0;S<V;S++){if(S>=H.length){continue}var M=P.datafields[S];var Q=H[S];if(M.map&&i.isFunction(M.map)){Q=M.map(I)}if(M.type){Q=this.getvaluebytype(Q,M)}var Z=M.map||M.name||S.toString();K[Z]=Q;if(P.id!=null){if(P.id===M.name){W=Q;this.recordids[W]=I}}}if(W==null){W=T}U[N+T]=i.extend({},K);U[N+T].uid=W;this.originaldata[N+T]=i.extend({},U[T])}}this.records=U;this.cachedrecords=this.records},getvaluebytype:function(L,H){var J=L;if(L==null){return L}if(i.isArray(L)&&H.type!="array"){for(var I=0;I<L.length;I++){L[I]=this.getvaluebytype(L[I],H)}return L}if(H.type=="date"){if(L=="NaN"){L=""}else{if(L&&L instanceof Date){return L}var K=new Date(L);if(typeof L=="string"){if(H.format){var e=i.jqx.dataFormat.parsedate(L,H.format);if(e!=null){K=e}}}if(K.toString()=="NaN"||K.toString()=="Invalid Date"){if(i.jqx.dataFormat){L=i.jqx.dataFormat.tryparsedate(L)}else{L=K}}else{L=K}if(L==null){L=J}}}else{if(H.type=="float"||H.type=="number"||H.type=="decimal"){if(L=="NaN"){L=""}else{var L=parseFloat(L);if(isNaN(L)){L=J}}}else{if(H.type=="int"||H.type=="integer"){var L=parseInt(L);if(isNaN(L)){L=J}}else{if(H.type=="bool"||H.type=="boolean"){if(L!=null){if(L.toLowerCase!=undefined){if(L.toLowerCase()=="false"){L=false}else{if(L.toLowerCase()=="true"){L=true}}}}if(L==1){L=true}else{if(L==0&&L!==""){L=false}else{L=""}}}}}}return L}};i.jqx.dataFormat={};i.extend(i.jqx.dataFormat,{regexTrim:/^\s+|\s+$/g,regexInfinity:/^[+-]?infinity$/i,regexHex:/^0x[a-f0-9]+$/i,regexParseFloat:/^[+-]?\d*\.?\d*(e[+-]?\d+)?$/,toString:Object.prototype.toString,isBoolean:function(e){return typeof e==="boolean"},isObject:function(e){return(e&&(typeof e==="object"||i.isFunction(e)))||false},isDate:function(e){return e instanceof Date},arrayIndexOf:function(J,I){if(J.indexOf){return J.indexOf(I)}for(var e=0,H=J.length;e<H;e++){if(J[e]===I){return e}}return -1},isString:function(e){return typeof e==="string"},isNumber:function(e){return typeof e==="number"&&isFinite(e)},isNull:function(e){return e===null},isUndefined:function(e){return typeof e==="undefined"},isValue:function(e){return(this.isObject(e)||this.isString(e)||this.isNumber(e)||this.isBoolean(e))},isEmpty:function(e){if(!this.isString(e)&&this.isValue(e)){return false}else{if(!this.isValue(e)){return true}}e=i.trim(e).replace(/\&nbsp\;/ig,"").replace(/\&#160\;/ig,"");return e===""},startsWith:function(H,e){return H.indexOf(e)===0},endsWith:function(H,e){return H.substr(H.length-e.length)===e},trim:function(e){return(e+"").replace(this.regexTrim,"")},isArray:function(e){return this.toString.call(e)==="[object Array]"},defaultcalendar:function(){var e={"/":"/",":":":",firstDay:0,days:{names:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],namesAbbr:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],namesShort:["Su","Mo","Tu","We","Th","Fr","Sa"]},months:{names:["January","February","March","April","May","June","July","August","September","October","November","December",""],namesAbbr:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec",""]},AM:["AM","am","AM"],PM:["PM","pm","PM"],eras:[{name:"A.D.",start:null,offset:0}],twoDigitYearMax:2029,patterns:{d:"M/d/yyyy",D:"dddd, MMMM dd, yyyy",t:"h:mm tt",T:"h:mm:ss tt",f:"dddd, MMMM dd, yyyy h:mm tt",F:"dddd, MMMM dd, yyyy h:mm:ss tt",M:"MMMM dd",Y:"yyyy MMMM",S:"yyyy\u0027-\u0027MM\u0027-\u0027dd\u0027T\u0027HH\u0027:\u0027mm\u0027:\u0027ss",ISO:"yyyy-MM-dd hh:mm:ss",ISO2:"yyyy-MM-dd HH:mm:ss",d1:"dd.MM.yyyy",d2:"dd-MM-yyyy",d3:"MM-dd-yyyy",zone1:"yyyy-MM-ddTHH:mm:ss-HH:mm",zone2:"yyyy-MM-ddTHH:mm:ss+HH:mm",custom:"yyyy-MM-ddTHH:mm:ss.fff",custom2:"yyyy-MM-dd HH:mm:ss.fff"},percentsymbol:"%",currencysymbol:"$",currencysymbolposition:"before",decimalseparator:".",thousandsseparator:","};return e},expandFormat:function(K,J){J=J||"F";var I,H=K.patterns,e=J.length;if(e===1){I=H[J];if(!I){throw"Invalid date format string '"+J+"'."}J=I}else{if(e===2&&J.charAt(0)==="%"){J=J.charAt(1)}}return J},getEra:function(I,H){if(!H){return 0}if(typeof I==="string"){return 0}var L,K=I.getTime();for(var J=0,e=H.length;J<e;J++){L=H[J].start;if(L===null||K>=L){return J}}return 0},toUpper:function(e){return e.split("\u00A0").join(" ").toUpperCase()},toUpperArray:function(e){var J=[];for(var I=0,H=e.length;I<H;I++){J[I]=this.toUpper(e[I])}return J},getEraYear:function(H,J,e,K){var I=H.getFullYear();if(!K&&J.eras){I-=J.eras[e].offset}return I},toUpper:function(e){if(e){return e.toUpperCase()}return""},getDayIndex:function(K,J,H){var e,L=K.days,I=K._upperDays;if(!I){K._upperDays=I=[this.toUpperArray(L.names),this.toUpperArray(L.namesAbbr),this.toUpperArray(L.namesShort)]}J=J.toUpperCase();if(H){e=this.arrayIndexOf(I[1],J);if(e===-1){e=this.arrayIndexOf(I[2],J)}}else{e=this.arrayIndexOf(I[0],J)}return e},getMonthIndex:function(N,M,I){var e=N.months,H=N.monthsGenitive||N.months,K=N._upperMonths,L=N._upperMonthsGen;if(!K){N._upperMonths=K=[this.toUpperArray(e.names),this.toUpperArray(e.namesAbbr)];N._upperMonthsGen=L=[this.toUpperArray(H.names),this.toUpperArray(H.namesAbbr)]}M=this.toUpper(M);var J=this.arrayIndexOf(I?K[1]:K[0],M);if(J<0){J=this.arrayIndexOf(I?L[1]:L[0],M)}return J},appendPreOrPostMatch:function(J,e){var I=0,L=false;for(var K=0,H=J.length;K<H;K++){var M=J.charAt(K);switch(M){case"'":if(L){e.push("'")}else{I++}L=false;break;case"\\":if(L){e.push("\\")}L=!L;break;default:e.push(M);L=false;break}}return I},getTokenRegExp:function(){return/\/|dddd|ddd|dd|d|MMMM|MMM|MM|M|yyyy|yy|y|hh|h|HH|H|mm|m|ss|s|tt|t|fff|ff|f|zzz|zz|z|gg|g/g},formatlink:function(e,I){var H="";if(I&&I.target){H="target="+I.target}if(H!=""){return"<a "+H+' href="'+e+'">'+e+"</a>"}return'<a href="'+e+'">'+e+"</a>"},formatemail:function(e){return'<a href="mailto:'+e+'">'+e+"</a>"},formatNumber:function(e,I,H){return this.formatnumber(e,I,H)},formatnumber:function(T,S,O){if(O==undefined||O==null||O==""){O=this.defaultcalendar()}if(S===""||S===null){return T}if(!this.isNumber(T)){T*=1}var P;if(S.length>1){P=parseInt(S.slice(1),10)}var V={};var Q=S.charAt(0).toUpperCase();V.thousandsSeparator=O.thousandsseparator;V.decimalSeparator=O.decimalseparator;switch(Q){case"D":case"d":case"F":case"f":V.decimalPlaces=P;break;case"N":case"n":V.decimalPlaces=0;break;case"C":case"c":V.decimalPlaces=P;if(O.currencysymbolposition=="before"){V.prefix=O.currencysymbol}else{V.suffix=O.currencysymbol}break;case"P":case"p":V.suffix=O.percentsymbol;V.decimalPlaces=P;break;default:throw"Bad number format specifier: "+Q}if(this.isNumber(T)){var K=(T<0);var I=T+"";var R=(V.decimalSeparator)?V.decimalSeparator:".";var e;if(this.isNumber(V.decimalPlaces)){var L=V.decimalPlaces;var N=Math.pow(10,L);I=(T*N).toFixed(0)/N+"";e=I.lastIndexOf(".");if(L>0){if(e<0){I+=R;e=I.length-1}else{if(R!=="."){I=I.replace(".",R)}}while((I.length-1-e)<L){I+="0"}}}else{var I=T+"";e=I.lastIndexOf(".");if(e>0&&L==undefined){if(R!=="."){I=I.replace(".",R)}}}if(V.thousandsSeparator){var U=V.thousandsSeparator;e=I.lastIndexOf(R);e=(e>-1)?e:I.length;var J=I.substring(e);var H=-1;for(var M=e;M>0;M--){H++;if((H%3===0)&&(M!==e)&&(!K||(M>1))){J=U+J}J=I.charAt(M-1)+J}I=J}I=(V.prefix)?V.prefix+I:I;I=(V.suffix)?I+V.suffix:I;return I}else{return T}},tryparsedate:function(ak,al){if(al==undefined||al==null){al=this.defaultcalendar()}var P=this;if(ak==""){return null}if(ak!=null&&!ak.substring){ak=ak.toString()}if(ak!=null&&ak.substring(0,6)=="/Date("){var au=/^\/Date\((-?\d+)(\+|-)?(\d+)?\)\/$/;var ar=new Date(+ak.replace(/\/Date\((\d+)\)\//,"$1"));if(ar=="Invalid Date"){var an=ak.match(/^\/Date\((\d+)([-+]\d\d)(\d\d)\)\/$/);var ar=null;if(an){ar=new Date(1*an[1]+3600000*an[2]+60000*an[3])}}if(ar==null||ar=="Invalid Date"||isNaN(ar)){var Q=au.exec(ak);if(Q){var T=new Date(parseInt(Q[1]));if(Q[2]){var Z=parseInt(Q[3]);if(Q[2]==="-"){Z=-Z}var V=T.getUTCMinutes();T.setUTCMinutes(V-Z)}if(!isNaN(T.valueOf())){return T}}}return ar}var N=al.patterns;for(var S in N){ar=P.parsedate(ak,N[S],al);if(ar){if(S=="ISO"){var ac=P.parsedate(ak,N.ISO2,al);if(ac){return ac}}return ar}}if(ak!=null){var ac=null;var L=[":","/","-"];var ap=true;for(var O=0;O<L.length;O++){if(ak.indexOf(L[O])!=-1){ap=false}}if(ap){var av=new Number(ak);if(!isNaN(av)){return new Date(av)}}}if(i.type(ak)==="string"){var ag=P;ak=ag.trim(ak);var am=[":","/","-"," ",","];var M=function(az,ax,ay){return ay.replace(new RegExp(az,"g"),ax)};ak=M(", ",",",ak);var I="";var Y=ak;if(ak.indexOf(":")>=0){I=ak.substring(ak.indexOf(":")-2);I=ag.trim(I);Y=ak.substring(0,ak.indexOf(":")-2)}else{if(ak.toUpperCase().indexOf("AM")>=0){I=ak.substring(ak.toUpperCase().indexOf("AM")-2);I=ag.trim(I);Y=ak.substring(0,ak.toUpperCase().indexOf("AM")-2)}else{if(ak.toUpperCase().indexOf("PM")>=0){I=ak.substring(ak.toUpperCase().indexOf("PM")-2);I=ag.trim(I);Y=ak.substring(0,ak.toUpperCase().indexOf("PM")-2)}}}var e=new Date();var aj=false;if(Y){for(var aq=0;aq<am.length;aq++){if(Y.indexOf(am[aq])>=0){L=Y.split(am[aq]);break}}var H=new Array();var W=new Array();var ae=new Array();var R=null;var aw=null;for(var aq=0;aq<L.length;aq++){var O=L[aq];var ad=ag.parsedate(O,"d",al)||ag.parsedate(O,"dd",al)||ag.parsedate(O,"ddd",al)||ag.parsedate(O,"dddd",al);if(ad){if(O.length<=2){R=aq;H.push(ad.getDate());break}}}for(var aq=0;aq<L.length;aq++){var O=L[aq];var U=ag.parsedate(O,"M",al)||ag.parsedate(O,"MM",al)||ag.parsedate(O,"MMM",al)||ag.parsedate(O,"MMMM",al);if(U){if(R!=undefined&&R==aq){continue}W.push(U.getMonth());if(O.length>2){aw=aq;break}}}for(var aq=0;aq<L.length;aq++){var O=L[aq];var af=ag.parsedate(O,"yyyy",al);if(af){if(R!=undefined&&R==aq){continue}if(aw!=undefined&&aw==aq){continue}ae.push(af.getFullYear())}}var ao=new Array();for(var at=0;at<H.length;at++){for(var an=0;an<W.length;an++){for(var ai=0;ai<ae.length;ai++){var T=new Date(ae[ai],W[an],H[at]);if(ae[ai]<1970){T.setFullYear(ae[ai])}if(T.getTime()!=NaN){ao.push(T)}}}}if(ao.length>0){e=ao[0];aj=true}}if(I){var ah=I.indexOf(":")>=0?I.split(":"):I;var K=ag.parsedate(I,"h:mm tt",al)||ag.parsedate(I,"h:mm:ss tt",al)||ag.parsedate(I,"HH:mm:ss.fff",al)||ag.parsedate(I,"HH:mm:ss.ff",al)||ag.parsedate(I,"HH:mm:ss.tttt",al)||ag.parsedate(I,"HH:mm:ss",al)||ag.parsedate(I,"HH:mm",al)||ag.parsedate(I,"HH",al);var X=0,J=0,aa=0,ab=0;if(K&&K.getTime()!=NaN){X=K.getHours();J=K.getMinutes();aa=K.getSeconds();ab=K.getMilliseconds()}else{if(ah.length==1){X=parseInt(ah[0])}if(ah.length==2){X=parseInt(ah[0]);J=parseInt(ah[1])}if(ah.length==3){X=parseInt(ah[0]);J=parseInt(ah[1]);if(ah[2].indexOf(".")>=0){aa=parseInt(ah[2].toString().split(".")[0]);ab=parseInt(ah[2].toString().split(".")[1])}else{aa=parseInt(ah[2])}}if(ah.length==4){X=parseInt(ah[0]);J=parseInt(ah[1]);aa=parseInt(ah[2]);ab=parseInt(ah[3])}}if(e&&!isNaN(X)&&!isNaN(J)&&!isNaN(aa)&&!isNaN(ab)){e.setHours(X,J,aa,ab);aj=true}}if(aj){return e}}return null},getparseregexp:function(e,R){var T=e._parseRegExp;if(!T){e._parseRegExp=T={}}else{var K=T[R];if(K){return K}}var Q=this.expandFormat(e,R).replace(/([\^\$\.\*\+\?\|\[\]\(\)\{\}])/g,"\\\\$1"),O=["^"],H=[],N=0,J=0,W=this.getTokenRegExp(),L;while((L=W.exec(Q))!==null){var V=Q.slice(N,L.index);N=W.lastIndex;J+=this.appendPreOrPostMatch(V,O);if(J%2){O.push(L[0]);continue}var I=L[0],M=I.length,S;switch(I){case"dddd":case"ddd":case"MMMM":case"MMM":case"gg":case"g":S="(\\D+)";break;case"tt":case"t":S="(\\D*)";break;case"yyyy":case"fff":case"ff":case"f":S="(\\d{"+M+"})";break;case"dd":case"d":case"MM":case"M":case"yy":case"y":case"HH":case"H":case"hh":case"h":case"mm":case"m":case"ss":case"s":S="(\\d\\d?)";break;case"zzz":S="([+-]?\\d\\d?:\\d{2})";break;case"zz":case"z":S="([+-]?\\d\\d?)";break;case"/":S="(\\"+e["/"]+")";break;default:throw"Invalid date format pattern '"+I+"'.";break}if(S){O.push(S)}H.push(L[0])}this.appendPreOrPostMatch(Q.slice(N),O);O.push("$");var U=O.join("").replace(/\s+/g,"\\s+"),P={regExp:U,groups:H};return T[R]=P},outOfRange:function(I,e,H){return I<e||I>H},expandYear:function(L,J){var H=new Date(),e=this.getEra(H);if(J<100){var I=L.twoDigitYearMax;I=typeof I==="string"?new Date().getFullYear()%100+parseInt(I,10):I;var K=this.getEraYear(H,L,e);J+=K-(K%100);if(J>I){J-=100}}return J},parsedate:function(ab,ai,W){if(W==undefined||W==null){W=this.defaultcalendar()}ab=this.trim(ab);var T=W,an=this.getparseregexp(T,ai),N=new RegExp(an.regExp).exec(ab);if(N===null){return null}var aj=an.groups,Z=null,R=null,am=null,al=null,S=null,L=0,ae,ad=0,ak=0,e=0,I=null,U=false;for(var af=0,ah=aj.length;af<ah;af++){var H=N[af+1];if(H){var aa=aj[af],K=aa.length,M=parseInt(H,10);switch(aa){case"dd":case"d":al=M;if(this.outOfRange(al,1,31)){return null}break;case"MMM":case"MMMM":am=this.getMonthIndex(T,H,K===3);if(this.outOfRange(am,0,11)){return null}break;case"M":case"MM":am=M-1;if(this.outOfRange(am,0,11)){return null}break;case"y":case"yy":case"yyyy":R=K<4?this.expandYear(T,M):M;if(this.outOfRange(R,0,9999)){return null}break;case"h":case"hh":L=M;if(L===12){L=0}if(this.outOfRange(L,0,11)){return null}break;case"H":case"HH":L=M;if(this.outOfRange(L,0,23)){return null}break;case"m":case"mm":ad=M;if(this.outOfRange(ad,0,59)){return null}break;case"s":case"ss":ak=M;if(this.outOfRange(ak,0,59)){return null}break;case"tt":case"t":U=T.PM&&(H===T.PM[0]||H===T.PM[1]||H===T.PM[2]);if(!U&&(!T.AM||(H!==T.AM[0]&&H!==T.AM[1]&&H!==T.AM[2]))){return null}break;case"f":case"ff":case"fff":e=M*Math.pow(10,3-K);if(this.outOfRange(e,0,999)){return null}break;case"ddd":case"dddd":S=this.getDayIndex(T,H,K===3);if(this.outOfRange(S,0,6)){return null}break;case"zzz":var J=H.split(/:/);if(J.length!==2){return null}ae=parseInt(J[0],10);if(this.outOfRange(ae,-12,13)){return null}var P=parseInt(J[1],10);if(this.outOfRange(P,0,59)){return null}I=(ae*60)+(this.startsWith(H,"-")?-P:P);break;case"z":case"zz":ae=M;if(this.outOfRange(ae,-12,13)){return null}I=ae*60;break;case"g":case"gg":var V=H;if(!V||!T.eras){return null}V=this.trim(V.toLowerCase());for(var ag=0,ac=T.eras.length;ag<ac;ag++){if(V===T.eras[ag].name.toLowerCase()){Z=ag;break}}if(Z===null){return null}break}}}var Q=new Date(),Y,O=T.convert;Y=Q.getFullYear();if(R===null){R=Y}else{if(T.eras){R+=T.eras[(Z||0)].offset}}if(am===null){am=0}if(al===null){al=1}if(O){Q=O.toGregorian(R,am,al);if(Q===null){return null}}else{Q.setFullYear(R,am,al);if(Q.getDate()!==al){return null}if(S!==null&&Q.getDay()!==S){return null}}if(U&&L<12){L+=12}Q.setHours(L,ad,ak,e);if(I!==null){var X=Q.getMinutes()-(I+Q.getTimezoneOffset());Q.setHours(Q.getHours()+parseInt(X/60,10),X%60)}return Q},cleardatescache:function(){this.datescache=new Array()},formatDate:function(e,I,H){return this.formatdate(e,I,H)},formatdate:function(Z,ad,U){if(U==undefined||U==null){U=this.defaultcalendar()}if(typeof Z==="string"){return Z}var J=Z.toString()+"_"+ad;if(this.datescache&&this.datescache[J]){if(ad.indexOf("f")==-1){return this.datescache[J]}}if(!ad||!ad.length||ad==="i"){var af;af=this.formatDate(Z,U.patterns.F,U);return af}var aa=U.eras,H=ad==="s";ad=this.expandFormat(U,ad);af=[];var M,ab=["0","00","000"],Q,R,e=/([^d]|^)(d|dd)([^d]|$)/g,ae=0,W=this.getTokenRegExp(),I;function O(ag,aj){var ai,ah=ag+"";if(aj>1&&ah.length<aj){ai=(ab[aj-2]+ah);return ai.substr(ai.length-aj,aj)}else{ai=ah}return ai}function ac(){if(Q||R){return Q}Q=e.test(ad);R=true;return Q}function K(ah,ag){if(I){return I[ag]}if(ah.getMonth!=undefined){switch(ag){case 0:return ah.getFullYear();case 1:return ah.getMonth();case 2:return ah.getDate()}}}for(;;){var N=W.lastIndex,V=W.exec(ad);var S=ad.slice(N,V?V.index:ad.length);ae+=this.appendPreOrPostMatch(S,af);if(!V){break}if(ae%2){af.push(V[0]);continue}var X=V[0],L=X.length;switch(X){case"ddd":case"dddd":var T=(L===3)?U.days.namesAbbr:U.days.names;af.push(T[Z.getDay()]);break;case"d":case"dd":Q=true;af.push(O(K(Z,2),L));break;case"MMM":case"MMMM":var Y=K(Z,1);af.push(U.months[L===3?"namesAbbr":"names"][Y]);break;case"M":case"MM":af.push(O(K(Z,1)+1,L));break;case"y":case"yy":case"yyyy":Y=this.getEraYear(Z,U,this.getEra(Z,aa),H);if(L<4){Y=Y%100}af.push(O(Y,L));break;case"h":case"hh":M=Z.getHours()%12;if(M===0){M=12}af.push(O(M,L));break;case"H":case"HH":af.push(O(Z.getHours(),L));break;case"m":case"mm":af.push(O(Z.getMinutes(),L));break;case"s":case"ss":af.push(O(Z.getSeconds(),L));break;case"t":case"tt":Y=Z.getHours()<12?(U.AM?U.AM[0]:" "):(U.PM?U.PM[0]:" ");af.push(L===1?Y.charAt(0):Y);break;case"f":case"ff":case"fff":af.push(O(Z.getMilliseconds(),3).substr(0,L));break;case"z":case"zz":M=Z.getTimezoneOffset()/60;af.push((M<=0?"+":"-")+O(Math.floor(Math.abs(M)),L));break;case"zzz":M=Z.getTimezoneOffset()/60;af.push((M<=0?"+":"-")+O(Math.floor(Math.abs(M)),2)+":"+O(Math.abs(Z.getTimezoneOffset()%60),2));break;case"g":case"gg":if(U.eras){af.push(U.eras[this.getEra(Z,aa)].name)}break;case"/":af.push(U["/"]);break;default:throw"Invalid date format pattern '"+X+"'.";break}}var P=af.join("");if(!this.datescache){this.datescache=new Array()}this.datescache[J]=P;return P}});i.jqx.data={};var l,E,p=/#.*$/,a=/^(.*?):[ \t]*([^\r\n]*)\r?$/mg,f=/^(?:about|app|app\-storage|.+\-extension|file|res|widget):$/,j=/^(?:GET|HEAD)$/,o=/^\/\//,k=/\?/,b=/<script\b[^<]*(?:(?!<\/script>)<[^<]*)*<\/script>/gi,d=/([?&])_=[^&]*/,h=/^([\w\+\.\-]+:)(?:\/\/([^\/?#:]*)(?::(\d+)|)|)/,t=/\s+/,F=i.fn.load,G={},C={},q=["*/"]+["*"];try{E=location.href}catch(A){E=document.createElement("a");E.href="";E=E.href}l=h.exec(E.toLowerCase())||[];function r(e){return function(K,M){if(typeof K!=="string"){M=K;K="*"}var H,N,O,J=K.toLowerCase().split(t),I=0,L=J.length;if(i.isFunction(M)){for(;I<L;I++){H=J[I];O=/^\+/.test(H);if(O){H=H.substr(1)||"*"}N=e[H]=e[H]||[];N[O?"unshift":"push"](M)}}}}function v(H,Q,L,O,N,J){N=N||Q.dataTypes[0];J=J||{};J[N]=true;var P,M=H[N],I=0,e=M?M.length:0,K=(H===G);for(;I<e&&(K||!P);I++){P=M[I](Q,L,O);if(typeof P==="string"){if(!K||J[P]){P=undefined}else{Q.dataTypes.unshift(P);P=v(H,Q,L,O,P,J)}}}if((K||!P)&&!J["*"]){P=v(H,Q,L,O,"*",J)}return P}function u(I,J){var H,e,K=i.jqx.data.ajaxSettings.flatOptions||{};for(H in J){if(J[H]!==undefined){(K[H]?I:(e||(e={})))[H]=J[H]}}if(e){i.extend(true,I,e)}}i.extend(i.jqx.data,{ajaxSetup:function(H,e){if(e){u(H,i.jqx.data.ajaxSettings)}else{e=H;H=i.jqx.data.ajaxSettings}u(H,e);return H},ajaxSettings:{url:E,isLocal:f.test(l[1]),global:true,type:"GET",contentType:"application/x-www-form-urlencoded; charset=UTF-8",processData:true,async:true,accepts:{xml:"application/xml, text/xml",html:"text/html",text:"text/plain",json:"application/json, text/javascript","*":q},contents:{xml:/xml/,html:/html/,json:/json/},responseFields:{xml:"responseXML",text:"responseText"},converters:{"* text":window.String,"text html":true,"text json":i.parseJSON,"text xml":i.parseXML},flatOptions:{context:true,url:true}},ajaxPrefilter:r(G),ajaxTransport:r(C),ajax:function(M,J){if(typeof M==="object"){J=M;M=undefined}J=J||{};var P,ad,K,Y,R,V,I,X,Q=i.jqx.data.ajaxSetup({},J),af=Q.context||Q,T=af!==Q&&(af.nodeType||af instanceof i)?i(af):i.event,ae=i.Deferred(),aa=i.Callbacks("once memory"),N=Q.statusCode||{},U={},ab={},L=0,O="canceled",W={readyState:0,setRequestHeader:function(ag,ah){if(!L){var e=ag.toLowerCase();ag=ab[e]=ab[e]||ag;U[ag]=ah}return this},getAllResponseHeaders:function(){return L===2?ad:null},getResponseHeader:function(ag){var e;if(L===2){if(!K){K={};while((e=a.exec(ad))){K[e[1].toLowerCase()]=e[2]}}e=K[ag.toLowerCase()]}return e===undefined?null:e},overrideMimeType:function(e){if(!L){Q.mimeType=e}return this},abort:function(e){e=e||O;if(Y){Y.abort(e)}S(0,e);return this}};function S(ak,ag,al,ai){var e,ao,am,aj,an,ah=ag;if(L===2){return}L=2;if(R){clearTimeout(R)}Y=undefined;ad=ai||"";W.readyState=ak>0?4:0;if(al){aj=B(Q,W,al)}if(ak>=200&&ak<300||ak===304){if(Q.ifModified){an=W.getResponseHeader("Last-Modified");if(an){i.lastModified[P]=an}an=W.getResponseHeader("Etag");if(an){i.etag[P]=an}}if(ak===304){ah="notmodified";e=true}else{e=c(Q,aj);ah=e.state;ao=e.data;am=e.error;e=!am}}else{am=ah;if(!ah||ak){ah="error";if(ak<0){ak=0}}}W.status=ak;W.statusText=(ag||ah)+"";if(e){ae.resolveWith(af,[ao,ah,W])}else{ae.rejectWith(af,[W,ah,am])}W.statusCode(N);N=undefined;if(I){T.trigger("ajax"+(e?"Success":"Error"),[W,Q,e?ao:am])}aa.fireWith(af,[W,ah]);if(I){T.trigger("ajaxComplete",[W,Q]);if(!(--i.active)){i.event.trigger("ajaxStop")}}}ae.promise(W);W.success=W.done;W.error=W.fail;W.complete=aa.add;W.statusCode=function(ag){if(ag){var e;if(L<2){for(e in ag){N[e]=[N[e],ag[e]]}}else{e=ag[W.status];W.always(e)}}return this};Q.url=((M||Q.url)+"").replace(p,"").replace(o,l[1]+"//");Q.dataTypes=i.trim(Q.dataType||"*").toLowerCase().split(t);if(Q.crossDomain==null){V=h.exec(Q.url.toLowerCase());Q.crossDomain=!!(V&&(V[1]!==l[1]||V[2]!==l[2]||(V[3]||(V[1]==="http:"?80:443))!=(l[3]||(l[1]==="http:"?80:443))))}if(Q.data&&Q.processData&&typeof Q.data!=="string"){Q.data=i.param(Q.data,Q.traditional)}v(G,Q,J,W);if(L===2){return W}I=Q.global;Q.type=Q.type.toUpperCase();Q.hasContent=!j.test(Q.type);if(I&&i.active++===0){i.event.trigger("ajaxStart")}if(!Q.hasContent){if(Q.data){Q.url+=(k.test(Q.url)?"&":"?")+Q.data;delete Q.data}P=Q.url;if(Q.cache===false){var H=(new Date()).getTime(),ac=Q.url.replace(d,"$1_="+H);Q.url=ac+((ac===Q.url)?(k.test(Q.url)?"&":"?")+"_="+H:"")}}if(Q.data&&Q.hasContent&&Q.contentType!==false||J.contentType){W.setRequestHeader("Content-Type",Q.contentType)}if(Q.ifModified){P=P||Q.url;if(i.lastModified[P]){W.setRequestHeader("If-Modified-Since",i.lastModified[P])}if(i.etag[P]){W.setRequestHeader("If-None-Match",i.etag[P])}}W.setRequestHeader("Accept",Q.dataTypes[0]&&Q.accepts[Q.dataTypes[0]]?Q.accepts[Q.dataTypes[0]]+(Q.dataTypes[0]!=="*"?", "+q+"; q=0.01":""):Q.accepts["*"]);for(X in Q.headers){W.setRequestHeader(X,Q.headers[X])}if(Q.beforeSend&&(Q.beforeSend.call(af,W,Q)===false||L===2)){return W.abort()}O="abort";for(X in {success:1,error:1,complete:1}){W[X](Q[X])}Y=v(C,Q,J,W);if(!Y){S(-1,"No Transport")}else{W.readyState=1;if(I){T.trigger("ajaxSend",[W,Q])}if(Q.async&&Q.timeout>0){R=setTimeout(function(){W.abort("timeout")},Q.timeout)}try{L=1;Y.send(U,S)}catch(Z){if(L<2){S(-1,Z)}else{throw Z}}}return W},active:0,lastModified:{},etag:{}});function B(P,O,L){var K,M,J,e,H=P.contents,N=P.dataTypes,I=P.responseFields;for(M in I){if(M in L){O[I[M]]=L[M]}}while(N[0]==="*"){N.shift();if(K===undefined){K=P.mimeType||O.getResponseHeader("content-type")}}if(K){for(M in H){if(H[M]&&H[M].test(K)){N.unshift(M);break}}}if(N[0] in L){J=N[0]}else{for(M in L){if(!N[0]||P.converters[M+" "+N[0]]){J=M;break}if(!e){e=M}}J=J||e}if(J){if(J!==N[0]){N.unshift(J)}return L[J]}}function c(R,J){var P,H,N,L,O=R.dataTypes.slice(),I=O[0],Q={},K=0;if(R.dataFilter){J=R.dataFilter(J,R.dataType)}if(O[1]){for(P in R.converters){Q[P.toLowerCase()]=R.converters[P]}}for(;(N=O[++K]);){if(N!=="*"){if(I!=="*"&&I!==N){P=Q[I+" "+N]||Q["* "+N];if(!P){for(H in Q){L=H.split(" ");if(L[1]===N){P=Q[I+" "+L[0]]||Q["* "+L[0]];if(P){if(P===true){P=Q[H]}else{if(Q[H]!==true){N=L[0];O.splice(K--,0,N)}}break}}}}if(P!==true){if(P&&R["throws"]){J=P(J)}else{try{J=P(J)}catch(M){return{state:"parsererror",error:P?M:"No conversion from "+I+" to "+N}}}}}I=N}}return{state:"success",data:J}}var y=[],n=/\?/,D=/(=)\?(?=&|$)|\?\?/,z=(new Date()).getTime();i.jqx.data.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=y.pop()||(i.expando+"_"+(z++));this[e]=true;return e}});i.jqx.data.ajaxPrefilter("json jsonp",function(Q,L,P){var O,e,N,J=Q.data,H=Q.url,I=Q.jsonp!==false,M=I&&D.test(H),K=I&&!M&&typeof J==="string"&&!(Q.contentType||"").indexOf("application/x-www-form-urlencoded")&&D.test(J);if(Q.dataTypes[0]==="jsonp"||M||K){O=Q.jsonpCallback=i.isFunction(Q.jsonpCallback)?Q.jsonpCallback():Q.jsonpCallback;e=window[O];if(M){Q.url=H.replace(D,"$1"+O)}else{if(K){Q.data=J.replace(D,"$1"+O)}else{if(I){Q.url+=(n.test(H)?"&":"?")+Q.jsonp+"="+O}}}Q.converters["script json"]=function(){if(!N){i.error(O+" was not called")}return N[0]};Q.dataTypes[0]="json";window[O]=function(){N=arguments};P.always(function(){window[O]=e;if(Q[O]){Q.jsonpCallback=L.jsonpCallback;y.push(O)}if(N&&i.isFunction(e)){e(N[0])}N=e=undefined});return"script"}});i.jqx.data.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/javascript|ecmascript/},converters:{"text script":function(e){i.globalEval(e);return e}}});i.jqx.data.ajaxPrefilter("script",function(e){if(e.cache===undefined){e.cache=false}if(e.crossDomain){e.type="GET";e.global=false}});i.jqx.data.ajaxTransport("script",function(I){if(I.crossDomain){var e,H=document.head||document.getElementsByTagName("head")[0]||document.documentElement;return{send:function(J,K){e=document.createElement("script");e.async="async";if(I.scriptCharset){e.charset=I.scriptCharset}e.src=I.url;e.onload=e.onreadystatechange=function(M,L){if(L||!e.readyState||/loaded|complete/.test(e.readyState)){e.onload=e.onreadystatechange=null;if(H&&e.parentNode){H.removeChild(e)}e=undefined;if(!L){K(200,"success")}}};H.insertBefore(e,H.firstChild)},abort:function(){if(e){e.onload(0,1)}}}}});var w,x=window.ActiveXObject?function(){for(var e in w){w[e](0,1)}}:false,m=0;function g(){try{return new window.XMLHttpRequest()}catch(H){}}function s(){try{return new window.ActiveXObject("Microsoft.XMLHTTP")}catch(H){}}i.jqx.data.ajaxSettings.xhr=window.ActiveXObject?function(){return !this.isLocal&&g()||s()}:g;(function(e){i.extend(i.support,{ajax:!!e,cors:!!e&&("withCredentials" in e)})})(i.jqx.data.ajaxSettings.xhr());if(!i.support){i.support={ajax:true}}if(i.support.ajax){i.jqx.data.ajaxTransport(function(e){if(!e.crossDomain||i.support.cors){var H;return{send:function(N,I){var L,K,M=e.xhr();if(e.username){M.open(e.type,e.url,e.async,e.username,e.password)}else{M.open(e.type,e.url,e.async)}if(e.xhrFields){for(K in e.xhrFields){M[K]=e.xhrFields[K]}}if(e.mimeType&&M.overrideMimeType){M.overrideMimeType(e.mimeType)}if(!e.crossDomain&&!N["X-Requested-With"]){N["X-Requested-With"]="XMLHttpRequest"}try{for(K in N){M.setRequestHeader(K,N[K])}}catch(J){}M.send((e.hasContent&&e.data)||null);H=function(W,Q){var R,P,O,U,T;try{if(H&&(Q||M.readyState===4)){H=undefined;if(L){M.onreadystatechange=function(){};if(x){delete w[L]}}if(Q){if(M.readyState!==4){M.abort()}}else{R=M.status;O=M.getAllResponseHeaders();U={};T=M.responseXML;if(T&&T.documentElement){U.xml=T}try{U.text=M.responseText}catch(V){}try{P=M.statusText}catch(V){P=""}if(!R&&e.isLocal&&!e.crossDomain){R=U.text?200:404}else{if(R===1223){R=204}}}}}catch(S){if(!Q){I(-1,S)}}if(U){I(R,P,U,O)}};if(!e.async){H()}else{if(M.readyState===4){setTimeout(H,0)}else{L=++m;if(x){if(!w){w={};i(window).unload(x)}w[L]=H}M.onreadystatechange=H}}},abort:function(){if(H){H(0,1)}}}}})}i.jqx.filter=function(){this.operator="and";var M=0;var J=1;var P=["EMPTY","NOT_EMPTY","CONTAINS","CONTAINS_CASE_SENSITIVE","DOES_NOT_CONTAIN","DOES_NOT_CONTAIN_CASE_SENSITIVE","STARTS_WITH","STARTS_WITH_CASE_SENSITIVE","ENDS_WITH","ENDS_WITH_CASE_SENSITIVE","EQUAL","EQUAL_CASE_SENSITIVE","NULL","NOT_NULL"];var R=["EQUAL","NOT_EQUAL","LESS_THAN","LESS_THAN_OR_EQUAL","GREATER_THAN","GREATER_THAN_OR_EQUAL","NULL","NOT_NULL"];var S=["EQUAL","NOT_EQUAL","LESS_THAN","LESS_THAN_OR_EQUAL","GREATER_THAN","GREATER_THAN_OR_EQUAL","NULL","NOT_NULL"];var L=["EQUAL","NOT_EQUAL"];var K=new Array();var Q=new Array();this.evaluate=function(X){var V=true;for(var W=0;W<K.length;W++){var U=K[W].evaluate(X);if(W==0){V=U}else{if(Q[W]==J||Q[W]=="or"){V=V||U}else{V=V&&U}}}return V};this.getfilterscount=function(){return K.length};this.setoperatorsbyfiltertype=function(U,V){switch(U){case"numericfilter":R=V;break;case"stringfilter":P=V;break;case"datefilter":S=V;break;case"booleanfilter":L=V;break}};this.getoperatorsbyfiltertype=function(U){var V=new Array();switch(U){case"numericfilter":V=R.slice(0);break;case"stringfilter":V=P.slice(0);break;case"datefilter":V=S.slice(0);break;case"booleanfilter":V=L.slice(0);break}return V};var O=function(){var U=function(){return(((1+Math.random())*65536)|0).toString(16).substring(1)};return(U()+"-"+U()+"-"+U())};this.createfilter=function(Y,V,X,W,U,Z){if(Y==null||Y==undefined){return null}switch(Y){case"numericfilter":return new N(V,X.toUpperCase());case"stringfilter":return new T(V,X.toUpperCase());case"datefilter":return new H(V,X.toUpperCase(),U,Z);case"booleanfilter":return new I(V,X.toUpperCase());case"custom":return new e(V,X.toUpperCase(),W)}throw new Error("jqxGrid: There is no such filter type. The available filter types are: 'numericfilter', 'stringfilter', 'datefilter' and 'booleanfilter'");return null};this.getfilters=function(){var U=new Array();for(var V=0;V<K.length;V++){var W={value:K[V].filtervalue,condition:K[V].comparisonoperator,operator:Q[V],type:K[V].type};if(K[V].data){W.id=K[V].data}U[V]=W}return U};this.addfilter=function(U,V){K[K.length]=V;V.key=O();Q[Q.length]=U};this.removefilter=function(V){for(var U=0;U<K.length;U++){if(K[U].key==V.key){K.splice(U,1);Q.splice(U,1);break}}};this.getoperatorat=function(U){if(U==undefined||U==null){return null}if(U<0||U>K.length){return null}return Q[U]};this.setoperatorat=function(V,U){if(V==undefined||V==null){return null}if(V<0||V>K.length){return null}Q[U]=U};this.getfilterat=function(U){if(U==undefined||U==null){return null}if(U<0||U>K.length){return null}return K[U]};this.setfilterat=function(U,V){if(U==undefined||U==null){return null}if(U<0||U>K.length){return null}V.key=O();K[U]=V};this.clear=function(){K=new Array();Q=new Array()};var T=function(V,U){this.filtervalue=V;this.comparisonoperator=U;this.type="stringfilter";this.evaluate=function(af){var ae=this.filtervalue;var al=this.comparisonoperator;if(af==null||af==undefined||af==""){if(al=="NULL"){return true}if(al=="NOT_NULL"){return false}if(al=="EQUAL"&&af==ae){return true}if(al=="NOT_EQUAL"&&af!=ae){return true}if(al!="EMPTY"){return false}else{if(af==""){return true}}}var an="";try{an=af.toString()}catch(ag){return true}var am=function(ap,ao){switch(al){case"EQUAL":return i.jqx.string.equalsIgnoreCase(ap,ao);case"EQUAL_CASE_SENSITIVE":return i.jqx.string.equals(ap,ao);case"NOT_EQUAL":return !i.jqx.string.equalsIgnoreCase(ap,ao);case"NOT_EQUAL_CASE_SENSITIVE":return !i.jqx.string.equals(ap,ao);case"CONTAINS":return i.jqx.string.containsIgnoreCase(ap,ao);case"CONTAINS_CASE_SENSITIVE":return i.jqx.string.contains(ap,ao);case"DOES_NOT_CONTAIN":return !i.jqx.string.containsIgnoreCase(ap,ao);case"DOES_NOT_CONTAIN_CASE_SENSITIVE":return !i.jqx.string.contains(ap,ao);case"EMPTY":return ap=="";case"NOT_EMPTY":return ap!="";case"NOT_NULL":return ap!=null;case"STARTS_WITH":return i.jqx.string.startsWithIgnoreCase(ap,ao);case"ENDS_WITH":return i.jqx.string.endsWithIgnoreCase(ap,ao);case"ENDS_WITH_CASE_SENSITIVE":return i.jqx.string.endsWith(ap,ao);case"STARTS_WITH_CASE_SENSITIVE":return i.jqx.string.startsWith(ap,ao);default:return false}};var Z=new Array();if(ae&&ae.indexO&&al!=="NOT_EQUAL"){if(ae.indexOf("|")>=0||ae.indexOf(" AND ")>=0||ae.indexOf(" OR ")>=0||ae.indexOf(" and ")>=0||ae.indexOf(" or ")>=0){var aa=am(an,ae);if(aa){return aa}var ab=ae.indexOf(" AND ")>=0?ae.split(" AND "):new Array();var Y=ae.indexOf(" OR ")>=0?ae.split(" OR "):new Array();var X=ae.indexOf(" and ")>=0?ae.split(" and "):new Array();var ac=ae.indexOf(" or ")>=0?ae.split(" or "):new Array();var W=ae.indexOf("|")>=0?ae.split("|"):new Array();if(W.length>0){for(var ak=0;ak<W.length;ak++){W[ak]=i.trim(W[ak])}}var aj=ae.indexOf(" ")>=0?ae.split(" "):new Array();if(aj.length>0){for(var ak=0;ak<aj.length;ak++){aj[ak]=i.trim(aj[ak])}}ab=ab.concat(aj);ab=ab.concat(X);Y=Y.concat(W);Y=Y.concat(ac);if(ab.length>0){for(var ak=0;ak<ab.length;ak++){if(!ab[ak].indexOf(" OR ")>=0){Z.push(ab[ak])}}}if(Y.length>0){for(var ak=0;ak<Y.length;ak++){if(!Y[ak].indexOf(" AND ")>=0){Z.push(Y[ak])}}}var ai=undefined;for(var ah=0;ah<Z.length;ah++){var af=Z[ah];var aa=am(an,af);var ad=ah<ab.length?"and":"or";if(ai==undefined){ai=aa}else{if(ad=="or"){ai=ai||aa}else{ai=ai&&aa}}}return ai}}return am(an,ae)}};var I=function(V,U){this.filtervalue=V;this.comparisonoperator=U;this.type="booleanfilter";this.evaluate=function(Y){var X=this.filtervalue;var W=this.comparisonoperator;if(Y==null||Y==undefined){if(W=="NULL"){return true}return false}var Z=Y;switch(W){case"EQUAL":return Z==X||Z.toString()==X.toString();case"NOT_EQUAL":return Z!=X&&Z.toString()!=X.toString();default:return false}}};var N=function(V,U){this.filtervalue=V;this.comparisonoperator=U;this.type="numericfilter";this.evaluate=function(ag){var af=this.filtervalue;var al=this.comparisonoperator;if(ag===null||ag===undefined||ag===""){if(al=="NOT_NULL"){return false}if(al=="NULL"){return true}else{switch(al){case"EQUAL":return ag==af;case"NOT_EQUAL":return ag!=af}return false}}else{if(al=="NULL"){return false}if(al=="NOT_NULL"){return true}}var an=ag;try{an=parseFloat(an)}catch(ah){if(ag.toString()!=""){return false}}var am=function(ap,ao){switch(al){case"EQUAL":return ap==ao;case"NOT_EQUAL":return ap!=ao;case"GREATER_THAN":return ap>ao;case"GREATER_THAN_OR_EQUAL":return ap>=ao;case"LESS_THAN":return ap<ao;case"LESS_THAN_OR_EQUAL":return ap<=ao;case"STARTS_WITH":return i.jqx.string.startsWithIgnoreCase(ap.toString(),ao.toString());case"ENDS_WITH":return i.jqx.string.endsWithIgnoreCase(ap.toString(),ao.toString());case"ENDS_WITH_CASE_SENSITIVE":return i.jqx.string.endsWith(ap.toString(),ao.toString());case"STARTS_WITH_CASE_SENSITIVE":return i.jqx.string.startsWith(ap.toString(),ao.toString());case"CONTAINS":return i.jqx.string.containsIgnoreCase(ap.toString(),ao.toString());case"CONTAINS_CASE_SENSITIVE":return i.jqx.string.contains(ap.toString(),ao.toString());case"DOES_NOT_CONTAIN":return !i.jqx.string.containsIgnoreCase(ap.toString(),ao.toString());case"DOES_NOT_CONTAIN_CASE_SENSITIVE":return !i.jqx.string.contains(ap.toString(),ao.toString());default:return true}};var aa=new Array();if(af&&af.indexOf){af=af.replace("$","")}if(af.indexOf&&(af.indexOf("|")>=0||af.indexOf(" AND ")>=0||af.indexOf(" OR ")>=0||af.indexOf(" and ")>=0||af.indexOf(" or ")>=0)){var ab=am(an,af);if(ab){return ab}af=af.toString();var ac=af.indexOf(" AND ")>=0?af.split(" AND "):new Array();var Z=af.indexOf(" OR ")>=0?af.split(" OR "):new Array();var Y=af.indexOf(" and ")>=0?af.split(" and "):new Array();var ad=af.indexOf(" or ")>=0?af.split(" or "):new Array();ac=ac.concat(Y);Z=Z.concat(ad);var X=af.indexOf("|")>=0?af.split("|"):new Array();if(X.length>0){for(var ak=0;ak<X.length;ak++){X[ak]=i.trim(X[ak])}}Z=Z.concat(X);if(ac.length>0){for(var ak=0;ak<ac.length;ak++){if(!ac[ak].indexOf(" OR ")>=0){aa.push(ac[ak])}}}if(Z.length>0){for(var ak=0;ak<Z.length;ak++){if(!Z[ak].indexOf(" AND ")>=0){aa.push(Z[ak])}}}var aj=undefined;for(var ai=0;ai<aa.length;ai++){var ag=aa[ai];if(ag&&ag.indexOf&&ag.indexOf("..")>=0){var W=ag.toString().split("..");if(W.length==2){ab=an>=W[0]&&an<=W[1]}}else{var ab=am(an,ag)}var ae=ai<ac.length?"and":"or";if(aj==undefined){aj=ab}else{if(ae=="or"){aj=aj||ab}else{aj=aj&&ab}}}return aj}if(af&&af.indexOf&&af.indexOf("..")>=0){aa=af.toString().split("..");if(aa.length==2){return an>=aa[0]&&an<=aa[1]}}return am(an,af)}};var H=function(X,V,W,ab){this.filtervalue=X;this.type="datefilter";var Z=this;if(W!=undefined&&ab!=undefined){var Y=i.jqx.dataFormat.parsedate(X,W,ab);if(Y!=null){this.filterdate=Y}else{var U=i.jqx.dataFormat.tryparsedate(X,ab);if(U!=null){this.filterdate=U}}}else{var aa=new Date(X);if(aa.toString()=="NaN"||aa.toString()=="Invalid Date"){this.filterdate=i.jqx.dataFormat.tryparsedate(X)}else{this.filterdate=aa}}if(!this.filterdate){var aa=new Date(X);if(aa.toString()=="NaN"||aa.toString()=="Invalid Date"){this.filterdate=i.jqx.dataFormat.tryparsedate(X)}else{this.filterdate=aa}}this.comparisonoperator=V;this.evaluate=function(ao){var an=this.filtervalue;var aw=this.comparisonoperator;if(ao==null||ao==undefined||ao==""){if(aw=="NOT_NULL"){return false}if(aw=="NULL"){return true}else{switch(aw){case"EQUAL":return ao==an;case"NOT_EQUAL":return ao!=an}return false}}else{if(aw=="NULL"){return false}if(aw=="NOT_NULL"){return true}}var ay=new Date();ay.setFullYear(1900,0,1);ay.setHours(12,0,0,0);try{var av=new Date(ao);if(av.toString()=="NaN"||av.toString()=="Invalid Date"){ao=i.jqx.dataFormat.tryparsedate(ao)}else{ao=av}ay=ao;var at=false;if(W!=undefined&&ab!=undefined){if(W.indexOf("t")>=0||W.indexOf("T")>=0||W.indexOf(":")>=0||W.indexOf("f")>=0){at=true;if(an&&an.toString().indexOf(":")==-1){var aj=i.jqx.dataFormat.tryparsedate(an.toString()+":00",ab);if(aj!=null){Z.filterdate=aj}}}}if(W!=undefined){if(W.indexOf("hh")>=0||W.indexOf("t")>=0){at=true}}if(!at){ay.setHours(0);ay.setMinutes(0);ay.setSeconds(0)}}catch(ap){if(ao.toString()!=""){return false}}if(Z.filterdate!=null){an=Z.filterdate}else{if(an&&an.indexOf){if(an.indexOf(":")!=-1||!isNaN(parseInt(an))){var ai=new Date(ay);ai.setHours(12,0,0,0);var ah=an.split(":");for(var au=0;au<ah.length;au++){if(au==0){ai.setHours(ah[au])}if(au==1){ai.setMinutes(ah[au])}if(au==2){ai.setSeconds(ah[au])}}an=ai}}}if(at){if(an&&an.setFullYear){if(ay&&ay.getFullYear){if(W.indexOf("d")==-1&&W.indexOf("M")==-1&&W.indexOf("y")==-1){an.setFullYear(ay.getFullYear(),ay.getMonth(),ay.getDate())}}}}var ax=function(aA,az){if(aA==null){aA=""}switch(aw){case"EQUAL":return aA.toString()==az.toString();case"NOT_EQUAL":return aA.toString()!=az.toString();case"GREATER_THAN":return aA>az;case"GREATER_THAN_OR_EQUAL":return aA>=az;case"LESS_THAN":return aA<az;case"LESS_THAN_OR_EQUAL":return aA<=az;case"STARTS_WITH":return i.jqx.string.startsWithIgnoreCase(aA.toString(),az.toString());case"ENDS_WITH":return i.jqx.string.endsWithIgnoreCase(aA.toString(),az.toString());case"ENDS_WITH_CASE_SENSITIVE":return i.jqx.string.endsWith(aA.toString(),az.toString());case"STARTS_WITH_CASE_SENSITIVE":return i.jqx.string.startsWith(aA.toString(),az.toString());case"CONTAINS":return i.jqx.string.containsIgnoreCase(aA.toString(),az.toString());case"CONTAINS_CASE_SENSITIVE":return i.jqx.string.contains(aA.toString(),az.toString());case"DOES_NOT_CONTAIN":return !i.jqx.string.containsIgnoreCase(aA.toString(),az.toString());case"DOES_NOT_CONTAIN_CASE_SENSITIVE":return !i.jqx.string.contains(aA.toString(),az.toString());default:return true}};var ag=new Array();if(an&&an.indexOf){if(an.indexOf("|")>=0||an.indexOf(" AND ")>=0||an.indexOf(" OR ")>=0||an.indexOf(" and ")>=0||an.indexOf(" or ")>=0){var aj=ax(ay,an);if(aj){return aj}var ak=an.indexOf(" AND ")>=0?an.split(" AND "):new Array();var af=an.indexOf(" OR ")>=0?an.split(" OR "):new Array();var ae=an.indexOf(" and ")>=0?an.split(" and "):new Array();var al=an.indexOf(" or ")>=0?an.split(" or "):new Array();ak=ak.concat(ae);af=af.concat(al);var ad=an.indexOf("|")>=0?an.split("|"):new Array();if(ad.length>0){for(var au=0;au<ad.length;au++){ad[au]=i.trim(ad[au])}}af=af.concat(ad);if(ak.length>0){for(var au=0;au<ak.length;au++){if(!ak[au].indexOf(" OR ")>=0){ag.push(ak[au])}}}if(af.length>0){for(var au=0;au<af.length;au++){if(!af[au].indexOf(" AND ")>=0){ag.push(af[au])}}}var ar=undefined;for(var aq=0;aq<ag.length;aq++){var ao=ag[aq];if(ao&&ao.indexOf&&ao.indexOf("..")>=0){var ac=ao.toString().split("..");if(ac.length==2){aj=ay>=ac[0]&&ay<=ac[1]}}else{var aj=ax(ay,ao)}var am=aq<ak.length?"and":"or";if(ar==undefined){ar=aj}else{if(am=="or"){ar=ar||aj}else{ar=ar&&aj}}}return ar}}if(an&&an.indexOf&&an.indexOf("..")>=0){ag=an.toString().split("..");if(ag.length==2){return ay>=ag[0]&&ay<=ag[1]}}return ax(ay,an)}};var e=function(V,U,W){this.filtervalue=V;this.comparisonoperator=U;this.evaluate=function(Y,X){return W(this.filtervalue,Y,this.comparisonoperator)}}}})(jqxBaseFramework);
 
@@ -20,15 +20,15 @@
 
 (function(b){var a=0;b.jqx.jqxWidget("jqxTouch","",{});b.extend(b.jqx._jqxTouch.prototype,{defineInstance:function(){this.swipeMin=50;this.swipeMax=500;this.swipeDelay=1000;this.tapHoldDelay=750;this.swipeMaxVerticalDisance=100;this.swipeMaxHorizontalDisance=100;this.orientationChangeEnabled=true;this._eventsMap={mousedown:b.jqx.mobile.getTouchEventName("touchstart"),mouseup:b.jqx.mobile.getTouchEventName("touchend"),mousemove:b.jqx.mobile.getTouchEventName("touchmove")};this._swipeLocked=false;this._rotationInterval=200;this._events=["tap","taphold","swipe","swipeleft","swiperight","swipetop","swipebottom","orientationchange"];this._instanceId=-1},createInstance:function(){a+=1;this._instanceId=a;this._isTouchDevice=b.jqx.mobile.isTouchDevice();this._defineRotateHandler()},refresh:function(){this._removeEventListeners();this._addEventListeners()},_defineRotateHandler:function(){var c=this;if(!this._rotateHandler){this._rotateHandler=function(){c._checkOrientation()}}},_getEvent:function(c){if(this._isTouchDevice){c=this._eventsMap[c]}return c+this._getEventNamespace()},_getEventNamespace:function(){return".swipe"+this._instanceId},_removeEventListeners:function(){clearInterval(this._rotateInterval);this.removeHandler(b(document),this._getEvent("mouseup"));this.removeHandler(this.host,this._getEvent("mousedown"));this.removeHandler(this.host,this._getEvent("mousemove"));if(window.removeEventListener){window.removeEventListener("resize",this._rotateHandler);window.removeEventListener("orientationchange",this._rotateHandler)}},_addEventListeners:function(){var c=this;this.addHandler(this.host,this._getEvent("mouseup"),function(d){c._resetSwipe();c._resetTap()});this.addHandler(this.host,this._getEvent("mousedown"),function(d){c._initSwipe(d);c._initTap(d)});this.addHandler(this.host,this._getEvent("mousemove"),function(d){c._maxSwipeVerticalDistance=Math.max(c._maxSwipeVerticalDistance,Math.abs(c._startY-c._getCoordinates(d).y));c._maxSwipeHorizontalDistance=Math.max(c._maxSwipeHorizontalDistance,Math.abs(c._startX-c._getCoordinates(d).x));c._mouseMoved=true;return c._handleSwipeEvents(d)});this._rotationListeners()},_handleSwipeEvents:function(d){var c=true;if(this._mouseDown&&!this._tapHoldFired){c=this._handleVerticalSwipeEvents(d);c=this._handleHorizontalSwipeEvents(d)}this._lastPosition=this._getCoordinates(d);return c},_handleVerticalSwipeEvents:function(f){var d,c;d=this._getCoordinates(f).y;c=d-this._startY;if(this._maxSwipeHorizontalDistance<this.swipeMaxHorizontalDisance){return this._swiped(f,c,2)}return true},_handleHorizontalSwipeEvents:function(f){var d,c;d=this._getCoordinates(f).x;c=d-this._startX;if(this._maxSwipeVerticalDistance<this.swipeMaxVerticalDisance){return this._swiped(f,c)}return true},_swiped:function(f,d,c){c=c||0;if(Math.abs(d)>=this.swipeMin&&!this._swipeEvent&&!this._swipeLocked){this._swipeEvent=this._getSwipeEvent(d,c)}if(Math.abs(d)<=this.swipeMax){f.stopImmediatePropagation();return false}return true},_getSwipeEvent:function(e,d){var c;if(e<0){c={eventId:3+d,data:{target:this.host}}}else{c={eventId:4+d,data:{target:this.host}}}return c},_resetSwipe:function(){if(this._swipeEvent&&!this._swipeLocked){this._raiseEvent(2,this._swipeEvent.data);this._raiseEvent(this._swipeEvent.eventId,this._swipeEvent.data)}clearTimeout(this._swipeTimeout);this._mouseDown=false},_resetTap:function(){clearTimeout(this._tapHoldTimeout);if(!this._tapHoldFired&&!this._mouseMoved){this._raiseEvent(0,{target:this.host})}},_initTap:function(d){var c=this;this._mouseMoved=false;this._tapHoldFired=false;this._tapHoldTimeout=setTimeout(function(){if(!c._mouseMoved){c._raiseEvent(1,{target:this.host});c._tapHoldFired=true}},this.tapHoldDelay)},_initSwipe:function(d){var c=this;this._mouseDown=true;this._maxSwipeVerticalDistance=0;this._maxSwipeHorizontalDistance=0;this._startX=this._getCoordinates(d).x;this._startY=this._getCoordinates(d).y;this._swipeLocked=false;this._swipeEvent=null;this._swipeTimeout=setTimeout(function(){c._swipeLocked=true},this.swipeDelay)},_rotationListeners:function(){var c=this;this._previousOrientation=window.orientation;this._previousWidth=screen.width;if(this.orientationChangeEnabled){if(window.addEventListener){window.addEventListener("resize",this._rotateHandler,false);window.addEventListener("orientationchange",this._rotateHandler,false)}this._rotateInterval=setInterval(function(){c._checkOrientation()},this._rotationInterval)}},_checkOrientation:function(){var c="vertical";if(window.orientation!==this._previousOrientation||this._previousWidth!==screen.width){if(window.orientation===90||screen.width>screen.height){c="horizontal"}this._raiseEvent(7,{orientation:c})}this._previousOrientation=window.orientation;this._previousWidth=screen.width},_raiseEvent:function(d,c){var e=b.Event(this._events[d]);e.args=c;return this.host.trigger(e)},_getCoordinates:function(d){var f=b.jqx.position(d);f.x=f.left;f.y=f.top;return f},propertyChangedHandler:function(c,d,f,e){if(d==="orientationChangeEnabled"){this.refresh()}else{return}},isTouchDevice:function(){return this._isTouchDevice}})}(jqxBaseFramework));
 
-(function(b){var a=(function(){var c={},u,q,j,l,g,h,o,p;function d(B,A,x,z,y,v,w){this.hierarchy=y;this.exportFormat=v;this.filename=w;B.beginFile(w);n(B);k(B);B.endFile(w);return B.getFile()}function n(z){var x=true;b.each(q,function(){if(this.hidden){x=false;return false}});z.beginHeader(x);var w=0;for(var v in q){if(q[v].columnsDataFields){v=q[v].columnsDataFields[w].displayfield}var y=m(v,q[v]);z.appendHeaderCell(q[v],v,y,x,w);w++}z.endHeader(x)}function k(x){x.beginBody();if(this.hierarchy){var w=function(z){for(var y=0;y<z.length;y+=1){if(z[y]!==undefined){x.beginRow(z[y].level);e(x,z[y],y,true);if(z[y].records){x.beginRows(z[y].level);w(z[y].records);x.endRows(z[y].level)}x.endRow(z[y].level)}}};w(u);x.endBody();return}for(var v=0;v<u.length;v+=1){if(u[v]!==undefined){e(x,u[v],v)}}x.endBody()}function e(A,z,B,v){var x;if(v!=true){A.beginRow()}var y=0;for(var w in q){if(q[w].columnsDataFields){w=q[w].columnsDataFields[y].displayfield}x=s(B,w);if(x){if(x.level!=undefined){if(x.index-1>z.level&&x.index-1<x.maxLevel){y++;continue}}if(x.maxLevel!=undefined){if(x.index-1==x.maxLevel){x=b.extend({},x);x.merge=x.maxLevel-z.level-1}}}if(z.level!=undefined&&z.label!=undefined){if(this.exportFormat==="xml"||this.exportFormat==="json"){var C={};C.text="group";A.appendBodyCell(z.label,C,x,z,y,"group");break}}if(z.hasOwnProperty(w)){A.appendBodyCell(z[w],q[w],x,z,y)}else{A.appendBodyCell("",q[w],x,z,y)}y++}if(v!=true){A.endRow()}}function m(w,x){if(x.style){return j[x.style]}var v=t();if(v.length>0){return v[0].style}return null}function t(){if(!g){g=new Array();b.each(j,function(v,w){g[g.length]={name:v,style:w}})}return g}function s(A,z){var B=q[z];if(B){if(B.customCellStyles){var x=B.customCellStyles[A];if(x){return j[x]}}if(B.cellStyle){if(B.cellAltStyle){var w=A%2;if(w==0){return j[B.cellStyle]}return j[B.cellAltStyle]}return j[B.cellStyle]}else{var v=t();if(v.length>0){var w=A%(v.length-1);var y=v[w+1].style;return y}}}return null}function r(y,w,x){var v=document.createElement("input");v.name=w;v.value=y;v.type="hidden";x.appendChild(v);return v}function f(x,v,w){var y=document.createElement("textarea");y.name=v;y.value=x;w.appendChild(y);return y}function i(w,z,y,v,A){var x=document.createElement("form");r(w,"filename",x);r(z,"format",x);f(y,"content",x);if(v==undefined||v==""){if(window&&window.location.toString().indexOf("jqwidgets.com")>=0){v="https://jqwidgets.com/export_server/dataexport.php"}else{v="http://jquerygrid.net/export_server/dataexport.php"}}x.action=v;x.method="post";if(A){x.acceptCharset=A}document.body.appendChild(x);return x}l=function(A,y,x,w,z,v){if(!(this instanceof a)){return new a(A,y,x,z,v)}u=A;q=y;j=x;this.exportTo=function(K,H,G,B){K=K.toString().toLowerCase();var D=c[K];if(typeof D==="undefined"){throw"You can't export to "+K+" format."}if(K==="pdf"&&B==undefined){var M=this.exportTo(K,H,K,"pdf");if(!b.jqx.pdfExport){b.jqx.pdfExport={orientation:"portrait",paperSize:"a4"}}var L=new pdfDataExport(b.jqx.pdfExport.orientation,"pt",b.jqx.pdfExport.paperSize);L.cellInitialize();var J=b(M).find("th");var I=b(M).find("tr");var N=0;L.setFontSize(13*72/96);var F=595;switch(b.jqx.pdfExport.paperSize){case"legal":var F=612;if(b.jqx.pdfExport.orientation!=="portrait"){F=1008}break;case"letter":var F=612;if(b.jqx.pdfExport.orientation!=="portrait"){F=792}break;case"a3":var F=841;if(b.jqx.pdfExport.orientation!=="portrait"){F=1190}break;case"a4":var F=595;if(b.jqx.pdfExport.orientation!=="portrait"){F=842}break;case"a5":var F=420;if(b.jqx.pdfExport.orientation!=="portrait"){F=595}break}F-=20;var E=0;var C=[];b.each(J,function(O){var P=parseInt(this.style.width);if(isNaN(P)){P=25}var Q=P*72/96;C[O]=Q;E+=Q});if(E>F){b.each(C,function(O){C[O]=(C[O]/E)*100;C[O]=C[O]*F/100})}b.each(J,function(P){var T=C[P];var S=25*72/96;var R=L.getTextDimensions(b(this).html());var Q=b(this).html();if(R.w+3>T){var O=L.splitTextToSize(Q,T-3);var U=O[0];if(U.length>3){Q=U.substring(0,U.length-3)+"..."}else{Q=U.substring(0,1)+"..."}var O=L.splitTextToSize(Q,T-3);var U=O[0];if(U!=Q){Q=U}}L.cell(10,10,T,S,Q,N)});N++;b.each(I,function(V){if(V===0){return true}var P=b(this).children();var Q=P.length>J.length;if(Q){var Y=P.length-J.length;var Z="";var X=C[0];var U=25*72/96;for(var R=0;R<=Y;R++){var O=P[R].innerHTML;if(O==="+"||O==="-"){O=O+" "}if(O==="&nbsp;"){O="   "}Z+=O}var T=L.getTextDimensions(Z);if(T.w+3>X){var W=L.splitTextToSize(Z,X-3);var S=W[0];if(S.length>3){Z=S.substring(0,S.length-3)+"..."}else{Z=S.substring(0,1)+"..."}var W=L.splitTextToSize(Z,X-3);var S=W[0];if(S!=Z){Z=S}}L.cell(10,10,X,U,Z,N);for(var R=Y+1;R<P.length;R++){var V=R-Y;var X=C[V];var U=25*72/96;var Z=b(P[R]).html();var T=L.getTextDimensions(b(P[R]).html());if(T.w+3>X){var W=L.splitTextToSize(Z,X-3);var S=W[0];if(S.length>3){Z=S.substring(0,S.length-3)+"..."}else{Z=S.substring(0,1)+"..."}var W=L.splitTextToSize(Z,X-3);var S=W[0];if(S!=Z){Z=S}}L.cell(10,10,X,U,Z,N)}N++;return true}b.each(P,function(ab){var af=C[ab];var ae=25*72/96;var ad=b(this).html();var ac=L.getTextDimensions(b(this).html());if(ac.w+3>af){var aa=L.splitTextToSize(ad,af-3);var ag=aa[0];if(ag.length>3){ad=ag.substring(0,ag.length-3)+"..."}else{ad=ag.substring(0,1)+"..."}var aa=L.splitTextToSize(ad,af-3);var ag=aa[0];if(ag!=ad){ad=ag}}L.cell(10,10,af,ae,ad,N)});N++});if(b.jqx.browser.msie&&b.jqx.browser.version<10){throw new Error("PDF export requires a browser with HTML5 support");return}return L}return d(D,u,q,j,H,G,B)};this.exportToFile=function(L,B,O,F,I){if(L==="pdf"){var N=this.exportTo(L,I,L,B);if(!b.jqx.pdfExport){b.jqx.pdfExport={orientation:"portrait",paperSize:"a4"}}var M=new pdfDataExport(b.jqx.pdfExport.orientation,"pt",b.jqx.pdfExport.paperSize);if(F=="utf-8"||F=="UTF-8"){M.setFont("courier","normal")}M.cellInitialize();var K=b(N).find("th");var J=b(N).find("tr");var P=0;M.setFontSize(13*72/96);var G=595;switch(b.jqx.pdfExport.paperSize){case"legal":var G=612;if(b.jqx.pdfExport.orientation!=="portrait"){G=1008}break;case"letter":var G=612;if(b.jqx.pdfExport.orientation!=="portrait"){G=792}break;case"a3":var G=841;if(b.jqx.pdfExport.orientation!=="portrait"){G=1190}break;case"a4":var G=595;if(b.jqx.pdfExport.orientation!=="portrait"){G=842}break;case"a5":var G=420;if(b.jqx.pdfExport.orientation!=="portrait"){G=595}break}G-=20;var E=0;var C=[];b.each(K,function(Q){var R=parseInt(this.style.width);if(isNaN(R)){R=25}var S=R*72/96;C[Q]=S;E+=S});if(E>G){b.each(C,function(Q){C[Q]=(C[Q]/E)*100;C[Q]=C[Q]*G/100})}b.each(K,function(R){var V=C[R];var U=25*72/96;var T=M.getTextDimensions(b(this).html());var S=b(this).html();if(T.w+3>V){var Q=M.splitTextToSize(S,V-3);var W=Q[0];if(W.length>3){S=W.substring(0,W.length-3)+"..."}else{S=W.substring(0,1)+"..."}var Q=M.splitTextToSize(S,V-3);var W=Q[0];if(W!=S){S=W}}M.cell(10,10,V,U,S,P)});P++;b.each(J,function(X){if(X===0){return true}var R=b(this).children();var S=R.length>K.length;if(S){var aa=R.length-K.length;var ab="";var Z=C[0];var W=25*72/96;for(var T=0;T<=aa;T++){var Q=R[T].innerHTML;if(Q==="+"||Q==="-"){Q=Q+" "}if(Q==="&nbsp;"){Q="   "}ab+=Q}var V=M.getTextDimensions(ab);if(V.w+3>Z){var Y=M.splitTextToSize(ab,Z-3);var U=Y[0];if(U.length>3){ab=U.substring(0,U.length-3)+"..."}else{ab=U.substring(0,1)+"..."}var Y=M.splitTextToSize(ab,Z-3);var U=Y[0];if(U!=ab){ab=U}}M.cell(10,10,Z,W,ab,P);for(var T=aa+1;T<R.length;T++){var X=T-aa;var Z=C[X];var W=25*72/96;var ab=b(R[T]).html();if(ab==="&nbsp;"){ab="   "}var V=M.getTextDimensions(b(R[T]).html());if(V.w+3>Z){var Y=M.splitTextToSize(ab,Z-3);var U=Y[0];if(U.length>3){ab=U.substring(0,U.length-3)+"..."}else{ab=U.substring(0,1)+"..."}var Y=M.splitTextToSize(ab,Z-3);var U=Y[0];if(U!=ab){ab=U}}M.cell(10,10,Z,W,ab,P)}P++;return true}b.each(R,function(ad){var ah=C[ad];var ag=25*72/96;var af=b(this).html();if(af==="&nbsp;"){af="   "}var ae=M.getTextDimensions(b(this).html());if(ae.w+3>ah){var ac=M.splitTextToSize(af,ah-3);var ai=ac[0];if(ai.length>3){af=ai.substring(0,ai.length-3)+"..."}else{af=ai.substring(0,1)+"..."}var ac=M.splitTextToSize(af,ah-3);var ai=ac[0];if(ai!=af){af=ai}}M.cell(10,10,ah,ag,af,P)});P++});if(b.jqx.browser.msie&&b.jqx.browser.version<10){throw new Error("PDF export requires a browser with HTML5 support");return}M.save(B+".pdf");return}var H=this.exportTo(L,I,L,B),D=i(B,L,H,O,F);D.submit();document.body.removeChild(D)};this.exportToLocalFile=function(F,C,D,B){var E=this.exportTo(F,D,B);document.location.href="data:application/octet-stream;filename="+C+","+encodeURIComponent(E)}};l.extend=function(v,w){if(w instanceof b.jqx.dataAdapter.DataExportModuleBase){c[v]=w}else{throw"The module "+v+" is not instance of DataExportModuleBase."}};return l}());b.jqx.dataAdapter.ArrayExporter=a})(jqxBaseFramework);(function(b){var a=function(){this.formatData=function(f,e,c,h){if(e==="date"){var d="";if(typeof f==="string"){d=b.jqx.dataFormat.tryparsedate(f);f=d}if(f===""||f===null){return""}d=b.jqx.dataFormat.formatdate(f,c,h);if((d&&d.toString()=="NaN")||d==null){return""}f=d}else{if(e==="number"||e==="float"||e==="int"||e=="integer"){if(f===""||f===null){return""}if(!isNaN(new Number(f))){var g=b.jqx.dataFormat.formatnumber(f,c,h);if(g.toString()=="NaN"){return""}else{f=g}}}else{f=f}}if(f===null){return""}return f};this.getFormat=function(f){var c=f?f.formatString:"";var e=f?f.localization:"";var d="string";d=f?f.type:"string";if(d=="number"||d=="float"){if(!c){c="f2"}}if(d=="int"||d=="integer"){if(!c){c="n0"}}if(d=="date"){if(!c){c="d"}}return{type:d,formatString:c,localization:e}};this.beginFile=function(){throw"Not implemented!"};this.beginHeader=function(){throw"Not implemented!"};this.appendHeaderCell=function(){throw"Not implemented!"};this.endHeader=function(){throw"Not implemented!"};this.beginBody=function(){throw"Not implemented!"};this.beginRow=function(){throw"Not implemented!"};this.beginRows=function(){throw"Not implemented!"};this.endRows=function(){throw"Not implemented!"};this.appendBodyCell=function(){throw"Not implemented!"};this.endRow=function(){throw"Not implemented!"};this.endBody=function(){throw"Not implemented!"};this.endFile=function(){throw"Not implemented!"};this.getFile=function(){throw"Not implemented!"}};b.jqx.dataAdapter.DataExportModuleBase=a})(jqxBaseFramework);(function(d){var c=function(j){var e,h,g;var l=0;var i=this;this.beginFile=function(){e=""};this.beginHeader=function(){};this.appendHeaderCell=function(q,r,p,m,n){if(p){if(p.level!=undefined){if(n<p.maxLevel){return}else{if(n===p.maxLevel){if(m){k(q.text)}for(var o=0;o<p.maxLevel;o++){k("")}return}}}}g=m;if(m){k(q.text)}};this.endHeader=function(){this.endRow()};this.beginBody=function(){l=0};this.beginRow=function(){if((l>0)||(l==0&&g)){e+="\n"}l++};this.appendBodyCell=function(q,m,p,r,n){if(p){if(p.maxLevel!=undefined){if(n===p.maxLevel){k(q,m);for(var o=0;o<p.maxLevel-r.level-1;o++){k("",m)}return}}}k(q,m)};this.endRow=function(){e=e.substring(0,e.length-1)};this.endBody=function(){};this.endFile=function(){};this.getFile=function(){return e};function f(m,o){if(o){var n=i.getFormat(o);m=i.formatData(m,n.type,n.formatString,n.localization)}m='"'+m+'"';return m}function k(m,n){m=f(m,n);e+=m+j}};c.prototype=new d.jqx.dataAdapter.DataExportModuleBase();var a=function(){};a.prototype=new c(",");var b=function(){};b.prototype=new c("\t");d.jqx.dataAdapter.ArrayExporter.extend("csv",new a());d.jqx.dataAdapter.ArrayExporter.extend("tsv",new b())})(jqxBaseFramework);(function(d){var a=function(){var i=false;var g;var h;var j=0;this.setPDF=function(){i=true};this.beginFile=function(k){if(i||k==undefined){g='<table style="empty-cells: show;" cellspacing="0" cellpadding="2">'}else{g='<html>\n\t<head>\n\t\t<title></title>\n\t\t<meta http-equiv=Content-type content="text/html; charset=UTF-8">\n\t</head>\n\t<body>\n\t\t<table style="empty-cells: show;" cellspacing="0" cellpadding="2">'}};this.beginHeader=function(){if(i){g+="\n\t<thead><tr>"}else{g+="\n\t\t\t<thead>"}};this.appendHeaderCell=function(m,n,l,k){h=k;if(!k){return}if(i){g+='\n\t\t\t\t<th style="'+f(l)+'">'+m.text+"</th>"}else{if(l.disabled){return}if(l.merge){if(m.width){g+="\n\t\t\t\t<th colspan="+(1+l.merge)+' style="width: '+m.width+"px; "+f(l)+'">'+m.text+"</th>"}else{g+="\n\t\t\t\t<th colspan="+(1+l.merge)+' style="'+f(l)+'">'+m.text+"</th>"}}else{if(m.width){g+='\n\t\t\t\t<th style="width: '+m.width+"px; "+f(l)+'">'+m.text+"</th>"}else{g+='\n\t\t\t\t<th style="'+f(l)+'">'+m.text+"</th>"}}}};this.endHeader=function(){if(i){g+="\n\t</tr></thead>"}else{g+="\n\t\t\t</thead>"}};this.beginBody=function(){if(i){g+="\n\t<tbody>"}else{g+="\n\t\t\t<tbody>"}j=0};this.beginRow=function(){if(i){g+="\n\t<tr>"}else{g+="\n\t\t\t\t<tr>"}j++};this.appendBodyCell=function(l,n,k){var m=this.getFormat(n);if(l===""){l="&nbsp;"}if(i){if(j==1&&!h){g+='\n\t\t\t\t\t<td style="'+f(k)+' border-top-width: 1px;">'+this.formatData(l,m.type,m.formatString,m.localization)+"</td>"}else{g+='\n\t\t\t\t\t<td style="'+f(k)+'">'+this.formatData(l,m.type,m.formatString,m.localization)+"</td>"}}else{if(k.merge){if(j==1&&!h){g+="\n\t\t\t\t\t<td colspan="+(1+k.merge)+' style="'+f(k)+' border-top-width: 1px;">'+this.formatData(l,m.type,m.formatString,m.localization)+"</td>"}else{g+="\n\t\t\t\t\t<td colspan="+(1+k.merge)+' style="'+f(k)+'">'+this.formatData(l,m.type,m.formatString,m.localization)+"</td>"}}else{if(j==1&&!h){g+='\n\t\t\t\t\t<td style="'+f(k)+' border-top-width: 1px;">'+this.formatData(l,m.type,m.formatString,m.localization)+"</td>"}else{g+='\n\t\t\t\t\t<td style="'+f(k)+'">'+this.formatData(l,m.type,m.formatString,m.localization)+"</td>"}}}};this.endRow=function(){if(i){g+="\n\t</tr>"}else{g+="\n\t\t\t\t</tr>"}};this.endBody=function(){if(i){g+="\n\t</tbody>"}else{g+="\n\t\t\t</tbody>"}};this.endFile=function(k){if(i||k==undefined){g+="\n</table>"}else{g+="\n\t\t</table>\n\t</body>\n</html>\n"}};this.getFile=function(){return g};function f(m){var k="";for(var l in m){if(m.hasOwnProperty(l)){if(i&&l=="font-size"){m[l]="100%"}k+=l+":"+m[l]+";"}}return k}};a.prototype=new d.jqx.dataAdapter.DataExportModuleBase();var e=function(){};e.prototype=new a();var c=function(){};c.prototype=new a();var b=new c();d.jqx.dataAdapter.ArrayExporter.extend("html",new e());d.jqx.dataAdapter.ArrayExporter.extend("pdf",b)})(jqxBaseFramework);(function(b){var a=function(){var h,l,d,i,c,j,m={style:"",stylesMap:{font:{color:"Color","font-family":"FontName","font-style":"Italic","font-weight":"Bold"},interior:{"background-color":"Color",background:"Color"},alignment:{left:"Left",center:"Center",right:"Right"}},startStyle:function(p){this.style+='\n\t\t<Style ss:ID="'+p+'" ss:Name="'+p+'">'},buildAlignment:function(q){if(q["text-align"]){var r=this.stylesMap.alignment[q["text-align"]];if(!r){r="Left"}var p='\n\t\t\t<Alignment ss:Vertical="Bottom" ss:Horizontal="'+r+'"/>';this.style+=p}},buildBorder:function(s){if(s["border-color"]){var r="\n\t\t\t<Borders>";var u='\n\t\t\t\t<Border ss:Position="Bottom" ss:LineStyle="Continuous" ss:Weight="1" ss:Color="'+s["border-color"]+'"/>';var p='\n\t\t\t\t<Border ss:Position="Left" ss:LineStyle="Continuous" ss:Weight="1" ss:Color="'+s["border-color"]+'"/>';var q='\n\t\t\t\t<Border ss:Position="Right" ss:LineStyle="Continuous" ss:Weight="1" ss:Color="'+s["border-color"]+'"/>';var t='\n\t\t\t\t<Border ss:Position="Top" ss:LineStyle="Continuous" ss:Weight="1" ss:Color="'+s["border-color"]+'"/>';r+=u;r+=p;r+=q;r+=t;r+="\n\t\t\t</Borders>";this.style+=r}},buildFont:function(q){var r=this.stylesMap.font,p="\n\t\t\t<Font ";for(var s in r){if(typeof q[s]!=="undefined"){if(s==="font-style"&&q[s].toString().toLowerCase()==="italic"){p+='ss:Italic="1" '}else{if(s==="font-weight"&&q[s].toString().toLowerCase()==="bold"){p+='ss:Bold="1" '}else{if(s==="color"){p+="ss:"+r[s]+'="'+q[s]+'" '}}}}}p+="/>";this.style+=p},buildInterior:function(q){var r=this.stylesMap.interior,t="\n\t\t\t<Interior ";var p=false;for(var s in r){if(typeof q[s]!=="undefined"){t+="ss:"+r[s]+'="'+q[s]+'" ';p=true}}if(p){t+='ss:Pattern="Solid"'}t+="/>";this.style+=t},buildFormat:function(q){if(q.dataType=="number"||q.dataType=="float"||q.dataType=="int"||q.dataType=="integer"){var p=q.formatString;if(p==""||p.indexOf("n")!=-1||p.indexOf("N")!=-1){this.style+='\n\t\t\t<NumberFormat ss:Format="0"/>'}else{if(p=="f"||p=="F"||p=="D"||p.indexOf("d")!=-1){this.style+='\n\t\t\t<NumberFormat ss:Format="#,##0.00_);[Red](#,##0.00)"/>'}else{if(p.indexOf("p")!=-1||p.indexOf("P")!=-1){this.style+='\n\t\t\t<NumberFormat ss:Format="Percent"/>'}else{if(p.indexOf("c")!=-1||p.indexOf("C")!=-1){if(q.currencysymbol&&parseInt(q.currencysymbol.charCodeAt(0))==8364){this.style+='\n\t\t\t<NumberFormat ss:Format="Euro Currency"/>'}else{this.style+='\n\t\t\t<NumberFormat ss:Format="Currency"/>'}}}}}}else{if(q.dataType=="date"){this.style+='\n\t\t\t<NumberFormat ss:Format="Short Date"/>'}}},closeStyle:function(){this.style+="\n\t\t</Style>"},toString:function(){var p=this.style;this.style="";return p}};this.beginFile=function(){c={};j=0;h='<?xml version="1.0"?>\n\t<?mso-application progid="Excel.Sheet"?> \n\t<Workbook xmlns="urn:schemas-microsoft-com:office:spreadsheet" \n\txmlns:o="urn:schemas-microsoft-com:office:office" \n\txmlns:x="urn:schemas-microsoft-com:office:excel" \n\txmlns:ss="urn:schemas-microsoft-com:office:spreadsheet" \n\txmlns:html="http://www.w3.org/TR/REC-html40"> \n\t<DocumentProperties xmlns="urn:schemas-microsoft-com:office:office"> \n\t<Version>12.00</Version> \n\t</DocumentProperties> \n\t<ExcelWorkbook xmlns="urn:schemas-microsoft-com:office:excel"> \n\t<WindowHeight>8130</WindowHeight> \n\t<WindowWidth>15135</WindowWidth> \n\t<WindowTopX>120</WindowTopX> \n\t<WindowTopY>45</WindowTopY> \n\t<ProtectStructure>False</ProtectStructure> \n\t<ProtectWindows>False</ProtectWindows> \n\t</ExcelWorkbook> \n\t<Styles>'};this.beginHeader=function(){l='\n\t<Worksheet ss:Name="Sheet1">\n\t\t<Table>';d=[];i=[]};this.appendHeaderCell=function(r,s,q){var p=r.width!=undefined?r.width:r.text.length*10;l+='\n\t\t\t<Column ss:Width="'+p+'"/>';d.push(r);i.push(q)};this.endHeader=function(p){if(p){this.beginRow();for(var q=0;q<d.length;q+=1){if(i[q].disabled){continue}g.call(this,d[q]["text"],null,i[q])}this.endRow()}};this.beginBody=function(){};this.beginRow=function(q){if(q!=undefined){l+="\n\t\t\t";for(var p=0;p<q;p++){l+="\t"}l+="<Row>";return}l+="\n\t\t\t<Row>"};this.beginRows=function(p){l+="\n\t\t\t\t<Rows>"};this.appendBodyCell=function(r,p,q,s){g.call(this,r,p,q,s)};this.endRow=function(q){if(q!=undefined){l+="\n\t\t\t";for(var p=0;p<q;p++){l+="\t"}l+="</Row>";return}l+="\n\t\t\t</Row>"};this.endRows=function(q){if(q!=undefined){l+="\n\t\t\t";for(var p=0;p<q;p++){l+="\t"}l+="</Rows>";return}};this.endBody=function(){l+="\n\t\t</Table>"};this.endFile=function(){l+="\n\t</Worksheet>\n</Workbook>";h+="\n\t</Styles>"};this.getFile=function(){return h+l};function g(t,w,s,v){var r="String";var u=this.getFormat(w);if(t!=null&&t.toString().substring(0,3)=="_AG"){t=t.toString().substring(3);r="String"}else{if(u.type=="date"){var q=t;t=this.formatData(t,u.type,u.formatString,u.localization);if(t===null||t===""){t="";r="String"}else{t=q.toISOString();r="DateTime"}}if(u.type=="string"){if(t===null||t===undefined){t=""}else{if(t.toString().indexOf("&")>=0){t=t.toString().replace(/&/g,"&amp;")}if(t.toString().indexOf(">")>=0){t=t.toString().replace(/>/g,"&gt;")}if(t.toString().indexOf("<")>=0){t=t.toString().replace(/</g,"&lt;")}if(t.toString().indexOf('"')>=0){t=t.toString().replace(/"/g,"&quot;")}if(t.toString().indexOf("'")>=0){t=t.toString().replace(/'/g,"&apos;")}}}if(s.dataType=="number"||s.dataType=="float"||s.dataType=="int"||s.dataType=="integer"){r="Number";t=parseFloat(t);if(t===null||isNaN(t)||t===""){t="";r="String"}if(t&&r!="String"&&t!=""){if(w&&w.formatString&&w.formatString.indexOf("p")>=0){t=t/100}}s.currencysymbol=w.localization.currencysymbol}}var p=f(s);if(s.merge){l+='\n\t\t\t\t<Cell ss:MergeAcross="'+s.merge+'" ss:StyleID="'+p+'"><Data ss:Type="'+r+'">'+t+"</Data></Cell>"}else{l+='\n\t\t\t\t<Cell ss:StyleID="'+p+'"><Data ss:Type="'+r+'">'+t+"</Data></Cell>"}}function n(){j+=1;return"xls-style-"+j}function k(q){for(var p in c){if(o(q,c[p])&&o(c[p],q)){return p}}return undefined}function o(t,q){var s=true;for(var r in t){if(t[r]!==q[r]){s=false}}return s}function e(q,p){m.startStyle(q);m.buildAlignment(p);m.buildBorder(p);m.buildFont(p);m.buildInterior(p);m.buildFormat(p);m.closeStyle();h+=m.toString()}function f(p){if(!p){return""}var q=k(p);if(typeof q==="undefined"){q=n();c[q]=p;e(q,p)}return q}};a.prototype=new b.jqx.dataAdapter.DataExportModuleBase();b.jqx.dataAdapter.ArrayExporter.extend("xls",new a())})(jqxBaseFramework);(function(b){var a=function(){var e,c,d;this.beginFile=function(){e='<?xml version="1.0" encoding="UTF-8" ?>';e+="\n<table>"};this.beginHeader=function(){c=[]};this.appendHeaderCell=function(f,g){c.push(g)};this.endHeader=function(){};this.beginBody=function(g,f){};this.beginRow=function(g){if(g!=undefined){if(this.hierarchy){e+="\n\t";for(var f=0;f<g;f++){e+="\t\t"}e+="<row>";d=0;return}}e+="\n\t<row>";d=0};this.beginRows=function(g){if(g!=undefined){e+="\n\t\t";for(var f=0;f<g;f++){e+="\t\t"}e+="<rows>";d=0;return}e+="\n\t\t<rows>"};this.appendBodyCell=function(j,n,g,m,h,l){var k=this.getFormat(n);j=this.formatData(j,k.type,k.formatString,k.localization);if(k.type=="string"){if(j.toString().indexOf("&")>=0){j=j.toString().replace(/&/g,"&amp;")}if(j.toString().indexOf(">")>=0){j=j.toString().replace(/>/g,"&gt;")}if(j.toString().indexOf("<")>=0){j=j.toString().replace(/</g,"&lt;")}if(j.toString().indexOf('"')>=0){j=j.toString().replace(/"/g,"&quot;")}if(j.toString().indexOf("'")>=0){j=j.toString().replace(/'/g,"&apos;")}}if(m.level!=undefined){if(this.hierarchy){e+="\n\t\t";for(var f=0;f<m.level;f++){e+="\t\t"}if(l===undefined){e+="<"+c[d]+">"+j+"</"+c[d]+">"}else{e+="<"+l+">"+j+"</"+l+">"}}else{if(l!=undefined){e+="\n\t\t<"+l+">"+j+"</"+l+">"}else{e+="\n\t\t<"+c[d]+">"+j+"</"+c[d]+">"}}}else{e+="\n\t\t<"+c[d]+">"+j+"</"+c[d]+">"}d++};this.endRow=function(g){if(g!=undefined){if(this.hierarchy){e+="\n\t";for(var f=0;f<g;f++){e+="\t\t"}e+="</row>";d=0;return}}e+="\n\t</row>";d=0};this.endRows=function(g){if(g!=undefined){e+="\n\t\t";for(var f=0;f<g;f++){e+="\t\t"}e+="</rows>";d=0;return}e+="\n\t\t</rows>"};this.endBody=function(){};this.endFile=function(){e+="\n</table>"};this.getFile=function(){return e}};a.prototype=new b.jqx.dataAdapter.DataExportModuleBase();b.jqx.dataAdapter.ArrayExporter.extend("xml",new a())})(jqxBaseFramework);(function(d){var j=/[\\\"\x00-\x1f\x7f-\x9f\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g,l={"\b":"\\b","\t":"\\t","\n":"\\n","\f":"\\f","\r":"\\r",'"':'\\"',"\\":"\\\\"};function a(n){return'"'+n.replace(j,function(o){var p=l[o];return typeof p==="string"?p:"\\u"+("0000"+o.charCodeAt(0).toString(16)).slice(-4)})+'"'}function b(o){return o<10?"0"+o:o}function e(o){var n;if(isFinite(o.valueOf())){n=o.getUTCFullYear()+"-"+b(o.getUTCMonth()+1)+"-"+b(o.getUTCDate())+"T"+b(o.getUTCHours())+":"+b(o.getUTCMinutes())+":"+b(o.getUTCSeconds())+'Z"'}else{n="null"}return n}function g(q){var n=q.length,o=[],p;for(p=0;p<n;p++){o.push(h(p,q)||"null")}return"["+o.join(",")+"]"}function m(q){var o=[],p,n;for(p in q){if(Object.prototype.hasOwnProperty.call(q,p)){n=h(p,q);if(n){o.push(a(p)+":"+n)}}}return"{"+o.join(",")+"}"}function i(n){switch(Object.prototype.toString.call(n)){case"[object Date]":return e(n);case"[object Array]":return g(n)}return m(n)}function k(o,n){switch(n){case"string":return a(o);case"number":case"float":case"integer":case"int":return isFinite(o)?o:"null";case"boolean":return o}return"null"}function h(o,n){var q=n[o],p=typeof q;if(q&&typeof q==="object"&&typeof q.toJSON==="function"){q=q.toJSON(o);p=typeof q}if(/(number|float|int|integer|string|boolean)/.test(p)||(!q&&p==="object")){return k(q,p)}else{return i(q)}}function f(n){if(window.JSON&&typeof window.JSON.stringify==="function"){return window.JSON.stringify(n)}return h("",{"":n})}var c=function(){var q=this;this.prepareData=function(t,v){if(v){var u=q.getFormat(v);t=q.formatData(t,u.type,u.formatString,u.localization)}return t};var n,p,r,o=[],s=0;this.beginFile=function(){p=[]};this.beginHeader=function(){};this.appendHeaderCell=function(t){};this.endHeader=function(){};this.beginBody=function(u,t){};this.beginRow=function(){if(hierarchy){o[s]={}}else{r={}}};this.beginRows=function(){o[s].rows=[];s++;o[s]={}};this.endRows=function(){s--};this.appendBodyCell=function(u,t){var v=this.prepareData(u,t);if(hierarchy){o[s][t.text]=v}else{r[t.text]=v}};this.endRow=function(){if(hierarchy){if(s==0){p.push(o[s])}else{o[s-1].rows.push(o[s])}}else{p.push(r)}};this.endBody=function(){};this.endFile=function(){n=f(p)};this.getFile=function(){return n}};c.prototype=new d.jqx.dataAdapter.DataExportModuleBase();d.jqx.dataAdapter.ArrayExporter.extend("json",new c())})(jqxBaseFramework);var pdfDataExport=window.jqxPdfDataExport=(function(){if(typeof btoa==="undefined"){window.btoa=function(m){var h="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",s=h.split(""),g,f,e,q,p,o,n,t,l=0,u=0,k="",j=[],d;do{g=m.charCodeAt(l++);f=m.charCodeAt(l++);e=m.charCodeAt(l++);t=g<<16|f<<8|e;q=t>>18&63;p=t>>12&63;o=t>>6&63;n=t&63;j[u++]=s[q]+s[p]+s[o]+s[n]}while(l<m.length);k=j.join("");d=m.length%3;return(d?k.slice(0,d-3):k)+"===".slice(d||3)}}if(typeof atob==="undefined"){window.atob=function(l){var g="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",f,e,d,p,o,n,m,q,k=0,r=0,h="",j=[];if(!l){return l}l+="";do{p=g.indexOf(l.charAt(k++));o=g.indexOf(l.charAt(k++));n=g.indexOf(l.charAt(k++));m=g.indexOf(l.charAt(k++));q=p<<18|o<<12|n<<6|m;f=q>>16&255;e=q>>8&255;d=q&255;if(n===64){j[r++]=String.fromCharCode(f)}else{if(m===64){j[r++]=String.fromCharCode(f,e)}else{j[r++]=String.fromCharCode(f,e,d)}}}while(k<l.length);h=j.join("");return h}}var c=typeof Object.keys==="function"?function(d){return Object.keys(d).length}:function(d){var f=0,g;for(g in d){if(d.hasOwnProperty(g)){f++}}return f},a=function(d){this.topics={};this.context=d;this.publish=function(h,m){if(this.topics[h]){var j=this.topics[h],o=[],n,g,e,f,k=function(){};m=Array.prototype.slice.call(arguments,1);for(g=0,e=j.length;g<e;g++){f=j[g];n=f[0];if(f[1]){f[0]=k;o.push(g)}n.apply(this.context,m)}for(g=0,e=o.length;g<e;g++){j.splice(o[g],1)}}};this.subscribe=function(e,g,f){if(!this.topics[e]){this.topics[e]=[[g,f]]}else{this.topics[e].push([g,f])}return{topic:e,callback:g}};this.unsubscribe=function(h){if(this.topics[h.topic]){var f=this.topics[h.topic],g,e;for(g=0,e=f.length;g<e;g++){if(f[g][0]===h.callback){f.splice(g,1)}}}}};function b(E,ae,M,V){if(typeof E==="undefined"){E="p"}else{E=E.toString().toLowerCase()}if(typeof ae==="undefined"){ae="mm"}if(typeof M==="undefined"){M="a4"}if(typeof V==="undefined"&&typeof zpipe==="undefined"){V=false}var at=M.toString().toLowerCase(),ao="0.9.0rc2",t=[],F=0,av=V,U="1.3",N={a3:[841.89,1190.55],a4:[595.28,841.89],a5:[420.94,595.28],letter:[612,792],legal:[612,1008]},ad="0 g",H="0 G",g=0,f=[],n=2,v=false,D=[],ai={},Q={},aj=16,d,z=0.200025,B,C,ak,O={title:"",subject:"",author:"",keywords:"",creator:""},R=0,T=0,P={},G=new a(P),af,aq,p=function(i){return i.toFixed(2)},o=function(i){return i.toFixed(3)},A=function(i){var k=(i).toFixed(0);if(i<10){return"0"+k}else{return k}},r=function(i){var k=(i).toFixed(0);if(k.length<10){return new Array(11-k.length).join("0")+k}else{return k}},ab=function(i){if(v){f[g].push(i)}else{t.push(i);F+=i.length+1}},w=function(){n++;D[n]=F;ab(n+" 0 obj");return n},K=function(i){ab("stream");ab(i);ab("endstream")},am,S,ap,al,aa=function(){am=C*ak;S=B*ak;var aB,aA,k,aw,ax,az,ay;for(aB=1;aB<=g;aB++){w();ab("<</Type /Page");ab("/Parent 1 0 R");ab("/Resources 2 0 R");ab("/Contents "+(n+1)+" 0 R>>");ab("endobj");aA=f[aB].join("\n");w();if(av){k=[];for(ax=0;ax<aA.length;++ax){k[ax]=aA.charCodeAt(ax)}ay=adler32cs.from(aA);az=new Deflater(6);az.append(new Uint8Array(k));aA=az.flush();k=[new Uint8Array([120,156]),new Uint8Array(aA),new Uint8Array([ay&255,(ay>>8)&255,(ay>>16)&255,(ay>>24)&255])];aA="";for(ax in k){if(k.hasOwnProperty(ax)){aA+=String.fromCharCode.apply(null,k[ax])}}ab("<</Length "+aA.length+" /Filter [/FlateDecode]>>")}else{ab("<</Length "+aA.length+">>")}K(aA);ab("endobj")}D[1]=F;ab("1 0 obj");ab("<</Type /Pages");ap="/Kids [";for(ax=0;ax<g;ax++){ap+=(3+2*ax)+" 0 R "}ab(ap+"]");ab("/Count "+g);ab("/MediaBox [0 0 "+p(am)+" "+p(S)+"]");ab(">>");ab("endobj")},X=function(i){i.objectNumber=w();ab("<</BaseFont/"+i.PostScriptName+"/Type/Font");if(typeof i.encoding==="string"){ab("/Encoding/"+i.encoding)}ab("/Subtype/Type1>>");ab("endobj")},J=function(){var i;for(i in ai){if(ai.hasOwnProperty(i)){X(ai[i])}}},L=function(){G.publish("putXobjectDict")},x=function(){ab("/ProcSet [/PDF /Text /ImageB /ImageC /ImageI]");ab("/Font <<");var i;for(i in ai){if(ai.hasOwnProperty(i)){ab("/"+i+" "+ai[i].objectNumber+" 0 R")}}ab(">>");ab("/XObject <<");L();ab(">>")},h=function(){J();G.publish("putResources");D[2]=F;ab("2 0 obj");ab("<<");x();ab(">>");ab("endobj");G.publish("postPutResources")},m=function(aw,k,ax){var i;if(Q[k]===i){Q[k]={}}Q[k][ax]=aw},au={},u=function(i,ax,az,aw){var ay="F"+(c(ai)+1).toString(10),k=ai[ay]={id:ay,PostScriptName:i,fontName:ax,fontStyle:az,encoding:aw,metadata:{}};m(ay,ax,az);G.publish("addFont",k);return ay},e=function(){var k="helvetica",aG="times",aI="courier",aF="normal",aE="bold",aD="italic",aH="bolditalic",ax="StandardEncoding",aA=[["Helvetica",k,aF],["Helvetica-Bold",k,aE],["Helvetica-Oblique",k,aD],["Helvetica-BoldOblique",k,aH],["Courier",aI,aF],["Courier-Bold",aI,aE],["Courier-Oblique",aI,aD],["Courier-BoldOblique",aI,aH],["Times-Roman",aG,aF],["Times-Bold",aG,aE],["Times-Italic",aG,aD],["Times-BoldItalic",aG,aH]],aC,ay,aB,az;for(aC=0,ay=aA.length;aC<ay;aC++){var aw=ax;aB=u(aA[aC][0],aA[aC][1],aA[aC][2],aw);az=aA[aC][0].split("-");m(aB,az[0],az[1]||"")}G.publish("addFonts",{fonts:ai,dictionary:Q})},s=function(aG,ax){var aC,aA,az,ay,aE,aD,aw,aF,k,aB;if(ax===az){ax={}}ay=ax.sourceEncoding?ay:"Unicode";aD=ax.outputEncoding;if((ax.autoencode||aD)&&ai[d].metadata&&ai[d].metadata[ay]&&ai[d].metadata[ay].encoding){aE=ai[d].metadata[ay].encoding;if(!aD&&ai[d].encoding){aD=ai[d].encoding}if(!aD&&aE.codePages){aD=aE.codePages[0]}if(typeof aD==="string"){aD=aE[aD]}if(aD){aF=false;aw=[];for(aC=0,aA=aG.length;aC<aA;aC++){k=aD[aG.charCodeAt(aC)];if(k){aw.push(String.fromCharCode(k))}else{aw.push(aG[aC])}if(aw[aC].charCodeAt(0)>>8){aF=true}}aG=aw.join("")}}aC=aG.length;while(aF===az&&aC!==0){if(aG.charCodeAt(aC-1)>>8){aF=true}aC--}if(!aF){return aG}else{aw=ax.noBOM?[]:[254,255];for(aC=0,aA=aG.length;aC<aA;aC++){k=aG.charCodeAt(aC);aB=k>>8;if(aB>>8){throw new Error("Character at position "+aC.toString(10)+" of string '"+aG+"' exceeds 16bits. Cannot be encoded into UCS-2 BE")}aw.push(aB);aw.push(k-(aB<<8))}return String.fromCharCode.apply(az,aw)}},Z=function(k,i){return s(k,i).replace(/\\/g,"\\\\").replace(/\(/g,"\\(").replace(/\)/g,"\\)")},Y=function(){ab("/Producer (pdfDataExport "+ao+")");if(O.title){ab("/Title ("+Z(O.title)+")")}if(O.subject){ab("/Subject ("+Z(O.subject)+")")}if(O.author){ab("/Author ("+Z(O.author)+")")}if(O.keywords){ab("/Keywords ("+Z(O.keywords)+")")}if(O.creator){ab("/Creator ("+Z(O.creator)+")")}var i=new Date();ab("/CreationDate (D:"+[i.getFullYear(),A(i.getMonth()+1),A(i.getDate()),A(i.getHours()),A(i.getMinutes()),A(i.getSeconds())].join("")+")")},W=function(){ab("/Type /Catalog");ab("/Pages 1 0 R");ab("/OpenAction [3 0 R /FitH null]");ab("/PageLayout /OneColumn");G.publish("putCatalog")},l=function(){ab("/Size "+(n+1));ab("/Root "+n+" 0 R");ab("/Info "+(n-1)+" 0 R")},ar=function(){g++;v=true;f[g]=[]},ah=function(){ar();ab(p(z*ak)+" w");ab(H);if(R!==0){ab(R.toString(10)+" J")}if(T!==0){ab(T.toString(10)+" j")}G.publish("addPage",{pageNumber:g})},y=function(aw,ay){var i,k;if(aw===k){aw=ai[d].fontName}if(ay===k){ay=ai[d].fontStyle}try{i=Q[aw][ay]}catch(ax){i=k}if(!i){throw new Error("Unable to look up font label for font '"+aw+"', '"+ay+"'. Refer to getFontList() for available fonts.")}return i},q=function(){v=false;t=[];D=[];ab("%PDF-"+U);aa();h();w();ab("<<");Y();ab(">>");ab("endobj");w();ab("<<");W();ab(">>");ab("endobj");var aw=F,k;ab("xref");ab("0 "+(n+1));ab("0000000000 65535 f ");for(k=1;k<=n;k++){ab(r(D[k])+" 00000 n ")}ab("trailer");ab("<<");l();ab(">>");ab("startxref");ab(aw);ab("%%EOF");v=true;return t.join("\n")},ac=function(i){var k="S";if(i==="F"){k="f"}else{if(i==="FD"||i==="DF"){k="B"}}return k},I=function(az,aw){var ay,aB,aA,aC,ax,k;switch(az){case ay:return q();case"save":if(navigator.getUserMedia){if(window.URL===undefined){return P.output("dataurlnewwindow")}else{if(window.URL.createObjectURL===undefined){return P.output("dataurlnewwindow")}}}aB=q();aA=aB.length;aC=new Uint8Array(new ArrayBuffer(aA));for(ax=0;ax<aA;ax++){aC[ax]=aB.charCodeAt(ax)}k=new Blob([aC],{type:"application/pdf"});saveAs(k,aw);break;case"datauristring":case"dataurlstring":return"data:application/pdf;base64,"+btoa(q());case"datauri":case"dataurl":document.location.href="data:application/pdf;base64,"+btoa(q());break;case"dataurlnewwindow":window.open("data:application/pdf;base64,"+btoa(q()));break;default:throw new Error('Output type "'+az+'" is not supported.')}};if(ae==="pt"){ak=1}else{if(ae==="mm"){ak=72/25.4}else{if(ae==="cm"){ak=72/2.54}else{if(ae==="in"){ak=72}else{throw ("Invalid unit: "+ae)}}}}if(N.hasOwnProperty(at)){B=N[at][1]/ak;C=N[at][0]/ak}else{try{B=M[1];C=M[0]}catch(an){throw ("Invalid format: "+M)}}if(E==="p"||E==="portrait"){E="p";if(C>B){af=C;C=B;B=af}}else{if(E==="l"||E==="landscape"){E="l";if(B>C){af=C;C=B;B=af}}else{throw ("Invalid orientation: "+E)}}P.internal={pdfEscape:Z,getStyle:ac,getFont:function(){return ai[y.apply(P,arguments)]},getFontSize:function(){return aj},btoa:btoa,write:function(i,ax,aw,k){ab(arguments.length===1?i:Array.prototype.join.call(arguments," "))},getCoordinateString:function(i){return p(i*ak)},getVerticalCoordinateString:function(i){return p((B-i)*ak)},collections:{},newObject:w,putStream:K,events:G,scaleFactor:ak,pageSize:{width:C,height:B},output:function(k,i){return I(k,i)}};P.addPage=function(){ah();return this};var ag=["","0","00","000","0000"];var j=function(aA,aw){var ax=["FEFF"];for(var az=0,k=aA.length,ay;az<k;++az){ay=aA.charCodeAt(az).toString(16).toUpperCase();ax.push(ag[4-ay.length],ay)}return ax.join("")};P.text16=function(aF,aE,aC,aw){var ax,aA,az,aD,k,aB,ay;if(typeof aF==="number"){aA=aC;az=aF;aD=aE;aF=aA;aE=az;aC=aD}if(typeof aF==="string"&&aF.match(/[\n\r]/)){aF=aF.split(/\r\n|\r|\n/g)}if(typeof aw==="undefined"){aw={noBOM:true,autoencode:true}}else{if(aw.noBOM===ax){aw.noBOM=true}if(aw.autoencode===ax){aw.autoencode=true}}aw.autoencode=false;if(typeof aF==="string"){aB=j(aF,aw)}else{if(aF instanceof Array){k=aF.concat();for(ay=k.length-1;ay!==-1;ay--){k[ay]=j(k[ay],aw)}aB=k.join("> Tj\nT* <")}else{throw new Error('Type of text must be string or Array. "'+aF+'" is not recognized.')}}ab("BT\n/"+d+" "+aj+" Tf\n"+aj+" TL\n"+ad+"\n"+p(aE*ak)+" "+p((B-aC)*ak)+" Td\n<"+aB+"> Tj\nET");return this};P.text=function(aF,aE,aC,aw){var ax,aA,az,aD,k,aB,ay;if(typeof aF==="number"){aA=aC;az=aF;aD=aE;aF=aA;aE=az;aC=aD}if(typeof aF==="string"&&aF.match(/[\n\r]/)){aF=aF.split(/\r\n|\r|\n/g)}if(typeof aw==="undefined"){aw={noBOM:true,autoencode:true}}else{if(aw.noBOM===ax){aw.noBOM=true}if(aw.autoencode===ax){aw.autoencode=true}}if(typeof aF==="string"){aB=Z(aF,aw)}else{if(aF instanceof Array){k=aF.concat();for(ay=k.length-1;ay!==-1;ay--){k[ay]=Z(k[ay],aw)}aB=k.join(") Tj\nT* (")}else{throw new Error('Type of text must be string or Array. "'+aF+'" is not recognized.')}}ab("BT\n/"+d+" "+aj+" Tf\n"+aj+" TL\n"+ad+"\n"+p(aE*ak)+" "+p((B-aC)*ak)+" Td\n("+aB+") Tj\nET");return this};P.line=function(k,ax,i,aw){ab(p(k*ak)+" "+p((B-ax)*ak)+" m "+p(i*ak)+" "+p((B-aw)*ak)+" l S");return this};P.lines=function(k,aF,aE,aO,aK){var ay,aM,aC,aD,aB,aA,aI,aG,aN,aL,az,aJ,ax,aH,aw;if(typeof k==="number"){aM=aE;aC=k;aD=aF;k=aM;aF=aC;aE=aD}aK=ac(aK);aO=aO===ay?[1,1]:aO;ab(o(aF*ak)+" "+o((B-aE)*ak)+" m ");aB=aO[0];aA=aO[1];aG=k.length;aH=aF;aw=aE;for(aI=0;aI<aG;aI++){aN=k[aI];if(aN.length===2){aH=aN[0]*aB+aH;aw=aN[1]*aA+aw;ab(o(aH*ak)+" "+o((B-aw)*ak)+" l")}else{aL=aN[0]*aB+aH;az=aN[1]*aA+aw;aJ=aN[2]*aB+aH;ax=aN[3]*aA+aw;aH=aN[4]*aB+aH;aw=aN[5]*aA+aw;ab(o(aL*ak)+" "+o((B-az)*ak)+" "+o(aJ*ak)+" "+o((B-ax)*ak)+" "+o(aH*ak)+" "+o((B-aw)*ak)+" c")}}ab(aK);return this};P.rect=function(i,az,k,ax,aw){var ay=ac(aw);ab([p(i*ak),p((B-az)*ak),p(k*ak),p(-ax*ak),"re",ay].join(" "));return this};P.triangle=function(ax,aA,k,ay,i,aw,az){this.lines([[k-ax,ay-aA],[i-k,aw-ay],[ax-i,aA-aw]],ax,aA,[1,1],az);return this};P.roundedRect=function(k,aB,aw,ay,aA,az,ax){var i=4/3*(Math.SQRT2-1);this.lines([[(aw-2*aA),0],[(aA*i),0,aA,az-(az*i),aA,az],[0,(ay-2*az)],[0,(az*i),-(aA*i),az,-aA,az],[(-aw+2*aA),0],[-(aA*i),0,-aA,-(az*i),-aA,-az],[0,(-ay+2*az)],[0,-(az*i),(aA*i),-az,aA,-az]],k+aA,aB,[1,1],ax);return this};P.ellipse=function(i,aB,az,ay,k){var aA=ac(k),ax=4/3*(Math.SQRT2-1)*az,aw=4/3*(Math.SQRT2-1)*ay;ab([p((i+az)*ak),p((B-aB)*ak),"m",p((i+az)*ak),p((B-(aB-aw))*ak),p((i+ax)*ak),p((B-(aB-ay))*ak),p(i*ak),p((B-(aB-ay))*ak),"c"].join(" "));ab([p((i-ax)*ak),p((B-(aB-ay))*ak),p((i-az)*ak),p((B-(aB-aw))*ak),p((i-az)*ak),p((B-aB)*ak),"c"].join(" "));ab([p((i-az)*ak),p((B-(aB+aw))*ak),p((i-ax)*ak),p((B-(aB+ay))*ak),p(i*ak),p((B-(aB+ay))*ak),"c"].join(" "));ab([p((i+ax)*ak),p((B-(aB+ay))*ak),p((i+az)*ak),p((B-(aB+aw))*ak),p((i+az)*ak),p((B-aB)*ak),"c",aA].join(" "));return this};P.circle=function(i,ax,aw,k){return this.ellipse(i,ax,aw,aw,k)};P.setProperties=function(i){var k;for(k in O){if(O.hasOwnProperty(k)&&i[k]){O[k]=i[k]}}return this};P.setFontSize=function(i){aj=i;return this};P.setFont=function(i,k){d=y(i,k);return this};P.setFontStyle=P.setFontType=function(k){var i;d=y(i,k);return this};P.getFontList=function(){var aw={},k,ax,i;for(k in Q){if(Q.hasOwnProperty(k)){aw[k]=i=[];for(ax in Q[k]){if(Q[k].hasOwnProperty(ax)){i.push(ax)}}}}return aw};P.setLineWidth=function(i){ab((i*ak).toFixed(2)+" w");return this};P.setDrawColor=function(ay,ax,aw,i){var k;if(ax===undefined||(i===undefined&&ay===ax===aw)){if(typeof ay==="string"){k=ay+" G"}else{k=p(ay/255)+" G"}}else{if(i===undefined){if(typeof ay==="string"){k=[ay,ax,aw,"RG"].join(" ")}else{k=[p(ay/255),p(ax/255),p(aw/255),"RG"].join(" ")}}else{if(typeof ay==="string"){k=[ay,ax,aw,i,"K"].join(" ")}else{k=[p(ay),p(ax),p(aw),p(i),"K"].join(" ")}}}ab(k);return this};P.setFillColor=function(ay,ax,aw,i){var k;if(ax===undefined||(i===undefined&&ay===ax===aw)){if(typeof ay==="string"){k=ay+" g"}else{k=p(ay/255)+" g"}}else{if(i===undefined){if(typeof ay==="string"){k=[ay,ax,aw,"rg"].join(" ")}else{k=[p(ay/255),p(ax/255),p(aw/255),"rg"].join(" ")}}else{if(typeof ay==="string"){k=[ay,ax,aw,i,"k"].join(" ")}else{k=[p(ay),p(ax),p(aw),p(i),"k"].join(" ")}}}ab(k);return this};P.setTextColor=function(aw,k,i){if((aw===0&&k===0&&i===0)||(typeof k==="undefined")){ad=o(aw/255)+" g"}else{ad=[o(aw/255),o(k/255),o(i/255),"rg"].join(" ")}return this};P.CapJoinStyles={0:0,butt:0,but:0,bevel:0,1:1,round:1,rounded:1,circle:1,2:2,projecting:2,project:2,square:2,milter:2};P.setLineCap=function(i){var k=this.CapJoinStyles[i];if(k===undefined){throw new Error("Line cap style of '"+i+"' is not recognized. See or extend .CapJoinStyles property for valid styles")}R=k;ab(k.toString(10)+" J");return this};P.setLineJoin=function(i){var k=this.CapJoinStyles[i];if(k===undefined){throw new Error("Line join style of '"+i+"' is not recognized. See or extend .CapJoinStyles property for valid styles")}T=k;ab(k.toString(10)+" j");return this};P.output=I;P.save=function(i){P.output("save",i)};for(aq in b.API){if(b.API.hasOwnProperty(aq)){if(aq==="events"&&b.API.events.length){(function(ax,az){var ay,aw,k;for(k=az.length-1;k!==-1;k--){ay=az[k][0];aw=az[k][1];ax.subscribe.apply(ax,[ay].concat(typeof aw==="function"?[aw]:aw))}}(G,b.API.events))}else{P[aq]=b.API[aq]}}}e();d="F1";ah();G.publish("initialized");return P}b.API={events:[]};return b}());(function(i){var b=0,m=0,a,o,h,c={x:undefined,y:undefined,w:undefined,h:undefined,ln:undefined},f=1,e=false,d=function(p,t,q,r,s){c={x:p,y:t,w:q,h:r,ln:s}},k=function(){return c},j=function(p){b=p},l=function(){return b},n=function(p){m=p},g=function(p){return m};i.getTextDimensions=function(p){a=this.internal.getFont().fontName;o=this.internal.getFontSize();h=this.internal.getFont().fontStyle;var s=0.264583*72/25.4,q,r;r=document.createElement("font");r.id="pdfDataExportCell";r.style.fontStyle=h;r.style.fontName=a;r.style.fontSize=o+"pt";r.innerHTML=p;document.body.appendChild(r);q={w:(r.offsetWidth+1)*s,h:(r.offsetHeight+1)*s};document.body.removeChild(r);return q};i.cellAddPage=function(){this.addPage();d(undefined,undefined,undefined,undefined,undefined);e=true;f+=1;n(1)};i.cellInitialize=function(){b=0;c={x:undefined,y:undefined,w:undefined,h:undefined,ln:undefined};f=1;e=false;n(0)};i.cell=function(z,v,A,s,p,u){this.lnMod=this.lnMod===undefined?0:this.lnMod;if(this.printingHeaderRow!==true&&this.lnMod!==0){u=u+this.lnMod}if((((u*s)+v+(s*2))/f)>=this.internal.pageSize.height&&f===1&&!e){this.cellAddPage();if(this.printHeaders&&this.tableHeaderRow){this.printHeaderRow(u);this.lnMod+=1;u+=1}if(l()===0){j(Math.round((this.internal.pageSize.height-(s*2))/s))}}else{if(e&&k().ln!==u&&g()===l()){this.cellAddPage();if(this.printHeaders&&this.tableHeaderRow){this.printHeaderRow(u);this.lnMod+=1;u+=1}}}var B=k(),r=this.getTextDimensions(p),t=1;if(B.x!==undefined&&B.ln===u){z=B.x+B.w}if(B.y!==undefined&&B.y===v){v=B.y}if(B.h!==undefined&&B.h===s){s=B.h}if(B.ln!==undefined&&B.ln===u){u=B.ln;t=0}if(e){v=s*(g()+t)}else{v=(v+(s*Math.abs(l()*f-u-l())))}this.rect(z,v,A,s);var q=/[а-яА-ЯЁё]/.test(p);if(q){this.text16(p,z+3,v+s-3)}else{this.text(p,z+3,v+s-3)}n(g()+t);d(z,v,A,s,u);return this};i.getKeys=(typeof Object.keys==="function")?function(p){if(!p){return[]}return Object.keys(p)}:function(p){var q=[],r;for(r in p){if(p.hasOwnProperty(r)){q.push(r)}}return q};i.arrayMax=function(u,t){var p=u[0],q,s,r;for(q=0,s=u.length;q<s;q+=1){r=u[q];if(t){if(t(p,r)===-1){p=r}}else{if(r>p){p=r}}}return p};i.table=function(J,r,I){var v=[],p=[],D,z,B,x,E,y,G={},A={},u,s,H=[],C,F=[],t,q,w;this.lnMod=0;if(I){z=I.autoSize||false;B=this.printHeaders=I.printHeaders||true;x=I.autoStretch||true}if(!J){throw"No data for PDF table"}if(r===undefined||(r===null)){v=this.getKeys(J[0])}else{if(r[0]&&(typeof r[0]!=="string")){for(E=0,y=r.length;E<y;E+=1){D=r[E];v.push(D.name);p.push(D.prompt)}}else{v=r}}if(I.autoSize){w=function(K){return K[D]};for(E=0,y=v.length;E<y;E+=1){D=v[E];G[D]=J.map(w);H.push(this.getTextDimensions(p[E]||D).w);s=G[D];for(C=0,y=s.length;C<y;C+=1){u=s[C];H.push(this.getTextDimensions(u).w)}A[D]=i.arrayMax(H)}}if(I.printHeaders){for(E=0,y=v.length;E<y;E+=1){D=v[E];F.push([10,10,A[D],25,String(p.length?p[E]:D)])}this.setTableHeaderRow(F);this.printHeaderRow(1)}for(E=0,y=J.length;E<y;E+=1){t=J[E];for(C=0,q=v.length;C<q;C+=1){D=v[C];this.cell(10,10,A[D],25,String(t[D]),E+2)}}return this};i.setTableHeaderRow=function(p){this.tableHeaderRow=p};i.printHeaderRow=function(p){if(!this.tableHeaderRow){throw"Property tableHeaderRow does not exist."}var q,s,r,t;this.printingHeaderRow=true;for(r=0,t=this.tableHeaderRow.length;r<t;r+=1){q=this.tableHeaderRow[r];s=[].concat(q);this.cell.apply(this,s.concat(p))}this.printingHeaderRow=false}}(pdfDataExport.API));(function(c){var b=c.getCharWidthsArray=function(s,u){if(!u){u={}}var h=u.widths?u.widths:this.internal.getFont().metadata.Unicode.widths,r=h.fof?h.fof:1,n=u.kerning?u.kerning:this.internal.getFont().metadata.Unicode.kerning,p=n.fof?n.fof:1;var m,j,o,k,q=0,t=h[0]||r,g=[];for(m=0,j=s.length;m<j;m++){o=s.charCodeAt(m);g.push((h[o]||t)/r+(n[o]&&n[o][q]||0)/p);q=o}return g};var e=function(j){var h=j.length,g=0;while(h){h--;g+=j[h]}return g};var a=c.getStringUnitWidth=function(h,g){return e(b.call(this,h,g))};var d=function(g,n,h,j){var q=[];var m=0,k=g.length,p=0;while(m!==k&&p+n[m]<h){p+=n[m];m++}q.push(g.slice(0,m));var o=m;p=0;while(m!==k){if(p+n[m]>j){q.push(g.slice(o,m));p=0;o=m}p+=n[m];m++}if(o!==m){q.push(g.slice(o,m))}return q};var f=function(s,k,v){if(!v){v={}}var t=b(" ",v)[0];var r=s.split(" ");var w=[],x=[w],h=v.textIndent||0,u=0,p=0,g,q;var o,m,n;for(o=0,m=r.length;o<m;o++){g=r[o];q=b(g,v);p=e(q);if(h+u+p>k){if(p>k){n=d(g,q,k-(h+u),k);w.push(n.shift());w=[n.pop()];while(n.length){x.push([n.shift()])}p=e(q.slice(g.length-w[0].length))}else{w=[g]}x.push(w);h=p;u=t}else{w.push(g);h+=u+p;u=t}}var j=[];for(o=0,m=x.length;o<m;o++){j.push(x[o].join(" "))}return j};c.splitTextToSize=function(q,m,r){if(!r){r={}}var h=r.fontSize||this.internal.getFontSize(),g=(function(l){var t={0:1},i={};if(!l.widths||!l.kerning){var u=this.internal.getFont(l.fontName,l.fontStyle),s="Unicode";if(u.metadata[s]){return{widths:u.metadata[s].widths||t,kerning:u.metadata[s].kerning||i}}}else{return{widths:l.widths,kerning:l.kerning}}return{widths:t,kerning:i}}).call(this,r);var p;if(q.match(/[\n\r]/)){p=q.split(/\r\n|\r|\n/g)}else{p=[q]}var j=1*this.internal.scaleFactor*m/h;g.textIndent=r.textIndent?r.textIndent*1*this.internal.scaleFactor/h:0;var o,n,k=[];for(o=0,n=p.length;o<n;o++){k=k.concat(f(p[o],j,g))}return k}})(pdfDataExport.API);(function(c){var d="addImage_";var f=function(m){var l,h;if(!m.charCodeAt(0)===255||!m.charCodeAt(1)===216||!m.charCodeAt(2)===255||!m.charCodeAt(3)===224||!m.charCodeAt(6)==="J".charCodeAt(0)||!m.charCodeAt(7)==="F".charCodeAt(0)||!m.charCodeAt(8)==="I".charCodeAt(0)||!m.charCodeAt(9)==="F".charCodeAt(0)||!m.charCodeAt(10)===0){throw new Error("getJpegSize requires a binary jpeg file")}var j=m.charCodeAt(4)*256+m.charCodeAt(5);var k=4,g=m.length;while(k<g){k+=j;if(m.charCodeAt(k)!==255){throw new Error("getJpegSize could not find the size of the image")}if(m.charCodeAt(k+1)===192){h=m.charCodeAt(k+5)*256+m.charCodeAt(k+6);l=m.charCodeAt(k+7)*256+m.charCodeAt(k+8);return[l,h]}else{k+=2;j=m.charCodeAt(k)*256+m.charCodeAt(k+1)}}},b=function(g){var m=this.internal.newObject(),h=this.internal.write,l=this.internal.putStream;g.n=m;h("<</Type /XObject");h("/Subtype /Image");h("/Width "+g.w);h("/Height "+g.h);if(g.cs==="Indexed"){h("/ColorSpace [/Indexed /DeviceRGB "+(g.pal.length/3-1)+" "+(m+1)+" 0 R]")}else{h("/ColorSpace /"+g.cs);if(g.cs==="DeviceCMYK"){h("/Decode [1 0 1 0 1 0 1 0]")}}h("/BitsPerComponent "+g.bpc);if("f" in g){h("/Filter /"+g.f)}if("dp" in g){h("/DecodeParms <<"+g.dp+">>")}if("trns" in g&&g.trns.constructor==Array){var k="";for(var j=0;j<g.trns.length;j++){k+=(g[k][j]+" "+g.trns[j]+" ");h("/Mask ["+k+"]")}}if("smask" in g){h("/SMask "+(m+1)+" 0 R")}h("/Length "+g.data.length+">>");l(g.data);h("endobj")},e=function(){var g=this.internal.collections[d+"images"];for(var h in g){b.call(this,g[h])}},a=function(){var g=this.internal.collections[d+"images"],h=this.internal.write,k;for(var j in g){k=g[j];h("/I"+k.i,k.n,"0","R")}};c.addImage=function(g,s,q,p,t,l){if(typeof g==="object"&&g.nodeType===1){var j=document.createElement("canvas");j.width=g.clientWidth;j.height=g.clientHeight;var u=j.getContext("2d");if(!u){throw ("addImage requires canvas to be supported by browser.")}u.drawImage(g,0,0,j.width,j.height);g=j.toDataURL("image/jpeg");s="JPEG"}if(s.toUpperCase()!=="JPEG"){throw new Error("addImage currently only supports format 'JPEG', not '"+s+"'")}var i,n=this.internal.collections[d+"images"],m=this.internal.getCoordinateString,o=this.internal.getVerticalCoordinateString;if(g.substring(0,23)==="data:image/jpeg;base64,"){g=atob(g.replace("data:image/jpeg;base64,",""))}if(n){i=Object.keys?Object.keys(n).length:(function(w){var h=0;for(var v in w){if(w.hasOwnProperty(v)){h++}}return h})(n)}else{i=0;this.internal.collections[d+"images"]=n={};this.internal.events.subscribe("putResources",e);this.internal.events.subscribe("putXobjectDict",a)}var r=f(g);var k={w:r[0],h:r[1],cs:"DeviceRGB",bpc:8,f:"DCTDecode",i:i,data:g};n[i]=k;if(!t&&!l){t=-96;l=-96}if(t<0){t=(-1)*k.w*72/t/this.internal.scaleFactor}if(l<0){l=(-1)*k.h*72/l/this.internal.scaleFactor}if(t===0){t=l*k.w/k.h}if(l===0){l=t*k.h/k.w}this.internal.write("q",m(t),"0 0",m(l),m(q),o(p+l),"cm /I"+k.i,"Do Q");return this}})(pdfDataExport.API);(function(a){var e=function(q){var w="0123456789abcdef",o="klmnopqrstuvwxyz",h={};for(var r=0;r<o.length;r++){h[o[r]]=w[r]}var p,m={},n=1,t,k=m,g=[],s,l="",u="",v,j=q.length-1,f;r=1;while(r!=j){f=q[r];r+=1;if(f=="'"){if(t){v=t.join("");t=p}else{t=[]}}else{if(t){t.push(f)}else{if(f=="{"){g.push([k,v]);k={};v=p}else{if(f=="}"){s=g.pop();s[0][s[1]]=k;v=p;k=s[0]}else{if(f=="-"){n=-1}else{if(v===p){if(h.hasOwnProperty(f)){l+=h[f];v=parseInt(l,16)*n;n=+1;l=""}else{l+=f}}else{if(h.hasOwnProperty(f)){u+=h[f];k[v]=parseInt(u,16)*n;n=+1;v=p;u=""}else{u+=f}}}}}}}}return m};var d={codePages:["WinAnsiEncoding"],WinAnsiEncoding:e("{19m8n201n9q201o9r201s9l201t9m201u8m201w9n201x9o201y8o202k8q202l8r202m9p202q8p20aw8k203k8t203t8v203u9v2cq8s212m9t15m8w15n9w2dw9s16k8u16l9u17s9z17x8y17y9y}")},c={Unicode:{Courier:d,"Courier-Bold":d,"Courier-BoldOblique":d,"Courier-Oblique":d,Helvetica:d,"Helvetica-Bold":d,"Helvetica-BoldOblique":d,"Helvetica-Oblique":d,"Times-Roman":d,"Times-Bold":d,"Times-BoldItalic":d,"Times-Italic":d}},b={Unicode:{"Courier-Oblique":e("{'widths'{k3w'fof'6o}'kerning'{'fof'-6o}}"),"Times-BoldItalic":e("{'widths'{k3o2q4ycx2r201n3m201o6o201s2l201t2l201u2l201w3m201x3m201y3m2k1t2l2r202m2n2n3m2o3m2p5n202q6o2r1w2s2l2t2l2u3m2v3t2w1t2x2l2y1t2z1w3k3m3l3m3m3m3n3m3o3m3p3m3q3m3r3m3s3m203t2l203u2l3v2l3w3t3x3t3y3t3z3m4k5n4l4m4m4m4n4m4o4s4p4m4q4m4r4s4s4y4t2r4u3m4v4m4w3x4x5t4y4s4z4s5k3x5l4s5m4m5n3r5o3x5p4s5q4m5r5t5s4m5t3x5u3x5v2l5w1w5x2l5y3t5z3m6k2l6l3m6m3m6n2w6o3m6p2w6q2l6r3m6s3r6t1w6u1w6v3m6w1w6x4y6y3r6z3m7k3m7l3m7m2r7n2r7o1w7p3r7q2w7r4m7s3m7t2w7u2r7v2n7w1q7x2n7y3t202l3mcl4mal2ram3man3mao3map3mar3mas2lat4uau1uav3maw3way4uaz2lbk2sbl3t'fof'6obo2lbp3tbq3mbr1tbs2lbu1ybv3mbz3mck4m202k3mcm4mcn4mco4mcp4mcq5ycr4mcs4mct4mcu4mcv4mcw2r2m3rcy2rcz2rdl4sdm4sdn4sdo4sdp4sdq4sds4sdt4sdu4sdv4sdw4sdz3mek3mel3mem3men3meo3mep3meq4ser2wes2wet2weu2wev2wew1wex1wey1wez1wfl3rfm3mfn3mfo3mfp3mfq3mfr3tfs3mft3rfu3rfv3rfw3rfz2w203k6o212m6o2dw2l2cq2l3t3m3u2l17s3x19m3m}'kerning'{cl{4qu5kt5qt5rs17ss5ts}201s{201ss}201t{cks4lscmscnscoscpscls2wu2yu201ts}201x{2wu2yu}2k{201ts}2w{4qx5kx5ou5qx5rs17su5tu}2x{17su5tu5ou}2y{4qx5kx5ou5qx5rs17ss5ts}'fof'-6ofn{17sw5tw5ou5qw5rs}7t{cksclscmscnscoscps4ls}3u{17su5tu5os5qs}3v{17su5tu5os5qs}7p{17su5tu}ck{4qu5kt5qt5rs17ss5ts}4l{4qu5kt5qt5rs17ss5ts}cm{4qu5kt5qt5rs17ss5ts}cn{4qu5kt5qt5rs17ss5ts}co{4qu5kt5qt5rs17ss5ts}cp{4qu5kt5qt5rs17ss5ts}6l{4qu5ou5qw5rt17su5tu}5q{ckuclucmucnucoucpu4lu}5r{ckuclucmucnucoucpu4lu}7q{cksclscmscnscoscps4ls}6p{4qu5ou5qw5rt17sw5tw}ek{4qu5ou5qw5rt17su5tu}el{4qu5ou5qw5rt17su5tu}em{4qu5ou5qw5rt17su5tu}en{4qu5ou5qw5rt17su5tu}eo{4qu5ou5qw5rt17su5tu}ep{4qu5ou5qw5rt17su5tu}es{17ss5ts5qs4qu}et{4qu5ou5qw5rt17sw5tw}eu{4qu5ou5qw5rt17ss5ts}ev{17ss5ts5qs4qu}6z{17sw5tw5ou5qw5rs}fm{17sw5tw5ou5qw5rs}7n{201ts}fo{17sw5tw5ou5qw5rs}fp{17sw5tw5ou5qw5rs}fq{17sw5tw5ou5qw5rs}7r{cksclscmscnscoscps4ls}fs{17sw5tw5ou5qw5rs}ft{17su5tu}fu{17su5tu}fv{17su5tu}fw{17su5tu}fz{cksclscmscnscoscps4ls}}}"),"Helvetica-Bold":e("{'widths'{k3s2q4scx1w201n3r201o6o201s1w201t1w201u1w201w3m201x3m201y3m2k1w2l2l202m2n2n3r2o3r2p5t202q6o2r1s2s2l2t2l2u2r2v3u2w1w2x2l2y1w2z1w3k3r3l3r3m3r3n3r3o3r3p3r3q3r3r3r3s3r203t2l203u2l3v2l3w3u3x3u3y3u3z3x4k6l4l4s4m4s4n4s4o4s4p4m4q3x4r4y4s4s4t1w4u3r4v4s4w3x4x5n4y4s4z4y5k4m5l4y5m4s5n4m5o3x5p4s5q4m5r5y5s4m5t4m5u3x5v2l5w1w5x2l5y3u5z3r6k2l6l3r6m3x6n3r6o3x6p3r6q2l6r3x6s3x6t1w6u1w6v3r6w1w6x5t6y3x6z3x7k3x7l3x7m2r7n3r7o2l7p3x7q3r7r4y7s3r7t3r7u3m7v2r7w1w7x2r7y3u202l3rcl4sal2lam3ran3rao3rap3rar3ras2lat4tau2pav3raw3uay4taz2lbk2sbl3u'fof'6obo2lbp3xbq3rbr1wbs2lbu2obv3rbz3xck4s202k3rcm4scn4sco4scp4scq6ocr4scs4mct4mcu4mcv4mcw1w2m2zcy1wcz1wdl4sdm4ydn4ydo4ydp4ydq4yds4ydt4sdu4sdv4sdw4sdz3xek3rel3rem3ren3reo3rep3req5ter3res3ret3reu3rev3rew1wex1wey1wez1wfl3xfm3xfn3xfo3xfp3xfq3xfr3ufs3xft3xfu3xfv3xfw3xfz3r203k6o212m6o2dw2l2cq2l3t3r3u2l17s4m19m3r}'kerning'{cl{4qs5ku5ot5qs17sv5tv}201t{2ww4wy2yw}201w{2ks}201x{2ww4wy2yw}2k{201ts201xs}2w{7qs4qu5kw5os5qw5rs17su5tu7tsfzs}2x{5ow5qs}2y{7qs4qu5kw5os5qw5rs17su5tu7tsfzs}'fof'-6o7p{17su5tu5ot}ck{4qs5ku5ot5qs17sv5tv}4l{4qs5ku5ot5qs17sv5tv}cm{4qs5ku5ot5qs17sv5tv}cn{4qs5ku5ot5qs17sv5tv}co{4qs5ku5ot5qs17sv5tv}cp{4qs5ku5ot5qs17sv5tv}6l{17st5tt5os}17s{2kwclvcmvcnvcovcpv4lv4wwckv}5o{2kucltcmtcntcotcpt4lt4wtckt}5q{2ksclscmscnscoscps4ls4wvcks}5r{2ks4ws}5t{2kwclvcmvcnvcovcpv4lv4wwckv}eo{17st5tt5os}fu{17su5tu5ot}6p{17ss5ts}ek{17st5tt5os}el{17st5tt5os}em{17st5tt5os}en{17st5tt5os}6o{201ts}ep{17st5tt5os}es{17ss5ts}et{17ss5ts}eu{17ss5ts}ev{17ss5ts}6z{17su5tu5os5qt}fm{17su5tu5os5qt}fn{17su5tu5os5qt}fo{17su5tu5os5qt}fp{17su5tu5os5qt}fq{17su5tu5os5qt}fs{17su5tu5os5qt}ft{17su5tu5ot}7m{5os}fv{17su5tu5ot}fw{17su5tu5ot}}}"),Courier:e("{'widths'{k3w'fof'6o}'kerning'{'fof'-6o}}"),"Courier-BoldOblique":e("{'widths'{k3w'fof'6o}'kerning'{'fof'-6o}}"),"Times-Bold":e("{'widths'{k3q2q5ncx2r201n3m201o6o201s2l201t2l201u2l201w3m201x3m201y3m2k1t2l2l202m2n2n3m2o3m2p6o202q6o2r1w2s2l2t2l2u3m2v3t2w1t2x2l2y1t2z1w3k3m3l3m3m3m3n3m3o3m3p3m3q3m3r3m3s3m203t2l203u2l3v2l3w3t3x3t3y3t3z3m4k5x4l4s4m4m4n4s4o4s4p4m4q3x4r4y4s4y4t2r4u3m4v4y4w4m4x5y4y4s4z4y5k3x5l4y5m4s5n3r5o4m5p4s5q4s5r6o5s4s5t4s5u4m5v2l5w1w5x2l5y3u5z3m6k2l6l3m6m3r6n2w6o3r6p2w6q2l6r3m6s3r6t1w6u2l6v3r6w1w6x5n6y3r6z3m7k3r7l3r7m2w7n2r7o2l7p3r7q3m7r4s7s3m7t3m7u2w7v2r7w1q7x2r7y3o202l3mcl4sal2lam3man3mao3map3mar3mas2lat4uau1yav3maw3tay4uaz2lbk2sbl3t'fof'6obo2lbp3rbr1tbs2lbu2lbv3mbz3mck4s202k3mcm4scn4sco4scp4scq6ocr4scs4mct4mcu4mcv4mcw2r2m3rcy2rcz2rdl4sdm4ydn4ydo4ydp4ydq4yds4ydt4sdu4sdv4sdw4sdz3rek3mel3mem3men3meo3mep3meq4ser2wes2wet2weu2wev2wew1wex1wey1wez1wfl3rfm3mfn3mfo3mfp3mfq3mfr3tfs3mft3rfu3rfv3rfw3rfz3m203k6o212m6o2dw2l2cq2l3t3m3u2l17s4s19m3m}'kerning'{cl{4qt5ks5ot5qy5rw17sv5tv}201t{cks4lscmscnscoscpscls4wv}2k{201ts}2w{4qu5ku7mu5os5qx5ru17su5tu}2x{17su5tu5ou5qs}2y{4qv5kv7mu5ot5qz5ru17su5tu}'fof'-6o7t{cksclscmscnscoscps4ls}3u{17su5tu5os5qu}3v{17su5tu5os5qu}fu{17su5tu5ou5qu}7p{17su5tu5ou5qu}ck{4qt5ks5ot5qy5rw17sv5tv}4l{4qt5ks5ot5qy5rw17sv5tv}cm{4qt5ks5ot5qy5rw17sv5tv}cn{4qt5ks5ot5qy5rw17sv5tv}co{4qt5ks5ot5qy5rw17sv5tv}cp{4qt5ks5ot5qy5rw17sv5tv}6l{17st5tt5ou5qu}17s{ckuclucmucnucoucpu4lu4wu}5o{ckuclucmucnucoucpu4lu4wu}5q{ckzclzcmzcnzcozcpz4lz4wu}5r{ckxclxcmxcnxcoxcpx4lx4wu}5t{ckuclucmucnucoucpu4lu4wu}7q{ckuclucmucnucoucpu4lu}6p{17sw5tw5ou5qu}ek{17st5tt5qu}el{17st5tt5ou5qu}em{17st5tt5qu}en{17st5tt5qu}eo{17st5tt5qu}ep{17st5tt5ou5qu}es{17ss5ts5qu}et{17sw5tw5ou5qu}eu{17sw5tw5ou5qu}ev{17ss5ts5qu}6z{17sw5tw5ou5qu5rs}fm{17sw5tw5ou5qu5rs}fn{17sw5tw5ou5qu5rs}fo{17sw5tw5ou5qu5rs}fp{17sw5tw5ou5qu5rs}fq{17sw5tw5ou5qu5rs}7r{cktcltcmtcntcotcpt4lt5os}fs{17sw5tw5ou5qu5rs}ft{17su5tu5ou5qu}7m{5os}fv{17su5tu5ou5qu}fw{17su5tu5ou5qu}fz{cksclscmscnscoscps4ls}}}"),Helvetica:e("{'widths'{k3p2q4mcx1w201n3r201o6o201s1q201t1q201u1q201w2l201x2l201y2l2k1w2l1w202m2n2n3r2o3r2p5t202q6o2r1n2s2l2t2l2u2r2v3u2w1w2x2l2y1w2z1w3k3r3l3r3m3r3n3r3o3r3p3r3q3r3r3r3s3r203t2l203u2l3v1w3w3u3x3u3y3u3z3r4k6p4l4m4m4m4n4s4o4s4p4m4q3x4r4y4s4s4t1w4u3m4v4m4w3r4x5n4y4s4z4y5k4m5l4y5m4s5n4m5o3x5p4s5q4m5r5y5s4m5t4m5u3x5v1w5w1w5x1w5y2z5z3r6k2l6l3r6m3r6n3m6o3r6p3r6q1w6r3r6s3r6t1q6u1q6v3m6w1q6x5n6y3r6z3r7k3r7l3r7m2l7n3m7o1w7p3r7q3m7r4s7s3m7t3m7u3m7v2l7w1u7x2l7y3u202l3rcl4mal2lam3ran3rao3rap3rar3ras2lat4tau2pav3raw3uay4taz2lbk2sbl3u'fof'6obo2lbp3rbr1wbs2lbu2obv3rbz3xck4m202k3rcm4mcn4mco4mcp4mcq6ocr4scs4mct4mcu4mcv4mcw1w2m2ncy1wcz1wdl4sdm4ydn4ydo4ydp4ydq4yds4ydt4sdu4sdv4sdw4sdz3xek3rel3rem3ren3reo3rep3req5ter3mes3ret3reu3rev3rew1wex1wey1wez1wfl3rfm3rfn3rfo3rfp3rfq3rfr3ufs3xft3rfu3rfv3rfw3rfz3m203k6o212m6o2dw2l2cq2l3t3r3u1w17s4m19m3r}'kerning'{5q{4wv}cl{4qs5kw5ow5qs17sv5tv}201t{2wu4w1k2yu}201x{2wu4wy2yu}17s{2ktclucmucnu4otcpu4lu4wycoucku}2w{7qs4qz5k1m17sy5ow5qx5rsfsu5ty7tufzu}2x{17sy5ty5oy5qs}2y{7qs4qz5k1m17sy5ow5qx5rsfsu5ty7tufzu}'fof'-6o7p{17sv5tv5ow}ck{4qs5kw5ow5qs17sv5tv}4l{4qs5kw5ow5qs17sv5tv}cm{4qs5kw5ow5qs17sv5tv}cn{4qs5kw5ow5qs17sv5tv}co{4qs5kw5ow5qs17sv5tv}cp{4qs5kw5ow5qs17sv5tv}6l{17sy5ty5ow}do{17st5tt}4z{17st5tt}7s{fst}dm{17st5tt}dn{17st5tt}5o{ckwclwcmwcnwcowcpw4lw4wv}dp{17st5tt}dq{17st5tt}7t{5ow}ds{17st5tt}5t{2ktclucmucnu4otcpu4lu4wycoucku}fu{17sv5tv5ow}6p{17sy5ty5ow5qs}ek{17sy5ty5ow}el{17sy5ty5ow}em{17sy5ty5ow}en{5ty}eo{17sy5ty5ow}ep{17sy5ty5ow}es{17sy5ty5qs}et{17sy5ty5ow5qs}eu{17sy5ty5ow5qs}ev{17sy5ty5ow5qs}6z{17sy5ty5ow5qs}fm{17sy5ty5ow5qs}fn{17sy5ty5ow5qs}fo{17sy5ty5ow5qs}fp{17sy5ty5qs}fq{17sy5ty5ow5qs}7r{5ow}fs{17sy5ty5ow5qs}ft{17sv5tv5ow}7m{5ow}fv{17sv5tv5ow}fw{17sv5tv5ow}}}"),"Helvetica-BoldOblique":e("{'widths'{k3s2q4scx1w201n3r201o6o201s1w201t1w201u1w201w3m201x3m201y3m2k1w2l2l202m2n2n3r2o3r2p5t202q6o2r1s2s2l2t2l2u2r2v3u2w1w2x2l2y1w2z1w3k3r3l3r3m3r3n3r3o3r3p3r3q3r3r3r3s3r203t2l203u2l3v2l3w3u3x3u3y3u3z3x4k6l4l4s4m4s4n4s4o4s4p4m4q3x4r4y4s4s4t1w4u3r4v4s4w3x4x5n4y4s4z4y5k4m5l4y5m4s5n4m5o3x5p4s5q4m5r5y5s4m5t4m5u3x5v2l5w1w5x2l5y3u5z3r6k2l6l3r6m3x6n3r6o3x6p3r6q2l6r3x6s3x6t1w6u1w6v3r6w1w6x5t6y3x6z3x7k3x7l3x7m2r7n3r7o2l7p3x7q3r7r4y7s3r7t3r7u3m7v2r7w1w7x2r7y3u202l3rcl4sal2lam3ran3rao3rap3rar3ras2lat4tau2pav3raw3uay4taz2lbk2sbl3u'fof'6obo2lbp3xbq3rbr1wbs2lbu2obv3rbz3xck4s202k3rcm4scn4sco4scp4scq6ocr4scs4mct4mcu4mcv4mcw1w2m2zcy1wcz1wdl4sdm4ydn4ydo4ydp4ydq4yds4ydt4sdu4sdv4sdw4sdz3xek3rel3rem3ren3reo3rep3req5ter3res3ret3reu3rev3rew1wex1wey1wez1wfl3xfm3xfn3xfo3xfp3xfq3xfr3ufs3xft3xfu3xfv3xfw3xfz3r203k6o212m6o2dw2l2cq2l3t3r3u2l17s4m19m3r}'kerning'{cl{4qs5ku5ot5qs17sv5tv}201t{2ww4wy2yw}201w{2ks}201x{2ww4wy2yw}2k{201ts201xs}2w{7qs4qu5kw5os5qw5rs17su5tu7tsfzs}2x{5ow5qs}2y{7qs4qu5kw5os5qw5rs17su5tu7tsfzs}'fof'-6o7p{17su5tu5ot}ck{4qs5ku5ot5qs17sv5tv}4l{4qs5ku5ot5qs17sv5tv}cm{4qs5ku5ot5qs17sv5tv}cn{4qs5ku5ot5qs17sv5tv}co{4qs5ku5ot5qs17sv5tv}cp{4qs5ku5ot5qs17sv5tv}6l{17st5tt5os}17s{2kwclvcmvcnvcovcpv4lv4wwckv}5o{2kucltcmtcntcotcpt4lt4wtckt}5q{2ksclscmscnscoscps4ls4wvcks}5r{2ks4ws}5t{2kwclvcmvcnvcovcpv4lv4wwckv}eo{17st5tt5os}fu{17su5tu5ot}6p{17ss5ts}ek{17st5tt5os}el{17st5tt5os}em{17st5tt5os}en{17st5tt5os}6o{201ts}ep{17st5tt5os}es{17ss5ts}et{17ss5ts}eu{17ss5ts}ev{17ss5ts}6z{17su5tu5os5qt}fm{17su5tu5os5qt}fn{17su5tu5os5qt}fo{17su5tu5os5qt}fp{17su5tu5os5qt}fq{17su5tu5os5qt}fs{17su5tu5os5qt}ft{17su5tu5ot}7m{5os}fv{17su5tu5ot}fw{17su5tu5ot}}}"),"Courier-Bold":e("{'widths'{k3w'fof'6o}'kerning'{'fof'-6o}}"),"Times-Italic":e("{'widths'{k3n2q4ycx2l201n3m201o5t201s2l201t2l201u2l201w3r201x3r201y3r2k1t2l2l202m2n2n3m2o3m2p5n202q5t2r1p2s2l2t2l2u3m2v4n2w1t2x2l2y1t2z1w3k3m3l3m3m3m3n3m3o3m3p3m3q3m3r3m3s3m203t2l203u2l3v2l3w4n3x4n3y4n3z3m4k5w4l3x4m3x4n4m4o4s4p3x4q3x4r4s4s4s4t2l4u2w4v4m4w3r4x5n4y4m4z4s5k3x5l4s5m3x5n3m5o3r5p4s5q3x5r5n5s3x5t3r5u3r5v2r5w1w5x2r5y2u5z3m6k2l6l3m6m3m6n2w6o3m6p2w6q1w6r3m6s3m6t1w6u1w6v2w6w1w6x4s6y3m6z3m7k3m7l3m7m2r7n2r7o1w7p3m7q2w7r4m7s2w7t2w7u2r7v2s7w1v7x2s7y3q202l3mcl3xal2ram3man3mao3map3mar3mas2lat4wau1vav3maw4nay4waz2lbk2sbl4n'fof'6obo2lbp3mbq3obr1tbs2lbu1zbv3mbz3mck3x202k3mcm3xcn3xco3xcp3xcq5tcr4mcs3xct3xcu3xcv3xcw2l2m2ucy2lcz2ldl4mdm4sdn4sdo4sdp4sdq4sds4sdt4sdu4sdv4sdw4sdz3mek3mel3mem3men3meo3mep3meq4mer2wes2wet2weu2wev2wew1wex1wey1wez1wfl3mfm3mfn3mfo3mfp3mfq3mfr4nfs3mft3mfu3mfv3mfw3mfz2w203k6o212m6m2dw2l2cq2l3t3m3u2l17s3r19m3m}'kerning'{cl{5kt4qw}201s{201sw}201t{201tw2wy2yy6q-t}201x{2wy2yy}2k{201tw}2w{7qs4qy7rs5ky7mw5os5qx5ru17su5tu}2x{17ss5ts5os}2y{7qs4qy7rs5ky7mw5os5qx5ru17su5tu}'fof'-6o6t{17ss5ts5qs}7t{5os}3v{5qs}7p{17su5tu5qs}ck{5kt4qw}4l{5kt4qw}cm{5kt4qw}cn{5kt4qw}co{5kt4qw}cp{5kt4qw}6l{4qs5ks5ou5qw5ru17su5tu}17s{2ks}5q{ckvclvcmvcnvcovcpv4lv}5r{ckuclucmucnucoucpu4lu}5t{2ks}6p{4qs5ks5ou5qw5ru17su5tu}ek{4qs5ks5ou5qw5ru17su5tu}el{4qs5ks5ou5qw5ru17su5tu}em{4qs5ks5ou5qw5ru17su5tu}en{4qs5ks5ou5qw5ru17su5tu}eo{4qs5ks5ou5qw5ru17su5tu}ep{4qs5ks5ou5qw5ru17su5tu}es{5ks5qs4qs}et{4qs5ks5ou5qw5ru17su5tu}eu{4qs5ks5qw5ru17su5tu}ev{5ks5qs4qs}ex{17ss5ts5qs}6z{4qv5ks5ou5qw5ru17su5tu}fm{4qv5ks5ou5qw5ru17su5tu}fn{4qv5ks5ou5qw5ru17su5tu}fo{4qv5ks5ou5qw5ru17su5tu}fp{4qv5ks5ou5qw5ru17su5tu}fq{4qv5ks5ou5qw5ru17su5tu}7r{5os}fs{4qv5ks5ou5qw5ru17su5tu}ft{17su5tu5qs}fu{17su5tu5qs}fv{17su5tu5qs}fw{17su5tu5qs}}}"),"Times-Roman":e("{'widths'{k3n2q4ycx2l201n3m201o6o201s2l201t2l201u2l201w2w201x2w201y2w2k1t2l2l202m2n2n3m2o3m2p5n202q6o2r1m2s2l2t2l2u3m2v3s2w1t2x2l2y1t2z1w3k3m3l3m3m3m3n3m3o3m3p3m3q3m3r3m3s3m203t2l203u2l3v1w3w3s3x3s3y3s3z2w4k5w4l4s4m4m4n4m4o4s4p3x4q3r4r4s4s4s4t2l4u2r4v4s4w3x4x5t4y4s4z4s5k3r5l4s5m4m5n3r5o3x5p4s5q4s5r5y5s4s5t4s5u3x5v2l5w1w5x2l5y2z5z3m6k2l6l2w6m3m6n2w6o3m6p2w6q2l6r3m6s3m6t1w6u1w6v3m6w1w6x4y6y3m6z3m7k3m7l3m7m2l7n2r7o1w7p3m7q3m7r4s7s3m7t3m7u2w7v3k7w1o7x3k7y3q202l3mcl4sal2lam3man3mao3map3mar3mas2lat4wau1vav3maw3say4waz2lbk2sbl3s'fof'6obo2lbp3mbq2xbr1tbs2lbu1zbv3mbz2wck4s202k3mcm4scn4sco4scp4scq5tcr4mcs3xct3xcu3xcv3xcw2l2m2tcy2lcz2ldl4sdm4sdn4sdo4sdp4sdq4sds4sdt4sdu4sdv4sdw4sdz3mek2wel2wem2wen2weo2wep2weq4mer2wes2wet2weu2wev2wew1wex1wey1wez1wfl3mfm3mfn3mfo3mfp3mfq3mfr3sfs3mft3mfu3mfv3mfw3mfz3m203k6o212m6m2dw2l2cq2l3t3m3u1w17s4s19m3m}'kerning'{cl{4qs5ku17sw5ou5qy5rw201ss5tw201ws}201s{201ss}201t{ckw4lwcmwcnwcowcpwclw4wu201ts}2k{201ts}2w{4qs5kw5os5qx5ru17sx5tx}2x{17sw5tw5ou5qu}2y{4qs5kw5os5qx5ru17sx5tx}'fof'-6o7t{ckuclucmucnucoucpu4lu5os5rs}3u{17su5tu5qs}3v{17su5tu5qs}7p{17sw5tw5qs}ck{4qs5ku17sw5ou5qy5rw201ss5tw201ws}4l{4qs5ku17sw5ou5qy5rw201ss5tw201ws}cm{4qs5ku17sw5ou5qy5rw201ss5tw201ws}cn{4qs5ku17sw5ou5qy5rw201ss5tw201ws}co{4qs5ku17sw5ou5qy5rw201ss5tw201ws}cp{4qs5ku17sw5ou5qy5rw201ss5tw201ws}6l{17su5tu5os5qw5rs}17s{2ktclvcmvcnvcovcpv4lv4wuckv}5o{ckwclwcmwcnwcowcpw4lw4wu}5q{ckyclycmycnycoycpy4ly4wu5ms}5r{cktcltcmtcntcotcpt4lt4ws}5t{2ktclvcmvcnvcovcpv4lv4wuckv}7q{cksclscmscnscoscps4ls}6p{17su5tu5qw5rs}ek{5qs5rs}el{17su5tu5os5qw5rs}em{17su5tu5os5qs5rs}en{17su5qs5rs}eo{5qs5rs}ep{17su5tu5os5qw5rs}es{5qs}et{17su5tu5qw5rs}eu{17su5tu5qs5rs}ev{5qs}6z{17sv5tv5os5qx5rs}fm{5os5qt5rs}fn{17sv5tv5os5qx5rs}fo{17sv5tv5os5qx5rs}fp{5os5qt5rs}fq{5os5qt5rs}7r{ckuclucmucnucoucpu4lu5os}fs{17sv5tv5os5qx5rs}ft{17ss5ts5qs}fu{17sw5tw5qs}fv{17sw5tw5qs}fw{17ss5ts5qs}fz{ckuclucmucnucoucpu4lu5os5rs}}}"),"Helvetica-Oblique":e("{'widths'{k3p2q4mcx1w201n3r201o6o201s1q201t1q201u1q201w2l201x2l201y2l2k1w2l1w202m2n2n3r2o3r2p5t202q6o2r1n2s2l2t2l2u2r2v3u2w1w2x2l2y1w2z1w3k3r3l3r3m3r3n3r3o3r3p3r3q3r3r3r3s3r203t2l203u2l3v1w3w3u3x3u3y3u3z3r4k6p4l4m4m4m4n4s4o4s4p4m4q3x4r4y4s4s4t1w4u3m4v4m4w3r4x5n4y4s4z4y5k4m5l4y5m4s5n4m5o3x5p4s5q4m5r5y5s4m5t4m5u3x5v1w5w1w5x1w5y2z5z3r6k2l6l3r6m3r6n3m6o3r6p3r6q1w6r3r6s3r6t1q6u1q6v3m6w1q6x5n6y3r6z3r7k3r7l3r7m2l7n3m7o1w7p3r7q3m7r4s7s3m7t3m7u3m7v2l7w1u7x2l7y3u202l3rcl4mal2lam3ran3rao3rap3rar3ras2lat4tau2pav3raw3uay4taz2lbk2sbl3u'fof'6obo2lbp3rbr1wbs2lbu2obv3rbz3xck4m202k3rcm4mcn4mco4mcp4mcq6ocr4scs4mct4mcu4mcv4mcw1w2m2ncy1wcz1wdl4sdm4ydn4ydo4ydp4ydq4yds4ydt4sdu4sdv4sdw4sdz3xek3rel3rem3ren3reo3rep3req5ter3mes3ret3reu3rev3rew1wex1wey1wez1wfl3rfm3rfn3rfo3rfp3rfq3rfr3ufs3xft3rfu3rfv3rfw3rfz3m203k6o212m6o2dw2l2cq2l3t3r3u1w17s4m19m3r}'kerning'{5q{4wv}cl{4qs5kw5ow5qs17sv5tv}201t{2wu4w1k2yu}201x{2wu4wy2yu}17s{2ktclucmucnu4otcpu4lu4wycoucku}2w{7qs4qz5k1m17sy5ow5qx5rsfsu5ty7tufzu}2x{17sy5ty5oy5qs}2y{7qs4qz5k1m17sy5ow5qx5rsfsu5ty7tufzu}'fof'-6o7p{17sv5tv5ow}ck{4qs5kw5ow5qs17sv5tv}4l{4qs5kw5ow5qs17sv5tv}cm{4qs5kw5ow5qs17sv5tv}cn{4qs5kw5ow5qs17sv5tv}co{4qs5kw5ow5qs17sv5tv}cp{4qs5kw5ow5qs17sv5tv}6l{17sy5ty5ow}do{17st5tt}4z{17st5tt}7s{fst}dm{17st5tt}dn{17st5tt}5o{ckwclwcmwcnwcowcpw4lw4wv}dp{17st5tt}dq{17st5tt}7t{5ow}ds{17st5tt}5t{2ktclucmucnu4otcpu4lu4wycoucku}fu{17sv5tv5ow}6p{17sy5ty5ow5qs}ek{17sy5ty5ow}el{17sy5ty5ow}em{17sy5ty5ow}en{5ty}eo{17sy5ty5ow}ep{17sy5ty5ow}es{17sy5ty5qs}et{17sy5ty5ow5qs}eu{17sy5ty5ow5qs}ev{17sy5ty5ow5qs}6z{17sy5ty5ow5qs}fm{17sy5ty5ow5qs}fn{17sy5ty5ow5qs}fo{17sy5ty5ow5qs}fp{17sy5ty5qs}fq{17sy5ty5ow5qs}7r{5ow}fs{17sy5ty5ow5qs}ft{17sv5tv5ow}7m{5ow}fv{17sv5tv5ow}fw{17sv5tv5ow}}}")}};a.events.push(["addFonts",function(i){var f,g,h,k,j="Unicode",l;for(g in i.fonts){if(i.fonts.hasOwnProperty(g)){f=i.fonts[g];h=b[j][f.PostScriptName];if(h){if(f.metadata[j]){k=f.metadata[j]}else{k=f.metadata[j]={}}k.widths=h.widths;k.kerning=h.kerning}l=c[j][f.PostScriptName];if(l){if(f.metadata[j]){k=f.metadata[j]}else{k=f.metadata[j]={}}k.encoding=l;if(l.codePages&&l.codePages.length){f.encoding=l.codePages[0]}}}}}])})(pdfDataExport.API);var saveAs=window.jqxSaveAs=saveAs||(navigator.msSaveBlob&&navigator.msSaveBlob.bind(navigator))||(function(h){var r=h.document,l=function(){return h.URL||h.webkitURL||h},e=h.URL||h.webkitURL||h,n=$("<a></a>")[0],g="download" in n,j=function(t){var s=r.createEvent("MouseEvents");s.initMouseEvent("click",true,false,h,0,0,0,0,0,false,false,false,false,0,null);return t.dispatchEvent(s)},o=h.webkitRequestFileSystem,p=h.requestFileSystem||o||h.mozRequestFileSystem,m=function(s){(h.setImmediate||h.setTimeout)(function(){throw s},0)},c="application/octet-stream",k=0,b=[],i=function(){var t=b.length;while(t--){var s=b[t];if(typeof s==="string"){e.revokeObjectURL(s)}else{s.remove()}}b.length=0},q=function(t,s,w){s=[].concat(s);var v=s.length;while(v--){var x=t["on"+s[v]];if(typeof x==="function"){try{x.call(t,w||t)}catch(u){m(u)}}}},f=function(t,u){var v=this,B=t.type,E=false,x,w,s=function(){var F=l().createObjectURL(t);b.push(F);return F},A=function(){q(v,"writestart progress write writeend".split(" "))},D=function(){if(E||!x){x=s(t)}if(w){w.location.href=x}v.readyState=v.DONE;A()},z=function(F){return function(){if(v.readyState!==v.DONE){return F.apply(this,arguments)}}},y={create:true,exclusive:false},C;v.readyState=v.INIT;if(!u){u="download"}if(g){x=s(t);n.href=x;n.download=u;if(j(n)){v.readyState=v.DONE;A();return}}if(h.chrome&&B&&B!==c){C=t.slice||t.webkitSlice;t=C.call(t,0,t.size,c);E=true}if(o&&u!=="download"){u+=".download"}if(B===c||o){w=h}else{w=h.open()}if(!p){D();return}k+=t.size;p(h.TEMPORARY,k,z(function(F){F.root.getDirectory("saved",y,z(function(G){var H=function(){G.getFile(u,y,z(function(I){I.createWriter(z(function(J){J.onwriteend=function(K){w.location.href=I.toURL();b.push(I);v.readyState=v.DONE;q(v,"writeend",K)};J.onerror=function(){var K=J.error;if(K.code!==K.ABORT_ERR){D()}};"writestart progress write abort".split(" ").forEach(function(K){J["on"+K]=v["on"+K]});J.write(t);v.abort=function(){J.abort();v.readyState=v.DONE};v.readyState=v.WRITING}),D)}),D)};G.getFile(u,{create:false},z(function(I){I.remove();H()}),z(function(I){if(I.code===I.NOT_FOUND_ERR){H()}else{D()}}))}),D)}),D)},d=f.prototype,a=function(s,t){return new f(s,t)};d.abort=function(){var s=this;s.readyState=s.DONE;q(s,"abort")};d.readyState=d.INIT=0;d.WRITING=1;d.DONE=2;d.error=d.onwritestart=d.onprogress=d.onwrite=d.onabort=d.onerror=d.onwriteend=null;if(h.addEventListener){h.addEventListener("unload",i,false)}return a}(self));(function(a){var b="pdfDataExport IE Below 9 Shim plugin";a.output=function(e,d){return this.internal.output(e,d);var c="Output.pdf";switch(e){case"datauristring":case"dataurlstring":case"datauri":case"dataurl":case"dataurlnewwindow":if(console){console.log(b+": Data URIs are not supported on IE6-9.")}break;case"save":c=d;break}}})(pdfDataExport.API);
+(function(b){var a=(function(){var c={},u,q,j,l,g,h,o,p;function d(C,B,x,A,y,v,w){var z=this;if(!z){z=window.jqx}z.hierarchy=y;z.exportFormat=v;z.filename=w;C.beginFile(w);n(C);k(C);C.endFile(w);return C.getFile()}function n(z){var x=true;b.each(q,function(){if(this.hidden){x=false;return false}});z.beginHeader(x);var w=0;for(var v in q){if(q[v].columnsDataFields){v=q[v].columnsDataFields[w].displayfield}var y=m(v,q[v]);z.appendHeaderCell(q[v],v,y,x,w);w++}z.endHeader(x)}function k(y){var x=this;if(!x){x=window.jqx}y.beginBody();if(x.hierarchy){var w=function(A){for(var z=0;z<A.length;z+=1){if(A[z]!==undefined){y.hierarchy=true;y.beginRow(A[z].level);e(y,A[z],z,true);if(A[z].records){y.beginRows(A[z].level);w(A[z].records);y.endRows(A[z].level)}y.endRow(A[z].level)}}};w(u);y.endBody();return}for(var v=0;v<u.length;v+=1){if(u[v]!==undefined){e(y,u[v],v)}}y.endBody()}function e(x,A,y,D){var C=this;if(!C){C=window.jqx}var w;if(D!=true){x.beginRow()}var B=0;for(var z in q){if(q[z].columnsDataFields){z=q[z].columnsDataFields[B].displayfield}w=s(y,z);if(w){if(w.level!=undefined){if(w.index-1>A.level&&w.index-1<w.maxLevel){B++;continue}}if(w.maxLevel!=undefined){if(w.index-1==w.maxLevel){w=b.extend({},w);w.merge=w.maxLevel-A.level-1}}}if(A.level!=undefined&&A.label!=undefined){if(C.exportFormat==="xml"||C.exportFormat==="json"){var v={};v.text="group";x.appendBodyCell(A.label,v,w,A,B,"group");break}}if(A.hasOwnProperty(z)){x.appendBodyCell(A[z],q[z],w,A,B)}else{x.appendBodyCell("",q[z],w,A,B)}B++}if(D!=true){x.endRow()}}function m(w,x){if(x.style){return j[x.style]}var v=t();if(v.length>0){return v[0].style}return null}function t(){if(!g){g=new Array();b.each(j,function(v,w){g[g.length]={name:v,style:w}})}return g}function s(A,z){var B=q[z];if(B){if(B.customCellStyles){var x=B.customCellStyles[A];if(x){return j[x]}}if(B.cellStyle){if(B.cellAltStyle){var w=A%2;if(w==0){return j[B.cellStyle]}return j[B.cellAltStyle]}return j[B.cellStyle]}else{var v=t();if(v.length>0){var w=A%(v.length-1);var y=v[w+1].style;return y}}}return null}function r(y,w,x){var v=document.createElement("input");v.name=w;v.value=y;v.type="hidden";x.appendChild(v);return v}function f(x,v,w){var y=document.createElement("textarea");y.name=v;y.value=x;w.appendChild(y);return y}function i(w,z,y,v,A){var x=document.createElement("form");r(w,"filename",x);r(z,"format",x);f(y,"content",x);if(v==undefined||v==""){if(window&&window.location.toString().indexOf("jqwidgets.com")>=0){v="https://jqwidgets.com/export_server/dataexport.php"}else{v="http://jquerygrid.net/export_server/dataexport.php"}}x.action=v;x.method="post";if(A){x.acceptCharset=A}document.body.appendChild(x);return x}l=function(A,y,x,w,z,v){if(!(this instanceof a)){return new a(A,y,x,z,v)}u=A;q=y;j=x;this.exportTo=function(K,H,G,B){K=K.toString().toLowerCase();var D=c[K];if(typeof D==="undefined"){throw"You can't export to "+K+" format."}if(K==="pdf"&&B==undefined){var M=this.exportTo(K,H,K,"pdf");if(!b.jqx.pdfExport){b.jqx.pdfExport={orientation:"portrait",paperSize:"a4"}}var L=new pdfDataExport(b.jqx.pdfExport.orientation,"pt",b.jqx.pdfExport.paperSize);L.cellInitialize();var J=b(M).find("th");var I=b(M).find("tr");var N=0;L.setFontSize(13*72/96);var F=595;switch(b.jqx.pdfExport.paperSize){case"legal":var F=612;if(b.jqx.pdfExport.orientation!=="portrait"){F=1008}break;case"letter":var F=612;if(b.jqx.pdfExport.orientation!=="portrait"){F=792}break;case"a3":var F=841;if(b.jqx.pdfExport.orientation!=="portrait"){F=1190}break;case"a4":var F=595;if(b.jqx.pdfExport.orientation!=="portrait"){F=842}break;case"a5":var F=420;if(b.jqx.pdfExport.orientation!=="portrait"){F=595}break}F-=20;var E=0;var C=[];b.each(J,function(O){var P=parseInt(this.style.width);if(isNaN(P)){P=25}var Q=P*72/96;C[O]=Q;E+=Q});if(J.length===0){b.each(I[0].cells,function(O){var P=parseInt(this.style.width);if(isNaN(P)){P=F/I[0].cells.length}var Q=P*72/96;C[O]=Q;E+=Q})}if(E>F){b.each(C,function(O){C[O]=(C[O]/E)*100;C[O]=C[O]*F/100})}b.each(J,function(P){var T=C[P];var S=25*72/96;var R=L.getTextDimensions(b(this).html());var Q=b(this).html();if(R.w+3>T){var O=L.splitTextToSize(Q,T-3);var U=O[0];if(U.length>3){Q=U.substring(0,U.length-3)+"..."}else{Q=U.substring(0,1)+"..."}var O=L.splitTextToSize(Q,T-3);var U=O[0];if(U!=Q){Q=U}}L.cell(10,10,T,S,Q,N)});N++;b.each(I,function(V){if(V===0){return true}var P=b(this).children();var Q=P.length>J.length&&J.length>0;if(Q){var Y=P.length-J.length;var Z="";var X=C[0];var U=25*72/96;for(var R=0;R<=Y;R++){var O=P[R].innerHTML;if(O==="+"||O==="-"){O=O+" "}if(O==="&nbsp;"){O="   "}Z+=O}var T=L.getTextDimensions(Z);if(T.w+3>X){var W=L.splitTextToSize(Z,X-3);var S=W[0];if(S.length>3){Z=S.substring(0,S.length-3)+"..."}else{Z=S.substring(0,1)+"..."}var W=L.splitTextToSize(Z,X-3);var S=W[0];if(S!=Z){Z=S}}L.cell(10,10,X,U,Z,N);for(var R=Y+1;R<P.length;R++){var V=R-Y;var X=C[V];var U=25*72/96;var Z=b(P[R]).html();var T=L.getTextDimensions(b(P[R]).html());if(T.w+3>X){var W=L.splitTextToSize(Z,X-3);var S=W[0];if(S.length>3){Z=S.substring(0,S.length-3)+"..."}else{Z=S.substring(0,1)+"..."}var W=L.splitTextToSize(Z,X-3);var S=W[0];if(S!=Z){Z=S}}L.cell(10,10,X,U,Z,N)}N++;return true}b.each(P,function(ab){var af=C[ab];var ae=25*72/96;var ad=b(this).html();var ac=L.getTextDimensions(b(this).html());if(ac.w+3>af){var aa=L.splitTextToSize(ad,af-3);var ag=aa[0];if(ag.length>3){ad=ag.substring(0,ag.length-3)+"..."}else{ad=ag.substring(0,1)+"..."}var aa=L.splitTextToSize(ad,af-3);var ag=aa[0];if(ag!=ad){ad=ag}}L.cell(10,10,af,ae,ad,N)});N++});if(b.jqx.browser.msie&&b.jqx.browser.version<10){throw new Error("PDF export requires a browser with HTML5 support");return}return L}return d(D,u,q,j,H,G,B)};this.exportToFile=function(L,B,O,F,I){if(L==="pdf"){var N=this.exportTo(L,I,L,B);if(!b.jqx.pdfExport){b.jqx.pdfExport={orientation:"portrait",paperSize:"a4"}}var M=new pdfDataExport(b.jqx.pdfExport.orientation,"pt",b.jqx.pdfExport.paperSize);if(F=="utf-8"||F=="UTF-8"){M.setFont("courier","normal")}M.cellInitialize();var K=b(N).find("th");var J=b(N).find("tr");var P=0;M.setFontSize(13*72/96);var G=595;switch(b.jqx.pdfExport.paperSize){case"legal":var G=612;if(b.jqx.pdfExport.orientation!=="portrait"){G=1008}break;case"letter":var G=612;if(b.jqx.pdfExport.orientation!=="portrait"){G=792}break;case"a3":var G=841;if(b.jqx.pdfExport.orientation!=="portrait"){G=1190}break;case"a4":var G=595;if(b.jqx.pdfExport.orientation!=="portrait"){G=842}break;case"a5":var G=420;if(b.jqx.pdfExport.orientation!=="portrait"){G=595}break}G-=20;var E=0;var C=[];b.each(K,function(Q){var R=parseInt(this.style.width);if(isNaN(R)){R=25}var S=R*72/96;C[Q]=S;E+=S});if(K.length===0){b.each(J[0].cells,function(Q){var R=parseInt(this.style.width);if(isNaN(R)){R=G/J[0].cells.length}var S=R*72/96;C[Q]=S;E+=S})}if(E>G){b.each(C,function(Q){C[Q]=(C[Q]/E)*100;C[Q]=C[Q]*G/100})}b.each(K,function(R){var V=C[R];var U=25*72/96;var T=M.getTextDimensions(b(this).html());var S=b(this).html();if(T.w+3>V){var Q=M.splitTextToSize(S,V-3);var W=Q[0];if(W.length>3){S=W.substring(0,W.length-3)+"..."}else{S=W.substring(0,1)+"..."}var Q=M.splitTextToSize(S,V-3);var W=Q[0];if(W!=S){S=W}}M.cell(10,10,V,U,S,P)});P++;b.each(J,function(X){if(X===0){return true}var R=b(this).children();var S=R.length>K.length&&K.length>0;if(S){var aa=R.length-K.length;var ab="";var Z=C[0];var W=25*72/96;for(var T=0;T<=aa;T++){var Q=R[T].innerHTML;if(Q==="+"||Q==="-"){Q=Q+" "}if(Q==="&nbsp;"){Q="   "}ab+=Q}var V=M.getTextDimensions(ab);if(V.w+3>Z){var Y=M.splitTextToSize(ab,Z-3);var U=Y[0];if(U.length>3){ab=U.substring(0,U.length-3)+"..."}else{ab=U.substring(0,1)+"..."}var Y=M.splitTextToSize(ab,Z-3);var U=Y[0];if(U!=ab){ab=U}}M.cell(10,10,Z,W,ab,P);for(var T=aa+1;T<R.length;T++){var X=T-aa;var Z=C[X];var W=25*72/96;var ab=b(R[T]).html();if(ab==="&nbsp;"){ab="   "}var V=M.getTextDimensions(b(R[T]).html());if(V.w+3>Z){var Y=M.splitTextToSize(ab,Z-3);var U=Y[0];if(U.length>3){ab=U.substring(0,U.length-3)+"..."}else{ab=U.substring(0,1)+"..."}var Y=M.splitTextToSize(ab,Z-3);var U=Y[0];if(U!=ab){ab=U}}M.cell(10,10,Z,W,ab,P)}P++;return true}b.each(R,function(ad){var ah=C[ad];var ag=25*72/96;var af=b(this).html();if(af==="&nbsp;"){af="   "}var ae=M.getTextDimensions(b(this).html());if(ae.w+3>ah){var ac=M.splitTextToSize(af,ah-3);var ai=ac[0];if(ai.length>3){af=ai.substring(0,ai.length-3)+"..."}else{af=ai.substring(0,1)+"..."}var ac=M.splitTextToSize(af,ah-3);var ai=ac[0];if(ai!=af){af=ai}}M.cell(10,10,ah,ag,af,P)});P++});if(b.jqx.browser.msie&&b.jqx.browser.version<10){throw new Error("PDF export requires a browser with HTML5 support");return}M.save(B+".pdf");return}var H=this.exportTo(L,I,L,B),D=i(B,L,H,O,F);D.submit();document.body.removeChild(D)};this.exportToLocalFile=function(F,C,D,B){var E=this.exportTo(F,D,B);document.location.href="data:application/octet-stream;filename="+C+","+encodeURIComponent(E)}};l.extend=function(v,w){if(w instanceof b.jqx.dataAdapter.DataExportModuleBase){c[v]=w}else{throw"The module "+v+" is not instance of DataExportModuleBase."}};return l}());b.jqx.dataAdapter.ArrayExporter=a})(jqxBaseFramework);(function(b){var a=function(){this.formatData=function(f,e,c,h){if(e==="date"){var d="";if(typeof f==="string"){d=b.jqx.dataFormat.tryparsedate(f);f=d}if(f===""||f===null){return""}d=b.jqx.dataFormat.formatdate(f,c,h);if((d&&d.toString()=="NaN")||d==null){return""}f=d}else{if(e==="number"||e==="float"||e==="int"||e=="integer"){if(f===""||f===null){return""}if(!isNaN(new Number(f))){var g=b.jqx.dataFormat.formatnumber(f,c,h);if(g.toString()=="NaN"){return""}else{f=g}}}else{f=f}}if(f===null){return""}return f};this.getFormat=function(f){var c=f?f.formatString:"";var e=f?f.localization:"";var d="string";d=f?f.type:"string";if(d=="number"||d=="float"){if(!c){c="f2"}}if(d=="int"||d=="integer"){if(!c){c="n0"}}if(d=="date"){if(!c){c="d"}}return{type:d,formatString:c,localization:e}};this.beginFile=function(){throw"Not implemented!"};this.beginHeader=function(){throw"Not implemented!"};this.appendHeaderCell=function(){throw"Not implemented!"};this.endHeader=function(){throw"Not implemented!"};this.beginBody=function(){throw"Not implemented!"};this.beginRow=function(){throw"Not implemented!"};this.beginRows=function(){throw"Not implemented!"};this.endRows=function(){throw"Not implemented!"};this.appendBodyCell=function(){throw"Not implemented!"};this.endRow=function(){throw"Not implemented!"};this.endBody=function(){throw"Not implemented!"};this.endFile=function(){throw"Not implemented!"};this.getFile=function(){throw"Not implemented!"}};b.jqx.dataAdapter.DataExportModuleBase=a})(jqxBaseFramework);(function(d){var c=function(j){var e,h,g;var l=0;var i=this;this.beginFile=function(){e=""};this.beginHeader=function(){};this.appendHeaderCell=function(q,r,p,m,n){if(p){if(p.level!=undefined){if(n<p.maxLevel){return}else{if(n===p.maxLevel){if(m){k(q.text)}for(var o=0;o<p.maxLevel;o++){k("")}return}}}}g=m;if(m){k(q.text)}};this.endHeader=function(){this.endRow()};this.beginBody=function(){l=0};this.beginRow=function(){if((l>0)||(l==0&&g)){e+="\n"}l++};this.appendBodyCell=function(q,m,p,r,n){if(p){if(p.maxLevel!=undefined){if(n===p.maxLevel){k(q,m);for(var o=0;o<p.maxLevel-r.level-1;o++){k("",m)}return}}}k(q,m)};this.endRow=function(){e=e.substring(0,e.length-1)};this.endBody=function(){};this.endFile=function(){};this.getFile=function(){return e};function f(m,o){if(o){var n=i.getFormat(o);m=i.formatData(m,n.type,n.formatString,n.localization)}m='"'+m+'"';return m}function k(m,n){m=f(m,n);e+=m+j}};c.prototype=new d.jqx.dataAdapter.DataExportModuleBase();var a=function(){};a.prototype=new c(",");var b=function(){};b.prototype=new c("\t");d.jqx.dataAdapter.ArrayExporter.extend("csv",new a());d.jqx.dataAdapter.ArrayExporter.extend("tsv",new b())})(jqxBaseFramework);(function(d){var a=function(){var i=false;var g;var h;var j=0;this.setPDF=function(){i=true};this.beginFile=function(k){if(i||k==undefined){g='<table style="empty-cells: show;" cellspacing="0" cellpadding="2">'}else{g='<html>\n\t<head>\n\t\t<title></title>\n\t\t<meta http-equiv=Content-type content="text/html; charset=UTF-8">\n\t</head>\n\t<body>\n\t\t<table style="empty-cells: show;" cellspacing="0" cellpadding="2">'}};this.beginHeader=function(){if(i){g+="\n\t<thead><tr>"}else{g+="\n\t\t\t<thead>"}};this.appendHeaderCell=function(m,n,l,k){h=k;if(!k){return}if(i){g+='\n\t\t\t\t<th style="'+f(l)+'">'+m.text+"</th>"}else{if(l.disabled){return}if(l.merge){if(m.width){g+="\n\t\t\t\t<th colspan="+(1+l.merge)+' style="width: '+m.width+"px; "+f(l)+'">'+m.text+"</th>"}else{g+="\n\t\t\t\t<th colspan="+(1+l.merge)+' style="'+f(l)+'">'+m.text+"</th>"}}else{if(m.width){g+='\n\t\t\t\t<th style="width: '+m.width+"px; "+f(l)+'">'+m.text+"</th>"}else{g+='\n\t\t\t\t<th style="'+f(l)+'">'+m.text+"</th>"}}}};this.endHeader=function(){if(i){g+="\n\t</tr></thead>"}else{g+="\n\t\t\t</thead>"}};this.beginBody=function(){if(i){g+="\n\t<tbody>"}else{g+="\n\t\t\t<tbody>"}j=0};this.beginRow=function(){if(i){g+="\n\t<tr>"}else{g+="\n\t\t\t\t<tr>"}j++};this.appendBodyCell=function(l,n,k){var m=this.getFormat(n);if(l===""){l="&nbsp;"}if(i){if(j==1&&!h){g+='\n\t\t\t\t\t<td style="'+f(k)+' border-top-width: 1px;">'+this.formatData(l,m.type,m.formatString,m.localization)+"</td>"}else{g+='\n\t\t\t\t\t<td style="'+f(k)+'">'+this.formatData(l,m.type,m.formatString,m.localization)+"</td>"}}else{if(k.merge){if(j==1&&!h){g+="\n\t\t\t\t\t<td colspan="+(1+k.merge)+' style="'+f(k)+' border-top-width: 1px;">'+this.formatData(l,m.type,m.formatString,m.localization)+"</td>"}else{g+="\n\t\t\t\t\t<td colspan="+(1+k.merge)+' style="'+f(k)+'">'+this.formatData(l,m.type,m.formatString,m.localization)+"</td>"}}else{if(j==1&&!h){g+='\n\t\t\t\t\t<td style="'+f(k)+' border-top-width: 1px;">'+this.formatData(l,m.type,m.formatString,m.localization)+"</td>"}else{g+='\n\t\t\t\t\t<td style="'+f(k)+'">'+this.formatData(l,m.type,m.formatString,m.localization)+"</td>"}}}};this.endRow=function(){if(i){g+="\n\t</tr>"}else{g+="\n\t\t\t\t</tr>"}};this.endBody=function(){if(i){g+="\n\t</tbody>"}else{g+="\n\t\t\t</tbody>"}};this.endFile=function(k){if(i||k==undefined){g+="\n</table>"}else{g+="\n\t\t</table>\n\t</body>\n</html>\n"}};this.getFile=function(){return g};function f(m){var k="";for(var l in m){if(m.hasOwnProperty(l)){if(i&&l=="font-size"){m[l]="100%"}k+=l+":"+m[l]+";"}}return k}};a.prototype=new d.jqx.dataAdapter.DataExportModuleBase();var e=function(){};e.prototype=new a();var c=function(){};c.prototype=new a();var b=new c();d.jqx.dataAdapter.ArrayExporter.extend("html",new e());d.jqx.dataAdapter.ArrayExporter.extend("pdf",b)})(jqxBaseFramework);(function(b){var a=function(){var h,l,d,i,c,j,m={style:"",stylesMap:{font:{color:"Color","font-family":"FontName","font-style":"Italic","font-weight":"Bold"},interior:{"background-color":"Color",background:"Color"},alignment:{left:"Left",center:"Center",right:"Right"}},startStyle:function(p){this.style+='\n\t\t<Style ss:ID="'+p+'" ss:Name="'+p+'">'},buildAlignment:function(q){if(q["text-align"]){var r=this.stylesMap.alignment[q["text-align"]];if(!r){r="Left"}var p='\n\t\t\t<Alignment ss:Vertical="Bottom" ss:Horizontal="'+r+'"/>';this.style+=p}},buildBorder:function(s){if(s["border-color"]){var r="\n\t\t\t<Borders>";var u='\n\t\t\t\t<Border ss:Position="Bottom" ss:LineStyle="Continuous" ss:Weight="1" ss:Color="'+s["border-color"]+'"/>';var p='\n\t\t\t\t<Border ss:Position="Left" ss:LineStyle="Continuous" ss:Weight="1" ss:Color="'+s["border-color"]+'"/>';var q='\n\t\t\t\t<Border ss:Position="Right" ss:LineStyle="Continuous" ss:Weight="1" ss:Color="'+s["border-color"]+'"/>';var t='\n\t\t\t\t<Border ss:Position="Top" ss:LineStyle="Continuous" ss:Weight="1" ss:Color="'+s["border-color"]+'"/>';r+=u;r+=p;r+=q;r+=t;r+="\n\t\t\t</Borders>";this.style+=r}},buildFont:function(q){var r=this.stylesMap.font,p="\n\t\t\t<Font ";for(var s in r){if(typeof q[s]!=="undefined"){if(s==="font-style"&&q[s].toString().toLowerCase()==="italic"){p+='ss:Italic="1" '}else{if(s==="font-weight"&&q[s].toString().toLowerCase()==="bold"){p+='ss:Bold="1" '}else{if(s==="color"){p+="ss:"+r[s]+'="'+q[s]+'" '}}}}}p+="/>";this.style+=p},buildInterior:function(q){var r=this.stylesMap.interior,t="\n\t\t\t<Interior ";var p=false;for(var s in r){if(typeof q[s]!=="undefined"){t+="ss:"+r[s]+'="'+q[s]+'" ';p=true}}if(p){t+='ss:Pattern="Solid"'}t+="/>";this.style+=t},buildFormat:function(q){if(q.dataType=="number"||q.dataType=="float"||q.dataType=="int"||q.dataType=="integer"){var p=q.formatString;if(p==""||p.indexOf("n")!=-1||p.indexOf("N")!=-1){this.style+='\n\t\t\t<NumberFormat ss:Format="0"/>'}else{if(p=="f"||p=="F"||p=="D"||p.indexOf("d")!=-1){this.style+='\n\t\t\t<NumberFormat ss:Format="#,##0.00_);[Red](#,##0.00)"/>'}else{if(p.indexOf("p")!=-1||p.indexOf("P")!=-1){this.style+='\n\t\t\t<NumberFormat ss:Format="Percent"/>'}else{if(p.indexOf("c")!=-1||p.indexOf("C")!=-1){if(q.currencysymbol&&parseInt(q.currencysymbol.charCodeAt(0))==8364){this.style+='\n\t\t\t<NumberFormat ss:Format="Euro Currency"/>'}else{this.style+='\n\t\t\t<NumberFormat ss:Format="Currency"/>'}}}}}}else{if(q.dataType=="date"){this.style+='\n\t\t\t<NumberFormat ss:Format="Short Date"/>'}}},closeStyle:function(){this.style+="\n\t\t</Style>"},toString:function(){var p=this.style;this.style="";return p}};this.beginFile=function(){c={};j=0;h='<?xml version="1.0"?>\n\t<?mso-application progid="Excel.Sheet"?> \n\t<Workbook xmlns="urn:schemas-microsoft-com:office:spreadsheet" \n\txmlns:o="urn:schemas-microsoft-com:office:office" \n\txmlns:x="urn:schemas-microsoft-com:office:excel" \n\txmlns:ss="urn:schemas-microsoft-com:office:spreadsheet" \n\txmlns:html="http://www.w3.org/TR/REC-html40"> \n\t<DocumentProperties xmlns="urn:schemas-microsoft-com:office:office"> \n\t<Version>12.00</Version> \n\t</DocumentProperties> \n\t<ExcelWorkbook xmlns="urn:schemas-microsoft-com:office:excel"> \n\t<WindowHeight>8130</WindowHeight> \n\t<WindowWidth>15135</WindowWidth> \n\t<WindowTopX>120</WindowTopX> \n\t<WindowTopY>45</WindowTopY> \n\t<ProtectStructure>False</ProtectStructure> \n\t<ProtectWindows>False</ProtectWindows> \n\t</ExcelWorkbook> \n\t<Styles>'};this.beginHeader=function(){l='\n\t<Worksheet ss:Name="Sheet1">\n\t\t<Table>';d=[];i=[]};this.appendHeaderCell=function(r,s,q){var p=r.width!=undefined?r.width:r.text.length*10;l+='\n\t\t\t<Column ss:Width="'+p+'"/>';d.push(r);i.push(q)};this.endHeader=function(p){if(p){this.beginRow();for(var q=0;q<d.length;q+=1){if(i[q].disabled){continue}g.call(this,d[q]["text"],null,i[q])}this.endRow()}};this.beginBody=function(){};this.beginRow=function(q){if(q!=undefined){l+="\n\t\t\t";for(var p=0;p<q;p++){l+="\t"}l+="<Row>";return}l+="\n\t\t\t<Row>"};this.beginRows=function(p){l+="\n\t\t\t\t<Rows>"};this.appendBodyCell=function(r,p,q,s){g.call(this,r,p,q,s)};this.endRow=function(q){if(q!=undefined){l+="\n\t\t\t";for(var p=0;p<q;p++){l+="\t"}l+="</Row>";return}l+="\n\t\t\t</Row>"};this.endRows=function(q){if(q!=undefined){l+="\n\t\t\t";for(var p=0;p<q;p++){l+="\t"}l+="</Rows>";return}};this.endBody=function(){l+="\n\t\t</Table>"};this.endFile=function(){l+="\n\t</Worksheet>\n</Workbook>";h+="\n\t</Styles>"};this.getFile=function(){return h+l};function g(t,w,s,v){var r="String";var u=this.getFormat(w);if(t!=null&&t.toString().substring(0,3)=="_AG"){t=t.toString().substring(3);r="String"}else{if(u.type=="date"){var q=t;t=this.formatData(t,u.type,u.formatString,u.localization);if(t===null||t===""){t="";r="String"}else{t=q.toISOString();r="DateTime"}}if(u.type=="string"){if(t===null||t===undefined){t=""}else{if(t.toString().indexOf("&")>=0){t=t.toString().replace(/&/g,"&amp;")}if(t.toString().indexOf(">")>=0){t=t.toString().replace(/>/g,"&gt;")}if(t.toString().indexOf("<")>=0){t=t.toString().replace(/</g,"&lt;")}if(t.toString().indexOf('"')>=0){t=t.toString().replace(/"/g,"&quot;")}if(t.toString().indexOf("'")>=0){t=t.toString().replace(/'/g,"&apos;")}}}if(s.dataType=="number"||s.dataType=="float"||s.dataType=="int"||s.dataType=="integer"){r="Number";t=parseFloat(t);if(t===null||isNaN(t)||t===""){t="";r="String"}if(t&&r!="String"&&t!=""){if(w&&w.formatString&&w.formatString.indexOf("p")>=0){t=t/100}}s.currencysymbol=w.localization.currencysymbol}}var p=f(s);if(s.merge){l+='\n\t\t\t\t<Cell ss:MergeAcross="'+s.merge+'" ss:StyleID="'+p+'"><Data ss:Type="'+r+'">'+t+"</Data></Cell>"}else{l+='\n\t\t\t\t<Cell ss:StyleID="'+p+'"><Data ss:Type="'+r+'">'+t+"</Data></Cell>"}}function n(){j+=1;return"xls-style-"+j}function k(q){for(var p in c){if(o(q,c[p])&&o(c[p],q)){return p}}return undefined}function o(t,q){var s=true;for(var r in t){if(t[r]!==q[r]){s=false}}return s}function e(q,p){m.startStyle(q);m.buildAlignment(p);m.buildBorder(p);m.buildFont(p);m.buildInterior(p);m.buildFormat(p);m.closeStyle();h+=m.toString()}function f(p){if(!p){return""}var q=k(p);if(typeof q==="undefined"){q=n();c[q]=p;e(q,p)}return q}};a.prototype=new b.jqx.dataAdapter.DataExportModuleBase();b.jqx.dataAdapter.ArrayExporter.extend("xls",new a())})(jqxBaseFramework);(function(b){var a=function(){var e,c,d;this.beginFile=function(){e='<?xml version="1.0" encoding="UTF-8" ?>';e+="\n<table>"};this.beginHeader=function(){c=[]};this.appendHeaderCell=function(f,g){c.push(g)};this.endHeader=function(){};this.beginBody=function(g,f){};this.beginRow=function(h){var g=this;if(!g){g=window.jqx}if(h!=undefined){if(g.hierarchy){e+="\n\t";for(var f=0;f<h;f++){e+="\t\t"}e+="<row>";d=0;return}}e+="\n\t<row>";d=0};this.beginRows=function(g){if(g!=undefined){e+="\n\t\t";for(var f=0;f<g;f++){e+="\t\t"}e+="<rows>";d=0;return}e+="\n\t\t<rows>"};this.appendBodyCell=function(h,n,f,o,j,m){var k=this;if(!k){k=window.jqx}var l=this.getFormat(n);h=this.formatData(h,l.type,l.formatString,l.localization);if(l.type=="string"){if(h.toString().indexOf("&")>=0){h=h.toString().replace(/&/g,"&amp;")}if(h.toString().indexOf(">")>=0){h=h.toString().replace(/>/g,"&gt;")}if(h.toString().indexOf("<")>=0){h=h.toString().replace(/</g,"&lt;")}if(h.toString().indexOf('"')>=0){h=h.toString().replace(/"/g,"&quot;")}if(h.toString().indexOf("'")>=0){h=h.toString().replace(/'/g,"&apos;")}}if(o.level!=undefined){if(k.hierarchy){e+="\n\t\t";for(var g=0;g<o.level;g++){e+="\t\t"}if(m===undefined){e+="<"+c[d]+">"+h+"</"+c[d]+">"}else{e+="<"+m+">"+h+"</"+m+">"}}else{if(m!=undefined){e+="\n\t\t<"+m+">"+h+"</"+m+">"}else{e+="\n\t\t<"+c[d]+">"+h+"</"+c[d]+">"}}}else{e+="\n\t\t<"+c[d]+">"+h+"</"+c[d]+">"}d++};this.endRow=function(h){var g=this;if(!g){g=window.jqx}if(h!=undefined){if(g.hierarchy){e+="\n\t";for(var f=0;f<h;f++){e+="\t\t"}e+="</row>";d=0;return}}e+="\n\t</row>";d=0};this.endRows=function(g){if(g!=undefined){e+="\n\t\t";for(var f=0;f<g;f++){e+="\t\t"}e+="</rows>";d=0;return}e+="\n\t\t</rows>"};this.endBody=function(){};this.endFile=function(){e+="\n</table>"};this.getFile=function(){return e}};a.prototype=new b.jqx.dataAdapter.DataExportModuleBase();b.jqx.dataAdapter.ArrayExporter.extend("xml",new a())})(jqxBaseFramework);(function(d){var j=/[\\\"\x00-\x1f\x7f-\x9f\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g,l={"\b":"\\b","\t":"\\t","\n":"\\n","\f":"\\f","\r":"\\r",'"':'\\"',"\\":"\\\\"};function a(n){return'"'+n.replace(j,function(o){var p=l[o];return typeof p==="string"?p:"\\u"+("0000"+o.charCodeAt(0).toString(16)).slice(-4)})+'"'}function b(o){return o<10?"0"+o:o}function e(o){var n;if(isFinite(o.valueOf())){n=o.getUTCFullYear()+"-"+b(o.getUTCMonth()+1)+"-"+b(o.getUTCDate())+"T"+b(o.getUTCHours())+":"+b(o.getUTCMinutes())+":"+b(o.getUTCSeconds())+