libgda r3277 - in trunk: . libgda providers/jdbc tools



Author: vivien
Date: Mon Jan  5 20:02:44 2009
New Revision: 3277
URL: http://svn.gnome.org/viewvc/libgda?rev=3277&view=rev

Log:
2009-01-05  Vivien Malerba <malerba gnome-db org>

	* tools/: now display result sets as an HTML table which can be resized
	* providers/jdbc/GdaInputStream.c: removed unused variable
	* libgda/gda-util.c:
	  - gda_g_type_to_string(): be more coherent
	  - gda_utility_data_model_find_column_description(): test GValue
	    existence before getting its value


Added:
   trunk/tools/jquery-ui.js
Modified:
   trunk/ChangeLog
   trunk/libgda/gda-util.c
   trunk/providers/jdbc/GdaInputStream.c
   trunk/tools/gda-print.css
   trunk/tools/gda-sql.c
   trunk/tools/gda.css
   trunk/tools/jquery.js
   trunk/tools/mouseirb_2.js
   trunk/tools/web-server.c

Modified: trunk/libgda/gda-util.c
==============================================================================
--- trunk/libgda/gda-util.c	(original)
+++ trunk/libgda/gda-util.c	Mon Jan  5 20:02:44 2009
@@ -1,5 +1,5 @@
 /* GDA common library
- * Copyright (C) 1998 - 2008 The GNOME Foundation.
+ * Copyright (C) 1998 - 2009 The GNOME Foundation.
  *
  * AUTHORS:
  *	Rodrigo Moya <rodrigo gnome-db org>
@@ -46,14 +46,27 @@
  * gda_g_type_to_string
  * @type: Type to convert from.
  *
- * Returns: the string representing the given #GType.
+ * Returns: the GDA's string representing the given #GType or the name
+ * returned by #g_type_name.
  */
 const gchar *
 gda_g_type_to_string (GType type)
 {
 	if (type == GDA_TYPE_NULL)
 		return "null";
-	else
+	else if (type == G_TYPE_INT)
+		return "int";
+	else if (type == G_TYPE_STRING)
+		return "string";
+	else if (type == G_TYPE_DATE)
+		return "date";			
+	else if (type == GDA_TYPE_TIME)
+		return "time";
+	else if (type == GDA_TYPE_TIMESTAMP)
+		return "timestamp";
+	else if (type == G_TYPE_BOOLEAN)
+		return "boolean";
+	else 
 		return g_type_name (type);
 }
 
@@ -431,7 +444,7 @@
 					(meta_table_column, GDA_ATTRIBUTE_DESCRIPTION);
 
 				gda_sql_statement_free (sql_statement);
-				return g_value_get_string (gvalue);
+				return gvalue ? g_value_get_string (gvalue) : NULL;
 			}
 		}
 	}

Modified: trunk/providers/jdbc/GdaInputStream.c
==============================================================================
--- trunk/providers/jdbc/GdaInputStream.c	(original)
+++ trunk/providers/jdbc/GdaInputStream.c	Mon Jan  5 20:02:44 2009
@@ -110,7 +110,6 @@
 	}
 
 	guchar *raw_data;
-	jint *data;
 	GdaBlob *nblob = NULL;
 	gint real_size;
 	if (blob->op) {

Modified: trunk/tools/gda-print.css
==============================================================================
--- trunk/tools/gda-print.css	(original)
+++ trunk/tools/gda-print.css	Mon Jan  5 20:02:44 2009
@@ -285,4 +285,8 @@
 #footer p {
     padding:10px;
     margin:0;
-}
\ No newline at end of file
+}
+
+.tcontents {
+    overflow: hidden;
+}

Modified: trunk/tools/gda-sql.c
==============================================================================
--- trunk/tools/gda-sql.c	(original)
+++ trunk/tools/gda-sql.c	Mon Jan  5 20:02:44 2009
@@ -1,5 +1,5 @@
 /* GDA - SQL console
- * Copyright (C) 2007 - 2008 The GNOME Foundation.
+ * Copyright (C) 2007 - 2009 The GNOME Foundation.
  *
  * AUTHORS:
  * 	Vivien Malerba <malerba gnome-db org>
@@ -4497,7 +4497,12 @@
 			res = command_execute (console, loc_cmde, error);
 			
 			if (res) {
+				OutputFormat of = console->output_format;
+				if (res->type == GDA_INTERNAL_COMMAND_RESULT_DATA_MODEL)
+					console->output_format = OUTPUT_FORMAT_HTML;
+
 				retstr = result_to_string (console, res);
+				console->output_format = of;
 				gda_internal_command_exec_result_free (res);
 			}
 		}

Modified: trunk/tools/gda.css
==============================================================================
--- trunk/tools/gda.css	(original)
+++ trunk/tools/gda.css	Mon Jan  5 20:02:44 2009
@@ -284,4 +284,8 @@
 #footer p {
     padding:10px;
     margin:0;
+}
+
+.tcontents {
+    overflow: hidden;
 }
\ No newline at end of file

Added: trunk/tools/jquery-ui.js
==============================================================================
--- (empty file)
+++ trunk/tools/jquery-ui.js	Mon Jan  5 20:02:44 2009
@@ -0,0 +1,66 @@
+;(function($){var _remove=$.fn.remove,isFF2=$.browser.mozilla&&(parseFloat($.browser.version)<1.9);$.ui={version:"1.6rc4",plugin:{add:function(module,option,set){var proto=$.ui[module].prototype;for(var i in set){proto.plugins[i]=proto.plugins[i]||[];proto.plugins[i].push([option,set[i]]);}},call:function(instance,name,args){var set=instance.plugins[name];if(!set){return;}
+for(var i=0;i<set.length;i++){if(instance.options[set[i][0]]){set[i][1].apply(instance.element,args);}}}},contains:function(a,b){var safari2=$.browser.safari&&$.browser.version<522;if(a.contains&&!safari2){return a.contains(b);}
+if(a.compareDocumentPosition)
+return!!(a.compareDocumentPosition(b)&16);while(b=b.parentNode)
+if(b==a)return true;return false;},cssCache:{},css:function(name){if($.ui.cssCache[name]){return $.ui.cssCache[name];}
+var tmp=$('<div class="ui-gen">').addClass(name).css({position:'absolute',top:'-5000px',left:'-5000px',display:'block'}).appendTo('body');$.ui.cssCache[name]=!!((!(/auto|default/).test(tmp.css('cursor'))||(/^[1-9]/).test(tmp.css('height'))||(/^[1-9]/).test(tmp.css('width'))||!(/none/).test(tmp.css('backgroundImage'))||!(/transparent|rgba\(0, 0, 0, 0\)/).test(tmp.css('backgroundColor'))));try{$('body').get(0).removeChild(tmp.get(0));}catch(e){}
+return $.ui.cssCache[name];},hasScroll:function(el,a){if($(el).css('overflow')=='hidden'){return false;}
+var scroll=(a&&a=='left')?'scrollLeft':'scrollTop',has=false;if(el[scroll]>0){return true;}
+el[scroll]=1;has=(el[scroll]>0);el[scroll]=0;return has;},isOverAxis:function(x,reference,size){return(x>reference)&&(x<(reference+size));},isOver:function(y,x,top,left,height,width){return $.ui.isOverAxis(y,top,height)&&$.ui.isOverAxis(x,left,width);},keyCode:{BACKSPACE:8,CAPS_LOCK:20,COMMA:188,CONTROL:17,DELETE:46,DOWN:40,END:35,ENTER:13,ESCAPE:27,HOME:36,INSERT:45,LEFT:37,NUMPAD_ADD:107,NUMPAD_DECIMAL:110,NUMPAD_DIVIDE:111,NUMPAD_ENTER:108,NUMPAD_MULTIPLY:106,NUMPAD_SUBTRACT:109,PAGE_DOWN:34,PAGE_UP:33,PERIOD:190,RIGHT:39,SHIFT:16,SPACE:32,TAB:9,UP:38}};if(isFF2){var attr=$.attr,removeAttr=$.fn.removeAttr,ariaNS="http://www.w3.org/2005/07/aaa",ariaState=/^aria-/,ariaRole=/^wairole:/;$.attr=function(elem,name,value){var set=value!==undefined;return(name=='role'?(set?attr.call(this,elem,name,"wairole:"+value):(attr.apply(this,arguments)||"").replace(ariaRole,"")):(ariaState.test(name)?(set?elem.setAttributeNS(ariaNS,name.replace(ariaState,"aaa:"),value):attr.call(this,elem,
 name.replace(ariaState,"aaa:"))):attr.apply(this,arguments)));};$.fn.removeAttr=function(name){return(ariaState.test(name)?this.each(function(){this.removeAttributeNS(ariaNS,name.replace(ariaState,""));}):removeAttr.call(this,name));};}
+$.fn.extend({remove:function(){$("*",this).add(this).each(function(){$(this).triggerHandler("remove");});return _remove.apply(this,arguments);},enableSelection:function(){return this.attr('unselectable','off').css('MozUserSelect','').unbind('selectstart.ui');},disableSelection:function(){return this.attr('unselectable','on').css('MozUserSelect','none').bind('selectstart.ui',function(){return false;});},scrollParent:function(){var scrollParent;if(($.browser.msie&&(/(static|relative)/).test(this.css('position')))||(/absolute/).test(this.css('position'))){scrollParent=this.parents().filter(function(){return(/(relative|absolute|fixed)/).test($.curCSS(this,'position',1))&&(/(auto|scroll)/).test($.curCSS(this,'overflow',1)+$.curCSS(this,'overflow-y',1)+$.curCSS(this,'overflow-x',1));}).eq(0);}else{scrollParent=this.parents().filter(function(){return(/(auto|scroll)/).test($.curCSS(this,'overflow',1)+$.curCSS(this,'overflow-y',1)+$.curCSS(this,'overflow-x',1));}).eq(0);}
+return(/fixed/).test(this.css('position'))||!scrollParent.length?$(document):scrollParent;}});$.extend($.expr[':'],{data:function(a,i,m){return!!$.data(a,m[3]);},tabbable:function(a,i,m){var nodeName=a.nodeName.toLowerCase();function isVisible(element){return!($(element).is(':hidden')||$(element).parents(':hidden').length);}
+return(a.tabIndex>=0&&(('a'==nodeName&&a.href)||(/input|select|textarea|button/.test(nodeName)&&'hidden'!=a.type&&!a.disabled))&&isVisible(a));}});function getter(namespace,plugin,method,args){function getMethods(type){var methods=$[namespace][plugin][type]||[];return(typeof methods=='string'?methods.split(/,?\s+/):methods);}
+var methods=getMethods('getter');if(args.length==1&&typeof args[0]=='string'){methods=methods.concat(getMethods('getterSetter'));}
+return($.inArray(method,methods)!=-1);}
+$.widget=function(name,prototype){var namespace=name.split(".")[0];name=name.split(".")[1];$.fn[name]=function(options){var isMethodCall=(typeof options=='string'),args=Array.prototype.slice.call(arguments,1);if(isMethodCall&&options.substring(0,1)=='_'){return this;}
+if(isMethodCall&&getter(namespace,name,options,args)){var instance=$.data(this[0],name);return(instance?instance[options].apply(instance,args):undefined);}
+return this.each(function(){var instance=$.data(this,name);(!instance&&!isMethodCall&&$.data(this,name,new $[namespace][name](this,options)));(instance&&isMethodCall&&$.isFunction(instance[options])&&instance[options].apply(instance,args));});};$[namespace]=$[namespace]||{};$[namespace][name]=function(element,options){var self=this;this.namespace=namespace;this.widgetName=name;this.widgetEventPrefix=$[namespace][name].eventPrefix||name;this.widgetBaseClass=namespace+'-'+name;this.options=$.extend({},$.widget.defaults,$[namespace][name].defaults,$.metadata&&$.metadata.get(element)[name],options);this.element=$(element).bind('setData.'+name,function(event,key,value){if(event.target==element){return self._setData(key,value);}}).bind('getData.'+name,function(event,key){if(event.target==element){return self._getData(key);}}).bind('remove',function(){return self.destroy();});this._init();};$[namespace][name].prototype=$.extend({},$.widget.prototype,prototype);$[namespace][name].ge
 tterSetter='option';};$.widget.prototype={_init:function(){},destroy:function(){this.element.removeData(this.widgetName).removeClass(this.widgetBaseClass+'-disabled'+' '+this.namespace+'-state-disabled').removeAttr('aria-disabled');},option:function(key,value){var options=key,self=this;if(typeof key=="string"){if(value===undefined){return this._getData(key);}
+options={};options[key]=value;}
+$.each(options,function(key,value){self._setData(key,value);});},_getData:function(key){return this.options[key];},_setData:function(key,value){this.options[key]=value;if(key=='disabled'){this.element
+[value?'addClass':'removeClass'](this.widgetBaseClass+'-disabled'+' '+
+this.namespace+'-state-disabled').attr("aria-disabled",value);}},enable:function(){this._setData('disabled',false);},disable:function(){this._setData('disabled',true);},_trigger:function(type,event,data){var eventName=(type==this.widgetEventPrefix?type:this.widgetEventPrefix+type);event=event||$.event.fix({type:eventName,target:this.element[0]});return this.element.triggerHandler(eventName,[event,data],this.options[type]);}};$.widget.defaults={disabled:false};$.ui.mouse={_mouseInit:function(){var self=this;this.element.bind('mousedown.'+this.widgetName,function(event){return self._mouseDown(event);}).bind('click.'+this.widgetName,function(event){if(self._preventClickEvent){self._preventClickEvent=false;return false;}});if($.browser.msie){this._mouseUnselectable=this.element.attr('unselectable');this.element.attr('unselectable','on');}
+this.started=false;},_mouseDestroy:function(){this.element.unbind('.'+this.widgetName);($.browser.msie&&this.element.attr('unselectable',this._mouseUnselectable));},_mouseDown:function(event){(this._mouseStarted&&this._mouseUp(event));this._mouseDownEvent=event;var self=this,btnIsLeft=(event.which==1),elIsCancel=(typeof this.options.cancel=="string"?$(event.target).parents().add(event.target).filter(this.options.cancel).length:false);if(!btnIsLeft||elIsCancel||!this._mouseCapture(event)){return true;}
+this.mouseDelayMet=!this.options.delay;if(!this.mouseDelayMet){this._mouseDelayTimer=setTimeout(function(){self.mouseDelayMet=true;},this.options.delay);}
+if(this._mouseDistanceMet(event)&&this._mouseDelayMet(event)){this._mouseStarted=(this._mouseStart(event)!==false);if(!this._mouseStarted){event.preventDefault();return true;}}
+this._mouseMoveDelegate=function(event){return self._mouseMove(event);};this._mouseUpDelegate=function(event){return self._mouseUp(event);};$(document).bind('mousemove.'+this.widgetName,this._mouseMoveDelegate).bind('mouseup.'+this.widgetName,this._mouseUpDelegate);if(!$.browser.safari)event.preventDefault();return true;},_mouseMove:function(event){if($.browser.msie&&!event.button){return this._mouseUp(event);}
+if(this._mouseStarted){this._mouseDrag(event);return event.preventDefault();}
+if(this._mouseDistanceMet(event)&&this._mouseDelayMet(event)){this._mouseStarted=(this._mouseStart(this._mouseDownEvent,event)!==false);(this._mouseStarted?this._mouseDrag(event):this._mouseUp(event));}
+return!this._mouseStarted;},_mouseUp:function(event){$(document).unbind('mousemove.'+this.widgetName,this._mouseMoveDelegate).unbind('mouseup.'+this.widgetName,this._mouseUpDelegate);if(this._mouseStarted){this._mouseStarted=false;this._preventClickEvent=true;this._mouseStop(event);}
+return false;},_mouseDistanceMet:function(event){return(Math.max(Math.abs(this._mouseDownEvent.pageX-event.pageX),Math.abs(this._mouseDownEvent.pageY-event.pageY))>=this.options.distance);},_mouseDelayMet:function(event){return this.mouseDelayMet;},_mouseStart:function(event){},_mouseDrag:function(event){},_mouseStop:function(event){},_mouseCapture:function(event){return true;}};$.ui.mouse.defaults={cancel:null,distance:1,delay:0};})(jQuery);(function($){$.widget("ui.resizable",$.extend({},$.ui.mouse,{_init:function(){var self=this,o=this.options;var elpos=this.element.css('position');this.originalElement=this.element;this.element.addClass("ui-resizable").css({position:/static/.test(elpos)?'relative':elpos});$.extend(o,{_aspectRatio:!!(o.aspectRatio),helper:o.helper||o.ghost||o.animate?o.helper||'ui-resizable-helper':null,knobHandles:o.knobHandles===true?'ui-resizable-knob-handle':o.knobHandles});var aBorder='1px solid #DEDEDE';o.defaultTheme={'ui-resizable':{display:'block'
 },'ui-resizable-handle':{position:'absolute',background:'#F2F2F2',fontSize:'0.1px'},'ui-resizable-n':{cursor:'n-resize',height:'4px',left:'0px',right:'0px',borderTop:aBorder},'ui-resizable-s':{cursor:'s-resize',height:'4px',left:'0px',right:'0px',borderBottom:aBorder},'ui-resizable-e':{cursor:'e-resize',width:'4px',top:'0px',bottom:'0px',borderRight:aBorder},'ui-resizable-w':{cursor:'w-resize',width:'4px',top:'0px',bottom:'0px',borderLeft:aBorder},'ui-resizable-se':{cursor:'se-resize',width:'4px',height:'4px',borderRight:aBorder,borderBottom:aBorder},'ui-resizable-sw':{cursor:'sw-resize',width:'4px',height:'4px',borderBottom:aBorder,borderLeft:aBorder},'ui-resizable-ne':{cursor:'ne-resize',width:'4px',height:'4px',borderRight:aBorder,borderTop:aBorder},'ui-resizable-nw':{cursor:'nw-resize',width:'4px',height:'4px',borderLeft:aBorder,borderTop:aBorder}};o.knobTheme={'ui-resizable-handle':{background:'#F2F2F2',border:'1px solid #808080',height:'8px',width:'8px'},'ui-resizable-
 n':{cursor:'n-resize',top:'0px',left:'45%'},'ui-resizable-s':{cursor:'s-resize',bottom:'0px',left:'45%'},'ui-resizable-e':{cursor:'e-resize',right:'0px',top:'45%'},'ui-resizable-w':{cursor:'w-resize',left:'0px',top:'45%'},'ui-resizable-se':{cursor:'se-resize',right:'0px',bottom:'0px'},'ui-resizable-sw':{cursor:'sw-resize',left:'0px',bottom:'0px'},'ui-resizable-nw':{cursor:'nw-resize',left:'0px',top:'0px'},'ui-resizable-ne':{cursor:'ne-resize',right:'0px',top:'0px'}};o._nodeName=this.element[0].nodeName;if(o._nodeName.match(/canvas|textarea|input|select|button|img/i)){var el=this.element;if(/relative/.test(el.css('position'))&&$.browser.opera)
+el.css({position:'relative',top:'auto',left:'auto'});el.wrap($('<div class="ui-wrapper" style="overflow: hidden;"></div>').css({position:el.css('position'),width:el.outerWidth(),height:el.outerHeight(),top:el.css('top'),left:el.css('left')}));var oel=this.element;this.element=this.element.parent();this.element.data('resizable',this);this.element.css({marginLeft:oel.css("marginLeft"),marginTop:oel.css("marginTop"),marginRight:oel.css("marginRight"),marginBottom:oel.css("marginBottom")});oel.css({marginLeft:0,marginTop:0,marginRight:0,marginBottom:0});if($.browser.safari&&o.preventDefault)oel.css('resize','none');o.proportionallyResize=oel.css({position:'static',zoom:1,display:'block'});this.element.css({margin:oel.css('margin')});this._proportionallyResize();}
+if(!o.handles)o.handles=!$('.ui-resizable-handle',this.element).length?"e,s,se":{n:'.ui-resizable-n',e:'.ui-resizable-e',s:'.ui-resizable-s',w:'.ui-resizable-w',se:'.ui-resizable-se',sw:'.ui-resizable-sw',ne:'.ui-resizable-ne',nw:'.ui-resizable-nw'};if(o.handles.constructor==String){o.zIndex=o.zIndex||1000;if(o.handles=='all')o.handles='n,e,s,w,se,sw,ne,nw';var n=o.handles.split(",");o.handles={};var insertionsDefault={handle:'position: absolute; display: none; overflow:hidden;',n:'top: 0pt; width:100%;',e:'right: 0pt; height:100%;',s:'bottom: 0pt; width:100%;',w:'left: 0pt; height:100%;',se:'bottom: 0pt; right: 0px;',sw:'bottom: 0pt; left: 0px;',ne:'top: 0pt; right: 0px;',nw:'top: 0pt; left: 0px;'};for(var i=0;i<n.length;i++){var handle=$.trim(n[i]),dt=o.defaultTheme,hname='ui-resizable-'+handle,loadDefault=!$.ui.css(hname)&&!o.knobHandles,userKnobClass=$.ui.css('ui-resizable-knob-handle'),allDefTheme=$.extend(dt[hname],dt['ui-resizable-handle']),allKnobTheme=$.extend(o.kno
 bTheme[hname],!userKnobClass?o.knobTheme['ui-resizable-handle']:{});var applyZIndex=/sw|se|ne|nw/.test(handle)?{zIndex:++o.zIndex}:{};var defCss=(loadDefault?insertionsDefault[handle]:''),axis=$(['<div class="ui-resizable-handle ',hname,'" style="',defCss,insertionsDefault.handle,'"></div>'].join('')).css(applyZIndex);o.handles[handle]='.ui-resizable-'+handle;this.element.append(axis.css(loadDefault?allDefTheme:{}).css(o.knobHandles?allKnobTheme:{}).addClass(o.knobHandles?'ui-resizable-knob-handle':'').addClass(o.knobHandles));}
+if(o.knobHandles)this.element.addClass('ui-resizable-knob').css(!$.ui.css('ui-resizable-knob')?{}:{});}
+this._renderAxis=function(target){target=target||this.element;for(var i in o.handles){if(o.handles[i].constructor==String)
+o.handles[i]=$(o.handles[i],this.element).show();if(o.transparent)
+o.handles[i].css({opacity:0});if(this.element.is('.ui-wrapper')&&o._nodeName.match(/textarea|input|select|button/i)){var axis=$(o.handles[i],this.element),padWrapper=0;padWrapper=/sw|ne|nw|se|n|s/.test(i)?axis.outerHeight():axis.outerWidth();var padPos=['padding',/ne|nw|n/.test(i)?'Top':/se|sw|s/.test(i)?'Bottom':/^e$/.test(i)?'Right':'Left'].join("");if(!o.transparent)
+target.css(padPos,padWrapper);this._proportionallyResize();}
+if(!$(o.handles[i]).length)continue;}};this._renderAxis(this.element);o._handles=$('.ui-resizable-handle',self.element);if(o.disableSelection)
+o._handles.disableSelection();o._handles.mouseover(function(){if(!o.resizing){if(this.className)
+var axis=this.className.match(/ui-resizable-(se|sw|ne|nw|n|e|s|w)/i);self.axis=o.axis=axis&&axis[1]?axis[1]:'se';}});if(o.autoHide){o._handles.hide();$(self.element).addClass("ui-resizable-autohide").hover(function(){$(this).removeClass("ui-resizable-autohide");o._handles.show();},function(){if(!o.resizing){$(this).addClass("ui-resizable-autohide");o._handles.hide();}});}
+this._mouseInit();},destroy:function(){var el=this.element,wrapped=el.children(".ui-resizable").get(0);this._mouseDestroy();var _destroy=function(exp){$(exp).removeClass("ui-resizable ui-resizable-disabled").removeData("resizable").unbind(".resizable").find('.ui-resizable-handle').remove();};_destroy(el);if(el.is('.ui-wrapper')&&wrapped){el.parent().append($(wrapped).css({position:el.css('position'),width:el.outerWidth(),height:el.outerHeight(),top:el.css('top'),left:el.css('left')})).end().remove();_destroy(wrapped);}},_mouseCapture:function(event){if(this.options.disabled)return false;var handle=false;for(var i in this.options.handles){if($(this.options.handles[i])[0]==event.target)handle=true;}
+if(!handle)return false;return true;},_mouseStart:function(event){var o=this.options,iniPos=this.element.position(),el=this.element,num=function(v){return parseInt(v,10)||0;},ie6=$.browser.msie&&$.browser.version<7;o.resizing=true;o.documentScroll={top:$(document).scrollTop(),left:$(document).scrollLeft()};if(el.is('.ui-draggable')||(/absolute/).test(el.css('position'))){var sOffset=$.browser.msie&&!o.containment&&(/absolute/).test(el.css('position'))&&!(/relative/).test(el.parent().css('position'));var dscrollt=sOffset?o.documentScroll.top:0,dscrolll=sOffset?o.documentScroll.left:0;el.css({position:'absolute',top:(iniPos.top+dscrollt),left:(iniPos.left+dscrolll)});}
+if($.browser.opera&&(/relative/).test(el.css('position')))
+el.css({position:'relative',top:'auto',left:'auto'});this._renderProxy();var curleft=num(this.helper.css('left')),curtop=num(this.helper.css('top'));if(o.containment){curleft+=$(o.containment).scrollLeft()||0;curtop+=$(o.containment).scrollTop()||0;}
+this.offset=this.helper.offset();this.position={left:curleft,top:curtop};this.size=o.helper||ie6?{width:el.outerWidth(),height:el.outerHeight()}:{width:el.width(),height:el.height()};this.originalSize=o.helper||ie6?{width:el.outerWidth(),height:el.outerHeight()}:{width:el.width(),height:el.height()};this.originalPosition={left:curleft,top:curtop};this.sizeDiff={width:el.outerWidth()-el.width(),height:el.outerHeight()-el.height()};this.originalMousePosition={left:event.pageX,top:event.pageY};o.aspectRatio=(typeof o.aspectRatio=='number')?o.aspectRatio:((this.originalSize.width/this.originalSize.height)||1);if(o.preserveCursor){var cursor=$('.ui-resizable-'+this.axis).css('cursor');$('body').css('cursor',cursor=='auto'?this.axis+'-resize':cursor);}
+this._propagate("start",event);return true;},_mouseDrag:function(event){var el=this.helper,o=this.options,props={},self=this,smp=this.originalMousePosition,a=this.axis;var dx=(event.pageX-smp.left)||0,dy=(event.pageY-smp.top)||0;var trigger=this._change[a];if(!trigger)return false;var data=trigger.apply(this,[event,dx,dy]),ie6=$.browser.msie&&$.browser.version<7,csdif=this.sizeDiff;if(o._aspectRatio||event.shiftKey)
+data=this._updateRatio(data,event);data=this._respectSize(data,event);this._propagate("resize",event);el.css({top:this.position.top+"px",left:this.position.left+"px",width:this.size.width+"px",height:this.size.height+"px"});if(!o.helper&&o.proportionallyResize)
+this._proportionallyResize();this._updateCache(data);this.element.triggerHandler("resize",[event,this.ui()],this.options["resize"]);return false;},_mouseStop:function(event){this.options.resizing=false;var o=this.options,num=function(v){return parseInt(v,10)||0;},self=this;if(o.helper){var pr=o.proportionallyResize,ista=pr&&(/textarea/i).test(pr.get(0).nodeName),soffseth=ista&&$.ui.hasScroll(pr.get(0),'left')?0:self.sizeDiff.height,soffsetw=ista?0:self.sizeDiff.width;var s={width:(self.size.width-soffsetw),height:(self.size.height-soffseth)},left=(parseInt(self.element.css('left'),10)+(self.position.left-self.originalPosition.left))||null,top=(parseInt(self.element.css('top'),10)+(self.position.top-self.originalPosition.top))||null;if(!o.animate)
+this.element.css($.extend(s,{top:top,left:left}));if(o.helper&&!o.animate)this._proportionallyResize();}
+if(o.preserveCursor)
+$('body').css('cursor','auto');this._propagate("stop",event);if(o.helper)this.helper.remove();return false;},_updateCache:function(data){var o=this.options;this.offset=this.helper.offset();if(data.left)this.position.left=data.left;if(data.top)this.position.top=data.top;if(data.height)this.size.height=data.height;if(data.width)this.size.width=data.width;},_updateRatio:function(data,event){var o=this.options,cpos=this.position,csize=this.size,a=this.axis;if(data.height)data.width=(csize.height*o.aspectRatio);else if(data.width)data.height=(csize.width/o.aspectRatio);if(a=='sw'){data.left=cpos.left+(csize.width-data.width);data.top=null;}
+if(a=='nw'){data.top=cpos.top+(csize.height-data.height);data.left=cpos.left+(csize.width-data.width);}
+return data;},_respectSize:function(data,event){var el=this.helper,o=this.options,pRatio=o._aspectRatio||event.shiftKey,a=this.axis,ismaxw=data.width&&o.maxWidth&&o.maxWidth<data.width,ismaxh=data.height&&o.maxHeight&&o.maxHeight<data.height,isminw=data.width&&o.minWidth&&o.minWidth>data.width,isminh=data.height&&o.minHeight&&o.minHeight>data.height;if(isminw)data.width=o.minWidth;if(isminh)data.height=o.minHeight;if(ismaxw)data.width=o.maxWidth;if(ismaxh)data.height=o.maxHeight;var dw=this.originalPosition.left+this.originalSize.width,dh=this.position.top+this.size.height;var cw=/sw|nw|w/.test(a),ch=/nw|ne|n/.test(a);if(isminw&&cw)data.left=dw-o.minWidth;if(ismaxw&&cw)data.left=dw-o.maxWidth;if(isminh&&ch)data.top=dh-o.minHeight;if(ismaxh&&ch)data.top=dh-o.maxHeight;var isNotwh=!data.width&&!data.height;if(isNotwh&&!data.left&&data.top)data.top=null;else if(isNotwh&&!data.top&&data.left)data.left=null;return data;},_proportionallyResize:function(){var o=this.options;if(!o.p
 roportionallyResize)return;var prel=o.proportionallyResize,el=this.helper||this.element;if(!o.borderDif){var b=[prel.css('borderTopWidth'),prel.css('borderRightWidth'),prel.css('borderBottomWidth'),prel.css('borderLeftWidth')],p=[prel.css('paddingTop'),prel.css('paddingRight'),prel.css('paddingBottom'),prel.css('paddingLeft')];o.borderDif=$.map(b,function(v,i){var border=parseInt(v,10)||0,padding=parseInt(p[i],10)||0;return border+padding;});}
+prel.css({height:(el.height()-o.borderDif[0]-o.borderDif[2])+"px",width:(el.width()-o.borderDif[1]-o.borderDif[3])+"px"});},_renderProxy:function(){var el=this.element,o=this.options;this.elementOffset=el.offset();if(o.helper){this.helper=this.helper||$('<div style="overflow:hidden;"></div>');var ie6=$.browser.msie&&$.browser.version<7,ie6offset=(ie6?1:0),pxyoffset=(ie6?2:-1);this.helper.addClass(o.helper).css({width:el.outerWidth()+pxyoffset,height:el.outerHeight()+pxyoffset,position:'absolute',left:this.elementOffset.left-ie6offset+'px',top:this.elementOffset.top-ie6offset+'px',zIndex:++o.zIndex});this.helper.appendTo("body");if(o.disableSelection)
+this.helper.disableSelection();}else{this.helper=el;}},_change:{e:function(event,dx,dy){return{width:this.originalSize.width+dx};},w:function(event,dx,dy){var o=this.options,cs=this.originalSize,sp=this.originalPosition;return{left:sp.left+dx,width:cs.width-dx};},n:function(event,dx,dy){var o=this.options,cs=this.originalSize,sp=this.originalPosition;return{top:sp.top+dy,height:cs.height-dy};},s:function(event,dx,dy){return{height:this.originalSize.height+dy};},se:function(event,dx,dy){return $.extend(this._change.s.apply(this,arguments),this._change.e.apply(this,[event,dx,dy]));},sw:function(event,dx,dy){return $.extend(this._change.s.apply(this,arguments),this._change.w.apply(this,[event,dx,dy]));},ne:function(event,dx,dy){return $.extend(this._change.n.apply(this,arguments),this._change.e.apply(this,[event,dx,dy]));},nw:function(event,dx,dy){return $.extend(this._change.n.apply(this,arguments),this._change.w.apply(this,[event,dx,dy]));}},_propagate:function(n,event){$.ui.
 plugin.call(this,n,[event,this.ui()]);if(n!="resize")this.element.triggerHandler(["resize",n].join(""),[event,this.ui()],this.options[n]);},plugins:{},ui:function(){return{originalElement:this.originalElement,element:this.element,helper:this.helper,position:this.position,size:this.size,options:this.options,originalSize:this.originalSize,originalPosition:this.originalPosition};}}));$.extend($.ui.resizable,{version:"1.6rc4",defaults:{alsoResize:false,animate:false,animateDuration:"slow",animateEasing:"swing",aspectRatio:false,autoHide:false,cancel:":input",containment:false,delay:0,disableSelection:true,distance:1,ghost:false,grid:false,knobHandles:false,maxHeight:null,maxWidth:null,minHeight:10,minWidth:10,preserveCursor:true,preventDefault:true,proportionallyResize:false,transparent:false}});$.ui.plugin.add("resizable","alsoResize",{start:function(event,ui){var o=ui.options,self=$(this).data("resizable"),_store=function(exp){$(exp).each(function(){$(this).data("resizable-als
 oresize",{width:parseInt($(this).width(),10),height:parseInt($(this).height(),10),left:parseInt($(this).css('left'),10),top:parseInt($(this).css('top'),10)});});};if(typeof(o.alsoResize)=='object'&&!o.alsoResize.parentNode){if(o.alsoResize.length){o.alsoResize=o.alsoResize[0];_store(o.alsoResize);}
+else{$.each(o.alsoResize,function(exp,c){_store(exp);});}}else{_store(o.alsoResize);}},resize:function(event,ui){var o=ui.options,self=$(this).data("resizable"),os=self.originalSize,op=self.originalPosition;var delta={height:(self.size.height-os.height)||0,width:(self.size.width-os.width)||0,top:(self.position.top-op.top)||0,left:(self.position.left-op.left)||0},_alsoResize=function(exp,c){$(exp).each(function(){var start=$(this).data("resizable-alsoresize"),style={},css=c&&c.length?c:['width','height','top','left'];$.each(css||['width','height','top','left'],function(i,prop){var sum=(start[prop]||0)+(delta[prop]||0);if(sum&&sum>=0)
+style[prop]=sum||null;});$(this).css(style);});};if(typeof(o.alsoResize)=='object'&&!o.alsoResize.nodeType){$.each(o.alsoResize,function(exp,c){_alsoResize(exp,c);});}else{_alsoResize(o.alsoResize);}},stop:function(event,ui){$(this).removeData("resizable-alsoresize-start");}});$.ui.plugin.add("resizable","animate",{stop:function(event,ui){var o=ui.options,self=$(this).data("resizable");var pr=o.proportionallyResize,ista=pr&&(/textarea/i).test(pr.get(0).nodeName),soffseth=ista&&$.ui.hasScroll(pr.get(0),'left')?0:self.sizeDiff.height,soffsetw=ista?0:self.sizeDiff.width;var style={width:(self.size.width-soffsetw),height:(self.size.height-soffseth)},left=(parseInt(self.element.css('left'),10)+(self.position.left-self.originalPosition.left))||null,top=(parseInt(self.element.css('top'),10)+(self.position.top-self.originalPosition.top))||null;self.element.animate($.extend(style,top&&left?{top:top,left:left}:{}),{duration:o.animateDuration,easing:o.animateEasing,step:function(){var 
 data={width:parseInt(self.element.css('width'),10),height:parseInt(self.element.css('height'),10),top:parseInt(self.element.css('top'),10),left:parseInt(self.element.css('left'),10)};if(pr)pr.css({width:data.width,height:data.height});self._updateCache(data);self._propagate("animate",event);}});}});$.ui.plugin.add("resizable","containment",{start:function(event,ui){var o=ui.options,self=$(this).data("resizable"),el=self.element;var oc=o.containment,ce=(oc instanceof $)?oc.get(0):(/parent/.test(oc))?el.parent().get(0):oc;if(!ce)return;self.containerElement=$(ce);if(/document/.test(oc)||oc==document){self.containerOffset={left:0,top:0};self.containerPosition={left:0,top:0};self.parentData={element:$(document),left:0,top:0,width:$(document).width(),height:$(document).height()||document.body.parentNode.scrollHeight};}
+else{self.containerOffset=$(ce).offset();self.containerPosition=$(ce).position();self.containerSize={height:$(ce).innerHeight(),width:$(ce).innerWidth()};var co=self.containerOffset,ch=self.containerSize.height,cw=self.containerSize.width,width=($.ui.hasScroll(ce,"left")?ce.scrollWidth:cw),height=($.ui.hasScroll(ce)?ce.scrollHeight:ch);self.parentData={element:ce,left:co.left,top:co.top,width:width,height:height};}},resize:function(event,ui){var o=ui.options,self=$(this).data("resizable"),ps=self.containerSize,co=self.containerOffset,cs=self.size,cp=self.position,pRatio=o._aspectRatio||event.shiftKey,cop={top:0,left:0},ce=self.containerElement;if(ce[0]!=document&&(/static/).test(ce.css('position')))
+cop=self.containerPosition;if(cp.left<(o.helper?co.left:0)){self.size.width=self.size.width+(o.helper?(self.position.left-co.left):(self.position.left-cop.left));if(pRatio)self.size.height=self.size.width/o.aspectRatio;self.position.left=o.helper?co.left:0;}
+if(cp.top<(o.helper?co.top:0)){self.size.height=self.size.height+(o.helper?(self.position.top-co.top):self.position.top);if(pRatio)self.size.width=self.size.height*o.aspectRatio;self.position.top=o.helper?co.top:0;}
+var woset=Math.abs((o.helper?self.offset.left-cop.left:(self.offset.left-cop.left))+self.sizeDiff.width),hoset=Math.abs((o.helper?self.offset.top-cop.top:(self.offset.top-co.top))+self.sizeDiff.height);if(woset+self.size.width>=self.parentData.width){self.size.width=self.parentData.width-woset;if(pRatio)self.size.height=self.size.width/o.aspectRatio;}
+if(hoset+self.size.height>=self.parentData.height){self.size.height=self.parentData.height-hoset;if(pRatio)self.size.width=self.size.height*o.aspectRatio;}},stop:function(event,ui){var o=ui.options,self=$(this).data("resizable"),cp=self.position,co=self.containerOffset,cop=self.containerPosition,ce=self.containerElement;var helper=$(self.helper),ho=helper.offset(),w=helper.outerWidth()-self.sizeDiff.width,h=helper.outerHeight()-self.sizeDiff.height;if(o.helper&&!o.animate&&(/relative/).test(ce.css('position')))
+$(this).css({left:ho.left-cop.left-co.left,width:w,height:h});if(o.helper&&!o.animate&&(/static/).test(ce.css('position')))
+$(this).css({left:ho.left-cop.left-co.left,width:w,height:h});}});$.ui.plugin.add("resizable","ghost",{start:function(event,ui){var o=ui.options,self=$(this).data("resizable"),pr=o.proportionallyResize,cs=self.size;if(!pr)self.ghost=self.element.clone();else self.ghost=pr.clone();self.ghost.css({opacity:.25,display:'block',position:'relative',height:cs.height,width:cs.width,margin:0,left:0,top:0}).addClass('ui-resizable-ghost').addClass(typeof o.ghost=='string'?o.ghost:'');self.ghost.appendTo(self.helper);},resize:function(event,ui){var o=ui.options,self=$(this).data("resizable"),pr=o.proportionallyResize;if(self.ghost)self.ghost.css({position:'relative',height:self.size.height,width:self.size.width});},stop:function(event,ui){var o=ui.options,self=$(this).data("resizable"),pr=o.proportionallyResize;if(self.ghost&&self.helper)self.helper.get(0).removeChild(self.ghost.get(0));}});$.ui.plugin.add("resizable","grid",{resize:function(event,ui){var o=ui.options,self=$(this).data(
 "resizable"),cs=self.size,os=self.originalSize,op=self.originalPosition,a=self.axis,ratio=o._aspectRatio||event.shiftKey;o.grid=typeof o.grid=="number"?[o.grid,o.grid]:o.grid;var ox=Math.round((cs.width-os.width)/(o.grid[0]||1))*(o.grid[0]||1),oy=Math.round((cs.height-os.height)/(o.grid[1]||1))*(o.grid[1]||1);if(/^(se|s|e)$/.test(a)){self.size.width=os.width+ox;self.size.height=os.height+oy;}
+else if(/^(ne)$/.test(a)){self.size.width=os.width+ox;self.size.height=os.height+oy;self.position.top=op.top-oy;}
+else if(/^(sw)$/.test(a)){self.size.width=os.width+ox;self.size.height=os.height+oy;self.position.left=op.left-ox;}
+else{self.size.width=os.width+ox;self.size.height=os.height+oy;self.position.top=op.top-oy;self.position.left=op.left-ox;}}});})(jQuery);
\ No newline at end of file

Modified: trunk/tools/jquery.js
==============================================================================
--- trunk/tools/jquery.js	(original)
+++ trunk/tools/jquery.js	Mon Jan  5 20:02:44 2009
@@ -1,2028 +1,11 @@
 /*
- * jQuery 1.2.3 - New Wave Javascript
+ * jQuery 1.2.6 - New Wave Javascript
  *
  * Copyright (c) 2008 John Resig (jquery.com)
  * Dual licensed under the MIT (MIT-LICENSE.txt)
  * and GPL (GPL-LICENSE.txt) licenses.
  *
- * $Date: 2008-02-06 00:21:25 -0500 (Wed, 06 Feb 2008) $
- * $Rev: 4663 $
+ * $Date: 2008-05-24 14:22:17 -0400 (Sat, 24 May 2008) $
+ * $Rev: 5685 $
  */
-(function() {
-    if (window.jQuery) var _jQuery = window.jQuery;
-    var jQuery = window.jQuery = function(selector, context) {
-        return new jQuery.prototype.init(selector, context);
-    };
-    if (window.$) var _$ = window.$;
-    window.$ = jQuery;
-    var quickExpr = /^[^<]*(<(.|\s)+>)[^>]*$|^#(\w+)$/;
-    var isSimple = /^.[^:#\[\.]*$/;
-    jQuery.fn = jQuery.prototype = {
-        init: function(selector, context) {
-            selector = selector || document;
-            if (selector.nodeType) {
-                this[0] = selector;
-                this.length = 1;
-                return this;
-            } else if (typeof selector == "string") {
-                var match = quickExpr.exec(selector);
-                if (match && (match[1] || !context)) {
-                    if (match[1]) selector = jQuery.clean([match[1]], context);
-                    else {
-                        var elem = document.getElementById(match[3]);
-                        if (elem) if (elem.id != match[3]) return jQuery().find(selector);
-                        else {
-                            this[0] = elem;
-                            this.length = 1;
-                            return this;
-                        } else selector = [];
-                    }
-                } else return new jQuery(context).find(selector);
-            } else if (jQuery.isFunction(selector)) return new jQuery(document)[jQuery.fn.ready ? "ready": "load"](selector);
-            return this.setArray(selector.constructor == Array && selector || (selector.jquery || selector.length && selector != window && !selector.nodeType && selector[0] != undefined && selector[0].nodeType) && jQuery.makeArray(selector) || [selector]);
-        },
-        jquery: "1.2.3",
-        size: function() {
-            return this.length;
-        },
-        length: 0,
-        get: function(num) {
-            return num == undefined ? jQuery.makeArray(this) : this[num];
-        },
-        pushStack: function(elems) {
-            var ret = jQuery(elems);
-            ret.prevObject = this;
-            return ret;
-        },
-        setArray: function(elems) {
-            this.length = 0;
-            Array.prototype.push.apply(this, elems);
-            return this;
-        },
-        each: function(callback, args) {
-            return jQuery.each(this, callback, args);
-        },
-        index: function(elem) {
-            var ret = -1;
-            this.each(function(i) {
-                if (this == elem) ret = i;
-            });
-            return ret;
-        },
-        attr: function(name, value, type) {
-            var options = name;
-            if (name.constructor == String) if (value == undefined) return this.length && jQuery[type || "attr"](this[0], name) || undefined;
-            else {
-                options = {};
-                options[name] = value;
-            }
-            return this.each(function(i) {
-                for (name in options) jQuery.attr(type ? this.style: this, name, jQuery.prop(this, options[name], type, i, name));
-            });
-        },
-        css: function(key, value) {
-            if ((key == 'width' || key == 'height') && parseFloat(value) < 0) value = undefined;
-            return this.attr(key, value, "curCSS");
-        },
-        text: function(text) {
-            if (typeof text != "object" && text != null) return this.empty().append((this[0] && this[0].ownerDocument || document).createTextNode(text));
-            var ret = "";
-            jQuery.each(text || this,
-            function() {
-                jQuery.each(this.childNodes,
-                function() {
-                    if (this.nodeType != 8) ret += this.nodeType != 1 ? this.nodeValue: jQuery.fn.text([this]);
-                });
-            });
-            return ret;
-        },
-        wrapAll: function(html) {
-            if (this[0]) jQuery(html, this[0].ownerDocument).clone().insertBefore(this[0]).map(function() {
-                var elem = this;
-                while (elem.firstChild) elem = elem.firstChild;
-                return elem;
-            }).append(this);
-            return this;
-        },
-        wrapInner: function(html) {
-            return this.each(function() {
-                jQuery(this).contents().wrapAll(html);
-            });
-        },
-        wrap: function(html) {
-            return this.each(function() {
-                jQuery(this).wrapAll(html);
-            });
-        },
-        append: function() {
-            return this.domManip(arguments, true, false,
-            function(elem) {
-                if (this.nodeType == 1) this.appendChild(elem);
-            });
-        },
-        prepend: function() {
-            return this.domManip(arguments, true, true,
-            function(elem) {
-                if (this.nodeType == 1) this.insertBefore(elem, this.firstChild);
-            });
-        },
-        before: function() {
-            return this.domManip(arguments, false, false,
-            function(elem) {
-                this.parentNode.insertBefore(elem, this);
-            });
-        },
-        after: function() {
-            return this.domManip(arguments, false, true,
-            function(elem) {
-                this.parentNode.insertBefore(elem, this.nextSibling);
-            });
-        },
-        end: function() {
-            return this.prevObject || jQuery([]);
-        },
-        find: function(selector) {
-            var elems = jQuery.map(this,
-            function(elem) {
-                return jQuery.find(selector, elem);
-            });
-            return this.pushStack(/[^+>] [^+>]/.test(selector) || selector.indexOf("..") > -1 ? jQuery.unique(elems) : elems);
-        },
-        clone: function(events) {
-            var ret = this.map(function() {
-                if (jQuery.browser.msie && !jQuery.isXMLDoc(this)) {
-                    var clone = this.cloneNode(true),
-                    container = document.createElement("div");
-                    container.appendChild(clone);
-                    return jQuery.clean([container.innerHTML])[0];
-                } else return this.cloneNode(true);
-            });
-            var clone = ret.find("*").andSelf().each(function() {
-                if (this[expando] != undefined) this[expando] = null;
-            });
-            if (events === true) this.find("*").andSelf().each(function(i) {
-                if (this.nodeType == 3) return;
-                var events = jQuery.data(this, "events");
-                for (var type in events) for (var handler in events[type]) jQuery.event.add(clone[i], type, events[type][handler], events[type][handler].data);
-            });
-            return ret;
-        },
-        filter: function(selector) {
-            return this.pushStack(jQuery.isFunction(selector) && jQuery.grep(this,
-            function(elem, i) {
-                return selector.call(elem, i);
-            }) || jQuery.multiFilter(selector, this));
-        },
-        not: function(selector) {
-            if (selector.constructor == String) if (isSimple.test(selector)) return this.pushStack(jQuery.multiFilter(selector, this, true));
-            else selector = jQuery.multiFilter(selector, this);
-            var isArrayLike = selector.length && selector[selector.length - 1] !== undefined && !selector.nodeType;
-            return this.filter(function() {
-                return isArrayLike ? jQuery.inArray(this, selector) < 0 : this != selector;
-            });
-        },
-        add: function(selector) {
-            return ! selector ? this: this.pushStack(jQuery.merge(this.get(), selector.constructor == String ? jQuery(selector).get() : selector.length != undefined && (!selector.nodeName || jQuery.nodeName(selector, "form")) ? selector: [selector]));
-        },
-        is: function(selector) {
-            return selector ? jQuery.multiFilter(selector, this).length > 0 : false;
-        },
-        hasClass: function(selector) {
-            return this.is("." + selector);
-        },
-        val: function(value) {
-            if (value == undefined) {
-                if (this.length) {
-                    var elem = this[0];
-                    if (jQuery.nodeName(elem, "select")) {
-                        var index = elem.selectedIndex,
-                        values = [],
-                        options = elem.options,
-                        one = elem.type == "select-one";
-                        if (index < 0) return null;
-                        for (var i = one ? index: 0, max = one ? index + 1 : options.length; i < max; i++) {
-                            var option = options[i];
-                            if (option.selected) {
-                                value = jQuery.browser.msie && !option.attributes.value.specified ? option.text: option.value;
-                                if (one) return value;
-                                values.push(value);
-                            }
-                        }
-                        return values;
-                    } else return (this[0].value || "").replace(/\r/g, "");
-                }
-                return undefined;
-            }
-            return this.each(function() {
-                if (this.nodeType != 1) return;
-                if (value.constructor == Array && /radio|checkbox/.test(this.type)) this.checked = (jQuery.inArray(this.value, value) >= 0 || jQuery.inArray(this.name, value) >= 0);
-                else if (jQuery.nodeName(this, "select")) {
-                    var values = value.constructor == Array ? value: [value];
-                    jQuery("option", this).each(function() {
-                        this.selected = (jQuery.inArray(this.value, values) >= 0 || jQuery.inArray(this.text, values) >= 0);
-                    });
-                    if (!values.length) this.selectedIndex = -1;
-                } else this.value = value;
-            });
-        },
-        html: function(value) {
-            return value == undefined ? (this.length ? this[0].innerHTML: null) : this.empty().append(value);
-        },
-        replaceWith: function(value) {
-            return this.after(value).remove();
-        },
-        eq: function(i) {
-            return this.slice(i, i + 1);
-        },
-        slice: function() {
-            return this.pushStack(Array.prototype.slice.apply(this, arguments));
-        },
-        map: function(callback) {
-            return this.pushStack(jQuery.map(this,
-            function(elem, i) {
-                return callback.call(elem, i, elem);
-            }));
-        },
-        andSelf: function() {
-            return this.add(this.prevObject);
-        },
-        data: function(key, value) {
-            var parts = key.split(".");
-            parts[1] = parts[1] ? "." + parts[1] : "";
-            if (value == null) {
-                var data = this.triggerHandler("getData" + parts[1] + "!", [parts[0]]);
-                if (data == undefined && this.length) data = jQuery.data(this[0], key);
-                return data == null && parts[1] ? this.data(parts[0]) : data;
-            } else return this.trigger("setData" + parts[1] + "!", [parts[0], value]).each(function() {
-                jQuery.data(this, key, value);
-            });
-        },
-        removeData: function(key) {
-            return this.each(function() {
-                jQuery.removeData(this, key);
-            });
-        },
-        domManip: function(args, table, reverse, callback) {
-            var clone = this.length > 1,
-            elems;
-            return this.each(function() {
-                if (!elems) {
-                    elems = jQuery.clean(args, this.ownerDocument);
-                    if (reverse) elems.reverse();
-                }
-                var obj = this;
-                if (table && jQuery.nodeName(this, "table") && jQuery.nodeName(elems[0], "tr")) obj = this.getElementsByTagName("tbody")[0] || this.appendChild(this.ownerDocument.createElement("tbody"));
-                var scripts = jQuery([]);
-                jQuery.each(elems,
-                function() {
-                    var elem = clone ? jQuery(this).clone(true)[0] : this;
-                    if (jQuery.nodeName(elem, "script")) {
-                        scripts = scripts.add(elem);
-                    } else {
-                        if (elem.nodeType == 1) scripts = scripts.add(jQuery("script", elem).remove());
-                        callback.call(obj, elem);
-                    }
-                });
-                scripts.each(evalScript);
-            });
-        }
-    };
-    jQuery.prototype.init.prototype = jQuery.prototype;
-    function evalScript(i, elem) {
-        if (elem.src) jQuery.ajax({
-            url: elem.src,
-            async: false,
-            dataType: "script"
-        });
-        else jQuery.globalEval(elem.text || elem.textContent || elem.innerHTML || "");
-        if (elem.parentNode) elem.parentNode.removeChild(elem);
-    }
-    jQuery.extend = jQuery.fn.extend = function() {
-        var target = arguments[0] || {},
-        i = 1,
-        length = arguments.length,
-        deep = false,
-        options;
-        if (target.constructor == Boolean) {
-            deep = target;
-            target = arguments[1] || {};
-            i = 2;
-        }
-        if (typeof target != "object" && typeof target != "function") target = {};
-        if (length == 1) {
-            target = this;
-            i = 0;
-        }
-        for (; i < length; i++) if ((options = arguments[i]) != null) for (var name in options) {
-            if (target === options[name]) continue;
-            if (deep && options[name] && typeof options[name] == "object" && target[name] && !options[name].nodeType) target[name] = jQuery.extend(target[name], options[name]);
-            else if (options[name] != undefined) target[name] = options[name];
-        }
-        return target;
-    };
-    var expando = "jQuery" + (new Date()).getTime(),
-    uuid = 0,
-    windowData = {};
-    var exclude = /z-?index|font-?weight|opacity|zoom|line-?height/i;
-    jQuery.extend({
-        noConflict: function(deep) {
-            window.$ = _$;
-            if (deep) window.jQuery = _jQuery;
-            return jQuery;
-        },
-        isFunction: function(fn) {
-            return !! fn && typeof fn != "string" && !fn.nodeName && fn.constructor != Array && /function/i.test(fn + "");
-        },
-        isXMLDoc: function(elem) {
-            return elem.documentElement && !elem.body || elem.tagName && elem.ownerDocument && !elem.ownerDocument.body;
-        },
-        globalEval: function(data) {
-            data = jQuery.trim(data);
-            if (data) {
-                var head = document.getElementsByTagName("head")[0] || document.documentElement,
-                script = document.createElement("script");
-                script.type = "text/javascript";
-                if (jQuery.browser.msie) script.text = data;
-                else script.appendChild(document.createTextNode(data));
-                head.appendChild(script);
-                head.removeChild(script);
-            }
-        },
-        nodeName: function(elem, name) {
-            return elem.nodeName && elem.nodeName.toUpperCase() == name.toUpperCase();
-        },
-        cache: {},
-        data: function(elem, name, data) {
-            elem = elem == window ? windowData: elem;
-            var id = elem[expando];
-            if (!id) id = elem[expando] = ++uuid;
-            if (name && !jQuery.cache[id]) jQuery.cache[id] = {};
-            if (data != undefined) jQuery.cache[id][name] = data;
-            return name ? jQuery.cache[id][name] : id;
-        },
-        removeData: function(elem, name) {
-            elem = elem == window ? windowData: elem;
-            var id = elem[expando];
-            if (name) {
-                if (jQuery.cache[id]) {
-                    delete jQuery.cache[id][name];
-                    name = "";
-                    for (name in jQuery.cache[id]) break;
-                    if (!name) jQuery.removeData(elem);
-                }
-            } else {
-                try {
-                    delete elem[expando];
-                } catch(e) {
-                    if (elem.removeAttribute) elem.removeAttribute(expando);
-                }
-                delete jQuery.cache[id];
-            }
-        },
-        each: function(object, callback, args) {
-            if (args) {
-                if (object.length == undefined) {
-                    for (var name in object) if (callback.apply(object[name], args) === false) break;
-                } else for (var i = 0,
-                length = object.length; i < length; i++) if (callback.apply(object[i], args) === false) break;
-            } else {
-                if (object.length == undefined) {
-                    for (var name in object) if (callback.call(object[name], name, object[name]) === false) break;
-                } else for (var i = 0,
-                length = object.length,
-                value = object[0]; i < length && callback.call(value, i, value) !== false; value = object[++i]) {}
-            }
-            return object;
-        },
-        prop: function(elem, value, type, i, name) {
-            if (jQuery.isFunction(value)) value = value.call(elem, i);
-            return value && value.constructor == Number && type == "curCSS" && !exclude.test(name) ? value + "px": value;
-        },
-        className: {
-            add: function(elem, classNames) {
-                jQuery.each((classNames || "").split(/\s+/),
-                function(i, className) {
-                    if (elem.nodeType == 1 && !jQuery.className.has(elem.className, className)) elem.className += (elem.className ? " ": "") + className;
-                });
-            },
-            remove: function(elem, classNames) {
-                if (elem.nodeType == 1) elem.className = classNames != undefined ? jQuery.grep(elem.className.split(/\s+/),
-                function(className) {
-                    return ! jQuery.className.has(classNames, className);
-                }).join(" ") : "";
-            },
-            has: function(elem, className) {
-                return jQuery.inArray(className, (elem.className || elem).toString().split(/\s+/)) > -1;
-            }
-        },
-        swap: function(elem, options, callback) {
-            var old = {};
-            for (var name in options) {
-                old[name] = elem.style[name];
-                elem.style[name] = options[name];
-            }
-            callback.call(elem);
-            for (var name in options) elem.style[name] = old[name];
-        },
-        css: function(elem, name, force) {
-            if (name == "width" || name == "height") {
-                var val, props = {
-                    position: "absolute",
-                    visibility: "hidden",
-                    display: "block"
-                },
-                which = name == "width" ? ["Left", "Right"] : ["Top", "Bottom"];
-                function getWH() {
-                    val = name == "width" ? elem.offsetWidth: elem.offsetHeight;
-                    var padding = 0,
-                    border = 0;
-                    jQuery.each(which,
-                    function() {
-                        padding += parseFloat(jQuery.curCSS(elem, "padding" + this, true)) || 0;
-                        border += parseFloat(jQuery.curCSS(elem, "border" + this + "Width", true)) || 0;
-                    });
-                    val -= Math.round(padding + border);
-                }
-                if (jQuery(elem).is(":visible")) getWH();
-                else jQuery.swap(elem, props, getWH);
-                return Math.max(0, val);
-            }
-            return jQuery.curCSS(elem, name, force);
-        },
-        curCSS: function(elem, name, force) {
-            var ret;
-            function color(elem) {
-                if (!jQuery.browser.safari) return false;
-                var ret = document.defaultView.getComputedStyle(elem, null);
-                return ! ret || ret.getPropertyValue("color") == "";
-            }
-            if (name == "opacity" && jQuery.browser.msie) {
-                ret = jQuery.attr(elem.style, "opacity");
-                return ret == "" ? "1": ret;
-            }
-            if (jQuery.browser.opera && name == "display") {
-                var save = elem.style.outline;
-                elem.style.outline = "0 solid black";
-                elem.style.outline = save;
-            }
-            if (name.match(/float/i)) name = styleFloat;
-            if (!force && elem.style && elem.style[name]) ret = elem.style[name];
-            else if (document.defaultView && document.defaultView.getComputedStyle) {
-                if (name.match(/float/i)) name = "float";
-                name = name.replace(/([A-Z])/g, "-$1").toLowerCase();
-                var getComputedStyle = document.defaultView.getComputedStyle(elem, null);
-                if (getComputedStyle && !color(elem)) ret = getComputedStyle.getPropertyValue(name);
-                else {
-                    var swap = [],
-                    stack = [];
-                    for (var a = elem; a && color(a); a = a.parentNode) stack.unshift(a);
-                    for (var i = 0; i < stack.length; i++) if (color(stack[i])) {
-                        swap[i] = stack[i].style.display;
-                        stack[i].style.display = "block";
-                    }
-                    ret = name == "display" && swap[stack.length - 1] != null ? "none": (getComputedStyle && getComputedStyle.getPropertyValue(name)) || "";
-                    for (var i = 0; i < swap.length; i++) if (swap[i] != null) stack[i].style.display = swap[i];
-                }
-                if (name == "opacity" && ret == "") ret = "1";
-            } else if (elem.currentStyle) {
-                var camelCase = name.replace(/\-(\w)/g,
-                function(all, letter) {
-                    return letter.toUpperCase();
-                });
-                ret = elem.currentStyle[name] || elem.currentStyle[camelCase];
-                if (!/^\d+(px)?$/i.test(ret) && /^\d/.test(ret)) {
-                    var style = elem.style.left,
-                    runtimeStyle = elem.runtimeStyle.left;
-                    elem.runtimeStyle.left = elem.currentStyle.left;
-                    elem.style.left = ret || 0;
-                    ret = elem.style.pixelLeft + "px";
-                    elem.style.left = style;
-                    elem.runtimeStyle.left = runtimeStyle;
-                }
-            }
-            return ret;
-        },
-        clean: function(elems, context) {
-            var ret = [];
-            context = context || document;
-            if (typeof context.createElement == 'undefined') context = context.ownerDocument || context[0] && context[0].ownerDocument || document;
-            jQuery.each(elems,
-            function(i, elem) {
-                if (!elem) return;
-                if (elem.constructor == Number) elem = elem.toString();
-                if (typeof elem == "string") {
-                    elem = elem.replace(/(<(\w+)[^>]*?)\/>/g,
-                    function(all, front, tag) {
-                        return tag.match(/^(abbr|br|col|img|input|link|meta|param|hr|area|embed)$/i) ? all: front + "></" + tag + ">";
-                    });
-                    var tags = jQuery.trim(elem).toLowerCase(),
-                    div = context.createElement("div");
-                    var wrap = !tags.indexOf("<opt") && [1, "<select multiple='multiple'>", "</select>"] || !tags.indexOf("<leg") && [1, "<fieldset>", "</fieldset>"] || tags.match(/^<(thead|tbody|tfoot|colg|cap)/) && [1, "<table>", "</table>"] || !tags.indexOf("<tr") && [2, "<table><tbody>", "</tbody></table>"] || (!tags.indexOf("<td") || !tags.indexOf("<th")) && [3, "<table><tbody><tr>", "</tr></tbody></table>"] || !tags.indexOf("<col") && [2, "<table><tbody></tbody><colgroup>", "</colgroup></table>"] || jQuery.browser.msie && [1, "div<div>", "</div>"] || [0, "", ""];
-                    div.innerHTML = wrap[1] + elem + wrap[2];
-                    while (wrap[0]--) div = div.lastChild;
-                    if (jQuery.browser.msie) {
-                        var tbody = !tags.indexOf("<table") && tags.indexOf("<tbody") < 0 ? div.firstChild && div.firstChild.childNodes: wrap[1] == "<table>" && tags.indexOf("<tbody") < 0 ? div.childNodes: [];
-                        for (var j = tbody.length - 1; j >= 0; --j) if (jQuery.nodeName(tbody[j], "tbody") && !tbody[j].childNodes.length) tbody[j].parentNode.removeChild(tbody[j]);
-                        if (/^\s/.test(elem)) div.insertBefore(context.createTextNode(elem.match(/^\s*/)[0]), div.firstChild);
-                    }
-                    elem = jQuery.makeArray(div.childNodes);
-                }
-                if (elem.length === 0 && (!jQuery.nodeName(elem, "form") && !jQuery.nodeName(elem, "select"))) return;
-                if (elem[0] == undefined || jQuery.nodeName(elem, "form") || elem.options) ret.push(elem);
-                else ret = jQuery.merge(ret, elem);
-            });
-            return ret;
-        },
-        attr: function(elem, name, value) {
-            if (!elem || elem.nodeType == 3 || elem.nodeType == 8) return undefined;
-            var fix = jQuery.isXMLDoc(elem) ? {}: jQuery.props;
-            if (name == "selected" && jQuery.browser.safari) elem.parentNode.selectedIndex;
-            if (fix[name]) {
-                if (value != undefined) elem[fix[name]] = value;
-                return elem[fix[name]];
-            } else if (jQuery.browser.msie && name == "style") return jQuery.attr(elem.style, "cssText", value);
-            else if (value == undefined && jQuery.browser.msie && jQuery.nodeName(elem, "form") && (name == "action" || name == "method")) return elem.getAttributeNode(name).nodeValue;
-            else if (elem.tagName) {
-                if (value != undefined) {
-                    if (name == "type" && jQuery.nodeName(elem, "input") && elem.parentNode) throw "type property can't be changed";
-                    elem.setAttribute(name, "" + value);
-                }
-                if (jQuery.browser.msie && /href|src/.test(name) && !jQuery.isXMLDoc(elem)) return elem.getAttribute(name, 2);
-                return elem.getAttribute(name);
-            } else {
-                if (name == "opacity" && jQuery.browser.msie) {
-                    if (value != undefined) {
-                        elem.zoom = 1;
-                        elem.filter = (elem.filter || "").replace(/alpha\([^)]*\)/, "") + (parseFloat(value).toString() == "NaN" ? "": "alpha(opacity=" + value * 100 + ")");
-                    }
-                    return elem.filter && elem.filter.indexOf("opacity=") >= 0 ? (parseFloat(elem.filter.match(/opacity=([^)]*)/)[1]) / 100).toString() : "";
-                }
-                name = name.replace(/-([a-z])/ig,
-                function(all, letter) {
-                    return letter.toUpperCase();
-                });
-                if (value != undefined) elem[name] = value;
-                return elem[name];
-            }
-        },
-        trim: function(text) {
-            return (text || "").replace(/^\s+|\s+$/g, "");
-        },
-        makeArray: function(array) {
-            var ret = [];
-            if (typeof array != "array") for (var i = 0,
-            length = array.length; i < length; i++) ret.push(array[i]);
-            else ret = array.slice(0);
-            return ret;
-        },
-        inArray: function(elem, array) {
-            for (var i = 0,
-            length = array.length; i < length; i++) if (array[i] == elem) return i;
-            return - 1;
-        },
-        merge: function(first, second) {
-            if (jQuery.browser.msie) {
-                for (var i = 0; second[i]; i++) if (second[i].nodeType != 8) first.push(second[i]);
-            } else for (var i = 0; second[i]; i++) first.push(second[i]);
-            return first;
-        },
-        unique: function(array) {
-            var ret = [],
-            done = {};
-            try {
-                for (var i = 0,
-                length = array.length; i < length; i++) {
-                    var id = jQuery.data(array[i]);
-                    if (!done[id]) {
-                        done[id] = true;
-                        ret.push(array[i]);
-                    }
-                }
-            } catch(e) {
-                ret = array;
-            }
-            return ret;
-        },
-        grep: function(elems, callback, inv) {
-            var ret = [];
-            for (var i = 0,
-            length = elems.length; i < length; i++) if (!inv && callback(elems[i], i) || inv && !callback(elems[i], i)) ret.push(elems[i]);
-            return ret;
-        },
-        map: function(elems, callback) {
-            var ret = [];
-            for (var i = 0,
-            length = elems.length; i < length; i++) {
-                var value = callback(elems[i], i);
-                if (value !== null && value != undefined) {
-                    if (value.constructor != Array) value = [value];
-                    ret = ret.concat(value);
-                }
-            }
-            return ret;
-        }
-    });
-    var userAgent = navigator.userAgent.toLowerCase();
-    jQuery.browser = {
-        version: (userAgent.match(/.+(?:rv|it|ra|ie)[\/: ]([\d.]+)/) || [])[1],
-        safari: /webkit/.test(userAgent),
-        opera: /opera/.test(userAgent),
-        msie: /msie/.test(userAgent) && !/opera/.test(userAgent),
-        mozilla: /mozilla/.test(userAgent) && !/(compatible|webkit)/.test(userAgent)
-    };
-    var styleFloat = jQuery.browser.msie ? "styleFloat": "cssFloat";
-    jQuery.extend({
-        boxModel: !jQuery.browser.msie || document.compatMode == "CSS1Compat",
-        props: {
-            "for": "htmlFor",
-            "class": "className",
-            "float": styleFloat,
-            cssFloat: styleFloat,
-            styleFloat: styleFloat,
-            innerHTML: "innerHTML",
-            className: "className",
-            value: "value",
-            disabled: "disabled",
-            checked: "checked",
-            readonly: "readOnly",
-            selected: "selected",
-            maxlength: "maxLength",
-            selectedIndex: "selectedIndex",
-            defaultValue: "defaultValue",
-            tagName: "tagName",
-            nodeName: "nodeName"
-        }
-    });
-    jQuery.each({
-        parent: function(elem) {
-            return elem.parentNode;
-        },
-        parents: function(elem) {
-            return jQuery.dir(elem, "parentNode");
-        },
-        next: function(elem) {
-            return jQuery.nth(elem, 2, "nextSibling");
-        },
-        prev: function(elem) {
-            return jQuery.nth(elem, 2, "previousSibling");
-        },
-        nextAll: function(elem) {
-            return jQuery.dir(elem, "nextSibling");
-        },
-        prevAll: function(elem) {
-            return jQuery.dir(elem, "previousSibling");
-        },
-        siblings: function(elem) {
-            return jQuery.sibling(elem.parentNode.firstChild, elem);
-        },
-        children: function(elem) {
-            return jQuery.sibling(elem.firstChild);
-        },
-        contents: function(elem) {
-            return jQuery.nodeName(elem, "iframe") ? elem.contentDocument || elem.contentWindow.document: jQuery.makeArray(elem.childNodes);
-        }
-    },
-    function(name, fn) {
-        jQuery.fn[name] = function(selector) {
-            var ret = jQuery.map(this, fn);
-            if (selector && typeof selector == "string") ret = jQuery.multiFilter(selector, ret);
-            return this.pushStack(jQuery.unique(ret));
-        };
-    });
-    jQuery.each({
-        appendTo: "append",
-        prependTo: "prepend",
-        insertBefore: "before",
-        insertAfter: "after",
-        replaceAll: "replaceWith"
-    },
-    function(name, original) {
-        jQuery.fn[name] = function() {
-            var args = arguments;
-            return this.each(function() {
-                for (var i = 0,
-                length = args.length; i < length; i++) jQuery(args[i])[original](this);
-            });
-        };
-    });
-    jQuery.each({
-        removeAttr: function(name) {
-            jQuery.attr(this, name, "");
-            if (this.nodeType == 1) this.removeAttribute(name);
-        },
-        addClass: function(classNames) {
-            jQuery.className.add(this, classNames);
-        },
-        removeClass: function(classNames) {
-            jQuery.className.remove(this, classNames);
-        },
-        toggleClass: function(classNames) {
-            jQuery.className[jQuery.className.has(this, classNames) ? "remove": "add"](this, classNames);
-        },
-        remove: function(selector) {
-            if (!selector || jQuery.filter(selector, [this]).r.length) {
-                jQuery("*", this).add(this).each(function() {
-                    jQuery.event.remove(this);
-                    jQuery.removeData(this);
-                });
-                if (this.parentNode) this.parentNode.removeChild(this);
-            }
-        },
-        empty: function() {
-            jQuery(">*", this).remove();
-            while (this.firstChild) this.removeChild(this.firstChild);
-        }
-    },
-    function(name, fn) {
-        jQuery.fn[name] = function() {
-            return this.each(fn, arguments);
-        };
-    });
-    jQuery.each(["Height", "Width"],
-    function(i, name) {
-        var type = name.toLowerCase();
-        jQuery.fn[type] = function(size) {
-            return this[0] == window ? jQuery.browser.opera && document.body["client" + name] || jQuery.browser.safari && window["inner" + name] || document.compatMode == "CSS1Compat" && document.documentElement["client" + name] || document.body["client" + name] : this[0] == document ? Math.max(Math.max(document.body["scroll" + name], document.documentElement["scroll" + name]), Math.max(document.body["offset" + name], document.documentElement["offset" + name])) : size == undefined ? (this.length ? jQuery.css(this[0], type) : null) : this.css(type, size.constructor == String ? size: size + "px");
-        };
-    });
-    var chars = jQuery.browser.safari && parseInt(jQuery.browser.version) < 417 ? "(?:[\\w*_-]|\\\\.)": "(?:[\\w\u0128-\uFFFF*_-]|\\\\.)",
-    quickChild = new RegExp("^>\\s*(" + chars + "+)"),
-    quickID = new RegExp("^(" + chars + "+)(#)(" + chars + "+)"),
-    quickClass = new RegExp("^([#.]?)(" + chars + "*)");
-    jQuery.extend({
-        expr: {
-            "": function(a, i, m) {
-                return m[2] == "*" || jQuery.nodeName(a, m[2]);
-            },
-            "#": function(a, i, m) {
-                return a.getAttribute("id") == m[2];
-            },
-            ":": {
-                lt: function(a, i, m) {
-                    return i < m[3] - 0;
-                },
-                gt: function(a, i, m) {
-                    return i > m[3] - 0;
-                },
-                nth: function(a, i, m) {
-                    return m[3] - 0 == i;
-                },
-                eq: function(a, i, m) {
-                    return m[3] - 0 == i;
-                },
-                first: function(a, i) {
-                    return i == 0;
-                },
-                last: function(a, i, m, r) {
-                    return i == r.length - 1;
-                },
-                even: function(a, i) {
-                    return i % 2 == 0;
-                },
-                odd: function(a, i) {
-                    return i % 2;
-                },
-                "first-child": function(a) {
-                    return a.parentNode.getElementsByTagName("*")[0] == a;
-                },
-                "last-child": function(a) {
-                    return jQuery.nth(a.parentNode.lastChild, 1, "previousSibling") == a;
-                },
-                "only-child": function(a) {
-                    return ! jQuery.nth(a.parentNode.lastChild, 2, "previousSibling");
-                },
-                parent: function(a) {
-                    return a.firstChild;
-                },
-                empty: function(a) {
-                    return ! a.firstChild;
-                },
-                contains: function(a, i, m) {
-                    return (a.textContent || a.innerText || jQuery(a).text() || "").indexOf(m[3]) >= 0;
-                },
-                visible: function(a) {
-                    return "hidden" != a.type && jQuery.css(a, "display") != "none" && jQuery.css(a, "visibility") != "hidden";
-                },
-                hidden: function(a) {
-                    return "hidden" == a.type || jQuery.css(a, "display") == "none" || jQuery.css(a, "visibility") == "hidden";
-                },
-                enabled: function(a) {
-                    return ! a.disabled;
-                },
-                disabled: function(a) {
-                    return a.disabled;
-                },
-                checked: function(a) {
-                    return a.checked;
-                },
-                selected: function(a) {
-                    return a.selected || jQuery.attr(a, "selected");
-                },
-                text: function(a) {
-                    return "text" == a.type;
-                },
-                radio: function(a) {
-                    return "radio" == a.type;
-                },
-                checkbox: function(a) {
-                    return "checkbox" == a.type;
-                },
-                file: function(a) {
-                    return "file" == a.type;
-                },
-                password: function(a) {
-                    return "password" == a.type;
-                },
-                submit: function(a) {
-                    return "submit" == a.type;
-                },
-                image: function(a) {
-                    return "image" == a.type;
-                },
-                reset: function(a) {
-                    return "reset" == a.type;
-                },
-                button: function(a) {
-                    return "button" == a.type || jQuery.nodeName(a, "button");
-                },
-                input: function(a) {
-                    return /input|select|textarea|button/i.test(a.nodeName);
-                },
-                has: function(a, i, m) {
-                    return jQuery.find(m[3], a).length;
-                },
-                header: function(a) {
-                    return /h\d/i.test(a.nodeName);
-                },
-                animated: function(a) {
-                    return jQuery.grep(jQuery.timers,
-                    function(fn) {
-                        return a == fn.elem;
-                    }).length;
-                }
-            }
-        },
-        parse: [/^(\[) * ?([\w-]+) *([!*$^~=]*) *('?"?)(.*?)\4 *\]/, /^(:)([\w-]+)\("?'?(.*?(\(.*?\))?[^(]*?)"?'?\)/, new RegExp("^([:.#]*)(" + chars + "+)")],
-        multiFilter: function(expr, elems, not) {
-            var old, cur = [];
-            while (expr && expr != old) {
-                old = expr;
-                var f = jQuery.filter(expr, elems, not);
-                expr = f.t.replace(/^\s*,\s*/, "");
-                cur = not ? elems = f.r: jQuery.merge(cur, f.r);
-            }
-            return cur;
-        },
-        find: function(t, context) {
-            if (typeof t != "string") return [t];
-            if (context && context.nodeType != 1 && context.nodeType != 9) return [];
-            context = context || document;
-            var ret = [context],
-            done = [],
-            last,
-            nodeName;
-            while (t && last != t) {
-                var r = [];
-                last = t;
-                t = jQuery.trim(t);
-                var foundToken = false;
-                var re = quickChild;
-                var m = re.exec(t);
-                if (m) {
-                    nodeName = m[1].toUpperCase();
-                    for (var i = 0; ret[i]; i++) for (var c = ret[i].firstChild; c; c = c.nextSibling) if (c.nodeType == 1 && (nodeName == "*" || c.nodeName.toUpperCase() == nodeName)) r.push(c);
-                    ret = r;
-                    t = t.replace(re, "");
-                    if (t.indexOf(" ") == 0) continue;
-                    foundToken = true;
-                } else {
-                    re = /^([>+~])\s*(\w*)/i;
-                    if ((m = re.exec(t)) != null) {
-                        r = [];
-                        var merge = {};
-                        nodeName = m[2].toUpperCase();
-                        m = m[1];
-                        for (var j = 0,
-                        rl = ret.length; j < rl; j++) {
-                            var n = m == "~" || m == "+" ? ret[j].nextSibling: ret[j].firstChild;
-                            for (; n; n = n.nextSibling) if (n.nodeType == 1) {
-                                var id = jQuery.data(n);
-                                if (m == "~" && merge[id]) break;
-                                if (!nodeName || n.nodeName.toUpperCase() == nodeName) {
-                                    if (m == "~") merge[id] = true;
-                                    r.push(n);
-                                }
-                                if (m == "+") break;
-                            }
-                        }
-                        ret = r;
-                        t = jQuery.trim(t.replace(re, ""));
-                        foundToken = true;
-                    }
-                }
-                if (t && !foundToken) {
-                    if (!t.indexOf(",")) {
-                        if (context == ret[0]) ret.shift();
-                        done = jQuery.merge(done, ret);
-                        r = ret = [context];
-                        t = " " + t.substr(1, t.length);
-                    } else {
-                        var re2 = quickID;
-                        var m = re2.exec(t);
-                        if (m) {
-                            m = [0, m[2], m[3], m[1]];
-                        } else {
-                            re2 = quickClass;
-                            m = re2.exec(t);
-                        }
-                        m[2] = m[2].replace(/\\/g, "");
-                        var elem = ret[ret.length - 1];
-                        if (m[1] == "#" && elem && elem.getElementById && !jQuery.isXMLDoc(elem)) {
-                            var oid = elem.getElementById(m[2]);
-                            if ((jQuery.browser.msie || jQuery.browser.opera) && oid && typeof oid.id == "string" && oid.id != m[2]) oid = jQuery('[ id="' + m[2] + '"]', elem)[0];
-                            ret = r = oid && (!m[3] || jQuery.nodeName(oid, m[3])) ? [oid] : [];
-                        } else {
-                            for (var i = 0; ret[i]; i++) {
-                                var tag = m[1] == "#" && m[3] ? m[3] : m[1] != "" || m[0] == "" ? "*": m[2];
-                                if (tag == "*" && ret[i].nodeName.toLowerCase() == "object") tag = "param";
-                                r = jQuery.merge(r, ret[i].getElementsByTagName(tag));
-                            }
-                            if (m[1] == ".") r = jQuery.classFilter(r, m[2]);
-                            if (m[1] == "#") {
-                                var tmp = [];
-                                for (var i = 0; r[i]; i++) if (r[i].getAttribute("id") == m[2]) {
-                                    tmp = [r[i]];
-                                    break;
-                                }
-                                r = tmp;
-                            }
-                            ret = r;
-                        }
-                        t = t.replace(re2, "");
-                    }
-                }
-                if (t) {
-                    var val = jQuery.filter(t, r);
-                    ret = r = val.r;
-                    t = jQuery.trim(val.t);
-                }
-            }
-            if (t) ret = [];
-            if (ret && context == ret[0]) ret.shift();
-            done = jQuery.merge(done, ret);
-            return done;
-        },
-        classFilter: function(r, m, not) {
-            m = " " + m + " ";
-            var tmp = [];
-            for (var i = 0; r[i]; i++) {
-                var pass = (" " + r[i].className + " ").indexOf(m) >= 0;
-                if (!not && pass || not && !pass) tmp.push(r[i]);
-            }
-            return tmp;
-        },
-        filter: function(t, r, not) {
-            var last;
-            while (t && t != last) {
-                last = t;
-                var p = jQuery.parse,
-                m;
-                for (var i = 0; p[i]; i++) {
-                    m = p[i].exec(t);
-                    if (m) {
-                        t = t.substring(m[0].length);
-                        m[2] = m[2].replace(/\\/g, "");
-                        break;
-                    }
-                }
-                if (!m) break;
-                if (m[1] == ":" && m[2] == "not") r = isSimple.test(m[3]) ? jQuery.filter(m[3], r, true).r: jQuery(r).not(m[3]);
-                else if (m[1] == ".") r = jQuery.classFilter(r, m[2], not);
-                else if (m[1] == "[") {
-                    var tmp = [],
-                    type = m[3];
-                    for (var i = 0,
-                    rl = r.length; i < rl; i++) {
-                        var a = r[i],
-                        z = a[jQuery.props[m[2]] || m[2]];
-                        if (z == null || /href|src|selected/.test(m[2])) z = jQuery.attr(a, m[2]) || '';
-                        if ((type == "" && !!z || type == "=" && z == m[5] || type == "!=" && z != m[5] || type == "^=" && z && !z.indexOf(m[5]) || type == "$=" && z.substr(z.length - m[5].length) == m[5] || (type == "*=" || type == "~=") && z.indexOf(m[5]) >= 0) ^ not) tmp.push(a);
-                    }
-                    r = tmp;
-                } else if (m[1] == ":" && m[2] == "nth-child") {
-                    var merge = {},
-                    tmp = [],
-                    test = /(-?)(\d*)n((?:\+|-)?\d*)/.exec(m[3] == "even" && "2n" || m[3] == "odd" && "2n+1" || !/\D/.test(m[3]) && "0n+" + m[3] || m[3]),
-                    first = (test[1] + (test[2] || 1)) - 0,
-                    last = test[3] - 0;
-                    for (var i = 0,
-                    rl = r.length; i < rl; i++) {
-                        var node = r[i],
-                        parentNode = node.parentNode,
-                        id = jQuery.data(parentNode);
-                        if (!merge[id]) {
-                            var c = 1;
-                            for (var n = parentNode.firstChild; n; n = n.nextSibling) if (n.nodeType == 1) n.nodeIndex = c++;
-                            merge[id] = true;
-                        }
-                        var add = false;
-                        if (first == 0) {
-                            if (node.nodeIndex == last) add = true;
-                        } else if ((node.nodeIndex - last) % first == 0 && (node.nodeIndex - last) / first >= 0) add = true;
-                        if (add ^ not) tmp.push(node);
-                    }
-                    r = tmp;
-                } else {
-                    var fn = jQuery.expr[m[1]];
-                    if (typeof fn == "object") fn = fn[m[2]];
-                    if (typeof fn == "string") fn = eval("false||function(a,i){return " + fn + ";}");
-                    r = jQuery.grep(r,
-                    function(elem, i) {
-                        return fn(elem, i, m, r);
-                    },
-                    not);
-                }
-            }
-            return {
-                r: r,
-                t: t
-            };
-        },
-        dir: function(elem, dir) {
-            var matched = [];
-            var cur = elem[dir];
-            while (cur && cur != document) {
-                if (cur.nodeType == 1) matched.push(cur);
-                cur = cur[dir];
-            }
-            return matched;
-        },
-        nth: function(cur, result, dir, elem) {
-            result = result || 1;
-            var num = 0;
-            for (; cur; cur = cur[dir]) if (cur.nodeType == 1 && ++num == result) break;
-            return cur;
-        },
-        sibling: function(n, elem) {
-            var r = [];
-            for (; n; n = n.nextSibling) {
-                if (n.nodeType == 1 && (!elem || n != elem)) r.push(n);
-            }
-            return r;
-        }
-    });
-    jQuery.event = {
-        add: function(elem, types, handler, data) {
-            if (elem.nodeType == 3 || elem.nodeType == 8) return;
-            if (jQuery.browser.msie && elem.setInterval != undefined) elem = window;
-            if (!handler.guid) handler.guid = this.guid++;
-            if (data != undefined) {
-                var fn = handler;
-                handler = function() {
-                    return fn.apply(this, arguments);
-                };
-                handler.data = data;
-                handler.guid = fn.guid;
-            }
-            var events = jQuery.data(elem, "events") || jQuery.data(elem, "events", {}),
-            handle = jQuery.data(elem, "handle") || jQuery.data(elem, "handle",
-            function() {
-                var val;
-                if (typeof jQuery == "undefined" || jQuery.event.triggered) return val;
-                val = jQuery.event.handle.apply(arguments.callee.elem, arguments);
-                return val;
-            });
-            handle.elem = elem;
-            jQuery.each(types.split(/\s+/),
-            function(index, type) {
-                var parts = type.split(".");
-                type = parts[0];
-                handler.type = parts[1];
-                var handlers = events[type];
-                if (!handlers) {
-                    handlers = events[type] = {};
-                    if (!jQuery.event.special[type] || jQuery.event.special[type].setup.call(elem) === false) {
-                        if (elem.addEventListener) elem.addEventListener(type, handle, false);
-                        else if (elem.attachEvent) elem.attachEvent("on" + type, handle);
-                    }
-                }
-                handlers[handler.guid] = handler;
-                jQuery.event.global[type] = true;
-            });
-            elem = null;
-        },
-        guid: 1,
-        global: {},
-        remove: function(elem, types, handler) {
-            if (elem.nodeType == 3 || elem.nodeType == 8) return;
-            var events = jQuery.data(elem, "events"),
-            ret,
-            index;
-            if (events) {
-                if (types == undefined || (typeof types == "string" && types.charAt(0) == ".")) for (var type in events) this.remove(elem, type + (types || ""));
-                else {
-                    if (types.type) {
-                        handler = types.handler;
-                        types = types.type;
-                    }
-                    jQuery.each(types.split(/\s+/),
-                    function(index, type) {
-                        var parts = type.split(".");
-                        type = parts[0];
-                        if (events[type]) {
-                            if (handler) delete events[type][handler.guid];
-                            else for (handler in events[type]) if (!parts[1] || events[type][handler].type == parts[1]) delete events[type][handler];
-                            for (ret in events[type]) break;
-                            if (!ret) {
-                                if (!jQuery.event.special[type] || jQuery.event.special[type].teardown.call(elem) === false) {
-                                    if (elem.removeEventListener) elem.removeEventListener(type, jQuery.data(elem, "handle"), false);
-                                    else if (elem.detachEvent) elem.detachEvent("on" + type, jQuery.data(elem, "handle"));
-                                }
-                                ret = null;
-                                delete events[type];
-                            }
-                        }
-                    });
-                }
-                for (ret in events) break;
-                if (!ret) {
-                    var handle = jQuery.data(elem, "handle");
-                    if (handle) handle.elem = null;
-                    jQuery.removeData(elem, "events");
-                    jQuery.removeData(elem, "handle");
-                }
-            }
-        },
-        trigger: function(type, data, elem, donative, extra) {
-            data = jQuery.makeArray(data || []);
-            if (type.indexOf("!") >= 0) {
-                type = type.slice(0, -1);
-                var exclusive = true;
-            }
-            if (!elem) {
-                if (this.global[type]) jQuery("*").add([window, document]).trigger(type, data);
-            } else {
-                if (elem.nodeType == 3 || elem.nodeType == 8) return undefined;
-                var val, ret, fn = jQuery.isFunction(elem[type] || null),
-                event = !data[0] || !data[0].preventDefault;
-                if (event) data.unshift(this.fix({
-                    type: type,
-                    target: elem
-                }));
-                data[0].type = type;
-                if (exclusive) data[0].exclusive = true;
-                if (jQuery.isFunction(jQuery.data(elem, "handle"))) val = jQuery.data(elem, "handle").apply(elem, data);
-                if (!fn && elem["on" + type] && elem["on" + type].apply(elem, data) === false) val = false;
-                if (event) data.shift();
-                if (extra && jQuery.isFunction(extra)) {
-                    ret = extra.apply(elem, val == null ? data: data.concat(val));
-                    if (ret !== undefined) val = ret;
-                }
-                if (fn && donative !== false && val !== false && !(jQuery.nodeName(elem, 'a') && type == "click")) {
-                    this.triggered = true;
-                    try {
-                        elem[type]();
-                    } catch(e) {}
-                }
-                this.triggered = false;
-            }
-            return val;
-        },
-        handle: function(event) {
-            var val;
-            event = jQuery.event.fix(event || window.event || {});
-            var parts = event.type.split(".");
-            event.type = parts[0];
-            var handlers = jQuery.data(this, "events") && jQuery.data(this, "events")[event.type],
-            args = Array.prototype.slice.call(arguments, 1);
-            args.unshift(event);
-            for (var j in handlers) {
-                var handler = handlers[j];
-                args[0].handler = handler;
-                args[0].data = handler.data;
-                if (!parts[1] && !event.exclusive || handler.type == parts[1]) {
-                    var ret = handler.apply(this, args);
-                    if (val !== false) val = ret;
-                    if (ret === false) {
-                        event.preventDefault();
-                        event.stopPropagation();
-                    }
-                }
-            }
-            if (jQuery.browser.msie) event.target = event.preventDefault = event.stopPropagation = event.handler = event.data = null;
-            return val;
-        },
-        fix: function(event) {
-            var originalEvent = event;
-            event = jQuery.extend({},
-            originalEvent);
-            event.preventDefault = function() {
-                if (originalEvent.preventDefault) originalEvent.preventDefault();
-                originalEvent.returnValue = false;
-            };
-            event.stopPropagation = function() {
-                if (originalEvent.stopPropagation) originalEvent.stopPropagation();
-                originalEvent.cancelBubble = true;
-            };
-            if (!event.target) event.target = event.srcElement || document;
-            if (event.target.nodeType == 3) event.target = originalEvent.target.parentNode;
-            if (!event.relatedTarget && event.fromElement) event.relatedTarget = event.fromElement == event.target ? event.toElement: event.fromElement;
-            if (event.pageX == null && event.clientX != null) {
-                var doc = document.documentElement,
-                body = document.body;
-                event.pageX = event.clientX + (doc && doc.scrollLeft || body && body.scrollLeft || 0) - (doc.clientLeft || 0);
-                event.pageY = event.clientY + (doc && doc.scrollTop || body && body.scrollTop || 0) - (doc.clientTop || 0);
-            }
-            if (!event.which && ((event.charCode || event.charCode === 0) ? event.charCode: event.keyCode)) event.which = event.charCode || event.keyCode;
-            if (!event.metaKey && event.ctrlKey) event.metaKey = event.ctrlKey;
-            if (!event.which && event.button) event.which = (event.button & 1 ? 1 : (event.button & 2 ? 3 : (event.button & 4 ? 2 : 0)));
-            return event;
-        },
-        special: {
-            ready: {
-                setup: function() {
-                    bindReady();
-                    return;
-                },
-                teardown: function() {
-                    return;
-                }
-            },
-            mouseenter: {
-                setup: function() {
-                    if (jQuery.browser.msie) return false;
-                    jQuery(this).bind("mouseover", jQuery.event.special.mouseenter.handler);
-                    return true;
-                },
-                teardown: function() {
-                    if (jQuery.browser.msie) return false;
-                    jQuery(this).unbind("mouseover", jQuery.event.special.mouseenter.handler);
-                    return true;
-                },
-                handler: function(event) {
-                    if (withinElement(event, this)) return true;
-                    arguments[0].type = "mouseenter";
-                    return jQuery.event.handle.apply(this, arguments);
-                }
-            },
-            mouseleave: {
-                setup: function() {
-                    if (jQuery.browser.msie) return false;
-                    jQuery(this).bind("mouseout", jQuery.event.special.mouseleave.handler);
-                    return true;
-                },
-                teardown: function() {
-                    if (jQuery.browser.msie) return false;
-                    jQuery(this).unbind("mouseout", jQuery.event.special.mouseleave.handler);
-                    return true;
-                },
-                handler: function(event) {
-                    if (withinElement(event, this)) return true;
-                    arguments[0].type = "mouseleave";
-                    return jQuery.event.handle.apply(this, arguments);
-                }
-            }
-        }
-    };
-    jQuery.fn.extend({
-        bind: function(type, data, fn) {
-            return type == "unload" ? this.one(type, data, fn) : this.each(function() {
-                jQuery.event.add(this, type, fn || data, fn && data);
-            });
-        },
-        one: function(type, data, fn) {
-            return this.each(function() {
-                jQuery.event.add(this, type,
-                function(event) {
-                    jQuery(this).unbind(event);
-                    return (fn || data).apply(this, arguments);
-                },
-                fn && data);
-            });
-        },
-        unbind: function(type, fn) {
-            return this.each(function() {
-                jQuery.event.remove(this, type, fn);
-            });
-        },
-        trigger: function(type, data, fn) {
-            return this.each(function() {
-                jQuery.event.trigger(type, data, this, true, fn);
-            });
-        },
-        triggerHandler: function(type, data, fn) {
-            if (this[0]) return jQuery.event.trigger(type, data, this[0], false, fn);
-            return undefined;
-        },
-        toggle: function() {
-            var args = arguments;
-            return this.click(function(event) {
-                this.lastToggle = 0 == this.lastToggle ? 1 : 0;
-                event.preventDefault();
-                return args[this.lastToggle].apply(this, arguments) || false;
-            });
-        },
-        hover: function(fnOver, fnOut) {
-            return this.bind('mouseenter', fnOver).bind('mouseleave', fnOut);
-        },
-        ready: function(fn) {
-            bindReady();
-            if (jQuery.isReady) fn.call(document, jQuery);
-            else jQuery.readyList.push(function() {
-                return fn.call(this, jQuery);
-            });
-            return this;
-        }
-    });
-    jQuery.extend({
-        isReady: false,
-        readyList: [],
-        ready: function() {
-            if (!jQuery.isReady) {
-                jQuery.isReady = true;
-                if (jQuery.readyList) {
-                    jQuery.each(jQuery.readyList,
-                    function() {
-                        this.apply(document);
-                    });
-                    jQuery.readyList = null;
-                }
-                jQuery(document).triggerHandler("ready");
-            }
-        }
-    });
-    var readyBound = false;
-    function bindReady() {
-        if (readyBound) return;
-        readyBound = true;
-        if (document.addEventListener && !jQuery.browser.opera) document.addEventListener("DOMContentLoaded", jQuery.ready, false);
-        if (jQuery.browser.msie && window == top)(function() {
-            if (jQuery.isReady) return;
-            try {
-                document.documentElement.doScroll("left");
-            } catch(error) {
-                setTimeout(arguments.callee, 0);
-                return;
-            }
-            jQuery.ready();
-        })();
-        if (jQuery.browser.opera) document.addEventListener("DOMContentLoaded",
-        function() {
-            if (jQuery.isReady) return;
-            for (var i = 0; i < document.styleSheets.length; i++) if (document.styleSheets[i].disabled) {
-                setTimeout(arguments.callee, 0);
-                return;
-            }
-            jQuery.ready();
-        },
-        false);
-        if (jQuery.browser.safari) {
-            var numStyles; (function() {
-                if (jQuery.isReady) return;
-                if (document.readyState != "loaded" && document.readyState != "complete") {
-                    setTimeout(arguments.callee, 0);
-                    return;
-                }
-                if (numStyles === undefined) numStyles = jQuery("style, link[rel=stylesheet]").length;
-                if (document.styleSheets.length != numStyles) {
-                    setTimeout(arguments.callee, 0);
-                    return;
-                }
-                jQuery.ready();
-            })();
-        }
-        jQuery.event.add(window, "load", jQuery.ready);
-    }
-    jQuery.each(("blur,focus,load,resize,scroll,unload,click,dblclick," + "mousedown,mouseup,mousemove,mouseover,mouseout,change,select," + "submit,keydown,keypress,keyup,error").split(","),
-    function(i, name) {
-        jQuery.fn[name] = function(fn) {
-            return fn ? this.bind(name, fn) : this.trigger(name);
-        };
-    });
-    var withinElement = function(event, elem) {
-        var parent = event.relatedTarget;
-        while (parent && parent != elem) try {
-            parent = parent.parentNode;
-        } catch(error) {
-            parent = elem;
-        }
-        return parent == elem;
-    };
-    jQuery(window).bind("unload",
-    function() {
-        jQuery("*").add(document).unbind();
-    });
-    jQuery.fn.extend({
-        load: function(url, params, callback) {
-            if (jQuery.isFunction(url)) return this.bind("load", url);
-            var off = url.indexOf(" ");
-            if (off >= 0) {
-                var selector = url.slice(off, url.length);
-                url = url.slice(0, off);
-            }
-            callback = callback ||
-            function() {};
-            var type = "GET";
-            if (params) if (jQuery.isFunction(params)) {
-                callback = params;
-                params = null;
-            } else {
-                params = jQuery.param(params);
-                type = "POST";
-            }
-            var self = this;
-            jQuery.ajax({
-                url: url,
-                type: type,
-                dataType: "html",
-                data: params,
-                complete: function(res, status) {
-                    if (status == "success" || status == "notmodified") self.html(selector ? jQuery("<div/>").append(res.responseText.replace(/<script(.|\s)*?\/script>/g, "")).find(selector) : res.responseText);
-                    self.each(callback, [res.responseText, status, res]);
-                }
-            });
-            return this;
-        },
-        serialize: function() {
-            return jQuery.param(this.serializeArray());
-        },
-        serializeArray: function() {
-            return this.map(function() {
-                return jQuery.nodeName(this, "form") ? jQuery.makeArray(this.elements) : this;
-            }).filter(function() {
-                return this.name && !this.disabled && (this.checked || /select|textarea/i.test(this.nodeName) || /text|hidden|password/i.test(this.type));
-            }).map(function(i, elem) {
-                var val = jQuery(this).val();
-                return val == null ? null: val.constructor == Array ? jQuery.map(val,
-                function(val, i) {
-                    return {
-                        name: elem.name,
-                        value: val
-                    };
-                }) : {
-                    name: elem.name,
-                    value: val
-                };
-            }).get();
-        }
-    });
-    jQuery.each("ajaxStart,ajaxStop,ajaxComplete,ajaxError,ajaxSuccess,ajaxSend".split(","),
-    function(i, o) {
-        jQuery.fn[o] = function(f) {
-            return this.bind(o, f);
-        };
-    });
-    var jsc = (new Date).getTime();
-    jQuery.extend({
-        get: function(url, data, callback, type) {
-            if (jQuery.isFunction(data)) {
-                callback = data;
-                data = null;
-            }
-            return jQuery.ajax({
-                type: "GET",
-                url: url,
-                data: data,
-                success: callback,
-                dataType: type
-            });
-        },
-        getScript: function(url, callback) {
-            return jQuery.get(url, null, callback, "script");
-        },
-        getJSON: function(url, data, callback) {
-            return jQuery.get(url, data, callback, "json");
-        },
-        post: function(url, data, callback, type) {
-            if (jQuery.isFunction(data)) {
-                callback = data;
-                data = {};
-            }
-            return jQuery.ajax({
-                type: "POST",
-                url: url,
-                data: data,
-                success: callback,
-                dataType: type
-            });
-        },
-        ajaxSetup: function(settings) {
-            jQuery.extend(jQuery.ajaxSettings, settings);
-        },
-        ajaxSettings: {
-            global: true,
-            type: "GET",
-            timeout: 0,
-            contentType: "application/x-www-form-urlencoded",
-            processData: true,
-            async: true,
-            data: null,
-            username: null,
-            password: null,
-            accepts: {
-                xml: "application/xml, text/xml",
-                html: "text/html",
-                script: "text/javascript, application/javascript",
-                json: "application/json, text/javascript",
-                text: "text/plain",
-                _default: "*/*"
-            }
-        },
-        lastModified: {},
-        ajax: function(s) {
-            var jsonp, jsre = /=\?(&|$)/g,
-            status, data;
-            s = jQuery.extend(true, s, jQuery.extend(true, {},
-            jQuery.ajaxSettings, s));
-            if (s.data && s.processData && typeof s.data != "string") s.data = jQuery.param(s.data);
-            if (s.dataType == "jsonp") {
-                if (s.type.toLowerCase() == "get") {
-                    if (!s.url.match(jsre)) s.url += (s.url.match(/\?/) ? "&": "?") + (s.jsonp || "callback") + "=?";
-                } else if (!s.data || !s.data.match(jsre)) s.data = (s.data ? s.data + "&": "") + (s.jsonp || "callback") + "=?";
-                s.dataType = "json";
-            }
-            if (s.dataType == "json" && (s.data && s.data.match(jsre) || s.url.match(jsre))) {
-                jsonp = "jsonp" + jsc++;
-                if (s.data) s.data = (s.data + "").replace(jsre, "=" + jsonp + "$1");
-                s.url = s.url.replace(jsre, "=" + jsonp + "$1");
-                s.dataType = "script";
-                window[jsonp] = function(tmp) {
-                    data = tmp;
-                    success();
-                    complete();
-                    window[jsonp] = undefined;
-                    try {
-                        delete window[jsonp];
-                    } catch(e) {}
-                    if (head) head.removeChild(script);
-                };
-            }
-            if (s.dataType == "script" && s.cache == null) s.cache = false;
-            if (s.cache === false && s.type.toLowerCase() == "get") {
-                var ts = (new Date()).getTime();
-                var ret = s.url.replace(/(\?|&)_=.*?(&|$)/, "$1_=" + ts + "$2");
-                s.url = ret + ((ret == s.url) ? (s.url.match(/\?/) ? "&": "?") + "_=" + ts: "");
-            }
-            if (s.data && s.type.toLowerCase() == "get") {
-                s.url += (s.url.match(/\?/) ? "&": "?") + s.data;
-                s.data = null;
-            }
-            if (s.global && !jQuery.active++) jQuery.event.trigger("ajaxStart");
-            if ((!s.url.indexOf("http") || !s.url.indexOf("//")) && s.dataType == "script" && s.type.toLowerCase() == "get") {
-                var head = document.getElementsByTagName("head")[0];
-                var script = document.createElement("script");
-                script.src = s.url;
-                if (s.scriptCharset) script.charset = s.scriptCharset;
-                if (!jsonp) {
-                    var done = false;
-                    script.onload = script.onreadystatechange = function() {
-                        if (!done && (!this.readyState || this.readyState == "loaded" || this.readyState == "complete")) {
-                            done = true;
-                            success();
-                            complete();
-                            head.removeChild(script);
-                        }
-                    };
-                }
-                head.appendChild(script);
-                return undefined;
-            }
-            var requestDone = false;
-            var xml = window.ActiveXObject ? new ActiveXObject("Microsoft.XMLHTTP") : new XMLHttpRequest();
-            xml.open(s.type, s.url, s.async, s.username, s.password);
-            try {
-                if (s.data) xml.setRequestHeader("Content-Type", s.contentType);
-                if (s.ifModified) xml.setRequestHeader("If-Modified-Since", jQuery.lastModified[s.url] || "Thu, 01 Jan 1970 00:00:00 GMT");
-                xml.setRequestHeader("X-Requested-With", "XMLHttpRequest");
-                xml.setRequestHeader("Accept", s.dataType && s.accepts[s.dataType] ? s.accepts[s.dataType] + ", */*": s.accepts._default);
-            } catch(e) {}
-            if (s.beforeSend) s.beforeSend(xml);
-            if (s.global) jQuery.event.trigger("ajaxSend", [xml, s]);
-            var onreadystatechange = function(isTimeout) {
-                if (!requestDone && xml && (xml.readyState == 4 || isTimeout == "timeout")) {
-                    requestDone = true;
-                    if (ival) {
-                        clearInterval(ival);
-                        ival = null;
-                    }
-                    status = isTimeout == "timeout" && "timeout" || !jQuery.httpSuccess(xml) && "error" || s.ifModified && jQuery.httpNotModified(xml, s.url) && "notmodified" || "success";
-                    if (status == "success") {
-                        try {
-                            data = jQuery.httpData(xml, s.dataType);
-                        } catch(e) {
-                            status = "parsererror";
-                        }
-                    }
-                    if (status == "success") {
-                        var modRes;
-                        try {
-                            modRes = xml.getResponseHeader("Last-Modified");
-                        } catch(e) {}
-                        if (s.ifModified && modRes) jQuery.lastModified[s.url] = modRes;
-                        if (!jsonp) success();
-                    } else jQuery.handleError(s, xml, status);
-                    complete();
-                    if (s.async) xml = null;
-                }
-            };
-            if (s.async) {
-                var ival = setInterval(onreadystatechange, 13);
-                if (s.timeout > 0) setTimeout(function() {
-                    if (xml) {
-                        xml.abort();
-                        if (!requestDone) onreadystatechange("timeout");
-                    }
-                },
-                s.timeout);
-            }
-            try {
-                xml.send(s.data);
-            } catch(e) {
-                jQuery.handleError(s, xml, null, e);
-            }
-            if (!s.async) onreadystatechange();
-            function success() {
-                if (s.success) s.success(data, status);
-                if (s.global) jQuery.event.trigger("ajaxSuccess", [xml, s]);
-            }
-            function complete() {
-                if (s.complete) s.complete(xml, status);
-                if (s.global) jQuery.event.trigger("ajaxComplete", [xml, s]);
-                if (s.global && !--jQuery.active) jQuery.event.trigger("ajaxStop");
-            }
-            return xml;
-        },
-        handleError: function(s, xml, status, e) {
-            if (s.error) s.error(xml, status, e);
-            if (s.global) jQuery.event.trigger("ajaxError", [xml, s, e]);
-        },
-        active: 0,
-        httpSuccess: function(r) {
-            try {
-                return ! r.status && location.protocol == "file:" || (r.status >= 200 && r.status < 300) || r.status == 304 || r.status == 1223 || jQuery.browser.safari && r.status == undefined;
-            } catch(e) {}
-            return false;
-        },
-        httpNotModified: function(xml, url) {
-            try {
-                var xmlRes = xml.getResponseHeader("Last-Modified");
-                return xml.status == 304 || xmlRes == jQuery.lastModified[url] || jQuery.browser.safari && xml.status == undefined;
-            } catch(e) {}
-            return false;
-        },
-        httpData: function(r, type) {
-            var ct = r.getResponseHeader("content-type");
-            var xml = type == "xml" || !type && ct && ct.indexOf("xml") >= 0;
-            var data = xml ? r.responseXML: r.responseText;
-            if (xml && data.documentElement.tagName == "parsererror") throw "parsererror";
-            if (type == "script") jQuery.globalEval(data);
-            if (type == "json") data = eval("(" + data + ")");
-            return data;
-        },
-        param: function(a) {
-            var s = [];
-            if (a.constructor == Array || a.jquery) jQuery.each(a,
-            function() {
-                s.push(encodeURIComponent(this.name) + "=" + encodeURIComponent(this.value));
-            });
-            else for (var j in a) if (a[j] && a[j].constructor == Array) jQuery.each(a[j],
-            function() {
-                s.push(encodeURIComponent(j) + "=" + encodeURIComponent(this));
-            });
-            else s.push(encodeURIComponent(j) + "=" + encodeURIComponent(a[j]));
-            return s.join("&").replace(/%20/g, "+");
-        }
-    });
-    jQuery.fn.extend({
-        show: function(speed, callback) {
-            return speed ? this.animate({
-                height: "show",
-                width: "show",
-                opacity: "show"
-            },
-            speed, callback) : this.filter(":hidden").each(function() {
-                this.style.display = this.oldblock || "";
-                if (jQuery.css(this, "display") == "none") {
-                    var elem = jQuery("<" + this.tagName + " />").appendTo("body");
-                    this.style.display = elem.css("display");
-                    if (this.style.display == "none") this.style.display = "block";
-                    elem.remove();
-                }
-            }).end();
-        },
-        hide: function(speed, callback) {
-            return speed ? this.animate({
-                height: "hide",
-                width: "hide",
-                opacity: "hide"
-            },
-            speed, callback) : this.filter(":visible").each(function() {
-                this.oldblock = this.oldblock || jQuery.css(this, "display");
-                this.style.display = "none";
-            }).end();
-        },
-        _toggle: jQuery.fn.toggle,
-        toggle: function(fn, fn2) {
-            return jQuery.isFunction(fn) && jQuery.isFunction(fn2) ? this._toggle(fn, fn2) : fn ? this.animate({
-                height: "toggle",
-                width: "toggle",
-                opacity: "toggle"
-            },
-            fn, fn2) : this.each(function() {
-                jQuery(this)[jQuery(this).is(":hidden") ? "show": "hide"]();
-            });
-        },
-        slideDown: function(speed, callback) {
-            return this.animate({
-                height: "show"
-            },
-            speed, callback);
-        },
-        slideUp: function(speed, callback) {
-            return this.animate({
-                height: "hide"
-            },
-            speed, callback);
-        },
-        slideToggle: function(speed, callback) {
-            return this.animate({
-                height: "toggle"
-            },
-            speed, callback);
-        },
-        fadeIn: function(speed, callback) {
-            return this.animate({
-                opacity: "show"
-            },
-            speed, callback);
-        },
-        fadeOut: function(speed, callback) {
-            return this.animate({
-                opacity: "hide"
-            },
-            speed, callback);
-        },
-        fadeTo: function(speed, to, callback) {
-            return this.animate({
-                opacity: to
-            },
-            speed, callback);
-        },
-        animate: function(prop, speed, easing, callback) {
-            var optall = jQuery.speed(speed, easing, callback);
-            return this[optall.queue === false ? "each": "queue"](function() {
-                if (this.nodeType != 1) return false;
-                var opt = jQuery.extend({},
-                optall);
-                var hidden = jQuery(this).is(":hidden"),
-                self = this;
-                for (var p in prop) {
-                    if (prop[p] == "hide" && hidden || prop[p] == "show" && !hidden) return jQuery.isFunction(opt.complete) && opt.complete.apply(this);
-                    if (p == "height" || p == "width") {
-                        opt.display = jQuery.css(this, "display");
-                        opt.overflow = this.style.overflow;
-                    }
-                }
-                if (opt.overflow != null) this.style.overflow = "hidden";
-                opt.curAnim = jQuery.extend({},
-                prop);
-                jQuery.each(prop,
-                function(name, val) {
-                    var e = new jQuery.fx(self, opt, name);
-                    if (/toggle|show|hide/.test(val)) e[val == "toggle" ? hidden ? "show": "hide": val](prop);
-                    else {
-                        var parts = val.toString().match(/^([+-]=)?([\d+-.]+)(.*)$/),
-                        start = e.cur(true) || 0;
-                        if (parts) {
-                            var end = parseFloat(parts[2]),
-                            unit = parts[3] || "px";
-                            if (unit != "px") {
-                                self.style[name] = (end || 1) + unit;
-                                start = ((end || 1) / e.cur(true)) * start;
-                                self.style[name] = start + unit;
-                            }
-                            if (parts[1]) end = ((parts[1] == "-=" ? -1 : 1) * end) + start;
-                            e.custom(start, end, unit);
-                        } else e.custom(start, val, "");
-                    }
-                });
-                return true;
-            });
-        },
-        queue: function(type, fn) {
-            if (jQuery.isFunction(type) || (type && type.constructor == Array)) {
-                fn = type;
-                type = "fx";
-            }
-            if (!type || (typeof type == "string" && !fn)) return queue(this[0], type);
-            return this.each(function() {
-                if (fn.constructor == Array) queue(this, type, fn);
-                else {
-                    queue(this, type).push(fn);
-                    if (queue(this, type).length == 1) fn.apply(this);
-                }
-            });
-        },
-        stop: function(clearQueue, gotoEnd) {
-            var timers = jQuery.timers;
-            if (clearQueue) this.queue([]);
-            this.each(function() {
-                for (var i = timers.length - 1; i >= 0; i--) if (timers[i].elem == this) {
-                    if (gotoEnd) timers[i](true);
-                    timers.splice(i, 1);
-                }
-            });
-            if (!gotoEnd) this.dequeue();
-            return this;
-        }
-    });
-    var queue = function(elem, type, array) {
-        if (!elem) return undefined;
-        type = type || "fx";
-        var q = jQuery.data(elem, type + "queue");
-        if (!q || array) q = jQuery.data(elem, type + "queue", array ? jQuery.makeArray(array) : []);
-        return q;
-    };
-    jQuery.fn.dequeue = function(type) {
-        type = type || "fx";
-        return this.each(function() {
-            var q = queue(this, type);
-            q.shift();
-            if (q.length) q[0].apply(this);
-        });
-    };
-    jQuery.extend({
-        speed: function(speed, easing, fn) {
-            var opt = speed && speed.constructor == Object ? speed: {
-                complete: fn || !fn && easing || jQuery.isFunction(speed) && speed,
-                duration: speed,
-                easing: fn && easing || easing && easing.constructor != Function && easing
-            };
-            opt.duration = (opt.duration && opt.duration.constructor == Number ? opt.duration: {
-                slow: 600,
-                fast: 200
-            } [opt.duration]) || 400;
-            opt.old = opt.complete;
-            opt.complete = function() {
-                if (opt.queue !== false) jQuery(this).dequeue();
-                if (jQuery.isFunction(opt.old)) opt.old.apply(this);
-            };
-            return opt;
-        },
-        easing: {
-            linear: function(p, n, firstNum, diff) {
-                return firstNum + diff * p;
-            },
-            swing: function(p, n, firstNum, diff) {
-                return (( - Math.cos(p * Math.PI) / 2) + 0.5) * diff + firstNum;
-            }
-        },
-        timers: [],
-        timerId: null,
-        fx: function(elem, options, prop) {
-            this.options = options;
-            this.elem = elem;
-            this.prop = prop;
-            if (!options.orig) options.orig = {};
-        }
-    });
-    jQuery.fx.prototype = {
-        update: function() {
-            if (this.options.step) this.options.step.apply(this.elem, [this.now, this]); (jQuery.fx.step[this.prop] || jQuery.fx.step._default)(this);
-            if (this.prop == "height" || this.prop == "width") this.elem.style.display = "block";
-        },
-        cur: function(force) {
-            if (this.elem[this.prop] != null && this.elem.style[this.prop] == null) return this.elem[this.prop];
-            var r = parseFloat(jQuery.css(this.elem, this.prop, force));
-            return r && r > -10000 ? r: parseFloat(jQuery.curCSS(this.elem, this.prop)) || 0;
-        },
-        custom: function(from, to, unit) {
-            this.startTime = (new Date()).getTime();
-            this.start = from;
-            this.end = to;
-            this.unit = unit || this.unit || "px";
-            this.now = this.start;
-            this.pos = this.state = 0;
-            this.update();
-            var self = this;
-            function t(gotoEnd) {
-                return self.step(gotoEnd);
-            }
-            t.elem = this.elem;
-            jQuery.timers.push(t);
-            if (jQuery.timerId == null) {
-                jQuery.timerId = setInterval(function() {
-                    var timers = jQuery.timers;
-                    for (var i = 0; i < timers.length; i++) if (!timers[i]()) timers.splice(i--, 1);
-                    if (!timers.length) {
-                        clearInterval(jQuery.timerId);
-                        jQuery.timerId = null;
-                    }
-                },
-                13);
-            }
-        },
-        show: function() {
-            this.options.orig[this.prop] = jQuery.attr(this.elem.style, this.prop);
-            this.options.show = true;
-            this.custom(0, this.cur());
-            if (this.prop == "width" || this.prop == "height") this.elem.style[this.prop] = "1px";
-            jQuery(this.elem).show();
-        },
-        hide: function() {
-            this.options.orig[this.prop] = jQuery.attr(this.elem.style, this.prop);
-            this.options.hide = true;
-            this.custom(this.cur(), 0);
-        },
-        step: function(gotoEnd) {
-            var t = (new Date()).getTime();
-            if (gotoEnd || t > this.options.duration + this.startTime) {
-                this.now = this.end;
-                this.pos = this.state = 1;
-                this.update();
-                this.options.curAnim[this.prop] = true;
-                var done = true;
-                for (var i in this.options.curAnim) if (this.options.curAnim[i] !== true) done = false;
-                if (done) {
-                    if (this.options.display != null) {
-                        this.elem.style.overflow = this.options.overflow;
-                        this.elem.style.display = this.options.display;
-                        if (jQuery.css(this.elem, "display") == "none") this.elem.style.display = "block";
-                    }
-                    if (this.options.hide) this.elem.style.display = "none";
-                    if (this.options.hide || this.options.show) for (var p in this.options.curAnim) jQuery.attr(this.elem.style, p, this.options.orig[p]);
-                }
-                if (done && jQuery.isFunction(this.options.complete)) this.options.complete.apply(this.elem);
-                return false;
-            } else {
-                var n = t - this.startTime;
-                this.state = n / this.options.duration;
-                this.pos = jQuery.easing[this.options.easing || (jQuery.easing.swing ? "swing": "linear")](this.state, n, 0, 1, this.options.duration);
-                this.now = this.start + ((this.end - this.start) * this.pos);
-                this.update();
-            }
-            return true;
-        }
-    };
-    jQuery.fx.step = {
-        scrollLeft: function(fx) {
-            fx.elem.scrollLeft = fx.now;
-        },
-        scrollTop: function(fx) {
-            fx.elem.scrollTop = fx.now;
-        },
-        opacity: function(fx) {
-            jQuery.attr(fx.elem.style, "opacity", fx.now);
-        },
-        _default: function(fx) {
-            fx.elem.style[fx.prop] = fx.now + fx.unit;
-        }
-    };
-    jQuery.fn.offset = function() {
-        var left = 0,
-        top = 0,
-        elem = this[0],
-        results;
-        if (elem) with(jQuery.browser) {
-            var parent = elem.parentNode,
-            offsetChild = elem,
-            offsetParent = elem.offsetParent,
-            doc = elem.ownerDocument,
-            safari2 = safari && parseInt(version) < 522 && !/adobeair/i.test(userAgent),
-            fixed = jQuery.css(elem, "position") == "fixed";
-            if (elem.getBoundingClientRect) {
-                var box = elem.getBoundingClientRect();
-                add(box.left + Math.max(doc.documentElement.scrollLeft, doc.body.scrollLeft), box.top + Math.max(doc.documentElement.scrollTop, doc.body.scrollTop));
-                add( - doc.documentElement.clientLeft, -doc.documentElement.clientTop);
-            } else {
-                add(elem.offsetLeft, elem.offsetTop);
-                while (offsetParent) {
-                    add(offsetParent.offsetLeft, offsetParent.offsetTop);
-                    if (mozilla && !/^t(able|d|h)$/i.test(offsetParent.tagName) || safari && !safari2) border(offsetParent);
-                    if (!fixed && jQuery.css(offsetParent, "position") == "fixed") fixed = true;
-                    offsetChild = /^body$/i.test(offsetParent.tagName) ? offsetChild: offsetParent;
-                    offsetParent = offsetParent.offsetParent;
-                }
-                while (parent && parent.tagName && !/^body|html$/i.test(parent.tagName)) {
-                    if (!/^inline|table.*$/i.test(jQuery.css(parent, "display"))) add( - parent.scrollLeft, -parent.scrollTop);
-                    if (mozilla && jQuery.css(parent, "overflow") != "visible") border(parent);
-                    parent = parent.parentNode;
-                }
-                if ((safari2 && (fixed || jQuery.css(offsetChild, "position") == "absolute")) || (mozilla && jQuery.css(offsetChild, "position") != "absolute")) add( - doc.body.offsetLeft, -doc.body.offsetTop);
-                if (fixed) add(Math.max(doc.documentElement.scrollLeft, doc.body.scrollLeft), Math.max(doc.documentElement.scrollTop, doc.body.scrollTop));
-            }
-            results = {
-                top: top,
-                left: left
-            };
-        }
-        function border(elem) {
-            add(jQuery.curCSS(elem, "borderLeftWidth", true), jQuery.curCSS(elem, "borderTopWidth", true));
-        }
-        function add(l, t) {
-            left += parseInt(l) || 0;
-            top += parseInt(t) || 0;
-        }
-        return results;
-    };
-})();
\ No newline at end of file
+eval(function(p,a,c,k,e,r){e=function(c){return(c<a?'':e(parseInt(c/a)))+((c=c%a)>35?String.fromCharCode(c+29):c.toString(36))};if(!''.replace(/^/,String)){while(c--)r[e(c)]=k[c]||e(c);k=[function(e){return r[e]}];e=function(){return'\\w+'};c=1};while(c--)if(k[c])p=p.replace(new RegExp('\\b'+e(c)+'\\b','g'),k[c]);return p}('(H(){J w=1b.4M,3m$=1b.$;J D=1b.4M=1b.$=H(a,b){I 2B D.17.5j(a,b)};J u=/^[^<]*(<(.|\\s)+>)[^>]*$|^#(\\w+)$/,62=/^.[^:#\\[\\.]*$/,12;D.17=D.44={5j:H(d,b){d=d||S;G(d.16){7[0]=d;7.K=1;I 7}G(1j d=="23"){J c=u.2D(d);G(c&&(c[1]||!b)){G(c[1])d=D.4h([c[1]],b);N{J a=S.61(c[3]);G(a){G(a.2v!=c[3])I D().2q(d);I D(a)}d=[]}}N I D(b).2q(d)}N G(D.1D(d))I D(S)[D.17.27?"27":"43"](d);I 7.6Y(D.2d(d))},5w:"1.2.6",8G:H(){I 7.K},K:0,3p:H(a){I a==12?D.2d(7):7[a]},2I:H(b){J a=D(b);a.5n=7;I a},6Y:H(a){7.K=0;2p.44.1p.1w(7,a);I 7},P:H(a,b){I D.P(7,a,b)},5i:H(b){J a=-1;I D.2L(b&&b.5w?b[0]:b,7)},1K:H(c,a,b){J d=c;G(c.1q==56)G(a===12)I 7[0]&&D[b||"1K"](7[0],c);N{d={};d[c]=a}I 7.P(H(i){R(
 c 1n d)D.1K(b?7.V:7,c,D.1i(7,d[c],b,i,c))})},1g:H(b,a){G((b==\'2h\'||b==\'1Z\')&&3d(a)<0)a=12;I 7.1K(b,a,"2a")},1r:H(b){G(1j b!="49"&&b!=U)I 7.4E().3v((7[0]&&7[0].2z||S).5F(b));J a="";D.P(b||7,H(){D.P(7.3t,H(){G(7.16!=8)a+=7.16!=1?7.76:D.17.1r([7])})});I a},5z:H(b){G(7[0])D(b,7[0].2z).5y().39(7[0]).2l(H(){J a=7;1B(a.1x)a=a.1x;I a}).3v(7);I 7},8Y:H(a){I 7.P(H(){D(7).6Q().5z(a)})},8R:H(a){I 7.P(H(){D(7).5z(a)})},3v:H(){I 7.3W(19,M,Q,H(a){G(7.16==1)7.3U(a)})},6F:H(){I 7.3W(19,M,M,H(a){G(7.16==1)7.39(a,7.1x)})},6E:H(){I 7.3W(19,Q,Q,H(a){7.1d.39(a,7)})},5q:H(){I 7.3W(19,Q,M,H(a){7.1d.39(a,7.2H)})},3l:H(){I 7.5n||D([])},2q:H(b){J c=D.2l(7,H(a){I D.2q(b,a)});I 7.2I(/[^+>] [^+>]/.11(b)||b.1h("..")>-1?D.4r(c):c)},5y:H(e){J f=7.2l(H(){G(D.14.1f&&!D.4n(7)){J a=7.6o(M),5h=S.3h("1v");5h.3U(a);I D.4h([5h.4H])[0]}N I 7.6o(M)});J d=f.2q("*").5c().P(H(){G(7[E]!=12)7[E]=U});G(e===M)7.2q("*").5c().P(H(i){G(7.16==3)I;J c=D.L(7,"3w");R(J a 1n c)R(J b 1n c[a])D.W.1e(d[i],a,c[a][b],c[a][b].L)});I 
 f},1E:H(b){I 7.2I(D.1D(b)&&D.3C(7,H(a,i){I b.1k(a,i)})||D.3g(b,7))},4Y:H(b){G(b.1q==56)G(62.11(b))I 7.2I(D.3g(b,7,M));N b=D.3g(b,7);J a=b.K&&b[b.K-1]!==12&&!b.16;I 7.1E(H(){I a?D.2L(7,b)<0:7!=b})},1e:H(a){I 7.2I(D.4r(D.2R(7.3p(),1j a==\'23\'?D(a):D.2d(a))))},3F:H(a){I!!a&&D.3g(a,7).K>0},7T:H(a){I 7.3F("."+a)},6e:H(b){G(b==12){G(7.K){J c=7[0];G(D.Y(c,"2A")){J e=c.64,63=[],15=c.15,2V=c.O=="2A-2V";G(e<0)I U;R(J i=2V?e:0,2f=2V?e+1:15.K;i<2f;i++){J d=15[i];G(d.2W){b=D.14.1f&&!d.at.2x.an?d.1r:d.2x;G(2V)I b;63.1p(b)}}I 63}N I(7[0].2x||"").1o(/\\r/g,"")}I 12}G(b.1q==4L)b+=\'\';I 7.P(H(){G(7.16!=1)I;G(b.1q==2p&&/5O|5L/.11(7.O))7.4J=(D.2L(7.2x,b)>=0||D.2L(7.34,b)>=0);N G(D.Y(7,"2A")){J a=D.2d(b);D("9R",7).P(H(){7.2W=(D.2L(7.2x,a)>=0||D.2L(7.1r,a)>=0)});G(!a.K)7.64=-1}N 7.2x=b})},2K:H(a){I a==12?(7[0]?7[0].4H:U):7.4E().3v(a)},7b:H(a){I 7.5q(a).21()},79:H(i){I 7.3s(i,i+1)},3s:H(){I 7.2I(2p.44.3s.1w(7,19))},2l:H(b){I 7.2I(D.2l(7,H(a,i){I b.1k(a,i,a)}))},5c:H(){I 7.1e(7.5n)},L:H(d,b){J a=
 d.1R(".");a[1]=a[1]?"."+a[1]:"";G(b===12){J c=7.5C("9z"+a[1]+"!",[a[0]]);G(c===12&&7.K)c=D.L(7[0],d);I c===12&&a[1]?7.L(a[0]):c}N I 7.1P("9u"+a[1]+"!",[a[0],b]).P(H(){D.L(7,d,b)})},3b:H(a){I 7.P(H(){D.3b(7,a)})},3W:H(g,f,h,d){J e=7.K>1,3x;I 7.P(H(){G(!3x){3x=D.4h(g,7.2z);G(h)3x.9o()}J b=7;G(f&&D.Y(7,"1T")&&D.Y(3x[0],"4F"))b=7.3H("22")[0]||7.3U(7.2z.3h("22"));J c=D([]);D.P(3x,H(){J a=e?D(7).5y(M)[0]:7;G(D.Y(a,"1m"))c=c.1e(a);N{G(a.16==1)c=c.1e(D("1m",a).21());d.1k(b,a)}});c.P(6T)})}};D.17.5j.44=D.17;H 6T(i,a){G(a.4d)D.3Y({1a:a.4d,31:Q,1O:"1m"});N D.5u(a.1r||a.6O||a.4H||"");G(a.1d)a.1d.37(a)}H 1z(){I+2B 8J}D.1l=D.17.1l=H(){J b=19[0]||{},i=1,K=19.K,4x=Q,15;G(b.1q==8I){4x=b;b=19[1]||{};i=2}G(1j b!="49"&&1j b!="H")b={};G(K==i){b=7;--i}R(;i<K;i++)G((15=19[i])!=U)R(J c 1n 15){J a=b[c],2w=15[c];G(b===2w)6M;G(4x&&2w&&1j 2w=="49"&&!2w.16)b[c]=D.1l(4x,a||(2w.K!=U?[]:{}),2w);N G(2w!==12)b[c]=2w}I b};J E="4M"+1z(),6K=0,5r={},6G=/z-?5i|8B-?8A|1y|6B|8v-?1Z/i,3P=S.3P||{};D.1l({8u:H(a){1b.$=
 3m$;G(a)1b.4M=w;I D},1D:H(a){I!!a&&1j a!="23"&&!a.Y&&a.1q!=2p&&/^[\\s[]?H/.11(a+"")},4n:H(a){I a.1C&&!a.1c||a.2j&&a.2z&&!a.2z.1c},5u:H(a){a=D.3k(a);G(a){J b=S.3H("6w")[0]||S.1C,1m=S.3h("1m");1m.O="1r/4t";G(D.14.1f)1m.1r=a;N 1m.3U(S.5F(a));b.39(1m,b.1x);b.37(1m)}},Y:H(b,a){I b.Y&&b.Y.2r()==a.2r()},1Y:{},L:H(c,d,b){c=c==1b?5r:c;J a=c[E];G(!a)a=c[E]=++6K;G(d&&!D.1Y[a])D.1Y[a]={};G(b!==12)D.1Y[a][d]=b;I d?D.1Y[a][d]:a},3b:H(c,b){c=c==1b?5r:c;J a=c[E];G(b){G(D.1Y[a]){2U D.1Y[a][b];b="";R(b 1n D.1Y[a])1X;G(!b)D.3b(c)}}N{1U{2U c[E]}1V(e){G(c.5l)c.5l(E)}2U D.1Y[a]}},P:H(d,a,c){J e,i=0,K=d.K;G(c){G(K==12){R(e 1n d)G(a.1w(d[e],c)===Q)1X}N R(;i<K;)G(a.1w(d[i++],c)===Q)1X}N{G(K==12){R(e 1n d)G(a.1k(d[e],e,d[e])===Q)1X}N R(J b=d[0];i<K&&a.1k(b,i,b)!==Q;b=d[++i]){}}I d},1i:H(b,a,c,i,d){G(D.1D(a))a=a.1k(b,i);I a&&a.1q==4L&&c=="2a"&&!6G.11(d)?a+"2X":a},1F:{1e:H(c,b){D.P((b||"").1R(/\\s+/),H(i,a){G(c.16==1&&!D.1F.3T(c.1F,a))c.1F+=(c.1F?" ":"")+a})},21:H(c,b){G(c.16==1)c.1F=b!=12?D.3C(c.1F.1R
 (/\\s+/),H(a){I!D.1F.3T(b,a)}).6s(" "):""},3T:H(b,a){I D.2L(a,(b.1F||b).6r().1R(/\\s+/))>-1}},6q:H(b,c,a){J e={};R(J d 1n c){e[d]=b.V[d];b.V[d]=c[d]}a.1k(b);R(J d 1n c)b.V[d]=e[d]},1g:H(d,e,c){G(e=="2h"||e=="1Z"){J b,3X={30:"5x",5g:"1G",18:"3I"},35=e=="2h"?["5e","6k"]:["5G","6i"];H 5b(){b=e=="2h"?d.8f:d.8c;J a=0,2C=0;D.P(35,H(){a+=3d(D.2a(d,"57"+7,M))||0;2C+=3d(D.2a(d,"2C"+7+"4b",M))||0});b-=29.83(a+2C)}G(D(d).3F(":4j"))5b();N D.6q(d,3X,5b);I 29.2f(0,b)}I D.2a(d,e,c)},2a:H(f,l,k){J e,V=f.V;H 3E(b){G(!D.14.2k)I Q;J a=3P.54(b,U);I!a||a.52("3E")==""}G(l=="1y"&&D.14.1f){e=D.1K(V,"1y");I e==""?"1":e}G(D.14.2G&&l=="18"){J d=V.50;V.50="0 7Y 7W";V.50=d}G(l.1I(/4i/i))l=y;G(!k&&V&&V[l])e=V[l];N G(3P.54){G(l.1I(/4i/i))l="4i";l=l.1o(/([A-Z])/g,"-$1").3y();J c=3P.54(f,U);G(c&&!3E(f))e=c.52(l);N{J g=[],2E=[],a=f,i=0;R(;a&&3E(a);a=a.1d)2E.6h(a);R(;i<2E.K;i++)G(3E(2E[i])){g[i]=2E[i].V.18;2E[i].V.18="3I"}e=l=="18"&&g[2E.K-1]!=U?"2F":(c&&c.52(l))||"";R(i=0;i<g.K;i++)G(g[i]!=U)2E[i].V.18=g[i]}
 G(l=="1y"&&e=="")e="1"}N G(f.4g){J h=l.1o(/\\-(\\w)/g,H(a,b){I b.2r()});e=f.4g[l]||f.4g[h];G(!/^\\d+(2X)?$/i.11(e)&&/^\\d/.11(e)){J j=V.1A,66=f.65.1A;f.65.1A=f.4g.1A;V.1A=e||0;e=V.aM+"2X";V.1A=j;f.65.1A=66}}I e},4h:H(l,h){J k=[];h=h||S;G(1j h.3h==\'12\')h=h.2z||h[0]&&h[0].2z||S;D.P(l,H(i,d){G(!d)I;G(d.1q==4L)d+=\'\';G(1j d=="23"){d=d.1o(/(<(\\w+)[^>]*?)\\/>/g,H(b,a,c){I c.1I(/^(aK|4f|7E|aG|4T|7A|aB|3n|az|ay|av)$/i)?b:a+"></"+c+">"});J f=D.3k(d).3y(),1v=h.3h("1v");J e=!f.1h("<au")&&[1,"<2A 7w=\'7w\'>","</2A>"]||!f.1h("<ar")&&[1,"<7v>","</7v>"]||f.1I(/^<(aq|22|am|ak|ai)/)&&[1,"<1T>","</1T>"]||!f.1h("<4F")&&[2,"<1T><22>","</22></1T>"]||(!f.1h("<af")||!f.1h("<ad"))&&[3,"<1T><22><4F>","</4F></22></1T>"]||!f.1h("<7E")&&[2,"<1T><22></22><7q>","</7q></1T>"]||D.14.1f&&[1,"1v<1v>","</1v>"]||[0,"",""];1v.4H=e[1]+d+e[2];1B(e[0]--)1v=1v.5T;G(D.14.1f){J g=!f.1h("<1T")&&f.1h("<22")<0?1v.1x&&1v.1x.3t:e[1]=="<1T>"&&f.1h("<22")<0?1v.3t:[];R(J j=g.K-1;j>=0;--j)G(D.Y(g[j],"22")&&!g[j].3t.K)g[j]
 .1d.37(g[j]);G(/^\\s/.11(d))1v.39(h.5F(d.1I(/^\\s*/)[0]),1v.1x)}d=D.2d(1v.3t)}G(d.K===0&&(!D.Y(d,"3V")&&!D.Y(d,"2A")))I;G(d[0]==12||D.Y(d,"3V")||d.15)k.1p(d);N k=D.2R(k,d)});I k},1K:H(d,f,c){G(!d||d.16==3||d.16==8)I 12;J e=!D.4n(d),40=c!==12,1f=D.14.1f;f=e&&D.3X[f]||f;G(d.2j){J g=/5Q|4d|V/.11(f);G(f=="2W"&&D.14.2k)d.1d.64;G(f 1n d&&e&&!g){G(40){G(f=="O"&&D.Y(d,"4T")&&d.1d)7p"O a3 a1\'t 9V 9U";d[f]=c}G(D.Y(d,"3V")&&d.7i(f))I d.7i(f).76;I d[f]}G(1f&&e&&f=="V")I D.1K(d.V,"9T",c);G(40)d.9Q(f,""+c);J h=1f&&e&&g?d.4G(f,2):d.4G(f);I h===U?12:h}G(1f&&f=="1y"){G(40){d.6B=1;d.1E=(d.1E||"").1o(/7f\\([^)]*\\)/,"")+(3r(c)+\'\'=="9L"?"":"7f(1y="+c*7a+")")}I d.1E&&d.1E.1h("1y=")>=0?(3d(d.1E.1I(/1y=([^)]*)/)[1])/7a)+\'\':""}f=f.1o(/-([a-z])/9H,H(a,b){I b.2r()});G(40)d[f]=c;I d[f]},3k:H(a){I(a||"").1o(/^\\s+|\\s+$/g,"")},2d:H(b){J a=[];G(b!=U){J i=b.K;G(i==U||b.1R||b.4I||b.1k)a[0]=b;N 1B(i)a[--i]=b[i]}I a},2L:H(b,a){R(J i=0,K=a.K;i<K;i++)G(a[i]===b)I i;I-1},2R:H(a,b){J i=0,T,2S=a.K;G(D.14.1f
 ){1B(T=b[i++])G(T.16!=8)a[2S++]=T}N 1B(T=b[i++])a[2S++]=T;I a},4r:H(a){J c=[],2o={};1U{R(J i=0,K=a.K;i<K;i++){J b=D.L(a[i]);G(!2o[b]){2o[b]=M;c.1p(a[i])}}}1V(e){c=a}I c},3C:H(c,a,d){J b=[];R(J i=0,K=c.K;i<K;i++)G(!d!=!a(c[i],i))b.1p(c[i]);I b},2l:H(d,a){J c=[];R(J i=0,K=d.K;i<K;i++){J b=a(d[i],i);G(b!=U)c[c.K]=b}I c.7d.1w([],c)}});J v=9B.9A.3y();D.14={5B:(v.1I(/.+(?:9y|9x|9w|9v)[\\/: ]([\\d.]+)/)||[])[1],2k:/75/.11(v),2G:/2G/.11(v),1f:/1f/.11(v)&&!/2G/.11(v),42:/42/.11(v)&&!/(9s|75)/.11(v)};J y=D.14.1f?"7o":"72";D.1l({71:!D.14.1f||S.70=="6Z",3X:{"R":"9n","9k":"1F","4i":y,72:y,7o:y,9h:"9f",9e:"9d",9b:"99"}});D.P({6W:H(a){I a.1d},97:H(a){I D.4S(a,"1d")},95:H(a){I D.3a(a,2,"2H")},91:H(a){I D.3a(a,2,"4l")},8Z:H(a){I D.4S(a,"2H")},8X:H(a){I D.4S(a,"4l")},8W:H(a){I D.5v(a.1d.1x,a)},8V:H(a){I D.5v(a.1x)},6Q:H(a){I D.Y(a,"8U")?a.8T||a.8S.S:D.2d(a.3t)}},H(c,d){D.17[c]=H(b){J a=D.2l(7,d);G(b&&1j b=="23")a=D.3g(b,a);I 7.2I(D.4r(a))}});D.P({6P:"3v",8Q:"6F",39:"6E",8P:"5q",8O:"7b"},H(c,b
 ){D.17[c]=H(){J a=19;I 7.P(H(){R(J i=0,K=a.K;i<K;i++)D(a[i])[b](7)})}});D.P({8N:H(a){D.1K(7,a,"");G(7.16==1)7.5l(a)},8M:H(a){D.1F.1e(7,a)},8L:H(a){D.1F.21(7,a)},8K:H(a){D.1F[D.1F.3T(7,a)?"21":"1e"](7,a)},21:H(a){G(!a||D.1E(a,[7]).r.K){D("*",7).1e(7).P(H(){D.W.21(7);D.3b(7)});G(7.1d)7.1d.37(7)}},4E:H(){D(">*",7).21();1B(7.1x)7.37(7.1x)}},H(a,b){D.17[a]=H(){I 7.P(b,19)}});D.P(["6N","4b"],H(i,c){J b=c.3y();D.17[b]=H(a){I 7[0]==1b?D.14.2G&&S.1c["5t"+c]||D.14.2k&&1b["5s"+c]||S.70=="6Z"&&S.1C["5t"+c]||S.1c["5t"+c]:7[0]==S?29.2f(29.2f(S.1c["4y"+c],S.1C["4y"+c]),29.2f(S.1c["2i"+c],S.1C["2i"+c])):a==12?(7.K?D.1g(7[0],b):U):7.1g(b,a.1q==56?a:a+"2X")}});H 25(a,b){I a[0]&&3r(D.2a(a[0],b,M),10)||0}J C=D.14.2k&&3r(D.14.5B)<8H?"(?:[\\\\w*3m-]|\\\\\\\\.)":"(?:[\\\\w\\8F-\\8E*3m-]|\\\\\\\\.)",6L=2B 4v("^>\\\\s*("+C+"+)"),6J=2B 4v("^("+C+"+)(#)("+C+"+)"),6I=2B 4v("^([#.]?)("+C+"*)");D.1l({6H:{"":H(a,i,m){I m[2]=="*"||D.Y(a,m[2])},"#":H(a,i,m){I a.4G("2v")==m[2]},":":{8D:H(a,i,m){I i<m[3]-0},8
 C:H(a,i,m){I i>m[3]-0},3a:H(a,i,m){I m[3]-0==i},79:H(a,i,m){I m[3]-0==i},3o:H(a,i){I i==0},3S:H(a,i,m,r){I i==r.K-1},6D:H(a,i){I i%2==0},6C:H(a,i){I i%2},"3o-4u":H(a){I a.1d.3H("*")[0]==a},"3S-4u":H(a){I D.3a(a.1d.5T,1,"4l")==a},"8z-4u":H(a){I!D.3a(a.1d.5T,2,"4l")},6W:H(a){I a.1x},4E:H(a){I!a.1x},8y:H(a,i,m){I(a.6O||a.8x||D(a).1r()||"").1h(m[3])>=0},4j:H(a){I"1G"!=a.O&&D.1g(a,"18")!="2F"&&D.1g(a,"5g")!="1G"},1G:H(a){I"1G"==a.O||D.1g(a,"18")=="2F"||D.1g(a,"5g")=="1G"},8w:H(a){I!a.3R},3R:H(a){I a.3R},4J:H(a){I a.4J},2W:H(a){I a.2W||D.1K(a,"2W")},1r:H(a){I"1r"==a.O},5O:H(a){I"5O"==a.O},5L:H(a){I"5L"==a.O},5p:H(a){I"5p"==a.O},3Q:H(a){I"3Q"==a.O},5o:H(a){I"5o"==a.O},6A:H(a){I"6A"==a.O},6z:H(a){I"6z"==a.O},2s:H(a){I"2s"==a.O||D.Y(a,"2s")},4T:H(a){I/4T|2A|6y|2s/i.11(a.Y)},3T:H(a,i,m){I D.2q(m[3],a).K},8t:H(a){I/h\\d/i.11(a.Y)},8s:H(a){I D.3C(D.3O,H(b){I a==b.T}).K}}},6x:[/^(\\[) * ?([\\w-]+) *([!*$^~=]*) *(\'?"?)(.*?)\\4 *\\]/,/^(:)([\\w-]+)\\("?\'?(.*?(\\(.*?\\))?[^(]*?)"?\'?\\)/,
 2B 4v("^([:.#]*)("+C+"+)")],3g:H(a,c,b){J d,1t=[];1B(a&&a!=d){d=a;J f=D.1E(a,c,b);a=f.t.1o(/^\\s*,\\s*/,"");1t=b?c=f.r:D.2R(1t,f.r)}I 1t},2q:H(t,o){G(1j t!="23")I[t];G(o&&o.16!=1&&o.16!=9)I[];o=o||S;J d=[o],2o=[],3S,Y;1B(t&&3S!=t){J r=[];3S=t;t=D.3k(t);J l=Q,3j=6L,m=3j.2D(t);G(m){Y=m[1].2r();R(J i=0;d[i];i++)R(J c=d[i].1x;c;c=c.2H)G(c.16==1&&(Y=="*"||c.Y.2r()==Y))r.1p(c);d=r;t=t.1o(3j,"");G(t.1h(" ")==0)6M;l=M}N{3j=/^([>+~])\\s*(\\w*)/i;G((m=3j.2D(t))!=U){r=[];J k={};Y=m[2].2r();m=m[1];R(J j=0,3i=d.K;j<3i;j++){J n=m=="~"||m=="+"?d[j].2H:d[j].1x;R(;n;n=n.2H)G(n.16==1){J g=D.L(n);G(m=="~"&&k[g])1X;G(!Y||n.Y.2r()==Y){G(m=="~")k[g]=M;r.1p(n)}G(m=="+")1X}}d=r;t=D.3k(t.1o(3j,""));l=M}}G(t&&!l){G(!t.1h(",")){G(o==d[0])d.4s();2o=D.2R(2o,d);r=d=[o];t=" "+t.6v(1,t.K)}N{J h=6J;J m=h.2D(t);G(m){m=[0,m[2],m[3],m[1]]}N{h=6I;m=h.2D(t)}m[2]=m[2].1o(/\\\\/g,"");J f=d[d.K-1];G(m[1]=="#"&&f&&f.61&&!D.4n(f)){J p=f.61(m[2]);G((D.14.1f||D.14.2G)&&p&&1j p.2v=="23"&&p.2v!=m[2])p=D(\'[ 2v="\'+m[2]+\
 '"]\',f)[0];d=r=p&&(!m[3]||D.Y(p,m[3]))?[p]:[]}N{R(J i=0;d[i];i++){J a=m[1]=="#"&&m[3]?m[3]:m[1]!=""||m[0]==""?"*":m[2];G(a=="*"&&d[i].Y.3y()=="49")a="3n";r=D.2R(r,d[i].3H(a))}G(m[1]==".")r=D.5m(r,m[2]);G(m[1]=="#"){J e=[];R(J i=0;r[i];i++)G(r[i].4G("2v")==m[2]){e=[r[i]];1X}r=e}d=r}t=t.1o(h,"")}}G(t){J b=D.1E(t,r);d=r=b.r;t=D.3k(b.t)}}G(t)d=[];G(d&&o==d[0])d.4s();2o=D.2R(2o,d);I 2o},5m:H(r,m,a){m=" "+m+" ";J c=[];R(J i=0;r[i];i++){J b=(" "+r[i].1F+" ").1h(m)>=0;G(!a&&b||a&&!b)c.1p(r[i])}I c},1E:H(t,r,h){J d;1B(t&&t!=d){d=t;J p=D.6x,m;R(J i=0;p[i];i++){m=p[i].2D(t);G(m){t=t.8r(m[0].K);m[2]=m[2].1o(/\\\\/g,"");1X}}G(!m)1X;G(m[1]==":"&&m[2]=="4Y")r=62.11(m[3])?D.1E(m[3],r,M).r:D(r).4Y(m[3]);N G(m[1]==".")r=D.5m(r,m[2],h);N G(m[1]=="["){J g=[],O=m[3];R(J i=0,3i=r.K;i<3i;i++){J a=r[i],z=a[D.3X[m[2]]||m[2]];G(z==U||/5Q|4d|2W/.11(m[2]))z=D.1K(a,m[2])||\'\';G((O==""&&!!z||O=="="&&z==m[5]||O=="!="&&z!=m[5]||O=="^="&&z&&!z.1h(m[5])||O=="$="&&z.6v(z.K-m[5].K)==m[5]||(O=="*="||O=="~=")&
 &z.1h(m[5])>=0)^h)g.1p(a)}r=g}N G(m[1]==":"&&m[2]=="3a-4u"){J e={},g=[],11=/(-?)(\\d*)n((?:\\+|-)?\\d*)/.2D(m[3]=="6D"&&"2n"||m[3]=="6C"&&"2n+1"||!/\\D/.11(m[3])&&"8q+"+m[3]||m[3]),3o=(11[1]+(11[2]||1))-0,d=11[3]-0;R(J i=0,3i=r.K;i<3i;i++){J j=r[i],1d=j.1d,2v=D.L(1d);G(!e[2v]){J c=1;R(J n=1d.1x;n;n=n.2H)G(n.16==1)n.4q=c++;e[2v]=M}J b=Q;G(3o==0){G(j.4q==d)b=M}N G((j.4q-d)%3o==0&&(j.4q-d)/3o>=0)b=M;G(b^h)g.1p(j)}r=g}N{J f=D.6H[m[1]];G(1j f=="49")f=f[m[2]];G(1j f=="23")f=6u("Q||H(a,i){I "+f+";}");r=D.3C(r,H(a,i){I f(a,i,m,r)},h)}}I{r:r,t:t}},4S:H(b,c){J a=[],1t=b[c];1B(1t&&1t!=S){G(1t.16==1)a.1p(1t);1t=1t[c]}I a},3a:H(a,e,c,b){e=e||1;J d=0;R(;a;a=a[c])G(a.16==1&&++d==e)1X;I a},5v:H(n,a){J r=[];R(;n;n=n.2H){G(n.16==1&&n!=a)r.1p(n)}I r}});D.W={1e:H(f,i,g,e){G(f.16==3||f.16==8)I;G(D.14.1f&&f.4I)f=1b;G(!g.24)g.24=7.24++;G(e!=12){J h=g;g=7.3M(h,H(){I h.1w(7,19)});g.L=e}J j=D.L(f,"3w")||D.L(f,"3w",{}),1H=D.L(f,"1H")||D.L(f,"1H",H(){G(1j D!="12"&&!D.W.5k)I D.W.1H.1w(19.3L.T,19)});1H.T
 =f;D.P(i.1R(/\\s+/),H(c,b){J a=b.1R(".");b=a[0];g.O=a[1];J d=j[b];G(!d){d=j[b]={};G(!D.W.2t[b]||D.W.2t[b].4p.1k(f)===Q){G(f.3K)f.3K(b,1H,Q);N G(f.6t)f.6t("4o"+b,1H)}}d[g.24]=g;D.W.26[b]=M});f=U},24:1,26:{},21:H(e,h,f){G(e.16==3||e.16==8)I;J i=D.L(e,"3w"),1L,5i;G(i){G(h==12||(1j h=="23"&&h.8p(0)=="."))R(J g 1n i)7.21(e,g+(h||""));N{G(h.O){f=h.2y;h=h.O}D.P(h.1R(/\\s+/),H(b,a){J c=a.1R(".");a=c[0];G(i[a]){G(f)2U i[a][f.24];N R(f 1n i[a])G(!c[1]||i[a][f].O==c[1])2U i[a][f];R(1L 1n i[a])1X;G(!1L){G(!D.W.2t[a]||D.W.2t[a].4A.1k(e)===Q){G(e.6p)e.6p(a,D.L(e,"1H"),Q);N G(e.6n)e.6n("4o"+a,D.L(e,"1H"))}1L=U;2U i[a]}}})}R(1L 1n i)1X;G(!1L){J d=D.L(e,"1H");G(d)d.T=U;D.3b(e,"3w");D.3b(e,"1H")}}},1P:H(h,c,f,g,i){c=D.2d(c);G(h.1h("!")>=0){h=h.3s(0,-1);J a=M}G(!f){G(7.26[h])D("*").1e([1b,S]).1P(h,c)}N{G(f.16==3||f.16==8)I 12;J b,1L,17=D.1D(f[h]||U),W=!c[0]||!c[0].32;G(W){c.6h({O:h,2J:f,32:H(){},3J:H(){},4C:1z()});c[0][E]=M}c[0].O=h;G(a)c[0].6m=M;J d=D.L(f,"1H");G(d)b=d.1w(f,c);G((!17||(D.Y(f,
 \'a\')&&h=="4V"))&&f["4o"+h]&&f["4o"+h].1w(f,c)===Q)b=Q;G(W)c.4s();G(i&&D.1D(i)){1L=i.1w(f,b==U?c:c.7d(b));G(1L!==12)b=1L}G(17&&g!==Q&&b!==Q&&!(D.Y(f,\'a\')&&h=="4V")){7.5k=M;1U{f[h]()}1V(e){}}7.5k=Q}I b},1H:H(b){J a,1L,38,5f,4m;b=19[0]=D.W.6l(b||1b.W);38=b.O.1R(".");b.O=38[0];38=38[1];5f=!38&&!b.6m;4m=(D.L(7,"3w")||{})[b.O];R(J j 1n 4m){J c=4m[j];G(5f||c.O==38){b.2y=c;b.L=c.L;1L=c.1w(7,19);G(a!==Q)a=1L;G(1L===Q){b.32();b.3J()}}}I a},6l:H(b){G(b[E]==M)I b;J d=b;b={8o:d};J c="8n 8m 8l 8k 2s 8j 47 5d 6j 5E 8i L 8h 8g 4K 2y 5a 59 8e 8b 58 6f 8a 88 4k 87 86 84 6d 2J 4C 6c O 82 81 35".1R(" ");R(J i=c.K;i;i--)b[c[i]]=d[c[i]];b[E]=M;b.32=H(){G(d.32)d.32();d.80=Q};b.3J=H(){G(d.3J)d.3J();d.7Z=M};b.4C=b.4C||1z();G(!b.2J)b.2J=b.6d||S;G(b.2J.16==3)b.2J=b.2J.1d;G(!b.4k&&b.4K)b.4k=b.4K==b.2J?b.6c:b.4K;G(b.58==U&&b.5d!=U){J a=S.1C,1c=S.1c;b.58=b.5d+(a&&a.2e||1c&&1c.2e||0)-(a.6b||0);b.6f=b.6j+(a&&a.2c||1c&&1c.2c||0)-(a.6a||0)}G(!b.35&&((b.47||b.47===0)?b.47:b.5a))b.35=b.47||b.5a;G(!b.59&&b.
 5E)b.59=b.5E;G(!b.35&&b.2s)b.35=(b.2s&1?1:(b.2s&2?3:(b.2s&4?2:0)));I b},3M:H(a,b){b.24=a.24=a.24||b.24||7.24++;I b},2t:{27:{4p:H(){55();I},4A:H(){I}},3D:{4p:H(){G(D.14.1f)I Q;D(7).2O("53",D.W.2t.3D.2y);I M},4A:H(){G(D.14.1f)I Q;D(7).4e("53",D.W.2t.3D.2y);I M},2y:H(a){G(F(a,7))I M;a.O="3D";I D.W.1H.1w(7,19)}},3N:{4p:H(){G(D.14.1f)I Q;D(7).2O("51",D.W.2t.3N.2y);I M},4A:H(){G(D.14.1f)I Q;D(7).4e("51",D.W.2t.3N.2y);I M},2y:H(a){G(F(a,7))I M;a.O="3N";I D.W.1H.1w(7,19)}}}};D.17.1l({2O:H(c,a,b){I c=="4X"?7.2V(c,a,b):7.P(H(){D.W.1e(7,c,b||a,b&&a)})},2V:H(d,b,c){J e=D.W.3M(c||b,H(a){D(7).4e(a,e);I(c||b).1w(7,19)});I 7.P(H(){D.W.1e(7,d,e,c&&b)})},4e:H(a,b){I 7.P(H(){D.W.21(7,a,b)})},1P:H(c,a,b){I 7.P(H(){D.W.1P(c,a,7,M,b)})},5C:H(c,a,b){I 7[0]&&D.W.1P(c,a,7[0],Q,b)},2m:H(b){J c=19,i=1;1B(i<c.K)D.W.3M(b,c[i++]);I 7.4V(D.W.3M(b,H(a){7.4Z=(7.4Z||0)%i;a.32();I c[7.4Z++].1w(7,19)||Q}))},7X:H(a,b){I 7.2O(\'3D\',a).2O(\'3N\',b)},27:H(a){55();G(D.2Q)a.1k(S,D);N D.3A.1p(H(){I a.1k(7,D)});I 7}}
 );D.1l({2Q:Q,3A:[],27:H(){G(!D.2Q){D.2Q=M;G(D.3A){D.P(D.3A,H(){7.1k(S)});D.3A=U}D(S).5C("27")}}});J x=Q;H 55(){G(x)I;x=M;G(S.3K&&!D.14.2G)S.3K("69",D.27,Q);G(D.14.1f&&1b==1S)(H(){G(D.2Q)I;1U{S.1C.7V("1A")}1V(3e){3B(19.3L,0);I}D.27()})();G(D.14.2G)S.3K("69",H(){G(D.2Q)I;R(J i=0;i<S.4W.K;i++)G(S.4W[i].3R){3B(19.3L,0);I}D.27()},Q);G(D.14.2k){J a;(H(){G(D.2Q)I;G(S.3f!="68"&&S.3f!="1J"){3B(19.3L,0);I}G(a===12)a=D("V, 7A[7U=7S]").K;G(S.4W.K!=a){3B(19.3L,0);I}D.27()})()}D.W.1e(1b,"43",D.27)}D.P(("7R,7Q,43,85,4y,4X,4V,7P,"+"7O,7N,89,53,51,7M,2A,"+"5o,7L,7K,8d,3e").1R(","),H(i,b){D.17[b]=H(a){I a?7.2O(b,a):7.1P(b)}});J F=H(a,c){J b=a.4k;1B(b&&b!=c)1U{b=b.1d}1V(3e){b=c}I b==c};D(1b).2O("4X",H(){D("*").1e(S).4e()});D.17.1l({67:D.17.43,43:H(g,d,c){G(1j g!=\'23\')I 7.67(g);J e=g.1h(" ");G(e>=0){J i=g.3s(e,g.K);g=g.3s(0,e)}c=c||H(){};J f="2P";G(d)G(D.1D(d)){c=d;d=U}N{d=D.3n(d);f="6g"}J h=7;D.3Y({1a:g,O:f,1O:"2K",L:d,1J:H(a,b){G(b=="1W"||b=="7J")h.2K(i?D("<1v/>").3v(a.4U.1o(/<1m(.|\\s)*?\\
 /1m>/g,"")).2q(i):a.4U);h.P(c,[a.4U,b,a])}});I 7},aL:H(){I D.3n(7.7I())},7I:H(){I 7.2l(H(){I D.Y(7,"3V")?D.2d(7.aH):7}).1E(H(){I 7.34&&!7.3R&&(7.4J||/2A|6y/i.11(7.Y)||/1r|1G|3Q/i.11(7.O))}).2l(H(i,c){J b=D(7).6e();I b==U?U:b.1q==2p?D.2l(b,H(a,i){I{34:c.34,2x:a}}):{34:c.34,2x:b}}).3p()}});D.P("7H,7G,7F,7D,7C,7B".1R(","),H(i,o){D.17[o]=H(f){I 7.2O(o,f)}});J B=1z();D.1l({3p:H(d,b,a,c){G(D.1D(b)){a=b;b=U}I D.3Y({O:"2P",1a:d,L:b,1W:a,1O:c})},aE:H(b,a){I D.3p(b,U,a,"1m")},aD:H(c,b,a){I D.3p(c,b,a,"3z")},aC:H(d,b,a,c){G(D.1D(b)){a=b;b={}}I D.3Y({O:"6g",1a:d,L:b,1W:a,1O:c})},aA:H(a){D.1l(D.60,a)},60:{1a:5Z.5Q,26:M,O:"2P",2T:0,7z:"4R/x-ax-3V-aw",7x:M,31:M,L:U,5Y:U,3Q:U,4Q:{2N:"4R/2N, 1r/2N",2K:"1r/2K",1m:"1r/4t, 4R/4t",3z:"4R/3z, 1r/4t",1r:"1r/as",4w:"*/*"}},4z:{},3Y:H(s){s=D.1l(M,s,D.1l(M,{},D.60,s));J g,2Z=/=\\?(&|$)/g,1u,L,O=s.O.2r();G(s.L&&s.7x&&1j s.L!="23")s.L=D.3n(s.L);G(s.1O=="4P"){G(O=="2P"){G(!s.1a.1I(2Z))s.1a+=(s.1a.1I(/\\?/)?"&":"?")+(s.4P||"7u")+"=?"}N G(!s.L||!s.L.1I(2Z
 ))s.L=(s.L?s.L+"&":"")+(s.4P||"7u")+"=?";s.1O="3z"}G(s.1O=="3z"&&(s.L&&s.L.1I(2Z)||s.1a.1I(2Z))){g="4P"+B++;G(s.L)s.L=(s.L+"").1o(2Z,"="+g+"$1");s.1a=s.1a.1o(2Z,"="+g+"$1");s.1O="1m";1b[g]=H(a){L=a;1W();1J();1b[g]=12;1U{2U 1b[g]}1V(e){}G(i)i.37(h)}}G(s.1O=="1m"&&s.1Y==U)s.1Y=Q;G(s.1Y===Q&&O=="2P"){J j=1z();J k=s.1a.1o(/(\\?|&)3m=.*?(&|$)/,"$ap="+j+"$2");s.1a=k+((k==s.1a)?(s.1a.1I(/\\?/)?"&":"?")+"3m="+j:"")}G(s.L&&O=="2P"){s.1a+=(s.1a.1I(/\\?/)?"&":"?")+s.L;s.L=U}G(s.26&&!D.4O++)D.W.1P("7H");J n=/^(?:\\w+:)?\\/\\/([^\\/?#]+)/;G(s.1O=="1m"&&O=="2P"&&n.11(s.1a)&&n.2D(s.1a)[1]!=5Z.al){J i=S.3H("6w")[0];J h=S.3h("1m");h.4d=s.1a;G(s.7t)h.aj=s.7t;G(!g){J l=Q;h.ah=h.ag=H(){G(!l&&(!7.3f||7.3f=="68"||7.3f=="1J")){l=M;1W();1J();i.37(h)}}}i.3U(h);I 12}J m=Q;J c=1b.7s?2B 7s("ae.ac"):2B 7r();G(s.5Y)c.6R(O,s.1a,s.31,s.5Y,s.3Q);N c.6R(O,s.1a,s.31);1U{G(s.L)c.4B("ab-aa",s.7z);G(s.5S)c.4B("a9-5R-a8",D.4z[s.1a]||"a7, a6 a5 a4 5N:5N:5N a2");c.4B("X-9Z-9Y","7r");c.4B("9W",s.1O&&s.4Q[s.1O]?s.4Q[
 s.1O]+", */*":s.4Q.4w)}1V(e){}G(s.7m&&s.7m(c,s)===Q){s.26&&D.4O--;c.7l();I Q}G(s.26)D.W.1P("7B",[c,s]);J d=H(a){G(!m&&c&&(c.3f==4||a=="2T")){m=M;G(f){7k(f);f=U}1u=a=="2T"&&"2T"||!D.7j(c)&&"3e"||s.5S&&D.7h(c,s.1a)&&"7J"||"1W";G(1u=="1W"){1U{L=D.6X(c,s.1O,s.9S)}1V(e){1u="5J"}}G(1u=="1W"){J b;1U{b=c.5I("7g-5R")}1V(e){}G(s.5S&&b)D.4z[s.1a]=b;G(!g)1W()}N D.5H(s,c,1u);1J();G(s.31)c=U}};G(s.31){J f=4I(d,13);G(s.2T>0)3B(H(){G(c){c.7l();G(!m)d("2T")}},s.2T)}1U{c.9P(s.L)}1V(e){D.5H(s,c,U,e)}G(!s.31)d();H 1W(){G(s.1W)s.1W(L,1u);G(s.26)D.W.1P("7C",[c,s])}H 1J(){G(s.1J)s.1J(c,1u);G(s.26)D.W.1P("7F",[c,s]);G(s.26&&!--D.4O)D.W.1P("7G")}I c},5H:H(s,a,b,e){G(s.3e)s.3e(a,b,e);G(s.26)D.W.1P("7D",[a,s,e])},4O:0,7j:H(a){1U{I!a.1u&&5Z.9O=="5p:"||(a.1u>=7e&&a.1u<9N)||a.1u==7c||a.1u==9K||D.14.2k&&a.1u==12}1V(e){}I Q},7h:H(a,c){1U{J b=a.5I("7g-5R");I a.1u==7c||b==D.4z[c]||D.14.2k&&a.1u==12}1V(e){}I Q},6X:H(a,c,b){J d=a.5I("9J-O"),2N=c=="2N"||!c&&d&&d.1h("2N")>=0,L=2N?a.9I:a.4U;G(2N&&L.1C.2j=="5J")7p
 "5J";G(b)L=b(L,c);G(c=="1m")D.5u(L);G(c=="3z")L=6u("("+L+")");I L},3n:H(a){J s=[];G(a.1q==2p||a.5w)D.P(a,H(){s.1p(3u(7.34)+"="+3u(7.2x))});N R(J j 1n a)G(a[j]&&a[j].1q==2p)D.P(a[j],H(){s.1p(3u(j)+"="+3u(7))});N s.1p(3u(j)+"="+3u(D.1D(a[j])?a[j]():a[j]));I s.6s("&").1o(/%20/g,"+")}});D.17.1l({1N:H(c,b){I c?7.2g({1Z:"1N",2h:"1N",1y:"1N"},c,b):7.1E(":1G").P(H(){7.V.18=7.5D||"";G(D.1g(7,"18")=="2F"){J a=D("<"+7.2j+" />").6P("1c");7.V.18=a.1g("18");G(7.V.18=="2F")7.V.18="3I";a.21()}}).3l()},1M:H(b,a){I b?7.2g({1Z:"1M",2h:"1M",1y:"1M"},b,a):7.1E(":4j").P(H(){7.5D=7.5D||D.1g(7,"18");7.V.18="2F"}).3l()},78:D.17.2m,2m:H(a,b){I D.1D(a)&&D.1D(b)?7.78.1w(7,19):a?7.2g({1Z:"2m",2h:"2m",1y:"2m"},a,b):7.P(H(){D(7)[D(7).3F(":1G")?"1N":"1M"]()})},9G:H(b,a){I 7.2g({1Z:"1N"},b,a)},9F:H(b,a){I 7.2g({1Z:"1M"},b,a)},9E:H(b,a){I 7.2g({1Z:"2m"},b,a)},9D:H(b,a){I 7.2g({1y:"1N"},b,a)},9M:H(b,a){I 7.2g({1y:"1M"},b,a)},9C:H(c,a,b){I 7.2g({1y:a},c,b)},2g:H(k,j,i,g){J h=D.77(j,i,g);I 7[h.36===Q?"P":"36"](
 H(){G(7.16!=1)I Q;J f=D.1l({},h),p,1G=D(7).3F(":1G"),46=7;R(p 1n k){G(k[p]=="1M"&&1G||k[p]=="1N"&&!1G)I f.1J.1k(7);G(p=="1Z"||p=="2h"){f.18=D.1g(7,"18");f.33=7.V.33}}G(f.33!=U)7.V.33="1G";f.45=D.1l({},k);D.P(k,H(c,a){J e=2B D.28(46,f,c);G(/2m|1N|1M/.11(a))e[a=="2m"?1G?"1N":"1M":a](k);N{J b=a.6r().1I(/^([+-]=)?([\\d+-.]+)(.*)$/),2b=e.1t(M)||0;G(b){J d=3d(b[2]),2M=b[3]||"2X";G(2M!="2X"){46.V[c]=(d||1)+2M;2b=((d||1)/e.1t(M))*2b;46.V[c]=2b+2M}G(b[1])d=((b[1]=="-="?-1:1)*d)+2b;e.3G(2b,d,2M)}N e.3G(2b,a,"")}});I M})},36:H(a,b){G(D.1D(a)||(a&&a.1q==2p)){b=a;a="28"}G(!a||(1j a=="23"&&!b))I A(7[0],a);I 7.P(H(){G(b.1q==2p)A(7,a,b);N{A(7,a).1p(b);G(A(7,a).K==1)b.1k(7)}})},9X:H(b,c){J a=D.3O;G(b)7.36([]);7.P(H(){R(J i=a.K-1;i>=0;i--)G(a[i].T==7){G(c)a[i](M);a.7n(i,1)}});G(!c)7.5A();I 7}});J A=H(b,c,a){G(b){c=c||"28";J q=D.L(b,c+"36");G(!q||a)q=D.L(b,c+"36",D.2d(a))}I q};D.17.5A=H(a){a=a||"28";I 7.P(H(){J q=A(7,a);q.4s();G(q.K)q[0].1k(7)})};D.1l({77:H(b,a,c){J d=b&&b.1q==a0?b:{1J:c||!c&&
 a||D.1D(b)&&b,2u:b,41:c&&a||a&&a.1q!=9t&&a};d.2u=(d.2u&&d.2u.1q==4L?d.2u:D.28.5K[d.2u])||D.28.5K.74;d.5M=d.1J;d.1J=H(){G(d.36!==Q)D(7).5A();G(D.1D(d.5M))d.5M.1k(7)};I d},41:{73:H(p,n,b,a){I b+a*p},5P:H(p,n,b,a){I((-29.9r(p*29.9q)/2)+0.5)*a+b}},3O:[],48:U,28:H(b,c,a){7.15=c;7.T=b;7.1i=a;G(!c.3Z)c.3Z={}}});D.28.44={4D:H(){G(7.15.2Y)7.15.2Y.1k(7.T,7.1z,7);(D.28.2Y[7.1i]||D.28.2Y.4w)(7);G(7.1i=="1Z"||7.1i=="2h")7.T.V.18="3I"},1t:H(a){G(7.T[7.1i]!=U&&7.T.V[7.1i]==U)I 7.T[7.1i];J r=3d(D.1g(7.T,7.1i,a));I r&&r>-9p?r:3d(D.2a(7.T,7.1i))||0},3G:H(c,b,d){7.5V=1z();7.2b=c;7.3l=b;7.2M=d||7.2M||"2X";7.1z=7.2b;7.2S=7.4N=0;7.4D();J e=7;H t(a){I e.2Y(a)}t.T=7.T;D.3O.1p(t);G(D.48==U){D.48=4I(H(){J a=D.3O;R(J i=0;i<a.K;i++)G(!a[i]())a.7n(i--,1);G(!a.K){7k(D.48);D.48=U}},13)}},1N:H(){7.15.3Z[7.1i]=D.1K(7.T.V,7.1i);7.15.1N=M;7.3G(0,7.1t());G(7.1i=="2h"||7.1i=="1Z")7.T.V[7.1i]="9m";D(7.T).1N()},1M:H(){7.15.3Z[7.1i]=D.1K(7.T.V,7.1i);7.15.1M=M;7.3G(7.1t(),0)},2Y:H(a){J t=1z();G(a||t>7.15.2u+7.5V){7
 .1z=7.3l;7.2S=7.4N=1;7.4D();7.15.45[7.1i]=M;J b=M;R(J i 1n 7.15.45)G(7.15.45[i]!==M)b=Q;G(b){G(7.15.18!=U){7.T.V.33=7.15.33;7.T.V.18=7.15.18;G(D.1g(7.T,"18")=="2F")7.T.V.18="3I"}G(7.15.1M)7.T.V.18="2F";G(7.15.1M||7.15.1N)R(J p 1n 7.15.45)D.1K(7.T.V,p,7.15.3Z[p])}G(b)7.15.1J.1k(7.T);I Q}N{J n=t-7.5V;7.4N=n/7.15.2u;7.2S=D.41[7.15.41||(D.41.5P?"5P":"73")](7.4N,n,0,1,7.15.2u);7.1z=7.2b+((7.3l-7.2b)*7.2S);7.4D()}I M}};D.1l(D.28,{5K:{9l:9j,9i:7e,74:9g},2Y:{2e:H(a){a.T.2e=a.1z},2c:H(a){a.T.2c=a.1z},1y:H(a){D.1K(a.T.V,"1y",a.1z)},4w:H(a){a.T.V[a.1i]=a.1z+a.2M}}});D.17.2i=H(){J b=0,1S=0,T=7[0],3q;G(T)ao(D.14){J d=T.1d,4a=T,1s=T.1s,1Q=T.2z,5U=2k&&3r(5B)<9c&&!/9a/i.11(v),1g=D.2a,3c=1g(T,"30")=="3c";G(T.7y){J c=T.7y();1e(c.1A+29.2f(1Q.1C.2e,1Q.1c.2e),c.1S+29.2f(1Q.1C.2c,1Q.1c.2c));1e(-1Q.1C.6b,-1Q.1C.6a)}N{1e(T.5X,T.5W);1B(1s){1e(1s.5X,1s.5W);G(42&&!/^t(98|d|h)$/i.11(1s.2j)||2k&&!5U)2C(1s);G(!3c&&1g(1s,"30")=="3c")3c=M;4a=/^1c$/i.11(1s.2j)?4a:1s;1s=1s.1s}1B(d&&d.2j&&!/^1c|2K$/i.11(d.2j)
 ){G(!/^96|1T.*$/i.11(1g(d,"18")))1e(-d.2e,-d.2c);G(42&&1g(d,"33")!="4j")2C(d);d=d.1d}G((5U&&(3c||1g(4a,"30")=="5x"))||(42&&1g(4a,"30")!="5x"))1e(-1Q.1c.5X,-1Q.1c.5W);G(3c)1e(29.2f(1Q.1C.2e,1Q.1c.2e),29.2f(1Q.1C.2c,1Q.1c.2c))}3q={1S:1S,1A:b}}H 2C(a){1e(D.2a(a,"6V",M),D.2a(a,"6U",M))}H 1e(l,t){b+=3r(l,10)||0;1S+=3r(t,10)||0}I 3q};D.17.1l({30:H(){J a=0,1S=0,3q;G(7[0]){J b=7.1s(),2i=7.2i(),4c=/^1c|2K$/i.11(b[0].2j)?{1S:0,1A:0}:b.2i();2i.1S-=25(7,\'94\');2i.1A-=25(7,\'aF\');4c.1S+=25(b,\'6U\');4c.1A+=25(b,\'6V\');3q={1S:2i.1S-4c.1S,1A:2i.1A-4c.1A}}I 3q},1s:H(){J a=7[0].1s;1B(a&&(!/^1c|2K$/i.11(a.2j)&&D.1g(a,\'30\')==\'93\'))a=a.1s;I D(a)}});D.P([\'5e\',\'5G\'],H(i,b){J c=\'4y\'+b;D.17[c]=H(a){G(!7[0])I;I a!=12?7.P(H(){7==1b||7==S?1b.92(!i?a:D(1b).2e(),i?a:D(1b).2c()):7[c]=a}):7[0]==1b||7[0]==S?46[i?\'aI\':\'aJ\']||D.71&&S.1C[c]||S.1c[c]:7[0][c]}});D.P(["6N","4b"],H(i,b){J c=i?"5e":"5G",4f=i?"6k":"6i";D.17["5s"+b]=H(){I 7[b.3y()]()+25(7,"57"+c)+25(7,"57"+4f)};D.17["90"+b]=H(a){I 7
 ["5s"+b]()+25(7,"2C"+c+"4b")+25(7,"2C"+4f+"4b")+(a?25(7,"6S"+c)+25(7,"6S"+4f):0)}})})();',62,669,'|||||||this|||||||||||||||||||||||||||||||||||if|function|return|var|length|data|true|else|type|each|false|for|document|elem|null|style|event||nodeName|||test|undefined||browser|options|nodeType|fn|display|arguments|url|window|body|parentNode|add|msie|css|indexOf|prop|typeof|call|extend|script|in|replace|push|constructor|text|offsetParent|cur|status|div|apply|firstChild|opacity|now|left|while|documentElement|isFunction|filter|className|hidden|handle|match|complete|attr|ret|hide|show|dataType|trigger|doc|split|top|table|try|catch|success|break|cache|height||remove|tbody|string|guid|num|global|ready|fx|Math|curCSS|start|scrollTop|makeArray|scrollLeft|max|animate|width|offset|tagName|safari|map|toggle||done|Array|find|toUpperCase|button|special|duration|id|copy|value|handler|ownerDocument|select|new|border|exec|stack|none|opera|nextSibling|pushStack|target|html|inArray|unit|xml|bin
 d|GET|isReady|merge|pos|timeout|delete|one|selected|px|step|jsre|position|async|preventDefault|overflow|name|which|queue|removeChild|namespace|insertBefore|nth|removeData|fixed|parseFloat|error|readyState|multiFilter|createElement|rl|re|trim|end|_|param|first|get|results|parseInt|slice|childNodes|encodeURIComponent|append|events|elems|toLowerCase|json|readyList|setTimeout|grep|mouseenter|color|is|custom|getElementsByTagName|block|stopPropagation|addEventListener|callee|proxy|mouseleave|timers|defaultView|password|disabled|last|has|appendChild|form|domManip|props|ajax|orig|set|easing|mozilla|load|prototype|curAnim|self|charCode|timerId|object|offsetChild|Width|parentOffset|src|unbind|br|currentStyle|clean|float|visible|relatedTarget|previousSibling|handlers|isXMLDoc|on|setup|nodeIndex|unique|shift|javascript|child|RegExp|_default|deep|scroll|lastModified|teardown|setRequestHeader|timeStamp|update|empty|tr|getAttribute|innerHTML|setInterval|checked|fromElement|Number|jQuery|st
 ate|active|jsonp|accepts|application|dir|input|responseText|click|styleSheets|unload|not|lastToggle|outline|mouseout|getPropertyValue|mouseover|getComputedStyle|bindReady|String|padding|pageX|metaKey|keyCode|getWH|andSelf|clientX|Left|all|visibility|container|index|init|triggered|removeAttribute|classFilter|prevObject|submit|file|after|windowData|inner|client|globalEval|sibling|jquery|absolute|clone|wrapAll|dequeue|version|triggerHandler|oldblock|ctrlKey|createTextNode|Top|handleError|getResponseHeader|parsererror|speeds|checkbox|old|00|radio|swing|href|Modified|ifModified|lastChild|safari2|startTime|offsetTop|offsetLeft|username|location|ajaxSettings|getElementById|isSimple|values|selectedIndex|runtimeStyle|rsLeft|_load|loaded|DOMContentLoaded|clientTop|clientLeft|toElement|srcElement|val|pageY|POST|unshift|Bottom|clientY|Right|fix|exclusive|detachEvent|cloneNode|removeEventListener|swap|toString|join|attachEvent|eval|substr|head|parse|textarea|reset|image|zoom|odd|even|bef
 ore|prepend|exclude|expr|quickClass|quickID|uuid|quickChild|continue|Height|textContent|appendTo|contents|open|margin|evalScript|borderTopWidth|borderLeftWidth|parent|httpData|setArray|CSS1Compat|compatMode|boxModel|cssFloat|linear|def|webkit|nodeValue|speed|_toggle|eq|100|replaceWith|304|concat|200|alpha|Last|httpNotModified|getAttributeNode|httpSuccess|clearInterval|abort|beforeSend|splice|styleFloat|throw|colgroup|XMLHttpRequest|ActiveXObject|scriptCharset|callback|fieldset|multiple|processData|getBoundingClientRect|contentType|link|ajaxSend|ajaxSuccess|ajaxError|col|ajaxComplete|ajaxStop|ajaxStart|serializeArray|notmodified|keypress|keydown|change|mouseup|mousedown|dblclick|focus|blur|stylesheet|hasClass|rel|doScroll|black|hover|solid|cancelBubble|returnValue|wheelDelta|view|round|shiftKey|resize|screenY|screenX|relatedNode|mousemove|prevValue|originalTarget|offsetHeight|keyup|newValue|offsetWidth|eventPhase|detail|currentTarget|cancelable|bubbles|attrName|attrChange|alt
 Key|originalEvent|charAt|0n|substring|animated|header|noConflict|line|enabled|innerText|contains|only|weight|font|gt|lt|uFFFF|u0128|size|417|Boolean|Date|toggleClass|removeClass|addClass|removeAttr|replaceAll|insertAfter|prependTo|wrap|contentWindow|contentDocument|iframe|children|siblings|prevAll|wrapInner|nextAll|outer|prev|scrollTo|static|marginTop|next|inline|parents|able|cellSpacing|adobeair|cellspacing|522|maxLength|maxlength|readOnly|400|readonly|fast|600|class|slow|1px|htmlFor|reverse|10000|PI|cos|compatible|Function|setData|ie|ra|it|rv|getData|userAgent|navigator|fadeTo|fadeIn|slideToggle|slideUp|slideDown|ig|responseXML|content|1223|NaN|fadeOut|300|protocol|send|setAttribute|option|dataFilter|cssText|changed|be|Accept|stop|With|Requested|Object|can|GMT|property|1970|Jan|01|Thu|Since|If|Type|Content|XMLHTTP|th|Microsoft|td|onreadystatechange|onload|cap|charset|colg|host|tfoot|specified|with|1_|thead|leg|plain|attributes|opt|embed|urlencoded|www|area|hr|ajaxSetup|met
 a|post|getJSON|getScript|marginLeft|img|elements|pageYOffset|pageXOffset|abbr|serialize|pixelLeft'.split('|'),0,{}))
\ No newline at end of file

Modified: trunk/tools/mouseirb_2.js
==============================================================================
--- trunk/tools/mouseirb_2.js	(original)
+++ trunk/tools/mouseirb_2.js	Mon Jan  5 20:02:44 2009
@@ -91,7 +91,19 @@
             } else {
               str = str.replace(new RegExp("(^|\\n)= (.+?) ="), "$1\033[1;33m$2\033[m");
             }
-            this.write(str);
+	    if (str.search(/^</) != -1) {
+		    var irbdiv = $("#irb");
+		    this.cursorOff();
+		    var table = $("<div class=\"tcontents\">"+str+"</div>");
+		    irbdiv.append(table);
+		    table.resizable({"autoHide":true, "knobHandles":true});
+		    table.dblclick(function() {table.hide("slide");});
+			       
+		    this.advanceLine();
+		    this.cursorOn();
+	    }
+            else
+	      this.write(str);
 	    if (prompt) {
 		    var trimmed = prompt.replace(/^\s+|\s+$/g, '') ;
 		    this.options.ps = "\033[1;31m" + trimmed + "\033[m";
@@ -139,5 +151,4 @@
             this.prompt();
         }
     }
-});
-
+});
\ No newline at end of file

Modified: trunk/tools/web-server.c
==============================================================================
--- trunk/tools/web-server.c	(original)
+++ trunk/tools/web-server.c	Mon Jan  5 20:02:44 2009
@@ -1,7 +1,6 @@
-
 /* web-server.c
  *
- * Copyright (C) 2008 Vivien Malerba
+ * Copyright (C) 2008 - 2009 Vivien Malerba
  *
  * This Library is free software; you can redistribute it and/or
  * modify it under the terms of the GNU Library General Public License as
@@ -787,6 +786,10 @@
 
 	node = xmlNewChild (hdoc->head, NULL, BAD_CAST "script", BAD_CAST "");
 	xmlSetProp (node, BAD_CAST "type", BAD_CAST "text/javascript");
+	xmlSetProp (node, BAD_CAST "src", BAD_CAST "/jquery-ui.js");
+
+	node = xmlNewChild (hdoc->head, NULL, BAD_CAST "script", BAD_CAST "");
+	xmlSetProp (node, BAD_CAST "type", BAD_CAST "text/javascript");
 	xmlSetProp (node, BAD_CAST "src", BAD_CAST "/mouseapp_2.js");
 
 	node = xmlNewChild (hdoc->head, NULL, BAD_CAST "script", BAD_CAST "");



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]