From c32172e75836cb557a1920697cd1768b62d28f80 Mon Sep 17 00:00:00 2001 From: Johan Euphrosine Date: Thu, 31 Oct 2013 14:30:00 -0700 Subject: [PATCH 01/20] eg: add tryhy --- eg/tryhy/.gitignore | 1 + eg/tryhy/app.yaml | 23 + eg/tryhy/appengine_config.py | 3 + eg/tryhy/css/style.css | 19 + eg/tryhy/index.html | 14 + eg/tryhy/js/jquery-1.4.2.min.js | 154 +++++++ eg/tryhy/js/jquery.console.js | 721 ++++++++++++++++++++++++++++++++ eg/tryhy/js/repl.js | 17 + eg/tryhy/main.hy | 21 + eg/tryhy/main.py | 2 + eg/tryhy/requirements.txt | 2 + 11 files changed, 977 insertions(+) create mode 100644 eg/tryhy/.gitignore create mode 100644 eg/tryhy/app.yaml create mode 100644 eg/tryhy/appengine_config.py create mode 100644 eg/tryhy/css/style.css create mode 100644 eg/tryhy/index.html create mode 100644 eg/tryhy/js/jquery-1.4.2.min.js create mode 100644 eg/tryhy/js/jquery.console.js create mode 100644 eg/tryhy/js/repl.js create mode 100644 eg/tryhy/main.hy create mode 100644 eg/tryhy/main.py create mode 100644 eg/tryhy/requirements.txt diff --git a/eg/tryhy/.gitignore b/eg/tryhy/.gitignore new file mode 100644 index 0000000..0a764a4 --- /dev/null +++ b/eg/tryhy/.gitignore @@ -0,0 +1 @@ +env diff --git a/eg/tryhy/app.yaml b/eg/tryhy/app.yaml new file mode 100644 index 0000000..88ad3f5 --- /dev/null +++ b/eg/tryhy/app.yaml @@ -0,0 +1,23 @@ +application: tryhy +version: 1 +runtime: python27 +api_version: 1 +threadsafe: yes + +handlers: +- url: /favicon\.ico + static_files: favicon.ico + upload: favicon\.ico + +- url: / + static_files: index.html + upload: index\.html + +- url: /js + static_dir: js + +- url: /css + static_dir: css + +- url: .* + script: main.__hymain__.app diff --git a/eg/tryhy/appengine_config.py b/eg/tryhy/appengine_config.py new file mode 100644 index 0000000..7b2bb42 --- /dev/null +++ b/eg/tryhy/appengine_config.py @@ -0,0 +1,3 @@ +import os.path +import sys +sys.path.insert(0, os.path.abspath('env')) diff --git a/eg/tryhy/css/style.css b/eg/tryhy/css/style.css new file mode 100644 index 0000000..917190e --- /dev/null +++ b/eg/tryhy/css/style.css @@ -0,0 +1,19 @@ +div.console { word-wrap: break-word; } +div.console { font-size: 14px } +div.console div.jquery-console-inner +{ width:900px; height:200px; background:#333; padding:0.5em; + overflow:auto } +div.console div.jquery-console-prompt-box +{ color:#fff; font-family:monospace; } +div.console div.jquery-console-focus span.jquery-console-cursor +{ background:#fefefe; color:#333; font-weight:bold } +div.console div.jquery-console-message-error +{ color:#ef0505; font-family:sans-serif; font-weight:bold; + padding:0.1em; } +div.console div.jquery-console-message-value +{ color:#1ad027; font-family:monospace; + padding:0.1em; } +div.console div.jquery-console-message-type +{ color:#52666f; font-family:monospace; + padding:0.1em; } +div.console span.jquery-console-prompt-label { font-weight:bold } diff --git a/eg/tryhy/index.html b/eg/tryhy/index.html new file mode 100644 index 0000000..3a5309f --- /dev/null +++ b/eg/tryhy/index.html @@ -0,0 +1,14 @@ + + + + JQuery Console Demo + + + + + + + +
+ + diff --git a/eg/tryhy/js/jquery-1.4.2.min.js b/eg/tryhy/js/jquery-1.4.2.min.js new file mode 100644 index 0000000..7c24308 --- /dev/null +++ b/eg/tryhy/js/jquery-1.4.2.min.js @@ -0,0 +1,154 @@ +/*! + * jQuery JavaScript Library v1.4.2 + * http://jquery.com/ + * + * Copyright 2010, John Resig + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * Includes Sizzle.js + * http://sizzlejs.com/ + * Copyright 2010, The Dojo Foundation + * Released under the MIT, BSD, and GPL Licenses. + * + * Date: Sat Feb 13 22:33:48 2010 -0500 + */ +(function(A,w){function ma(){if(!c.isReady){try{s.documentElement.doScroll("left")}catch(a){setTimeout(ma,1);return}c.ready()}}function Qa(a,b){b.src?c.ajax({url:b.src,async:false,dataType:"script"}):c.globalEval(b.text||b.textContent||b.innerHTML||"");b.parentNode&&b.parentNode.removeChild(b)}function X(a,b,d,f,e,j){var i=a.length;if(typeof b==="object"){for(var o in b)X(a,o,b[o],f,e,d);return a}if(d!==w){f=!j&&f&&c.isFunction(d);for(o=0;o)[^>]*$|^#([\w-]+)$/,Ua=/^.[^:#\[\.,]*$/,Va=/\S/, +Wa=/^(\s|\u00A0)+|(\s|\u00A0)+$/g,Xa=/^<(\w+)\s*\/?>(?:<\/\1>)?$/,P=navigator.userAgent,xa=false,Q=[],L,$=Object.prototype.toString,aa=Object.prototype.hasOwnProperty,ba=Array.prototype.push,R=Array.prototype.slice,ya=Array.prototype.indexOf;c.fn=c.prototype={init:function(a,b){var d,f;if(!a)return this;if(a.nodeType){this.context=this[0]=a;this.length=1;return this}if(a==="body"&&!b){this.context=s;this[0]=s.body;this.selector="body";this.length=1;return this}if(typeof a==="string")if((d=Ta.exec(a))&& +(d[1]||!b))if(d[1]){f=b?b.ownerDocument||b:s;if(a=Xa.exec(a))if(c.isPlainObject(b)){a=[s.createElement(a[1])];c.fn.attr.call(a,b,true)}else a=[f.createElement(a[1])];else{a=sa([d[1]],[f]);a=(a.cacheable?a.fragment.cloneNode(true):a.fragment).childNodes}return c.merge(this,a)}else{if(b=s.getElementById(d[2])){if(b.id!==d[2])return T.find(a);this.length=1;this[0]=b}this.context=s;this.selector=a;return this}else if(!b&&/^\w+$/.test(a)){this.selector=a;this.context=s;a=s.getElementsByTagName(a);return c.merge(this, +a)}else return!b||b.jquery?(b||T).find(a):c(b).find(a);else if(c.isFunction(a))return T.ready(a);if(a.selector!==w){this.selector=a.selector;this.context=a.context}return c.makeArray(a,this)},selector:"",jquery:"1.4.2",length:0,size:function(){return this.length},toArray:function(){return R.call(this,0)},get:function(a){return a==null?this.toArray():a<0?this.slice(a)[0]:this[a]},pushStack:function(a,b,d){var f=c();c.isArray(a)?ba.apply(f,a):c.merge(f,a);f.prevObject=this;f.context=this.context;if(b=== +"find")f.selector=this.selector+(this.selector?" ":"")+d;else if(b)f.selector=this.selector+"."+b+"("+d+")";return f},each:function(a,b){return c.each(this,a,b)},ready:function(a){c.bindReady();if(c.isReady)a.call(s,c);else Q&&Q.push(a);return this},eq:function(a){return a===-1?this.slice(a):this.slice(a,+a+1)},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},slice:function(){return this.pushStack(R.apply(this,arguments),"slice",R.call(arguments).join(","))},map:function(a){return this.pushStack(c.map(this, +function(b,d){return a.call(b,d,b)}))},end:function(){return this.prevObject||c(null)},push:ba,sort:[].sort,splice:[].splice};c.fn.init.prototype=c.fn;c.extend=c.fn.extend=function(){var a=arguments[0]||{},b=1,d=arguments.length,f=false,e,j,i,o;if(typeof a==="boolean"){f=a;a=arguments[1]||{};b=2}if(typeof a!=="object"&&!c.isFunction(a))a={};if(d===b){a=this;--b}for(;b
a"; +var e=d.getElementsByTagName("*"),j=d.getElementsByTagName("a")[0];if(!(!e||!e.length||!j)){c.support={leadingWhitespace:d.firstChild.nodeType===3,tbody:!d.getElementsByTagName("tbody").length,htmlSerialize:!!d.getElementsByTagName("link").length,style:/red/.test(j.getAttribute("style")),hrefNormalized:j.getAttribute("href")==="/a",opacity:/^0.55$/.test(j.style.opacity),cssFloat:!!j.style.cssFloat,checkOn:d.getElementsByTagName("input")[0].value==="on",optSelected:s.createElement("select").appendChild(s.createElement("option")).selected, +parentNode:d.removeChild(d.appendChild(s.createElement("div"))).parentNode===null,deleteExpando:true,checkClone:false,scriptEval:false,noCloneEvent:true,boxModel:null};b.type="text/javascript";try{b.appendChild(s.createTextNode("window."+f+"=1;"))}catch(i){}a.insertBefore(b,a.firstChild);if(A[f]){c.support.scriptEval=true;delete A[f]}try{delete b.test}catch(o){c.support.deleteExpando=false}a.removeChild(b);if(d.attachEvent&&d.fireEvent){d.attachEvent("onclick",function k(){c.support.noCloneEvent= +false;d.detachEvent("onclick",k)});d.cloneNode(true).fireEvent("onclick")}d=s.createElement("div");d.innerHTML="";a=s.createDocumentFragment();a.appendChild(d.firstChild);c.support.checkClone=a.cloneNode(true).cloneNode(true).lastChild.checked;c(function(){var k=s.createElement("div");k.style.width=k.style.paddingLeft="1px";s.body.appendChild(k);c.boxModel=c.support.boxModel=k.offsetWidth===2;s.body.removeChild(k).style.display="none"});a=function(k){var n= +s.createElement("div");k="on"+k;var r=k in n;if(!r){n.setAttribute(k,"return;");r=typeof n[k]==="function"}return r};c.support.submitBubbles=a("submit");c.support.changeBubbles=a("change");a=b=d=e=j=null}})();c.props={"for":"htmlFor","class":"className",readonly:"readOnly",maxlength:"maxLength",cellspacing:"cellSpacing",rowspan:"rowSpan",colspan:"colSpan",tabindex:"tabIndex",usemap:"useMap",frameborder:"frameBorder"};var G="jQuery"+J(),Ya=0,za={};c.extend({cache:{},expando:G,noData:{embed:true,object:true, +applet:true},data:function(a,b,d){if(!(a.nodeName&&c.noData[a.nodeName.toLowerCase()])){a=a==A?za:a;var f=a[G],e=c.cache;if(!f&&typeof b==="string"&&d===w)return null;f||(f=++Ya);if(typeof b==="object"){a[G]=f;e[f]=c.extend(true,{},b)}else if(!e[f]){a[G]=f;e[f]={}}a=e[f];if(d!==w)a[b]=d;return typeof b==="string"?a[b]:a}},removeData:function(a,b){if(!(a.nodeName&&c.noData[a.nodeName.toLowerCase()])){a=a==A?za:a;var d=a[G],f=c.cache,e=f[d];if(b){if(e){delete e[b];c.isEmptyObject(e)&&c.removeData(a)}}else{if(c.support.deleteExpando)delete a[c.expando]; +else a.removeAttribute&&a.removeAttribute(c.expando);delete f[d]}}}});c.fn.extend({data:function(a,b){if(typeof a==="undefined"&&this.length)return c.data(this[0]);else if(typeof a==="object")return this.each(function(){c.data(this,a)});var d=a.split(".");d[1]=d[1]?"."+d[1]:"";if(b===w){var f=this.triggerHandler("getData"+d[1]+"!",[d[0]]);if(f===w&&this.length)f=c.data(this[0],a);return f===w&&d[1]?this.data(d[0]):f}else return this.trigger("setData"+d[1]+"!",[d[0],b]).each(function(){c.data(this, +a,b)})},removeData:function(a){return this.each(function(){c.removeData(this,a)})}});c.extend({queue:function(a,b,d){if(a){b=(b||"fx")+"queue";var f=c.data(a,b);if(!d)return f||[];if(!f||c.isArray(d))f=c.data(a,b,c.makeArray(d));else f.push(d);return f}},dequeue:function(a,b){b=b||"fx";var d=c.queue(a,b),f=d.shift();if(f==="inprogress")f=d.shift();if(f){b==="fx"&&d.unshift("inprogress");f.call(a,function(){c.dequeue(a,b)})}}});c.fn.extend({queue:function(a,b){if(typeof a!=="string"){b=a;a="fx"}if(b=== +w)return c.queue(this[0],a);return this.each(function(){var d=c.queue(this,a,b);a==="fx"&&d[0]!=="inprogress"&&c.dequeue(this,a)})},dequeue:function(a){return this.each(function(){c.dequeue(this,a)})},delay:function(a,b){a=c.fx?c.fx.speeds[a]||a:a;b=b||"fx";return this.queue(b,function(){var d=this;setTimeout(function(){c.dequeue(d,b)},a)})},clearQueue:function(a){return this.queue(a||"fx",[])}});var Aa=/[\n\t]/g,ca=/\s+/,Za=/\r/g,$a=/href|src|style/,ab=/(button|input)/i,bb=/(button|input|object|select|textarea)/i, +cb=/^(a|area)$/i,Ba=/radio|checkbox/;c.fn.extend({attr:function(a,b){return X(this,a,b,true,c.attr)},removeAttr:function(a){return this.each(function(){c.attr(this,a,"");this.nodeType===1&&this.removeAttribute(a)})},addClass:function(a){if(c.isFunction(a))return this.each(function(n){var r=c(this);r.addClass(a.call(this,n,r.attr("class")))});if(a&&typeof a==="string")for(var b=(a||"").split(ca),d=0,f=this.length;d-1)return true;return false},val:function(a){if(a===w){var b=this[0];if(b){if(c.nodeName(b,"option"))return(b.attributes.value||{}).specified?b.value:b.text;if(c.nodeName(b,"select")){var d=b.selectedIndex,f=[],e=b.options;b=b.type==="select-one";if(d<0)return null;var j=b?d:0;for(d=b?d+1:e.length;j=0;else if(c.nodeName(this,"select")){var u=c.makeArray(r);c("option",this).each(function(){this.selected= +c.inArray(c(this).val(),u)>=0});if(!u.length)this.selectedIndex=-1}else this.value=r}})}});c.extend({attrFn:{val:true,css:true,html:true,text:true,data:true,width:true,height:true,offset:true},attr:function(a,b,d,f){if(!a||a.nodeType===3||a.nodeType===8)return w;if(f&&b in c.attrFn)return c(a)[b](d);f=a.nodeType!==1||!c.isXMLDoc(a);var e=d!==w;b=f&&c.props[b]||b;if(a.nodeType===1){var j=$a.test(b);if(b in a&&f&&!j){if(e){b==="type"&&ab.test(a.nodeName)&&a.parentNode&&c.error("type property can't be changed"); +a[b]=d}if(c.nodeName(a,"form")&&a.getAttributeNode(b))return a.getAttributeNode(b).nodeValue;if(b==="tabIndex")return(b=a.getAttributeNode("tabIndex"))&&b.specified?b.value:bb.test(a.nodeName)||cb.test(a.nodeName)&&a.href?0:w;return a[b]}if(!c.support.style&&f&&b==="style"){if(e)a.style.cssText=""+d;return a.style.cssText}e&&a.setAttribute(b,""+d);a=!c.support.hrefNormalized&&f&&j?a.getAttribute(b,2):a.getAttribute(b);return a===null?w:a}return c.style(a,b,d)}});var O=/\.(.*)$/,db=function(a){return a.replace(/[^\w\s\.\|`]/g, +function(b){return"\\"+b})};c.event={add:function(a,b,d,f){if(!(a.nodeType===3||a.nodeType===8)){if(a.setInterval&&a!==A&&!a.frameElement)a=A;var e,j;if(d.handler){e=d;d=e.handler}if(!d.guid)d.guid=c.guid++;if(j=c.data(a)){var i=j.events=j.events||{},o=j.handle;if(!o)j.handle=o=function(){return typeof c!=="undefined"&&!c.event.triggered?c.event.handle.apply(o.elem,arguments):w};o.elem=a;b=b.split(" ");for(var k,n=0,r;k=b[n++];){j=e?c.extend({},e):{handler:d,data:f};if(k.indexOf(".")>-1){r=k.split("."); +k=r.shift();j.namespace=r.slice(0).sort().join(".")}else{r=[];j.namespace=""}j.type=k;j.guid=d.guid;var u=i[k],z=c.event.special[k]||{};if(!u){u=i[k]=[];if(!z.setup||z.setup.call(a,f,r,o)===false)if(a.addEventListener)a.addEventListener(k,o,false);else a.attachEvent&&a.attachEvent("on"+k,o)}if(z.add){z.add.call(a,j);if(!j.handler.guid)j.handler.guid=d.guid}u.push(j);c.event.global[k]=true}a=null}}},global:{},remove:function(a,b,d,f){if(!(a.nodeType===3||a.nodeType===8)){var e,j=0,i,o,k,n,r,u,z=c.data(a), +C=z&&z.events;if(z&&C){if(b&&b.type){d=b.handler;b=b.type}if(!b||typeof b==="string"&&b.charAt(0)==="."){b=b||"";for(e in C)c.event.remove(a,e+b)}else{for(b=b.split(" ");e=b[j++];){n=e;i=e.indexOf(".")<0;o=[];if(!i){o=e.split(".");e=o.shift();k=new RegExp("(^|\\.)"+c.map(o.slice(0).sort(),db).join("\\.(?:.*\\.)?")+"(\\.|$)")}if(r=C[e])if(d){n=c.event.special[e]||{};for(B=f||0;B=0){a.type= +e=e.slice(0,-1);a.exclusive=true}if(!d){a.stopPropagation();c.event.global[e]&&c.each(c.cache,function(){this.events&&this.events[e]&&c.event.trigger(a,b,this.handle.elem)})}if(!d||d.nodeType===3||d.nodeType===8)return w;a.result=w;a.target=d;b=c.makeArray(b);b.unshift(a)}a.currentTarget=d;(f=c.data(d,"handle"))&&f.apply(d,b);f=d.parentNode||d.ownerDocument;try{if(!(d&&d.nodeName&&c.noData[d.nodeName.toLowerCase()]))if(d["on"+e]&&d["on"+e].apply(d,b)===false)a.result=false}catch(j){}if(!a.isPropagationStopped()&& +f)c.event.trigger(a,b,f,true);else if(!a.isDefaultPrevented()){f=a.target;var i,o=c.nodeName(f,"a")&&e==="click",k=c.event.special[e]||{};if((!k._default||k._default.call(d,a)===false)&&!o&&!(f&&f.nodeName&&c.noData[f.nodeName.toLowerCase()])){try{if(f[e]){if(i=f["on"+e])f["on"+e]=null;c.event.triggered=true;f[e]()}}catch(n){}if(i)f["on"+e]=i;c.event.triggered=false}}},handle:function(a){var b,d,f,e;a=arguments[0]=c.event.fix(a||A.event);a.currentTarget=this;b=a.type.indexOf(".")<0&&!a.exclusive; +if(!b){d=a.type.split(".");a.type=d.shift();f=new RegExp("(^|\\.)"+d.slice(0).sort().join("\\.(?:.*\\.)?")+"(\\.|$)")}e=c.data(this,"events");d=e[a.type];if(e&&d){d=d.slice(0);e=0;for(var j=d.length;e-1?c.map(a.options,function(f){return f.selected}).join("-"):"";else if(a.nodeName.toLowerCase()==="select")d=a.selectedIndex;return d},fa=function(a,b){var d=a.target,f,e;if(!(!da.test(d.nodeName)||d.readOnly)){f=c.data(d,"_change_data");e=Fa(d);if(a.type!=="focusout"||d.type!=="radio")c.data(d,"_change_data", +e);if(!(f===w||e===f))if(f!=null||e){a.type="change";return c.event.trigger(a,b,d)}}};c.event.special.change={filters:{focusout:fa,click:function(a){var b=a.target,d=b.type;if(d==="radio"||d==="checkbox"||b.nodeName.toLowerCase()==="select")return fa.call(this,a)},keydown:function(a){var b=a.target,d=b.type;if(a.keyCode===13&&b.nodeName.toLowerCase()!=="textarea"||a.keyCode===32&&(d==="checkbox"||d==="radio")||d==="select-multiple")return fa.call(this,a)},beforeactivate:function(a){a=a.target;c.data(a, +"_change_data",Fa(a))}},setup:function(){if(this.type==="file")return false;for(var a in ea)c.event.add(this,a+".specialChange",ea[a]);return da.test(this.nodeName)},teardown:function(){c.event.remove(this,".specialChange");return da.test(this.nodeName)}};ea=c.event.special.change.filters}s.addEventListener&&c.each({focus:"focusin",blur:"focusout"},function(a,b){function d(f){f=c.event.fix(f);f.type=b;return c.event.handle.call(this,f)}c.event.special[b]={setup:function(){this.addEventListener(a, +d,true)},teardown:function(){this.removeEventListener(a,d,true)}}});c.each(["bind","one"],function(a,b){c.fn[b]=function(d,f,e){if(typeof d==="object"){for(var j in d)this[b](j,f,d[j],e);return this}if(c.isFunction(f)){e=f;f=w}var i=b==="one"?c.proxy(e,function(k){c(this).unbind(k,i);return e.apply(this,arguments)}):e;if(d==="unload"&&b!=="one")this.one(d,f,e);else{j=0;for(var o=this.length;j0){y=t;break}}t=t[g]}m[q]=y}}}var f=/((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^[\]]*\]|['"][^'"]*['"]|[^[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g, +e=0,j=Object.prototype.toString,i=false,o=true;[0,0].sort(function(){o=false;return 0});var k=function(g,h,l,m){l=l||[];var q=h=h||s;if(h.nodeType!==1&&h.nodeType!==9)return[];if(!g||typeof g!=="string")return l;for(var p=[],v,t,y,S,H=true,M=x(h),I=g;(f.exec(""),v=f.exec(I))!==null;){I=v[3];p.push(v[1]);if(v[2]){S=v[3];break}}if(p.length>1&&r.exec(g))if(p.length===2&&n.relative[p[0]])t=ga(p[0]+p[1],h);else for(t=n.relative[p[0]]?[h]:k(p.shift(),h);p.length;){g=p.shift();if(n.relative[g])g+=p.shift(); +t=ga(g,t)}else{if(!m&&p.length>1&&h.nodeType===9&&!M&&n.match.ID.test(p[0])&&!n.match.ID.test(p[p.length-1])){v=k.find(p.shift(),h,M);h=v.expr?k.filter(v.expr,v.set)[0]:v.set[0]}if(h){v=m?{expr:p.pop(),set:z(m)}:k.find(p.pop(),p.length===1&&(p[0]==="~"||p[0]==="+")&&h.parentNode?h.parentNode:h,M);t=v.expr?k.filter(v.expr,v.set):v.set;if(p.length>0)y=z(t);else H=false;for(;p.length;){var D=p.pop();v=D;if(n.relative[D])v=p.pop();else D="";if(v==null)v=h;n.relative[D](y,v,M)}}else y=[]}y||(y=t);y||k.error(D|| +g);if(j.call(y)==="[object Array]")if(H)if(h&&h.nodeType===1)for(g=0;y[g]!=null;g++){if(y[g]&&(y[g]===true||y[g].nodeType===1&&E(h,y[g])))l.push(t[g])}else for(g=0;y[g]!=null;g++)y[g]&&y[g].nodeType===1&&l.push(t[g]);else l.push.apply(l,y);else z(y,l);if(S){k(S,q,l,m);k.uniqueSort(l)}return l};k.uniqueSort=function(g){if(B){i=o;g.sort(B);if(i)for(var h=1;h":function(g,h){var l=typeof h==="string";if(l&&!/\W/.test(h)){h=h.toLowerCase();for(var m=0,q=g.length;m=0))l||m.push(v);else if(l)h[p]=false;return false},ID:function(g){return g[1].replace(/\\/g,"")},TAG:function(g){return g[1].toLowerCase()}, +CHILD:function(g){if(g[1]==="nth"){var h=/(-?)(\d*)n((?:\+|-)?\d*)/.exec(g[2]==="even"&&"2n"||g[2]==="odd"&&"2n+1"||!/\D/.test(g[2])&&"0n+"+g[2]||g[2]);g[2]=h[1]+(h[2]||1)-0;g[3]=h[3]-0}g[0]=e++;return g},ATTR:function(g,h,l,m,q,p){h=g[1].replace(/\\/g,"");if(!p&&n.attrMap[h])g[1]=n.attrMap[h];if(g[2]==="~=")g[4]=" "+g[4]+" ";return g},PSEUDO:function(g,h,l,m,q){if(g[1]==="not")if((f.exec(g[3])||"").length>1||/^\w/.test(g[3]))g[3]=k(g[3],null,null,h);else{g=k.filter(g[3],h,l,true^q);l||m.push.apply(m, +g);return false}else if(n.match.POS.test(g[0])||n.match.CHILD.test(g[0]))return true;return g},POS:function(g){g.unshift(true);return g}},filters:{enabled:function(g){return g.disabled===false&&g.type!=="hidden"},disabled:function(g){return g.disabled===true},checked:function(g){return g.checked===true},selected:function(g){return g.selected===true},parent:function(g){return!!g.firstChild},empty:function(g){return!g.firstChild},has:function(g,h,l){return!!k(l[3],g).length},header:function(g){return/h\d/i.test(g.nodeName)}, +text:function(g){return"text"===g.type},radio:function(g){return"radio"===g.type},checkbox:function(g){return"checkbox"===g.type},file:function(g){return"file"===g.type},password:function(g){return"password"===g.type},submit:function(g){return"submit"===g.type},image:function(g){return"image"===g.type},reset:function(g){return"reset"===g.type},button:function(g){return"button"===g.type||g.nodeName.toLowerCase()==="button"},input:function(g){return/input|select|textarea|button/i.test(g.nodeName)}}, +setFilters:{first:function(g,h){return h===0},last:function(g,h,l,m){return h===m.length-1},even:function(g,h){return h%2===0},odd:function(g,h){return h%2===1},lt:function(g,h,l){return hl[3]-0},nth:function(g,h,l){return l[3]-0===h},eq:function(g,h,l){return l[3]-0===h}},filter:{PSEUDO:function(g,h,l,m){var q=h[1],p=n.filters[q];if(p)return p(g,l,h,m);else if(q==="contains")return(g.textContent||g.innerText||a([g])||"").indexOf(h[3])>=0;else if(q==="not"){h= +h[3];l=0;for(m=h.length;l=0}},ID:function(g,h){return g.nodeType===1&&g.getAttribute("id")===h},TAG:function(g,h){return h==="*"&&g.nodeType===1||g.nodeName.toLowerCase()===h},CLASS:function(g,h){return(" "+(g.className||g.getAttribute("class"))+" ").indexOf(h)>-1},ATTR:function(g,h){var l=h[1];g=n.attrHandle[l]?n.attrHandle[l](g):g[l]!=null?g[l]:g.getAttribute(l);l=g+"";var m=h[2];h=h[4];return g==null?m==="!=":m=== +"="?l===h:m==="*="?l.indexOf(h)>=0:m==="~="?(" "+l+" ").indexOf(h)>=0:!h?l&&g!==false:m==="!="?l!==h:m==="^="?l.indexOf(h)===0:m==="$="?l.substr(l.length-h.length)===h:m==="|="?l===h||l.substr(0,h.length+1)===h+"-":false},POS:function(g,h,l,m){var q=n.setFilters[h[2]];if(q)return q(g,l,h,m)}}},r=n.match.POS;for(var u in n.match){n.match[u]=new RegExp(n.match[u].source+/(?![^\[]*\])(?![^\(]*\))/.source);n.leftMatch[u]=new RegExp(/(^(?:.|\r|\n)*?)/.source+n.match[u].source.replace(/\\(\d+)/g,function(g, +h){return"\\"+(h-0+1)}))}var z=function(g,h){g=Array.prototype.slice.call(g,0);if(h){h.push.apply(h,g);return h}return g};try{Array.prototype.slice.call(s.documentElement.childNodes,0)}catch(C){z=function(g,h){h=h||[];if(j.call(g)==="[object Array]")Array.prototype.push.apply(h,g);else if(typeof g.length==="number")for(var l=0,m=g.length;l";var l=s.documentElement;l.insertBefore(g,l.firstChild);if(s.getElementById(h)){n.find.ID=function(m,q,p){if(typeof q.getElementById!=="undefined"&&!p)return(q=q.getElementById(m[1]))?q.id===m[1]||typeof q.getAttributeNode!=="undefined"&& +q.getAttributeNode("id").nodeValue===m[1]?[q]:w:[]};n.filter.ID=function(m,q){var p=typeof m.getAttributeNode!=="undefined"&&m.getAttributeNode("id");return m.nodeType===1&&p&&p.nodeValue===q}}l.removeChild(g);l=g=null})();(function(){var g=s.createElement("div");g.appendChild(s.createComment(""));if(g.getElementsByTagName("*").length>0)n.find.TAG=function(h,l){l=l.getElementsByTagName(h[1]);if(h[1]==="*"){h=[];for(var m=0;l[m];m++)l[m].nodeType===1&&h.push(l[m]);l=h}return l};g.innerHTML=""; +if(g.firstChild&&typeof g.firstChild.getAttribute!=="undefined"&&g.firstChild.getAttribute("href")!=="#")n.attrHandle.href=function(h){return h.getAttribute("href",2)};g=null})();s.querySelectorAll&&function(){var g=k,h=s.createElement("div");h.innerHTML="

";if(!(h.querySelectorAll&&h.querySelectorAll(".TEST").length===0)){k=function(m,q,p,v){q=q||s;if(!v&&q.nodeType===9&&!x(q))try{return z(q.querySelectorAll(m),p)}catch(t){}return g(m,q,p,v)};for(var l in g)k[l]=g[l];h=null}}(); +(function(){var g=s.createElement("div");g.innerHTML="
";if(!(!g.getElementsByClassName||g.getElementsByClassName("e").length===0)){g.lastChild.className="e";if(g.getElementsByClassName("e").length!==1){n.order.splice(1,0,"CLASS");n.find.CLASS=function(h,l,m){if(typeof l.getElementsByClassName!=="undefined"&&!m)return l.getElementsByClassName(h[1])};g=null}}})();var E=s.compareDocumentPosition?function(g,h){return!!(g.compareDocumentPosition(h)&16)}: +function(g,h){return g!==h&&(g.contains?g.contains(h):true)},x=function(g){return(g=(g?g.ownerDocument||g:0).documentElement)?g.nodeName!=="HTML":false},ga=function(g,h){var l=[],m="",q;for(h=h.nodeType?[h]:h;q=n.match.PSEUDO.exec(g);){m+=q[0];g=g.replace(n.match.PSEUDO,"")}g=n.relative[g]?g+"*":g;q=0;for(var p=h.length;q=0===d})};c.fn.extend({find:function(a){for(var b=this.pushStack("","find",a),d=0,f=0,e=this.length;f0)for(var j=d;j0},closest:function(a,b){if(c.isArray(a)){var d=[],f=this[0],e,j= +{},i;if(f&&a.length){e=0;for(var o=a.length;e-1:c(f).is(e)){d.push({selector:i,elem:f});delete j[i]}}f=f.parentNode}}return d}var k=c.expr.match.POS.test(a)?c(a,b||this.context):null;return this.map(function(n,r){for(;r&&r.ownerDocument&&r!==b;){if(k?k.index(r)>-1:c(r).is(a))return r;r=r.parentNode}return null})},index:function(a){if(!a||typeof a=== +"string")return c.inArray(this[0],a?c(a):this.parent().children());return c.inArray(a.jquery?a[0]:a,this)},add:function(a,b){a=typeof a==="string"?c(a,b||this.context):c.makeArray(a);b=c.merge(this.get(),a);return this.pushStack(qa(a[0])||qa(b[0])?b:c.unique(b))},andSelf:function(){return this.add(this.prevObject)}});c.each({parent:function(a){return(a=a.parentNode)&&a.nodeType!==11?a:null},parents:function(a){return c.dir(a,"parentNode")},parentsUntil:function(a,b,d){return c.dir(a,"parentNode", +d)},next:function(a){return c.nth(a,2,"nextSibling")},prev:function(a){return c.nth(a,2,"previousSibling")},nextAll:function(a){return c.dir(a,"nextSibling")},prevAll:function(a){return c.dir(a,"previousSibling")},nextUntil:function(a,b,d){return c.dir(a,"nextSibling",d)},prevUntil:function(a,b,d){return c.dir(a,"previousSibling",d)},siblings:function(a){return c.sibling(a.parentNode.firstChild,a)},children:function(a){return c.sibling(a.firstChild)},contents:function(a){return c.nodeName(a,"iframe")? +a.contentDocument||a.contentWindow.document:c.makeArray(a.childNodes)}},function(a,b){c.fn[a]=function(d,f){var e=c.map(this,b,d);eb.test(a)||(f=d);if(f&&typeof f==="string")e=c.filter(f,e);e=this.length>1?c.unique(e):e;if((this.length>1||gb.test(f))&&fb.test(a))e=e.reverse();return this.pushStack(e,a,R.call(arguments).join(","))}});c.extend({filter:function(a,b,d){if(d)a=":not("+a+")";return c.find.matches(a,b)},dir:function(a,b,d){var f=[];for(a=a[b];a&&a.nodeType!==9&&(d===w||a.nodeType!==1||!c(a).is(d));){a.nodeType=== +1&&f.push(a);a=a[b]}return f},nth:function(a,b,d){b=b||1;for(var f=0;a;a=a[d])if(a.nodeType===1&&++f===b)break;return a},sibling:function(a,b){for(var d=[];a;a=a.nextSibling)a.nodeType===1&&a!==b&&d.push(a);return d}});var Ja=/ jQuery\d+="(?:\d+|null)"/g,V=/^\s+/,Ka=/(<([\w:]+)[^>]*?)\/>/g,hb=/^(?:area|br|col|embed|hr|img|input|link|meta|param)$/i,La=/<([\w:]+)/,ib=/"},F={option:[1,""],legend:[1,"
","
"],thead:[1,"","
"],tr:[2,"","
"],td:[3,"","
"],col:[2,"","
"],area:[1,"",""],_default:[0,"",""]};F.optgroup=F.option;F.tbody=F.tfoot=F.colgroup=F.caption=F.thead;F.th=F.td;if(!c.support.htmlSerialize)F._default=[1,"div
","
"];c.fn.extend({text:function(a){if(c.isFunction(a))return this.each(function(b){var d= +c(this);d.text(a.call(this,b,d.text()))});if(typeof a!=="object"&&a!==w)return this.empty().append((this[0]&&this[0].ownerDocument||s).createTextNode(a));return c.text(this)},wrapAll:function(a){if(c.isFunction(a))return this.each(function(d){c(this).wrapAll(a.call(this,d))});if(this[0]){var b=c(a,this[0].ownerDocument).eq(0).clone(true);this[0].parentNode&&b.insertBefore(this[0]);b.map(function(){for(var d=this;d.firstChild&&d.firstChild.nodeType===1;)d=d.firstChild;return d}).append(this)}return this}, +wrapInner:function(a){if(c.isFunction(a))return this.each(function(b){c(this).wrapInner(a.call(this,b))});return this.each(function(){var b=c(this),d=b.contents();d.length?d.wrapAll(a):b.append(a)})},wrap:function(a){return this.each(function(){c(this).wrapAll(a)})},unwrap:function(){return this.parent().each(function(){c.nodeName(this,"body")||c(this).replaceWith(this.childNodes)}).end()},append:function(){return this.domManip(arguments,true,function(a){this.nodeType===1&&this.appendChild(a)})}, +prepend:function(){return this.domManip(arguments,true,function(a){this.nodeType===1&&this.insertBefore(a,this.firstChild)})},before:function(){if(this[0]&&this[0].parentNode)return this.domManip(arguments,false,function(b){this.parentNode.insertBefore(b,this)});else if(arguments.length){var a=c(arguments[0]);a.push.apply(a,this.toArray());return this.pushStack(a,"before",arguments)}},after:function(){if(this[0]&&this[0].parentNode)return this.domManip(arguments,false,function(b){this.parentNode.insertBefore(b, +this.nextSibling)});else if(arguments.length){var a=this.pushStack(this,"after",arguments);a.push.apply(a,c(arguments[0]).toArray());return a}},remove:function(a,b){for(var d=0,f;(f=this[d])!=null;d++)if(!a||c.filter(a,[f]).length){if(!b&&f.nodeType===1){c.cleanData(f.getElementsByTagName("*"));c.cleanData([f])}f.parentNode&&f.parentNode.removeChild(f)}return this},empty:function(){for(var a=0,b;(b=this[a])!=null;a++)for(b.nodeType===1&&c.cleanData(b.getElementsByTagName("*"));b.firstChild;)b.removeChild(b.firstChild); +return this},clone:function(a){var b=this.map(function(){if(!c.support.noCloneEvent&&!c.isXMLDoc(this)){var d=this.outerHTML,f=this.ownerDocument;if(!d){d=f.createElement("div");d.appendChild(this.cloneNode(true));d=d.innerHTML}return c.clean([d.replace(Ja,"").replace(/=([^="'>\s]+\/)>/g,'="$1">').replace(V,"")],f)[0]}else return this.cloneNode(true)});if(a===true){ra(this,b);ra(this.find("*"),b.find("*"))}return b},html:function(a){if(a===w)return this[0]&&this[0].nodeType===1?this[0].innerHTML.replace(Ja, +""):null;else if(typeof a==="string"&&!ta.test(a)&&(c.support.leadingWhitespace||!V.test(a))&&!F[(La.exec(a)||["",""])[1].toLowerCase()]){a=a.replace(Ka,Ma);try{for(var b=0,d=this.length;b0||e.cacheable||this.length>1?k.cloneNode(true):k)}o.length&&c.each(o,Qa)}return this}});c.fragments={};c.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(a,b){c.fn[a]=function(d){var f=[];d=c(d);var e=this.length===1&&this[0].parentNode;if(e&&e.nodeType===11&&e.childNodes.length===1&&d.length===1){d[b](this[0]); +return this}else{e=0;for(var j=d.length;e0?this.clone(true):this).get();c.fn[b].apply(c(d[e]),i);f=f.concat(i)}return this.pushStack(f,a,d.selector)}}});c.extend({clean:function(a,b,d,f){b=b||s;if(typeof b.createElement==="undefined")b=b.ownerDocument||b[0]&&b[0].ownerDocument||s;for(var e=[],j=0,i;(i=a[j])!=null;j++){if(typeof i==="number")i+="";if(i){if(typeof i==="string"&&!jb.test(i))i=b.createTextNode(i);else if(typeof i==="string"){i=i.replace(Ka,Ma);var o=(La.exec(i)||["", +""])[1].toLowerCase(),k=F[o]||F._default,n=k[0],r=b.createElement("div");for(r.innerHTML=k[1]+i+k[2];n--;)r=r.lastChild;if(!c.support.tbody){n=ib.test(i);o=o==="table"&&!n?r.firstChild&&r.firstChild.childNodes:k[1]===""&&!n?r.childNodes:[];for(k=o.length-1;k>=0;--k)c.nodeName(o[k],"tbody")&&!o[k].childNodes.length&&o[k].parentNode.removeChild(o[k])}!c.support.leadingWhitespace&&V.test(i)&&r.insertBefore(b.createTextNode(V.exec(i)[0]),r.firstChild);i=r.childNodes}if(i.nodeType)e.push(i);else e= +c.merge(e,i)}}if(d)for(j=0;e[j];j++)if(f&&c.nodeName(e[j],"script")&&(!e[j].type||e[j].type.toLowerCase()==="text/javascript"))f.push(e[j].parentNode?e[j].parentNode.removeChild(e[j]):e[j]);else{e[j].nodeType===1&&e.splice.apply(e,[j+1,0].concat(c.makeArray(e[j].getElementsByTagName("script"))));d.appendChild(e[j])}return e},cleanData:function(a){for(var b,d,f=c.cache,e=c.event.special,j=c.support.deleteExpando,i=0,o;(o=a[i])!=null;i++)if(d=o[c.expando]){b=f[d];if(b.events)for(var k in b.events)e[k]? +c.event.remove(o,k):Ca(o,k,b.handle);if(j)delete o[c.expando];else o.removeAttribute&&o.removeAttribute(c.expando);delete f[d]}}});var kb=/z-?index|font-?weight|opacity|zoom|line-?height/i,Na=/alpha\([^)]*\)/,Oa=/opacity=([^)]*)/,ha=/float/i,ia=/-([a-z])/ig,lb=/([A-Z])/g,mb=/^-?\d+(?:px)?$/i,nb=/^-?\d/,ob={position:"absolute",visibility:"hidden",display:"block"},pb=["Left","Right"],qb=["Top","Bottom"],rb=s.defaultView&&s.defaultView.getComputedStyle,Pa=c.support.cssFloat?"cssFloat":"styleFloat",ja= +function(a,b){return b.toUpperCase()};c.fn.css=function(a,b){return X(this,a,b,true,function(d,f,e){if(e===w)return c.curCSS(d,f);if(typeof e==="number"&&!kb.test(f))e+="px";c.style(d,f,e)})};c.extend({style:function(a,b,d){if(!a||a.nodeType===3||a.nodeType===8)return w;if((b==="width"||b==="height")&&parseFloat(d)<0)d=w;var f=a.style||a,e=d!==w;if(!c.support.opacity&&b==="opacity"){if(e){f.zoom=1;b=parseInt(d,10)+""==="NaN"?"":"alpha(opacity="+d*100+")";a=f.filter||c.curCSS(a,"filter")||"";f.filter= +Na.test(a)?a.replace(Na,b):b}return f.filter&&f.filter.indexOf("opacity=")>=0?parseFloat(Oa.exec(f.filter)[1])/100+"":""}if(ha.test(b))b=Pa;b=b.replace(ia,ja);if(e)f[b]=d;return f[b]},css:function(a,b,d,f){if(b==="width"||b==="height"){var e,j=b==="width"?pb:qb;function i(){e=b==="width"?a.offsetWidth:a.offsetHeight;f!=="border"&&c.each(j,function(){f||(e-=parseFloat(c.curCSS(a,"padding"+this,true))||0);if(f==="margin")e+=parseFloat(c.curCSS(a,"margin"+this,true))||0;else e-=parseFloat(c.curCSS(a, +"border"+this+"Width",true))||0})}a.offsetWidth!==0?i():c.swap(a,ob,i);return Math.max(0,Math.round(e))}return c.curCSS(a,b,d)},curCSS:function(a,b,d){var f,e=a.style;if(!c.support.opacity&&b==="opacity"&&a.currentStyle){f=Oa.test(a.currentStyle.filter||"")?parseFloat(RegExp.$1)/100+"":"";return f===""?"1":f}if(ha.test(b))b=Pa;if(!d&&e&&e[b])f=e[b];else if(rb){if(ha.test(b))b="float";b=b.replace(lb,"-$1").toLowerCase();e=a.ownerDocument.defaultView;if(!e)return null;if(a=e.getComputedStyle(a,null))f= +a.getPropertyValue(b);if(b==="opacity"&&f==="")f="1"}else if(a.currentStyle){d=b.replace(ia,ja);f=a.currentStyle[b]||a.currentStyle[d];if(!mb.test(f)&&nb.test(f)){b=e.left;var j=a.runtimeStyle.left;a.runtimeStyle.left=a.currentStyle.left;e.left=d==="fontSize"?"1em":f||0;f=e.pixelLeft+"px";e.left=b;a.runtimeStyle.left=j}}return f},swap:function(a,b,d){var f={};for(var e in b){f[e]=a.style[e];a.style[e]=b[e]}d.call(a);for(e in b)a.style[e]=f[e]}});if(c.expr&&c.expr.filters){c.expr.filters.hidden=function(a){var b= +a.offsetWidth,d=a.offsetHeight,f=a.nodeName.toLowerCase()==="tr";return b===0&&d===0&&!f?true:b>0&&d>0&&!f?false:c.curCSS(a,"display")==="none"};c.expr.filters.visible=function(a){return!c.expr.filters.hidden(a)}}var sb=J(),tb=//gi,ub=/select|textarea/i,vb=/color|date|datetime|email|hidden|month|number|password|range|search|tel|text|time|url|week/i,N=/=\?(&|$)/,ka=/\?/,wb=/(\?|&)_=.*?(&|$)/,xb=/^(\w+:)?\/\/([^\/?#]+)/,yb=/%20/g,zb=c.fn.load;c.fn.extend({load:function(a,b,d){if(typeof a!== +"string")return zb.call(this,a);else if(!this.length)return this;var f=a.indexOf(" ");if(f>=0){var e=a.slice(f,a.length);a=a.slice(0,f)}f="GET";if(b)if(c.isFunction(b)){d=b;b=null}else if(typeof b==="object"){b=c.param(b,c.ajaxSettings.traditional);f="POST"}var j=this;c.ajax({url:a,type:f,dataType:"html",data:b,complete:function(i,o){if(o==="success"||o==="notmodified")j.html(e?c("
").append(i.responseText.replace(tb,"")).find(e):i.responseText);d&&j.each(d,[i.responseText,o,i])}});return this}, +serialize:function(){return c.param(this.serializeArray())},serializeArray:function(){return this.map(function(){return this.elements?c.makeArray(this.elements):this}).filter(function(){return this.name&&!this.disabled&&(this.checked||ub.test(this.nodeName)||vb.test(this.type))}).map(function(a,b){a=c(this).val();return a==null?null:c.isArray(a)?c.map(a,function(d){return{name:b.name,value:d}}):{name:b.name,value:a}}).get()}});c.each("ajaxStart ajaxStop ajaxComplete ajaxError ajaxSuccess ajaxSend".split(" "), +function(a,b){c.fn[b]=function(d){return this.bind(b,d)}});c.extend({get:function(a,b,d,f){if(c.isFunction(b)){f=f||d;d=b;b=null}return c.ajax({type:"GET",url:a,data:b,success:d,dataType:f})},getScript:function(a,b){return c.get(a,null,b,"script")},getJSON:function(a,b,d){return c.get(a,b,d,"json")},post:function(a,b,d,f){if(c.isFunction(b)){f=f||d;d=b;b={}}return c.ajax({type:"POST",url:a,data:b,success:d,dataType:f})},ajaxSetup:function(a){c.extend(c.ajaxSettings,a)},ajaxSettings:{url:location.href, +global:true,type:"GET",contentType:"application/x-www-form-urlencoded",processData:true,async:true,xhr:A.XMLHttpRequest&&(A.location.protocol!=="file:"||!A.ActiveXObject)?function(){return new A.XMLHttpRequest}:function(){try{return new A.ActiveXObject("Microsoft.XMLHTTP")}catch(a){}},accepts:{xml:"application/xml, text/xml",html:"text/html",script:"text/javascript, application/javascript",json:"application/json, text/javascript",text:"text/plain",_default:"*/*"}},lastModified:{},etag:{},ajax:function(a){function b(){e.success&& +e.success.call(k,o,i,x);e.global&&f("ajaxSuccess",[x,e])}function d(){e.complete&&e.complete.call(k,x,i);e.global&&f("ajaxComplete",[x,e]);e.global&&!--c.active&&c.event.trigger("ajaxStop")}function f(q,p){(e.context?c(e.context):c.event).trigger(q,p)}var e=c.extend(true,{},c.ajaxSettings,a),j,i,o,k=a&&a.context||e,n=e.type.toUpperCase();if(e.data&&e.processData&&typeof e.data!=="string")e.data=c.param(e.data,e.traditional);if(e.dataType==="jsonp"){if(n==="GET")N.test(e.url)||(e.url+=(ka.test(e.url)? +"&":"?")+(e.jsonp||"callback")+"=?");else if(!e.data||!N.test(e.data))e.data=(e.data?e.data+"&":"")+(e.jsonp||"callback")+"=?";e.dataType="json"}if(e.dataType==="json"&&(e.data&&N.test(e.data)||N.test(e.url))){j=e.jsonpCallback||"jsonp"+sb++;if(e.data)e.data=(e.data+"").replace(N,"="+j+"$1");e.url=e.url.replace(N,"="+j+"$1");e.dataType="script";A[j]=A[j]||function(q){o=q;b();d();A[j]=w;try{delete A[j]}catch(p){}z&&z.removeChild(C)}}if(e.dataType==="script"&&e.cache===null)e.cache=false;if(e.cache=== +false&&n==="GET"){var r=J(),u=e.url.replace(wb,"$1_="+r+"$2");e.url=u+(u===e.url?(ka.test(e.url)?"&":"?")+"_="+r:"")}if(e.data&&n==="GET")e.url+=(ka.test(e.url)?"&":"?")+e.data;e.global&&!c.active++&&c.event.trigger("ajaxStart");r=(r=xb.exec(e.url))&&(r[1]&&r[1]!==location.protocol||r[2]!==location.host);if(e.dataType==="script"&&n==="GET"&&r){var z=s.getElementsByTagName("head")[0]||s.documentElement,C=s.createElement("script");C.src=e.url;if(e.scriptCharset)C.charset=e.scriptCharset;if(!j){var B= +false;C.onload=C.onreadystatechange=function(){if(!B&&(!this.readyState||this.readyState==="loaded"||this.readyState==="complete")){B=true;b();d();C.onload=C.onreadystatechange=null;z&&C.parentNode&&z.removeChild(C)}}}z.insertBefore(C,z.firstChild);return w}var E=false,x=e.xhr();if(x){e.username?x.open(n,e.url,e.async,e.username,e.password):x.open(n,e.url,e.async);try{if(e.data||a&&a.contentType)x.setRequestHeader("Content-Type",e.contentType);if(e.ifModified){c.lastModified[e.url]&&x.setRequestHeader("If-Modified-Since", +c.lastModified[e.url]);c.etag[e.url]&&x.setRequestHeader("If-None-Match",c.etag[e.url])}r||x.setRequestHeader("X-Requested-With","XMLHttpRequest");x.setRequestHeader("Accept",e.dataType&&e.accepts[e.dataType]?e.accepts[e.dataType]+", */*":e.accepts._default)}catch(ga){}if(e.beforeSend&&e.beforeSend.call(k,x,e)===false){e.global&&!--c.active&&c.event.trigger("ajaxStop");x.abort();return false}e.global&&f("ajaxSend",[x,e]);var g=x.onreadystatechange=function(q){if(!x||x.readyState===0||q==="abort"){E|| +d();E=true;if(x)x.onreadystatechange=c.noop}else if(!E&&x&&(x.readyState===4||q==="timeout")){E=true;x.onreadystatechange=c.noop;i=q==="timeout"?"timeout":!c.httpSuccess(x)?"error":e.ifModified&&c.httpNotModified(x,e.url)?"notmodified":"success";var p;if(i==="success")try{o=c.httpData(x,e.dataType,e)}catch(v){i="parsererror";p=v}if(i==="success"||i==="notmodified")j||b();else c.handleError(e,x,i,p);d();q==="timeout"&&x.abort();if(e.async)x=null}};try{var h=x.abort;x.abort=function(){x&&h.call(x); +g("abort")}}catch(l){}e.async&&e.timeout>0&&setTimeout(function(){x&&!E&&g("timeout")},e.timeout);try{x.send(n==="POST"||n==="PUT"||n==="DELETE"?e.data:null)}catch(m){c.handleError(e,x,null,m);d()}e.async||g();return x}},handleError:function(a,b,d,f){if(a.error)a.error.call(a.context||a,b,d,f);if(a.global)(a.context?c(a.context):c.event).trigger("ajaxError",[b,a,f])},active:0,httpSuccess:function(a){try{return!a.status&&location.protocol==="file:"||a.status>=200&&a.status<300||a.status===304||a.status=== +1223||a.status===0}catch(b){}return false},httpNotModified:function(a,b){var d=a.getResponseHeader("Last-Modified"),f=a.getResponseHeader("Etag");if(d)c.lastModified[b]=d;if(f)c.etag[b]=f;return a.status===304||a.status===0},httpData:function(a,b,d){var f=a.getResponseHeader("content-type")||"",e=b==="xml"||!b&&f.indexOf("xml")>=0;a=e?a.responseXML:a.responseText;e&&a.documentElement.nodeName==="parsererror"&&c.error("parsererror");if(d&&d.dataFilter)a=d.dataFilter(a,b);if(typeof a==="string")if(b=== +"json"||!b&&f.indexOf("json")>=0)a=c.parseJSON(a);else if(b==="script"||!b&&f.indexOf("javascript")>=0)c.globalEval(a);return a},param:function(a,b){function d(i,o){if(c.isArray(o))c.each(o,function(k,n){b||/\[\]$/.test(i)?f(i,n):d(i+"["+(typeof n==="object"||c.isArray(n)?k:"")+"]",n)});else!b&&o!=null&&typeof o==="object"?c.each(o,function(k,n){d(i+"["+k+"]",n)}):f(i,o)}function f(i,o){o=c.isFunction(o)?o():o;e[e.length]=encodeURIComponent(i)+"="+encodeURIComponent(o)}var e=[];if(b===w)b=c.ajaxSettings.traditional; +if(c.isArray(a)||a.jquery)c.each(a,function(){f(this.name,this.value)});else for(var j in a)d(j,a[j]);return e.join("&").replace(yb,"+")}});var la={},Ab=/toggle|show|hide/,Bb=/^([+-]=)?([\d+-.]+)(.*)$/,W,va=[["height","marginTop","marginBottom","paddingTop","paddingBottom"],["width","marginLeft","marginRight","paddingLeft","paddingRight"],["opacity"]];c.fn.extend({show:function(a,b){if(a||a===0)return this.animate(K("show",3),a,b);else{a=0;for(b=this.length;a").appendTo("body");f=e.css("display");if(f==="none")f="block";e.remove();la[d]=f}c.data(this[a],"olddisplay",f)}}a=0;for(b=this.length;a=0;f--)if(d[f].elem===this){b&&d[f](true);d.splice(f,1)}});b||this.dequeue();return this}});c.each({slideDown:K("show",1),slideUp:K("hide",1),slideToggle:K("toggle",1),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"}},function(a,b){c.fn[a]=function(d,f){return this.animate(b,d,f)}});c.extend({speed:function(a,b,d){var f=a&&typeof a==="object"?a:{complete:d||!d&&b||c.isFunction(a)&&a,duration:a,easing:d&&b||b&&!c.isFunction(b)&&b};f.duration=c.fx.off?0:typeof f.duration=== +"number"?f.duration:c.fx.speeds[f.duration]||c.fx.speeds._default;f.old=f.complete;f.complete=function(){f.queue!==false&&c(this).dequeue();c.isFunction(f.old)&&f.old.call(this)};return f},easing:{linear:function(a,b,d,f){return d+f*a},swing:function(a,b,d,f){return(-Math.cos(a*Math.PI)/2+0.5)*f+d}},timers:[],fx:function(a,b,d){this.options=b;this.elem=a;this.prop=d;if(!b.orig)b.orig={}}});c.fx.prototype={update:function(){this.options.step&&this.options.step.call(this.elem,this.now,this);(c.fx.step[this.prop]|| +c.fx.step._default)(this);if((this.prop==="height"||this.prop==="width")&&this.elem.style)this.elem.style.display="block"},cur:function(a){if(this.elem[this.prop]!=null&&(!this.elem.style||this.elem.style[this.prop]==null))return this.elem[this.prop];return(a=parseFloat(c.css(this.elem,this.prop,a)))&&a>-10000?a:parseFloat(c.curCSS(this.elem,this.prop))||0},custom:function(a,b,d){function f(j){return e.step(j)}this.startTime=J();this.start=a;this.end=b;this.unit=d||this.unit||"px";this.now=this.start; +this.pos=this.state=0;var e=this;f.elem=this.elem;if(f()&&c.timers.push(f)&&!W)W=setInterval(c.fx.tick,13)},show:function(){this.options.orig[this.prop]=c.style(this.elem,this.prop);this.options.show=true;this.custom(this.prop==="width"||this.prop==="height"?1:0,this.cur());c(this.elem).show()},hide:function(){this.options.orig[this.prop]=c.style(this.elem,this.prop);this.options.hide=true;this.custom(this.cur(),0)},step:function(a){var b=J(),d=true;if(a||b>=this.options.duration+this.startTime){this.now= +this.end;this.pos=this.state=1;this.update();this.options.curAnim[this.prop]=true;for(var f in this.options.curAnim)if(this.options.curAnim[f]!==true)d=false;if(d){if(this.options.display!=null){this.elem.style.overflow=this.options.overflow;a=c.data(this.elem,"olddisplay");this.elem.style.display=a?a:this.options.display;if(c.css(this.elem,"display")==="none")this.elem.style.display="block"}this.options.hide&&c(this.elem).hide();if(this.options.hide||this.options.show)for(var e in this.options.curAnim)c.style(this.elem, +e,this.options.orig[e]);this.options.complete.call(this.elem)}return false}else{e=b-this.startTime;this.state=e/this.options.duration;a=this.options.easing||(c.easing.swing?"swing":"linear");this.pos=c.easing[this.options.specialEasing&&this.options.specialEasing[this.prop]||a](this.state,e,0,1,this.options.duration);this.now=this.start+(this.end-this.start)*this.pos;this.update()}return true}};c.extend(c.fx,{tick:function(){for(var a=c.timers,b=0;b
"; +a.insertBefore(b,a.firstChild);d=b.firstChild;f=d.firstChild;e=d.nextSibling.firstChild.firstChild;this.doesNotAddBorder=f.offsetTop!==5;this.doesAddBorderForTableAndCells=e.offsetTop===5;f.style.position="fixed";f.style.top="20px";this.supportsFixedPosition=f.offsetTop===20||f.offsetTop===15;f.style.position=f.style.top="";d.style.overflow="hidden";d.style.position="relative";this.subtractsBorderForOverflowNotVisible=f.offsetTop===-5;this.doesNotIncludeMarginInBodyOffset=a.offsetTop!==j;a.removeChild(b); +c.offset.initialize=c.noop},bodyOffset:function(a){var b=a.offsetTop,d=a.offsetLeft;c.offset.initialize();if(c.offset.doesNotIncludeMarginInBodyOffset){b+=parseFloat(c.curCSS(a,"marginTop",true))||0;d+=parseFloat(c.curCSS(a,"marginLeft",true))||0}return{top:b,left:d}},setOffset:function(a,b,d){if(/static/.test(c.curCSS(a,"position")))a.style.position="relative";var f=c(a),e=f.offset(),j=parseInt(c.curCSS(a,"top",true),10)||0,i=parseInt(c.curCSS(a,"left",true),10)||0;if(c.isFunction(b))b=b.call(a, +d,e);d={top:b.top-e.top+j,left:b.left-e.left+i};"using"in b?b.using.call(a,d):f.css(d)}};c.fn.extend({position:function(){if(!this[0])return null;var a=this[0],b=this.offsetParent(),d=this.offset(),f=/^body|html$/i.test(b[0].nodeName)?{top:0,left:0}:b.offset();d.top-=parseFloat(c.curCSS(a,"marginTop",true))||0;d.left-=parseFloat(c.curCSS(a,"marginLeft",true))||0;f.top+=parseFloat(c.curCSS(b[0],"borderTopWidth",true))||0;f.left+=parseFloat(c.curCSS(b[0],"borderLeftWidth",true))||0;return{top:d.top- +f.top,left:d.left-f.left}},offsetParent:function(){return this.map(function(){for(var a=this.offsetParent||s.body;a&&!/^body|html$/i.test(a.nodeName)&&c.css(a,"position")==="static";)a=a.offsetParent;return a})}});c.each(["Left","Top"],function(a,b){var d="scroll"+b;c.fn[d]=function(f){var e=this[0],j;if(!e)return null;if(f!==w)return this.each(function(){if(j=wa(this))j.scrollTo(!a?f:c(j).scrollLeft(),a?f:c(j).scrollTop());else this[d]=f});else return(j=wa(e))?"pageXOffset"in j?j[a?"pageYOffset": +"pageXOffset"]:c.support.boxModel&&j.document.documentElement[d]||j.document.body[d]:e[d]}});c.each(["Height","Width"],function(a,b){var d=b.toLowerCase();c.fn["inner"+b]=function(){return this[0]?c.css(this[0],d,false,"padding"):null};c.fn["outer"+b]=function(f){return this[0]?c.css(this[0],d,false,f?"margin":"border"):null};c.fn[d]=function(f){var e=this[0];if(!e)return f==null?null:this;if(c.isFunction(f))return this.each(function(j){var i=c(this);i[d](f.call(this,j,i[d]()))});return"scrollTo"in +e&&e.document?e.document.compatMode==="CSS1Compat"&&e.document.documentElement["client"+b]||e.document.body["client"+b]:e.nodeType===9?Math.max(e.documentElement["client"+b],e.body["scroll"+b],e.documentElement["scroll"+b],e.body["offset"+b],e.documentElement["offset"+b]):f===w?c.css(e,d):this.css(d,typeof f==="string"?f:f+"px")}});A.jQuery=A.$=c})(window); diff --git a/eg/tryhy/js/jquery.console.js b/eg/tryhy/js/jquery.console.js new file mode 100644 index 0000000..10e893e --- /dev/null +++ b/eg/tryhy/js/jquery.console.js @@ -0,0 +1,721 @@ +// JQuery Console 1.0 +// Sun Feb 21 20:28:47 GMT 2010 +// +// Copyright 2010 Chris Done, Simon David Pratt. All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions +// are met: +// +// 1. Redistributions of source code must retain the above +// copyright notice, this list of conditions and the following +// disclaimer. +// +// 2. Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following +// disclaimer in the documentation and/or other materials +// provided with the distribution. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS +// FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE +// COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, +// INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, +// BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +// LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +// CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +// LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN +// ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +// POSSIBILITY OF SUCH DAMAGE. + +// TESTED ON +// Internet Explorer 6 +// Opera 10.01 +// Chromium 4.0.237.0 (Ubuntu build 31094) +// Firefox 3.5.8, 3.6.2 (Mac) +// Safari 4.0.5 (6531.22.7) (Mac) +// Google Chrome 5.0.375.55 (Mac) + +(function($){ + var isWebkit = !!~navigator.userAgent.indexOf(' AppleWebKit/'); + + $.fn.console = function(config){ + //////////////////////////////////////////////////////////////////////// + // Constants + // Some are enums, data types, others just for optimisation + var keyCodes = { + // left + 37: moveBackward, + // right + 39: moveForward, + // up + 38: previousHistory, + // down + 40: nextHistory, + // backspace + 8: backDelete, + // delete + 46: forwardDelete, + // end + 35: moveToEnd, + // start + 36: moveToStart, + // return + 13: commandTrigger, + // tab + 18: doNothing, + // tab + 9: doComplete + }; + var ctrlCodes = { + // C-a + 65: moveToStart, + // C-e + 69: moveToEnd, + // C-d + 68: forwardDelete, + // C-n + 78: nextHistory, + // C-p + 80: previousHistory, + // C-b + 66: moveBackward, + // C-f + 70: moveForward, + // C-k + 75: deleteUntilEnd + }; + if(config.ctrlCodes) { + $.extend(ctrlCodes, config.ctrlCodes); + } + var altCodes = { + // M-f + 70: moveToNextWord, + // M-b + 66: moveToPreviousWord, + // M-d + 68: deleteNextWord + }; + var cursor = ' '; + + //////////////////////////////////////////////////////////////////////// + // Globals + var container = $(this); + var inner = $('
'); + // erjiang: changed this from a text input to a textarea so we + // can get pasted newlines + var typer = $(''); + // Prompt + var promptBox; + var prompt; + var promptLabel = config && config.promptLabel? config.promptLabel : "> "; + var continuedPromptLabel = config && config.continuedPromptLabel? + config.continuedPromptLabel : "> "; + var column = 0; + var promptText = ''; + var restoreText = ''; + var continuedText = ''; + // Prompt history stack + var history = []; + var ringn = 0; + // For reasons unknown to The Sword of Michael himself, Opera + // triggers and sends a key character when you hit various + // keys like PgUp, End, etc. So there is no way of knowing + // when a user has typed '#' or End. My solution is in the + // typer.keydown and typer.keypress functions; I use the + // variable below to ignore the keypress event if the keydown + // event succeeds. + var cancelKeyPress = 0; + // When this value is false, the prompt will not respond to input + var acceptInput = true; + // When this value is true, the command has been canceled + var cancelCommand = false; + + // External exports object + var extern = {}; + + //////////////////////////////////////////////////////////////////////// + // Main entry point + (function(){ + container.append(inner); + inner.append(typer); + typer.css({position:'absolute',top:0,left:'-9999px'}); + if (config.welcomeMessage) + message(config.welcomeMessage,'jquery-console-welcome'); + newPromptBox(); + if (config.autofocus) { + inner.addClass('jquery-console-focus'); + typer.focus(); + setTimeout(function(){ + inner.addClass('jquery-console-focus'); + typer.focus(); + },100); + } + extern.inner = inner; + extern.typer = typer; + extern.scrollToBottom = scrollToBottom; + })(); + + //////////////////////////////////////////////////////////////////////// + // Reset terminal + extern.reset = function(){ + var welcome = (typeof config.welcomeMessage != 'undefined'); + inner.parent().fadeOut(function(){ + inner.find('div').each(function(){ + if (!welcome) { + $(this).remove(); + } else { + welcome = false; + } + }); + newPromptBox(); + inner.parent().fadeIn(function(){ + inner.addClass('jquery-console-focus'); + typer.focus(); + }); + }); + }; + + //////////////////////////////////////////////////////////////////////// + // Reset terminal + extern.notice = function(msg,style){ + var n = $('
').append($('
').text(msg)) + .css({visibility:'hidden'}); + container.append(n); + var focused = true; + if (style=='fadeout') + setTimeout(function(){ + n.fadeOut(function(){ + n.remove(); + }); + },4000); + else if (style=='prompt') { + var a = $('
'); + n.append(a); + focused = false; + a.click(function(){ n.fadeOut(function(){ n.remove();inner.css({opacity:1}) }); }); + } + var h = n.height(); + n.css({height:'0px',visibility:'visible'}) + .animate({height:h+'px'},function(){ + if (!focused) inner.css({opacity:0.5}); + }); + n.css('cursor','default'); + return n; + }; + + //////////////////////////////////////////////////////////////////////// + // Make a new prompt box + function newPromptBox() { + column = 0; + promptText = ''; + ringn = 0; // Reset the position of the history ring + enableInput(); + promptBox = $('
'); + var label = $(''); + var labelText = extern.continuedPrompt? continuedPromptLabel : promptLabel; + promptBox.append(label.text(labelText).show()); + label.html(label.html().replace(' ',' ')); + prompt = $(''); + promptBox.append(prompt); + inner.append(promptBox); + updatePromptDisplay(); + }; + + //////////////////////////////////////////////////////////////////////// + // Handle setting focus + container.click(function(){ + inner.addClass('jquery-console-focus'); + inner.removeClass('jquery-console-nofocus'); + if (isWebkit) { + typer.focusWithoutScrolling(); + } else { + typer.css('position', 'fixed').focus(); + } + scrollToBottom(); + return false; + }); + + //////////////////////////////////////////////////////////////////////// + // Handle losing focus + typer.blur(function(){ + inner.removeClass('jquery-console-focus'); + inner.addClass('jquery-console-nofocus'); + }); + + //////////////////////////////////////////////////////////////////////// + // Bind to the paste event of the input box so we know when we + // get pasted data + typer.bind('paste', function(e) { + // wipe typer input clean just in case + typer.val(""); + // this timeout is required because the onpaste event is + // fired *before* the text is actually pasted + setTimeout(function() { + typer.consoleInsert(typer.val()); + typer.val(""); + }, 0); + }); + + //////////////////////////////////////////////////////////////////////// + // Handle key hit before translation + // For picking up control characters like up/left/down/right + + typer.keydown(function(e){ + cancelKeyPress = 0; + var keyCode = e.keyCode; + // C-c: cancel the execution + if(e.ctrlKey && keyCode == 67) { + cancelKeyPress = keyCode; + cancelExecution(); + return false; + } + if (acceptInput) { + if (keyCode in keyCodes) { + cancelKeyPress = keyCode; + (keyCodes[keyCode])(); + return false; + } else if (e.ctrlKey && keyCode in ctrlCodes) { + cancelKeyPress = keyCode; + (ctrlCodes[keyCode])(); + return false; + } else if (e.altKey && keyCode in altCodes) { + cancelKeyPress = keyCode; + (altCodes[keyCode])(); + return false; + } + } + }); + + //////////////////////////////////////////////////////////////////////// + // Handle key press + typer.keypress(function(e){ + var keyCode = e.keyCode || e.which; + if (isIgnorableKey(e)) { + return false; + } + // C-v: don't insert on paste event + if ((e.ctrlKey || e.metaKey) && String.fromCharCode(keyCode).toLowerCase() == 'v') { + return true; + } + if (acceptInput && cancelKeyPress != keyCode && keyCode >= 32){ + if (cancelKeyPress) return false; + if ( + typeof config.charInsertTrigger == 'undefined' || ( + typeof config.charInsertTrigger == 'function' && + config.charInsertTrigger(keyCode,promptText) + ) + ){ + typer.consoleInsert(keyCode); + } + } + if (isWebkit) return false; + }); + + function isIgnorableKey(e) { + // for now just filter alt+tab that we receive on some platforms when + // user switches windows (goes away from the browser) + return ((e.keyCode == keyCodes.tab || e.keyCode == 192) && e.altKey); + }; + + //////////////////////////////////////////////////////////////////////// + // Rotate through the command history + function rotateHistory(n){ + if (history.length == 0) return; + ringn += n; + if (ringn < 0) ringn = history.length; + else if (ringn > history.length) ringn = 0; + var prevText = promptText; + if (ringn == 0) { + promptText = restoreText; + } else { + promptText = history[ringn - 1]; + } + if (config.historyPreserveColumn) { + if (promptText.length < column + 1) { + column = promptText.length; + } else if (column == 0) { + column = promptText.length; + } + } else { + column = promptText.length; + } + updatePromptDisplay(); + }; + + function previousHistory() { + rotateHistory(-1); + }; + + function nextHistory() { + rotateHistory(1); + }; + + // Add something to the history ring + function addToHistory(line){ + history.push(line); + restoreText = ''; + }; + + // Delete the character at the current position + function deleteCharAtPos(){ + if (column < promptText.length){ + promptText = + promptText.substring(0,column) + + promptText.substring(column+1); + restoreText = promptText; + return true; + } else return false; + }; + + function backDelete() { + if (moveColumn(-1)){ + deleteCharAtPos(); + updatePromptDisplay(); + } + }; + + function forwardDelete() { + if (deleteCharAtPos()){ + updatePromptDisplay(); + } + }; + + function deleteUntilEnd() { + while(deleteCharAtPos()) { + updatePromptDisplay(); + } + }; + + function deleteNextWord() { + // A word is defined within this context as a series of alphanumeric + // characters. + // Delete up to the next alphanumeric character + while( + column < promptText.length && + !isCharAlphanumeric(promptText[column]) + ) { + deleteCharAtPos(); + updatePromptDisplay(); + } + // Then, delete until the next non-alphanumeric character + while( + column < promptText.length && + isCharAlphanumeric(promptText[column]) + ) { + deleteCharAtPos(); + updatePromptDisplay(); + } + }; + + //////////////////////////////////////////////////////////////////////// + // Validate command and trigger it if valid, or show a validation error + function commandTrigger() { + var line = promptText; + if (typeof config.commandValidate == 'function') { + var ret = config.commandValidate(line); + if (ret == true || ret == false) { + if (ret) { + handleCommand(); + } + } else { + commandResult(ret,"jquery-console-message-error"); + } + } else { + handleCommand(); + } + }; + + // Scroll to the bottom of the view + function scrollToBottom() { + var version = jQuery.fn.jquery.split('.'); + var major = parseInt(version[0]); + var minor = parseInt(version[1]); + + // check if we're using jquery > 1.6 + if ((major == 1 && minor > 6) || major > 1) { + inner.prop({ scrollTop: inner.prop("scrollHeight") }); + } + else { + inner.attr({ scrollTop: inner.attr("scrollHeight") }); + } + }; + + function cancelExecution() { + if(typeof config.cancelHandle == 'function') { + config.cancelHandle(); + } + } + + //////////////////////////////////////////////////////////////////////// + // Handle a command + function handleCommand() { + if (typeof config.commandHandle == 'function') { + disableInput(); + addToHistory(promptText); + var text = promptText; + if (extern.continuedPrompt) { + if (continuedText) + continuedText += '\n' + promptText; + else continuedText = promptText; + } else continuedText = undefined; + if (continuedText) text = continuedText; + var ret = config.commandHandle(text,function(msgs){ + commandResult(msgs); + }); + if (extern.continuedPrompt && !continuedText) + continuedText = promptText; + if (typeof ret == 'boolean') { + if (ret) { + // Command succeeded without a result. + commandResult(); + } else { + commandResult( + 'Command failed.', + "jquery-console-message-error" + ); + } + } else if (typeof ret == "string") { + commandResult(ret,"jquery-console-message-success"); + } else if (typeof ret == 'object' && ret.length) { + commandResult(ret); + } else if (extern.continuedPrompt) { + commandResult(); + } + } + }; + + //////////////////////////////////////////////////////////////////////// + // Disable input + function disableInput() { + acceptInput = false; + }; + + // Enable input + function enableInput() { + acceptInput = true; + } + + //////////////////////////////////////////////////////////////////////// + // Reset the prompt in invalid command + function commandResult(msg,className) { + column = -1; + updatePromptDisplay(); + if (typeof msg == 'string') { + message(msg,className); + } else if ($.isArray(msg)) { + for (var x in msg) { + var ret = msg[x]; + message(ret.msg,ret.className); + } + } else { // Assume it's a DOM node or jQuery object. + inner.append(msg); + } + newPromptBox(); + }; + + //////////////////////////////////////////////////////////////////////// + // Display a message + function message(msg,className) { + var mesg = $('
'); + if (className) mesg.addClass(className); + mesg.filledText(msg).hide(); + inner.append(mesg); + mesg.show(); + }; + + //////////////////////////////////////////////////////////////////////// + // Handle normal character insertion + // data can either be a number, which will be interpreted as the + // numeric value of a single character, or a string + typer.consoleInsert = function(data){ + // TODO: remove redundant indirection + var text = isNaN(data) ? data : String.fromCharCode(data); + var before = promptText.substring(0,column); + var after = promptText.substring(column); + promptText = before + text + after; + moveColumn(text.length); + restoreText = promptText; + updatePromptDisplay(); + }; + + //////////////////////////////////////////////////////////////////////// + // Move to another column relative to this one + // Negative means go back, positive means go forward. + function moveColumn(n){ + if (column + n >= 0 && column + n <= promptText.length){ + column += n; + return true; + } else return false; + }; + + function moveForward() { + if(moveColumn(1)) { + updatePromptDisplay(); + return true; + } + return false; + }; + + function moveBackward() { + if(moveColumn(-1)) { + updatePromptDisplay(); + return true; + } + return false; + }; + + function moveToStart() { + if (moveColumn(-column)) + updatePromptDisplay(); + }; + + function moveToEnd() { + if (moveColumn(promptText.length-column)) + updatePromptDisplay(); + }; + + function moveToNextWord() { + while( + column < promptText.length && + !isCharAlphanumeric(promptText[column]) && + moveForward() + ) {} + while( + column < promptText.length && + isCharAlphanumeric(promptText[column]) && + moveForward() + ) {} + }; + + function moveToPreviousWord() { + // Move backward until we find the first alphanumeric + while( + column -1 >= 0 && + !isCharAlphanumeric(promptText[column-1]) && + moveBackward() + ) {} + // Move until we find the first non-alphanumeric + while( + column -1 >= 0 && + isCharAlphanumeric(promptText[column-1]) && + moveBackward() + ) {} + }; + + function isCharAlphanumeric(charToTest) { + if(typeof charToTest == 'string') { + var code = charToTest.charCodeAt(); + return (code >= 'A'.charCodeAt() && code <= 'Z'.charCodeAt()) || + (code >= 'a'.charCodeAt() && code <= 'z'.charCodeAt()) || + (code >= '0'.charCodeAt() && code <= '9'.charCodeAt()); + } + return false; + }; + + function doComplete() { + if(typeof config.completeHandle == 'function') { + var completions = config.completeHandle(promptText); + var len = completions.length; + if (len === 1) { + extern.promptText(promptText + completions[0]); + } else if (len > 1 && config.cols) { + var prompt = promptText; + // Compute the number of rows that will fit in the width + var max = 0; + for (var i = 0;i < len;i++) { + max = Math.max(max, completions[i].length); + } + max += 2; + var n = Math.floor(config.cols / max); + var buffer = ""; + var col = 0; + for (i = 0;i < len;i++) { + var completion = completions[i]; + buffer += completions[i]; + for (var j = completion.length;j < max;j++) { + buffer += " "; + } + if (++col >= n) { + buffer += "\n"; + col = 0; + } + } + commandResult(buffer,"jquery-console-message-value"); + extern.promptText(prompt); + } + } + }; + + function doNothing() {}; + + extern.promptText = function(text){ + if (typeof text === 'string') { + promptText = text; + column = promptText.length; + updatePromptDisplay(); + } + return promptText; + }; + + //////////////////////////////////////////////////////////////////////// + // Update the prompt display + function updatePromptDisplay(){ + var line = promptText; + var html = ''; + if (column > 0 && line == ''){ + // When we have an empty line just display a cursor. + html = cursor; + } else if (column == promptText.length){ + // We're at the end of the line, so we need to display + // the text *and* cursor. + html = htmlEncode(line) + cursor; + } else { + // Grab the current character, if there is one, and + // make it the current cursor. + var before = line.substring(0, column); + var current = line.substring(column,column+1); + if (current){ + current = + '' + + htmlEncode(current) + + ''; + } + var after = line.substring(column+1); + html = htmlEncode(before) + current + htmlEncode(after); + } + prompt.html(html); + scrollToBottom(); + }; + + // Simple HTML encoding + // Simply replace '<', '>' and '&' + // TODO: Use jQuery's .html() trick, or grab a proper, fast + // HTML encoder. + function htmlEncode(text){ + return ( + text.replace(/&/g,'&') + .replace(/') + ); + }; + + return extern; + }; + // Simple utility for printing messages + $.fn.filledText = function(txt){ + $(this).text(txt); + $(this).html($(this).html().replace(/\n/g,'
')); + return this; + }; + + // Alternative method for focus without scrolling + $.fn.focusWithoutScrolling = function(){ + var x = window.scrollX, y = window.scrollY; + $(this).focus(); + window.scrollTo(x, y); + }; +})(jQuery); diff --git a/eg/tryhy/js/repl.js b/eg/tryhy/js/repl.js new file mode 100644 index 0000000..5f72fcd --- /dev/null +++ b/eg/tryhy/js/repl.js @@ -0,0 +1,17 @@ +$(document).ready(function(){ + $('#hy-console').console({ + promptLabel: 'hy=> ', + commandValidate:function(line){ + if (line == "") return false; + else return true; + }, + commandHandle:function(line, report){ + $.get("/eval", {code: line}, function(data) { + report([{msg : data, className:"jquery-console-message-value"}]); + }); + }, + animateScroll:true, + promptHistory:true, + autofocus:true, + }).promptText('(+ 41 1)'); +}); diff --git a/eg/tryhy/main.hy b/eg/tryhy/main.hy new file mode 100644 index 0000000..9914643 --- /dev/null +++ b/eg/tryhy/main.hy @@ -0,0 +1,21 @@ +(require hy.contrib.meth) +(import [hy.cmdline [HyREPL]] + [sys] + [StringIO [StringIO]] + [flask [Flask redirect request]]) + +(defclass MyHyREPL [HyREPL] + [[eval (fn [self code] + (setv old-stdout sys.stdout) + (setv fake-stdout (StringIO)) + (setv sys.stdout fake-stdout) + (HyREPL.runsource self code "" "single") + (setv sys.stdout old-stdout) + (fake-stdout.getvalue))]]) + + +(def repl (MyHyREPL)) + +(def app (Flask __name__)) +(route hello "/" [name] (.format "(hello \"{0}!\")" name)) +(route eval-get "/eval" [] (repl.eval (get request.args "code"))) diff --git a/eg/tryhy/main.py b/eg/tryhy/main.py new file mode 100644 index 0000000..4eff14e --- /dev/null +++ b/eg/tryhy/main.py @@ -0,0 +1,2 @@ +from hy.importer import import_file_to_module +__hymain__ = import_file_to_module('__hymain__', 'main.hy') diff --git a/eg/tryhy/requirements.txt b/eg/tryhy/requirements.txt new file mode 100644 index 0000000..bf177c9 --- /dev/null +++ b/eg/tryhy/requirements.txt @@ -0,0 +1,2 @@ +Flask +hy==0.9.10 # master is broken because of rply From cccbcea13be8381207c6f8c942faee29c4d73ad6 Mon Sep 17 00:00:00 2001 From: Johan Euphrosine Date: Thu, 31 Oct 2013 14:47:06 -0700 Subject: [PATCH 02/20] eg/tryhy: update appid --- eg/tryhy/app.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/eg/tryhy/app.yaml b/eg/tryhy/app.yaml index 88ad3f5..0ce0551 100644 --- a/eg/tryhy/app.yaml +++ b/eg/tryhy/app.yaml @@ -1,4 +1,4 @@ -application: tryhy +application: try-hy version: 1 runtime: python27 api_version: 1 From 0aae750068a727ae85cb346c3d6f91c80c979b0b Mon Sep 17 00:00:00 2001 From: Johan Euphrosine Date: Thu, 31 Oct 2013 14:50:06 -0700 Subject: [PATCH 03/20] eg/tryhy: update title eg/tryhy: update title --- eg/tryhy/index.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/eg/tryhy/index.html b/eg/tryhy/index.html index 3a5309f..3ee5a48 100644 --- a/eg/tryhy/index.html +++ b/eg/tryhy/index.html @@ -1,7 +1,7 @@ - JQuery Console Demo + try-hylang From 2ab35332a03e183922a6fcef28f8d92e300ae86d Mon Sep 17 00:00:00 2001 From: Nicolas Dandrimont Date: Fri, 1 Nov 2013 04:04:12 +0100 Subject: [PATCH 04/20] Ship the hy files in hy/contrib --- setup.py | 1 + 1 file changed, 1 insertion(+) diff --git a/setup.py b/setup.py index ac0b028..8660cd7 100755 --- a/setup.py +++ b/setup.py @@ -63,6 +63,7 @@ setup( }, packages=find_packages(exclude=['tests*']), package_data={ + 'hy.contrib': ['*.hy'], 'hy.core': ['*.hy'], }, author="Paul Tagliamonte", From a090b86b5e4cb1c5c6103c461f7c3a62204fd2b1 Mon Sep 17 00:00:00 2001 From: Johan Euphrosine Date: Fri, 1 Nov 2013 11:44:05 -0700 Subject: [PATCH 05/20] eg/tryhy: add error handling --- eg/tryhy/js/repl.js | 5 +++-- eg/tryhy/main.hy | 11 ++++++++--- 2 files changed, 11 insertions(+), 5 deletions(-) diff --git a/eg/tryhy/js/repl.js b/eg/tryhy/js/repl.js index 5f72fcd..91a22bb 100644 --- a/eg/tryhy/js/repl.js +++ b/eg/tryhy/js/repl.js @@ -6,8 +6,9 @@ $(document).ready(function(){ else return true; }, commandHandle:function(line, report){ - $.get("/eval", {code: line}, function(data) { - report([{msg : data, className:"jquery-console-message-value"}]); + $.getJSON("/eval", {code: line}, function(data) { + report([{msg : data.stdout, className:"jquery-console-message-value"}, + {msg : data.stderr, className:"jquery-console-message-error"}]); }); }, animateScroll:true, diff --git a/eg/tryhy/main.hy b/eg/tryhy/main.hy index 9914643..a1ec69b 100644 --- a/eg/tryhy/main.hy +++ b/eg/tryhy/main.hy @@ -2,20 +2,25 @@ (import [hy.cmdline [HyREPL]] [sys] [StringIO [StringIO]] - [flask [Flask redirect request]]) + [flask [Flask redirect request]] + [json]) (defclass MyHyREPL [HyREPL] [[eval (fn [self code] (setv old-stdout sys.stdout) + (setv old-stderr sys.stderr) (setv fake-stdout (StringIO)) (setv sys.stdout fake-stdout) + (setv fake-stderr (StringIO)) + (setv sys.stderr fake-stderr) (HyREPL.runsource self code "" "single") (setv sys.stdout old-stdout) - (fake-stdout.getvalue))]]) + (setv sys.stderr old-stderr) + {"stdout" (fake-stdout.getvalue) "stderr" (fake-stderr.getvalue)})]]) (def repl (MyHyREPL)) (def app (Flask __name__)) (route hello "/" [name] (.format "(hello \"{0}!\")" name)) -(route eval-get "/eval" [] (repl.eval (get request.args "code"))) +(route eval-get "/eval" [] (json.dumps (repl.eval (get request.args "code")))) From 079e3002a7f0a52e5c7ebdba3cb158f66b891bc4 Mon Sep 17 00:00:00 2001 From: Johan Euphrosine Date: Fri, 1 Nov 2013 16:21:54 -0700 Subject: [PATCH 06/20] ex/tryhy: per request repl instance --- eg/tryhy/js/repl.js | 17 +++++++++++++---- eg/tryhy/main.hy | 15 +++++++++------ 2 files changed, 22 insertions(+), 10 deletions(-) diff --git a/eg/tryhy/js/repl.js b/eg/tryhy/js/repl.js index 91a22bb..cc07a0b 100644 --- a/eg/tryhy/js/repl.js +++ b/eg/tryhy/js/repl.js @@ -1,15 +1,24 @@ $(document).ready(function(){ + var backlog = []; $('#hy-console').console({ promptLabel: 'hy=> ', commandValidate:function(line){ - if (line == "") return false; + if (line == '') return false; else return true; }, commandHandle:function(line, report){ - $.getJSON("/eval", {code: line}, function(data) { - report([{msg : data.stdout, className:"jquery-console-message-value"}, - {msg : data.stderr, className:"jquery-console-message-error"}]); + $.ajax({ + type: 'POST', + url: '/eval', + data: JSON.stringify({code: line, env: backlog}), + contentType: 'application/json', + dataType: 'json', + success: function(data) { + report([{msg : data.stdout, className:'jquery-console-message-value'}, + {msg : data.stderr, className:'jquery-console-message-error'}]); + } }); + backlog.push(line); }, animateScroll:true, promptHistory:true, diff --git a/eg/tryhy/main.hy b/eg/tryhy/main.hy index a1ec69b..2e1404e 100644 --- a/eg/tryhy/main.hy +++ b/eg/tryhy/main.hy @@ -1,4 +1,3 @@ -(require hy.contrib.meth) (import [hy.cmdline [HyREPL]] [sys] [StringIO [StringIO]] @@ -18,9 +17,13 @@ (setv sys.stderr old-stderr) {"stdout" (fake-stdout.getvalue) "stderr" (fake-stderr.getvalue)})]]) - -(def repl (MyHyREPL)) - (def app (Flask __name__)) -(route hello "/" [name] (.format "(hello \"{0}!\")" name)) -(route eval-get "/eval" [] (json.dumps (repl.eval (get request.args "code")))) + +(with-decorator (kwapply (app.route "/eval") {"methods" ["POST"]}) + (fn [] + (let [[repl (MyHyREPL)] [input (request.get_json)]] + (foreach [expr (get input "env")] + (repl.eval expr)) + (json.dumps (repl.eval (get input "code"))) + ))) + From 50ee81df131d541be392822e872ce78a81f75b49 Mon Sep 17 00:00:00 2001 From: Johan Euphrosine Date: Fri, 1 Nov 2013 23:34:27 -0700 Subject: [PATCH 07/20] eg/tryhy: add version number --- eg/tryhy/app.yaml | 4 ---- eg/tryhy/css/style.css | 3 +++ eg/tryhy/js/repl.js | 21 ++++++++++++++++++--- eg/tryhy/main.hy | 15 ++++++++++----- eg/tryhy/{ => templates}/index.html | 6 +++++- 5 files changed, 36 insertions(+), 13 deletions(-) rename eg/tryhy/{ => templates}/index.html (75%) diff --git a/eg/tryhy/app.yaml b/eg/tryhy/app.yaml index 0ce0551..b492c71 100644 --- a/eg/tryhy/app.yaml +++ b/eg/tryhy/app.yaml @@ -9,10 +9,6 @@ handlers: static_files: favicon.ico upload: favicon\.ico -- url: / - static_files: index.html - upload: index\.html - - url: /js static_dir: js diff --git a/eg/tryhy/css/style.css b/eg/tryhy/css/style.css index 917190e..1401b36 100644 --- a/eg/tryhy/css/style.css +++ b/eg/tryhy/css/style.css @@ -14,6 +14,9 @@ div.console div.jquery-console-message-value { color:#1ad027; font-family:monospace; padding:0.1em; } div.console div.jquery-console-message-type +{ color:#52666f; font-family:monospace; + padding:0.1em; } +div.console div.jquery-console-welcome { color:#52666f; font-family:monospace; padding:0.1em; } div.console span.jquery-console-prompt-label { font-weight:bold } diff --git a/eg/tryhy/js/repl.js b/eg/tryhy/js/repl.js index cc07a0b..bd82ffd 100644 --- a/eg/tryhy/js/repl.js +++ b/eg/tryhy/js/repl.js @@ -1,7 +1,7 @@ $(document).ready(function(){ var backlog = []; - $('#hy-console').console({ - promptLabel: 'hy=> ', + var console = $('#hy-console').console({ + promptLabel: '=> ', commandValidate:function(line){ if (line == '') return false; else return true; @@ -23,5 +23,20 @@ $(document).ready(function(){ animateScroll:true, promptHistory:true, autofocus:true, - }).promptText('(+ 41 1)'); + welcomeMessage: 'hy ({hy_version})'.supplant({hy_version: hy_version}) + }); + console.promptText('(+ 41 1)'); }); + + +if (!String.prototype.supplant) { + String.prototype.supplant = function (o) { + return this.replace( + /\{([^{}]*)\}/g, + function (a, b) { + var r = o[b]; + return typeof r === 'string' || typeof r === 'number' ? r : a; + } + ); + }; +} diff --git a/eg/tryhy/main.hy b/eg/tryhy/main.hy index 2e1404e..6d796a1 100644 --- a/eg/tryhy/main.hy +++ b/eg/tryhy/main.hy @@ -1,8 +1,9 @@ -(import [hy.cmdline [HyREPL]] - [sys] +(import [sys] [StringIO [StringIO]] - [flask [Flask redirect request]] - [json]) + [json] + [hy.cmdline [HyREPL]] + [hy] + [flask [Flask redirect request render_template]]) (defclass MyHyREPL [HyREPL] [[eval (fn [self code] @@ -19,6 +20,11 @@ (def app (Flask __name__)) +(with-decorator (kwapply (app.route "/") {"methods" ["GET"]}) + (fn [] + (kwapply (render_template "index.html") {"hy_version" hy.__version__}) + )) + (with-decorator (kwapply (app.route "/eval") {"methods" ["POST"]}) (fn [] (let [[repl (MyHyREPL)] [input (request.get_json)]] @@ -26,4 +32,3 @@ (repl.eval expr)) (json.dumps (repl.eval (get input "code"))) ))) - diff --git a/eg/tryhy/index.html b/eg/tryhy/templates/index.html similarity index 75% rename from eg/tryhy/index.html rename to eg/tryhy/templates/index.html index 3ee5a48..6cb7896 100644 --- a/eg/tryhy/index.html +++ b/eg/tryhy/templates/index.html @@ -6,9 +6,13 @@ + -
+
+
From 4976f0db0f6efd5c1d47a10693d1da0e591f1142 Mon Sep 17 00:00:00 2001 From: Johan Euphrosine Date: Fri, 1 Nov 2013 23:39:16 -0700 Subject: [PATCH 08/20] eg/tryhy: enable warmup request --- eg/tryhy/app.yaml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/eg/tryhy/app.yaml b/eg/tryhy/app.yaml index b492c71..50cdf5c 100644 --- a/eg/tryhy/app.yaml +++ b/eg/tryhy/app.yaml @@ -17,3 +17,6 @@ handlers: - url: .* script: main.__hymain__.app + +inbound_services: +- warmup \ No newline at end of file From c02a1c6b4ab00e678696b92a0caadd09f88aa1cf Mon Sep 17 00:00:00 2001 From: Johan Euphrosine Date: Sat, 2 Nov 2013 00:49:33 -0700 Subject: [PATCH 09/20] eg/hytry: add performance settings --- eg/tryhy/app.yaml | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/eg/tryhy/app.yaml b/eg/tryhy/app.yaml index 50cdf5c..ce371bf 100644 --- a/eg/tryhy/app.yaml +++ b/eg/tryhy/app.yaml @@ -3,6 +3,11 @@ version: 1 runtime: python27 api_version: 1 threadsafe: yes +automatic_scaling: + min_idle_instances: 1 + +inbound_services: +- warmup handlers: - url: /favicon\.ico @@ -17,6 +22,3 @@ handlers: - url: .* script: main.__hymain__.app - -inbound_services: -- warmup \ No newline at end of file From b099925eb23c16863442e7ba45720c69fcd5f9e0 Mon Sep 17 00:00:00 2001 From: Johan Euphrosine Date: Sat, 2 Nov 2013 01:12:11 -0700 Subject: [PATCH 10/20] eg/tryhy: add blinking cursor --- eg/tryhy/css/style.css | 16 ++++++++++++++++ eg/tryhy/js/repl.js | 2 ++ 2 files changed, 18 insertions(+) diff --git a/eg/tryhy/css/style.css b/eg/tryhy/css/style.css index 1401b36..fbdc4ff 100644 --- a/eg/tryhy/css/style.css +++ b/eg/tryhy/css/style.css @@ -20,3 +20,19 @@ div.console div.jquery-console-welcome { color:#52666f; font-family:monospace; padding:0.1em; } div.console span.jquery-console-prompt-label { font-weight:bold } + +span.jquery-console-cursor.running { + -webkit-animation-duration: 0.1s; + -webkit-animation-name: blink; + -webkit-animation-iteration-count: infinite; + -webkit-animation-direction: alternate; +} + +@-webkit-keyframes blink { + from { + opacity: 1.0 + } + to { + opacity: 0.5 + } +} \ No newline at end of file diff --git a/eg/tryhy/js/repl.js b/eg/tryhy/js/repl.js index bd82ffd..d2dd5a6 100644 --- a/eg/tryhy/js/repl.js +++ b/eg/tryhy/js/repl.js @@ -7,6 +7,7 @@ $(document).ready(function(){ else return true; }, commandHandle:function(line, report){ + $('.jquery-console-cursor').addClass('running'); $.ajax({ type: 'POST', url: '/eval', @@ -14,6 +15,7 @@ $(document).ready(function(){ contentType: 'application/json', dataType: 'json', success: function(data) { + $('.jquery-console-cursor').removeClass('running'); report([{msg : data.stdout, className:'jquery-console-message-value'}, {msg : data.stderr, className:'jquery-console-message-error'}]); } From 68891f5d324e3d03aa08cce5b36558b4eee25e6f Mon Sep 17 00:00:00 2001 From: Johan Euphrosine Date: Sat, 2 Nov 2013 01:25:17 -0700 Subject: [PATCH 11/20] eg/tryhy: add server_sofware to welcome message --- eg/tryhy/js/repl.js | 5 ++++- eg/tryhy/main.hy | 6 ++++-- eg/tryhy/templates/index.html | 1 + 3 files changed, 9 insertions(+), 3 deletions(-) diff --git a/eg/tryhy/js/repl.js b/eg/tryhy/js/repl.js index d2dd5a6..59899e0 100644 --- a/eg/tryhy/js/repl.js +++ b/eg/tryhy/js/repl.js @@ -25,7 +25,10 @@ $(document).ready(function(){ animateScroll:true, promptHistory:true, autofocus:true, - welcomeMessage: 'hy ({hy_version})'.supplant({hy_version: hy_version}) + welcomeMessage: 'hy ({hy_version}) [{server_software}]'.supplant({ + hy_version: hy_version, + server_software: server_software + }) }); console.promptText('(+ 41 1)'); }); diff --git a/eg/tryhy/main.hy b/eg/tryhy/main.hy index 6d796a1..1dc326f 100644 --- a/eg/tryhy/main.hy +++ b/eg/tryhy/main.hy @@ -1,4 +1,5 @@ -(import [sys] +(import [os] + [sys] [StringIO [StringIO]] [json] [hy.cmdline [HyREPL]] @@ -22,7 +23,8 @@ (with-decorator (kwapply (app.route "/") {"methods" ["GET"]}) (fn [] - (kwapply (render_template "index.html") {"hy_version" hy.__version__}) + (kwapply (render_template "index.html") + {"hy_version" hy.__version__ "server_software" (get os.environ "SERVER_SOFTWARE")}) )) (with-decorator (kwapply (app.route "/eval") {"methods" ["POST"]}) diff --git a/eg/tryhy/templates/index.html b/eg/tryhy/templates/index.html index 6cb7896..a88c261 100644 --- a/eg/tryhy/templates/index.html +++ b/eg/tryhy/templates/index.html @@ -8,6 +8,7 @@ From 5467d2f6bee47e1886424c18c446dbe91a76b8b2 Mon Sep 17 00:00:00 2001 From: Berker Peksag Date: Mon, 4 Nov 2013 16:12:11 +0200 Subject: [PATCH 12/20] Fix rply dependency. To test this, replace the https://github.com/hylang/rply/zipball/master#egg=rply-0.6.2 url with https://github.com/berkerpeksag/rply/zipball/master#egg=rply-0.6.2 in setup.py. $ cd hy $ virtualenv dummy $ . dummy/bin/activate $ pip install . $ pip install astor nose $ make test ... ... Ran 252 tests in 9.723s OK --- setup.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/setup.py b/setup.py index 8660cd7..f3e1814 100755 --- a/setup.py +++ b/setup.py @@ -45,7 +45,7 @@ long_description = """Hy is a Python <--> Lisp layer. It helps make things work nicer, and lets Python and the Hy lisp variant play nice together. """ -install_requires = [] +install_requires = ['rply>=0.6.2'] if sys.version_info[:2] < (2, 7): install_requires.append('argparse>=1.2.1') if os.name == 'nt': @@ -55,6 +55,7 @@ setup( name=PKG, version=__version__, install_requires=install_requires, + dependency_links=['https://github.com/hylang/rply/zipball/master#egg=rply-0.6.2'], entry_points={ 'console_scripts': [ 'hy = hy.cmdline:hy_main', From d8515c54f90a13f70061b311dcf7c53c84fc47b9 Mon Sep 17 00:00:00 2001 From: Johan Euphrosine Date: Fri, 8 Nov 2013 15:32:08 -0800 Subject: [PATCH 13/20] eg/tryhy: add skin and meta tags, remove blink --- eg/tryhy/app.yaml | 3 +++ eg/tryhy/css/style.css | 32 +++++++++++++++++--------------- eg/tryhy/img/symbolics.jpg | Bin 0 -> 35425 bytes eg/tryhy/js/repl.js | 2 -- eg/tryhy/templates/index.html | 4 +++- 5 files changed, 23 insertions(+), 18 deletions(-) create mode 100644 eg/tryhy/img/symbolics.jpg diff --git a/eg/tryhy/app.yaml b/eg/tryhy/app.yaml index ce371bf..be5867b 100644 --- a/eg/tryhy/app.yaml +++ b/eg/tryhy/app.yaml @@ -20,5 +20,8 @@ handlers: - url: /css static_dir: css +- url: /img + static_dir: img + - url: .* script: main.__hymain__.app diff --git a/eg/tryhy/css/style.css b/eg/tryhy/css/style.css index fbdc4ff..37c940f 100644 --- a/eg/tryhy/css/style.css +++ b/eg/tryhy/css/style.css @@ -8,7 +8,7 @@ div.console div.jquery-console-prompt-box div.console div.jquery-console-focus span.jquery-console-cursor { background:#fefefe; color:#333; font-weight:bold } div.console div.jquery-console-message-error -{ color:#ef0505; font-family:sans-serif; font-weight:bold; +{ color:#ff6969; font-family:monospace; padding:0.1em; } div.console div.jquery-console-message-value { color:#1ad027; font-family:monospace; @@ -17,22 +17,24 @@ div.console div.jquery-console-message-type { color:#52666f; font-family:monospace; padding:0.1em; } div.console div.jquery-console-welcome -{ color:#52666f; font-family:monospace; +{ color:#929292; font-family:monospace; padding:0.1em; } div.console span.jquery-console-prompt-label { font-weight:bold } -span.jquery-console-cursor.running { - -webkit-animation-duration: 0.1s; - -webkit-animation-name: blink; - -webkit-animation-iteration-count: infinite; - -webkit-animation-direction: alternate; +body { + background-image: url(/img/symbolics.jpg); + background-repeat: no-repeat; } -@-webkit-keyframes blink { - from { - opacity: 1.0 - } - to { - opacity: 0.5 - } -} \ No newline at end of file +#hy-console { + margin-top: 177px; + margin-left: 230px; + -webkit-transform: skew(4deg) rotate(4deg); +} + +div#hy-console.console div.jquery-console-inner { + width: 314px; + height: 251px; + overflow: hidden; + background: none; +} diff --git a/eg/tryhy/img/symbolics.jpg b/eg/tryhy/img/symbolics.jpg new file mode 100644 index 0000000000000000000000000000000000000000..111c3a9f398c2c2930a341f285c2627edcfc6f76 GIT binary patch literal 35425 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ⅅIlipvtZ&bmAg1z7_Qds4DrayLpmxVgFI>kV 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 - + + +
From 564bef5db88cf9933f18a7dcb996ef302986d67d Mon Sep 17 00:00:00 2001 From: Johan Euphrosine Date: Fri, 8 Nov 2013 16:25:22 -0800 Subject: [PATCH 14/20] eg/tryhy: add footer --- eg/tryhy/css/style.css | 16 ++++++++++++++++ eg/tryhy/templates/index.html | 5 +++-- 2 files changed, 19 insertions(+), 2 deletions(-) diff --git a/eg/tryhy/css/style.css b/eg/tryhy/css/style.css index 37c940f..d18fe3c 100644 --- a/eg/tryhy/css/style.css +++ b/eg/tryhy/css/style.css @@ -30,6 +30,7 @@ body { margin-top: 177px; margin-left: 230px; -webkit-transform: skew(4deg) rotate(4deg); + transform: skew(4deg) rotate(4deg); } div#hy-console.console div.jquery-console-inner { @@ -38,3 +39,18 @@ div#hy-console.console div.jquery-console-inner { overflow: hidden; background: none; } + +#footer { + margin-left: 165px; + margin-top: 65px; + -webkit-transform: skew(4deg) rotate(4deg); + transform: skew(4deg) rotate(4deg); + font-family: monospace; + font-style: italic; + font-weight: bold; +} + +#footer a { + color:#686868; + text-decoration: none; +} diff --git a/eg/tryhy/templates/index.html b/eg/tryhy/templates/index.html index 2b773a0..ad8887a 100644 --- a/eg/tryhy/templates/index.html +++ b/eg/tryhy/templates/index.html @@ -10,12 +10,13 @@ var hy_version = '{{hy_version}}'; var server_software = '{{server_software}}'; + -
-
+
+ From f77ff5a4821babc994d19c6e498cd9ccdfab0725 Mon Sep 17 00:00:00 2001 From: Paul Tagliamonte Date: Fri, 8 Nov 2013 19:53:18 -0500 Subject: [PATCH 15/20] Ignore me. From 60f3e79367e14c604dcfdcfe9e8cb091e748b5ed Mon Sep 17 00:00:00 2001 From: Paul Tagliamonte Date: Fri, 8 Nov 2013 20:02:12 -0500 Subject: [PATCH 16/20] Moved tryhy to http://github.com/hylang/tryhy --- eg/tryhy/.gitignore | 1 - eg/tryhy/app.yaml | 27 -- eg/tryhy/appengine_config.py | 3 - eg/tryhy/css/style.css | 56 --- eg/tryhy/img/symbolics.jpg | Bin 35425 -> 0 bytes eg/tryhy/js/jquery-1.4.2.min.js | 154 ------- eg/tryhy/js/jquery.console.js | 721 -------------------------------- eg/tryhy/js/repl.js | 45 -- eg/tryhy/main.hy | 36 -- eg/tryhy/main.py | 2 - eg/tryhy/requirements.txt | 2 - eg/tryhy/templates/index.html | 22 - 12 files changed, 1069 deletions(-) delete mode 100644 eg/tryhy/.gitignore delete mode 100644 eg/tryhy/app.yaml delete mode 100644 eg/tryhy/appengine_config.py delete mode 100644 eg/tryhy/css/style.css delete mode 100644 eg/tryhy/img/symbolics.jpg delete mode 100644 eg/tryhy/js/jquery-1.4.2.min.js delete mode 100644 eg/tryhy/js/jquery.console.js delete mode 100644 eg/tryhy/js/repl.js delete mode 100644 eg/tryhy/main.hy delete mode 100644 eg/tryhy/main.py delete mode 100644 eg/tryhy/requirements.txt delete mode 100644 eg/tryhy/templates/index.html diff --git a/eg/tryhy/.gitignore b/eg/tryhy/.gitignore deleted file mode 100644 index 0a764a4..0000000 --- a/eg/tryhy/.gitignore +++ /dev/null @@ -1 +0,0 @@ -env diff --git a/eg/tryhy/app.yaml b/eg/tryhy/app.yaml deleted file mode 100644 index be5867b..0000000 --- a/eg/tryhy/app.yaml +++ /dev/null @@ -1,27 +0,0 @@ -application: try-hy -version: 1 -runtime: python27 -api_version: 1 -threadsafe: yes -automatic_scaling: - min_idle_instances: 1 - -inbound_services: -- warmup - -handlers: -- url: /favicon\.ico - static_files: favicon.ico - upload: favicon\.ico - -- url: /js - static_dir: js - -- url: /css - static_dir: css - -- url: /img - static_dir: img - -- url: .* - script: main.__hymain__.app diff --git a/eg/tryhy/appengine_config.py b/eg/tryhy/appengine_config.py deleted file mode 100644 index 7b2bb42..0000000 --- a/eg/tryhy/appengine_config.py +++ /dev/null @@ -1,3 +0,0 @@ -import os.path -import sys -sys.path.insert(0, os.path.abspath('env')) diff --git a/eg/tryhy/css/style.css b/eg/tryhy/css/style.css deleted file mode 100644 index d18fe3c..0000000 --- a/eg/tryhy/css/style.css +++ /dev/null @@ -1,56 +0,0 @@ -div.console { word-wrap: break-word; } -div.console { font-size: 14px } -div.console div.jquery-console-inner -{ width:900px; height:200px; background:#333; padding:0.5em; - overflow:auto } -div.console div.jquery-console-prompt-box -{ color:#fff; font-family:monospace; } -div.console div.jquery-console-focus span.jquery-console-cursor -{ background:#fefefe; color:#333; font-weight:bold } -div.console div.jquery-console-message-error -{ color:#ff6969; font-family:monospace; - padding:0.1em; } -div.console div.jquery-console-message-value -{ color:#1ad027; font-family:monospace; - padding:0.1em; } -div.console div.jquery-console-message-type -{ color:#52666f; font-family:monospace; - padding:0.1em; } -div.console div.jquery-console-welcome -{ color:#929292; font-family:monospace; - padding:0.1em; } -div.console span.jquery-console-prompt-label { font-weight:bold } - -body { - background-image: url(/img/symbolics.jpg); - background-repeat: no-repeat; -} - -#hy-console { - margin-top: 177px; - margin-left: 230px; - -webkit-transform: skew(4deg) rotate(4deg); - transform: skew(4deg) rotate(4deg); -} - -div#hy-console.console div.jquery-console-inner { - width: 314px; - height: 251px; - overflow: hidden; - background: none; -} - -#footer { - margin-left: 165px; - margin-top: 65px; - -webkit-transform: skew(4deg) rotate(4deg); - transform: skew(4deg) rotate(4deg); - font-family: monospace; - font-style: italic; - font-weight: bold; -} - -#footer a { - color:#686868; - text-decoration: none; -} diff --git a/eg/tryhy/img/symbolics.jpg b/eg/tryhy/img/symbolics.jpg deleted file mode 100644 index 111c3a9f398c2c2930a341f285c2627edcfc6f76..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 35425 zcmdqJXH*nhw>DbcL-Mr!oBzVp7)$HzB}$1_t#zBR;?s8j*0X9*2g(orDmFygkw4DQ*=cvq|Zr!}|GPX)g@pa4K{Pusl5_rKs z7b64r15hXw3xHr=Il)@k|K$_l5I9Pcg&Hs=f&%?q z;DJ`ee~uQx$Kl1&d~dr950n7FLJ9!-L*H-vMwHfsn5V3R92a zG^Z%bFkQbdiP@F^D8y)e&T2W@O6#|NH4Hf9SHi&snXC9?6h?Vvr)jVDJfC$d&+W(&+! z2Z>QCptEn;Fq>>se#mfs!fn9E+vuRbLUU5s|B z8}7J=sOG3V{^%^$NzJ5MKje1URqd4>9Wi!NyNnt0J0Goi&z0g=7>s#RYgy^D*FTLM z`HE=Y>M=dV2(&r~VD>^1%v%`c4u>v*7hl3cE8dljI+p#CZFOKjx#O&n|JpZD$_bf$ zTzQo_Q?$bNBaY9V26#rX6 zC(gC>_p$aG;bWz#FYWpOP2UZg7Z<3$y0I>?tNzF@h|`DaM} zZ^olb;1Q3lFj{)N9{I)O%rAdZo$-}lsn+@2WaM7^C=bEmlUuSM0{d16%j7mnH4dX) z{SZ2jkrQ9fpTb<{nqTbuyXNdAmelj7wg;v*1H6>wz%49Ix;SGMjxK8G)U_8V=qx{U z5&yfY37_aV!u1us+#@T(YU~L*dU?g#{t0u<3G@4u8N$|qLnrs^pR9LdWc7!r?UAY{ z?MW`NCmN&1?*$BGb33bBN-_p5CZ6oap4@kR&-nZz3hY-cOFg>&$@`-D;JtvMj5$bW z(O)-{8lE1FH-t%cx?Ud!7sS^q4ydhM%F3-=B4g+nZ5IQRJ`{tCH0Q-2&`yj4D&8*e zL`%_x!ss^`d+cGD&WQujA40>~C;*lD->7u8iI-i=9EG{=hp!vYWuj^y=2NnB?4993 zAH9{AKJTz)hTXus@FOq6CschN(_|oZJv5i*^~d}N2R0@P>batBU+yAD89Vg%0+Bz* zHZOq+ulHh1QN_0RkYA*V5g1~r-%8eQSwHD6f#3qsZ5_N91$#lndp2eF&XnChL}75r zO7|bFD{h4IUIN$r!jeyN>LNm=n`MVYS1mToZKaz1JXGB140>S=LI{DEcF$<^PI{!x zYbU;2Nsov4R*c(7#B;u*+b2D_Agb5LYr>P8IUqfuXsaA+!cjg{K2`G8;PERQy7@w;1J#v$ z%OrFVj;W_tx4sL7HmYy&BUim<9xboXWT@S@xX4hSr^#Df5tSAhI&F8l z1WsgPTdS_qcI^!ygL{!ftJ_8+_TLL-PGmP^XU;Y9w!N3^dj$I$Q{+7|ly%YtM$0t@ zZhYwp?DcL^_4j?}i?iPI4Jm`XjR)Q(I<4*!Ajv7|i#_J2G9JOR_iOvsU6x)pY~{C+ zHIuQ`{>4_paOa!MuY!hSKO!bEQNx}5)q=M>$a%BPz$Z0Jum*DZ#iq8_!)}_IC7KMy z&>g>K(<-&?$4mMjf0FI^eGT2LzHl`TMQVCi9X&bSzAn!D_!8iYOzT#TwW^197iNFR4Mec@PTJPPNX;rA;+ zH_Q%xcRD;7k=0*sZ8J!KY_x$kJK?7^DvN#i#M*ajT{gSKl5C^((fRyA#(*vl(V<@c z>9^+>;oN(EpMo}tU+q`dY6q2k#?iU4xA6OBXbs8x28#jL_%E6C>hBaastLiEUR^hi zJ9r|m@cT(^tb)s|v62ZZ`&!AD2Q~VxLWv>koaVId=>y|t^HR#@v@RPDbd9}U&~YLs zM0AX-PH62p?e?{N3NX#TMK>f_Ab+ClAA5qnfTI3%uB<6TC_~S`R7Ue@&ao1=R&hw7 zgjh*>Q16oK?-FNEhdN@*UAyYhz6rV9&uZMB6KHE`xCF8mD|QzB0&0YvFgQIlJG$*( zJ*3*;;ct(l0q5B3C-mXPc8Fy$p7Fq$jNf!cR_Lgf4*6EDQxnVu14Nemf@=E7F^SY(MjbY#B`vf*LZW`|u7%;eeGH|~bu`o& z!S19WvZQ;B@mFa zuYF;V=*_C%GH^O+GLu%jw5H*wNZ7s?c) z_*s(NBzlJi!xTMq(e7J$7|4xbWbBQ<=lwREKdS$tH_KNMJh6P{UY4&yn=xyP3`{RG zt;gFcg=D#l3cUTO4YAEIyY2q{>;plA zH>0ruds*Xl<_^Vi%muD=`qdXf1y*v$T_GpASA7>+heH)lyngpjMwftY&1m90GRs>}z%MI#qgbHzK6RTT z&r9yI-Tb4-v(Wk4hu7;b0ZC*q=w@P?2aZ2(lWi0pC0+t-eTKwuUpZyH)772R;#OZ% zjot7p-rM;yMDeng-!bk=Iv8qK%AR<=5q>a)_jX-gS?sOb`~$Li zq)?6k=}|?F@Q34Ah2I%MSz|I5{lAq0O3_w*k2^Dqr8fDC$KrJo8!6LA4{hn@dkviyiXCTfi#+QJV)m{5r_GOO_0|%&NshSLmCkxh<63oL8O<~%; z(G!K6>31+LJB$TmjkSv(ikmdo5qT*KG06B+!s(>J-WM|y=fSS;MHzlGo@ejhm`=hl zY|^D4$-+19dzBkBm-2;V;CeIT+BgfXyBBumCeIX$N)U$Uslx)(2(~BkMW6kcka+Og z*N?4DJ5Tb6=zf{*>jVA^r`dC^4#JZ>pNEb755)|XA1K7D8if>j!f2fbC($1skK^{! zO_-{q;;ISWmUDZSmzii?0wr9Am>h5EDrBj07OGqu0srT*L8a&5T>os5P2t^lD%24swb@V5h-Oo50PNuc80dS5GljbNC_eql*t z>>@wCx^V7CxA62~yT)H*CeiL6I(U&P<>KDH1c~8uy7Xj9E_o&{uunR1uE;wx8XsL^+vqzloA$Psn$43 zp(c|X`ZJR|q2^&5vmQxEY(BM*M{=Bxr}M-syUk$?1v0U%Q$C;KeT`0wlAUWQzw;%~ zScW+${HpZ*H%BXmRaE?^s??8S7_%&Y_g$^*f^C;y)ydTvUu%e^h+Zs&8OHQ%dBSuTgXAe&js=Oj{kMv%d#$o@s z$Tns2prhw59YM8B%zm70Y514C-#3GciZ|sIf3v1f6?zCk>NNnVmED3b<(|#%&lCCG>s`-_mu?;)`E;)P(2b6}F>) zPFcNd@#r3Y6d}YAOF&mm+TFnSfm;Ge!)v!ZriB{HvL5rMlc0yPdtw)C%!g%|6WHe$ zBeCwZ#Y~l{nR#4wJSI~8bRm^$hn3Su{+ZnCP}CH*4@#AT>qn`8V{s;@( zgrkn%eUQ}F%2DdAj^EtVyM4FL^ys@7Ut!HH>GjW5>4iRS5QapKUtD%_rDoKt5O*I+ zoPbCckxILeDa|?t$(fdul zFMzhAZhv9x;&u3yIJ3gNY2CW1@M1y7+nKV_hjSk}ejb?$cZ68Nq8}n-LkXM{5FRy5`pfGYYK68Yzz- z_#iT?2;62kW~fALX9(_EILOm6Nh@AN-ze9K$ngu4SJdy4IvGD{52=VlV$6QiF^Q^P zB*;`)O}(JJNcAyS47b{xs2#}Dy-O=!qBo86TThTvzwWiQwo!BSdz9S=QyqjWwsE!b ztxt7PU%x}SlX=mTM&GhymdV1TxoJFoj0qg`32Us1ZGKL2*WYl5&!k z&*L?*pRLF@oYFQiFMjte*@N;bg@k~__*ebwAClayYg+EQFq80P?y^OeWTb-3pcxS6 z`iNyH3E}$%)le*8CaCu88nKx)P@Sx^iqP9A{w_}H^r8Y!0vW;|R`V2bCkmz>jT?ua zdWy(n5y>UX?arP8DBj}MQbSwGn&)1IJx$oMwRMz}hG+8P%sEm+4XHLTE)R^MVatq^b86y9r>MV->=mpn#tT~OW$U8wzdV%1b2 zGoUL)oxgPBv}r?BgSky0P2&(bFVbd^&f%E<%e*3_O6?L*$|#K(c~R!WvoW53+S3rG z^KRtfxi*+kC>{=G`%zHu2bt3yPUIgD9tN4iEC&}9FSgd6bcl`3Tdc+~hPmb^55$#9 z7x`2^rY=8hR(nxzonM##CC3Wt8+H90^-LQ&t5ZhG@EkAa`UO66Xpctp7=I>4YJ2ay zuTxQzhHcHRW0c8I>eUmim3=)DJ(7@N1@OB0yF)Z7p&wC#!Z7&ZqWVd1Wd8Vfum*I~ zA^%q-oVC@eAoHI``CrydMw7dCenK%PY{$kH$JWO^$0GxwWCr^tvo^D&*Z6>=P7{HK z)CwaT_;nb|eFh`d)h7t91xe4JkngMLTfgLL`>N|D+aFW54}Zj;h@uON)zjk-Cm_N$ z$+ROi1fb(Mq5fvC#!U_Vp=jeMw$MdfEmQU+LIA*l>f`UtLeWaN&jEaFC;+_!T;oHJ z(S=XSb1&71tRbc;>{$sv^$*-Zr!0lRQ zq!b^A#rbi!e%4E_>3!C_v_2428`AZ_0Sj)7w#@lrS4$GDDka*bG2vA7ki{_-m=iaA zfhR^5keZEH`4AK8!`HEL%iVl+sL;NQ z(cVYzG|jJLIc;I)%~r#JWW-=`Xux`A=a!RH$6(75V%6or@%xSpHT4b7uRWX0_kv!_ z1Z#il^>}mgy<_6-wsS^Kwa;BKbxARkpSoTN-Bs;oN3jb_vP$5|%XKaeZ#(8}JU(Wh zhq=6OK$JdI+fMfB>B=oqe1VmFGx@RqM~)t>m}R-#Q+1sBW#}rwJ2?lIdSEX~RT>B} z0tAH*{d4P3R`@tj2!MjKVX-JZpfy+IN`~-bJ0#IYb1kt4m-4|vgl-wW#gi_DPth=9 z-glF&<`WZ04F#DwdRl8O3;Hk!H_*%k24-$Dp+(U|-3mX;GATX}YR);~&Pt2>u~#6o zTh6q-A_jt%t-bkEEH&ckY}X{V&x-Yi){9TBm*nyF_4*DfJ})RbfPQ#RfKz)Npdm*? z8w2IQr}?rW46|?+8@tc>Qd>Xdk7N6Hh2rn0dG|QI&gaSmn7g)-w+dHet#|9ZUOKbp z0EvQBpkK>m<__`VyBIo1jelR(lasnIF6bDiBHqj56bC;;zFym$PED?ko6^d^)jPSC zu&LU_%rsoXykykE9QwUtUnr@*GIeq9!7)$FVq{kPvwV8vf_|;}p(fU0uUm72Q&vQp%q;-Z(^R^ zBpQ;+*_McqNvnDO#IkXhI+6Z_DcOe$<3i7EaAEU#`?l|>b5-c$y+O>_!&`>WWZRph zEKP==An?Yg+s-Awnfp?L0AuBL2Ej6^&HxN`({;pbTYx^`;W4kVGVMx7&S$=70xMOIy zylkV+uVdxm_OuMu35?^ot6E^MJl^j@^+NXc7q|R5jjY?q^c-d>5*@$XKF~6lLVU^V zX&<@zy)ki$Imq@lO04$0F*F_ga8jDJyFqmD0JMrTlY!N|A^y<5P7JQ@C2&^Y%Z}+j za*Y_kC@ZflKJ$3_xkAv-9o+TYCD13fuk*X0M*SB*vZ2JS@n2O&^(GHxiB5}J(;T+O z2Rmk$KEvb=wdG4M=&9ScHeEdZ8UqpDPeOlck^H_9|FAygr}#;y|LDC55$s7Lbcz-J z%7omVF*5~cxLK$3O`?Y-=B?Ks71c!>jVL-wi@+wZW|So9l;5ZF8!;toR+#Q&wb3tG(EeQbNA_+VCN1 zx$@KMSD)aOj-67Z#;1snae0hM&!^Wvo!egm?ooCQK#INEXw^^+Tm+>+%)&*60`LY_ z&l`60e+rllb*%I3_YC ztqB0^sNV3XL$sb#ZxT z)p;g>L!9Ww9AIbHdQhj=-_kK#N*$-Z7wIC7e8;Ek&i?s+MD%0Imtjbj@PZw>;)-!m z)_u2G%OXi*lw|xjmVyuR+P_#YtX)W`1C9&)=c}hv@awJTUuN_u3?XK%Ws~j{mDI+`DAke;o( zMzBj@v%HC2W{P|EXZ35lDP)3z`wI#0{5pl&fRyd}9$b{=KJa^MB`ux5#YDDKY*RgmiC^3YQZ+*jc zLcZsGrVYIWrW5Dy2i9yxxG|2OJ-I4;z4cAh@NwS%EZo8WYv)W!{&9r!pm@XW=YAJw zO=P2f#6G-Cwu2IKY9757xW{^4k#0ffoJ>Y;ahAJYnB^aPY-K99-Mh|sjQ09Y{7$?! zE&)vXS$eX>w0CTinzL0Sb=7H~a^ywiMM}o`@g)#>k+-vxk=Ob%Ab0qau}s3kGZ!!M z_s%<)z@Y4q<0Y_n35U%=K^2-z_AeUuaA!<{1`b0 zFJiUcTmth6>$Zinb4Rg>=bSA!5C0sXk(jvMO*|)-SNpj8?emC&|#6oEfKmb z+w*KWESJDtuUt-_WVf9PGLwR;k&ASp&a)sa+}MU#qdx5u=dwaIvG^m->{+!)7m)fn z1Ni(3j5+up6qOaRxh0k8NbMf&`Rj;$W7L1OZ)KWhAYTj_iL#b2C+1=eZzqgmWP9Mi z!HD_l#IjC+u)4m7QQRC>6ItyTHfC74hozie%ASx+%%m3Apuk}9aEd@eEyFU?VrUuF z+uS%GjQOB2^6sEG-`5Pfxuw-y_;Ojj zYA=D(CE5G?9FM)t=~FHN*~AS_E&aD^mt75~ww*ZXWN?rXEVidy;7I`LsVTVnn<2i~AUt_nc}|2V*Z)^kbTflWtFe>jj4H$1d*dj)A9;c$=p4g})G zi)(!3zq`7Tn0lTsYPSg$4jYHP7a1pO_sthGozgWt`p|_>IDpu)>u8D~=|X z4IPz&y-+0;f4%&@>jO`}P6)`o{Scx0OVRS-A=Vph)b2wut_AS}N>InN1k?T)a-?|b zU#>Y`OKnQbZK|Vz!1*;27^E|ls{>XOEkxDG?~oAru>WD zA;_ALFpb>)1vT!uUxy0L~0%f63(Wu9aYIHlf zBxE$E|2pa+z*y2HEN7QV;hO1LehJ)ZCK=G$p?|V>1>vYA!GUdAfU57ip@l*@`2^|()*GucD!gOcpR^*oVRw;q z`^fTrcbdfuXH;Wo^lJLl@8A7~wNyDj)$TrbE;ODaXDeYVG+n2Od#NsetCXGC9z1;WbRc zzTk7wqN(3@bAADh!ArMx37_cmkI;@hkX7Q^H)ifGlx7gD&iVC9`PFCT(J+;YYTS8P zy;qHYIX>0~6fAb`&f*o5G(vgyw74#1E(@_ax7=Q-*Wj&ryXu$3Z~H2`j40;{KH~rm38u>)>Bo$oX_atYG0Dze^6GahLAq@Jgrod4A%f@vn%Wf!BKD z?zUB^fE2RMcR1tf(7O}zp=elNz_Ky>ph@1g$`>i&n)a%w+| zsQJsm&@{#CfI+6LMrB!1*_3S>2P%x1%c?hVK1kBLmx&D>zb+mbn&`;9m_ahwq_UO% zd}f=eiR8V6moJaN+Tcn~c!%VvxP_~E{3ufC^~-1=A_{UuUaAD->NB!_ z;QBP$OlS+y>W3A4K#SyLQa??mXSt(BH5?}mXv-lKBW6X>0eo~cRz#hoPt?m_i6Byd z@&R7W@>{00pKkhNuW^as(l9IvIwvn8x@_H^DW}}uz+;(C$ z!THQa(V>|9Q*{!0tyhcDb1pBfc-4*H*h>nE;$_mG0?80}2VgoA&i;<;z|1918aMNF zTQ9%L%h*9m_-ssRK7r@H=XxCI%VM}KnsK?znaT>b0)H+K;8 zIlEt0)&(Ww0DXdJWg?TfyeT!=Z|O|z8LC^M7urop`$w`=AjYx+k4qnJxEySSzWC0p z_Uh+&+;BS|Or@}`d5=H-G%u(^jyyAnHu-Y9+ zr3yU@AG%;r0mjNTpk$;X#8E(FL2LC&dW@Hh^$m(^7y9w3TER#(wihbYL%~9cy}GvT z3EU~R|GE<|12-QIlL!Ajo^T)7yJD5Ymy#IZM^&{F~#ieX^*{L zwLWGkh802EY8>x?(=9>Kxy6PhyiXo!NwRQbI<#Z_oKlSKi^Xw7*pHDOi#~e2;~#x( z7~6GeJ=oOCg28earL_})1GmC6rMy-LA!RnqkrhZha+ru{6tG6-N(oazxj+}eLWTMp z-+xvTPcGCA&m_F?L7aW{^!~zGJevz0>46RPpU?S2}9>cqq; zQM{VA@RBGcT=#@)tPxIF!gY>M;LcV#@d|Y|T(hIO0e!)$8+`gF7uT)#)1*4HzRu4b z+-A50sA^CB%FXJS#B`H%wFm}v%|zamz(5|N!tk*ZvE|mAz3oJ&Ok_q*xQ@B@%t^Xm zKAPXITnQ~cTU(kx(>?Y1eju6s;YkQ;5IRoq8J;Nx2i+!%OpOx7HkiBzo)`R{2czEY zsvG}Rg+irgwg15tVAw`-6fet~;q8Py>-y!_`m1bFwo zY2g3hz61(2hTrvd`b~^6JM5QAlP$THPAti>a`h_&&JLNgH`^=bs5s&wpuXY|9(t^z*N>bxjju6sHPj;dX^)ieOa} zUe}iKE-g~wbFWYiD@W=UbTHgDLxN;4de~tCAO#@KVD}`~@B<33*==JzElPr$U z#E)EQd}NI(=359Pmd!ZtmEhetU$@jA;y6uSHIYLryh!0=KBVX=zHCP${m&CSjVcmm zTj_M>uf3o|J zekSaJ@sE3wo=;x}|I!?@YajPQHwZmThw(r0EFR=AB%YbpD#Tvtov~c!gOk@d{sVBh+*zAdU98 z<-IA9#7F>Wv*a<|ZMy^%|1kY%vjrRh?hr!mZ68#P&7Co9)~q;nSQkr6(3i-{y`FUl zh3#3#Gn#uPQ@;%nBflPXlg-vcDO=HoonD0y&89-kO3WJC`Wk7P$z4sx4r4++9K6Q3 zL`SJy8^D{x8ybvV4sZc%j|C-Ehy-u9<_Ie=EQSbn39;kSVWmB2%jtXc0xuzpyJP(f zD(}#2Z*mdF-F-wG$@%{1)UPnR`fhJ%mLgQT2a#kIJfuPZL1FRYPv_>W&L%Du9_AP+ z&jjwdS{$3a`5p6hH`dR(ukEPRr!{`VMRCvH%*&ha9AypBgh4VH;F-$kE3%p|>3H{j z`Qrz$Dy_is=D$-B{6iF2o;)$R1peJ> zx4vFW<$JH7rD$EmLQh(Ge8w8+HI7zV44WQ;RWNrigSBnn>u!^C78P37lm10*K2zkX z+hVk3ImGRY788<$q|-g~pHNcO5Y>l)A`18LQ*$D zZ$i$cHm$@|d_nKCBEUI6!|bs4>+VK~CR7@2nOAZw_HxHG`(Typf@aoNe9WZgh=5%09o|i7sgKp<%3Tx6OSp z9y;z+VQ%$ZH(SA;#h#rmbeL|2w3L-i{e{w7cz{a0HUa!r0E<5y2kwvN7L0~wlA+3h z8%ob=1Bi%Jh_ZvbB+7+Yz<;a}&Qn~w+AO=;(~6N8ndNVG?(kxPoL2>xKnTyK#Idwk z%j7v%1kGw5u?jimlb9od){uT}aHcgHpyt(!Tgd)-C&LLn)-nS>L_t z)eUggsv^y{FAvh5Z(EX0g`fuFcE!b997roZ4%{aq>@2$`xgj4(z0R}A_)hDOXoaHw zqFNb8?0*_>?0Gu`|Ea+b)rQ{VVv*W=XX#eKB>6t<}eAP!l|+x@cq)G8BI z05B0PEQ)^VSOe=KjP6g}F#9H5f~S2Bq1(=7kqM3)qWXUztZnn5^NOAcfQ?E;)C_V` zeD5rny3b=p%=eWZZtcLbngLN%(Ct^G)FPyUeE_KD5&EQ|McDXQ{gl&JqfQXM_E{xt zEMY8OB0*sUJE9l<1a9X4meMJGp5%&zTE!=kbum)LcRJLjA0h=VR2aO|)5Mzwg6Ai) zGO?e84efZuh>T{!iSTRyTn;;YnfJy!N%RZrJijfSe(m&VUxd>(%{_Z)5`4r+Vkphr zA~3Gx?e`XGDHYyomHj@sewYAf9yb=6$wdee*C#-oGSVEKG}=hHzbk8Wf&V2;|K=hU zn682C52Qp-WHcW2_@ZTF%rEp1t{Jy8YEueUF(3M8J-;RvZ+hr~f zID0V%RuKzChvw9nS|;bujOx6+ORD}@GXEav6gLAGn&`TVb{~60X}P+& zTCm8mc*~um7*@Une1G%~FZsiK^+nkR^34e%d3foS`k43y9y90@oBH#qdKuaYuoLDK zLaJ3D1t?9bd4Nd$1>SHs^lSy!XPg(*Z_W{GBG&G*&P!UP5B;?z`wp6bzi6b$mSbjpsNL zv}ds`^yVB1?1EABjI*Zgs7|lDo30^T*LKrPEPMM&L;sX(*qHX7m=8OfdAN18TrOGl zK8`h{Aj(ciDVDXm279ClN?3?<-{zwa0Uw&P0M?))0HMSWzzQY}0e|gqg`}Vmi|`=` zrkXIi=e5xjMI{P>*Pk)ogp9n6RHjIMy+udYyf^r+25@#KEJRL$$SFmDjLP)+~ zP03NsWBoKOpQeP~odvduU+*m5aEC3C_J%#sUwWED>7ctrT-Dju>=TEr{=YQr( z|MHDOHSQCoyE4xN>|=*A%;Et-777%T4N|t(QfWgIK$ST%OG)~T?4SLyYkGG>x2-qf zYhlz|IX@T9jEa|+EK2mInm_9++0Hyv&Iz}yzh&&eP{jLC$1s?_mQImPB>*v{Cgw!u zPH+cRGyLieP=jB?T4X^rYq$!p#YRix5JsC~oAQIE?S=YA8%1mS1a8p)twgu*D$(Td z5($6pGBbYzFXPj)y6E08h}=uP@XiWC+Q~=84~3pqN{Hk^O~X*>p(slH7C3ObHQ=sp z{ZzoOB{%n^Lq>5gwS$*AmjJJ&--%k&x9_`W*3w^$8Ff3irp?@a*)aC&B4O=zbq3O6 z6w2T{!hW0rI=Bf74MjibAk)LVE$kOvw{Ig~{__8?iXGDW7Zb0R|KS=#tB+I9>y>dW z^nAD2Hp>YG*|5H=uXyx)o8(HF-r@!hA-h!_&+D76B+`Ng!NvvY_WAH75Y4p7JimmL z;&F@Rvuxa;Muq8p5|DqNlWmm{uJ{X2(Rb%tL^MrEavkguofwr|aa6dndk*5Mkb^x$ zN6P;Z^gWJ-Cbt>(w_>MIC!ABb5gETCKct)kod|Jc^Q5#~Br6w2cViI|m6r(T5akFH zwBWA@ifdzaYscpw^f^uWaSmSd9cA>}Nxd79ikz%vm@olIv!$ZMS-5b)`jN#Z2i_7Z zNpXA`2C?zXglVwBhwBpPmdLnBDBGzr(P)pI?1<*E5cdKaZl+^Z;JA6d@& zG&)-JGn~|oYY@N*rUM0|5>7Dlvm6;?-=)K}D>L5!%^XGv%5!pmt3Qx(lG6D<`UhNG zA!f2i-~aNM29KKjcO_0=M%=w$0NMG7P6STjyIRN7&Ij)T?q|C~a?#7ho~9EHch zVF0*UW!NWNcHE~rW>FTE#c|^d+=5BFIvje3%uZ8wi7S;Wy01<-k5cc3Z~Iv*-xGdAdV_VJy-$>WT!?;f&r8V+~Vnu@l5 zACS49C>LdG<+1;;!iYU1LItBW1rf{R^;D93(qIm_Xj{Oy=_s1qBGedEs|04y0 z&i<1D0Z*D*wRe%_u(L$^o%*zuo)u74zVHew0w7=T4_js(+wXUC(tGjb1`A2lLPK?(UOViNw1PM9&1a#XT6sn=092 z)v(?=D%VAkiJDU0XN`xmP06L0yjXk6jJ$QMk%_s2RO9S(QrRC!ch6MUm%DT-dt{SB zWwND|$n%53C{sqiH>@=VW%1b~@@k18zG&_}P$2=h`qU_9+Z@B+ZfrGglTVek$&_AG zX8u!gf-r4?KkEEDG-1ImZu;6DK$~LC_4Yta|5ECEw7Le^&%v3gcdIYlQqSL;PI93% z!GWZnKCoc^L>3%vCE1RAz3zR(GWqNX#MLcwJ3?o+d!|{`z~{^D{;;u19A*92?fvv` zmFCe?2Dn500jjIGA0EJ@2}G;qv_H~`q%ir_|t|2Q& z7YEu%j-ETmRH;+p`Kvp)hFslGX`b^7-9%Qr6)aJAeBhkY&(nv9@+dNyFY)s}6y$m7 zCT1HU%yUH6@ok3s0KY0$y%}SKZD=heaxA>6p;D=%5~ayH%%ei*$fb|S$Y9zbDT_PH z>3=!5&NDJ7Y9DDnb}p*1WcelIt@M{#YJ7`v3ki;oGO;?%F40qwQ z_q54Rw&-{Zf6@CWY^-jLmuD;Mw{hzz0Two_r}A!v;@A zKTyB~Yiq8B{QL&5=R@Ncw{pp&rX0VJ_#VQ(&f>a9g>Lp(%!wg!9u;(}$dt2Ym3yvmAA(#@9I% zh4>GJVyjZBy$l3~9+WPLVkEbei*qIS{Fo;LGj^)LA6k&hI0d9S zjq^;%5}&YLELQcOMCrb%VE0@a*2CMQ$WNjyHlf>C8!w;jT?G6^ zWPmjU^aj`d681o(`@e@?ZX5oM^NS{)e{fDNzdQj)X_AYiX%XYHI2d89v;=V#%;Pc;lW7#+gTfGtlV&UI=c_&t*D(EBTpH!Eb za(jn`zsHTmQuQy6AwUg2rMu6gny7gHRemN+klTzkzd+~_m(d$iLVtlm9eRFNqi_~=EOAk(z_5W*lwwn} z+V`2r8%5Hs*w}EN-ms0*)vH9H+6A8ZC$lI0w|@PL%$7B68sAOJ7Lz8A*7Z)6|2PY0 z*0e>k4VK7JM8aC|-ReX2Uf&_s@+&KL#9H19+EwB?yQ5IHt?_WkNBn!*C14P}C*F6^ zA-OyICGRPZ=s|g|Wy4nD*N@=`C(jruQz~brti#_wwU!170#t}^f~iV2SR>*4YOd;^ zi!LBU6FWlvH3?DoVVYzOY8=fRAc56UwdAw>2zt6gN4BT5&#$7JEgPr%w@6Rm*U*eeil`yWhVpTZKyZ99*m zQ-#moh@SF{TQh#{;*PD@^_MN#|^$f2ar;^?NbAN70N zbw)B?97WVsjLZB3@_&$8Z$5vyTsGGH!a%S0YGO<5(A#)%Y$ZieECJVf5)Rp`5v^!_ z(rn;4$-6<$bB&OugXaNfh@nK^l;xR|LN5(JW<*!58RPpfP z>g0YCc_orW2iLM1G_@wR;pG7V#(`_{ed9J)guaI^k+0#8lh4v~C9;}1D%5I2968V^ zb^io(D!k`aJJL#5pC*ddj3;$mkG28W8S%+3KD`9${AaR%WP>EWf_C>ihsN67 zU(bsCVb=llQ!Obg4i^L(?#Q95b(Z^F?m+nIL9WYe{3?cdnHPEFdO)4AfJl}8q*GIn zcR(LdX|2j{K|nQb$75Vm5K!&r3|$3?S;9MBywnO1F6p%PWif;tdI~M-f>2V39z3i? zq5mqJUIB^ih5idrun$Sjpypr3+j;KS^$V;C1>M5iru) zK_0OMCB+Bu(P8*ke5B_RCi(>92bI?+*jq4# zHN*mCtc^V(lTC2I=}g^=OJMG7UUuK{LOwEf(i`~$@%=rj*!`LZFMbV~-dlt{_EQLC z17;A}t`Kr+z_%%8%jnMG0s{G5*}iX=b@vQWdn{xWT~DtSmPj+H_lwg0*7J$3QU2?p zPL-s#U#{5!Q}AJ(6gSTVHbp4@x1x_&n=hZu7af1wb8onfH2Q`52eSWI(-v+!ZJ7G8 zcVNP<>dYBnowO3@cV zhJ40$ykc_ASW^8sy=a9?VBxLDOs+k-mfB zRD4yf?GFQOn#3=)CjcraJe_G#Ns^KNJAPj8tk4Uad4U8!`Uhs(@}Trs`~1b*tC-(= z>OCc;rXFhaKo@C9{EVK~VlAH!D)sgC%TTOb5C2S&cR2S=3;naNf)N<`!6@{~-yUWU zoeg!=tRO@|!T%g35lT#Um9m1x6f?wYB^W=99?V!j;nL7NzwYdc^+wsk2ilRI^Z63U{!PyL-E;4)SM}b%>UGu7Ju}Tr&)Q$_z4lt)`gZh{M$Us((VF8g;P$QuTq-K= zIJD!72s98}Z-7&HFLZu}<}57YPJm+n3b?iH^Q&$v6|&^5uj4&$Y096=(b^`j91|3$ zUBE8n2R-h-S}G!T!kW(}!xv4T!U5Xwz;0mtr5zN#v6 zau7RpqYY{{wy?)Wzjq3!S#RFs46mj2cB`r*}Ro!~$02zi9=c zC>TU4c~Q?hrNe|(mhN}nlMixrj-7Jd1Z)qmmh(uBvHC*&W9~Vo=J)H|Ca+y`*_Dc~ zJRYx`R_(`(Ta#T9SFN*%s|uvb%AOZ^m&kETx<*dZlpB@P0H#zH2ga8Tq<3jgxWuA= zdLSp#5pb|}HUL6572SmJ`lW~kgTa6U7CnzTkAna)Ut^P!9)9h_%&ST|4WN<~feQl6 zp|I6`p^kt_w{5qyfJjPf2kRt}-x&FS%;^r8a~v>dlY4-8ItcKp2-~C3*bq_gO{Rga zk|Ca9(RB^HukaWdtbe9rIHlj#>t(uPOJKNW_fk*qBLg{Hg&o9-$|Yu_OLHRv%5ngD z);3X4kW;r_|q(7EM1`4b0XHkCnI6bBU8Tvn-rh_>F zIx}NbGI2b?df=p?GZ$vya|AAU5gZC1t-g`Q!29I&IqZFxyr{+NVI|QL|E8nU<+a_B zA7^Ri%gKqe-ya`P+^qK|YfTAlDPQx)8ZcRe#Y{k4BiUg2W`(CQ5#r!MJ|`@C#*#R_ zfG3;+k6`d1U{@gd;D7~f#0X#m^hfZXuLIsD&}mjTro!v9umVHS$P+%fAjZ|444v5O zZc|V)^R5^?+ZHE@vOAe3U87mzd(X+7$Aw1*N){iZRaoaXi7i|{yj~lX;U(f4B19U* ztl)_$Z}*$fk>HAp=SDzustU2(1-5a@#ClzPN9_3+_Pb(0TJyOQAA;i!GSu2nToXAp zAG^#kSA|fVWVIT8<;~SCkN=CZUEcwJ%0eUX!GD7*+!u=!dk+HINa#N=BD37TyPpGM z(9%NNu0A_|=A;41s7$%UjJ;vPoJ+u*lv5I7uGcxz0iuI$>heX3`)7zu5<3T-HqMYT z&L#8S7-<}SD0>ij0QjN_fqG2RyzXtQly}n?HAV{0$o1dPX8h)g1(U4Rz9EOvzL`*n zlis8fEJ3uC#gZ1cmHk)(RG&wD0$lqgEG8s_+>c8i3y~Vt0BM&eyN)+v1hMIZ+w*%B z0@c=4tFcn0_27ABY0QY=c~JzoqUzs-i%za>@>QM%CapY(Z>lFOHN+b&w2eHs7WhuR zJQq3X-^bp&xosc$fPfHXIbqK@3CBhbeDdNE2_b!GPA=p%ZCC+2`?!?vQnH`C!LA)H zORU`EYc~Beh53>1OB6jez4<3d*170=4R8gGFG>#~8jA!4tu%Q{7J7R~8*n%pt%agM zN!Fu+`uDp(Xa@fW&1mNp^MB*_KlX=<_zU!R95Bh$cJm)=GZejuDt;ay&T$>*!SqDR zEQAXPfu_J8LJv||*ZlcUt0u&*1L^zM@NL!d-S$S3X3LJInzDp_ZVeQ89yNN69r=Yd z-qBMh6>l&Obvvd++c$q`*U>+83z~-2oz|<@w+cM}^1H9W?^*Josbk5IkpxY?m31#x zzmF?@bbsCscmJl^z60Zum3DgCVsQj_(c(Mlr13!2bOd?pPssJ%n|hGGAJtQY*0oqn zR*D*nTPjXRaJ4v%>K0-8rND4U6$mk_i7-kdwn1G$1Rm1*RlS%;R>=Ah9P@!(jNA0c zq|?~0$vHoEbY;+LlPgF?7LPfq4p+7dY|aJU=lV(j51aqSm#^>fW6Tk@;8ebj^c;vz zaRgu$gwagsGk(sgu-oWn9j5WpMth_4qx##e<<&2vaNk`!iiFl>x;fnBs@v?Q7{3jX zwj%kc2`li%#&Jas&!mu&vI1SxIg%|0^BpLsKMzH6n6XP9!vX)$)7#~9rVc?IW`HjuQ6d3NkFxU#P)<-$2hYER zL1Namm_>h$hT@^pfuPO5=`_DVGc*7ejNSIb7k&=$Qdixqo;o8N<7_Y>GUOpd;<>8u z9%~n)+dRsk?E4yvxcqv!RN=Os|G@qFoA7iSuiFR9?c@x~PkmbpvnXq(T;;Zi4Na=a z@s$&q9@9ssYL;is_4!jINsC`?mjfC{9jUoXE!`cMOA4cimdtMg>eOp3O@0TEXc%#G z_s^)p7$; zWi9Mgy}^{#@sBPFtD5@Z#g@Bpjfcdg`i-xL2SfR%wX0{ZV?VXCU$FA!b`?pg*1~(I zv`XRTyrzQ@|DOz ze?75zukDKm`Ma&*_12B5|DDV{y@>Fc;h$Wb=Id=9pUbCykf8_#sHyXM9==Ca5MKVh zm8DNvyZsVkD~TN+JS?OJ^F!*|FOp+J>ROPZ&NYKrKQAokjOgi6Pfb=76Yq5@NnSg! z6c(miiO?GDzYv4X_uhYC>Y8bPXy#0V$T~?} zcAACwc=ii?aO08f-0uEj`>jy7@>mhwA^V`K&o^Z#+o#E9SXig#?U8Ta4YjLJxlw=- zDn9ALNb&4nAnY%9heACSKHszgv9pbjcPCoa8^)82YEo-C&pAbK_w5M$j9{L%o^?SP zhP9yNTARHkk5Yrd_B8PQfG*efFzgm_cKwQu zBV?M=idLem4;Cou5>dlBQ^c;wm0SlFJe;8#&LoY@?eT>)W$s;AoOBw8Ep>Kp-#I%g zDe^Cia3f&52XCZg{FugePO_P4uxvR(xZ`Uw=F8kwoB4sIp!I{{noM}~%s(z zTzVYMPIHG5js$M+H;$PSc79F)A^*Xquf`RY=5Q2ueU-0n4T15tm?gp07qP@!r6mzM z&t~b4@?ZI@`{sXvf?7Kmvy1AL#_i|rFTz7>OC;oUf4)Jn2-LiV6E{*RO=Brnq*3?; z%HuDb@@k2j`-&8jr3#bg-fU(b$a`ltp7S?2|JPp>VXdLkU-Lka zeVe~33G83{Py|$a0@XHKnr1B$n9K8lj{1>^2?#?H2++l-AlO*Zp_0*c&11?Gc_H0 zy3s5aztOIq1S#{pFlDzw*xISCftoI z7K)lPbSl5Gy1{o$YF#{Z1D>-i-Aq`nmV7&B7Sj>4^q!&=>}dMIwj8qmf=#%7zwgJi z(DcF0b+&UMyH@DFl;~*dYe0YN39pATO}qIuvmu@-)8{b8N183cR)TxDiw(kqGXW{7 z?wPHQaiavHQxjn{4~e{$F%%R7_QNxblj;*p59@2%(@+I}nIbXXI=;ue%kY`CinYxm z7oYa1&5K)3wM))LazpuLjD1ⅅIlipvtZ&bmAg1z7_Qds4DrayLpmxVgFI>kV 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[^>]*$|^#([\w-]+)$/,Ua=/^.[^:#\[\.,]*$/,Va=/\S/, -Wa=/^(\s|\u00A0)+|(\s|\u00A0)+$/g,Xa=/^<(\w+)\s*\/?>(?:<\/\1>)?$/,P=navigator.userAgent,xa=false,Q=[],L,$=Object.prototype.toString,aa=Object.prototype.hasOwnProperty,ba=Array.prototype.push,R=Array.prototype.slice,ya=Array.prototype.indexOf;c.fn=c.prototype={init:function(a,b){var d,f;if(!a)return this;if(a.nodeType){this.context=this[0]=a;this.length=1;return this}if(a==="body"&&!b){this.context=s;this[0]=s.body;this.selector="body";this.length=1;return this}if(typeof a==="string")if((d=Ta.exec(a))&& -(d[1]||!b))if(d[1]){f=b?b.ownerDocument||b:s;if(a=Xa.exec(a))if(c.isPlainObject(b)){a=[s.createElement(a[1])];c.fn.attr.call(a,b,true)}else a=[f.createElement(a[1])];else{a=sa([d[1]],[f]);a=(a.cacheable?a.fragment.cloneNode(true):a.fragment).childNodes}return c.merge(this,a)}else{if(b=s.getElementById(d[2])){if(b.id!==d[2])return T.find(a);this.length=1;this[0]=b}this.context=s;this.selector=a;return this}else if(!b&&/^\w+$/.test(a)){this.selector=a;this.context=s;a=s.getElementsByTagName(a);return c.merge(this, -a)}else return!b||b.jquery?(b||T).find(a):c(b).find(a);else if(c.isFunction(a))return T.ready(a);if(a.selector!==w){this.selector=a.selector;this.context=a.context}return c.makeArray(a,this)},selector:"",jquery:"1.4.2",length:0,size:function(){return this.length},toArray:function(){return R.call(this,0)},get:function(a){return a==null?this.toArray():a<0?this.slice(a)[0]:this[a]},pushStack:function(a,b,d){var f=c();c.isArray(a)?ba.apply(f,a):c.merge(f,a);f.prevObject=this;f.context=this.context;if(b=== -"find")f.selector=this.selector+(this.selector?" ":"")+d;else if(b)f.selector=this.selector+"."+b+"("+d+")";return f},each:function(a,b){return c.each(this,a,b)},ready:function(a){c.bindReady();if(c.isReady)a.call(s,c);else Q&&Q.push(a);return this},eq:function(a){return a===-1?this.slice(a):this.slice(a,+a+1)},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},slice:function(){return this.pushStack(R.apply(this,arguments),"slice",R.call(arguments).join(","))},map:function(a){return this.pushStack(c.map(this, -function(b,d){return a.call(b,d,b)}))},end:function(){return this.prevObject||c(null)},push:ba,sort:[].sort,splice:[].splice};c.fn.init.prototype=c.fn;c.extend=c.fn.extend=function(){var a=arguments[0]||{},b=1,d=arguments.length,f=false,e,j,i,o;if(typeof a==="boolean"){f=a;a=arguments[1]||{};b=2}if(typeof a!=="object"&&!c.isFunction(a))a={};if(d===b){a=this;--b}for(;b
a"; -var e=d.getElementsByTagName("*"),j=d.getElementsByTagName("a")[0];if(!(!e||!e.length||!j)){c.support={leadingWhitespace:d.firstChild.nodeType===3,tbody:!d.getElementsByTagName("tbody").length,htmlSerialize:!!d.getElementsByTagName("link").length,style:/red/.test(j.getAttribute("style")),hrefNormalized:j.getAttribute("href")==="/a",opacity:/^0.55$/.test(j.style.opacity),cssFloat:!!j.style.cssFloat,checkOn:d.getElementsByTagName("input")[0].value==="on",optSelected:s.createElement("select").appendChild(s.createElement("option")).selected, -parentNode:d.removeChild(d.appendChild(s.createElement("div"))).parentNode===null,deleteExpando:true,checkClone:false,scriptEval:false,noCloneEvent:true,boxModel:null};b.type="text/javascript";try{b.appendChild(s.createTextNode("window."+f+"=1;"))}catch(i){}a.insertBefore(b,a.firstChild);if(A[f]){c.support.scriptEval=true;delete A[f]}try{delete b.test}catch(o){c.support.deleteExpando=false}a.removeChild(b);if(d.attachEvent&&d.fireEvent){d.attachEvent("onclick",function k(){c.support.noCloneEvent= -false;d.detachEvent("onclick",k)});d.cloneNode(true).fireEvent("onclick")}d=s.createElement("div");d.innerHTML="";a=s.createDocumentFragment();a.appendChild(d.firstChild);c.support.checkClone=a.cloneNode(true).cloneNode(true).lastChild.checked;c(function(){var k=s.createElement("div");k.style.width=k.style.paddingLeft="1px";s.body.appendChild(k);c.boxModel=c.support.boxModel=k.offsetWidth===2;s.body.removeChild(k).style.display="none"});a=function(k){var n= -s.createElement("div");k="on"+k;var r=k in n;if(!r){n.setAttribute(k,"return;");r=typeof n[k]==="function"}return r};c.support.submitBubbles=a("submit");c.support.changeBubbles=a("change");a=b=d=e=j=null}})();c.props={"for":"htmlFor","class":"className",readonly:"readOnly",maxlength:"maxLength",cellspacing:"cellSpacing",rowspan:"rowSpan",colspan:"colSpan",tabindex:"tabIndex",usemap:"useMap",frameborder:"frameBorder"};var G="jQuery"+J(),Ya=0,za={};c.extend({cache:{},expando:G,noData:{embed:true,object:true, -applet:true},data:function(a,b,d){if(!(a.nodeName&&c.noData[a.nodeName.toLowerCase()])){a=a==A?za:a;var f=a[G],e=c.cache;if(!f&&typeof b==="string"&&d===w)return null;f||(f=++Ya);if(typeof b==="object"){a[G]=f;e[f]=c.extend(true,{},b)}else if(!e[f]){a[G]=f;e[f]={}}a=e[f];if(d!==w)a[b]=d;return typeof b==="string"?a[b]:a}},removeData:function(a,b){if(!(a.nodeName&&c.noData[a.nodeName.toLowerCase()])){a=a==A?za:a;var d=a[G],f=c.cache,e=f[d];if(b){if(e){delete e[b];c.isEmptyObject(e)&&c.removeData(a)}}else{if(c.support.deleteExpando)delete a[c.expando]; -else a.removeAttribute&&a.removeAttribute(c.expando);delete f[d]}}}});c.fn.extend({data:function(a,b){if(typeof a==="undefined"&&this.length)return c.data(this[0]);else if(typeof a==="object")return this.each(function(){c.data(this,a)});var d=a.split(".");d[1]=d[1]?"."+d[1]:"";if(b===w){var f=this.triggerHandler("getData"+d[1]+"!",[d[0]]);if(f===w&&this.length)f=c.data(this[0],a);return f===w&&d[1]?this.data(d[0]):f}else return this.trigger("setData"+d[1]+"!",[d[0],b]).each(function(){c.data(this, -a,b)})},removeData:function(a){return this.each(function(){c.removeData(this,a)})}});c.extend({queue:function(a,b,d){if(a){b=(b||"fx")+"queue";var f=c.data(a,b);if(!d)return f||[];if(!f||c.isArray(d))f=c.data(a,b,c.makeArray(d));else f.push(d);return f}},dequeue:function(a,b){b=b||"fx";var d=c.queue(a,b),f=d.shift();if(f==="inprogress")f=d.shift();if(f){b==="fx"&&d.unshift("inprogress");f.call(a,function(){c.dequeue(a,b)})}}});c.fn.extend({queue:function(a,b){if(typeof a!=="string"){b=a;a="fx"}if(b=== -w)return c.queue(this[0],a);return this.each(function(){var d=c.queue(this,a,b);a==="fx"&&d[0]!=="inprogress"&&c.dequeue(this,a)})},dequeue:function(a){return this.each(function(){c.dequeue(this,a)})},delay:function(a,b){a=c.fx?c.fx.speeds[a]||a:a;b=b||"fx";return this.queue(b,function(){var d=this;setTimeout(function(){c.dequeue(d,b)},a)})},clearQueue:function(a){return this.queue(a||"fx",[])}});var Aa=/[\n\t]/g,ca=/\s+/,Za=/\r/g,$a=/href|src|style/,ab=/(button|input)/i,bb=/(button|input|object|select|textarea)/i, -cb=/^(a|area)$/i,Ba=/radio|checkbox/;c.fn.extend({attr:function(a,b){return X(this,a,b,true,c.attr)},removeAttr:function(a){return this.each(function(){c.attr(this,a,"");this.nodeType===1&&this.removeAttribute(a)})},addClass:function(a){if(c.isFunction(a))return this.each(function(n){var r=c(this);r.addClass(a.call(this,n,r.attr("class")))});if(a&&typeof a==="string")for(var b=(a||"").split(ca),d=0,f=this.length;d-1)return true;return false},val:function(a){if(a===w){var b=this[0];if(b){if(c.nodeName(b,"option"))return(b.attributes.value||{}).specified?b.value:b.text;if(c.nodeName(b,"select")){var d=b.selectedIndex,f=[],e=b.options;b=b.type==="select-one";if(d<0)return null;var j=b?d:0;for(d=b?d+1:e.length;j=0;else if(c.nodeName(this,"select")){var u=c.makeArray(r);c("option",this).each(function(){this.selected= -c.inArray(c(this).val(),u)>=0});if(!u.length)this.selectedIndex=-1}else this.value=r}})}});c.extend({attrFn:{val:true,css:true,html:true,text:true,data:true,width:true,height:true,offset:true},attr:function(a,b,d,f){if(!a||a.nodeType===3||a.nodeType===8)return w;if(f&&b in c.attrFn)return c(a)[b](d);f=a.nodeType!==1||!c.isXMLDoc(a);var e=d!==w;b=f&&c.props[b]||b;if(a.nodeType===1){var j=$a.test(b);if(b in a&&f&&!j){if(e){b==="type"&&ab.test(a.nodeName)&&a.parentNode&&c.error("type property can't be changed"); -a[b]=d}if(c.nodeName(a,"form")&&a.getAttributeNode(b))return a.getAttributeNode(b).nodeValue;if(b==="tabIndex")return(b=a.getAttributeNode("tabIndex"))&&b.specified?b.value:bb.test(a.nodeName)||cb.test(a.nodeName)&&a.href?0:w;return a[b]}if(!c.support.style&&f&&b==="style"){if(e)a.style.cssText=""+d;return a.style.cssText}e&&a.setAttribute(b,""+d);a=!c.support.hrefNormalized&&f&&j?a.getAttribute(b,2):a.getAttribute(b);return a===null?w:a}return c.style(a,b,d)}});var O=/\.(.*)$/,db=function(a){return a.replace(/[^\w\s\.\|`]/g, -function(b){return"\\"+b})};c.event={add:function(a,b,d,f){if(!(a.nodeType===3||a.nodeType===8)){if(a.setInterval&&a!==A&&!a.frameElement)a=A;var e,j;if(d.handler){e=d;d=e.handler}if(!d.guid)d.guid=c.guid++;if(j=c.data(a)){var i=j.events=j.events||{},o=j.handle;if(!o)j.handle=o=function(){return typeof c!=="undefined"&&!c.event.triggered?c.event.handle.apply(o.elem,arguments):w};o.elem=a;b=b.split(" ");for(var k,n=0,r;k=b[n++];){j=e?c.extend({},e):{handler:d,data:f};if(k.indexOf(".")>-1){r=k.split("."); -k=r.shift();j.namespace=r.slice(0).sort().join(".")}else{r=[];j.namespace=""}j.type=k;j.guid=d.guid;var u=i[k],z=c.event.special[k]||{};if(!u){u=i[k]=[];if(!z.setup||z.setup.call(a,f,r,o)===false)if(a.addEventListener)a.addEventListener(k,o,false);else a.attachEvent&&a.attachEvent("on"+k,o)}if(z.add){z.add.call(a,j);if(!j.handler.guid)j.handler.guid=d.guid}u.push(j);c.event.global[k]=true}a=null}}},global:{},remove:function(a,b,d,f){if(!(a.nodeType===3||a.nodeType===8)){var e,j=0,i,o,k,n,r,u,z=c.data(a), -C=z&&z.events;if(z&&C){if(b&&b.type){d=b.handler;b=b.type}if(!b||typeof b==="string"&&b.charAt(0)==="."){b=b||"";for(e in C)c.event.remove(a,e+b)}else{for(b=b.split(" ");e=b[j++];){n=e;i=e.indexOf(".")<0;o=[];if(!i){o=e.split(".");e=o.shift();k=new RegExp("(^|\\.)"+c.map(o.slice(0).sort(),db).join("\\.(?:.*\\.)?")+"(\\.|$)")}if(r=C[e])if(d){n=c.event.special[e]||{};for(B=f||0;B=0){a.type= -e=e.slice(0,-1);a.exclusive=true}if(!d){a.stopPropagation();c.event.global[e]&&c.each(c.cache,function(){this.events&&this.events[e]&&c.event.trigger(a,b,this.handle.elem)})}if(!d||d.nodeType===3||d.nodeType===8)return w;a.result=w;a.target=d;b=c.makeArray(b);b.unshift(a)}a.currentTarget=d;(f=c.data(d,"handle"))&&f.apply(d,b);f=d.parentNode||d.ownerDocument;try{if(!(d&&d.nodeName&&c.noData[d.nodeName.toLowerCase()]))if(d["on"+e]&&d["on"+e].apply(d,b)===false)a.result=false}catch(j){}if(!a.isPropagationStopped()&& -f)c.event.trigger(a,b,f,true);else if(!a.isDefaultPrevented()){f=a.target;var i,o=c.nodeName(f,"a")&&e==="click",k=c.event.special[e]||{};if((!k._default||k._default.call(d,a)===false)&&!o&&!(f&&f.nodeName&&c.noData[f.nodeName.toLowerCase()])){try{if(f[e]){if(i=f["on"+e])f["on"+e]=null;c.event.triggered=true;f[e]()}}catch(n){}if(i)f["on"+e]=i;c.event.triggered=false}}},handle:function(a){var b,d,f,e;a=arguments[0]=c.event.fix(a||A.event);a.currentTarget=this;b=a.type.indexOf(".")<0&&!a.exclusive; -if(!b){d=a.type.split(".");a.type=d.shift();f=new RegExp("(^|\\.)"+d.slice(0).sort().join("\\.(?:.*\\.)?")+"(\\.|$)")}e=c.data(this,"events");d=e[a.type];if(e&&d){d=d.slice(0);e=0;for(var j=d.length;e-1?c.map(a.options,function(f){return f.selected}).join("-"):"";else if(a.nodeName.toLowerCase()==="select")d=a.selectedIndex;return d},fa=function(a,b){var d=a.target,f,e;if(!(!da.test(d.nodeName)||d.readOnly)){f=c.data(d,"_change_data");e=Fa(d);if(a.type!=="focusout"||d.type!=="radio")c.data(d,"_change_data", -e);if(!(f===w||e===f))if(f!=null||e){a.type="change";return c.event.trigger(a,b,d)}}};c.event.special.change={filters:{focusout:fa,click:function(a){var b=a.target,d=b.type;if(d==="radio"||d==="checkbox"||b.nodeName.toLowerCase()==="select")return fa.call(this,a)},keydown:function(a){var b=a.target,d=b.type;if(a.keyCode===13&&b.nodeName.toLowerCase()!=="textarea"||a.keyCode===32&&(d==="checkbox"||d==="radio")||d==="select-multiple")return fa.call(this,a)},beforeactivate:function(a){a=a.target;c.data(a, -"_change_data",Fa(a))}},setup:function(){if(this.type==="file")return false;for(var a in ea)c.event.add(this,a+".specialChange",ea[a]);return da.test(this.nodeName)},teardown:function(){c.event.remove(this,".specialChange");return da.test(this.nodeName)}};ea=c.event.special.change.filters}s.addEventListener&&c.each({focus:"focusin",blur:"focusout"},function(a,b){function d(f){f=c.event.fix(f);f.type=b;return c.event.handle.call(this,f)}c.event.special[b]={setup:function(){this.addEventListener(a, -d,true)},teardown:function(){this.removeEventListener(a,d,true)}}});c.each(["bind","one"],function(a,b){c.fn[b]=function(d,f,e){if(typeof d==="object"){for(var j in d)this[b](j,f,d[j],e);return this}if(c.isFunction(f)){e=f;f=w}var i=b==="one"?c.proxy(e,function(k){c(this).unbind(k,i);return e.apply(this,arguments)}):e;if(d==="unload"&&b!=="one")this.one(d,f,e);else{j=0;for(var o=this.length;j0){y=t;break}}t=t[g]}m[q]=y}}}var f=/((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^[\]]*\]|['"][^'"]*['"]|[^[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g, -e=0,j=Object.prototype.toString,i=false,o=true;[0,0].sort(function(){o=false;return 0});var k=function(g,h,l,m){l=l||[];var q=h=h||s;if(h.nodeType!==1&&h.nodeType!==9)return[];if(!g||typeof g!=="string")return l;for(var p=[],v,t,y,S,H=true,M=x(h),I=g;(f.exec(""),v=f.exec(I))!==null;){I=v[3];p.push(v[1]);if(v[2]){S=v[3];break}}if(p.length>1&&r.exec(g))if(p.length===2&&n.relative[p[0]])t=ga(p[0]+p[1],h);else for(t=n.relative[p[0]]?[h]:k(p.shift(),h);p.length;){g=p.shift();if(n.relative[g])g+=p.shift(); -t=ga(g,t)}else{if(!m&&p.length>1&&h.nodeType===9&&!M&&n.match.ID.test(p[0])&&!n.match.ID.test(p[p.length-1])){v=k.find(p.shift(),h,M);h=v.expr?k.filter(v.expr,v.set)[0]:v.set[0]}if(h){v=m?{expr:p.pop(),set:z(m)}:k.find(p.pop(),p.length===1&&(p[0]==="~"||p[0]==="+")&&h.parentNode?h.parentNode:h,M);t=v.expr?k.filter(v.expr,v.set):v.set;if(p.length>0)y=z(t);else H=false;for(;p.length;){var D=p.pop();v=D;if(n.relative[D])v=p.pop();else D="";if(v==null)v=h;n.relative[D](y,v,M)}}else y=[]}y||(y=t);y||k.error(D|| -g);if(j.call(y)==="[object Array]")if(H)if(h&&h.nodeType===1)for(g=0;y[g]!=null;g++){if(y[g]&&(y[g]===true||y[g].nodeType===1&&E(h,y[g])))l.push(t[g])}else for(g=0;y[g]!=null;g++)y[g]&&y[g].nodeType===1&&l.push(t[g]);else l.push.apply(l,y);else z(y,l);if(S){k(S,q,l,m);k.uniqueSort(l)}return l};k.uniqueSort=function(g){if(B){i=o;g.sort(B);if(i)for(var h=1;h":function(g,h){var l=typeof h==="string";if(l&&!/\W/.test(h)){h=h.toLowerCase();for(var m=0,q=g.length;m=0))l||m.push(v);else if(l)h[p]=false;return false},ID:function(g){return g[1].replace(/\\/g,"")},TAG:function(g){return g[1].toLowerCase()}, -CHILD:function(g){if(g[1]==="nth"){var h=/(-?)(\d*)n((?:\+|-)?\d*)/.exec(g[2]==="even"&&"2n"||g[2]==="odd"&&"2n+1"||!/\D/.test(g[2])&&"0n+"+g[2]||g[2]);g[2]=h[1]+(h[2]||1)-0;g[3]=h[3]-0}g[0]=e++;return g},ATTR:function(g,h,l,m,q,p){h=g[1].replace(/\\/g,"");if(!p&&n.attrMap[h])g[1]=n.attrMap[h];if(g[2]==="~=")g[4]=" "+g[4]+" ";return g},PSEUDO:function(g,h,l,m,q){if(g[1]==="not")if((f.exec(g[3])||"").length>1||/^\w/.test(g[3]))g[3]=k(g[3],null,null,h);else{g=k.filter(g[3],h,l,true^q);l||m.push.apply(m, -g);return false}else if(n.match.POS.test(g[0])||n.match.CHILD.test(g[0]))return true;return g},POS:function(g){g.unshift(true);return g}},filters:{enabled:function(g){return g.disabled===false&&g.type!=="hidden"},disabled:function(g){return g.disabled===true},checked:function(g){return g.checked===true},selected:function(g){return g.selected===true},parent:function(g){return!!g.firstChild},empty:function(g){return!g.firstChild},has:function(g,h,l){return!!k(l[3],g).length},header:function(g){return/h\d/i.test(g.nodeName)}, -text:function(g){return"text"===g.type},radio:function(g){return"radio"===g.type},checkbox:function(g){return"checkbox"===g.type},file:function(g){return"file"===g.type},password:function(g){return"password"===g.type},submit:function(g){return"submit"===g.type},image:function(g){return"image"===g.type},reset:function(g){return"reset"===g.type},button:function(g){return"button"===g.type||g.nodeName.toLowerCase()==="button"},input:function(g){return/input|select|textarea|button/i.test(g.nodeName)}}, -setFilters:{first:function(g,h){return h===0},last:function(g,h,l,m){return h===m.length-1},even:function(g,h){return h%2===0},odd:function(g,h){return h%2===1},lt:function(g,h,l){return hl[3]-0},nth:function(g,h,l){return l[3]-0===h},eq:function(g,h,l){return l[3]-0===h}},filter:{PSEUDO:function(g,h,l,m){var q=h[1],p=n.filters[q];if(p)return p(g,l,h,m);else if(q==="contains")return(g.textContent||g.innerText||a([g])||"").indexOf(h[3])>=0;else if(q==="not"){h= -h[3];l=0;for(m=h.length;l=0}},ID:function(g,h){return g.nodeType===1&&g.getAttribute("id")===h},TAG:function(g,h){return h==="*"&&g.nodeType===1||g.nodeName.toLowerCase()===h},CLASS:function(g,h){return(" "+(g.className||g.getAttribute("class"))+" ").indexOf(h)>-1},ATTR:function(g,h){var l=h[1];g=n.attrHandle[l]?n.attrHandle[l](g):g[l]!=null?g[l]:g.getAttribute(l);l=g+"";var m=h[2];h=h[4];return g==null?m==="!=":m=== -"="?l===h:m==="*="?l.indexOf(h)>=0:m==="~="?(" "+l+" ").indexOf(h)>=0:!h?l&&g!==false:m==="!="?l!==h:m==="^="?l.indexOf(h)===0:m==="$="?l.substr(l.length-h.length)===h:m==="|="?l===h||l.substr(0,h.length+1)===h+"-":false},POS:function(g,h,l,m){var q=n.setFilters[h[2]];if(q)return q(g,l,h,m)}}},r=n.match.POS;for(var u in n.match){n.match[u]=new RegExp(n.match[u].source+/(?![^\[]*\])(?![^\(]*\))/.source);n.leftMatch[u]=new RegExp(/(^(?:.|\r|\n)*?)/.source+n.match[u].source.replace(/\\(\d+)/g,function(g, -h){return"\\"+(h-0+1)}))}var z=function(g,h){g=Array.prototype.slice.call(g,0);if(h){h.push.apply(h,g);return h}return g};try{Array.prototype.slice.call(s.documentElement.childNodes,0)}catch(C){z=function(g,h){h=h||[];if(j.call(g)==="[object Array]")Array.prototype.push.apply(h,g);else if(typeof g.length==="number")for(var l=0,m=g.length;l";var l=s.documentElement;l.insertBefore(g,l.firstChild);if(s.getElementById(h)){n.find.ID=function(m,q,p){if(typeof q.getElementById!=="undefined"&&!p)return(q=q.getElementById(m[1]))?q.id===m[1]||typeof q.getAttributeNode!=="undefined"&& -q.getAttributeNode("id").nodeValue===m[1]?[q]:w:[]};n.filter.ID=function(m,q){var p=typeof m.getAttributeNode!=="undefined"&&m.getAttributeNode("id");return m.nodeType===1&&p&&p.nodeValue===q}}l.removeChild(g);l=g=null})();(function(){var g=s.createElement("div");g.appendChild(s.createComment(""));if(g.getElementsByTagName("*").length>0)n.find.TAG=function(h,l){l=l.getElementsByTagName(h[1]);if(h[1]==="*"){h=[];for(var m=0;l[m];m++)l[m].nodeType===1&&h.push(l[m]);l=h}return l};g.innerHTML=""; -if(g.firstChild&&typeof g.firstChild.getAttribute!=="undefined"&&g.firstChild.getAttribute("href")!=="#")n.attrHandle.href=function(h){return h.getAttribute("href",2)};g=null})();s.querySelectorAll&&function(){var g=k,h=s.createElement("div");h.innerHTML="

";if(!(h.querySelectorAll&&h.querySelectorAll(".TEST").length===0)){k=function(m,q,p,v){q=q||s;if(!v&&q.nodeType===9&&!x(q))try{return z(q.querySelectorAll(m),p)}catch(t){}return g(m,q,p,v)};for(var l in g)k[l]=g[l];h=null}}(); -(function(){var g=s.createElement("div");g.innerHTML="
";if(!(!g.getElementsByClassName||g.getElementsByClassName("e").length===0)){g.lastChild.className="e";if(g.getElementsByClassName("e").length!==1){n.order.splice(1,0,"CLASS");n.find.CLASS=function(h,l,m){if(typeof l.getElementsByClassName!=="undefined"&&!m)return l.getElementsByClassName(h[1])};g=null}}})();var E=s.compareDocumentPosition?function(g,h){return!!(g.compareDocumentPosition(h)&16)}: -function(g,h){return g!==h&&(g.contains?g.contains(h):true)},x=function(g){return(g=(g?g.ownerDocument||g:0).documentElement)?g.nodeName!=="HTML":false},ga=function(g,h){var l=[],m="",q;for(h=h.nodeType?[h]:h;q=n.match.PSEUDO.exec(g);){m+=q[0];g=g.replace(n.match.PSEUDO,"")}g=n.relative[g]?g+"*":g;q=0;for(var p=h.length;q=0===d})};c.fn.extend({find:function(a){for(var b=this.pushStack("","find",a),d=0,f=0,e=this.length;f0)for(var j=d;j0},closest:function(a,b){if(c.isArray(a)){var d=[],f=this[0],e,j= -{},i;if(f&&a.length){e=0;for(var o=a.length;e-1:c(f).is(e)){d.push({selector:i,elem:f});delete j[i]}}f=f.parentNode}}return d}var k=c.expr.match.POS.test(a)?c(a,b||this.context):null;return this.map(function(n,r){for(;r&&r.ownerDocument&&r!==b;){if(k?k.index(r)>-1:c(r).is(a))return r;r=r.parentNode}return null})},index:function(a){if(!a||typeof a=== -"string")return c.inArray(this[0],a?c(a):this.parent().children());return c.inArray(a.jquery?a[0]:a,this)},add:function(a,b){a=typeof a==="string"?c(a,b||this.context):c.makeArray(a);b=c.merge(this.get(),a);return this.pushStack(qa(a[0])||qa(b[0])?b:c.unique(b))},andSelf:function(){return this.add(this.prevObject)}});c.each({parent:function(a){return(a=a.parentNode)&&a.nodeType!==11?a:null},parents:function(a){return c.dir(a,"parentNode")},parentsUntil:function(a,b,d){return c.dir(a,"parentNode", -d)},next:function(a){return c.nth(a,2,"nextSibling")},prev:function(a){return c.nth(a,2,"previousSibling")},nextAll:function(a){return c.dir(a,"nextSibling")},prevAll:function(a){return c.dir(a,"previousSibling")},nextUntil:function(a,b,d){return c.dir(a,"nextSibling",d)},prevUntil:function(a,b,d){return c.dir(a,"previousSibling",d)},siblings:function(a){return c.sibling(a.parentNode.firstChild,a)},children:function(a){return c.sibling(a.firstChild)},contents:function(a){return c.nodeName(a,"iframe")? -a.contentDocument||a.contentWindow.document:c.makeArray(a.childNodes)}},function(a,b){c.fn[a]=function(d,f){var e=c.map(this,b,d);eb.test(a)||(f=d);if(f&&typeof f==="string")e=c.filter(f,e);e=this.length>1?c.unique(e):e;if((this.length>1||gb.test(f))&&fb.test(a))e=e.reverse();return this.pushStack(e,a,R.call(arguments).join(","))}});c.extend({filter:function(a,b,d){if(d)a=":not("+a+")";return c.find.matches(a,b)},dir:function(a,b,d){var f=[];for(a=a[b];a&&a.nodeType!==9&&(d===w||a.nodeType!==1||!c(a).is(d));){a.nodeType=== -1&&f.push(a);a=a[b]}return f},nth:function(a,b,d){b=b||1;for(var f=0;a;a=a[d])if(a.nodeType===1&&++f===b)break;return a},sibling:function(a,b){for(var d=[];a;a=a.nextSibling)a.nodeType===1&&a!==b&&d.push(a);return d}});var Ja=/ jQuery\d+="(?:\d+|null)"/g,V=/^\s+/,Ka=/(<([\w:]+)[^>]*?)\/>/g,hb=/^(?:area|br|col|embed|hr|img|input|link|meta|param)$/i,La=/<([\w:]+)/,ib=/"},F={option:[1,""],legend:[1,"
","
"],thead:[1,"","
"],tr:[2,"","
"],td:[3,"","
"],col:[2,"","
"],area:[1,"",""],_default:[0,"",""]};F.optgroup=F.option;F.tbody=F.tfoot=F.colgroup=F.caption=F.thead;F.th=F.td;if(!c.support.htmlSerialize)F._default=[1,"div
","
"];c.fn.extend({text:function(a){if(c.isFunction(a))return this.each(function(b){var d= -c(this);d.text(a.call(this,b,d.text()))});if(typeof a!=="object"&&a!==w)return this.empty().append((this[0]&&this[0].ownerDocument||s).createTextNode(a));return c.text(this)},wrapAll:function(a){if(c.isFunction(a))return this.each(function(d){c(this).wrapAll(a.call(this,d))});if(this[0]){var b=c(a,this[0].ownerDocument).eq(0).clone(true);this[0].parentNode&&b.insertBefore(this[0]);b.map(function(){for(var d=this;d.firstChild&&d.firstChild.nodeType===1;)d=d.firstChild;return d}).append(this)}return this}, -wrapInner:function(a){if(c.isFunction(a))return this.each(function(b){c(this).wrapInner(a.call(this,b))});return this.each(function(){var b=c(this),d=b.contents();d.length?d.wrapAll(a):b.append(a)})},wrap:function(a){return this.each(function(){c(this).wrapAll(a)})},unwrap:function(){return this.parent().each(function(){c.nodeName(this,"body")||c(this).replaceWith(this.childNodes)}).end()},append:function(){return this.domManip(arguments,true,function(a){this.nodeType===1&&this.appendChild(a)})}, -prepend:function(){return this.domManip(arguments,true,function(a){this.nodeType===1&&this.insertBefore(a,this.firstChild)})},before:function(){if(this[0]&&this[0].parentNode)return this.domManip(arguments,false,function(b){this.parentNode.insertBefore(b,this)});else if(arguments.length){var a=c(arguments[0]);a.push.apply(a,this.toArray());return this.pushStack(a,"before",arguments)}},after:function(){if(this[0]&&this[0].parentNode)return this.domManip(arguments,false,function(b){this.parentNode.insertBefore(b, -this.nextSibling)});else if(arguments.length){var a=this.pushStack(this,"after",arguments);a.push.apply(a,c(arguments[0]).toArray());return a}},remove:function(a,b){for(var d=0,f;(f=this[d])!=null;d++)if(!a||c.filter(a,[f]).length){if(!b&&f.nodeType===1){c.cleanData(f.getElementsByTagName("*"));c.cleanData([f])}f.parentNode&&f.parentNode.removeChild(f)}return this},empty:function(){for(var a=0,b;(b=this[a])!=null;a++)for(b.nodeType===1&&c.cleanData(b.getElementsByTagName("*"));b.firstChild;)b.removeChild(b.firstChild); -return this},clone:function(a){var b=this.map(function(){if(!c.support.noCloneEvent&&!c.isXMLDoc(this)){var d=this.outerHTML,f=this.ownerDocument;if(!d){d=f.createElement("div");d.appendChild(this.cloneNode(true));d=d.innerHTML}return c.clean([d.replace(Ja,"").replace(/=([^="'>\s]+\/)>/g,'="$1">').replace(V,"")],f)[0]}else return this.cloneNode(true)});if(a===true){ra(this,b);ra(this.find("*"),b.find("*"))}return b},html:function(a){if(a===w)return this[0]&&this[0].nodeType===1?this[0].innerHTML.replace(Ja, -""):null;else if(typeof a==="string"&&!ta.test(a)&&(c.support.leadingWhitespace||!V.test(a))&&!F[(La.exec(a)||["",""])[1].toLowerCase()]){a=a.replace(Ka,Ma);try{for(var b=0,d=this.length;b0||e.cacheable||this.length>1?k.cloneNode(true):k)}o.length&&c.each(o,Qa)}return this}});c.fragments={};c.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(a,b){c.fn[a]=function(d){var f=[];d=c(d);var e=this.length===1&&this[0].parentNode;if(e&&e.nodeType===11&&e.childNodes.length===1&&d.length===1){d[b](this[0]); -return this}else{e=0;for(var j=d.length;e0?this.clone(true):this).get();c.fn[b].apply(c(d[e]),i);f=f.concat(i)}return this.pushStack(f,a,d.selector)}}});c.extend({clean:function(a,b,d,f){b=b||s;if(typeof b.createElement==="undefined")b=b.ownerDocument||b[0]&&b[0].ownerDocument||s;for(var e=[],j=0,i;(i=a[j])!=null;j++){if(typeof i==="number")i+="";if(i){if(typeof i==="string"&&!jb.test(i))i=b.createTextNode(i);else if(typeof i==="string"){i=i.replace(Ka,Ma);var o=(La.exec(i)||["", -""])[1].toLowerCase(),k=F[o]||F._default,n=k[0],r=b.createElement("div");for(r.innerHTML=k[1]+i+k[2];n--;)r=r.lastChild;if(!c.support.tbody){n=ib.test(i);o=o==="table"&&!n?r.firstChild&&r.firstChild.childNodes:k[1]===""&&!n?r.childNodes:[];for(k=o.length-1;k>=0;--k)c.nodeName(o[k],"tbody")&&!o[k].childNodes.length&&o[k].parentNode.removeChild(o[k])}!c.support.leadingWhitespace&&V.test(i)&&r.insertBefore(b.createTextNode(V.exec(i)[0]),r.firstChild);i=r.childNodes}if(i.nodeType)e.push(i);else e= -c.merge(e,i)}}if(d)for(j=0;e[j];j++)if(f&&c.nodeName(e[j],"script")&&(!e[j].type||e[j].type.toLowerCase()==="text/javascript"))f.push(e[j].parentNode?e[j].parentNode.removeChild(e[j]):e[j]);else{e[j].nodeType===1&&e.splice.apply(e,[j+1,0].concat(c.makeArray(e[j].getElementsByTagName("script"))));d.appendChild(e[j])}return e},cleanData:function(a){for(var b,d,f=c.cache,e=c.event.special,j=c.support.deleteExpando,i=0,o;(o=a[i])!=null;i++)if(d=o[c.expando]){b=f[d];if(b.events)for(var k in b.events)e[k]? -c.event.remove(o,k):Ca(o,k,b.handle);if(j)delete o[c.expando];else o.removeAttribute&&o.removeAttribute(c.expando);delete f[d]}}});var kb=/z-?index|font-?weight|opacity|zoom|line-?height/i,Na=/alpha\([^)]*\)/,Oa=/opacity=([^)]*)/,ha=/float/i,ia=/-([a-z])/ig,lb=/([A-Z])/g,mb=/^-?\d+(?:px)?$/i,nb=/^-?\d/,ob={position:"absolute",visibility:"hidden",display:"block"},pb=["Left","Right"],qb=["Top","Bottom"],rb=s.defaultView&&s.defaultView.getComputedStyle,Pa=c.support.cssFloat?"cssFloat":"styleFloat",ja= -function(a,b){return b.toUpperCase()};c.fn.css=function(a,b){return X(this,a,b,true,function(d,f,e){if(e===w)return c.curCSS(d,f);if(typeof e==="number"&&!kb.test(f))e+="px";c.style(d,f,e)})};c.extend({style:function(a,b,d){if(!a||a.nodeType===3||a.nodeType===8)return w;if((b==="width"||b==="height")&&parseFloat(d)<0)d=w;var f=a.style||a,e=d!==w;if(!c.support.opacity&&b==="opacity"){if(e){f.zoom=1;b=parseInt(d,10)+""==="NaN"?"":"alpha(opacity="+d*100+")";a=f.filter||c.curCSS(a,"filter")||"";f.filter= -Na.test(a)?a.replace(Na,b):b}return f.filter&&f.filter.indexOf("opacity=")>=0?parseFloat(Oa.exec(f.filter)[1])/100+"":""}if(ha.test(b))b=Pa;b=b.replace(ia,ja);if(e)f[b]=d;return f[b]},css:function(a,b,d,f){if(b==="width"||b==="height"){var e,j=b==="width"?pb:qb;function i(){e=b==="width"?a.offsetWidth:a.offsetHeight;f!=="border"&&c.each(j,function(){f||(e-=parseFloat(c.curCSS(a,"padding"+this,true))||0);if(f==="margin")e+=parseFloat(c.curCSS(a,"margin"+this,true))||0;else e-=parseFloat(c.curCSS(a, -"border"+this+"Width",true))||0})}a.offsetWidth!==0?i():c.swap(a,ob,i);return Math.max(0,Math.round(e))}return c.curCSS(a,b,d)},curCSS:function(a,b,d){var f,e=a.style;if(!c.support.opacity&&b==="opacity"&&a.currentStyle){f=Oa.test(a.currentStyle.filter||"")?parseFloat(RegExp.$1)/100+"":"";return f===""?"1":f}if(ha.test(b))b=Pa;if(!d&&e&&e[b])f=e[b];else if(rb){if(ha.test(b))b="float";b=b.replace(lb,"-$1").toLowerCase();e=a.ownerDocument.defaultView;if(!e)return null;if(a=e.getComputedStyle(a,null))f= -a.getPropertyValue(b);if(b==="opacity"&&f==="")f="1"}else if(a.currentStyle){d=b.replace(ia,ja);f=a.currentStyle[b]||a.currentStyle[d];if(!mb.test(f)&&nb.test(f)){b=e.left;var j=a.runtimeStyle.left;a.runtimeStyle.left=a.currentStyle.left;e.left=d==="fontSize"?"1em":f||0;f=e.pixelLeft+"px";e.left=b;a.runtimeStyle.left=j}}return f},swap:function(a,b,d){var f={};for(var e in b){f[e]=a.style[e];a.style[e]=b[e]}d.call(a);for(e in b)a.style[e]=f[e]}});if(c.expr&&c.expr.filters){c.expr.filters.hidden=function(a){var b= -a.offsetWidth,d=a.offsetHeight,f=a.nodeName.toLowerCase()==="tr";return b===0&&d===0&&!f?true:b>0&&d>0&&!f?false:c.curCSS(a,"display")==="none"};c.expr.filters.visible=function(a){return!c.expr.filters.hidden(a)}}var sb=J(),tb=//gi,ub=/select|textarea/i,vb=/color|date|datetime|email|hidden|month|number|password|range|search|tel|text|time|url|week/i,N=/=\?(&|$)/,ka=/\?/,wb=/(\?|&)_=.*?(&|$)/,xb=/^(\w+:)?\/\/([^\/?#]+)/,yb=/%20/g,zb=c.fn.load;c.fn.extend({load:function(a,b,d){if(typeof a!== -"string")return zb.call(this,a);else if(!this.length)return this;var f=a.indexOf(" ");if(f>=0){var e=a.slice(f,a.length);a=a.slice(0,f)}f="GET";if(b)if(c.isFunction(b)){d=b;b=null}else if(typeof b==="object"){b=c.param(b,c.ajaxSettings.traditional);f="POST"}var j=this;c.ajax({url:a,type:f,dataType:"html",data:b,complete:function(i,o){if(o==="success"||o==="notmodified")j.html(e?c("
").append(i.responseText.replace(tb,"")).find(e):i.responseText);d&&j.each(d,[i.responseText,o,i])}});return this}, -serialize:function(){return c.param(this.serializeArray())},serializeArray:function(){return this.map(function(){return this.elements?c.makeArray(this.elements):this}).filter(function(){return this.name&&!this.disabled&&(this.checked||ub.test(this.nodeName)||vb.test(this.type))}).map(function(a,b){a=c(this).val();return a==null?null:c.isArray(a)?c.map(a,function(d){return{name:b.name,value:d}}):{name:b.name,value:a}}).get()}});c.each("ajaxStart ajaxStop ajaxComplete ajaxError ajaxSuccess ajaxSend".split(" "), -function(a,b){c.fn[b]=function(d){return this.bind(b,d)}});c.extend({get:function(a,b,d,f){if(c.isFunction(b)){f=f||d;d=b;b=null}return c.ajax({type:"GET",url:a,data:b,success:d,dataType:f})},getScript:function(a,b){return c.get(a,null,b,"script")},getJSON:function(a,b,d){return c.get(a,b,d,"json")},post:function(a,b,d,f){if(c.isFunction(b)){f=f||d;d=b;b={}}return c.ajax({type:"POST",url:a,data:b,success:d,dataType:f})},ajaxSetup:function(a){c.extend(c.ajaxSettings,a)},ajaxSettings:{url:location.href, -global:true,type:"GET",contentType:"application/x-www-form-urlencoded",processData:true,async:true,xhr:A.XMLHttpRequest&&(A.location.protocol!=="file:"||!A.ActiveXObject)?function(){return new A.XMLHttpRequest}:function(){try{return new A.ActiveXObject("Microsoft.XMLHTTP")}catch(a){}},accepts:{xml:"application/xml, text/xml",html:"text/html",script:"text/javascript, application/javascript",json:"application/json, text/javascript",text:"text/plain",_default:"*/*"}},lastModified:{},etag:{},ajax:function(a){function b(){e.success&& -e.success.call(k,o,i,x);e.global&&f("ajaxSuccess",[x,e])}function d(){e.complete&&e.complete.call(k,x,i);e.global&&f("ajaxComplete",[x,e]);e.global&&!--c.active&&c.event.trigger("ajaxStop")}function f(q,p){(e.context?c(e.context):c.event).trigger(q,p)}var e=c.extend(true,{},c.ajaxSettings,a),j,i,o,k=a&&a.context||e,n=e.type.toUpperCase();if(e.data&&e.processData&&typeof e.data!=="string")e.data=c.param(e.data,e.traditional);if(e.dataType==="jsonp"){if(n==="GET")N.test(e.url)||(e.url+=(ka.test(e.url)? -"&":"?")+(e.jsonp||"callback")+"=?");else if(!e.data||!N.test(e.data))e.data=(e.data?e.data+"&":"")+(e.jsonp||"callback")+"=?";e.dataType="json"}if(e.dataType==="json"&&(e.data&&N.test(e.data)||N.test(e.url))){j=e.jsonpCallback||"jsonp"+sb++;if(e.data)e.data=(e.data+"").replace(N,"="+j+"$1");e.url=e.url.replace(N,"="+j+"$1");e.dataType="script";A[j]=A[j]||function(q){o=q;b();d();A[j]=w;try{delete A[j]}catch(p){}z&&z.removeChild(C)}}if(e.dataType==="script"&&e.cache===null)e.cache=false;if(e.cache=== -false&&n==="GET"){var r=J(),u=e.url.replace(wb,"$1_="+r+"$2");e.url=u+(u===e.url?(ka.test(e.url)?"&":"?")+"_="+r:"")}if(e.data&&n==="GET")e.url+=(ka.test(e.url)?"&":"?")+e.data;e.global&&!c.active++&&c.event.trigger("ajaxStart");r=(r=xb.exec(e.url))&&(r[1]&&r[1]!==location.protocol||r[2]!==location.host);if(e.dataType==="script"&&n==="GET"&&r){var z=s.getElementsByTagName("head")[0]||s.documentElement,C=s.createElement("script");C.src=e.url;if(e.scriptCharset)C.charset=e.scriptCharset;if(!j){var B= -false;C.onload=C.onreadystatechange=function(){if(!B&&(!this.readyState||this.readyState==="loaded"||this.readyState==="complete")){B=true;b();d();C.onload=C.onreadystatechange=null;z&&C.parentNode&&z.removeChild(C)}}}z.insertBefore(C,z.firstChild);return w}var E=false,x=e.xhr();if(x){e.username?x.open(n,e.url,e.async,e.username,e.password):x.open(n,e.url,e.async);try{if(e.data||a&&a.contentType)x.setRequestHeader("Content-Type",e.contentType);if(e.ifModified){c.lastModified[e.url]&&x.setRequestHeader("If-Modified-Since", -c.lastModified[e.url]);c.etag[e.url]&&x.setRequestHeader("If-None-Match",c.etag[e.url])}r||x.setRequestHeader("X-Requested-With","XMLHttpRequest");x.setRequestHeader("Accept",e.dataType&&e.accepts[e.dataType]?e.accepts[e.dataType]+", */*":e.accepts._default)}catch(ga){}if(e.beforeSend&&e.beforeSend.call(k,x,e)===false){e.global&&!--c.active&&c.event.trigger("ajaxStop");x.abort();return false}e.global&&f("ajaxSend",[x,e]);var g=x.onreadystatechange=function(q){if(!x||x.readyState===0||q==="abort"){E|| -d();E=true;if(x)x.onreadystatechange=c.noop}else if(!E&&x&&(x.readyState===4||q==="timeout")){E=true;x.onreadystatechange=c.noop;i=q==="timeout"?"timeout":!c.httpSuccess(x)?"error":e.ifModified&&c.httpNotModified(x,e.url)?"notmodified":"success";var p;if(i==="success")try{o=c.httpData(x,e.dataType,e)}catch(v){i="parsererror";p=v}if(i==="success"||i==="notmodified")j||b();else c.handleError(e,x,i,p);d();q==="timeout"&&x.abort();if(e.async)x=null}};try{var h=x.abort;x.abort=function(){x&&h.call(x); -g("abort")}}catch(l){}e.async&&e.timeout>0&&setTimeout(function(){x&&!E&&g("timeout")},e.timeout);try{x.send(n==="POST"||n==="PUT"||n==="DELETE"?e.data:null)}catch(m){c.handleError(e,x,null,m);d()}e.async||g();return x}},handleError:function(a,b,d,f){if(a.error)a.error.call(a.context||a,b,d,f);if(a.global)(a.context?c(a.context):c.event).trigger("ajaxError",[b,a,f])},active:0,httpSuccess:function(a){try{return!a.status&&location.protocol==="file:"||a.status>=200&&a.status<300||a.status===304||a.status=== -1223||a.status===0}catch(b){}return false},httpNotModified:function(a,b){var d=a.getResponseHeader("Last-Modified"),f=a.getResponseHeader("Etag");if(d)c.lastModified[b]=d;if(f)c.etag[b]=f;return a.status===304||a.status===0},httpData:function(a,b,d){var f=a.getResponseHeader("content-type")||"",e=b==="xml"||!b&&f.indexOf("xml")>=0;a=e?a.responseXML:a.responseText;e&&a.documentElement.nodeName==="parsererror"&&c.error("parsererror");if(d&&d.dataFilter)a=d.dataFilter(a,b);if(typeof a==="string")if(b=== -"json"||!b&&f.indexOf("json")>=0)a=c.parseJSON(a);else if(b==="script"||!b&&f.indexOf("javascript")>=0)c.globalEval(a);return a},param:function(a,b){function d(i,o){if(c.isArray(o))c.each(o,function(k,n){b||/\[\]$/.test(i)?f(i,n):d(i+"["+(typeof n==="object"||c.isArray(n)?k:"")+"]",n)});else!b&&o!=null&&typeof o==="object"?c.each(o,function(k,n){d(i+"["+k+"]",n)}):f(i,o)}function f(i,o){o=c.isFunction(o)?o():o;e[e.length]=encodeURIComponent(i)+"="+encodeURIComponent(o)}var e=[];if(b===w)b=c.ajaxSettings.traditional; -if(c.isArray(a)||a.jquery)c.each(a,function(){f(this.name,this.value)});else for(var j in a)d(j,a[j]);return e.join("&").replace(yb,"+")}});var la={},Ab=/toggle|show|hide/,Bb=/^([+-]=)?([\d+-.]+)(.*)$/,W,va=[["height","marginTop","marginBottom","paddingTop","paddingBottom"],["width","marginLeft","marginRight","paddingLeft","paddingRight"],["opacity"]];c.fn.extend({show:function(a,b){if(a||a===0)return this.animate(K("show",3),a,b);else{a=0;for(b=this.length;a").appendTo("body");f=e.css("display");if(f==="none")f="block";e.remove();la[d]=f}c.data(this[a],"olddisplay",f)}}a=0;for(b=this.length;a=0;f--)if(d[f].elem===this){b&&d[f](true);d.splice(f,1)}});b||this.dequeue();return this}});c.each({slideDown:K("show",1),slideUp:K("hide",1),slideToggle:K("toggle",1),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"}},function(a,b){c.fn[a]=function(d,f){return this.animate(b,d,f)}});c.extend({speed:function(a,b,d){var f=a&&typeof a==="object"?a:{complete:d||!d&&b||c.isFunction(a)&&a,duration:a,easing:d&&b||b&&!c.isFunction(b)&&b};f.duration=c.fx.off?0:typeof f.duration=== -"number"?f.duration:c.fx.speeds[f.duration]||c.fx.speeds._default;f.old=f.complete;f.complete=function(){f.queue!==false&&c(this).dequeue();c.isFunction(f.old)&&f.old.call(this)};return f},easing:{linear:function(a,b,d,f){return d+f*a},swing:function(a,b,d,f){return(-Math.cos(a*Math.PI)/2+0.5)*f+d}},timers:[],fx:function(a,b,d){this.options=b;this.elem=a;this.prop=d;if(!b.orig)b.orig={}}});c.fx.prototype={update:function(){this.options.step&&this.options.step.call(this.elem,this.now,this);(c.fx.step[this.prop]|| -c.fx.step._default)(this);if((this.prop==="height"||this.prop==="width")&&this.elem.style)this.elem.style.display="block"},cur:function(a){if(this.elem[this.prop]!=null&&(!this.elem.style||this.elem.style[this.prop]==null))return this.elem[this.prop];return(a=parseFloat(c.css(this.elem,this.prop,a)))&&a>-10000?a:parseFloat(c.curCSS(this.elem,this.prop))||0},custom:function(a,b,d){function f(j){return e.step(j)}this.startTime=J();this.start=a;this.end=b;this.unit=d||this.unit||"px";this.now=this.start; -this.pos=this.state=0;var e=this;f.elem=this.elem;if(f()&&c.timers.push(f)&&!W)W=setInterval(c.fx.tick,13)},show:function(){this.options.orig[this.prop]=c.style(this.elem,this.prop);this.options.show=true;this.custom(this.prop==="width"||this.prop==="height"?1:0,this.cur());c(this.elem).show()},hide:function(){this.options.orig[this.prop]=c.style(this.elem,this.prop);this.options.hide=true;this.custom(this.cur(),0)},step:function(a){var b=J(),d=true;if(a||b>=this.options.duration+this.startTime){this.now= -this.end;this.pos=this.state=1;this.update();this.options.curAnim[this.prop]=true;for(var f in this.options.curAnim)if(this.options.curAnim[f]!==true)d=false;if(d){if(this.options.display!=null){this.elem.style.overflow=this.options.overflow;a=c.data(this.elem,"olddisplay");this.elem.style.display=a?a:this.options.display;if(c.css(this.elem,"display")==="none")this.elem.style.display="block"}this.options.hide&&c(this.elem).hide();if(this.options.hide||this.options.show)for(var e in this.options.curAnim)c.style(this.elem, -e,this.options.orig[e]);this.options.complete.call(this.elem)}return false}else{e=b-this.startTime;this.state=e/this.options.duration;a=this.options.easing||(c.easing.swing?"swing":"linear");this.pos=c.easing[this.options.specialEasing&&this.options.specialEasing[this.prop]||a](this.state,e,0,1,this.options.duration);this.now=this.start+(this.end-this.start)*this.pos;this.update()}return true}};c.extend(c.fx,{tick:function(){for(var a=c.timers,b=0;b
"; -a.insertBefore(b,a.firstChild);d=b.firstChild;f=d.firstChild;e=d.nextSibling.firstChild.firstChild;this.doesNotAddBorder=f.offsetTop!==5;this.doesAddBorderForTableAndCells=e.offsetTop===5;f.style.position="fixed";f.style.top="20px";this.supportsFixedPosition=f.offsetTop===20||f.offsetTop===15;f.style.position=f.style.top="";d.style.overflow="hidden";d.style.position="relative";this.subtractsBorderForOverflowNotVisible=f.offsetTop===-5;this.doesNotIncludeMarginInBodyOffset=a.offsetTop!==j;a.removeChild(b); -c.offset.initialize=c.noop},bodyOffset:function(a){var b=a.offsetTop,d=a.offsetLeft;c.offset.initialize();if(c.offset.doesNotIncludeMarginInBodyOffset){b+=parseFloat(c.curCSS(a,"marginTop",true))||0;d+=parseFloat(c.curCSS(a,"marginLeft",true))||0}return{top:b,left:d}},setOffset:function(a,b,d){if(/static/.test(c.curCSS(a,"position")))a.style.position="relative";var f=c(a),e=f.offset(),j=parseInt(c.curCSS(a,"top",true),10)||0,i=parseInt(c.curCSS(a,"left",true),10)||0;if(c.isFunction(b))b=b.call(a, -d,e);d={top:b.top-e.top+j,left:b.left-e.left+i};"using"in b?b.using.call(a,d):f.css(d)}};c.fn.extend({position:function(){if(!this[0])return null;var a=this[0],b=this.offsetParent(),d=this.offset(),f=/^body|html$/i.test(b[0].nodeName)?{top:0,left:0}:b.offset();d.top-=parseFloat(c.curCSS(a,"marginTop",true))||0;d.left-=parseFloat(c.curCSS(a,"marginLeft",true))||0;f.top+=parseFloat(c.curCSS(b[0],"borderTopWidth",true))||0;f.left+=parseFloat(c.curCSS(b[0],"borderLeftWidth",true))||0;return{top:d.top- -f.top,left:d.left-f.left}},offsetParent:function(){return this.map(function(){for(var a=this.offsetParent||s.body;a&&!/^body|html$/i.test(a.nodeName)&&c.css(a,"position")==="static";)a=a.offsetParent;return a})}});c.each(["Left","Top"],function(a,b){var d="scroll"+b;c.fn[d]=function(f){var e=this[0],j;if(!e)return null;if(f!==w)return this.each(function(){if(j=wa(this))j.scrollTo(!a?f:c(j).scrollLeft(),a?f:c(j).scrollTop());else this[d]=f});else return(j=wa(e))?"pageXOffset"in j?j[a?"pageYOffset": -"pageXOffset"]:c.support.boxModel&&j.document.documentElement[d]||j.document.body[d]:e[d]}});c.each(["Height","Width"],function(a,b){var d=b.toLowerCase();c.fn["inner"+b]=function(){return this[0]?c.css(this[0],d,false,"padding"):null};c.fn["outer"+b]=function(f){return this[0]?c.css(this[0],d,false,f?"margin":"border"):null};c.fn[d]=function(f){var e=this[0];if(!e)return f==null?null:this;if(c.isFunction(f))return this.each(function(j){var i=c(this);i[d](f.call(this,j,i[d]()))});return"scrollTo"in -e&&e.document?e.document.compatMode==="CSS1Compat"&&e.document.documentElement["client"+b]||e.document.body["client"+b]:e.nodeType===9?Math.max(e.documentElement["client"+b],e.body["scroll"+b],e.documentElement["scroll"+b],e.body["offset"+b],e.documentElement["offset"+b]):f===w?c.css(e,d):this.css(d,typeof f==="string"?f:f+"px")}});A.jQuery=A.$=c})(window); diff --git a/eg/tryhy/js/jquery.console.js b/eg/tryhy/js/jquery.console.js deleted file mode 100644 index 10e893e..0000000 --- a/eg/tryhy/js/jquery.console.js +++ /dev/null @@ -1,721 +0,0 @@ -// JQuery Console 1.0 -// Sun Feb 21 20:28:47 GMT 2010 -// -// Copyright 2010 Chris Done, Simon David Pratt. All rights reserved. -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions -// are met: -// -// 1. Redistributions of source code must retain the above -// copyright notice, this list of conditions and the following -// disclaimer. -// -// 2. Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials -// provided with the distribution. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS -// FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE -// COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, -// INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, -// BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; -// LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER -// CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT -// LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN -// ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE -// POSSIBILITY OF SUCH DAMAGE. - -// TESTED ON -// Internet Explorer 6 -// Opera 10.01 -// Chromium 4.0.237.0 (Ubuntu build 31094) -// Firefox 3.5.8, 3.6.2 (Mac) -// Safari 4.0.5 (6531.22.7) (Mac) -// Google Chrome 5.0.375.55 (Mac) - -(function($){ - var isWebkit = !!~navigator.userAgent.indexOf(' AppleWebKit/'); - - $.fn.console = function(config){ - //////////////////////////////////////////////////////////////////////// - // Constants - // Some are enums, data types, others just for optimisation - var keyCodes = { - // left - 37: moveBackward, - // right - 39: moveForward, - // up - 38: previousHistory, - // down - 40: nextHistory, - // backspace - 8: backDelete, - // delete - 46: forwardDelete, - // end - 35: moveToEnd, - // start - 36: moveToStart, - // return - 13: commandTrigger, - // tab - 18: doNothing, - // tab - 9: doComplete - }; - var ctrlCodes = { - // C-a - 65: moveToStart, - // C-e - 69: moveToEnd, - // C-d - 68: forwardDelete, - // C-n - 78: nextHistory, - // C-p - 80: previousHistory, - // C-b - 66: moveBackward, - // C-f - 70: moveForward, - // C-k - 75: deleteUntilEnd - }; - if(config.ctrlCodes) { - $.extend(ctrlCodes, config.ctrlCodes); - } - var altCodes = { - // M-f - 70: moveToNextWord, - // M-b - 66: moveToPreviousWord, - // M-d - 68: deleteNextWord - }; - var cursor = ' '; - - //////////////////////////////////////////////////////////////////////// - // Globals - var container = $(this); - var inner = $('
'); - // erjiang: changed this from a text input to a textarea so we - // can get pasted newlines - var typer = $(''); - // Prompt - var promptBox; - var prompt; - var promptLabel = config && config.promptLabel? config.promptLabel : "> "; - var continuedPromptLabel = config && config.continuedPromptLabel? - config.continuedPromptLabel : "> "; - var column = 0; - var promptText = ''; - var restoreText = ''; - var continuedText = ''; - // Prompt history stack - var history = []; - var ringn = 0; - // For reasons unknown to The Sword of Michael himself, Opera - // triggers and sends a key character when you hit various - // keys like PgUp, End, etc. So there is no way of knowing - // when a user has typed '#' or End. My solution is in the - // typer.keydown and typer.keypress functions; I use the - // variable below to ignore the keypress event if the keydown - // event succeeds. - var cancelKeyPress = 0; - // When this value is false, the prompt will not respond to input - var acceptInput = true; - // When this value is true, the command has been canceled - var cancelCommand = false; - - // External exports object - var extern = {}; - - //////////////////////////////////////////////////////////////////////// - // Main entry point - (function(){ - container.append(inner); - inner.append(typer); - typer.css({position:'absolute',top:0,left:'-9999px'}); - if (config.welcomeMessage) - message(config.welcomeMessage,'jquery-console-welcome'); - newPromptBox(); - if (config.autofocus) { - inner.addClass('jquery-console-focus'); - typer.focus(); - setTimeout(function(){ - inner.addClass('jquery-console-focus'); - typer.focus(); - },100); - } - extern.inner = inner; - extern.typer = typer; - extern.scrollToBottom = scrollToBottom; - })(); - - //////////////////////////////////////////////////////////////////////// - // Reset terminal - extern.reset = function(){ - var welcome = (typeof config.welcomeMessage != 'undefined'); - inner.parent().fadeOut(function(){ - inner.find('div').each(function(){ - if (!welcome) { - $(this).remove(); - } else { - welcome = false; - } - }); - newPromptBox(); - inner.parent().fadeIn(function(){ - inner.addClass('jquery-console-focus'); - typer.focus(); - }); - }); - }; - - //////////////////////////////////////////////////////////////////////// - // Reset terminal - extern.notice = function(msg,style){ - var n = $('
').append($('
').text(msg)) - .css({visibility:'hidden'}); - container.append(n); - var focused = true; - if (style=='fadeout') - setTimeout(function(){ - n.fadeOut(function(){ - n.remove(); - }); - },4000); - else if (style=='prompt') { - var a = $('
'); - n.append(a); - focused = false; - a.click(function(){ n.fadeOut(function(){ n.remove();inner.css({opacity:1}) }); }); - } - var h = n.height(); - n.css({height:'0px',visibility:'visible'}) - .animate({height:h+'px'},function(){ - if (!focused) inner.css({opacity:0.5}); - }); - n.css('cursor','default'); - return n; - }; - - //////////////////////////////////////////////////////////////////////// - // Make a new prompt box - function newPromptBox() { - column = 0; - promptText = ''; - ringn = 0; // Reset the position of the history ring - enableInput(); - promptBox = $('
'); - var label = $(''); - var labelText = extern.continuedPrompt? continuedPromptLabel : promptLabel; - promptBox.append(label.text(labelText).show()); - label.html(label.html().replace(' ',' ')); - prompt = $(''); - promptBox.append(prompt); - inner.append(promptBox); - updatePromptDisplay(); - }; - - //////////////////////////////////////////////////////////////////////// - // Handle setting focus - container.click(function(){ - inner.addClass('jquery-console-focus'); - inner.removeClass('jquery-console-nofocus'); - if (isWebkit) { - typer.focusWithoutScrolling(); - } else { - typer.css('position', 'fixed').focus(); - } - scrollToBottom(); - return false; - }); - - //////////////////////////////////////////////////////////////////////// - // Handle losing focus - typer.blur(function(){ - inner.removeClass('jquery-console-focus'); - inner.addClass('jquery-console-nofocus'); - }); - - //////////////////////////////////////////////////////////////////////// - // Bind to the paste event of the input box so we know when we - // get pasted data - typer.bind('paste', function(e) { - // wipe typer input clean just in case - typer.val(""); - // this timeout is required because the onpaste event is - // fired *before* the text is actually pasted - setTimeout(function() { - typer.consoleInsert(typer.val()); - typer.val(""); - }, 0); - }); - - //////////////////////////////////////////////////////////////////////// - // Handle key hit before translation - // For picking up control characters like up/left/down/right - - typer.keydown(function(e){ - cancelKeyPress = 0; - var keyCode = e.keyCode; - // C-c: cancel the execution - if(e.ctrlKey && keyCode == 67) { - cancelKeyPress = keyCode; - cancelExecution(); - return false; - } - if (acceptInput) { - if (keyCode in keyCodes) { - cancelKeyPress = keyCode; - (keyCodes[keyCode])(); - return false; - } else if (e.ctrlKey && keyCode in ctrlCodes) { - cancelKeyPress = keyCode; - (ctrlCodes[keyCode])(); - return false; - } else if (e.altKey && keyCode in altCodes) { - cancelKeyPress = keyCode; - (altCodes[keyCode])(); - return false; - } - } - }); - - //////////////////////////////////////////////////////////////////////// - // Handle key press - typer.keypress(function(e){ - var keyCode = e.keyCode || e.which; - if (isIgnorableKey(e)) { - return false; - } - // C-v: don't insert on paste event - if ((e.ctrlKey || e.metaKey) && String.fromCharCode(keyCode).toLowerCase() == 'v') { - return true; - } - if (acceptInput && cancelKeyPress != keyCode && keyCode >= 32){ - if (cancelKeyPress) return false; - if ( - typeof config.charInsertTrigger == 'undefined' || ( - typeof config.charInsertTrigger == 'function' && - config.charInsertTrigger(keyCode,promptText) - ) - ){ - typer.consoleInsert(keyCode); - } - } - if (isWebkit) return false; - }); - - function isIgnorableKey(e) { - // for now just filter alt+tab that we receive on some platforms when - // user switches windows (goes away from the browser) - return ((e.keyCode == keyCodes.tab || e.keyCode == 192) && e.altKey); - }; - - //////////////////////////////////////////////////////////////////////// - // Rotate through the command history - function rotateHistory(n){ - if (history.length == 0) return; - ringn += n; - if (ringn < 0) ringn = history.length; - else if (ringn > history.length) ringn = 0; - var prevText = promptText; - if (ringn == 0) { - promptText = restoreText; - } else { - promptText = history[ringn - 1]; - } - if (config.historyPreserveColumn) { - if (promptText.length < column + 1) { - column = promptText.length; - } else if (column == 0) { - column = promptText.length; - } - } else { - column = promptText.length; - } - updatePromptDisplay(); - }; - - function previousHistory() { - rotateHistory(-1); - }; - - function nextHistory() { - rotateHistory(1); - }; - - // Add something to the history ring - function addToHistory(line){ - history.push(line); - restoreText = ''; - }; - - // Delete the character at the current position - function deleteCharAtPos(){ - if (column < promptText.length){ - promptText = - promptText.substring(0,column) + - promptText.substring(column+1); - restoreText = promptText; - return true; - } else return false; - }; - - function backDelete() { - if (moveColumn(-1)){ - deleteCharAtPos(); - updatePromptDisplay(); - } - }; - - function forwardDelete() { - if (deleteCharAtPos()){ - updatePromptDisplay(); - } - }; - - function deleteUntilEnd() { - while(deleteCharAtPos()) { - updatePromptDisplay(); - } - }; - - function deleteNextWord() { - // A word is defined within this context as a series of alphanumeric - // characters. - // Delete up to the next alphanumeric character - while( - column < promptText.length && - !isCharAlphanumeric(promptText[column]) - ) { - deleteCharAtPos(); - updatePromptDisplay(); - } - // Then, delete until the next non-alphanumeric character - while( - column < promptText.length && - isCharAlphanumeric(promptText[column]) - ) { - deleteCharAtPos(); - updatePromptDisplay(); - } - }; - - //////////////////////////////////////////////////////////////////////// - // Validate command and trigger it if valid, or show a validation error - function commandTrigger() { - var line = promptText; - if (typeof config.commandValidate == 'function') { - var ret = config.commandValidate(line); - if (ret == true || ret == false) { - if (ret) { - handleCommand(); - } - } else { - commandResult(ret,"jquery-console-message-error"); - } - } else { - handleCommand(); - } - }; - - // Scroll to the bottom of the view - function scrollToBottom() { - var version = jQuery.fn.jquery.split('.'); - var major = parseInt(version[0]); - var minor = parseInt(version[1]); - - // check if we're using jquery > 1.6 - if ((major == 1 && minor > 6) || major > 1) { - inner.prop({ scrollTop: inner.prop("scrollHeight") }); - } - else { - inner.attr({ scrollTop: inner.attr("scrollHeight") }); - } - }; - - function cancelExecution() { - if(typeof config.cancelHandle == 'function') { - config.cancelHandle(); - } - } - - //////////////////////////////////////////////////////////////////////// - // Handle a command - function handleCommand() { - if (typeof config.commandHandle == 'function') { - disableInput(); - addToHistory(promptText); - var text = promptText; - if (extern.continuedPrompt) { - if (continuedText) - continuedText += '\n' + promptText; - else continuedText = promptText; - } else continuedText = undefined; - if (continuedText) text = continuedText; - var ret = config.commandHandle(text,function(msgs){ - commandResult(msgs); - }); - if (extern.continuedPrompt && !continuedText) - continuedText = promptText; - if (typeof ret == 'boolean') { - if (ret) { - // Command succeeded without a result. - commandResult(); - } else { - commandResult( - 'Command failed.', - "jquery-console-message-error" - ); - } - } else if (typeof ret == "string") { - commandResult(ret,"jquery-console-message-success"); - } else if (typeof ret == 'object' && ret.length) { - commandResult(ret); - } else if (extern.continuedPrompt) { - commandResult(); - } - } - }; - - //////////////////////////////////////////////////////////////////////// - // Disable input - function disableInput() { - acceptInput = false; - }; - - // Enable input - function enableInput() { - acceptInput = true; - } - - //////////////////////////////////////////////////////////////////////// - // Reset the prompt in invalid command - function commandResult(msg,className) { - column = -1; - updatePromptDisplay(); - if (typeof msg == 'string') { - message(msg,className); - } else if ($.isArray(msg)) { - for (var x in msg) { - var ret = msg[x]; - message(ret.msg,ret.className); - } - } else { // Assume it's a DOM node or jQuery object. - inner.append(msg); - } - newPromptBox(); - }; - - //////////////////////////////////////////////////////////////////////// - // Display a message - function message(msg,className) { - var mesg = $('
'); - if (className) mesg.addClass(className); - mesg.filledText(msg).hide(); - inner.append(mesg); - mesg.show(); - }; - - //////////////////////////////////////////////////////////////////////// - // Handle normal character insertion - // data can either be a number, which will be interpreted as the - // numeric value of a single character, or a string - typer.consoleInsert = function(data){ - // TODO: remove redundant indirection - var text = isNaN(data) ? data : String.fromCharCode(data); - var before = promptText.substring(0,column); - var after = promptText.substring(column); - promptText = before + text + after; - moveColumn(text.length); - restoreText = promptText; - updatePromptDisplay(); - }; - - //////////////////////////////////////////////////////////////////////// - // Move to another column relative to this one - // Negative means go back, positive means go forward. - function moveColumn(n){ - if (column + n >= 0 && column + n <= promptText.length){ - column += n; - return true; - } else return false; - }; - - function moveForward() { - if(moveColumn(1)) { - updatePromptDisplay(); - return true; - } - return false; - }; - - function moveBackward() { - if(moveColumn(-1)) { - updatePromptDisplay(); - return true; - } - return false; - }; - - function moveToStart() { - if (moveColumn(-column)) - updatePromptDisplay(); - }; - - function moveToEnd() { - if (moveColumn(promptText.length-column)) - updatePromptDisplay(); - }; - - function moveToNextWord() { - while( - column < promptText.length && - !isCharAlphanumeric(promptText[column]) && - moveForward() - ) {} - while( - column < promptText.length && - isCharAlphanumeric(promptText[column]) && - moveForward() - ) {} - }; - - function moveToPreviousWord() { - // Move backward until we find the first alphanumeric - while( - column -1 >= 0 && - !isCharAlphanumeric(promptText[column-1]) && - moveBackward() - ) {} - // Move until we find the first non-alphanumeric - while( - column -1 >= 0 && - isCharAlphanumeric(promptText[column-1]) && - moveBackward() - ) {} - }; - - function isCharAlphanumeric(charToTest) { - if(typeof charToTest == 'string') { - var code = charToTest.charCodeAt(); - return (code >= 'A'.charCodeAt() && code <= 'Z'.charCodeAt()) || - (code >= 'a'.charCodeAt() && code <= 'z'.charCodeAt()) || - (code >= '0'.charCodeAt() && code <= '9'.charCodeAt()); - } - return false; - }; - - function doComplete() { - if(typeof config.completeHandle == 'function') { - var completions = config.completeHandle(promptText); - var len = completions.length; - if (len === 1) { - extern.promptText(promptText + completions[0]); - } else if (len > 1 && config.cols) { - var prompt = promptText; - // Compute the number of rows that will fit in the width - var max = 0; - for (var i = 0;i < len;i++) { - max = Math.max(max, completions[i].length); - } - max += 2; - var n = Math.floor(config.cols / max); - var buffer = ""; - var col = 0; - for (i = 0;i < len;i++) { - var completion = completions[i]; - buffer += completions[i]; - for (var j = completion.length;j < max;j++) { - buffer += " "; - } - if (++col >= n) { - buffer += "\n"; - col = 0; - } - } - commandResult(buffer,"jquery-console-message-value"); - extern.promptText(prompt); - } - } - }; - - function doNothing() {}; - - extern.promptText = function(text){ - if (typeof text === 'string') { - promptText = text; - column = promptText.length; - updatePromptDisplay(); - } - return promptText; - }; - - //////////////////////////////////////////////////////////////////////// - // Update the prompt display - function updatePromptDisplay(){ - var line = promptText; - var html = ''; - if (column > 0 && line == ''){ - // When we have an empty line just display a cursor. - html = cursor; - } else if (column == promptText.length){ - // We're at the end of the line, so we need to display - // the text *and* cursor. - html = htmlEncode(line) + cursor; - } else { - // Grab the current character, if there is one, and - // make it the current cursor. - var before = line.substring(0, column); - var current = line.substring(column,column+1); - if (current){ - current = - '' + - htmlEncode(current) + - ''; - } - var after = line.substring(column+1); - html = htmlEncode(before) + current + htmlEncode(after); - } - prompt.html(html); - scrollToBottom(); - }; - - // Simple HTML encoding - // Simply replace '<', '>' and '&' - // TODO: Use jQuery's .html() trick, or grab a proper, fast - // HTML encoder. - function htmlEncode(text){ - return ( - text.replace(/&/g,'&') - .replace(/') - ); - }; - - return extern; - }; - // Simple utility for printing messages - $.fn.filledText = function(txt){ - $(this).text(txt); - $(this).html($(this).html().replace(/\n/g,'
')); - return this; - }; - - // Alternative method for focus without scrolling - $.fn.focusWithoutScrolling = function(){ - var x = window.scrollX, y = window.scrollY; - $(this).focus(); - window.scrollTo(x, y); - }; -})(jQuery); diff --git a/eg/tryhy/js/repl.js b/eg/tryhy/js/repl.js deleted file mode 100644 index ddcbda1..0000000 --- a/eg/tryhy/js/repl.js +++ /dev/null @@ -1,45 +0,0 @@ -$(document).ready(function(){ - var backlog = []; - var console = $('#hy-console').console({ - promptLabel: '=> ', - commandValidate:function(line){ - if (line == '') return false; - else return true; - }, - commandHandle:function(line, report){ - $.ajax({ - type: 'POST', - url: '/eval', - data: JSON.stringify({code: line, env: backlog}), - contentType: 'application/json', - dataType: 'json', - success: function(data) { - report([{msg : data.stdout, className:'jquery-console-message-value'}, - {msg : data.stderr, className:'jquery-console-message-error'}]); - } - }); - backlog.push(line); - }, - animateScroll:true, - promptHistory:true, - autofocus:true, - welcomeMessage: 'hy ({hy_version}) [{server_software}]'.supplant({ - hy_version: hy_version, - server_software: server_software - }) - }); - console.promptText('(+ 41 1)'); -}); - - -if (!String.prototype.supplant) { - String.prototype.supplant = function (o) { - return this.replace( - /\{([^{}]*)\}/g, - function (a, b) { - var r = o[b]; - return typeof r === 'string' || typeof r === 'number' ? r : a; - } - ); - }; -} diff --git a/eg/tryhy/main.hy b/eg/tryhy/main.hy deleted file mode 100644 index 1dc326f..0000000 --- a/eg/tryhy/main.hy +++ /dev/null @@ -1,36 +0,0 @@ -(import [os] - [sys] - [StringIO [StringIO]] - [json] - [hy.cmdline [HyREPL]] - [hy] - [flask [Flask redirect request render_template]]) - -(defclass MyHyREPL [HyREPL] - [[eval (fn [self code] - (setv old-stdout sys.stdout) - (setv old-stderr sys.stderr) - (setv fake-stdout (StringIO)) - (setv sys.stdout fake-stdout) - (setv fake-stderr (StringIO)) - (setv sys.stderr fake-stderr) - (HyREPL.runsource self code "" "single") - (setv sys.stdout old-stdout) - (setv sys.stderr old-stderr) - {"stdout" (fake-stdout.getvalue) "stderr" (fake-stderr.getvalue)})]]) - -(def app (Flask __name__)) - -(with-decorator (kwapply (app.route "/") {"methods" ["GET"]}) - (fn [] - (kwapply (render_template "index.html") - {"hy_version" hy.__version__ "server_software" (get os.environ "SERVER_SOFTWARE")}) - )) - -(with-decorator (kwapply (app.route "/eval") {"methods" ["POST"]}) - (fn [] - (let [[repl (MyHyREPL)] [input (request.get_json)]] - (foreach [expr (get input "env")] - (repl.eval expr)) - (json.dumps (repl.eval (get input "code"))) - ))) diff --git a/eg/tryhy/main.py b/eg/tryhy/main.py deleted file mode 100644 index 4eff14e..0000000 --- a/eg/tryhy/main.py +++ /dev/null @@ -1,2 +0,0 @@ -from hy.importer import import_file_to_module -__hymain__ = import_file_to_module('__hymain__', 'main.hy') diff --git a/eg/tryhy/requirements.txt b/eg/tryhy/requirements.txt deleted file mode 100644 index bf177c9..0000000 --- a/eg/tryhy/requirements.txt +++ /dev/null @@ -1,2 +0,0 @@ -Flask -hy==0.9.10 # master is broken because of rply diff --git a/eg/tryhy/templates/index.html b/eg/tryhy/templates/index.html deleted file mode 100644 index ad8887a..0000000 --- a/eg/tryhy/templates/index.html +++ /dev/null @@ -1,22 +0,0 @@ - - - - try-hylang - - - - - - - - - - - -
- - - From 1919963eb38eb73cfd522475afdde699b19ec9d4 Mon Sep 17 00:00:00 2001 From: Berker Peksag Date: Sun, 10 Nov 2013 14:55:36 +0200 Subject: [PATCH 17/20] Add importlib to install_requires on Python 2.6. Fixes #319. --- setup.py | 1 + 1 file changed, 1 insertion(+) diff --git a/setup.py b/setup.py index f3e1814..24621ee 100755 --- a/setup.py +++ b/setup.py @@ -48,6 +48,7 @@ nice together. """ install_requires = ['rply>=0.6.2'] if sys.version_info[:2] < (2, 7): install_requires.append('argparse>=1.2.1') + install_requires.append('importlib>=1.0.2') if os.name == 'nt': install_requires.append('pyreadline==2.0') From e23d5771057290918ee7e7d1f3bb994416acd72b Mon Sep 17 00:00:00 2001 From: Paul Tagliamonte Date: Sun, 10 Nov 2013 10:03:30 -0500 Subject: [PATCH 18/20] Remove this script; no longer needed. --- maintainer-scripts/update.sh | 15 --------------- 1 file changed, 15 deletions(-) delete mode 100755 maintainer-scripts/update.sh diff --git a/maintainer-scripts/update.sh b/maintainer-scripts/update.sh deleted file mode 100755 index 3cce8d9..0000000 --- a/maintainer-scripts/update.sh +++ /dev/null @@ -1,15 +0,0 @@ -#!/bin/bash - -function metatron { - ssh metatron.pault.ag $@ -} - -function www { - metatron -l www $@ -} - - -metatron "cd /opt/hylang/hy; git pull" -metatron "cd /srv/www/uwsgi/app/shyte; git pull; make" -www "kill-apps" -www "start-apps" From a5273b233e6f7eadd4d2b193997d02793eea6b14 Mon Sep 17 00:00:00 2001 From: Paul Tagliamonte Date: Tue, 12 Nov 2013 21:56:56 -0500 Subject: [PATCH 19/20] Update NEWS for 0.9.11 --- NEWS | 53 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 53 insertions(+) diff --git a/NEWS b/NEWS index 0ea0562..9f199da 100644 --- a/NEWS +++ b/NEWS @@ -1,3 +1,56 @@ +Changes from Hy 0.9.10 + + * Many thanks to Guillermo VayĆ” (Willyfrog) for preparing this release's + release notes. Major shout-out. (PT) + + [ Misc. Fixes ] + + * Many many many documentation fixes + * Change virtualenv name to be `hy' + * Rewrite language.hy not to require hy.core.macros + * Rewrite the bootstrap macros in hy + * Cleanup the hy.macros module + * Add comments to the functions and reorder them + * Translation of meth from Python to Hy + * PY3 should really check for Python >= 3 + * Add hy._compat module to unify all Python 2 and 3 compatibility codes. + * Import future.print_statement in hy code + * Coerce the contents of unquote-splice'd things to a list + * Various setup.py enhancements. + * PEP8 fixes + * Use setuptools.find_packages() + * Update PyPI classifiers + * Update website URL + * Install the argparse module in Python 2.6 and before + * Delete the duplicate rply in install_requires. With the PyPI version, + tests are failed. + * Finally fixed access to hy.core.macros here. have to explicitly require + them. + + [ Language Changes ] + + * Slightly cleaner version of drop-while, could use yield-from when ready + * Added many native core functions + * Add zero? predicate to check if an object is zero + * Macro if-python2 for compile-time choice between Python 2 and Python 3 + code branches + * Added new travis make target to skip flake8 on pypy but run + it on all others + * Add "spy mode" to REPL + * Add CL handling to hyc + * Add yield from via macro magic. + * Add some machinery to avoid importing hy in setup.py + * Add a rply-based parser and lexer + * Allow quoting lambda list keywords. + * Clarified rest / cdr, cleaned up require + * Make with return the last expression from its branch + * Fix yielding to not suck (#151) + * Make assoc accept multiple values, also added a even/odd check for + checkargs + * Added ability to parse doc strings set in defclass declarations, + * Provide bin scripts for both Windows and *nix + * Removes setf in favor of setv + Changes from Hy 0.9.9 [ Stupid Fixes ] From 8c172c9c7effb4ce4ae38e3bddc27034defbc03b Mon Sep 17 00:00:00 2001 From: Paul Tagliamonte Date: Tue, 12 Nov 2013 21:59:34 -0500 Subject: [PATCH 20/20] Prepare 0.9.11 --- hy/version.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/hy/version.py b/hy/version.py index 8fd8376..e96cb4c 100644 --- a/hy/version.py +++ b/hy/version.py @@ -20,4 +20,4 @@ __appname__ = "hy" -__version__ = "0.9.10" +__version__ = "0.9.11"